En mi otro hilo, estaba hablando de algunas cosas interesantes sobre la política y los estados de iptables , ahora me gustaría entender más sobre cómo funciona el DHCP y cómo lo entiende iptables.
ETH0 está conectado a mi conmutador principal que recibe la IP dinámica de mi enrutador para obtener no solo acceso a Internet sino también acceso a mi red externa.
ETH1 es la tarjeta interna que está conectada a un conmutador interno donde los clientes X reciben su IPS de este servidor
La red ETH1 es 192.168.1.0/255.255.255.0 donde la IP del servidor es 192.168.1.254.
Por lo que entendí, dhcp es un protocolo de arranque, por lo que incluso si tiene sus políticas de firewall para DROP todo, su red aún recibiría el DHCP, que en las pruebas que hice parecía ser cierto.
Desde tcpdump:
root@test:~# tcpdump -i eth1 port 67 or 68
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), capture size 96 bytes
11:34:03.943928 IP 192.168.1.2.bootpc > 255.255.255.255.bootps: BOOTP/DHCP, Request from 00:0c:29:29:52:8b (oui Unknown), length 303
11:34:03.957647 IP 192.168.1.254.bootps > 192.168.1.2.bootpc: BOOTP/DHCP, Reply, length 300
11:34:06.492153 IP 192.168.1.2.bootpc > 192.168.1.254.bootps: BOOTP/DHCP, Request from 00:0c:29:29:52:8b (oui Unknown), length 303
11:34:06.506593 IP 192.168.1.254.bootps > 192.168.1.2.bootpc: BOOTP/DHCP, Reply, length 300
Hice una regla de registro simple para ver qué hace iptables:
root@test:~# tail -f /var/log/syslog
Oct 15 11:30:58 test kernel: IN=eth1 OUT= MAC=ff:ff:ff:ff:ff:ff:00:0c:29:29:52:8b:08:00 SRC=192.168.1.2 DST=255.255.255.255 LEN=331 TOS=0x00 PREC=0x00 TTL=128 ID=9527 PROTO=UDP SPT=68 DPT=67 LEN=311
Oct 15 11:31:43 test kernel: IN=eth1 OUT= MAC=ff:ff:ff:ff:ff:ff:00:0c:29:29:52:8b:08:00 SRC=192.168.1.2 DST=255.255.255.255 LEN=331 TOS=0x00 PREC=0x00 TTL=128 ID=9529 PROTO=UDP SPT=68 DPT=67 LEN=311
Oct 15 11:33:32 test kernel: IN=eth1 OUT= MAC=ff:ff:ff:ff:ff:ff:00:0c:29:29:52:8b:08:00 SRC=192.168.1.2 DST=255.255.255.255 LEN=331 TOS=0x00 PREC=0x00 TTL=128 ID=9531 PROTO=UDP SPT=68 DPT=67 LEN=311
Oct 15 11:34:03 test kernel: IN=eth1 OUT= MAC=ff:ff:ff:ff:ff:ff:00:0c:29:29:52:8b:08:00 SRC=192.168.1.2 DST=255.255.255.255 LEN=331 TOS=0x00 PREC=0x00 TTL=128 ID=9533 PROTO=UDP SPT=68 DPT=67 LEN=311
Aquí están mis reglas de iptables en el momento:
# deny all traffic
$IPT -P INPUT DROP
$IPT -P FORWARD DROP
$IPT -P OUTPUT DROP
# Use stateful inspection feature to only allow incoming connections
# related to connections I have already established myself
$IPT -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
$IPT -A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
# allow all traffic on lo interface
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT
Entonces, incluso con la POLÍTICA predeterminada para eliminar todo, todavía obtengo el DHCP en mi red, mientras que toma mucho más tiempo renovar una IP y tal.
Si agrego la siguiente regla a mi firewall:
$IPT -I OUTPUT -o $INTIF -p udp --dport 67:68 --sport 67:68 -j ACCEPT
Tomará MUCHO MENOS TIEMPO actualizar cualquier dhcp del cliente.
Considerando lo anterior:
- ¿Por qué lleva más tiempo actualizarlo incluso si no está siendo bloqueado?
- ¿es posible DROP el servidor dhcp en absoluto sin apagarlo?
- ¿Es posible ACEPTAR el servidor dhcp dentro de iptables con BOOTP? ¿Cómo se hace eso?
Si conoces buenos enlaces, no me importaría tomar mucho :)
Are you monitoring the network interface in promiscuous mode
todavía estoy aprendiendo ...