Linux IPTables - IP アドレス範囲を無視

Linux IPTables - IP アドレス範囲を無視

現在、パブリックサーバーでいくつかのIPtablesルールを修正していますが、いくつかのジレンマに陥っています。目標は次のことです。

  1. ホストが1分あたりに設定できるSSH接続の数を制限します。
  2. 内部IPアドレス(172.21-30.xx)を使用するすべてのホストの場合は、ルール#1をスキップしてください。

私の最初の考えは、「172.21-30.0.0/16の範囲のすべてのIPアドレスを許可する」という初期のルールを設定することでした。しかし、この範囲内にないすべてのパケットは破棄されませんか?すべての接続を許可する必要があります。制限された速度の接続のみを選択してください。 172.21-30で始まる範囲を除くすべての範囲に適用されるようにLOGDROPソース(以下を参照)を設定する方法はありますか?

現在のルールは次のとおりです。

Chain INPUT (policy ACCEPT)
target     prot opt source               destination
LOGDROP    tcp  --  anywhere             anywhere            tcp dpt:ssh state NEW recent: UPDATE seconds: 60 hit_count: 4 name: DEFAULT side: source
           tcp  --  anywhere             anywhere            tcp dpt:ssh state NEW recent: SET name: DEFAULT side: source

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Chain LOGDROP (1 references)
target     prot opt source               destination
LOG        all  --  anywhere             anywhere            limit: avg 2/min burst 5 LOG level warning prefix `Possible SSH Attack '
DROP       all  --  anywhere             anywhere

助けてくれてありがとう。アーロン

答え1

あなたの初期の本能は正確でした。最初のルールは「このソース範囲内のすべてのパケットを許可する」でなければならず、その後に「受信パケット測定」ルールが続く必要があります。 IPTABLES ルールは表示される順序で評価され、最初の一致が勝ちます。私が別にする唯一のことは、LOGDROPチェーンの末尾に明示的なDROPルールを置くのではなく、INPUTポリシーをDROPにすることです。しかし、これは純粋に個人的な好みです。それが実際にすることは、人間の目で読むときに鎖でルールが一つ減るということです。

関連情報