温馨提示×

Debian vsftp怎么防攻击

小樊
44
2026-07-30 16:09:38
栏目: 网络安全

在 Debian 上部署 vsftpd(Very Secure FTP Daemon) 时,防攻击的核心思路是:最小权限 + 限制访问 + 防暴力破解 + 日志监控。下面按实战优先级给你一套常用且有效的防护方案。


一、基础安全配置(必须)

1. 安装并确保版本较新

sudo apt update
sudo apt install vsftpd
vsftpd -v

2. 核心安全配置 /etc/vsftpd.conf

编辑配置:

sudo nano /etc/vsftpd.conf

✅ 推荐安全配置

# 禁止匿名登录
anonymous_enable=NO

# 本地用户登录
local_enable=YES

# 禁止写权限(按需开启)
write_enable=NO

# 只允许指定用户登录
userlist_enable=YES
userlist_file=/etc/vsftpd.allowed_users
userlist_deny=NO

# 禁止 chroot 逃逸
chroot_local_user=YES
allow_writeable_chroot=NO

# 限制被动模式端口(防端口扫描)
pasv_min_port=30000
pasv_max_port=31000

# 隐藏文件信息
hide_ids=YES

# 日志
xferlog_enable=YES
log_ftp_protocol=NO

重启服务:

sudo systemctl restart vsftpd

二、防止暴力破解(非常重要)

✅ 方案 1:使用 fail2ban(强烈推荐)

安装

sudo apt install fail2ban

创建 vsftpd 规则

sudo nano /etc/fail2ban/jail.local
[vsftpd]
enabled = true
port = ftp
filter = vsftpd
logpath = /var/log/vsftpd.log
maxretry = 5
bantime = 3600
findtime = 600

重启 fail2ban

sudo systemctl restart fail2ban

查看封禁状态:

sudo fail2ban-client status vsftpd

✅ 方案 2:限制 SSH / FTP 登录 IP(iptables / nftables)

只允许指定 IP:

sudo iptables -A INPUT -p tcp --dport 21 -s 1.2.3.4 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 21 -j DROP

三、用户与权限隔离(防提权)

1. 禁止 FTP 用户 SSH 登录

sudo usermod -s /bin/false ftpuser

或:

sudo usermod -s /usr/sbin/nologin ftpuser

2. 只允许特定用户使用 FTP

echo ftpuser | sudo tee -a /etc/vsftpd.allowed_users

四、防止目录逃逸(chroot)

推荐配置

chroot_local_user=YES

若出现错误:

500 OOPS: vsftpd: refusing to run with writable root inside chroot

✅ 正确做法:

sudo chmod a-w /home/ftpuser
sudo mkdir /home/ftpuser/upload
sudo chown ftpuser:ftpuser /home/ftpuser/upload

五、使用 TLS(防明文嗅探)

1. 生成证书

sudo openssl req -x509 -nodes -days 365 \
-newkey rsa:2048 \
-keyout /etc/ssl/private/vsftpd.key \
-out /etc/ssl/certs/vsftpd.crt

2. vsftpd 启用 TLS

ssl_enable=YES
rsa_cert_file=/etc/ssl/certs/vsftpd.crt
rsa_private_key_file=/etc/ssl/private/vsftpd.key
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO

六、日志与监控(发现攻击)

查看登录日志

sudo tail -f /var/log/vsftpd.log
sudo journalctl -u vsftpd

查看异常 IP

grep "FAIL LOGIN" /var/log/vsftpd.log | awk '{print $NF}' | sort | uniq -c

七、终极建议(强烈推荐)

能用 SFTP 就别用 FTP

sftp user@server

如果必须用 FTP

  • 使用 FTPS(FTP over TLS)
  • 配合 fail2ban
  • 限制 被动端口 + IP

八、常见攻击与对应防护

攻击方式 防护方式
暴力破解 fail2ban
匿名访问 anonymous_enable=NO
目录逃逸 chroot
明文嗅探 TLS
端口扫描 限制被动端口
恶意用户 白名单登录

如果你愿意,我可以:

  • ✅ 根据你的 Debian 版本 给精确配置
  • ✅ 帮你 审计现有 vsftpd.conf
  • ✅ 帮你 迁移到 SFTP(更安全)

直接贴你的配置文件即可。

0