pfsense: bloqueando um segundo servidor DHCP

pfsense: bloqueando um segundo servidor DHCP

Na minha LAN, estou usando um servidor PFSense com um servidor DHCP.

Preciso bloquear um segundo servidor DHCP que aparece na minha LAN. Acho que posso usar o firewall PfSense para recusar o outro endereço IP do servidor DHCP.

O que devo fazer?

Responder1

Infelizmente, você não pode bloquear um segundo DHCP na mesma LAN (certamente não no nível do firewall, e mitigá-lo com equipamentos de comutação empresarial de última geração não é um tópico simples); uma solicitação IP é um serviço de broacast, que geralmente opera no nível da LAN e, como tal, não há serviços de roteamento para bloquear serviços no nível do firewall.

ex. firewalls não bloqueiam conversas entre as máquinas que pertencem ao mesmo netblock/LAN, porém controlam/serviços fazendo roteamento por ele para conversar com outras redes.

O protocolo DHCP define que qualquer resposta que chegue primeiro a uma estação solicitando um IP será a resposta aceita. Portanto, dependendo de quem vencer, as estações de trabalho obterão aleatoriamente um endereço IP do endereço IP oficial ou do endereço IP não autorizado.

O que pode ser feito é a mitigação, ou seja, encontrar o MAC do equipamento infrator e procurá-lo em seus switches ou bloquear esse MAC em seus switches/AP wireless.

Para descobrir, você tem duas maneiras possíveis:

Você vai até uma máquina afetada e tenta descobrir o endereço IP do servidor DHCP que atendeu aquela solicitação. Ou então, libere o endereço IP e solicite-o várias vezes.

Depois de obter uma resposta para o roteador externo, obtenha esse endereço IP (por exemplo, em ipconfig /allum cliente Windows) e, em seguida, obtenha esse endereço MAC, supondo que o endereço IP do DHCP não autorizado seja 1.1.3.200:

$ping -c1 1.1.3.200 
PING 1.1.3.200 (1.1.3.200) 56(84) bytes of data.
64 bytes from 1.1.3.200: icmp_seq=1 ttl=255 time=0.273 ms

--- 1.1.3.200 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.273/0.273/0.273/0.000 ms
$arp -a 1.1.3.200
xxxx.local (1.1.3.200) at 00:0b:fc:07:04:01 [ether] on eth0

Ou minha maneira preferida, em uma caixa Linux, você usa tcpdumppara ouvir algumas solicitações DHCP (a caixa tem um controle deslizante horizontal para ver todo o texto)

sudo tcpdump -n -c 10 -e port 68
09:23:57.298176 00:21:97:c6:76:fc > ff:ff:ff:ff:ff:ff, ethertype IPv4 (0x0800), length 342: 1.1.3.2.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:21:97:c6:76:fc, length 300
09:23:59.034798 00:19:21:3c:2c:22 > ff:ff:ff:ff:ff:ff, ethertype IPv4 (0x0800), length 342: 1.1.3.116.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:19:21:3c:2c:22, length 300
09:24:00.191144 64:00:6a:09:58:16 > ff:ff:ff:ff:ff:ff, ethertype IPv4 (0x0800), length 342: 1.1.3.142.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 64:00:6a:09:58:16, length 300
09:24:07.325291 6c:62:6d:d0:20:f4 > ff:ff:ff:ff:ff:ff, ethertype IPv4 (0x0800), length 342: 1.1.3.2.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 6c:62:6d:d0:20:f4, length 300
09:24:31.500826 00:23:24:06:e8:0b > ff:ff:ff:ff:ff:ff, ethertype IPv4 (0x0800), length 363: 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:23:24:06:e8:0b, length 321
09:24:31.502554 00:0b:fc:07:04:00 > ff:ff:ff:ff:ff:ff, ethertype IPv4 (0x0800), length 342: 1.1.3.254.67 > 255.255.255.255.68: BOOTP/DHCP, Reply, length 300
09:24:31.502812 00:0b:fc:07:04:01 > ff:ff:ff:ff:ff:ff, ethertype IPv4 (0x0800), length 342: 1.1.3.200.67 > 255.255.255.255.68: BOOTP/DHCP, Reply, length 300
09:24:32.098505 00:0f:fe:fd:6c:27 > ff:ff:ff:ff:ff:ff, ethertype IPv4 (0x0800), length 342: 1.1.3.10.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:0f:fe:fd:6c:27, length 300
09:24:49.340908 64:00:6a:09:05:6d > ff:ff:ff:ff:ff:ff, ethertype IPv4 (0x0800), length 342: 1.1.3.174.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 64:00:6a:09:05:6d, length 300
09:24:53.444891 ac:16:2d:08:44:1b > ff:ff:ff:ff:ff:ff, ethertype IPv4 (0x0800), length 342: 1.1.3.170.68 > 255.255.255.255.67: BOOTP/DHCP, Request from ac:16:2d:08:44:1b, length 300

Observe as linhas que dizem Resposta DHCP:
neste exemplo, o servidor DHCP é 1.1.3.254 e possui o MAC 00:0b:fc:07:04:00; o segundo tem o endereço IP 1.1.3.200 e tem o endereço MAC 00:0b:fc:07:04:01 (6ª e 7ª linhas da saída).

Responder2

Eu usei a privação de DHCP (direcionada especificamente ao servidor DHCP não autorizado) por longos períodos de tempo. Tentardhcdropoudhcpstarv, ou um script scapy. Acabei optando pelo último porque era mais flexível. Tanto no scapy quanto no dhcpstarv é possível atingir o servidor DHCP agressor sem interromper um serviço legítimo.

Alguns roteadores e switches podem descartar links para hosts que violam um conjunto de regras. Vereste tópico de suporte da Ciscopor exemplo.

informação relacionada