打开/关闭菜单
打开/关闭外观设置菜单
打开/关闭个人菜单
未登录
未登录用户的IP地址会在进行任意编辑后公开展示。

如何在搬瓦工服务器上安装ufw防火墙和Fail2ban来防止黑客暴力破解:修订间差异

来自md5.pw
Dai留言 | 贡献
创建页面,内容为“在上一篇教程中,我们成功将服务器重装为了 '''Debian 12''' 系统。 Debian 12 (Bookworm) 相比旧版本做了一个重要的底层变更:默认不再安装 <code>rsyslog</code>,这意味着 <code>/var/log/auth.log</code> 这种传统的文本日志文件在默认状态下是不存在的。 这导致很多网上的旧版 Fail2Ban 教程在 Debian 12 上会失效(常见报错为 <code>Failed…”
 
Dai留言 | 贡献
无编辑摘要
第160行: 第160行:
=== 总结 ===
=== 总结 ===


至此,你的服务器安全架构已搭建毕:
至此,UFW防火墙和Fail2ban都设置
 
[[index.php?title=Category:500 常见应用指南 — Application Guides]]
# '''UFW''' 负责“关门”,只开放必要的业务端口。
# '''Fail2Ban''' 负责“站岗”,利用 Debian 12 原生的 systemd 日志接口,精准拦截暴力破解者。
 
这种配置方案无需安装额外的 syslog 服务,既节省了系统资源,又符合新版 Linux 的技术规范,是最推荐的配置方式
[[Category:500 常见应用指南 — Application Guides]]

2026年1月23日 (五) 02:28的版本

上一篇教程中,我们成功将服务器重装为了 Debian 12 系统。

Debian 12 (Bookworm) 相比旧版本做了一个重要的底层变更:默认不再安装 rsyslog,这意味着 /var/log/auth.log 这种传统的文本日志文件在默认状态下是不存在的。

这导致很多网上的旧版 Fail2Ban 教程在 Debian 12 上会失效(常见报错为 Failed to access socket path 或无法封禁 IP)。

本篇教程将基于 Debian 12 的新特性,带大家部署 UFW 防火墙,并配置使用 Systemd 驱动的 Fail2Ban,为你的 VPS 提供严谨、有效的安全防护。


第一步:基础环境更新

安全的第一步永远是保持软件最新。连接 SSH 后,执行以下命令更新软件包列表:

apt update && apt upgrade -y

第二步:配置 UFW 防火墙

UFW (Uncomplicated Firewall) 是管理 iptables 的前端工具,配置简单且不易出错。

1. 安装 UFW

apt install ufw -y

2. 放行 SSH 端口(核心步骤)

注意:在启动防火墙之前,必须显式放行 SSH 端口,否则会直接切断你当前的连接。

  • 默认端口:如果你没改过端口,执行:
ufw allow 22/tcp
  • 自定义端口:如果你修改了 SSH 端口(例如 29999),请务必改为:
ufw allow 29999/tcp

3. 放行 Web 服务(可选)

如果你后续计划部署博客或网站,建议提前放行 HTTP 和 HTTPS 端口:

ufw allow 80/tcp
ufw allow 443/tcp

4. 启用防火墙

确认规则添加无误后,启用 UFW:

ufw enable

系统会提示可能会中断 SSH 连接,输入 y 并回车确认。


第三步:部署 Fail2Ban (适配 Debian 12)

Fail2Ban 通过监控日志来发现恶意行为(如频繁输错密码),并自动调用防火墙封禁来源 IP。

1. 安装 Fail2Ban

apt install fail2ban -y

2. 创建自定义配置文件

为了保持配置的整洁和持久性(防止软件升级覆盖配置),我们不要直接修改 /etc/fail2ban/jail.conf,而是在 jail.d 目录下新建一个高优先级的配置文件。

使用 vim 或 nano 编辑新文件:

nano /etc/fail2ban/jail.d/defaults-debian.conf

3. 写入核心配置(Systemd 模式)

这是最关键的一步。

针对 Debian 12 默认没有 auth.log 的情况,我们需要指定 backend = systemd,让 Fail2Ban 直接从系统日志接口读取数据。

请将以下内容复制并粘贴到文件中:

[DEFAULT]
# 忽略的 IP 白名单(将 1.1.1.1 替换为你自己的常用 IP,或者删除该行)
ignoreip = 127.0.0.1/8 ::1

# 封禁时长:1小时 (-1 为永久封禁)
bantime = 1h

# 判定时间窗口:10分钟内输错 N 次即封禁
findtime = 10m

# 最大尝试次数
maxretry = 5

# [重要] 指定封禁动作使用 ufw
banaction = ufw

[sshd]
enabled = true
# [核心] Debian 12 必须指定 backend 为 systemd 才能读取日志
backend = systemd
port    = ssh
  • Ctrl + O 保存,按 Ctrl + X 退出编辑器。*

4. 启动并验证服务

配置完成后,重启 Fail2Ban 服务以应用更改:

systemctl restart fail2ban
systemctl enable fail2ban

验证服务状态

输入以下命令查看 SSH 监控模块的运行情况:

fail2ban-client status sshd

正确的结果应该类似下方输出,且不会出现 ERRORFailed to access socket 的报错:

Status for the jail: sshd
|- Filter
|  |- Currently failed: 0
|  |- Total failed:     0
|  `- Journal matches:  _SYSTEMD_UNIT=sshd.service + _COMM=sshd
`- Actions
   |- Currently banned: 0
   |- Total banned:     0
   `- Banned IP list:

如果看到 Journal matches 或类似的日志源提示,说明 Fail2Ban 已经成功挂载到 systemd 日志流上,开始正常工作了。


总结

至此,UFW防火墙和Fail2ban都设置完成。 index.php?title=Category:500 常见应用指南 — Application Guides