サーバの/var/log/secureに溜まった不正アクセスのIPを拾い集めるスクリプトの作り方。(SSHのみ)

 まず、

# cat secure | grep "Illegal"

で、存在しないユーザー名でログインに失敗した行だけ抜き出す。

Jun 25 12:42:43 xxxxx sshd[19176]: Illegal user hlds from 216.146.xxx.xxx
Jun 25 12:42:47 xxxxx sshd[19178]: Illegal user cstrike from 216.146.xxx.xxx
Jun 25 12:42:51 xxxxx sshd[19180]: Illegal user ts from 216.146.xxx.xxx
以下略

次にawkを使って10番目の項目を抜き出す

# cat secure | grep "Illegal" | awk '{ print $10 }'

これで存在しないユーザー名で不正アクセスしてきたIPアドレスだけが抜き出せるが重複しまくっているので、uniqを使ってカウントし、更にもう一度awkでカウントした数字を削る。

# cat secure | grep "Illegal" | awk '{ print $10 }' | uniq -c | awk '{ print $2 }'

ちなみに存在するユーザー名で不正アタックされたIPの抜き出しはgrepでフィルタリングする文字列を適当に変える。rootだけなら

# cat secure | grep "Failed" | grep "for root " | awk '{ print $11 }' | uniq -c | awk '{ print $2 }'

などとしてもいい。