範囲内のIPの1つを許可しながらIP範囲をブロックします。

範囲内のIPの1つを許可しながらIP範囲をブロックします。

IP範囲をブロックしたいのですが、同時にその範囲内では1つのIPしか許可しません。検索してみると次のようになります。

 $ sudo iptables -A INPUT -s <ALLOWED_IP> -j ACCEPT
 $ sudo iptables -A OUTPUT -d <ALLOWED_IP> -j ACCEPT

 $ sudo iptables -I INPUT -m iprange --src-range <NOT_ALLOWED_RANGE> -j DROP

しかし、うまくいきません。また、順序を変更しようとしましたが、まだ動作していませんでした。

 $ sudo iptables -I INPUT -m iprange --src-range <NOT_ALLOWED_RANGE> -j DROP

 $ sudo iptables -A INPUT -s <ALLOWED_IP> -j ACCEPT
 $ sudo iptables -A OUTPUT -d <ALLOWED_IP> -j ACCEPT

私たちが何を間違えたのでしょうか?

答え1

だからコメントでも言及したように、順序が重要です!

セキュリティ上の理由から、netfilterは必要なIPアドレスまたは範囲のみを許可するようにチェーン削除iptablesポリシーを変更することをお勧めします。INPUT

-I質問に答えるには、まずルールを一番上に置くフラグを使用して目的のIPアドレスを許可する必要があります。

iptables -I INPUT -s SOURCE_IP -j ACCEPT 
iptables -A INPUT -m iprange --src-range SRC_RANGE/CIDR -j DROP

最初iptablesのルールが適用されます。つまり、一番上の人が常に勝利するという意味です。

DENY  (this rule wins)
 |
ALLOW 

答え2

-I一般的に言えば、この状況ではオプションを実際に使用する必要はありません。次の順序でルールを作成します。

-A INPUT -s ALLOWED_IP -j ACCEPT 
-A INPUT -s FORBIDDEN_IP_RANGE -j DROP

での接続のみを許可し、ALLOWED_IP他のアドレスからの接続は拒否しますFORBIDDEN_IP_RANGE

問題は、テーマランチャーがジョブ-Iの間違った場所でオプションを使用するため、DROPどちらの場合もDROPジョブが一番上に配置されることです。

内容は次のとおりですman iptables

-I, --insert chain [rulenum] ルール仕様

選択したチェーンに1つ以上のルールを指定されたルール番号として挿入します。したがって、ルール番号が1の場合、チェーンの先頭に1つ以上のルールが挿入されます。ルール番号が指定されていない場合でも、これはデフォルトです。

したがって-I、ルール番号を使用しない場合、デフォルトではルール番号1が使用されます。より複雑なファイアウォール構成のロジックを壊す可能性があるため、この使用には注意が必要です。

関連情報