■
サーバの/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番目の項目を抜き出す
これで存在しないユーザー名で不正アクセスしてきた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 }'
などとしてもいい。