1. 安装vsftpd(Very Secure FTP Daemon)
vsftpd是Ubuntu上常用的FTP服务器软件,以安全性和稳定性著称。安装步骤如下:
sudo apt update
sudo apt install vsftpd
2. 配置vsftpd增强基础安全
编辑vsftpd主配置文件/etc/vsftpd.conf,调整以下关键参数:
anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES
allow_writeable_chroot=YES # 允许chroot目录可写(若用户需要上传文件)
xferlog_enable=YES
xferlog_std_format=YES
connect_from_port_20=YES
3. 配置防火墙规则
使用ufw(Uncomplicated Firewall)限制FTP流量,仅允许必要端口通过:
sudo ufw allow 21/tcp
sudo ufw allow 20/tcp
sudo ufw allow 30000:31000/tcp
sudo ufw enable
sudo ufw status # 验证规则是否生效
4. 启用TLS/SSL加密(FTPS)
FTP传输默认为明文,易被窃听。通过SSL/TLS加密可保护数据隐私:
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/certs/vsftpd.pem
/etc/vsftpd.conf,添加以下参数:ssl_enable=YES
rsa_cert_file=/etc/ssl/certs/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
force_local_data_ssl=YES # 强制数据传输加密
force_local_logins_ssl=YES # 强制登录过程加密
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO # 禁用不安全的SSLv2/3协议
5. 管理FTP用户权限
sudo adduser ftpuser # 按提示设置密码和用户信息
sudo chown ftpuser:ftpuser /home/ftpuser
sudo chmod 755 /home/ftpuser # 主目录权限设为755(所有者可读写执行,其他用户仅可读执行)
/etc/vsftpd.userlist文件指定允许或拒绝登录的用户,增强权限粒度。sudo nano /etc/vsftpd.userlist
# 添加允许登录的用户名(每行一个)
ftpuser
编辑/etc/vsftpd.conf,启用用户列表功能:userlist_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_deny=NO # 设为NO表示仅允许列表中的用户登录
6. 部署fail2ban防止暴力破解
fail2ban可监控FTP登录日志,自动封禁多次尝试失败的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
7. 定期更新与维护
sudo apt update && sudo apt upgrade -y
/var/log/vsftpd.log文件,关注异常登录、大量失败尝试或未授权访问行为。/etc/vsftpd.conf、用户目录及SSL证书,防止配置丢失或损坏。