温馨提示×

如何加固Linux FTP服务器

小樊
42
2026-07-06 04:38:11
栏目: 云计算

加固 Linux FTP 服务器主要涉及:
减少攻击面、限制访问、加密传输、审计与监控。下面按“通用加固 → vsftpd(最常见) → Pure-FTPd / ProFTPD → 总体安全建议”的结构说明。


一、通用加固原则(任何 FTP 服务都适用)

1. 使用最新版本

ftp_server --version
apt update && apt upgrade   # Debian/Ubuntu
yum update                  # RHEL/CentOS

2. 禁止匿名访问(强烈建议)

匿名 FTP 是主要攻击入口。


3. 限制用户访问范围

  • 只允许必要用户使用 FTP
  • 禁止系统账户(root、daemon 等)登录

4. 使用防火墙限制来源 IP

# 只允许特定 IP
iptables -A INPUT -p tcp -s 1.2.3.4 --dport 21 -j ACCEPT
iptables -A INPUT -p tcp --dport 21 -j DROP

或使用 ufw

ufw allow from 1.2.3.4 to any port 21

5. 使用加密(FTP over TLS)

明文 FTP 会泄露用户名和密码。


二、vsftpd 加固(最常用)

1. 安装 vsftpd

apt install vsftpd        # Debian/Ubuntu
yum install vsftpd        # CentOS/RHEL

2. 核心安全配置(/etc/vsftpd.conf

禁止匿名访问

anonymous_enable=NO

允许本地用户

local_enable=YES

限制用户只能在自己家目录

chroot_local_user=YES
allow_writeable_chroot=YES

禁止 root 登录

echo "root" >> /etc/ftpusers

限制可登录用户

userlist_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_deny=NO

然后:

echo "ftpuser" > /etc/vsftpd.userlist

3. 启用 TLS(强烈推荐)

生成证书

openssl req -new -x509 -days 365 -nodes \
-out /etc/ssl/certs/vsftpd.pem \
-keyout /etc/ssl/private/vsftpd.key

vsftpd TLS 配置

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

4. 限制端口范围(方便防火墙)

pasv_min_port=30000
pasv_max_port=31000

防火墙放行:

iptables -A INPUT -p tcp --dport 30000:31000 -j ACCEPT

5. 重启服务

systemctl restart vsftpd
systemctl enable vsftpd

三、Pure-FTPd 加固要点

常见安全选项

pure-ftpd -A -E -u 1000 -B

说明:

  • -A:chroot 用户
  • -E:禁止匿名
  • -u 1000:禁止 UID < 1000 登录
  • -B:后台运行

TLS

pure-ftpd -Y 1

四、ProFTPD 加固要点

ServerName "Secure FTP"
DefaultRoot ~
RequireValidShell on
UserRatio off

禁止 root:

RootLogin off

五、账户与系统级加固

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

  • 不创建系统账户
  • 使用数据库 / 文件存储用户

2. 使用强密码 & 过期策略

chage -M 90 ftpuser

3. 日志与审计

tail -f /var/log/vsftpd.log

启用详细日志:

xferlog_enable=YES
log_ftp_protocol=YES   # 调试阶段

4. Fail2ban 防暴力破解

apt install fail2ban

示例过滤 SSH/FTP:

[vsftpd]
enabled = true
port = ftp,ftp-data,ftps,ftps-data
filter = vsftpd
logpath = /var/log/vsftpd.log
maxretry = 5

六、终极建议(安全优先级)

最安全方案

  • 使用 SFTP(SSH) 替代 FTP
  • 禁止 FTP,改用:
sftp user@server

必须用 FTP 时

  • 使用 vsftpd + TLS
  • 禁止匿名
  • chroot
  • 防火墙 + fail2ban

如果你愿意,我可以:

  • ✅ 帮你检查现有 vsftpd 配置
  • ✅ 给你一份生产环境完整加固模板
  • ✅ 对比 FTP vs SFTP vs FTPS

你可以直接贴出你的 /etc/vsftpd.conf 或 Linux 发行版。

0