- 首页 >
- 问答 >
-
云计算 >
- vsftp安全设置:如何保护你的Linux服务器
vsftp安全设置:如何保护你的Linux服务器
小樊
38
2025-12-20 02:12:06
vsftpd 安全加固清单
一 基础与访问控制
- 禁用匿名访问:设置anonymous_enable=NO,避免未授权上传与信息泄露。
- 仅允许本地系统用户:启用local_enable=YES,并为 FTP 创建专用系统账号,建议使用**/usr/sbin/nologin或/sbin/nologin**作为登录 shell,禁止其 SSH 登录。
- 用户名单控制:
- 在**/etc/vsftpd.ftpusers**列出永远禁止登录的用户(如 root 等)。
- 通过**/etc/vsftpd.user_list与userlist_enable=YES/NO、userlist_deny=YES/NO**组合实现“黑名单/白名单”策略。
- 目录隔离:启用chroot_local_user=YES将本地用户限制在其家目录;如必须使用可写根目录,可设置allow_writeable_chroot=YES(注意某些系统上需配合 SELinux 策略)。
- 日志与审计:开启xferlog_enable=YES与xferlog_std_format=YES,便于追踪上传下载与异常行为。
二 传输加密与证书配置
- 启用 TLS/SSL:设置ssl_enable=YES,并强制登录与数据传输加密:
- force_local_logins_ssl=YES、force_local_data_ssl=YES
- 如允许匿名,可设置allow_anon_ssl=YES、force_anon_logins_ssl=YES、force_anon_data_ssl=YES
- 证书配置(二选一):
- 自签证书:生成**/etc/ssl/private/vsftpd.pem**,配置rsa_cert_file与rsa_private_key_file指向该文件。
- 系统证书:使用发行版提供的**/etc/ssl/certs/ssl-cert-snakeoil.pem与/etc/ssl/private/ssl-cert-snakeoil.key**。
- 客户端验证:连接时选择FTPS(显式 SSL/TLS),确保用户名、口令与数据均加密。
三 网络与连接加固
- 主动/被动端口:保持默认主动端口connect_from_port_20=YES;为被动模式固定端口段,如pasv_min_port=30000、pasv_max_port=31000,便于防火墙放行。
- 防火墙放行示例(UFW):
- 命令端口:sudo ufw allow 21/tcp
- 数据端口段:sudo ufw allow 30000:31000/tcp
- 并发与速率限制:
- 总连接数:max_clients=100
- 单 IP 连接数:max_per_ip=5
- 速率限制(单位:字节/秒):local_max_rate=307200(约300 KB/s)、anon_max_rate=307200
- 超时控制:
- 会话空闲:idle_session_timeout=600(10 分钟)
- 数据连接空闲:data_connection_timeout=120(2 分钟)
- 接受/连接超时:accept_timeout=60、connect_timeout=60
- 主机访问控制(若由 xinetd 托管):可使用only_from、no_access、per_source、instances、access_time等参数按网段、时间、连接数进行细粒度限制。
四 用户与目录权限
- 专用 FTP 账号:创建仅用于 FTP 的系统用户,家目录指向业务目录,如:
- 创建:useradd -d /home/www/ftproot -s /usr/sbin/nologin ftpuser
- 授权:chown -R ftpuser:ftpuser /home/www/ftproot
- 禁止 Shell 登录:确保**/etc/shells包含/usr/sbin/nologin或/sbin/nologin**,避免该账号用于系统登录。
- 目录可写策略:若启用chroot_local_user=YES且需可写,设置allow_writeable_chroot=YES;在 SELinux 环境下(如 Debian/Ubuntu 常见),执行setsebool -P ftp_home_dir 1以允许家目录写入。
- 精细权限:仅赋予业务所需的最小权限,避免对上层目录的组/其他写权限,减少被横向移动的风险。
五 监控维护与快速检查
- 服务与自启:
- 启动/开机自启:sudo systemctl start vsftpd、sudo systemctl enable vsftpd
- 日志核查:
- 传输日志:由xferlog_enable=YES与xferlog_std_format=YES写入,关注异常 IP、频繁失败登录、异常大文件传输。
- 连接日志:检查**/var/log/vsftpd.log**或系统日志,配合 fail2ban 对多次失败登录进行封禁。
- 例行维护:
- 及时更新系统与 vsftpd 版本,修补已知漏洞;变更配置后使用sudo systemctl restart vsftpd生效并回归测试。
- 快速核查清单:
- anonymous_enable=NO
- local_enable=YES、write_enable=YES
- chroot_local_user=YES(或白名单方式)
- ssl_enable=YES 且证书路径正确
- 防火墙已放行21/tcp与30000:31000/tcp
- 日志与监控告警已就位