Ubuntu vsftpd如何安全设置
导读:Ubuntu 上 vsftpd 的安全加固清单 一 基础加固 禁用匿名访问,仅允许本地系统用户登录,并限制可登录用户名单,降低攻击面。 启用 chroot 将本地用户限制在其家目录;为避免 vsftpd 的安全限制,推荐采用“不可写家目录...
Ubuntu 上 vsftpd 的安全加固清单
一 基础加固
- 禁用匿名访问,仅允许本地系统用户登录,并限制可登录用户名单,降低攻击面。
- 启用 chroot 将本地用户限制在其家目录;为避免 vsftpd 的安全限制,推荐采用“不可写家目录 + 专用可写子目录”的方式,而不是直接开启 allow_writeable_chroot。
- 打开日志与传输日志,便于审计与追踪。
- 示例关键配置(按需微调):
- anonymous_enable=NO
- local_enable=YES
- write_enable=YES
- local_umask=022
- chroot_local_user=YES
- userlist_enable=YES
- userlist_file=/etc/vsftpd.userlist
- userlist_deny=NO
- xferlog_enable=YES
- xferlog_std_format=YES
- log_ftp_protocol=YES
- 说明:若必须允许 chroot 目录可写,才使用 allow_writeable_chroot=YES,并充分评估风险。
二 加密传输与证书
- 建议启用 SSL/TLS(FTPS),强制登录与数据传输加密,禁用不安全协议与弱套件。
- 生成自签名证书(示例为 RSA 2048 天数为 365 天):
- sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048
-keyout /etc/ssl/private/vsftpd.key -out /etc/ssl/certs/vsftpd.crt
- sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048
- 配置要点:
- ssl_enable=YES
- allow_anon_ssl=NO
- force_local_logins_ssl=YES
- force_local_data_ssl=YES
- rsa_cert_file=/etc/ssl/certs/vsftpd.crt
- rsa_private_key_file=/etc/ssl/private/vsftpd.key
- ssl_tlsv1=YES
- ssl_sslv2=NO
- ssl_sslv3=NO
- require_ssl_reuse=NO
- ssl_ciphers=HIGH
- 客户端连接时选择“FTP over TLS/显式 FTPS”,端口 990。
三 被动模式与防火墙
- 在 NAT/云环境中必须配置被动模式端口范围,并在防火墙放行对应端口,否则数据连接会失败。
- vsftpd 配置:
- pasv_enable=YES
- pasv_min_port=40000
- pasv_max_port=50000
- UFW 放行示例(按需调整端口范围):
- sudo ufw allow 20/tcp
- sudo ufw allow 21/tcp
- sudo ufw allow 990/tcp
- sudo ufw allow 40000:50000/tcp
- 如使用云安全组,同样需放行上述端口范围。
四 用户与权限模型
- 创建仅用于 FTP 的系统用户,禁止其交互式登录(如设置 shell 为 /usr/sbin/nologin 或 /bin/false),并确保该 shell 存在于 /etc/shells,否则可能被拒绝登录。
- 目录结构建议:
- 家目录(如 /home/ftpuser)设为不可写:chmod a-w /home/ftpuser
- 创建专用上传目录:mkdir -p /home/ftpuser/ftp/upload
- 上传目录属主与权限:chown ftpuser:ftpuser /home/ftpuser/ftp/upload;chmod 755 /home/ftpuser/ftp /home/ftpuser/ftp/upload
- 仅允许白名单用户登录:将用户名逐行写入 /etc/vsftpd.userlist,并设置 userlist_deny=NO。
五 运行监控与维护
- 服务管理:
- 启动与开机自启:sudo systemctl start vsftpd;sudo systemctl enable vsftpd
- 状态与日志:sudo systemctl status vsftpd;sudo tail -f /var/log/vsftpd.log
- 运行期加固与优化(按需启用):
- 并发与速率限制:max_clients、max_per_ip、local_max_rate(示例:local_max_rate=80000 限制为约 80KB/s)
- 隐藏文件属主/组信息:hide_ids=YES
- 禁用危险的递归列目录:ls_recurse_enable=NO
- 安全提醒:
- FTP 协议在设计上明文传输,若可以不使用 FTP,优先选择 SFTP/SCP 等基于 SSH 的方案以获得更强的端到端加密与密钥管理。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu vsftpd如何安全设置
本文地址: https://pptw.com/jishu/786971.html
