iptablesを使ってSSH brute forceを防ぐ方法

元ネタはこちら→ http://sawano.members.icraft.jp/wp/2008/11/06/1032.html;title

ちょうど自宅サーバを立てたというのもあり、個人が便利に利用する上で必要だと感じたので、上記のページを参考にとりあえずやってみました。

・・・全然いかないやんけorz

Gentooじゃいかないのか?そんな訳ないよなーとと思い、そういえば確かiptablesってカーネルの機能だったようなー、と思いだしたので、/usr/src/linuxに移動し、make menuconfig。
そして、

[Netwoking support] --> [Networking options] --> [Network packet filtering framework (Netfilter)]
                                                  --> [*] Advanced netfilter configuration
                                                          [Core Netfilter Configuration] -->
                                                            この下にある、〜 target supportを片っ端から組み込み。モジュールにしても大丈夫だとは思います。

として、make && make modules_install。これで、iptablesで色々なマッチングモジュールを利用する準備が整います。
こういうのがデフォルトで用意されていないのも、Gentooならでは。

ですが、参考にしたページそのままではいきませんでした。実際に成功したiptablesの設定は次の通り。(コメントは削除しています)

$ iptables -N SSH_ACCEPT
$ iptables -N SSH_BFA
$ iptables -A INPUT -m state --state NEW -p tcp --dport 22 -j SSH_ACCEPT
 
$ iptables -A SSH_ACCEPT -m recent --set --name SSH_ACCEPT
$ iptables -A SSH_ACCEPT -m recent --rcheck --seconds 60 --hitcount 5 --rttl --name SSH_ACCEPT -j SSH_BFA
 
$ iptables -A SSH_BFA -j LOG --log-tcp-options --log-level 4 --log-prefix 'iptables: ssh_bfa :'
$ iptables -A SSH_BFA -j DROP

$ /etc/init.d/iptables save

こんな感じになります。最後の /etc/init.d/iptables save は、入力したiptablesのコマンドを、次回以降入力しなくてもよいように保存してくれます。
上記のものですが、マッチングモジュール以降(-m 〜の部分)のオプションは、大文字でなければならない & ターゲットは事前に-Nで追加しておかなきゃならない、という点がポイントでした。

あまりセキュリティには詳しくないのですが、とりあえずよさげなのでいいことにします。