1. 选择安全的FTP服务器软件
优先选择vsftpd(Very Secure FTP Daemon),它是Linux下最流行的FTP服务器之一,以安全性和性能著称,支持SSL/TLS加密、chroot限制等核心安全功能,能有效降低安全风险。
2. 安装与基础配置
使用系统包管理器安装vsftpd(如Ubuntu/Debian:sudo apt update && sudo apt install vsftpd;CentOS/RHEL:sudo yum install vsftpd)。编辑主配置文件/etc/vsftpd.conf,设置以下关键参数:
anonymous_enable=NO(避免未授权用户访问);local_enable=YES(仅允许系统用户登录);chroot_local_user=YES(将用户限制在自己的主目录,防止访问系统其他文件);allow_writeable_chroot=YES(允许chroot目录可写,避免用户因目录不可写导致无法上传);write_enable=YES(允许写入,如需禁止写入可设置为NO);pasv_enable=YES(被动模式更安全,避免防火墙拦截主动连接);pasv_min_port=1024、pasv_max_port=1048(指定被动模式端口范围,减少防火墙开放端口数量)。3. 启用SSL/TLS加密
为防止数据传输被窃听,必须启用SSL/TLS加密。首先生成自签名证书(生产环境建议使用CA颁发的证书):
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.key -out /etc/ssl/certs/vsftpd.crt
然后在配置文件中添加以下参数:
ssl_enable=YES
rsa_cert_file=/etc/ssl/certs/vsftpd.crt
rsa_private_key_file=/etc/ssl/private/vsftpd.key
force_local_data_ssl=YES # 强制数据连接使用SSL
force_local_logins_ssl=YES # 强制登录过程使用SSL
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO # 禁用不安全的SSLv2/3协议
重启vsftpd服务使配置生效:sudo systemctl restart vsftpd。
4. 配置防火墙规则
根据使用的防火墙工具(如ufw、firewalld),开放FTP所需端口:
sudo ufw allow 21/tcp # FTP控制端口
sudo ufw allow 1024:1048/tcp # 被动模式端口范围
sudo ufw enable # 启用防火墙
sudo firewall-cmd --permanent --add-service=ftp # 添加FTP服务
sudo firewall-cmd --permanent --add-port=1024-1048/tcp # 被动模式端口范围
sudo firewall-cmd --reload # 重新加载配置
被动模式的端口范围需与vsftpd配置中的pasv_min_port、pasv_max_port一致,确保客户端能正常连接。
5. 强化用户权限管理
useradd创建专用用户并设置主目录:sudo useradd -m -d /home/ftpuser -s /sbin/nologin ftpuser # 禁用登录shell
sudo passwd ftpuser # 设置强密码
sudo chown -R ftpuser:ftpuser /home/ftpuser # 所有权归用户
sudo chmod -R 755 /home/ftpuser # 目录权限设置为755(所有者可读写执行,其他用户仅可读执行)
userlist_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_deny=NO # 仅允许列表中的用户登录
将允许登录的用户名添加到/etc/vsftpd.userlist中。6. 增强安全措施
passwd命令为用户设置包含大小写字母、数字和特殊字符的强密码,并定期更换(如每90天);max_login_attempts=3 # 最大登录尝试次数(超过则锁定账户)
max_sessions_per_user=1 # 每个用户最大并发会话数
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
connect_from_port_20=YES
定期检查日志文件(/var/log/vsftpd.log),及时发现异常登录或操作。7. 定期更新与维护
定期更新vsftpd及操作系统,应用最新的安全补丁,修复已知漏洞。使用包管理器更新:
sudo apt update && sudo apt upgrade;sudo yum update。