作为服务器,开通FTP服务是常见的需求。VSFTP是最常见的FTP软件,非常安全、稳定、好用。
yum install vsftpd //安装vsftp
cd /etc/vsftpd/ //进入vsfptd配置文件目录
cp vsftpd.conf vsftpd.conf.bak //备份vsftpd.conf
vim /etc/vsftpd/vsftpd.conf //修改配置文件
官方配置文件文档:https://security.appspot.com/vsftpd/vsftpd_conf.html
配置文件内容(不修改端口,修改端口容易出现一些奇怪的问题,比如list命令不可用或者创建文件失败等问题)
# 禁止匿名用户登录
anonymous_enable=NO
# 禁止用户改变自己的根目录。只能访问用户自己的根目录,而不能访问系统的根目录
chroot_local_user=YES
# 使用chroot_list文件设置允许访问系统根目录的用户
chroot_list_enable=YES
# 允许用户访问系统根目录的用户列表
chroot_list_file=/etc/vsftpd/chroot_list
开启chroot_local_user后,需要把用户根目录的写权限去掉chmod u-w /home/myname
,或者在chroot_list文件中允许访问系统根目录。否者会出现无法登录ftp的现象。
vim /etc/vsftpd/chroot_list //创建`chroot_list`文件
主动模式由服务器主动使用20端口连接客户端,容易管理,但因为要访问客户端高位端口,被认为不安全,且容易被客户端防火墙拦截。由于是服务器主动访问,属于服务器防火墙的出站规则,一般无需额外服务器配置防火墙。vsftpd配置如下:
connect_from_port_20=YES
被动模式则由客户端访问服务器,一般会设置比较大的端口号(如65100-65109)。服务器防火墙需放行该端口。vsftpd配置如下:
pasv_enable=YES
pasv_min_port=65100
pasv_max_port=65109
如需开启FTPS,则需使用被动模式。
systemctl start vsftpd
systemctl enable vsftpd
systemctl restart vsftpd
客户端设置
openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/vsftpd/vsftpd.pem -out /etc/vsftpd/vsftpd.pem
服务器防火墙需开启990端口。
# 是否使用ssl
ssl_enable=YES
# 是否允许匿名用户使用ssl
allow_anon_ssl=NO
# 强制使用ssl数据
force_local_data_ssl=YES
# 强制使用ssl登陆
force_local_logins_ssl=YES
# 开启ssl协议
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
# 不重用 SSL 会话。更安全。
require_ssl_reuse=NO
# 使用高级加密方式
ssl_ciphers=HIGH
# 指定证书位置
rsa_cert_file=/etc/vsftpd/vsftpd.pem
# 开启隐式加密(必须开启,显式加密会超时;且需配合上面的被动模式)
implicit_ssl=YES
# 隐式加密的端口号改为990
listen_port=990