- 首页 >
- 问答 >
-
智能运维 >
- FTP Server在Linux上如何安全设置
FTP Server在Linux上如何安全设置
小樊
46
2025-11-19 11:13:36
Linux 上 FTP Server 的安全设置
一 基础加固与访问控制
- 选择安全的 FTP 守护进程:优先使用 vsftpd,这是 RHEL 官方提供并面向安全的实现。
- 禁用匿名访问:设置 anonymous_enable=NO,避免未授权上传与信息泄露。
- 限制本地用户:启用 local_enable=YES,并通过 chroot_local_user=YES 将用户限制在其主目录;如确需写入,使用 allow_writeable_chroot=YES(注意版本差异与风险)。
- 精细化登录控制:启用 userlist_enable=YES 与 userlist_deny=NO,仅允许 /etc/vsftpd/user_list 中的用户登录。
- 降低信息暴露:自定义登录横幅,设置 ftpd_banner 或 banner_file,避免显示版本信息。
- 可选的最小写入:默认 write_enable=NO,仅在确有上传需求时再开启。
二 加密传输与证书配置
- 启用 SSL/TLS 加密:设置 ssl_enable=YES,并强制本地登录与数据传输加密(force_local_logins_ssl=YES、force_local_data_ssl=YES)。
- 禁用不安全协议:关闭 ssl_sslv2、ssl_sslv3,仅启用 TLSv1.x。
- 证书与密钥:准备 RSA 证书/私钥(可合并为同一 PEM 文件),配置 rsa_cert_file 与 rsa_private_key_file 路径。
- 客户端验证:要求客户端使用 FTPS(显式) 并校验证书,避免明文凭据与数据泄露。
三 防火墙与被动模式端口
- 控制连接:放行 TCP 21 端口(FTP 控制通道)。
- 主动模式数据端口:放行 TCP 20 端口(由服务器主动发起数据连接)。
- 被动模式端口范围:在 vsftpd 中配置 pasv_enable=YES、pasv_min_port=1024、pasv_max_port=1048(示例为 1024–1048,可按需扩大),并在防火墙放行相同端口范围。
- firewalld 示例:
- 放行服务与端口:firewall-cmd --permanent --add-service=ftp
- 放行被动端口范围:firewall-cmd --permanent --add-port=1024-1048/tcp
- 重载规则:firewall-cmd --reload
- 注意:若未正确配置被动端口范围,客户端在 NAT/云环境中常出现数据连接失败。
四 用户与目录权限及 SELinux
- 专用 FTP 用户:创建仅用于 FTP 的系统账号,禁止 SSH 登录(如 useradd -m ftpuser -s /sbin/nologin),并设置强密码。
- 目录归属与权限:确保用户主目录归属正确(如 chown ftpuser:ftpuser /home/ftpuser),常用权限为 755(按需调整为可写)。
- 白名单登录:将允许登录的用户写入 /etc/vsftpd/user_list,并配置 userlist_deny=NO。
- SELinux 场景:如启用 SELinux,按需开启布尔值(如 setsebool -P ftp_home_dir on)以允许 FTP 访问用户家目录;必要时调整文件上下文。
- 最小权限原则:仅授予上传/下载所需权限,避免赋予不必要的系统级权限。
五 日志审计与持续运维
- 启用日志:开启 xferlog_enable=YES 记录传输日志,便于审计与异常追踪;必要时结合系统日志分析工具。
- 横幅与合规:通过自定义 ftpd_banner/banner_file 明确告知“所有活动均被记录”,提升威慑与合规效果。
- 运行监控:使用 systemctl status vsftpd 检查服务状态,变更配置后 systemctl restart vsftpd 使生效。
- 补丁与策略:保持 操作系统与 vsftpd 及时更新,定期审查用户列表、目录权限与防火墙规则,开展例行安全审计。