Linuxで不正アクセスっぽいモノを記録するログが
/var/log/btmp
で、こいつはプレーンテキストではないので
lastb
コマンドで中身を確認する。
セキュリティ対策をしていないサイトだと膨大なログになるのでちょっとフィルタする。
不正アクセスっぽいモノのIPを抽出するには
lastb -ia|sed -e “s/.* \([0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+\)$/\1/g”|sort|uniq
lastbの出力でホスト名ではなくIPで表示して、一番最後にアドレスを出す。 それをsedに流してIP部分を切り出して、ソートして、重複を取り除いている。
正常なアクセスっぽいモノが記録されるログは
/var/log/wtmp
で、こいつもプレーンテキストではないので
last
コマンドで中身を確認できる。
不正アクセスっぽいモノ同様に
last -ia|sed -e “s/.* \([0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+\)$/\1/g”|sort|uniq
を通すと正常ログイン出来たアドレス一覧が得られる。
それぞれをリダイレクトして、
lastb -ia|sed -e “s/.* \([0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+\)$/\1/g”|sort|uniq > btmp.list
last -ia|sed -e “s/.* \([0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+\)$/\1/g”|sort|uniq > wtmp.list
の様にファイルに落として・・・
cat btmp.list wtmp.list|sort|uniq -d > dup.list
-dオプション=重複行のみを出力する
すると、ログインを成功したり失敗したりしたアドレスのリストが得られるので、このアドレス一覧がセーフかどうか確認する。
>このセーフでないモノがあったら、不正アクセスでログインされている訳で、システム総チェックが必要になる・・・
このセーフなリストを(safe.listとでもして)保存して
cat btmp.list safe.list|sort|uniq -u
-uオプション=重複していない行のみを出力する
みたいにすると、セーフリストに記載されていない不正アクセスっぽいモノが得られる。
(「失敗リスト」+「成功リスト」に存在するモノから作ったセーフリストを失敗リストから除外すると「失敗リストだけに載っているモノ」+「失敗リスト+成功リストに存在するモノのうちセーフリストに載っていないモノ」が得られる)
この不正っぽいリストをまとめて拒否するなら
cat btmp.list safe.list|sort|uniq -u|sed -e “s/\(.*\)/ALL:\1/” >> /etc/hosts.deny
で、拒否ホストリストに全部突っ込める(但し、最終行にbtmp~と言う行がつくので、これだけ削除する)
お名前.com VPSやさくらのVPSで標準状態だと不正っぽいリストがいっぱい出てくるのでアクセス制限に注意。
しかし、基本的には、フレッツ光対応、固定IPサービスの「ZOOT NEXT for フレッツ光」みたいな固定IPを契約して、hosts.deny sshd:ALLにして、hosts.allow ALL:固定IPみたいにして接続できるIPを制限しておいた方が安全で良い。
(1107)