次のルールを使用して、10.0.0.255宛てのロギングパケットをドロップしようとしています。
$IPTABLES -A OUTPUT -d 10.0.0.255 -j DROP
$IPTABLES -A FORWARD -d 10.0.0.255 -j DROP
動作しないようです。パッケージはまだこのルールを通過しており、それらのDENYは後のルールでログに記録されています。ブロードキャストアドレスに関しては、特別なことは必要ですか。
編集:ここでは私が使用している完全なルールが機能していません:
#
# Rule 2 (wlan0)
#
echo "Rule 2 (wlan0)"
#
# remove local broadcast
$IPTABLES -A FORWARD -i wlan0 -d 10.0.0.255 -m state --state NEW -j DROP
$IPTABLES -A OUTPUT -o wlan0 -d 10.0.0.255 -m state --state NEW -j DROP
$IPTABLES -A FORWARD -o wlan0 -d 10.0.0.255 -m state --state NEW -j DROP
少し時代遅れですが、IPTablesのレイヤ2情報のフィルタリング機能も示すことにより、ブロードキャストトラフィックをブロックするというアイデアを導入することで、ディスカッション/ダイアログを拡張するのを助けざるを得なくなりました。具体的には、-m pkttype --pkt-type broadcastコマンドラインオプションがあります。
次に、このオプションとその結果の出力を示すiptablesルールセットの例を示します。
iptables -F
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
iptables -A INPUT -m pkttype --pkt-type broadcast -d 10.0.0.255/32 -j DROP
iptables -A INPUT -j ACCEPT
iptables -A FORWARD -m pkttype --pkt-type broadcast -d 10.0.0.255/32 -j DROP
iptables -A FORWARD -j ACCEPT
iptables -A OUTPUT -m pkttype --pkt-type broadcast -d 10.0.0.255/32 -j DROP
iptables -A OUTPUT -j ACCEPT
[〜#〜]結果[〜#〜]
[nick@sys]$ iptables -L
Chain INPUT (policy DROP)
target prot opt source destination
DROP all -- anywhere 10.0.0.255 PKTTYPE = broadcast
ACCEPT all -- anywhere anywhere
Chain FORWARD (policy DROP)
target prot opt source destination
DROP all -- anywhere 10.0.0.255 PKTTYPE = broadcast
ACCEPT all -- anywhere anywhere
Chain OUTPUT (policy DROP)
target prot opt source destination
DROP all -- anywhere 10.0.0.255 PKTTYPE = broadcast
ACCEPT all -- anywhere anywhere
接線ですが、(送信元)MACアドレスに基づいてレイヤー2フィルタリングを提供する別の興味深いオプションがあります。これは、この場合はあまり役に立ちません。しかし、その存在を知ること以上に興味深いことはありません。これはIPTables -m mac --mac-sourceコマンドラインオプションです。このオプションを実際に言うと、INPUTチェーンとFORWARDチェーン(OUTPUTチェーンではなく)で意味をなすように宣言されています。この概念は、DROPまたはREJECTアクションよりもACCEPTアクションの方が関心を引く可能性があります。次の簡単な例では、デフォルトゲートウェイからのブロードキャストを受け入れますが、他のすべてをブロックします。この例では、デフォルトゲートウェイのMACアドレスが00:F0:10:03:15:42のふりをしています。
iptables -F
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
iptables -A INPUT -m mac --mac-source 00:F0:10:03:15:42 -d 10.0.0.255/32 -j ACCEPT
iptables -A INPUT -m mac ! --mac-source 00:F0:10:03:15:42 -d 10.0.0.255/32 -j DROP
iptables -A INPUT -j ACCEPT
iptables -A FORWARD -d 10.0.0.255/32 -j DROP
iptables -A FORWARD -j ACCEPT
iptables -A OUTPUT -d 10.0.0.255/32 -j DROP
iptables -A OUTPUT -j ACCEPT
[〜#〜]結果[〜#〜]
[nick@sys]$ iptables -L
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT all -- anywhere 10.0.0.255 MAC 00:F0:10:03:15:42
DROP all -- anywhere 10.0.0.255 MAC ! 00:F0:10:03:15:42
ACCEPT all -- anywhere anywhere
Chain FORWARD (policy DROP)
target prot opt source destination
DROP all -- anywhere 10.0.0.255
ACCEPT all -- anywhere anywhere
Chain OUTPUT (policy DROP)
target prot opt source destination
DROP all -- anywhere 10.0.0.255
ACCEPT all -- anywhere anywhere
この2番目の例では、2番目のINPUTルールのNOT(つまり「!」)表記は不要であることを完全に理解しています。ただし、選択的な拒否(または受け入れ)が必要な場合は、この質問に役立つ便利な機能でもあります。
質問は、達成しようとしていること、実際に観察している動作、および達成しようとしていることとどのように異なるかについては明確ではありません。しかし、私はあなたの問題が何であるかを推測するために最善を尽くします。
これが私の推測です。着信ブロードキャストをブロックするには、ほぼ確実にINPUTルールが必要です。現在のルールセットではローカルアプリケーションがブロードキャストを送信できないようになっていると思いますが、他のマシンから送信された着信ブロードキャストメッセージはブロックされません。
これらのルールが、ワイヤレスインターフェイス(wlan0
)を介した着信/発信ブロードキャストのみをブロックすることを理解してください。インターフェイスに関係なく、すべてのブロードキャストをブロックする場合は、-i wlan0
を削除します。
ブロードキャストパケットの転送をブロックしても意味がないことをご理解ください。ブロードキャストパケットは、ローカルネットワーク上の全員にブロードキャストされます。そのため、ローカルワイヤレスネットワーク上のマシンXがブロードキャストパケットを送信すると、同じファイアウォールネットワーク上の他のすべてのマシンareは、配置したファイアウォールルールに関係なく、ブロードキャストパケットを表示します。 FORWARDルール(およびブロードキャストパケットが「フロースルー」するのを防ぐという全体的な概念)は、マシンに意味がありません。
追伸上記のいずれもうまくいかない場合は、-m state --state NEW
を削除してみてください。ほとんどの場合、これは違いを生みません。ただし、ルールセットで着信ブロードキャストをブロックできることはわかっています。また、ルールセットは接続状態でフィルターをかけないため、-m state --state NEW
を省略しても機能するはずです。それはすべき含まれているものでまだ動作しますが、私はそれを確実に知りません。
iptablesは、スキーマが徹底的に検討され、環境に合わせて最適化されている場合はすばらしいですが、正しく理解するには真剣な知的努力が必要です。
私はそれを次のように考えています:
INPUT - to the box
FORWARD - around the box
OUTPUT - from the box
Class A 10. *からClass C 10.0.0。*にサブネット化されているようです。eth0/ eth1で10.0.0.255ブロードキャストが必要だと思います。
したがって、10.0.0.255でのwlan0とのブロードキャストだけをブロックし、それらが転送されないようにするには:
$IPTABLES -A FORWARD -i wlan0 -d 10.0.0.255/32 -j DROP
$IPTABLES -A FORWARD -o wlan0 -d 10.0.0.255/32 -j DROP
$IPTABLES -A INPUT -i wlan0 -d 10.0.0.255/32 -j DROP
$IPTABLES -A OUTPUT -o wlan0 -d 10.0.0.255/32 -j DROP
すべてのインターフェースで10.0.0.255/32の転送をブロックするには:
$IPTABLES -A FORWARD -d 10.0.0.255/32 -j DROP
これでも引き続き使用できますが、どの方向にもインターフェイスを通過しません。
また、スプーフィング、bogon、選択したicmpとigmpを停止し、どのアドレス/ポートがインターフェイスの各組み合わせとの間で転送およびブロックされるかを正確にロックするためのルールをさらに追加します。これにより、プライベートアドレスがネット、またはなりすましアドレスが侵入したり、ハッキングされた1台のマシンが他のマシンに侵入したりしてはなりません。
私のiptablesルールセットは約25,000行ですが、それらのほとんどは、どの国がいつメールを送信できるかを決定するgeoipルール、ならびに禁止されたユーザー、ブルートフォース攻撃者、既知のspamhaus違反者などです。
多分私は偏執狂かもしれませんが、システム管理者としてそれは必要です!
正しいルールは次のようになると思います。
$IPTABLES -A OUTPUT -d 10.0.0.0/24 -j DROP
$IPTABLES -A FORWARD -d 10.0.0.0/24 -j DROP
なぜルールがブロードキャストパッケージに一致しないのかはわかりませんが、他の例ではこの形式を見ました。
また、別の方法が見つかった here は、パケットタイプに基づいてパケットをブロックします。