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?
Con la -p tcp
opción, el módulo tcp ya está cargado y, por lo tanto, es algo redundante y no es obligatorio usar la -m tcp
opció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 tcp
ver aquí:
http://ipset.netfilter.org/iptables-extensions.man.html#lbCF
Como se indicó anteriormente, con el uso de la -m
opció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: -m
es 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 tcp
módulo se carga tcp. El módulo tcp permite ciertas opciones: --dport, --sport, --tcp-flags, --syn, --tcp-option
usar en las reglas de iptables. Pero el uso -p tcp
ya 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.
-m
opción se usa realmente para cargarextension modules
que proporciona opciones adicionales. Vea mi respuesta actualizada y el enlace, por ejemplo.-m tcp
opción.--dport
es parte del módulo tcp y-p tcp
solo funcionará con . Por favor, consulte mi respuesta nuevamente.