LoginSignup
25
26

More than 5 years have passed since last update.

iptablesを利用したsshのブルートフォースアタック対策

Last updated at Posted at 2013-06-20

環境

CentOS 6.4

概要

iptablesを設定し、
同一IPから30秒間に5回ログインリクエストがあった場合、300秒間ロックする。
というロジックを組んでいます。
ログインに成功してもカウントされるため、
ログイン/ログアウトを繰り返しても制限に引っかかりますが、
通常そのような利用はしないでしょう。。
※limit-burstだと思い通りのことが出来ず、チェインを利用したルールを採用。
※可能であればパスワード認証は使用しないのが望ましいです。

iptables の設定

# ssh アクセス制限
# 制御用のチェインを3つ追加。
# sshポートに新規リクエストがあった場合のルール
-N ssh_check
# アタックリストに存在する場合のルール
-N ssh_reject
# アタックと見なした場合のルール
-N ssh_attack

# 22番ポートに新規リクエストがあった場合、ssh_checkチェインに入ります。
-A INPUT -p tcp -m state --state NEW,INVALID --dport 22 -j ssh_check

# ssh_check ルールの処理
# アタックリストに入ってから300秒以内の場合はssh_rejectルールを適用します。
-A ssh_check -m recent --rcheck --seconds 300 --name attack_reject -j ssh_reject
# アタック候補リストに30秒以内に5回カウントされている場合は、
# アタックと見なしてssh_attackルールを適用します。
-A ssh_check -m recent --rcheck --seconds 30 --hitcount 5 --name attack_count -j ssh_attack
# アタック候補リストに1カウント分として追加します。
-A ssh_check -m recent --set --name attack_count
# ログ出力
-A ssh_check -j LOG --log-level info --log-prefix "COUNT: "

# ssh_reject ルールの処理(reject時)
# ログ出力
-A ssh_reject -j LOG --log-level info --log-prefix "REJECT: "
# アタック候補リストに1カウント分として追加し、rejectします。
-A ssh_reject -m recent --set --name attack_count -j REJECT

# ssh_attack ルールの処理(アタックと見なした場合)
# ログ出力
-A ssh_attack -j LOG --log-level info --log-prefix "ATTACK: "
# アタックリストに記録して、ssh_rejectルールを適用します。
-A ssh_attack -m recent --set --name attack_reject -j ssh_reject

# ssh_rejectルールが適用されなかった場合、acceptされます。
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
# ssh アクセス制限ここまで

適用後、iptables restartが必要です。
ログは/var/log/messages に出力されます。

あわせてsshのポートを22から変更しておくと、
攻撃される頻度がぐっと減るためリスクをかなり低減できます。

参考サイト

http://www2s.biglobe.ne.jp/~nuts/labo/inti/ipt_recent.html
http://www.turbolinux.co.jp/products/server/11s/user_guide/iptablescmd.html
http://linuxjm.sourceforge.jp/html/iptables/man8/iptables.8.html

25
26
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
25
26