【C盘排爆】QQ音乐电脑版 AppData 顽固缓存深度逆向、存储路径 mklink 强制重构与本地临时音频文件恢复实战
2026/5/28 13:23:01
Fail2Ban 的核心价值就在于精细化配置,包含原理拆解、文件结构、自定义规则、多服务防护、排错的超详细指南,全程适配 Ubuntu 系统。
Fail2Ban 由 3 个核心组件协同工作,理解这个能避免配置时踩坑:
/etc/fail2ban/filter.d/,文件后缀为.conf。/etc/fail2ban/action.d/,常用动作是iptables-multiport(多端口封禁)。bash
运行
# 安装 Fail2Ban sudo apt update && sudo apt install fail2ban -y # 检查依赖(确保 iptables/ufw 已安装,Ubuntu 默认有) sudo apt install iptables ufw -y # 启动并设置开机自启 sudo systemctl start fail2ban sudo systemctl enable fail2ban # 验证状态(显示 active (running) 则正常) sudo systemctl status fail2banFail2Ban 的配置文件遵循"主配置 + 自定义配置"原则,永远不要直接修改默认文件,而是在jail.d目录新建自定义配置覆盖默认值:
plaintext
/etc/fail2ban/ ├── fail2ban.conf # 全局主配置(日志级别、进程 PID 等,一般不修改) ├── jail.conf # 默认规则模板(包含 SSH、Apache 等,仅作参考) ├── jail.d/ # 自定义规则目录(优先级最高,推荐放这里) │ ├── ssh.conf # 你的 SSH 防护配置 │ └── apache.conf # 你的 Web 防护配置 ├── filter.d/ # 过滤规则目录(正则表达式) │ ├── sshd.conf # SSH 日志匹配规则 │ └── apache-auth.conf # Apache 认证失败匹配规则 └── action.d/ # 动作脚本目录(封禁/告警等) └── iptables-multiport.conf # 多端口封禁动作不管是配置 SSH 还是 Web 防护,都离不开这些核心参数,下面逐一解释:
| 参数 | 作用 | 示例值 | 说明 |
|---|---|---|---|
enabled | 是否启用该 Jail | true/false | 只有设为true才会生效 |
port | 防护的端口 | ssh/http,https/80,443,22 | 支持服务名或端口号,多个用逗号分隔 |
filter | 关联的过滤规则 | sshd/apache-auth | 对应filter.d下的.conf文件 |
logpath | 监控的日志文件路径 | /var/log/auth.log | 支持通配符,如/var/log/apache2/*.log |
maxretry | 最大失败次数 | 3/5 | 超过次数则封禁 |
bantime | 封禁时长(秒) | 3600(1 小时) | 设为-1表示永久封禁 |
findtime | 统计时间窗口(秒) | 600(10 分钟) | 比如 10 分钟内失败 5 次触发封禁 |
ignoreip | 白名单 IP | 127.0.0.1 192.168.1.0/24 | 多个 IP / 网段用空格分隔,不会被封禁 |
action | 触发后执行的动作 | %(action_)s | 默认是封禁 IP,%(action_mw)s是封禁 + 发邮件 |
SSH 是服务器最容易被暴力破解的入口,下面配置严格的防护规则,并加入邮件告警:
bash
运行
sudo nano /etc/fail2ban/jail.d/sshd.conf粘贴以下内容(参数已优化,适合生产环境):
ini
[sshd] # 基础防护参数 enabled = true port = ssh # 等价于 22 端口 filter = sshd logpath = /var/log/auth.log # SSH 日志默认路径 maxretry = 3 # 3 次密码错误就封禁 bantime = 86400 # 封禁 24 小时 findtime = 900 # 15 分钟内统计失败次数 ignoreip = 127.0.0.1 192.168.1.0/24 # 白名单:本地+内网 # 高级配置:启用邮件告警(需先安装 postfix) action = %(action_mw)s # action_mw = 封禁 IP + 发送邮件(含日志) sender = fail2ban@your-server.com # 发件人邮箱 destemail = your-email@xxx.com # 收件人邮箱 mta = sendmail # 邮件代理,Ubuntu 用 sendmail 即可bash
运行
# 安装 sendmail sudo apt install sendmail -y # 重启 Fail2Ban 使配置生效 sudo systemctl restart fail2banbash
运行
# 查看 sshd 规则状态(会显示已封禁 IP 列表) sudo fail2ban-client status sshd # 测试:故意输错 3 次 SSH 密码,再查看状态,会看到自己的 IP 被封禁针对 Web 服务的密码爆破、恶意扫描、SQL 注入探测等行为,配置 Fail2Ban 防护:
bash
运行
sudo nano /etc/fail2ban/jail.d/apache.conf粘贴以下内容,包含 3 个防护场景:
ini
# 场景1:Apache 登录认证失败(如后台登录密码错误) [apache-auth] enabled = true port = http,https filter = apache-auth logpath = /var/log/apache2/*error.log maxretry = 3 bantime = 3600 findtime = 600 # 场景2:Apache 恶意爬虫/扫描(如频繁 404 请求) [apache-badbots] enabled = true port = http,https filter = apache-badbots logpath = /var/log/apache2/*access.log maxretry = 1 # 只要匹配到恶意爬虫就封禁 bantime = 86400 ignoreip = 127.0.0.1 192.168.1.0/24 # 场景3:Apache SQL 注入探测(匹配日志中的 union/select 等关键词) [apache-sql] enabled = true port = http,https filter = apache-sql # 这个过滤规则需要自己新建 logpath = /var/log/apache2/*access.log maxretry = 1 bantime = 86400上面的apache-sql过滤规则是自定义的,需要在filter.d目录新建文件:
bash
运行
sudo nano /etc/fail2ban/filter.d/apache-sql.conf粘贴正则规则(匹配常见 SQL 注入关键词):
ini
[Definition] # 正则匹配日志中包含 union/select/insert 等关键词的请求 failregex = ^<HOST> -.*"(GET|POST).*(union|select|insert|delete|drop).*" ignoreregex = # 忽略的正则,留空即可Nginx 的配置和 Apache 类似,只需修改filter和logpath:
ini
[nginx-auth] enabled = true port = http,https filter = nginx-auth logpath = /var/log/nginx/*error.log maxretry = 3 bantime = 3600| 功能 | 命令 |
|---|---|
| 查看所有启用的规则 | sudo fail2ban-client status |
| 查看单个规则详情(如 sshd) | sudo fail2ban-client status sshd |
| 手动封禁 IP(针对 sshd 规则) | sudo fail2ban-client set sshd banip 192.168.1.100 |
| 手动解封 IP | sudo fail2ban-client set sshd unbanip 192.168.1.100 |
| 重载配置(无需重启服务) | sudo fail2ban-client reload |
| 测试过滤规则是否匹配日志 | sudo fail2ban-regex /var/log/auth.log /etc/fail2ban/filter.d/sshd.conf |
问题 1:Fail2Ban 启动失败
sudo tail -f /var/log/fail2ban.log,通常是配置文件语法错误(如少逗号、括号)。jail.d目录下的.conf文件,确保参数格式正确。问题 2:封禁后 IP 仍能访问
sudo ufw enable,并确保 action 使用iptables-multiport。问题 3:误封自己的 IP
sudo fail2ban-client set sshd unbanip 你的IP,并将 IP 添加到ignoreip白名单。问题 4:邮件告警不生效
sudo apt install sendmail -y,并检查sender和destemail参数。如果想对频繁攻击的 IP 永久封禁,只需将bantime = -1,并配合fail2ban的持久化配置: