centos 6.10ホワイトリストのIPアドレス

centos 6.10ホワイトリストのIPアドレス

特定のIPアドレスがiptablesのdportにアクセスできるようにする方法は?例:2つのクライアントがあり、最初のクライアントのIPアドレスは182.3.3.1、2番目のクライアントのIPアドレスは202.4.5.6、ポートは2222です。私が望むのは、このIPアドレスだけがポート2222にアクセスできることです。

私はこの規則を書いた:

iptables -A INPUT -p tcp ! -s 182.3.3.1  --dport 2222 -j REJECT
iptables -A INPUT -p tcp ! -s 202.4.5.6  --dport 2222 -j REJECT

問題は、1つのアドレスにのみアクセスでき、他のアドレスはブロックされることです。何が問題なの?

答え1

iptablesがルールを処理する方法は、パケットをキャッチして上から下に一連のルールと一致しようとすることです。ルールが一致した場合は実行し、追加の処理を中止します(ターゲットが異なるチェーン、LOG、RETURNなどの特別な場合は除く)。

各チェーンには、ルールと一致しないパケットに発生するデフォルトポリシー(デフォルトでは受け入れ)もあります。

次の2つの規則がある場合:

iptables -A INPUT -p tcp ! -s 182.3.3.1 --dport 2222 -j REJECT
iptables -A INPUT -p tcp ! -s 202.4.5.6 --dport 2222 -j REJECT  

IP 182.3.3.1からアクセスすると、最初のルールが一致して適用されます(何もしません。ルールはACCEPTと思われるチェーンDEFAULTポリシーによって処理されます)。 2番目の場合、IPが202.4.5.6の場合、最初のルールも一致して適用されます(アクセス拒否)。

おそらくあなたが望むものは次のとおりです(システムにこれらのルールを入力しないでください。そうしないと、あなた自身がロックされます!):

iptables -P DROP INPUT # Changes the INPUT Chain default policy to DROP
iptables -A INPUT -p tcp -s 182.3.3.1 --dport 2222 -j ACCEPT # Allows the access of IP 182.3.3.1  
iptables -A INPUT -p tcp -s 202.4.5.6 --dport 2222 -j ACCEPT # Allows the access of IP 202.4.5.6 

これらのルールを使用すると、他のサービスへのアクセスを許可するためにルールセットを更新する必要があることを理解してください(たとえば、SSHやサーバーの他のサービスへのアクセスを許可するため、サーバーから自分自身をロックしないことをお勧めします)。 。

関連情報