如何在Linux利用Fail2ban配合防火墙实现针对应用层恶意扫描的自动化防御与告警

冬墨吖_8329

冬墨吖_8329

2026-05-29

466人浏览

原创

fail2ban 是 linux 上通过分析应用层日志(如 nginx、ssh、nextcloud)识别恶意扫描并自动封禁 ip 的防御工具;支持 iptables/nftables/firewalld 联动,可配置邮件告警与多服务协同防护。

如何在linux利用fail2ban配合防火墙实现针对应用层恶意扫描的自动化防御与告警

Fail2ban 是 Linux 上应对应用层恶意扫描最直接有效的自动化防御工具。它不替代防火墙,而是让防火墙“活起来”——通过分析真实服务日志(比如 Nginx 错误日志、SSH 认证日志、Nextcloud 登录日志),识别出扫描行为特征,再调用 iptables 或 nftables 实时封禁源 IP,并可联动邮件或脚本发出告警。

识别应用层扫描的关键日志特征

恶意扫描在日志中留下的痕迹比网络层扫描更具体,也更容易被 Fail2ban 捕捉:

  • HTTP 层扫描:大量 404(路径爆破)、401/403(后台试探)、高频 POST 到 /wp-login.php、/admin/login 等;Nginx 的 error.log 中反复出现 “user authentication failed” 或 “no user/password provided” 可匹配自定义 filter
  • SSH 暴力破解:/var/log/auth.log 中同一 IP 在短时间内出现多次 “Failed password for …”、“Invalid user …”,是 Fail2ban 默认最擅长识别的模式
  • FTP/数据库试探:vsftpd 日志中的 “LOGIN FAILED”、MySQL 的 “Access denied for user” 都可配置专用 filter
  • 工具指纹痕迹:部分扫描器(如 Nikto、Nmap HTTP scripts)会在 User-Agent 或请求头中暴露自身,可用正则直接匹配并触发封禁

配置 jail.local 实现多服务协同防护

不要修改 jail.conf,所有定制都写进 /etc/fail2ban/jail.local(该文件优先级更高,升级时不会被覆盖):

Obsidian (Linux)
Obsidian (Linux)

操作 Obsidian 库(纯 Markdown 笔记),并通过 notesmd-cli 实现自动化。

下载
  • 在 [DEFAULT] 区块统一设定基础策略:
    bantime = 72h(封禁 3 天,对扫描 IP 足够震慑)
    findtime = 1h(1 小时内累计触发才计数)
    maxretry = 5(5 次失败即拉黑,对扫描行为足够敏感)
  • 启用并微调 SSH 防护:
    [sshd]
    enabled = true
    port = 35222   (若改了非标端口,必须显式指定)
    logpath = /var/log/auth.log   (CentOS 用 /var/log/secure)
  • 增加 Web 层防护:
    [nginx-http-auth]
    enabled = true
    port = http,https
    logpath = /var/log/nginx/error.log
    filter = nginx-http-auth   (使用内置 filter,或自定义更严格的规则)
  • 保护后台系统(如 Nextcloud):
    [nextcloud]
    enabled = true
    logpath = /var/www/nextcloud/data/nextcloud.log
    filter = nextcloud

与防火墙正确联动,避免冲突

Fail2ban 必须明确知道用哪个后端管理封禁规则,否则可能失效或报错:

  • iptables 用户:确认 firewalld 已停用(sudo systemctl stop firewalld && sudo systemctl disable firewalld),再安装 iptables-services(CentOS)或 iptables(Ubuntu),Fail2ban 默认走 iptables。
  • firewalld 用户:需在 jail.local 中指定:
    banaction = firewallcmd-ipset
    并确保 ipset 已安装(sudo yum install ipset 或 sudo apt install ipset),这样封禁效率更高、规则更干净。
  • nftables 用户(较新系统):启用 banaction = nftables,并确认 nftables 服务运行中;Fail2ban v1.0+ 原生支持,无需额外适配。

配置邮件告警与状态监控

封禁本身不是终点,及时知晓才是运维闭环的关键:

  • 在 jail.local 的 [DEFAULT] 下添加:
    destemail = admin@yourdomain.com
    sender = fail2ban@yourserver.local
    mta = sendmail(或 postfix)
  • 启用 action_mw(mail-whois)动作,让每封告警附带 WHOIS 查询结果,快速判断攻击来源地域和 ISP。
  • 日常检查命令:
    sudo fail2ban-client status sshd — 查看当前 SSH 被封 IP 数量
    sudo fail2ban-client get sshd banned — 列出所有被封 IP
    sudo journalctl -u fail2ban -n 50 --no-pager — 查看最近 50 条 Fail2ban 运行日志

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

linux 防火墙

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
Java 网络安全
Java 网络安全

本专题聚焦 Java 在网络安全与加密通信中的应用,系统讲解常见加密算法(MD5、SHA、AES、RSA)、数字签名、HTTPS证书配置、令牌认证(JWT、OAuth2)及常见安全漏洞防护(XSS、SQL注入、CSRF)。通过实战项目(如安全登录系统、加密文件传输工具),帮助学习者掌握 Java 安全开发与加密技术的实战能力。

2025.10.13

4765

12

PHP 安全与防护
PHP 安全与防护

本专题聚焦于PHP开发中的安全问题与防御措施,详细讲解SQL注入、XSS攻击、CSRF攻击、文件包含漏洞等常见安全风险及其修复方法。通过结合实际案例,帮助开发者理解漏洞成因,掌握输入验证、会话安全、加密存储与安全编码规范,全面提升PHP网站的安全防护水平。

2025.11.04

415

21

磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

2023.06.21

4070

4

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

2023.06.29

3473

10

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

2023.06.30

2673

5

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

2023.07.05

6490

7

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

2023.07.06

6142

7

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.20

3573

8

linux查看ip命令
linux查看ip命令

本专题为大家提供linux查看ip命令相关文章内容,感兴趣的朋友可以免费下载体验试试。

2023.07.20

3065

4

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Python uv官方安装与入门文档
Python uv官方安装与入门文档

共0课时 | 0人学习

Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习