温馨提示×

如何加固Linux FTP安全

小樊
42
2026-08-27 22:11:30
栏目: 智能运维

加固 Linux FTP 服务器安全,核心目标是:减少攻击面、避免明文传输、限制权限、加强审计。下面按“推荐程度 + 实操要点”给你一套完整方案。


一、首选建议:尽量不用 FTP,改用 SFTP

最安全的 FTP 方案:不用 FTP

  • SFTP = SSH 文件传输(默认加密)
  • 端口:22
  • 不需要额外服务
# 直接用系统用户
sftp user@server

强烈推荐
如果你只是做文件传输,这是最优解。


二、如果必须使用 FTP(vsftpd 为例)

1️⃣ 使用非匿名模式(禁止匿名登录)

# /etc/vsftpd.conf
anonymous_enable=NO

禁止匿名用户访问,防止被扫描利用。


2️⃣ 禁止 root 登录 FTP

root_login=NO

或限制系统用户:

echo "root" >> /etc/ftpusers

3️⃣ 限制用户只能访问自己的目录(chroot)

chroot_local_user=YES
allow_writeable_chroot=YES

✅ 防止用户浏览 /etc/root 等敏感目录

⚠ 注意:目录权限不能过松

chmod 755 /home/user

4️⃣ 使用被动模式 + 限制端口范围

防止随机端口被扫描:

pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000

防火墙放行:

firewall-cmd --add-port=30000-31000/tcp --permanent
firewall-cmd --reload

5️⃣ 禁止 FTP 明文传输(关键)

FTP 默认是 明文协议,必须配合:

✅ 方案 A:FTP over TLS(FTPS)

ssl_enable=YES
rsa_cert_file=/etc/ssl/certs/ftp.pem
rsa_private_key_file=/etc/ssl/private/ftp.key
force_local_data_ssl=YES
force_local_logins_ssl=YES

生成证书:

openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout /etc/ssl/private/ftp.key \
-out /etc/ssl/certs/ftp.pem

客户端必须使用 FTPS(显式 TLS)


6️⃣ 限制 FTP 用户范围

只允许指定用户登录:

userlist_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_deny=NO
echo "ftpuser" > /etc/vsftpd.userlist

三、系统层加固(非常关键)

1️⃣ 使用强密码 / SSH Key

passwd ftpuser

或禁用密码登录(若用 SFTP):

PasswordAuthentication no

2️⃣ 限制登录 IP(防火墙)

iptables -A INPUT -p tcp --dport 21 -s 1.2.3.4 -j ACCEPT
iptables -A INPUT -p tcp --dport 21 -j DROP

3️⃣ 禁用不必要服务

systemctl disable telnet
systemctl disable rsh

4️⃣ 审计与日志

xferlog_enable=YES
log_ftp_protocol=YES   # 调试阶段

查看日志:

/var/log/vsftpd.log
/var/log/xferlog

四、SELinux / AppArmor(进阶)

getenforce

如果是 enforcing:

setsebool -P ftp_home_dir on

五、安全等级对比(重要)

方案 安全性 推荐度
FTP(明文) ❌ 极低 不推荐
FTP + TLS ✅ 中 可用
SFTP(SSH) ✅✅ 高 ⭐⭐⭐⭐⭐
SFTP + chroot ✅✅✅ 最高 企业级

六、快速加固清单(Checklist)

✅ 禁用匿名
✅ 禁用 root
✅ 启用 TLS
✅ chroot 用户
✅ 限制端口
✅ 防火墙限制 IP
✅ 日志开启


如果你愿意,我可以:

  • ✅ 给你一份 生产环境 vsftpd 安全配置模板
  • ✅ 帮你 把 FTP 平滑迁移到 SFTP
  • ✅ 针对 CentOS / Ubuntu / Debian 给你具体命令

你现在的 FTP 软件和系统版本是什么?

0