服务器遭遇暴力破解,封禁恶意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

  1. 创建配置文件的本地副本

    fail2ban读取/etc/fail2ban/jail.conf文件,但推荐不直接修改这个文件,而是创建一个本地副本jail.local进行自定义设置,因为jail.conf可能会在包更新时被覆盖。

     sudo cp /etc/fail2ban/jail.{conf,local}
  2. 编辑jail.local文件

    使用文本编辑器编辑/etc/fail2ban/jail.local文件。你需要添加或修改以下段落来满足“密码输入错误一次后永久封禁”这一需求。

     [DEFAULT]
     bantime = -1  # 永久封禁
     findtime = 60  # 在60秒的时间窗口内考虑失败尝试
     maxretry = 1  # 最大尝试次数为1
     ​
     [sshd]
     enabled = true
    • bantime = -1表示被封禁的IP地址将永久不被允许访问。

    • findtimemaxretry的组合意味着如果在60秒内有1次失败尝试,就触发封禁动作。

  3. 重启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
  1. 首先撰写该模块conf文件,该conf文件中failregex的信息,具体根据nginx转发日志模块的信息编写,以下为本eg服务器的参考。

    vim /etc/fail2ban/filter.d/nginx-ssh.conf

     [Definition]
     failregex = ^<HOST> \[.*\] TCP 200 .* "127\.0\.0\.1:22" ".*" ".*" ".*"$
     ignoreregex =

  2. 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访问服务器所有端口
    
  3. 重启服务

    systemctl restart fail2-ban

  4. 查看

    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

---------------------

---------------------

 

  • 36
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值