web-dev-qa-db-ja.com

可能性のある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
18
kravemir

あなたはこのようなものを使うことができます:

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

文字列Failed password forを調べ、IPアドレス(-o)を抽出します。ソートされ、uniqは発生回数をカウントします。

出力は次のようになります(例を入力ファイルとして)。

  1 111.111.111.1
  3 111.11.111.111
  6 111.111.11.111

出力の最後のものは6回試行されました。

20
chaos

それは肥大化したソリューションかもしれませんが、私はあなたが Fail2Ban のようなものをインストールすることを検討することをお勧めします

これはこの種のロギング用に作成されており、ファイアウォールに(一時的な)ルールを追加して繰り返し発生する違反者をブロックできるというボーナスが追加されています。自分のIPを必ずホワイトリストに登録してください。いくつかの状況で一時的にロックアウトされました。

6
Jake

これは私には本当にうまくいきました。 (有罪を保護するために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
0
Falsenames
grep "Failed password for" /var/log/auth.log |
    awk -F"from" {'print $2'} |
    awk {'print $1'} |
    sort -u
0
Liviu Popescu