Ubuntu下vsftp的安全设置
小樊
42
2025-12-26 04:05:48
Ubuntu 下 VSFTPD 安全加固清单
一 基础加固
- 安装与备份
- 安装:sudo apt update && sudo apt install vsftpd
- 备份:sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak
- 核心配置 /etc/vsftpd.conf(建议值)
- 禁用匿名:anonymous_enable=NO
- 允许本地用户:local_enable=YES
- 全局写权限:write_enable=YES
- 文件掩码:local_umask=022
- 目录提示:dirmessage_enable=YES
- 本地时区:use_localtime=YES
- 传输日志:xferlog_enable=YES
- 主动模式数据端口:connect_from_port_20=YES
- 日志文件:xferlog_file=/var/log/vsftpd.log
- 说明:以上为常用安全基线,可按需微调。
二 身份与访问控制
- 用户名单白名单模式
- 启用名单:userlist_enable=YES
- 名单文件:userlist_file=/etc/vsftpd.userlist
- 白名单:userlist_deny=NO(仅名单内用户可登录)
- 锁定用户到主目录(chroot)
- 全局锁定:chroot_local_user=YES
- 允许可写 chroot(vsftpd ≥ 3.0.2 推荐):allow_writeable_chroot=YES
- 旧版本若无法使用上项,可创建可写子目录(如 /home/$USER/pub)并仅对该目录赋权,避免对主目录可写
- 专用 FTP 用户
- 创建仅用于 FTP 的系统用户:sudo adduser --shell /usr/sbin/nologin --home /home/ftpuser ftpuser
- 家目录权限:sudo chown ftpuser:ftpuser /home/ftpuser && sudo chmod 755 /home/ftpuser
- 说明:白名单与 chroot 组合能显著降低暴露面与横向移动风险。
三 加密传输与证书
- 启用 SSL/TLS
- 开启加密:ssl_enable=YES
- 强制加密:force_local_data_ssl=YES、force_local_logins_ssl=YES
- 协议与套件:禁用不安全协议(如 ssl_sslv2=NO、ssl_sslv3=NO),优先 TLSv1.2+
- 证书与密钥:使用合规证书,常见路径示例
- 自签名:/etc/ssl/private/vsftpd.pem(同时包含证书与私钥)
- 或系统证书:/etc/ssl/certs/ssl-cert-snakeoil.pem 与 /etc/ssl/private/ssl-cert-snakeoil.key
- 生成自签名证书(示例)
- sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
- 客户端要求:连接时选择 FTPS(显式 AUTH TLS),禁用明文 FTP。
四 防火墙与被动模式
- 被动模式端口范围
- 启用被动:pasv_enable=YES
- 端口范围(示例):pasv_min_port=50000、pasv_max_port=50010
- UFW 放行
- 放行控制与数据端口:sudo ufw allow 21/tcp
- 放行被动端口段:sudo ufw allow 50000:50010/tcp
- 重载:sudo ufw reload
- 云厂商安全组:同样需放行 TCP 21 与配置的 被动端口段。
五 服务上线与运维
- 生效与自启
- 检查语法:sudo vsftpd -t
- 重启服务:sudo systemctl restart vsftpd
- 开机自启:sudo systemctl enable vsftpd
- 查看状态:sudo systemctl status vsftpd
- 日志与监控
- 传输日志:/var/log/vsftpd.log(由 xferlog_enable=YES 与 xferlog_file 指定)
- 实时排查:tail -f /var/log/vsftpd.log
- 会话与超时(可选)
- 空闲超时:idle_session_timeout=600
- 数据连接超时:data_connection_timeout=120
- 安全提示
- 如非必须,优先使用 SFTP/SCP 替代 FTP;FTP 即使启用 TLS 仍暴露大量协议元数据
- 定期更新系统与软件包:sudo apt update && sudo apt upgrade
- 严格控制目录与文件权限,避免使用 root 登录 FTP。