- 首页 >
- 问答 >
-
云计算 >
- 怎样设置Linux FTP服务器的安全策略
怎样设置Linux FTP服务器的安全策略
小樊
40
2025-12-22 22:54:44
Linux FTP服务器安全策略设置
一 基础安全原则与选型
- 优先选择加密传输:明文 FTP 在认证与传输过程中均不加密,建议优先采用 SFTP/SSH(系统自带、部署简单、强加密),或在必须使用 FTP 的场景启用 FTPS(SSL/TLS)。如环境允许,直接禁用明文 FTP。对于仅内部可信网络且无法启用加密的遗留系统,应严格限制来源与权限并尽快迁移。
二 以 vsftpd 为例的核心配置
- 身份与访问控制
- 禁用匿名访问:anonymous_enable=NO
- 仅允许本地系统用户:local_enable=YES
- 写入总开关:write_enable=YES
- 将本地用户限制在其主目录:chroot_local_user=YES
- 允许 chroot 内可写(避免某些客户端/应用报错):allow_writeable_chroot=YES
- 用户白名单(推荐):启用 userlist_enable=YES、userlist_deny=NO,在 /etc/vsftpd.user_list 中仅列出允许登录的用户;同时利用 /etc/vsftpd/ftpusers 黑名单禁止 root 等高危账户。
- 传输加密(FTPS)
- 生成证书(示例):
openssl req -x509 -nodes -days 365 -newkey rsa:2048
-keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
- 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/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
- 被动模式与端口
- 启用被动模式:pasv_enable=YES
- 限定被动端口范围(便于防火墙放行):pasv_min_port=30000、pasv_max_port=31000
- 日志与监控
- 启用传输日志:xferlog_enable=YES、xferlog_std_format=YES
- 连接与资源限制
- 并发控制:max_clients=100、max_per_ip=2
- 重启生效:systemctl restart vsftpd
以上配置要点分别来自 vsftpd 官方安全指引与常见安全实践文档,涵盖身份鉴别、加密、被动端口、日志与资源限制等关键维度。
三 防火墙与端口策略
- 放行控制与数据端口
- 控制通道:21/tcp
- FTP 数据通道(主动模式):20/tcp
- 被动模式端口范围:例如 30000–31000/tcp(需与 vsftpd 的 pasv_min_port/pasv_max_port 一致)
- firewalld 示例
- 放行服务与端口:
firewall-cmd --permanent --add-service=ftp
firewall-cmd --permanent --add-port=20/tcp
firewall-cmd --permanent --add-port=21/tcp
firewall-cmd --permanent --add-port=30000-31000/tcp
firewall-cmd --reload
- UFW 示例(含 IP 白名单)
- 允许指定来源访问 21 端口:
ufw allow from <允许的IP> to any port 21
ufw enable
- 说明
- 若使用被动模式,务必在服务器与防火墙两端统一并放行同一端口范围;主动模式需确保 20/tcp 出站/入站策略正确。上述做法适用于常见发行版与防火墙工具。
四 用户与权限最小化
- 专用 FTP 账户
- 创建系统用户并限制 Shell 登录:
useradd -d /home/ftpuser -s /sbin/nologin ftpuser
passwd ftpuser
- 主目录权限最小化:
chown ftpuser:ftpuser /home/ftpuser
chmod 755 /home/ftpuser
- 目录与上传策略
- 如必须启用匿名访问,仅授予最小写入能力,例如创建只写上传目录:
mkdir -p /var/ftp/pub/upload
chmod 730 /var/ftp/pub/upload
并在 vsftpd 中仅开启 anon_upload_enable=YES(不建议开启匿名读取)。
- SELinux 场景
- 启用本地用户家目录访问:setsebool -P ftp_home_dir on
- 若启用匿名写入,按需开启布尔值:allow_ftpd_anon_write、allow_ftpd_full_access
- 说明
- 通过受限 Shell、目录权限与 SELinux 策略的组合,降低被滥用后的横向与提权风险。
五 入侵防护与审计
- 登录失败锁定与 IP 封禁
- 使用 fail2ban 监控 vsftpd 日志并自动封禁:
[DEFAULT]
bantime = 600
findtime = 600
maxretry = 3
[vsftpd]
enabled = true
port = ftp
filter = vsftpd
logpath = /var/log/vsftpd.log
banaction = iptables-multiport
- 日志与告警
- 持续跟踪认证与传输日志(如 /var/log/auth.log、/var/log/vsftpd.log),对异常 IP、频繁失败登录、异常时段大流量传输设置告警与处置流程。
- 合规与加固
- 定期更新系统与 vsftpd,最小化开放端口与功能,定期复核白名单与被动端口范围配置。
以上措施可显著降低暴力破解与滥用风险,并提升事后追溯能力。