Iptables avec les paramètres -m et -p

8

J'ai cette règle dans mes iptables:

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

Ai-je vraiment besoin de "-m tcp"? J'utilise déjà "-p tcp", dois-je donc utiliser "-m tcp" pour être plus sûr?

Samul
la source

Réponses:

9

Avec l' -p tcpoption, le module tcp est déjà chargé et il est donc quelque peu redondant et pas indispensable d'utiliser l' -m tcpoption et je ne vois aucune raison pour laquelle l'utilisation de cette option rendrait la règle plus sûre.

Veuillez consulter la page de manuel iptables pour une meilleure compréhension et comparaison:

-p, --protocole [!] protocole

Le protocole de la règle ou du paquet à vérifier. Le protocole spécifié peut être l'un des protocoles tcp, udp, icmp ou tous, ou il peut s'agir d'une valeur numérique, représentant l'un de ces protocoles ou un autre. Un nom de protocole de / etc / protocoles est également autorisé. UNE "!" avant que le protocole n'inverse le test. Le nombre zéro est équivalent à tous. Protocole tout correspondra à tous les protocoles et est pris par défaut lorsque cette option est omise.

...

Extensions de correspondance

iptables peut utiliser des modules de correspondance de paquets étendus. Ceux-ci sont chargés de deux manières: implicitement, lorsque -p ou --protocol est spécifié, ou avec les options -m ou --match, suivies du nom du module correspondant; après cela, diverses options de ligne de commande supplémentaires deviennent disponibles, selon le module spécifique. Vous pouvez spécifier plusieurs modules de correspondance étendue sur une seule ligne et vous pouvez utiliser les options -h ou --help une fois le module spécifié pour recevoir de l'aide spécifique à ce module.

Et pour une liste des options disponibles avec -p tcpvoir ici:

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

Comme indiqué ci-dessus, avec l'utilisation de l' -moption, il est possible d'ajouter des modules d'extension et plus d'options de correspondance sont alors disponibles. Par exemple le module cpu :

CPU

[!] - numéro du processeur

Match cpu manipulant ce paquet. les cpus sont numérotés de 0 à NR_CPUS-1 Peut être utilisé en combinaison avec RPS (Remote Packet Steering) ou des cartes réseau à plusieurs files d'attente pour répartir le trafic réseau sur différentes files d'attente.

Exemple:

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 depuis Linux 2.6.36.

Liste complète des extensions iptables.


Question supplémentaire de OP: je ne comprends pas ce que fait -m. Quelle chaîne? -m tcp correspond à quoi? Il essaie de trouver le mot "tcp" où?

Réponse: -mcorrespond au nom du module correspondant et non à la chaîne. En utilisant un module particulier, vous obtenez certaines options pour correspondre. Voir l'exemple de module cpu ci-dessus. Avec le -m tcpmodule tcp est chargé. Le module tcp permet certaines options: --dport, --sport, --tcp-flags, --syn, --tcp-optionà utiliser dans les règles iptables. Mais l'utilisation -p tcpactive déjà le module tcp, c'est pourquoi on peut toujours utiliser ces options même sans les utiliser -m tcp. J'espère que cela effacera toute votre confusion.

diamant
la source
merci beaucoup, mais voudriez-vous me dire à quoi le -m correspondrait? Par exemple, une connexion TCP normale, -m correspondrait à quelle chaîne? Pourriez-vous fournir un exemple de chaîne
Samul
1
Je vous en prie. Comme vous pouvez le voir, l' -moption est en fait utilisée pour charger extension modulesqui fournit des options supplémentaires. Voir ma réponse mise à jour et le lien par exemple.
Diamond
Merci! :) Une dernière pensée: je pense que dans mon cas, je devrais garder le "-m" correct? Voir ceci: iptables -A INPUT -p tcp -m tcp --dport 9191 -j DROP J'utilise "--dport" et je pense qu'il n'est possible d'utiliser --ddport que si j'utilise -m correct?
Samul
@Samul, pas vraiment. Vous pouvez simplement l'utiliser sans l' -m tcpoption. --dportfait partie du module tcp et ne fonctionnera qu'avec -p tcp. Veuillez vous référer à nouveau à ma réponse.
Diamond
Vous êtes très gentil, merci! Mais voyez: je ne comprends pas à quoi correspond -m. Quelle chaîne? -m tcp correspond à quoi? Il essaie de trouver le mot "tcp" où?
Samul