iptables アクセス回数を制限する
提供: セキュリティ
2013年8月17日 (土) 22:56時点におけるDaemon (トーク | 投稿記録)による版 (ページの作成:「<!-- vim: filetype=mediawiki --> iptables は、単位時間あたりのアクセス回数を制限できます。 __TOC__ == 概要 == iptables でアクセ...」)
スポンサーリンク
iptables は、単位時間あたりのアクセス回数を制限できます。
概要
iptables でアクセス制限を行うための方法として、 limit モジュール や hashlimit モジュールがあります。
limit モジュールにおける制限
limit モジュールを使用して、アクセス制限を sshd に対して行うと、総当たり攻撃 を受けている時に、自分自身もログインができなくなるので、やるべきではないでしょう。
NAT / プロキシ されてる環境に複数のユーザーが存在する場合、異なるユーザのアクセスが同一IPアドレスからやってきます。 ISPなどの接続事業者や大きな企業からたくさんのアクセスが想定される場合、iptables でのアクセス制限は、うまく機能しないかもしれません。
PINGに対して回数制限を行う
1秒間に4回までアクセスを許可する例です。
-A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s --limit-burst 4 -j ACCEPT
- -A INPUT
- 受信パケットを対象とします。
- -p icmp
- ICMP プロトコルを対象とします。
- --icmp-type echo-request
- ICMP のタイプは、ping エコーを指定します。
- -m limit
- limit モジュールを有効にします。
- --limit 1/s
- 1秒間あたり
- --limit-burst 4
- 最大4回
- -j ACCEPT
- 条件にマッチしたパケットを許可します。
INPUT チェインのデフォルトルールが ACCEPT にしている場合は、追加で DROP の設定が必要です。
-A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s --limit-burst 4 -j ACCEPT -A INPUT -p icmp --icmp-type echo-request -j DROP
sshd へのアクセス制限
sshd に対するアクセス制限は、自信がログインできなくなる可能性があるため、推奨はできません。
22番ポート (sshd) に対して1分間に最大1分間の ssh の新規の接続を許可します。 INPUT のデフォルトルールが DENY の場合です。
-A INPUT -p tcp --syn -m state --state NEW --dport ssh -m limit --limit 1/m --limit-burst 1 -j ACCEPT
INPUT のデフォルトルールが ACCEPT の場合です。
-A INPUT -p tcp --syn -m state --state NEW --dport ssh -m limit --limit 1/m --limit-burst 1 -j ACCEPT -A INPUT -p tcp --syn -m state --state NEW --dport ssh -j DROP
hashlimit モジュールにおける制限
limit モジュールの制限では、正常なリクエストも不正アクセス にまぎれてしまいました。 クライアントごとにリクエスト回数を制限するには、 hashlimit モジュールを使用します。
関連項目
ツイート
スポンサーリンク