iptables の recent オプション

自宅のサーバは sshd_config で "PasswordAuthentication no" の設定が行われているため、パスワード総当たりのような攻撃で侵入することはできなくなっています。ですが auth.log に大量に残される

Invalid user hoge from xxx.xxx.xxx.xxx

の洪水は見ていて気分のいいものじゃありません。すごい勢いでプロセス ID がカウントアップしてたりしますし。
連続してアクセスに失敗したら接続をブロックする、そんな設定がないかしらと man sshd_config していたりしたのですが、iptables を使ってブロックする方法があるということを知りました。ファイアウォールで止めてくれるなら願ったり叶ったり。しかしこんな便利なものがあるなんて知りませんでした。

iptablesに上のルールを追加することで過去60秒間に8回以上SSHポートに接続を試みたIPアドレスを拒否する設定になります。詳しくは上のリンクにUbuntuでの解説があります。

この解説では if_up.d と if_down.d に iptables のルールを追記するスクリプトを仕込んでいますが、Ubuntu 的には ufw を使って実現するほうが正しいのかもしれません。