UFW — 端口级防火墙
UFW (Uncomplicated Firewall) 是 iptables 的友好包装。Linux 自带的 iptables 太复杂,UFW 把常用操作简化到一行命令。
# 安装
apt install ufw -y
# 默认策略:拒绝所有入站,允许所有出站
ufw default deny incoming
ufw default allow outgoing
# 开放需要的端口
ufw allow 22222/tcp # SSH(你改过的端口)
ufw allow 80/tcp # HTTP
ufw allow 443/tcp # HTTPS
# 开启
ufw enable
# 查看状态
ufw status verbose
常用 UFW 规则
# 只允许特定 IP 访问 SSH
ufw allow from 1.2.3.4 to any port 22222 proto tcp
# 开放端口范围
ufw allow 8000:8100/tcp
# 删除规则
ufw delete allow 80/tcp
# 查看带编号的规则列表(方便删除)
ufw status numbered
Fail2ban — 自动封禁暴力破解 IP
Fail2ban 监控日志文件,如果某个 IP 在一定时间内失败尝试超过阈值,自动用防火墙封禁该 IP 一段时间。
# 安装
apt install fail2ban -y
# 创建本地配置(不要直接改 jail.conf)
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
# 编辑配置
nano /etc/fail2ban/jail.local
# 关键配置:
[DEFAULT]
bantime = 3600 # 封禁 1 小时
findtime = 600 # 10 分钟内的失败算连续
maxretry = 5 # 失败 5 次就封
[sshd]
enabled = true
port = 22222 # 你的 SSH 端口
# 启动
systemctl enable fail2ban --now
# 查看封禁状态
fail2ban-client status sshd
# 手动解封某个 IP
fail2ban-client set sshd unbanip 1.2.3.4
效果验证
# 查看被封禁的 IP 列表
fail2ban-client status sshd
一台公开的 VPS,配置 Fail2ban 后通常每天会自动封禁几十到上百个扫描 IP。没有 Fail2ban 的话,这些 IP 会持续尝试暴力破解你的密码。