Ubuntu下vsftpd安全加固步骤
首先更新系统软件包列表并安装vsftpd:
sudo apt update
sudo apt install vsftpd
编辑vsftpd主配置文件/etc/vsftpd.conf,按以下要求修改:
anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot将用户锁定在自己的主目录,防止越权访问系统文件。chroot_local_user=YES
allow_writeable_chroot=YES # 允许主目录可写(避免权限冲突)
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
为避免数据(如用户名、密码、文件内容)在传输过程中被窃取,必须启用SSL/TLS加密:
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
(命令执行后会提示填写证书信息,如国家、域名等,可根据实际情况填写)ssl_enable=YES
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
force_local_data_ssl=YES # 强制数据传输加密
force_local_logins_ssl=YES # 强制登录过程加密
ssl_tlsv1=YES # 仅使用TLSv1(更安全)
ssl_sslv2=NO # 禁用SSLv2(不安全)
ssl_sslv3=NO # 禁用SSLv3(不安全)
使用UFW(Ubuntu默认防火墙)限制FTP相关端口的访问,仅允许可信IP或网络访问:
sudo ufw allow 21/tcp
sudo ufw allow 40000:50000/tcp
sudo ufw enable
通过userlist文件进一步控制允许登录的用户,避免非法用户尝试登录:
userlist_enable=YES
userlist_file=/etc/vsftpd.userlist # 用户列表文件路径
userlist_deny=NO # 仅允许列表中的用户登录
sudo nano /etc/vsftpd.userlist
在文件中添加用户名(每行一个),如ftpuser1、ftpuser2。被动模式(PASV)是FTP在防火墙/NAT环境下的常用模式,需指定端口范围:
pasv_enable=YES
pasv_min_port=40000
pasv_max_port=50000
(端口范围需与防火墙开放的范围一致)
sudo apt update && sudo apt upgrade,修复已知安全漏洞。certbot renew自动续期。/var/log/vsftpd.log,关注异常登录(如多次失败尝试)、未授权访问等行为。安装fail2ban可自动封禁多次登录失败的IP地址,进一步提升安全性:
sudo apt install fail2ban
/etc/fail2ban/jail.local,添加以下内容:[vsftpd]
enabled = true
port = ftp
filter = vsftpd
logpath = /var/log/vsftpd.log
bantime = 3600 # 封禁时间(秒),此处为1小时
maxretry = 3 # 最大失败次数
sudo systemctl restart fail2ban
完成以上步骤后,重启vsftpd服务使配置生效:
sudo systemctl restart vsftpd
通过上述配置,vsftpd的安全性将显著提升,有效防范匿名访问、数据泄露、非法登录等常见安全威胁。需定期复查配置,根据实际需求调整安全策略。