Ubuntu FTPServer安全设置方法
小樊
32
2025-12-07 08:29:03
Ubuntu FTPServer 安全设置方法
一 基础安全基线
- 安装与最小配置:使用vsftpd作为示例,安装后仅开启必要功能,禁用匿名访问,限制为本地用户登录,按需开启写入权限。示例关键配置:
- anonymous_enable=NO
- local_enable=YES
- write_enable=YES(仅在需要时开启)
- chroot_local_user=YES(将用户限制在其家目录)
- allow_writeable_chroot=YES(如确需可写,见下文注意事项)
- 用户与目录:为 FTP 创建专用系统用户,家目录仅授予必要权限;避免使用共享或系统关键目录。
- 日志与审计:启用传输与访问日志,便于追踪异常行为。
- xferlog_enable=YES
- xferlog_std_format=YES
- 运行与更新:保持系统与软件包及时更新,并启用服务自启与监控。
- sudo apt update && sudo apt upgrade -y
- sudo systemctl enable --now vsftpd
- 安全提示:chroot 目录可写存在一定风险,若不需要上传,建议保持不可写;如必须可写,确保仅授予最小必要权限并定期审计。
二 启用 TLS/SSL 加密(FTPS)
- 证书准备:使用自签名或受信任 CA 证书。自签名示例(推荐将证书与私钥分文件存放):
- sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048
-keyout /etc/ssl/private/vsftpd.key -out /etc/ssl/certs/vsftpd.crt
- vsftpd 启用加密:强制本地登录与数据传输使用 TLS,禁用不安全协议,指定证书路径。
- 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.crt
- rsa_private_key_file=/etc/ssl/private/vsftpd.key
- 重启服务:sudo systemctl restart vsftpd
- 客户端连接:使用支持 TLS 的客户端(如 FileZilla),选择显式 FTP over TLS(FTPES)。
三 被动模式与防火墙
- 被动模式端口范围:在 vsftpd.conf 中固定端口范围,便于防火墙放行。
- pasv_enable=YES
- pasv_min_port=30000
- pasv_max_port=31000
- 防火墙放行(UFW 示例):放行控制连接与被动端口范围。
- sudo ufw allow 20/tcp
- sudo ufw allow 21/tcp
- sudo ufw allow 30000:31000/tcp
- 云环境注意:如存在云安全组/NACL,需同步放行上述端口范围。
四 用户权限与访问控制
- 禁用匿名:anonymous_enable=NO
- 目录隔离:chroot_local_user=YES 将用户锁定在其家目录;如确需可写,设置 allow_writeable_chroot=YES 并严格控制目录权限。
- 专用用户与组:创建ftpusers组,仅授予上传目录的写权限,禁止执行与浏览无关目录。
- 权限最小化:家目录建议权限为750/755,上传目录750,确保仅属主可写。
- 系统加固:如需进一步限制 FTP 用户登录系统,可在系统层面设置仅 SFTP或限制 shell 访问(如 /usr/sbin/nologin)。
五 日志监控与维护
- 日志配置:启用并定期轮转日志,便于审计与故障排查。
- xferlog_enable=YES
- xferlog_std_format=YES
- 检查日志:/var/log/vsftpd.log 或系统日志(journalctl -u vsftpd)
- 持续维护:
- 定期更新系统与 vsftpd:sudo apt update && sudo apt upgrade -y
- 定期备份用户数据与配置(/etc/vsftpd.conf、证书、用户目录)
- 如启用 SELinux/AppArmor,加载合适策略以进一步约束 vsftpd 权限。