阿里云服务器 Fail2ban 的安装和使用
Fail2ban的安装和使用
·
一、背景
云服务器使用的是阿里云,安装的系统是 Alibaba Cloud Linux。最新登录一直有类似下面的提示,判断是服务器遭受过 SSH 暴力破解,于是安装 Fail2ban
There were 2233 failed login attempts since the last successful login.
二、Fail2ban 介绍
1、什么是 Fail2ban
Fail2ban 是一款基于 Python 编写的开源安全工具,主要功能是防止服务器遭受暴力破解(Brute-force attack)。
它通过实时监控系统日志(如 SSH、Nginx、Postfix 等服务的日志文件),自动检测可疑的登录失败行为,并临时或永久封禁攻击源 IP。简单来说:Fail2ban 就像是你服务器门口的保安,看到有人连续输错密码,就把他踢出去,并暂时禁止他靠近。
2、工作原理
Fail2ban 的核心逻辑可以用一句话概括:
“读取日志 → 匹配失败规则 → 达到阈值 → 封禁 IP(通过防火墙或其他方式)”
工作流程如下:
- 监控日志文件(如 /var/log/auth.log)
- 使用正则表达式过滤登录失败的记录
- 累计失败次数(达到配置的阈值)
- 调用封禁动作(action)
- 超时自动解封(默认 10 分钟,可配置)
3、主要组成部分
| 组件 | 说明 |
|---|---|
| jail | 一个“监狱”单元,对应一个被保护的服务(如 sshd、nginx、postfix) |
| filter | 过滤器,定义如何识别攻击行为(正则匹配日志) |
| action | 执行封禁或通知的操作 |
| logpath | 被监控的日志文件路径 |
| bantime | 封禁时长(秒) |
| findtime | 检测周期(秒) |
| maxretry | 最大失败次数 |
三、Fail2ban 安装步骤
1、启用 EPEL 仓库(推荐)
sudo dnf install epel-release -y
2、安装 Fail2ban
sudo dnf install fail2ban fail2ban-firewalld -y
3、启用与启动服务
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
sudo systemctl status fail2ban
四、Fail2ban 配置
Fail2ban 的配置目录位于:
/etc/fail2ban/
主要文件:
jail.conf # 默认模板(不要直接改)
jail.local # 自定义配置文件(推荐)
filter.d/ # 过滤规则
action.d/ # 封禁动作
1、创建本地配置文件
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
2、修改全局参数(推荐配置)
[DEFAULT]
ignoreip = 127.0.0.1/8 # 白名单 IP,或添加你的远程管理IP
bantime = 900 # 封禁时间,单位秒(15分钟),也可以 15m
findtime = 600 # 检测时间窗口(10分钟),也可以 10m
maxretry = 3 # 失败次数
backend = systemd # Alibaba Cloud Linux 默认使用 systemd 日志
banaction = firewallcmd-ipset # firewalld 集成
3、启用 SSH 防护(最常见)
[sshd]
enabled = true
port = ssh
logpath = %(sshd_log)s
maxretry = 3 # 不写的话会继承自 [DEFAULT]
bantime = 900 # 不写的话会继承自 [DEFAULT]
findtime = 600 # 不写的话会继承自 [DEFAULT]
4、重启 Fail2ban 服务并验证服务状态:
sudo systemctl restart fail2ban
sudo fail2ban-client status
5、邮件通知(可选)
如果你想在 IP 被封禁时收到邮件提醒,可以在 [DEFAULT] 部分添加:
destemail = admin@yourdomain.com
sender = fail2ban@yourdomain.com
mta = sendmail
action = %(action_mw)s
并确保系统中安装了 sendmail:
sudo dnf install sendmail -y
五、 Fail2ban 常用命令
1、查看所有 jail
sudo fail2ban-client status
2、查看 SSH 封禁列表
sudo fail2ban-client status sshd
3、手动封禁 IP
sudo fail2ban-client set sshd banip 1.2.3.4
4、手动解封 IP
sudo fail2ban-client set sshd unbanip 1.2.3.4
5、实时查看封禁日志
sudo tail -f /var/log/fail2ban.log
6、搜索最近封禁记录
grep "Ban" /var/log/fail2ban.log
7、搜索解封记录
grep "Unban" /var/log/fail2ban.log
2、查看版本
fail2ban-client version
更多推荐
所有评论(0)