kra*_*mir 20 security scripting ssh
我刚刚cat /var/log/auth.log登录并查看,有很多| grep "Failed password for"记录。
但是,有两种可能的记录类型 - 有效/无效用户。这使我对| cut他们的尝试变得复杂。
我希望创建一个列表(文本文件),其中包含可能攻击者的 IP 地址和每个 IP 地址的尝试次数。有没有简单的方法来创建它?
另外,仅关于ssh:/var/log/auth.log在列出可能的攻击者列表时,我应该考虑哪些所有记录?
我的带有隐藏数字的“auth.log”示例:
cat /var/log/auth.log | grep "Failed password for" | sed 's/[0-9]/1/g' | sort -u | tail
Run Code Online (Sandbox Code Playgroud)
结果:
Mar 11 11:11:11 vm11111 sshd[111]: Failed password for invalid user ucpss from 111.11.111.111 port 11111 ssh1
Mar 11 11:11:11 vm11111 sshd[111]: Failed password for invalid user vijay from 111.111.11.111 port 11111 ssh1
Mar 11 11:11:11 vm11111 sshd[111]: Failed password for invalid user webalizer from 111.111.11.111 port 11111 ssh1
Mar 11 11:11:11 vm11111 sshd[111]: Failed password for invalid user xapolicymgr from 111.111.11.111 port 11111 ssh1
Mar 11 11:11:11 vm11111 sshd[111]: Failed password for invalid user yarn from 111.111.11.111 port 11111 ssh1
Mar 11 11:11:11 vm11111 sshd[111]: Failed password for invalid user zookeeper from 111.111.11.111 port 11111 ssh1
Mar 11 11:11:11 vm11111 sshd[111]: Failed password for invalid user zt from 111.11.111.111 port 11111 ssh1
Mar 11 11:11:11 vm11111 sshd[111]: Failed password for mysql from 111.111.11.111 port 11111 ssh1
Mar 11 11:11:11 vm11111 sshd[111]: Failed password for root from 111.11.111.111 port 11111 ssh1
Mar 11 11:11:11 vm11111 sshd[111]: Failed password for root from 111.111.111.1 port 11111 ssh1
Run Code Online (Sandbox Code Playgroud)
cha*_*aos 23
你可以使用这样的东西:
grep "Failed password for" /var/log/auth.log | grep -Po "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+" \
| sort | uniq -c
Run Code Online (Sandbox Code Playgroud)
它搜索字符串Failed password for并提取 ( -o) ip 地址。它已排序,并uniq计算出现次数。
输出将如下所示(以您的示例作为输入文件):
1 111.111.111.1
3 111.11.111.111
6 111.111.11.111
Run Code Online (Sandbox Code Playgroud)
输出中的最后一个已经尝试了 6 次。
小智 7
这可能是一个臃肿的解决方案,但我建议你看看安装类似Fail2Ban 的东西
它是为这种日志记录而设计的 + 增加了能够在防火墙中添加(临时)规则以阻止重复攻击者的好处。请务必将您自己的 ip 列入白名单,我曾几次设法将自己暂时锁定