vsftpd作为FTP服务器,在Linux系统中是非常常用的。下面我们介绍如何在centos系统上安装vsftp。
一、什么是vsftpd
vsftpd是一款在Linux发行版中最受推崇的FTP服务器程序。特点是小巧轻快,安全易用。
vsftpd 的名字代表”very secure FTP daemon”, 安全是它的开发者 Chris Evans 考虑的首要问题之一。在这个 FTP 服务器设计开发的最开始的时候,高安全性就是一个目标。
二、安装vsftpd
1、以管理员(root)身份执行以下命令
[root@localhost etc]# yum install vsftpd
2、设置开机启动vsftpd ftp服务
[root@localhost vsftpd]# chkconfig vsftpd on
3、启动vsftpd服务
[root@localhost vsftpd]# service vsftpd start
停止vsftpd服务
[root@localhost vsftpd]# service vsftpd stop
重启vsftpd服务
[root@localhost vsftpd]# service vsftpd restart
三、配置防火墙
1、打开/etc/sysconfig/iptables文件
[root@localhost vsftpd]# vi /etc/sysconfig/iptables
2、在REJECT行之前添加如下代码
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
如果没有RH-Firewall-1-INPUT链,则直接使用INPUT,如下
-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
3、保存并关闭文件,重启防火墙服务
[root@localhost vsftpd]# service iptables restart
四、配置vsftpd服务器
添加ftp用户,这里增加添加一个用户名为sgl的ftp用户,设置根目录为/ftpuser/sgl,禁止此用户SSh登录,并限制访问其它目录。
(a)打开/etc/vsftpd/vsftpd.conf配置文件,修改控制ftp用户访问其它目录的规则(详细说明参考 步骤五 ),添加或修改配置参数chroot_list_enable和chroot_list_file
chroot_list_enable=YES
# (default follows)
chroot_list_file=/etc/vsftpd/chroot_list
(b)添加ftp用户sgl,根目录为/ftpuser/sgl,并禁止登录SSh权限
[root@localhost vsftpd]# useradd -d /ftpuser/sgl -g ftp -s /sbin/nologin sgl
(c)设置ftp用户sgl的登录密码
[root@localhost vsftpd]# passwd sgl
(d)添加或编辑文件chroot_list,添加ftp用户名,每个用户名一行
[root@localhost vsftpd]# vi /etc/vsftpd/chroot_list
如:这里是在wwj用户下面追加了刚添加sgl用户
wwj
sgl
(e)重启vsftpd服务
[root@localhost vsftpd]# service vsftpd restart
到现在为止,已经安装好了ftp并添加了sgl用户
另外,如果觉得以后管理ftp用户名嫌麻烦,可以使用centos官方发布的脚本管理。地址如下:
五、chroot_list_enable和chroot_local_user配置规则
在默认配置下,本地用户登入FTP后可以使用cd命令切换到其他目录,这样会对系统带来安全隐患。可以通过以下三条配置文件来控制用户切换目录。
chroot_list_enable=YES/NO(NO)
设置是否启用chroot_list_file配置项指定的用户列表文件。默认值为NO。
chroot_list_file=/etc/vsftpd.chroot_list
用于指定用户列表文件,该文件用于控制哪些用户可以切换到用户家目录的上级目录。
chroot_local_user=YES/NO(NO)
用于指定用户列表文件中的用户是否允许切换到上级目录。默认值为NO。
通过搭配能实现以下几种效果:
①当chroot_list_enable=YES,chroot_local_user=YES时,在/etc/vsftpd.chroot_list文件中列出的用户,可以切换到其他目录;未在文件中列出的用户,不能切换到其他目录。
②当chroot_list_enable=YES,chroot_local_user=NO时,在/etc/vsftpd.chroot_list文件中列出的用户,不能切换到其他目录;未在文件中列出的用户,可以切换到其他目录。
③当chroot_list_enable=NO,chroot_local_user=YES时,所有的用户均不能切换到其他目录。
④当chroot_list_enable=NO,chroot_local_user=NO时,所有的用户均可以切换到其他目录。
六、vsftpd的防火墙配置
1、以主动方式访问ftp,配置如下:
(a)打开防火墙端口配置文件iptables
[root@localhost vsftpd]# vim /etc/sysconfig/iptables
(b)在REJECT的前面添加21端口
-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
(c)重启防火墙服务
[root@localhost vsftpd]# service iptables restart
2、以被动方式访问ftp,配置如下:
(a)打开ftp的配置文件
[root@localhost vsftpd]# vim /etc/vsftpd/vsftpd.conf
(b)在配置文件末尾添加以下内容
pasv_enable=YES
pasv_min_port=40000
pasv_max_port=40080
pasv_promiscuous=YES
(c)重启vsftpd服务
[root@localhost vsftpd]# service vsftpd restart
(d)打开防火墙端口配置文件iptables
[root@localhost vsftpd]# vim /etc/sysconfig/iptables
(e)在REJECT的前面添加以下配置
-A INPUT -p tcp -m multiport --dports 40000:40080 -j ACCEPT
(f)重启防火墙服务
[root@localhost vsftpd]# service iptables restart