ada-u さんからのすすめで、SSH へのアタックのログを保存してみることにした。
- iptables でログを残すようにする。
# /sbin/iptables -A INPUT -p tcp --dport 22 -j LOG
これにより、/var/log/messages に次のようなログが残るようになる。
Jun 7 15:12:48 ns1 kernel: IN=eth0 OUT= MAC=00:16:36:22:fb:58:00:26:ca:85:6a:46:08:00 SRC=XXX.XXX.XXX.XXX DST=YYY.YYY.YYY.YYY LEN=60 TOS=0x00 PREC=0x00 TTL=33 ID=61747 DF PROTO=TCP SPT=50312 DPT=22 WINDOW=5840 RES=0x00 SYN URGP=0
- そのままでは見づらいので、別のファイルに切り出すシェルスクリプトを作成する。
#!/bin/sh
cd <書き出し先のディレクトリ>
cp sshd.log sshd.tmp
cat /var/log/messages | grep DPT=22 | awk '{print sprintf("%s %02d %s %s", $1, $2, $3, $9)}' >> sshd.tmp
cat sshd.tmp | sort | uniq > sshd.log
rm sshd.tmp - このスクリプトを /etc/cron.quarter-hourly などに置き、定期的に実行させる。
これにより、定期的にアタックのログが切り出されるようになった。ただし、ログのローテーションは考慮していない。なお、うちのサーバは自分が使う IP アドレス以外からは SSH に入れないようにしてあるので、アクセスしようとした痕跡が残るだけで、ブルートフォースアタックのログは取れない。
取得したログは下記の URL で公開している。
コメント