温馨提示×

linux ftpserver怎么防入侵

小樊
37
2026-10-05 05:29:06
栏目: 网络安全

在 Linux 上搭建 FTP 服务器(如 vsftpd、ProFTPD、Pure-FTPd)时,防入侵的核心思路是:缩小攻击面 + 强化认证 + 限制权限 + 监控审计。下面按“实战可落地”的方式给你一套方案。


一、选型与基础安全

1. 尽量不用明文 FTP

  • 禁止使用 FTP(21 端口明文)
  • 改用:
    • SFTP(基于 SSH,最安全)
    • FTPS(FTP over SSL/TLS)

如果必须用 FTP,至少启用 TLS


二、vsftpd 防入侵配置(最常见)

2. 基础安全配置(/etc/vsftpd.conf)

anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES
allow_writeable_chroot=YES

# 限制用户
userlist_enable=YES
userlist_file=/etc/vsftpd/user_list
userlist_deny=YES

# 日志
xferlog_enable=YES
log_ftp_protocol=YES

3. 强制 TLS(FTPS)

ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
rsa_cert_file=/etc/ssl/certs/vsftpd.pem

三、账号与权限控制

4. 禁止系统账号登录 FTP

grep -v nologin /etc/passwd

给 FTP 用户加:

usermod -s /sbin/nologin ftpuser

5. 使用虚拟用户(强烈推荐)

  • 不直接用系统用户
  • 用 PAM + 数据库 / 文件

示例(vsftpd 虚拟用户):

  • 用户无法登录 shell
  • 只能访问指定目录

四、网络层防护

6. 防火墙只开必要端口

ufw allow 21/tcp
ufw allow 40000:50000/tcp   # 被动端口

7. 限制来源 IP

iptables -A INPUT -p tcp --dport 21 -s 10.0.0.0/8 -j ACCEPT
iptables -A INPUT -p tcp --dport 21 -j DROP

五、防爆破与入侵检测

8. 使用 fail2ban

apt install fail2ban

示例(/etc/fail2ban/jail.local):

[vsftpd]
enabled = true
port = ftp
filter = vsftpd
logpath = /var/log/vsftpd.log
maxretry = 5
bantime = 3600

六、系统级加固

9. 不用 root 运行 FTP

ps aux | grep vsftpd

应为:

ftpuser / nobody

10. 定期更新

apt update && apt upgrade

七、日志与监控

11. 关键日志

  • /var/log/vsftpd.log
  • /var/log/auth.log
  • /var/log/fail2ban.log

12. 异常行为告警

  • 登录失败暴增
  • 非工作时间上传
  • 大量下载

八、最安全的建议(重点)

✅ 能用 SFTP 就别用 FTP
✅ 必须 FTP 就 FTPS + 虚拟用户 + fail2ban
❌ 不要开匿名 FTP
❌ 不要给 FTP 用户 shell


如果你愿意,可以告诉我:

  • 用的什么 FTP 软件(vsftpd / proftpd / pure-ftpd)
  • 是公网还是内网
  • 是否必须兼容老客户端

我可以直接给你一份可复制的配置文件。

0 踩