Ignorar transmisiones a 10.0.0.255 usando iptables

1

Estoy tratando de eliminar los paquetes de registro que están destinados a 10.0.0.255 mediante el uso de las siguientes reglas:

$IPTABLES -A OUTPUT  -d 10.0.0.255   -j DROP
$IPTABLES -A FORWARD  -d 10.0.0.255   -j DROP

No parece funcionar. Los paquetes siguen fluyendo a través de esta regla y el DENY de ellos se está registrando en una regla posterior. ¿Necesito algo especial cuando se trata de la dirección de transmisión?

Editar: aquí está la regla completa que utilizo y que no funciona:

# 
# 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
    
pregunta grm 10.07.2011 - 13:09
fuente

4 respuestas

2

La pregunta no es muy explícita sobre lo que está tratando de lograr, qué comportamiento observa en realidad y en qué se diferencia de lo que está tratando de lograr. Sin embargo, intentaré hacer mi mejor esfuerzo para adivinar cuál podría ser su problema.

Aquí está mi conjetura. Es casi seguro que necesita una regla de ENTRADA para bloquear las transmisiones entrantes. Espero que sus conjuntos de reglas actuales impidan que las aplicaciones locales envíen transmisiones, pero no bloqueará los mensajes entrantes enviados por otras máquinas.

Espero que entienda que estas reglas solo bloquearán las transmisiones entrantes / salientes a través de su interfaz inalámbrica ( wlan0 ). Si desea bloquear todas las transmisiones, independientemente de la interfaz, elimine el -i wlan0 .

Espero que entiendas que bloquear el reenvío de paquetes de transmisión no tiene sentido. Los paquetes de difusión se transmiten a todos en la red local. Entonces, si la máquina X en la red inalámbrica local envía un paquete de difusión, todas las demás máquinas en la misma red inalámbrica irán a ver el paquete de difusión, independientemente de las reglas de firewall que establezca. Las reglas de FORWARD (y el concepto completo de evitar que los paquetes de difusión "fluyan") su máquina simplemente no tiene sentido.

P.S. Si nada de lo anterior funciona, intente eliminar -m state --state NEW , en caso de que esto esté arruinando las cosas. Lo más probable es que esto no haga una diferencia. Sin embargo, sé que puedo bloquear las transmisiones entrantes en mi conjunto de reglas, y mi conjunto de reglas no intenta filtrar en el estado de la conexión, así que sé que debería funcionar si omite el -m state --state NEW ; debería seguir trabajando con eso incluido, pero no lo sé con certeza.

    
respondido por el D.W. 17.08.2011 - 00:00
fuente
2

Un poco anticuado, pero me sentí obligado a ayudar a expandir la discusión / diálogo al presentar la idea de bloquear el tráfico de difusión al demostrar las capacidades de IPTables para filtrar la información de la capa 2 también. Específicamente, está la opción de línea de comando -m pkttype --pkt-type broadcast .

Aquí hay un ejemplo de conjunto de reglas de iptables que muestra esta opción, así como su resultado resultante:

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

RESULTADOS

[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            

Aunque es una tangente, hay otra opción interesante para proporcionar un filtrado de capa 2 basado en las direcciones MAC (fuente), que no es muy útil en este caso. Sin embargo, es interesante si nada más que saber de su existencia. Esta es la opción de línea de comandos de IPTables -m mac --mac-source . Prácticamente hablando, se declara que esta opción tiene sentido en las cadenas INPUT y FORWARD (y no en la cadena OUTPUT). El concepto probablemente sería de mayor interés para una acción ACEPTAR, en lugar de DROP o RECHAZAR. En el siguiente ejemplo breve, ACEPTO transmisiones desde la puerta de enlace predeterminada, pero bloqueo todas las demás. En este ejemplo, imagino que la dirección MAC de la puerta de enlace predeterminada es: 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

RESULTADOS

[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

En este segundo ejemplo, me doy cuenta de que la notación NOT (es decir, '!') para la segunda regla de ENTRADA no es necesaria; sin embargo, también es una característica interesante que puede ser de alguna utilidad en esta pregunta si se desea un rechazo selectivo (o aceptación).

    
respondido por el Nick 22.12.2014 - 21:13
fuente
1

iptables es maravilloso cuando el esquema está completamente pensado y optimizado para el medio ambiente, ¡pero requiere un gran esfuerzo intelectual para hacerlo bien!

Pienso en esto así:

INPUT - to the box
FORWARD - around the box
OUTPUT - from the box

Parece que has subneteado Clase A 10. * a una Clase C 10.0.0. * Supongo que quieres 10.0.0.255 transmisiones en eth0 / eth1.

Por lo tanto, para bloquear solo las transmisiones en 10.0.0.255 desde y hacia wlan0 y evitar que se reenvíen:

$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

Para bloquear el reenvío para 10.0.0.255/32 en todas las interfaces:

$IPTABLES -A FORWARD -d 10.0.0.255/32 -j DROP

Esto aún permitiría su uso, pero no cruzará las interfaces en ninguna dirección.

También agregaría muchas más reglas para detener la falsificación, los bogons, los icmps y igmp seleccionados y bloquear exactamente qué direcciones / puertos se reenvían y bloquean a cada combinación de interfaces, para que no haya ninguna posibilidad de direcciones privadas. filtrarse a la red, o ingresar direcciones falsificadas, o una máquina pirateada que ingresa a otras máquinas que no debería.

El conjunto de reglas de mi iptables es de aproximadamente 25,000 líneas, pero la mayoría de ellas son reglas de geoip para decidir qué países pueden enviar correo en qué momento, así como usuarios prohibidos, atacantes de fuerza bruta, delincuentes conocidos de spamhaus, etc.

Tal vez sea paranoico, pero como administrador del sistema es necesario.

    
respondido por el Andy Lee Robinson 17.08.2011 - 15:49
fuente
0

Creo que la regla correcta sería:

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

No estoy seguro de por qué su regla no coincide con los paquetes de transmisión, pero en otros ejemplos he visto este formato.

También, se encontró una forma alternativa aquí bloquea el paquete según el tipo de paquete.

    
respondido por el Dog eat cat world 10.07.2011 - 15:46
fuente

Lea otras preguntas en las etiquetas