web-dev-qa-db-ja.com

iptablesを使用して10.0.0.255へのブロードキャストを無視する

次のルールを使用して、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
1
grm

少し時代遅れですが、IPTablesのレイヤ2情報のフィルタリング機能も示すことにより、ブロードキャストトラフィックをブロックするというアイデアを導入することで、ディスカッション/ダイアログを拡張するのを助けざるを得なくなりました。具体的には、-m pkttype --pkt-type broadcastコマンドラインオプションがあります。

次に、このオプションとその結果の出力を示すiptablesルールセットの例を示します。

IPTables:-m pkttype --pkt-type broadcast

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:-m mac --mac-source

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(つまり「!」)表記は不要であることを完全に理解しています。ただし、選択的な拒否(または受け入れ)が必要な場合は、この質問に役立つ便利な機能でもあります。

2
Nick

質問は、達成しようとしていること、実際に観察している動作、および達成しようとしていることとどのように異なるかについては明確ではありません。しかし、私はあなたの問題が何であるかを推測するために最善を尽くします。

これが私の推測です。着信ブロードキャストをブロックするには、ほぼ確実にINPUTルールが必要です。現在のルールセットではローカルアプリケーションがブロードキャストを送信できないようになっていると思いますが、他のマシンから送信された着信ブロードキャストメッセージはブロックされません。

これらのルールが、ワイヤレスインターフェイス(wlan0)を介した着信/発信ブロードキャストのみをブロックすることを理解してください。インターフェイスに関係なく、すべてのブロードキャストをブロックする場合は、-i wlan0を削除します。

ブロードキャストパケットの転送をブロックしても意味がないことをご理解ください。ブロードキャストパケットは、ローカルネットワーク上の全員にブロードキャストされます。そのため、ローカルワイヤレスネットワーク上のマシンXがブロードキャストパケットを送信すると、同じファイアウォールネットワーク上の他のすべてのマシンareは、配置したファイアウォールルールに関係なく、ブロードキャストパケットを表示します。 FORWARDルール(およびブロードキャストパケットが「フロースルー」するのを防ぐという全体的な概念)は、マシンに意味がありません。

追伸上記のいずれもうまくいかない場合は、-m state --state NEWを削除してみてください。ほとんどの場合、これは違いを生みません。ただし、ルールセットで着信ブロードキャストをブロックできることはわかっています。また、ルールセットは接続状態でフィルターをかけないため、-m state --state NEWを省略しても機能するはずです。それはすべき含まれているものでまだ動作しますが、私はそれを確実に知りません。

2
D.W.

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違反者などです。

多分私は偏執狂かもしれませんが、システム管理者としてそれは必要です!

1

正しいルールは次のようになると思います。

$IPTABLES -A OUTPUT  -d 10.0.0.0/24   -j DROP
$IPTABLES -A FORWARD  -d 10.0.0.0/24   -j DROP

なぜルールがブロードキャストパッケージに一致しないのかはわかりませんが、他の例ではこの形式を見ました。

また、別の方法が見つかった here は、パケットタイプに基づいてパケットをブロックします。

0