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 モジュールを使用します。

関連項目




スポンサーリンク