ブルートフォース攻撃を防衛するパケットフィルタ設定
# iptables -N ssh_blute
# iptables -N ssh
# iptables -A INPUT -j ssh -p tcp --dport 22
# iptables -A ssh_blute -m recent --name ssh_block --set -j
LOG --log-level DEBUG --log-prefix "ssh_block: "
# iptables -A ssh_blute -j REJECT
# iptables -A ssh -p tcp ! --syn -m state --state ESTABLISHED,RELATED
-j ACCEPT
# iptables -A ssh -p tcp --syn -m recent --name ssh_block
--update --seconds 86400 -j REJECT --reject-with
--reject-with icmp-port-unreachable
# iptables -A ssh -p tcp --syn -m recent --name ssh_conn --rcheck
--seconds 60 --hitcount 5 -j ssh_blute
# iptables -A ssh -p tcp --syn -m recent --name ssh_conn --set
# iptables -A ssh -p tcp --syn -j ACCEPT
出典:日経ITPRO
この設定では、1分間に5回以上連続してSSH要求を送ってきた場合には24時間のブロックをするという設定になっています。
午前中の数時間で
この設定で午前中運用させてみたところ、大量のブロックログが出てきてちょっとびっくり。
このサーバは設置間もないですし、常時稼働でもないのですが執拗なブルートフォース攻撃には閉口してしまいました。
ブロックしたIPアドレスをたぐってみたところ、99%が中国発、残りはロシアでした。
iptablesは24時間後に再開するのですが、その時にまた攻撃が再開するというしつこく攻撃するプログラムのようです。
ひとまず、攻撃元のアドレスレンジをまとめてREJECTするようiptablesに追加。
当面の対処
ログを分離して、スクリプトでssh_blockのIPアドレスをフィルタへ追加するようにし、それを毎朝更新させるようにしました。
IPSecやPPTPを使うよう変更したほうが良いようです。