iptablesを使用して特定のポートにホワイトリストを実装する方法は?

iptablesを使用して特定のポートにホワイトリストを実装する方法は?

dport私はiptablesを使用してデフォルトで特定の着信トラフィックをブロックしますが、送信元IPまたはMACアドレスがいくつかのホワイトリストにある場合は着信トラフィックを許可する一連のルールを実装しようとしています。

DROPこれまではチェーン(INPUT/など)にグローバルポリシーを適用できることだけを知っていますが、特定のポートからの着信接続OUTPUTにのみこのポリシーを適用する方法はよくわかりません。

答え1

あなたの説明によると、これはiptablesのかなり単純な問題です。 3段階にします。

戦略に新しいチェーンを追加します。

iptables -N MYCHAIN

INPUT処理する宛先ポートのチェーンのポートのリストを定義します。

iptables -A INPUT -p <protocol, either tcp or udp> -m <again, protocol, match the '-p' switch value> --dport <portnum> -j MYCHAIN

それがすることは、特定のポートのルールを定義してから、指定されたチェーン(この場合はMYCHAIN)に「ジャンプ」することです。

次に、そのポートへのトラフィックを許可/拒否するようにMYCHAINにルールを設定します。

iptables -A MYCHAIN -s <source_IP> -j ACCEPT
iptables -A MYCHAIN -s <other_source_IP> -j ACCEPT
iptables -A MYCHAIN -j DROP

最後のルールではもちろん、代わりにREJECT使用できますDROP。ユーザーマニュアル(man iptables)には、表示されるトラフィックを記録または制限するために使用できる追加のパラメータが表示されます。高度なルールに関するオンラインチュートリアルもあります。

答え2

デフォルトポリシーを設定してください。デフォルトでは、次の指定されたルールと一致しないパケットは破棄されます。

iptables -P INPUT DROP

カスタムチェーンを作成します。指定された条件(たとえば、ソースアドレスが10.0.0.1)を満たすパケットをこのチェーンに転送します。

iptables -N CUSTOM

開始された接続を受け入れ、ループバックインターフェイスから接続を受け入れます。

iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT

10.0.0.1(インターフェースeth0に到達)からCUSTOMチェーンに新しいTCP接続を渡します。

iptables -s 10.0.0.1 -i eth0 -p tcp -m conntrack --ctstate NEW -j CUSTOM

特定のポートを許可するカスタムチェーンにルールを関連付けます。

iptables -A CUSTOM -p tcp -m multiport --dports 22,80 -j ACCEPT

関連情報