[LINUX] Iptables appris de la documentation

J'ai été frustré en essayant de comprendre iptables plusieurs fois auparavant. Je ne comprends pas toujours les mots.

―― Qu'est-ce qu'une table? ―― Qu'est-ce qu'une chaîne? ―― Qu'est-ce qu'une cible?

Il existe de nombreuses explications sur Internet, mais je n'ai pas pu m'en empêcher. Donc, cette fois, je voudrais lire et comprendre sérieusement la documentation iptables.

2019.12.25 Addendum En rassemblant des informations pour comprendre iptables, j'ai trouvé un excellent site de traduction en japonais de référence. Nous vous recommandons de vous référer à ce qui suit pour une connaissance précise. Traduction japonaise du tutoriel Iptables Pour un aperçu des tables et des chaînes, consultez le Chapitre 6. Je pense.

contour

  1. Tout d'abord, lisez les manuels iptables DSPRIPTION, TAGETS, TABLES pour apprendre et organiser les connaissances de base.
  2. Après cela, lisez «Exposer les iptables les plus puissants de mon histoire» de @ suin.
$ man iptables

Ce qui suit est un extrait du manuel iptables 1.6.1.

DESCRIPTION

Vous pouvez voir ce qui suit en lisant la SEQ.

Iptables and ip6tables are used to set up, maintain, and inspect the tables of IPv4 and IPv6 packet filter rules in the Linux kernel. Several different tables may be defined. Each table contains a number of built-in chains and may also contain user-defined chains.

Each chain is a list of rules which can match a set of packets. Each rule specifies what to do with a packet that matches. This is called a `target', which may be a jump to a user-defined chain in the same table.

Résumé

  1. ** Table ** fait référence à la table de filtrage de paquets qui existe dans le noyau Linux Il existe plusieurs tables et chaque table contient une chaîne
  2. ** Chain ** est une liste de règles pour faire correspondre les paquets
  3. Que fait la ** cible ** aux paquets correspondants?

TARGETS

Vous pouvez découvrir ce qui suit en lisant TARGETS.

A firewall rule specifies criteria for a packet and a target. If the packet does not match, the next rule in the chain is examined; if it does match, then the next rule is specified by the value of the target, which can be the name of a user-defined chain, one of the targets described in iptables-extensions(8), or one of the special values ACCEPT, DROP or RETURN.

ACCEPT means to let the packet through. DROP means to drop the packet on the floor. RETURN means stop traversing this chain and resume at the next rule in the previous (calling) chain. If the end of a built-in chain is reached or a rule in a built-in chain with target RETURN is matched, the target specified by the chain policy determines the fate of the packet.

--ACCEPT passe le paquet --DROP laisse tomber le paquet au sol, c'est-à-dire le rejette --RETURN arrête de scanner la chaîne et reprend avec la règle suivante dans la chaîne d'appel

Résumé

TABLES

Vous pouvez voir ce qui suit en lisant TABLES.

There are currently five independent tables (which tables are present at any time depends on the kernel configuration options and which modules are present). The tables are as follows

--Il existe actuellement 5 tables indépendantes, selon la configuration du noyau.

Seules la table de filtrage et la table nat sont traduites ici.

filter: This is the default table (if no -t option is passed). It contains the built-in chains INPUT (for packets destined to local sockets), FORWARD (for packets being routed through the box), and OUTPUT (for locally-generated packets).

--La table des filtres est la table par défaut si vous n'utilisez pas l'option -t --Ce tableau contient les chaînes intégrées suivantes --INPUT (pour les paquets destinés aux sockets locaux) --FORWARD (pour les paquets acheminés pour passer) --OUTPUT (pour les paquets générés localement)

nat: This table is consulted when a packet that creates a new connection is encountered. It consists of four built-ins: PREROUTING (for altering packets as soon as they come in), INPUT (for altering packets destined for local sockets), OUTPUT (for altering locally-generated packets before routing), and POSTROUTING (for altering packets as they are about to go out). IPv6 NAT support is available since kernel 3.7.

Illustration du tableau des filtres

Faisons un diagramme de la compréhension jusqu'à présent.

Screenshot from 2019-12-24 11-16-04.png

--Il existe une table de filtrage, qui contient trois chaînes intégrées et une chaîne définie par l'utilisateur.

Lire "Exposer les iptables les plus puissants de mon histoire"

Je vais lire un extrait avec les connaissances que j'ai acquises jusqu'à présent.

Décision politique

 iptables -P INPUT DROP # All DROP. C'est une bonne idée de fermer tous les trous avant d'ouvrir les ports nécessaires.
iptables -P OUTPUT  ACCEPT
iptables -P FORWARD DROP

-P, --policy chain target

J'ai une politique définie pour la chaîne intégrée. Il détermine le traitement final si le paquet ne correspond pas à la liste de règles de la chaîne.

Si le paquet ciblé par les chaînes INPUT et FORWARD (la liste de règles incluse dans) ne correspond à aucune des règles, il est dit DROP.

Tout d'abord, définissez cette stratégie, puis décidez quels paquets autoriser en ajoutant une règle avec une cible ACCEPT. Je pense que c'est la raison pour laquelle cela s'appelle une liste blanche.

Autoriser les hôtes de confiance

#lo représente le bouclage local et pointe vers son propre hôte
iptables -A INPUT -i lo -j ACCEPT # SELF -> SELF

-A, --append chain rule-specification -i, --in-interface name -j, --jump target

J'ajoute une règle à la chaîne INPUT. Il correspond au paquet qui est venu à lo et ACCEPTER.

Contre-mesures d'attaque: analyse furtive

iptables -N STEALTH_SCAN # "STEALTH_SCAN"Faire une chaîne avec le nom
iptables -A STEALTH_SCAN -j LOG --log-prefix "stealth_scan_attack: "
iptables -A STEALTH_SCAN -j DROP

-N, --new-chain chain

Une chaîne définie par l'utilisateur appelée STEALTH_SCAN est créée et les règles de saut vers LOG et DROP sont ajoutées à cette chaîne.

La cible LOG ne se ferme pas après le traitement, mais traite la règle suivante:

This is a "non-terminating target", i.e. rule traversal continues at the next rule.

Les paramètres ci-dessus enregistrent une règle pour laisser un journal et une règle pour rejeter un paquet dans la chaîne STELALTH_SCAN. Si vous sautez sur cette chaîne, elle se connectera dans l'ordre et le paquet sera abandonné.

Et les paramètres pour sauter à cette chaîne sont les suivants.

#Paquets qui ressemblent à des analyses furtives"STEALTH_SCAN"Aller à la chaîne
iptables -A INPUT -p tcp --tcp-flags SYN,ACK SYN,ACK -m state --state NEW -j STEALTH_SCAN
...#La suite est omise

Une règle a été ajoutée à INPUT qui correspond aux paquets qui semblent être des analyses furtives et saute à la chaîne STELALTH_SCAN.

-j Bien que ACCEPT etc. soit un saut, cela semblait étrange au début, En traitant ACCEPT, DROP et RETURN comme des chaînes spéciales, le sentiment d'étrangeté a disparu.

Résumé

À ce stade, vous pouvez lire le plan. Si vous apprenez l'option pour faire correspondre les paquets, vous pouvez comprendre "Exposer les iptables les plus puissants de mon histoire" pour le moment.

Cependant, "Exposer les iptables les plus puissants de mon histoire" est uniquement destiné à l'enregistrement des règles dans la chaîne INPUT, donc Je ne comprends pas FORWARD et OUTPUT. La prochaine fois, j'aimerais creuser un peu plus ici. ← J'ai écrit ce qui suit.

2019.12.25 Addendum En rassemblant des informations pour comprendre iptables, j'ai trouvé un excellent site de traduction en japonais de référence. Nous vous recommandons de vous référer à ce qui suit pour une connaissance précise. Traduction japonaise du tutoriel Iptables Pour un aperçu des tables et des chaînes, consultez le Chapitre 6. Je pense.

J'espère que cet article vous a aidé à comprendre. ** "J'aime" Merci. **: clin d'œil:

Recommended Posts

Iptables appris de la documentation
Deep Python appris de DEAP
Programmation tirée des livres le 9 mai
Programmation tirée des livres du 11 mai