Ubuntuとisc-dhcp-server(DHCP)があります。RFC2131)を私のローカルethの「権限」に設定し、私のローカルネットワークの一部のユーザーが他のdhcp(違法)を有効にしてクラッシュしました。
dhcp悪意のある動作(「ip dhcpスヌーピング」など)をブロックするルールを許可する「dhcpスヌーピング」機能を備えたCiscoまたはHPスイッチはありません。次のルールは機能しません。
localeth=enp2s0
iptables -I INPUT -i $localeth -p udp -m multiport -sports 67,68 -j DROP
iptables -I FORWARD -i $localeth -p udp -m multiport -dports 67,68 -j DROP
iptables -t mangle -A PREROUTING -i $localeth -p udp -m multiport --dports 67,68 -j DROP
Ubuntu with
ISC-DHCP-Server
authoritative;
option wpad code 252
このDHCP不良動作を防ぐためにiptablesルールを使用する方法は?ありがとう
修正する:
説明どおりここ、iptablesはDHCPフィルタリング用に指定されていませんが、ebtables」と言ったからです。低レベルでイーサネットフレームをフィルタリングするためのLinuxツール(ebtables)「だから、私が試したルールは次のとおりです。
macserver=52:54:00:ee:00:11
ipserver=192.168.1.10
ethserver=enp2s0
ebtables=/sbin/ebtables
$ebtables -A INPUT -i $ethserver --protocol ipv4 --ip-proto udp -s ! $macserver --ip-src ! $ipserver --ip-dport 67:68 -j DROP
しかし、うまくいきません。
PD:githubにはこのトピックに関するプロジェクトがあります。ebtables-dhcpsnoopingしかし、これがうまくいくかどうかはわかりません
答え1
これはホスト接続方式によって異なります。
「特権」DHCPサーバーホストと(仮定)クライアントホストの両方が「物理」/「専用」/「スタンドアロン」(どういう意味かを知ってください)スイッチ/「ルーター」に接続している場合、次のことはできません。他の「悪い」DHCPサーバーはホストを介してクライアントと通信せず、スイッチを介してのみ通信するため、実際にはDHCPサーバーのホストでは何もしません。
ただし、ホストがクライアントホストに接続されている複数のイーサネット/L2(タブなど)ネットワークインターフェイスを接続してスイッチ/「ルータ」の役割を果たす場合はどうなりますか?あなたがしなければならないことは、FORWARD
チェーンをフィルタリングすることですebtables
:
ebtables -A FORWARD --protocol ipv4 --ip-proto udp --ip-dport 67:68 -j DROP
(事実私が知る限り、68
それだけで十分です。)
MAC/IP/インターフェイスのマッチングが不要なのは、FORWARD
チェーン自体がすでにそれを処理しているためです。つまり、あるブリッジ ポートから別のブリッジ ポートに移動するトラフィックには機能しますが、ブリッジ ホスト自体から開始または宛先に向かうトラフィックには機能しません。
あなたは知らないかもしれません本物INPUT
DHCPクライアントも実行しない限り、「権限のある」サーバー自体は、L2またはL3でフィルタリング()されなければなりません。非インタフェース固有方法。本当に使用したい場合はebtables
(必ずしもそうではありません。iptables
状況は処理できます)-i
/代わりに、ブリッジインタフェース自体の値を持つ--in-interface
MAYBEを使用する必要があることに言及する価値があります。--logical-in
ちなみに、ebtablesもNetfilterの一部なので、Shorewallページの参照は私にとってほとんど意味がありません。 (文法的に正しい文のようには見えません。)私が言いたいのは、iptablesがL2を通過するトラフィック(つまり、ブリッジを介してあるポートから別のポートに移動するトラフィック)をフィルタリングしないことです。
編集:明らかに私は一つのことについて間違っていました。私はiptablesがインバウンドまたはアウトバウンドDHCPメッセージをブロックできないことに気づきました。おそらく、それは海岸の壁の引用が言いたいと思うかもしれません。しかし、ebtablesを使用するとこれを防ぐことができるという事実はまだ残っています。 (ebtablesルールはブリッジインターフェイスにのみ適用されるため、--logical-in
一致が1つしかない場合、一致はオプションです。)
PS"router"
上記の事実は、ルータと呼ばれるものが通常スイッチとしても構成されていることです(つまり、それぞれL2とL3で転送するコンポーネントがあります)。