温馨提示×

centos怎样加固ftpserver

小樊
50
2026-07-08 20:35:37
栏目: 智能运维

下面从 CentOS(6/7/8 通用思路) 出发,系统性地说明如何 加固 FTP 服务器。常见 FTP 服务有 vsftpd(最常用)ProFTPD,下面以 vsftpd 为主,兼顾通用安全原则。


一、基础安全原则(先明确)

  1. 尽量避免使用 FTP,优先使用 SFTP(SSH)

    • FTP 明文传输,极易被抓包
    • 如果可以,用 SFTP 替代 FTP
  2. 如果必须使用 FTP

    • 使用 FTPS(FTP over SSL/TLS)
    • 禁止匿名访问
    • 限制用户权限和访问范围
    • 配合防火墙、SELinux

二、安装与基本配置(vsftpd)

1. 安装

# CentOS 7/8
yum install -y vsftpd

# CentOS 6
yum install vsftpd

2. 启动并设置开机自启

systemctl enable vsftpd
systemctl start vsftpd

三、关键加固配置(重点)

编辑配置文件:

vim /etc/vsftpd/vsftpd.conf

1. 禁止匿名登录(必须)

anonymous_enable=NO

2. 允许本地用户登录

local_enable=YES

3. 禁止写权限(如不需要上传)

write_enable=NO

如需上传,再开启:

write_enable=YES

4. 限制用户只能访问自己的家目录(chroot)

chroot_local_user=YES
allow_writeable_chroot=YES

⚠ 注意:

  • 如果 chroot 后无法登录,通常是目录权限问题
  • 家目录不能由该用户拥有写权限(或设置 allow_writeable_chroot=YES

5. 限制可登录用户(白名单)

userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/vsftpd/user_list

然后在 /etc/vsftpd/user_list 中加入允许的用户。


四、启用 FTPS(强烈推荐)

1. 生成证书

openssl req -x509 -nodes -days 365 \
-keyout /etc/vsftpd/vsftpd.key \
-out /etc/vsftpd/vsftpd.crt

2. vsftpd 启用 SSL

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/vsftpd/vsftpd.crt
rsa_private_key_file=/etc/vsftpd/vsftpd.key

五、防火墙与端口安全

1. 防火墙放行 FTP

firewall-cmd --permanent --add-service=ftp
firewall-cmd --reload

2. 限制被动模式端口(防止随机端口)

pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000

防火墙放行:

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

六、SELinux 加固(CentOS 特有)

查看状态:

getenforce

允许 FTP 访问家目录:

setsebool -P ftp_home_dir on

若使用 chroot:

setsebool -P allow_ftpd_full_access on

⚠ SELinux 建议 不要直接关闭


七、日志与审计

启用日志

xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
log_ftp_protocol=YES   # 调试时可开,生产建议关闭

定期检查:

/var/log/vsftpd.log
/var/log/messages

八、系统级加固(非常重要)

1. 禁止 FTP 用户 SSH 登录

usermod -s /sbin/nologin ftpuser

2. 使用强密码策略

vim /etc/security/pwquality.conf

3. 限制 SSH 登录(如果同时开 SSH)

  • 禁止 root 登录
  • 使用密钥认证

九、推荐替代方案(最佳实践)

强烈建议

  • SFTP(SSH) 替代 FTP
  • 如果必须 FTP,用 FTPS
  • 禁止匿名
  • 限制用户 + chroot + 防火墙

十、加固检查清单(速查)

项目 是否完成
禁止匿名
启用 FTPS
chroot 限制
用户白名单
防火墙限制
SELinux 配置
日志开启
禁用 SSH 登录

如果你愿意,我可以:

  • ✅ 给你一份 生产环境 vsftpd.conf 完整示例
  • ✅ 根据你使用的是 CentOS 7 还是 8 精确调整
  • ✅ 帮你 对比 FTP / FTPS / SFTP 选哪个

直接告诉我你的使用场景即可。

0