Linux vsftp安全设置全攻略
导读:Linux vsftpd 安全设置全攻略 一 基线安全配置 禁用匿名访问:设置anonymous_enable=NO,仅允许经过认证的用户登录。 启用本地用户:设置local_enable=YES;如非必要,关闭写权限(write_ena...
Linux vsftpd 安全设置全攻略
一 基线安全配置
- 禁用匿名访问:设置anonymous_enable=NO,仅允许经过认证的用户登录。
- 启用本地用户:设置local_enable=YES;如非必要,关闭写权限(write_enable=NO),按需再开启。
- 限制登录账户:启用userlist_enable=YES与userlist_deny=YES,在**/etc/vsftpd.user_list中列出禁止登录的系统账号(如root等);必要时配合/etc/ftpusers**。
- 目录隔离:启用chroot_local_user=YES将本地用户限制在其家目录;若需可写,使用allow_writeable_chroot=YES(存在一定风险,优先采用不可写根目录+可写子目录的方式)。
- 权限最小化:为FTP用户设置专用账号与家目录,如:
- 创建用户:
useradd -d /data/ftpuser -s /usr/sbin/nologin ftpuser - 设置密码:
passwd ftpuser - 目录属主:
chown -R ftpuser:ftpuser /data/ftpuser & & chmod 755 /data/ftpuser
- 创建用户:
- 日志与横幅:开启xferlog_enable=YES、xferlog_std_format=YES便于审计;可设置ftpd_banner=Welcome自定义欢迎信息,避免泄露版本细节。
二 传输加密与证书配置
- 生成证书(自签,便于快速启用):
- 创建目录:
mkdir -p /etc/ssl/private & & chmod 700 /etc/ssl/private - 生成PEM:
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
- 创建目录:
- 启用 TLS/SSL(推荐仅允许 TLS,禁用 SSLv2/SSLv3):
- 核心参数:
ssl_enable=YESallow_anon_ssl=NO(如禁用匿名,建议同步关闭)force_local_data_ssl=YES、force_local_logins_ssl=YESssl_tlsv1=YES、ssl_sslv2=NO、ssl_sslv3=NOrequire_ssl_reuse=NO(兼容部分客户端)ssl_ciphers=HIGHrsa_cert_file=/etc/ssl/private/vsftpd.pem、rsa_private_key_file=/etc/ssl/private/vsftpd.pem
- 核心参数:
- 客户端连接:选择“FTP over TLS/SSL(显式,端口21)”或“FTPS(隐式,端口990)”;不支持加密的客户端会被拒绝(如启用强制加密)。
- 证书进阶:生产环境建议使用受信任 CA 或 Let’s Encrypt 证书,并将证书与私钥路径分别配置到rsa_cert_file与rsa_private_key_file。
三 网络与连接控制
- 被动模式端口范围:启用pasv_enable=YES,并限定端口段(示例:40000–50000),便于防火墙放行。
- 防火墙放行示例:
- UFW:
ufw allow 21/tcp、ufw allow 990/tcp、ufw allow 40000:50000/tcp - firewalld:
firewall-cmd --permanent --add-port=21/tcp --add-port=990/tcp --add-port=40000-50000/tcp & & firewall-cmd --reload
- UFW:
- 连接与速率限制:
- 并发控制:
max_clients=100、max_per_ip=5 - 带宽控制:
local_max_rate=307200(约300 KB/s)、anon_max_rate=81920(约80 KB/s)
- 并发控制:
- 监听与端口:如需变更默认端口,设置listen_port=2123并同步放行防火墙端口。
四 用户与目录权限模型
- 专用 FTP 用户与 Shell 限制:创建用户时使用**/usr/sbin/nologin或/sbin/nologin作为登录 Shell,避免获得系统 Shell;必要时将/usr/sbin/nologin加入/etc/shells**。
- 目录隔离与可写策略:
- 推荐:
chroot_local_user=YES,家目录不可写,在用户家目录下建立upload等子目录并赋予775权限,由 FTP 用户对子目录写入。 - 如业务必须“根目录可写”,再考虑
allow_writeable_chroot=YES,并充分评估风险。
- 推荐:
- 精细化权限示例:
- 只读目录:
mkdir /data/ftpuser/scripts & & chmod 555 /data/ftpuser/scripts - 仅上传目录(防下载/删除):
mkdir /data/ftpuser/results & & chmod 755 /data/ftpuser/results & & chattr +i /data/ftpuser/results(注意:加锁目录后用户也无法删除自身文件,需结合业务流程与清理机制)。
- 只读目录:
- SELinux/AppArmor:若启用 SELinux,按需设置布尔值(如ftp_home_dir、allow_ftpd_full_access)以匹配目录与权限模型。
五 日志审计与持续加固
- 日志与监控:开启xferlog_enable=YES、xferlog_std_format=YES,并监控**/var/log/vsftpd.log或/var/log/xferlog**的异常登录、频繁失败与异常流量。
- 服务加固:保持系统与 vsftpd 的及时更新;仅开放必要端口与功能;对公网服务建议结合fail2ban或防火墙策略对暴力登录进行自动封禁;定期复核**/etc/vsftpd.user_list**、/etc/ftpusers与目录权限。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Linux vsftp安全设置全攻略
本文地址: https://pptw.com/jishu/748334.html
