可能なSSH攻撃者のIPアドレスを取得する方法は?

可能なSSH攻撃者のIPアドレスを取得する方法は?

ログインしたばかりcat /var/log/auth.logで、記録がたくさんあることがわかりました| grep "Failed password for"

ただし、有効なユーザー/無効なユーザーの2つの可能なレコードタイプがあります。これはそれらに対する私の試みを複雑にします| 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

文字列を見つけてIPアドレスをFailed password for抽出します()。-oソートされ、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

関連情報