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