ログファイルからIPアドレスの数を取得するにはどうすればよいですか?

ログファイルからIPアドレスの数を取得するにはどうすればよいですか?

IPアドレスとログ失敗回数を取得するためにログファイルを確認しています。私のログファイルは次のとおりです。

Feb  2 15:20:02 tank sshd[14870]: Failed password for root from 143.100.67.173 port 13356 ssh2
Feb  2 15:20:07 tank sshd[14874]: Failed password for root from 143.100.67.173 port 30595 ssh2
Feb  2 15:20:12 tank sshd[14874]: Failed password for root from 143.100.67.173 port 30595 ssh2
Feb  2 15:20:16 tank sshd[14874]: Failed password for root from 143.100.67.173 port 30595 ssh2
Feb  2 15:20:20 tank sshd[14874]: Failed password for root from 143.100.67.173 port 30595 ssh2
Feb  2 15:20:23 tank sshd[14874]: Accepted password for root from 143.100.67.173 

これで、ログが承認された回数も確認したいと思います。無差別代入攻撃の概要を得ることがアイデアです。

延長するにはどうすればよいですか?

sed -nr '/Failed/{s/.*([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+).*/\1/;p}'| sort | uniq -c 

許可されたパスワードも確認しますか?それはまるで

sed -nr '/Accepted|Failed/{s/.*([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+).*/\1/;p}'| sort | uniq -c 

しかし、「Accepted」と「Failed」の間に「OR」を使用する代わりに、次のような数の結果を取得したいと思います。

123.53.163.22 3 2

(列:IPアドレス、総失敗、総承認)

これは以下に関連しています。可能なSSH攻撃者のIPアドレスを取得する方法は?

ベストアンサー1

小さなサンプルを考えると...

cat horbaje
Feb  2 15:20:02 tank sshd[14870]: Failed password for root from 143.100.67.173 port 13356 ssh2
Feb  2 15:20:07 tank sshd[14874]: Failed password for root from 143.100.67.173 port 30595 ssh2
Feb  2 15:20:12 tank sshd[14874]: Failed password for root from 143.100.67.173 port 30595 ssh2
Feb  2 15:20:16 tank sshd[14874]: Failed password for root from 143.100.67.173 port 30595 ssh2
Feb  2 15:20:20 tank sshd[14874]: Failed password for root from 143.100.67.173 port 30595 ssh2
Feb  2 15:20:23 tank sshd[14874]: Accepted password for root from 143.100.67.173 

私はこれがあなたが望むことをやっていると思います。

awk '$6~/Failed/{a[$11][1]++}; $6~/Accepted/{a[$11][2]++} END{for(i in a){printf "%s\t%s\t%s\n",i,a[i][1],a[i][2]}}' horbaje
143.100.67.173  5   1

おすすめ記事