Fail2Ban,自动化封禁异常IP

在 CentOS Linux release 7.9.2009 (Core) 上部署 Fail2Ban,实现对 SSH 和 Nginx 异常请求的自动拦截,可以分为以下几个步骤——涵盖安装、配置、过滤器(filters)、jail 设置及验证。


一、安装 Fail2Ban

启动并设置 Fail2Ban 开机自启:

sudo systemctl enable fail2ban
sudo systemctl start fail2ban

首先启用 EPEL 源并安装 Fail2Ban:

sudo yum install epel-release
sudo yum install fail2ban

这确保从 EPEL 安装最新可用的包。(DigitalOcean, UpCloud)

(plesk.com, UpCloud)

在centos8.5上,可能会因为8.5不在维护而找不到安装包的情况,这时只能从官方官网下载源码安装,但是安装后可能会出现找不到python依赖包的错误,此时需要修改服务的python环境变量:

vi /etc/systemd/system/fail2ban.service

[Service]
Environment="PYTHONPATH=/usr/local/lib/python3.6/site-packages/"

然后

systemctl daemon-reload
systemctl restart fail2ban


二、配置基础设置

编辑 jail.local,设置默认策略,比如:

[DEFAULT]
ignoreip = 127.0.0.1/8 ::1
bantime = 3600      # 封禁 1 小时
findtime = 600      # 10 分钟内
maxretry = 5        # 最多失败 5 次
banaction = iptables-multiport

(UpCloud, plesk.com, Evoluso Blog)

复制默认配置,避免直接修改 jail.conf,以防升级被覆盖:

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

(Evoluso Blog, UpCloud)


三、添加 SSH Jail

jail.d/ 下创建独立配置文件,比如 sshd.local

[sshd]
enabled = true
port    = ssh
logpath = /var/log/secure
maxretry = 5
bantime = 3600

然后重启 Fail2Ban:

sudo systemctl restart fail2ban

(Evoluso Blog, CloudCone, UpCloud)


四、配置 Nginx 异常请求拦截策略

  1. Fail2Ban 自带多种 nginx 过滤器文件,存放于 /etc/fail2ban/filter.d/,常见包括:
    • nginx-4xx.conf:拦截 HTTP 4xx 请求(404、403 等)
    • nginx-forbidden.conf:拦截目录索引被禁止访问
    • nginx-botsearch.conf:拦截恶意 bot 搜索行为
    • nginx-http-auth.confnginx-sslerror.conf 等(Scalastic)
  2. 创建 jail 配置文件(例如 jail.d/nginx.localcustom.conf),启用需要的规则:
[nginx-4xx]
enabled = true
port    = http,https
filter  = nginx-4xx
logpath = %(nginx_error_log)s

[nginx-botsearch]
enabled = true
port    = http,https
filter  = nginx-botsearch
logpath = %(nginx_access_log)s

[nginx-forbidden]
enabled = true
port    = http,https
filter  = nginx-forbidden
logpath = %(nginx_error_log)s

[nginx-http-auth]
enabled = true
port    = http,https
filter  = nginx-http-auth
logpath = %(nginx_error_log)s

[nginx-sslerror]
enabled = true
port    = http,https
filter  = nginx-sslerror
logpath = %(nginx_error_log)s

然后重启 Fail2Ban 服务:

sudo systemctl restart fail2ban

(Scalastic)


五、验证与管理

  1. 若防火墙使用的是 firewalld,确保相应端口规则正确,或者直接使用 iptables 以避免冲突。(Server Fault)

若误封 IP,可手动解封:

sudo fail2ban-client set <jail> unbanip <IP地址>

查看 iptables 封禁规则:

sudo iptables -L -n

查看启用的 jail 列表:

sudo fail2ban-client status

同时可以查看特定 jail 的详细状态和被封禁的 IP:

sudo fail2ban-client status sshd
sudo fail2ban-client status nginx-4xx

六、完整流程示例脚本

sudo yum install epel-release
sudo yum install fail2ban
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

cat << EOF | sudo tee /etc/fail2ban/jail.local
[DEFAULT]
ignoreip = 127.0.0.1/8 ::1
bantime = 3600
findtime = 600
maxretry = 5
banaction = iptables-multiport
EOF

cat << EOF | sudo tee /etc/fail2ban/jail.d/sshd.local
[sshd]
enabled = true
port = ssh
logpath = /var/log/secure
maxretry = 5
bantime = 3600
EOF

cat << EOF | sudo tee /etc/fail2ban/jail.d/nginx.local
[nginx-4xx]
enabled = true
port = http,https
filter = nginx-4xx
logpath = %(nginx_error_log)s

[nginx-botsearch]
enabled = true
port = http,https
filter = nginx-botsearch
logpath = %(nginx_access_log)s
EOF

sudo systemctl restart fail2ban
sudo fail2ban-client status

小结

  • 安装 EPEL 并安装 Fail2Ban
  • 使用 jail.local 覆盖默认配置
  • 分别为 SSH 和 Nginx 创建独立 jail 文件
  • 启用常见 Nginx 过滤规则(如 4xx、bot 搜索等)
  • 重启服务后通过命令验证状态与封禁情况

Read more

大模型框架主要分类

1 主流框架 GGUF * 含义:GGUF(General Game Unit Framework)是一个通用游戏框架,它为游戏开发提供了一系列的工具和组件,帮助开发者更高效地构建游戏。它可能包括游戏逻辑处理、图形渲染、音频处理、网络通信等多个方面的功能模块,使得开发者能够在一个统一的框架下进行游戏开发,减少重复工作,提高开发效率。 * 应用场景:在游戏开发领域,GGUF可以用于开发各种类型的游戏,如角色扮演游戏(RPG)、动作游戏、策略游戏等。它能够帮助开发者快速搭建游戏的基本架构,实现游戏的核心功能,如角色控制、地图生成、任务系统等,从而让开发者能够将更多的精力放在游戏的创新和优化上。 Diffusers * 含义:Diffusers是深度学习领域中的一种模型,主要用于生成任务,如图像生成、文本生成等。它通过扩散过程来逐步生成数据,从噪声数据开始,逐渐去除噪声,最终生成符合目标分布的数据。这种模型在生成高质量的图像和文本方面表现出色,能够生成具有丰富细节和多样性的内容。 * 应用场景:在图像生成领域,Diffusers可以用于生成逼真的风景图像、人物肖像等;在文

By 三金

域名解析测试工具

以下是几个常用的全球域名解析测试服务网址,这些工具可以帮助您测试域名在全球不同位置的DNS解析结果、传播情况和生效状态: * WhatsMyDNS:免费的DNS传播检查工具,支持全球多个位置的DNS服务器查询。 网址:https://whatsmydns.me/zh * DNSChecked:高性能的DNS解析检测工具,提供100多个全球DNS服务器的测试。 网址:https://dnschecked.com/zh-CN * Boce(拨测):免费域名检测平台,支持全球200多个节点的DNS拨测和污染检测。 网址:https://www.boce.com/ * 知道创宇云防御:域名DNS生效查询工具,覆盖全球50多个主流DNS服务器。 网址:https://www.yunaq.com/tools/dnslookup/ 这些服务大多免费易用,您可以直接输入域名进行测试。如果需要特定功能,建议根据需求选择。

By 三金
粤ICP备2025450290号