保障 Linux FTP 服务器的安全,核心原则是:尽量不用明文 FTP,做好隔离、权限控制和审计。下面按“推荐程度”给你一套实用方案。
SFTP(SSH File Transfer Protocol)
# 创建专用用户
useradd -m ftpuser
passwd ftpuser
# 限制只能 SFTP,不能登录 shell
vim /etc/ssh/sshd_config
添加:
Match User ftpuser
ChrootDirectory /home/ftpuser
ForceCommand internal-sftp
AllowTcpForwarding no
重启:
systemctl restart sshd
✅ 安全性高,维护简单,强烈推荐
apt install vsftpd # Debian/Ubuntu
yum install vsftpd # CentOS
vim /etc/vsftpd.conf
确保:
anonymous_enable=NO
local_enable=YES
write_enable=YES
生成证书:
openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout /etc/vsftpd/vsftpd.key -out /etc/vsftpd/vsftpd.crt
配置:
ssl_enable=YES
rsa_cert_file=/etc/vsftpd/vsftpd.crt
rsa_private_key_file=/etc/vsftpd/vsftpd.key
force_local_logins_ssl=YES
force_local_data_ssl=YES
chroot_local_user=YES
allow_writeable_chroot=YES
groupadd ftpusers
usermod -aG ftpusers ftpuser
chown ftpuser:ftpusers /home/ftpuser
chmod 750 /home/ftpuser
ufw allow 22
ufw allow 21
ufw allow from 10.0.0.0/8 to any port 21
apt install fail2ban
示例配置:
[vsftpd]
enabled = true
port = 21
filter = vsftpd
logpath = /var/log/vsftpd.log
maxretry = 5
listen_port=2121
tail -f /var/log/vsftpd.log
或 SFTP:
tail -f /var/log/auth.log
✅ 优先用 SFTP
✅ 禁用匿名 FTP
✅ 使用 FTPS / SSL
✅ chroot 限制目录
✅ 专用低权限用户
✅ fail2ban 防爆破
✅ 定期更新系统
如果你告诉我:
我可以给你一套可直接用的配置文件。