您的位置:首页 > 编程语言 > PHP开发

安全的FTP服务器 vsftpd简介

2014-03-26 18:47 405 查看
vsftpd 是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如 Linux, BSD, Solaris, HP-UX 以及 IRIX 上面。它支持很多其他的 FTP 服务器不支持的特征。比如:
1.非常高的安全性需求
2.带宽限制
3.良好的可伸缩性
4.创建虚拟用户的可能性
5.IPv6支持
6.中等偏上的性能
7.分配虚拟 IP 的可能性
8.高速

简单介绍下ftp:

FTP会话时包含了两个通道,一个叫控制通道,一个叫数据通道。
控制通道:控制通道是和FTP服务器进行沟通的通道,连接FTP,发送FTP指令都是通过控制通道来完成的。
数据通道:数据通道是和FTP服务器进行文件传输或者列表的通道。
FTP协议中,控制连接均有客户端发起,而数据连接有两种工作方式:PORT方式(主动方式)和PASV方式(被动方式)

一、vsftpd简介

安装vsftpd
yum -y install vsftpd


1.vsftpd的各个配置文件说明

/etc/vsftpd/vsftpd.conf主配置文件
/usr/sbin/vsftpdVsftpd的主程序
/etc/rc.d/init.d/vsftpd启动脚本
/etc/pam.d/vsftpdPAM认证文件(此文件中file=/etc/vsftpd/ftpusers字段,指明阻止访问的用户来自/etc/vsftpd/ftpusers文件中的用户)
/etc/vsftpd/ftpusers禁止使用vsftpd的用户列表文件。记录不允许访问FTP服务器的用户名单,管理员可以把一些对系统安全有威胁的用户账号记录在此文件中,以免用户从FTP登录后获得大于上传下载操作的权利,而对系统造成损坏。
/etc/vsftpd/user_list禁止或允许使用vsftpd的用户列表文件。这个文件中指定的用户缺省情况(即在/etc/vsftpd/vsftpd.conf中设置userlist_deny=YES)下也不能访问FTP服务器,在设置了userlist_deny=NO时,仅允许user_list中指定的用户访问FTP服务器。
/var/ftp匿名用户主目录;本地用户主目录为:/home/用户主目录,即登录后进入自己家目录
/var/ftp/pub匿名用户的下载目录,此目录需赋权根chmod 1777 pub(1为特殊权限,使上载后无法删除)
/etc/logrotate.d/vsftpd.logVsftpd的日志文件
2.vsftpd的主配置文件/etc/vsftpd/vsftpd.conf说明
2.1 限制最大连接数和传输速率


#max_clients       //用于设置FTP服务器所允许的最大客户端连接数,值为0时表示不限制
#max_per_ip        //用于设置对于同一IP地址允许的最大客户端连接数,值为0时表示不限制。
#anon_max_rate    // 用于设置匿名用户的最大传输速率,单位为B/s(字节/秒),值为0表示不限制
#local_max_rate   //用于设置本地用户的最大传输速率,单位为B/s(字节/秒),值为0表示不限制


2.2 控制登录用户的机制
(1)设置禁止登录的用户账号(黑名单)
当vsftpd.conf配置文件中包括以下设置时,vsftpd.user_list文件中的用户账号被禁止进行FTP登录:
userlist_enable=YES
userlist_deny=YES  //默认是YES状态(可以不写) YES表示vsftpd.user_list文件用于设置禁止的用户账号。

(2)设置只允许登录的用户账号(白名单)
当vsftpd.conf配置文件中包括以下设置时,只有vsftpd.user_list文件中的用户账号能够进行FTP登录:
userlist_enable=YES
userlist_deny=NO


2.3修改默认端口
默认FTP服务器端口号是21,出于安全目的,有时需修改默认端口号,修改/etc/vsftpd/vsftpd.conf,添加语句:
listen_port=4449


2.4设置用户组

#mkdir -p /home/try  //递归创建新目录
#groupadd try        //新建组
#useradd -g try -d /home/try try1  //新建用户try1并指定家目录和属组
#useradd -g try -d /home/try try2  //新建用户try2并指定家目录和属组
#useradd -g try -d /home/try try3  //新建用户try3并指定家目录和属组
#passwd try1  //为新用户设密码
#passwd try2  //为新用户设密码
#passwd try3  //为新用户设密码
#chown try1 /home/try  //设置目录属主为用户try1
#chown .try /home/try  //设置目录属组为组try
#chmod 750 /home/try   //设置目录访问权限try1为读,写,执行;try2,try3为读,执行
由于本地用户登录FTP服务器后进入自己主目录,而try1,try2 try3对主目录/home/try分配的权限不同,所以通过FTP访问的权限也不同,try1访问权限为:上传,下载,建目录;try2,try3访问权限为下载,浏览,不能建目录和上传。
实现了群组中用户不同访问级别,加强了对FTP服务器的分级安全管理。

2.5 欢迎信息的定义:
#banner_file      //写入欢迎词
#dirmessage_enable=yes  //显示.messages文件中的欢迎信息。可以在ftp可访问的目录下创建.messages文件


2.6 匿名用户的配置:

#anonymous_enable=YES      //启用匿名用户登录
#anon_upload_enable=YES    //匿名用户可以上传
#anon_other_write_enable=YES  //匿名用户有其他写操作的权限,如更新,删除
#anon_mkdir_write_enable=YES     //匿名用户可以创建目录
//注意:启用写入功能时,ftp用户对相应的本地文件系统也有相应的写入权限;
//生效的权限取决于文件系统权限和服务权限的交集;


2.7 修改匿名用户上传文件的属主和属组:

#chown_uploads=YES
#chown_username=someuser


二、基于mysql认证的虚拟用户

1、安装mysql和pam_mysql

# yum -y install mysql-server mysql-devel pam_mysql


2、创建虚拟用户账号
1.准备数据库及相关表,添加测试的虚拟用户




3、配置vsftpd
1.建立pam认证所需文件

#vim /etc/pam.d/vsftpd.mysql
auth required /lib64/security/pam_mysql.so user=vsftpd passwd=admin host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
account required /lib64/security/pam_mysql.so user=vsftpd passwd=admin host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2

crypt=0,口令以明文方式(不加密)保存在数据库中;
crypt=1,口令使用UNIX系统的DES加密方式加密后保存在数据库中;
crypt=2,口令经过MySQL的password()函数加密后保存

2.修改vsftpd的配置文件,使其适应mysql认证
建立虚拟用户映射的系统用户及对应的目录
[root@stucw vsftpd]# useradd -s /sbin/nologin -d /var/ftproot vuser
[root@stucw vsftpd]# chmod 777 /var/ftproot


编辑/etc/vsftpd/vsftpd_conf确保已经启用了以下选项







3.启动vsftpd服务

[root@stucw vsftpd]# service vsftpd restart


4.配置虚拟用户具有不同的访问权限
1、配置vsftpd为虚拟用户使用配置文件目录

[root@stucw ~]# vim /etc/vsftpd/vsftpd.conf
添加如下选项
user_config_dir=/etc/vsftpd/vusers_config


2、创建所需要目录,并为虚拟用户提供配置文件
[root@stucw ~]# mkdir /etc/vsftpd/vusers_config/
[root@stucw ~]# cd /etc/vsftpd/vusers_config/
[root@stucw ~]# touch tom luxi


3、配置虚拟用户的访问权限
虚拟用户对vsftpd服务的访问权限是通过匿名用户的相关指令进行的。比如,如果需要让tom用户具有上传文件,创建目录的权限,可以修改/etc/vsftpd/vusers_config/tom文件,在里面添加如下选项即可。
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  vsftpd