服务器遭遇暴力破解,封禁恶意IP——fail2ban工具使用
针对服务器频繁遭受密码破解尝试的情况,使用fail2ban是一种有效的防御手段。fail2ban能够监控服务器日志文件(如SSH登录尝试),并自动将显示恶意行为的IP地址封禁,从而减少对服务的攻击和未授权访问。
基本使用
以下是如何配置fail2ban来实现个人需求,下例为“在密码输入错误一次后永久封禁该IP地址”的步骤:
安装fail2ban
如果系统尚未安装fail2ban,可以通过包管理器安装:
-
对于基于Debian的系统(如Ubuntu):
sudo apt-get update sudo apt-get install fail2ban
-
对于基于RPM的系统(如CentOS):
sudo yum install epel-release sudo yum install fail2ban
配置fail2ban
-
创建配置文件的本地副本:
fail2ban读取/etc/fail2ban/jail.conf文件,但推荐不直接修改这个文件,而是创建一个本地副本jail.local进行自定义设置,因为jail.conf可能会在包更新时被覆盖。
sudo cp /etc/fail2ban/jail.{conf,local}
-
编辑jail.local文件:
使用文本编辑器编辑/etc/fail2ban/jail.local文件。你需要添加或修改以下段落来满足“密码输入错误一次后永久封禁”这一需求。
[DEFAULT] bantime = -1 # 永久封禁 findtime = 60 # 在60秒的时间窗口内考虑失败尝试 maxretry = 1 # 最大尝试次数为1 [sshd] enabled = true
-
bantime = -1表示被封禁的IP地址将永久不被允许访问。
-
findtime和maxretry的组合意味着如果在60秒内有1次失败尝试,就触发封禁动作。
-
-
重启fail2ban服务:
应用配置更改后,需要重启fail2ban服务:
sudo systemctl restart fail2ban
查看和管理封禁的IP地址
-
查看被fail2ban封禁的IP地址列表:
sudo fail2ban-client status sshd
-
解封某个特定的IP地址:
sudo fail2ban-client set sshd unbanip IP_ADDRESS eg: # fail2ban解封命令: fail2ban-client set [$JAIL_Name] unbanip [xx.xx.xx.xx] fail2ban-client set sshd unbanip 192.168.5.25
注意事项
-
将maxretry设置为1和永久封禁(bantime = -1)是一个非常严格的策略,可能会导致误封合法用户。建议在应用这样的策略之前仔细考虑潜在的后果。
-
定期检查和维护封禁列表,以确保没有误封的IP地址。
扩展
加入模块
由于一些原因,eg服务器无法使用ssh的22端口正常远程登录,故做了nginx转发来进行远程登录。但这意味着,如果恶意IP是通过nginx转发来破解密码登录的话,在lastb下显示的则是127.0.0.1的本机IP,无法直接查看到源IP。针对于这一现象,加入在fail2ban工具中加入
eg:监狱nginx转发日志,来封禁日志中的异常IP
-
首先撰写该模块conf文件,该conf文件中failregex的信息,具体根据nginx转发日志模块的信息编写,以下为本eg服务器的参考。
vim /etc/fail2ban/filter.d/nginx-ssh.conf
[Definition] failregex = ^ \[.*\] TCP 200 .* "127\.0\.0\.1:22" ".*" ".*" ".*"$ ignoreregex =
-
jail.local中加入该模块信息
[nginx-ssh] enabled = true filter = nginx-ssh logpath = /usr/local/nginx/conf/tcp.d/tcp-access.log maxretry = 5 findtime = 6000 bantime = -1 port = all #意为封禁该ip访问服务器所有端口
-
重启服务
systemctl restart fail2-ban
-
查看
fail2ban-client status nginx-ssh
Status for the jail: nginx-ssh |- Filter | |- Currently failed: 22 | |- Total failed: 281 | - File list: /usr/local/nginx/conf/tcp.d/tcp-access.log- Actions |- Currently banned: 15 |- Total banned: 15 `- Banned IP list: 124.152.99.57 45.183.247.34 223.99.54.6 108.179.217.143 87.107.190.59 103.78.12.14 80.94.92.68 218.17.142.207 171.106.204.37 134.122.41.53 168.76.123.59 103.154.184.109 162.215.216.231 172.245.91.171 115.204.226.136
---------------------
---------------------
-
-
-