TOP云提供高性价比云服务器租用,有中国内地/港澳台、海外等全球各地节点,TOP云国内云服务器只要有域名备案号就能直接用,无须重复备案;港澳台及海外云服务器不用备案,购买之后直接使用,省时省力省心。价格实惠,续费同价,2核2G5M仅需27元每月,8核8G50M仅需66元每月,更多配置套餐请进入下面网址了解:
TOP云总站云服务器:https://topyun.vip/server/buy.html
TOP云C站云服务器:https://c.topyun.vip/cart
在云服务器上安装 Fail2Ban 是防止 SSH 暴力破解、恶意登录等攻击的有效方法。Fail2Ban 是一个开源的安全工具,可以监控服务器日志文件(如 SSH 登录日志),检测到多次失败的登录尝试后,自动封禁攻击者的 IP 地址。
以下是详细的安装和配置步骤,适用于常见的 Linux 发行版(如 CentOS 和 Ubuntu/Debian)。
一、Fail2Ban 简介
Fail2Ban 的作用:通过监控日志文件(如 /var/log/secure 或 /var/log/auth.log),检测到多次失败的登录尝试后,自动封禁恶意 IP 地址,通常是通过 iptables 或 firewalld 实现封禁。
适用场景:防止 SSH 暴力破解、FTP 暴力破解、Web 攻击等。
二、安装 Fail2Ban
1. CentOS 系统
(1)安装 EPEL 源
Fail2Ban 在默认的 CentOS 软件仓库中可能不可用,需要先安装 EPEL(Extra Packages for Enterprise Linux)源:
sudo yum install epel-release -y
(2)安装 Fail2Ban
sudo yum install fail2ban -y
(3)启动并设置开机自启
sudo systemctl start fail2ban
sudo systemctl enable fail2ban
(4)检查 Fail2Ban 状态
sudo systemctl status fail2ban
如果显示 active (running),说明 Fail2Ban 已成功启动。
2. Ubuntu / Debian 系统
(1)更新软件包列表
sudo apt update
(2)安装 Fail2Ban
sudo apt install fail2ban -y
(3)启动并设置开机自启
sudo systemctl start fail2ban
sudo systemctl enable fail2ban
(4)检查 Fail2Ban 状态
sudo systemctl status fail2ban
如果显示 active (running),说明 Fail2Ban 已成功启动。
三、配置 Fail2Ban
Fail2Ban 的主配置文件位于 /etc/fail2ban/jail.conf,但建议不要直接修改该文件,因为更新 Fail2Ban 时可能会覆盖你的修改。正确的方式是复制默认配置文件并编辑自定义配置文件。
1. 复制默认配置文件
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
之后所有的配置修改都在 /etc/fail2ban/jail.local 文件中进行。
2. 配置 SSH 防护
编辑 jail.local 文件:
sudo vi /etc/fail2ban/jail.local
找到 [sshd] 部分(如果没有,可以手动添加),确保以下配置项启用并正确设置:
[sshd] enabled = true port = ssh filter = sshd logpath = /var/log/auth.log # Ubuntu/Debian # logpath = /var/log/secure # CentOS/RHEL maxretry = 3 bantime = 600 findtime = 600
配置项说明:
enabled:是否启用该规则,设置为 true 表示启用;
port:监控的端口,ssh 表示默认 SSH 端口(通常是 22),如果你修改了 SSH 端口,需要改为对应的端口号(如 2222);
filter:使用的过滤规则,sshd 是 Fail2Ban 自带的 SSH 过滤规则;
logpath:日志文件路径:
Ubuntu/Debian 系统:/var/log/auth.log
CentOS/RHEL 系统:/var/log/secure
maxretry:允许的最大失败尝试次数(如 3 次);
bantime:封禁时间(单位为秒),如 600 秒 = 10 分钟;
findtime:检测时间范围(单位为秒),如 600 秒内超过 maxretry 次失败会被封禁。
注意:如果你修改了 SSH 端口(如改为 2222),需要同步修改 port 配置项为 2222。
3. 保存并退出编辑器
保存文件后,Fail2Ban 会自动加载新的配置(如果 Fail2Ban 正在运行)。
四、验证 Fail2Ban 是否生效
1. 查看被封禁的 IP 地址
运行以下命令查看当前被 Fail2Ban 封禁的 IP:
sudo fail2ban-client status sshd
输出示例:
Status for the jail: sshd |- Filter | |- Currently failed: 0 | |- Total failed: 5 | `- File list: /var/log/auth.log `- Actions |- Currently banned: 1 |- Total banned: 1 `- Banned IP list: 123.123.123.123
Currently banned:当前被封禁的 IP 数量;
Banned IP list:被封禁的 IP 地址列表。
2. 模拟暴力破解测试(可选)
注意:此操作仅用于测试,切勿在正式环境中频繁尝试错误密码。
使用一个不在白名单中的 IP 地址(如另一台服务器或虚拟机);
多次尝试使用错误的密码登录 SSH:
ssh 用户名@服务器IP地址 -p 端口号
输入错误密码 3 次以上(根据 maxretry 配置),然后再次尝试登录;
如果配置正确,你的 IP 会被封禁,无法继续登录。
可以通过以下命令解锁被封禁的 IP(测试完成后):
sudo fail2ban-client set sshd unbanip 123.123.123.123
五、高级配置(可选)
1. 修改封禁时间或尝试次数
在 /etc/fail2ban/jail.local 文件中,可以根据需要调整以下参数:
maxretry:允许的最大失败尝试次数;
bantime:封禁时间(单位为秒);
findtime:检测时间范围(单位为秒)。
例如:
maxretry = 5 bantime = 3600 # 封禁 1 小时 findtime = 1200 # 20 分钟内超过 maxretry 次失败会被封禁
2. 添加其他服务的防护
Fail2Ban 支持监控多种服务(如 FTP、Apache、Nginx 等),你可以在 /etc/fail2ban/jail.local 中启用其他服务的防护规则。
例如,启用对 Nginx 的防护:
[nginx-http-auth] enabled = true port = http,https filter = nginx-http-auth logpath = /var/log/nginx/error.log maxretry = 3 bantime = 600
注意:启用其他服务的防护前,需要确保 Fail2Ban 支持对应的过滤规则(filter),并且日志路径正确。
3. 使用自定义封禁策略
Fail2Ban 默认使用 iptables 或 firewalld 封禁 IP 地址。如果你需要更复杂的封禁策略(如封禁到特定时间段、发送邮件通知等),可以自定义 action 配置。
六、总结:Fail2Ban 安装与配置的最佳实践
步骤 | 说明 |
---|---|
安装 Fail2Ban | 根据操作系统选择合适的安装方式(yum 或 apt) |
启用 SSH 防护 | 修改 /etc/fail2ban/jail.local,启用 [sshd] 规则 |
调整封禁策略 | 根据需求设置 maxretry、bantime、findtime 等参数 |
验证配置是否生效 | 使用 fail2ban-client status sshd 查看被封禁的 IP |
保护其他服务(可选) | 启用对 FTP、Nginx、Apache 等服务的防护 |
定期检查日志 | 查看 /var/log/fail2ban.log,了解 Fail2Ban 的运行状态和封禁记录 |