本日も乙

ただの自己満足な備忘録。

fail2banでSSH攻撃対策を強化する(filter.d/sshd.confを編集する)

前回の記事でfail2banをインストールすることによってSSH攻撃の対策ができました。 しかし、ログインのログ(/var/log/secure)を見るとこのようなログが残っていました。

Feb 21 09:28:28 foofoo.com sshd[20592]: Address xxx.xxx.xxx.xxx maps to hogehoge.net, but this does not map back to the address - POSSIBLE BREAK-IN ATTEMPT!
Mar  5 19:29:11 foofoo.com sshd[3938]: reverse mapping checking getaddrinfo for hogehoge.net [xxx.xxx.xxx.xxx] failed - POSSIBLE BREAK-IN ATTEMPT!
Mar  1 17:06:51 foofoo.com sshd[31505]: Received disconnect from xxx.xxx.xxx.xxx: 11: Bye Bye

基本的にfail2banはログを見てIPアドレスを弾く(BAN)ようにするのですが、上記のパターンではIPアドレスをBANできないようです。 これが、数回程度なら大した問題ではないのですが、logwatchNagios,Zabbixなどの監視ツールで調べてみた場合、特定のIPアドレスから何百回も攻撃されていることが判明したりすると、何かしらの対策した方が良いでしょう。 そこで今回は上記のログの場合でもBANするように設定ファイルを変更します。

フィルタ設定ファイルを編集する

SSHのフィルタは/etc/fail2ban/filter.d/sshd.confで設定できます。

# /etc/fail2ban/filter.d/sshd.conf
failregex = ...
                  ^%(__prefix_line)sAddress <HOST> .* POSSIBLE BREAK-IN ATTEMPT!*\s*$  # 追加
                  ^%(__prefix_line)sreverse mapping checking getaddrinfo .* \[<HOST>\] failed - POSSIBLE BREAK-IN ATTEMPT!\s*$  # 追加
                  ^%(__prefix_line)s.+Received disconnect from <HOST>: 11: Bye Bye *$  # 追加

上記のようにパターンを追加します。

fail2banを再起動することで設定が反映されます。

$ sudo service fail2ban restart

最後に

今回はfail2banのフィルタを設定して、SSH攻撃の防止をより強化しました。 これでひと通りは大丈夫かと思いますが、それでも攻撃が多い場合は、以下の施策を行うのが良いかと思います。

  • bantimeを伸ばす
    • 1日(=86,400秒)や2日(=172,800秒)に伸ばす
  • maxretryを減らす
    • 3回までなど
    • あまり減らしすぎると自分自身のIPアドレスがBANされる可能性があるので、ignoreipに追加してBAN対象から外す必要がある
  • SSH接続のポートを変更する

参考URL

failregex POSSIBLE BREAK-IN ATTEMPT in filter sshd.conf