Iptables con los parámetros -m y -p

8

Tengo esta regla en mis iptables:

iptables -A INPUT -p tcp -m tcp --dport 9191 -j DROP

¿Realmente necesito "-m tcp"? Ya estoy usando "-p tcp", ¿debería usar "-m tcp" para estar más seguro?

Samul
fuente

Respuestas:

9

Con la -p tcpopción, el módulo tcp ya está cargado y, por lo tanto, es algo redundante y no es obligatorio usar la -m tcpopción y no veo ninguna razón por la que usar esta opción haría que la regla sea más segura.

Consulte la página de manual de iptables para una mejor comprensión y comparación:

-p, --protocol [!] protocolo

El protocolo de la regla o del paquete a verificar. El protocolo especificado puede ser uno de tcp, udp, icmp o todos, o puede ser un valor numérico, que representa uno de estos protocolos o uno diferente. También se permite un nombre de protocolo de / etc / protocol. UNA "!" argumento antes de que el protocolo invierta la prueba. El número cero es equivalente a todos. Protocolo todo coincidirá con todos los protocolos y se toma como predeterminado cuando se omite esta opción.

...

Extensiones de partido

iptables puede usar módulos de coincidencia de paquetes extendidos. Estos se cargan de dos maneras: implícitamente, cuando se especifica -p o --protocol, o con las opciones -m o --match, seguidas del nombre del módulo correspondiente; después de estos, varias opciones de línea de comando adicionales estarán disponibles, dependiendo del módulo específico. Puede especificar varios módulos de coincidencia extendida en una línea, y puede usar las opciones -h o --help después de que se haya especificado el módulo para recibir ayuda específica para ese módulo.

Y para obtener una lista de opciones disponibles con -p tcpver aquí:

http://ipset.netfilter.org/iptables-extensions.man.html#lbCF

Como se indicó anteriormente, con el uso de la -mopción es posible agregar módulos de extensión y más opciones de coincidencia están disponibles. Por ejemplo, el módulo de la CPU :

UPC

[!] - número de CPU

Haga coincidir la CPU que maneja este paquete. Los cpus están numerados de 0 a NR_CPUS-1. Se pueden usar en combinación con RPS (Remote Packet Steering) o NIC de múltiples colas para distribuir el tráfico de red en diferentes colas.

Ejemplo:

iptables -t nat -A PREROUTING -p tcp --dport 80 -m cpu --cpu 0 -j REDIRECT --to-port 8080

iptables -t nat -A PREROUTING -p tcp --dport 80 -m cpu --cpu 1 -j REDIRECT --to-port 8081

Disponible desde Linux 2.6.36.

Lista completa de extensiones de iptables.


Pregunta adicional de OP: No entiendo qué coincide con -m. Que cuerda -m tcp coincide con qué? Intenta encontrar la palabra "tcp" ¿dónde?

Respuesta: -mes para hacer coincidir el nombre del módulo y no la cadena. Al usar un módulo en particular, obtienes ciertas opciones para que coincidan. Vea el ejemplo del módulo cpu arriba. Con el -m tcpmódulo se carga tcp. El módulo tcp permite ciertas opciones: --dport, --sport, --tcp-flags, --syn, --tcp-optionusar en las reglas de iptables. Pero el uso -p tcpya habilita el módulo tcp, por eso todavía se pueden usar esas opciones incluso sin usar -m tcp. Espero que aclare toda tu confusión.

Diamante
fuente
muchas gracias, pero ¿me importaría decirme contra qué enfrentaría -m? Por ejemplo, una conexión TCP normal, -m coincidiría con qué cadena? ¿Podría proporcionar un ejemplo de la cadena?
Samul
1
De nada. Como puede ver, la -mopción se usa realmente para cargar extension modulesque proporciona opciones adicionales. Vea mi respuesta actualizada y el enlace, por ejemplo.
Diamante el
¡Gracias! :) Una última reflexión: ¿creo que en mi caso debería mantener el "-m" correcto? Vea esto: iptables -A INPUT -p tcp -m tcp --dport 9191 -j DROP Uso "--dport" y creo que solo es posible usar --ddport si uso -m ¿correcto?
Samul
@ Samul, no realmente. Puedes usarlo sin la -m tcpopción. --dportes parte del módulo tcp y -p tcpsolo funcionará con . Por favor, consulte mi respuesta nuevamente.
Diamante
¡Eres muy amable, gracias! Pero mira: no entiendo lo que hace -m. Que cuerda -m tcp coincide con qué? Intenta encontrar la palabra "tcp" ¿dónde?
Samul