如何检索可能的 ssh 攻击者的 IP 地址?

如何检索可能的 ssh 攻击者的 IP 地址?

我刚刚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

结果:

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

答案1

你可以使用这样的东西:

grep "Failed password for" /var/log/auth.log | grep -Po "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+" \
| sort | uniq -c

它会查找字符串Failed password for并提取 ( -o) IP 地址。它被排序,并uniq计算出现的次数。

输出将如下所示(以您的示例作为输入文件):

  1 111.111.111.1
  3 111.11.111.111
  6 111.111.11.111

输出中的最后一个已尝试 6 次。

答案2

这可能是一个臃肿的解决方案,但我建议你考虑安装类似的东西失败2Ban

它是为这种日志记录而设计的+增加了能够在防火墙中添加(临时)规则以阻止重复犯罪者的好处。不过,请务必将您自己的 IP 列入白名单,我有几次设法暂时将自己锁定在外面

答案3

这对我来说效果非常好。 (IP已更改以保护犯罪者)

$ awk '/Failed/ {x[$(NF-3)]++} END {for (i in x){printf "%3d %s\n", x[i], i}}' /var/log/auth.log | sort -nr
 65 10.0.0.1
 14 10.0.0.2
  4 10.0.0.3
  1 10.0.0.4

答案4

grep "Failed password for" /var/log/auth.log |
    awk -F"from" {'print $2'} |
    awk {'print $1'} |
    sort -u

相关内容