iptables dhcp 듣기

iptables dhcp 듣기

우분투와 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체인 자체가 이미 이를 처리하기 때문입니다. 즉, 한 브리지 포트에서 다른 브리지 포트로 이동하는 트래픽에는 작동하지만 브리지 호스트 자체에서 시작되거나 목적지로 향하는 트래픽에는 작동하지 않습니다.

당신은 모를 수도 있습니다진짜INPUTDHCP 클라이언트도 실행하지 않는 한 "권한 있는" 서버 자체는 L2 또는 L3에서 필터링( )되어야 합니다.비인터페이스 특정방법. 정말로 사용하고 싶다면 ebtables (꼭 그럴 필요는 없습니다. iptables상황은 처리될 수 있습니다)-i / 대신에 브리지 인터페이스 자체의 값을 갖는 --in-interfaceMAYBE를 사용해야 한다는 점을 언급할 가치가 있을 것입니다.--logical-in

그건 그렇고, ebtables도 Netfilter의 일부이기 때문에 Shorewall 페이지의 참조는 나에게 거의 의미가 없습니다. (문법적으로 올바른 문장처럼 보이지도 않습니다.) 제가 말하려는 것은 iptables가 L2에서 전달되는 트래픽(즉, 브리지를 통해 한 포트에서 다른 포트로 이동하는 트래픽)을 필터링하지 않는다는 것입니다.

편집: 분명히 나는 ​​한 가지에 대해 틀렸습니다. 방금 iptables가 인바운드 또는 아웃바운드 DHCP 메시지를 차단할 수 없다는 것을 깨달았습니다. 어쩌면 그것이 해안 벽 인용문이 말하려는 것일 수도 있습니다. 그러나 ebtables를 사용하면 이를 방지할 수 있다는 사실은 여전히 ​​남아 있습니다. (ebtables 규칙은 브리지 인터페이스에만 적용되므로 --logical-in일치 항목이 하나만 있는 경우 일치 항목은 선택 사항입니다.)

PS "router"위에서 언급한 사실은 우리가 라우터라고 부르는 것이 일반적으로 스위치로도 구성된다는 것입니다(즉, 각각 L2 및 L3에서 전달하는 구성 요소가 있음).

관련 정보