Sécuriser votre réseau avec Iptables - Proxy - NAT - IDS: PARTIE 1

Cet article tente de clarifier un peu le fonctionnement des réseaux et comment transformer notre équipement Linux en un routeur qui assure un peu plus notre réseau, qu'il soit domestique ou même professionnel. Alors passons aux choses sérieuses:

Ce contenu est basé sur le livre "Linux - Administration système et fonctionnement des services réseau" - Sébastien BOBILLIER

Routage et filtrage

Pour parler et comprendre le routage, nous pouvons d'abord définir quelle est la fonction du routeur? Pour cela, nous pouvons dire qu'un routeur, en plus de créer un réseau et de permettre la connexion avec d'autres équipements (sachant que nous pouvons le faire avec un AP, un Switch, un Hub ou autres) a la capacité de connecter deux réseaux différents entre eux.

toupie

Comme nous pouvons le voir sur l'image, il existe un réseau local "10.0.1.0" qui est créé par le routeur et atteint l'une de ses deux interfaces. Ensuite, le routeur, sur son autre interface, a un autre réseau, avec son IP publique avec laquelle il peut se connecter à Internet. La fonction de routage est essentiellement de servir d'intermédiaire entre ces deux réseaux pour qu'ils puissent communiquer.

Linux comme routeur.

Naturellement, le noyau Linux a déjà la capacité de faire du «transfert», mais par défaut il est désactivé, donc si nous voulons que notre Linux fasse ce travail, nous devons aller au fichier.

/proc/sys/net/ipv4/ip_forward

Là, nous trouverons que c'est un fichier qui ne contient qu'un zéro "0", ce que nous devons faire est de le changer en un "1" pour activer ce comportement. Ceci est malheureusement supprimé lorsque nous redémarrons l'ordinateur, pour le laisser activé par défaut, nous devons utiliser la commande:

sysctl net.ipv4.ip_forward=1

Ou éditez-le directement dans le fichier /etc/sysctl.conf. Selon la distribution, cette configuration peut également être dans un fichier dans  /etc/sysctl.d/.

Par défaut, notre Linux doit avoir une table de routage, qui est généralement la configuration de notre réseau LAN et la connexion au routeur. Si nous voulons voir ce routage, nous pouvons utiliser deux commandes:

route -n

o

netstat -nr

Les deux commandes doivent renvoyer la même chose.

Capture d'écran du 2014-09-30 18:23:06

En général, cette configuration est suffisante pour que votre Linux serve de passerelle et que d'autres ordinateurs puissent naviguer dans notre ordinateur. Maintenant, si nous voulons que notre Linux connecte deux ou plusieurs réseaux, qu'ils soient locaux ou non, par exemple, nous pouvons utiliser des routes statiques.

Supposons que mon Linux ait deux interfaces réseau, la première a une connexion Internet dont le réseau est 172.26.0.0 et la seconde (10.0.0.0) a des ordinateurs d'un autre réseau local. Si nous voulons acheminer les paquets vers cet autre réseau, nous pouvons utiliser:

route add -net 10.0.0.0 netmask 255.0.0.0 gw 172.26.0.8

En général, c'est:

route add -net REDDESTINO netmask MASCARA gw IPDELLINUX

si on donne itinéraire -n que ce réseau existe ou non, ce routage sera corrigé dans notre tableau.

Capture d'écran du 2014-09-30 18:31:35

Si nous voulons éliminer ledit routage, nous pouvons utiliser

route del -net 10.0.0.0 netmask 255.0.0.0

iptables.

Fondamentalement, iptables est utilisé pour filtrer les paquets, sortants, entrants ou autres, ce qui en fait un excellent outil pour gérer notre trafic réseau. Eh bien, iptables, tout comme cela nous permet de filtrer le trafic du même ordinateur, cela nous permet également de filtrer le trafic qui le traverse. (Expéditeur). Iptables peut être divisé en tables, chaînes et actions.

  • Planches:  en gros, il peut y avoir deux tables, filtre, pour filtrer les paquets et  nat pour traduire des adresses, c'est-à-dire pour passer d'un réseau à un autre.
  • Chaînes: La chaîne fait référence au type de trafic que nous voulons filtrer ou nager, c'est-à-dire à quel trafic allons-nous appliquer les tableaux? et ils peuvent être:  CONTRIBUTION: Trafic entrant, SORTIE: trafic sortant ou VERS L'AVANT: Le trafic qui le traverse, mais ce n'est pas une bonne connexion.
  • Il peut également apparaître POSTROUTAGE, qui est utilisé pour traiter le paquet d'une certaine manière après son acheminement.
  • Actions: Les actions sont essentiellement l'action à effectuer avec la chaîne. Cette action peut être LAISSEZ TOMBER, qui détruit simplement ce trafic ou ACCEPTER. qui permet au trafic de faire cette action.

Les règles IPTABLES sont enregistrées et exécutées dans l'ordre dans lequel elles ont été créées, et si une règle supprime une règle précédente, la dernière règle de l'ordre est toujours appliquée.

Politiques de pare-feu.

En général, les pare-feu fonctionnent naturellement de deux manières:

  1. Autoriser tout le trafic sauf, ou
  2. N'autorisez aucun trafic sauf ...

Pour appliquer des politiques, utilisez IPTABLES - CHAÎNE DE P ACTION

Où la chaîne représente le type de trafic (INPUT, OUTPUT, FORWARD, POSTROUTING ...) et l'action est DROP OR ACCEPT.

Regardons un exemple.

Capture d'écran du 2014-09-30 18:53:23

Ici, nous voyons qu'au début j'étais capable de cingler, puis j'ai dit à IPTABLES que tout le trafic OUTPUT était DROP ou non autorisé. Ensuite, j'ai dit à IPTABLES de l'accepter.

Si nous voulons construire un pare-feu à partir de zéro, nous devons toujours appliquer les règles de (Ne pas autoriser de trafic sauf ... Pour cela, nous appliquons les règles

iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP
Si ces politiques s'appliquent, ils n'auront aucun type de connexion
.

Pour retourner, nous écrivons la même chose et remplaçons DROP par ACCEPT.

À ce stade, puisque tout le trafic est refusé, nous commençons à dire à nos IPTABLES quel trafic il peut avoir.

La syntaxe est:

iptables -A cadena -s ip_orgigen -d ip_destino -p protocolo --dport puerto -j acción

Où:

Chaîne = INPUT, OUTPUT ou FORWARD

origin_ip = Origine des paquets, cela peut être une seule IP ou un réseau et dans ce cas il faut spécifier le masque).

IP de destination = où vont les paquets. cela peut être une seule IP ou un réseau et dans ce cas il faut spécifier le masque).

protocole = indique le protocole utilisé par les paquets (icmp, tcp, udp ...)

port = port de destination du trafic.

action = DROP ou ACCEPTER.

exemple:

Capture d'écran du 2014-09-30 19:26:41

TOUTES les politiques restreintes s'appliquent.

Capture d'écran du 2014-09-30 19:27:42

Ensuite, nous ajoutons les règles pour pouvoir avoir du trafic via le port 80 HTTP et 443 HTTPS, avec le protocole TCP. Puis le port 53 Il est appliqué au client DNS pour résoudre les domaines, sinon vous ne naviguerez pas. Cela fonctionne avec le protocole udp.

La ligne:

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

Cela est dû aux raisons suivantes: Lorsque vous effectuez une requête HTTP par exemple, vous vous connectez au port 80 du serveur, mais le serveur pour renvoyer les informations doit se connecter avec vous via n'importe quel port. (Généralement supérieur à 1024).

Comme tous nos ports sont fermés, cela ne sera possible que si nous ouvrons tous les ports supérieurs à 1024 (mauvaise idée). Cela signifie que tout le trafic entrant qui provient d'une connexion que j'ai établie moi-même est accepté. Je veux dire, une connexion que j'ai en principe commencée.

Lorsque vous mettez OUTPUT dans les règles, cela s'applique uniquement à l'équipement en question, si nous utilisons notre équipement comme un routeur pour permettre ces connexions, nous devons changer OUTPUT en FORWARD. Puisque le trafic passe par l'ordinateur mais n'est pas initié par celui-ci
Toutes ces règles sont supprimées après le redémarrage, vous devez donc créer des scripts pour qu'ils démarrent par défaut. Mais nous verrons cela dans le prochain

J'espère que vous avez aimé cette information. Dans la prochaine, je parlerai de NAT, Proxy et scripts pour le Firewal.


Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont marqués avec *

*

*

  1. Responsable des données: Miguel Ángel Gatón
  2. Finalité des données: Contrôle du SPAM, gestion des commentaires.
  3. Légitimation: votre consentement
  4. Communication des données: Les données ne seront pas communiquées à des tiers sauf obligation légale.
  5. Stockage des données: base de données hébergée par Occentus Networks (EU)
  6. Droits: à tout moment, vous pouvez limiter, récupérer et supprimer vos informations.

  1.   Rogelio pinto dit

    C'est la base que de nombreux entrepreneurs utilisent pour fabriquer leurs propres pare-feu, c'est pourquoi il existe tant de marques de pare-feu avec Linux embarqué sur le marché, certaines bonnes et d'autres moins.

  2.   Heber dit

    Excellent article. J'attends avec impatience la deuxième partie.

  3.   Milton dit

    Très bonne explication, cela m'a aidé à comprendre le proxy de mon travail. Je vous remercie

  4.   faustod dit

    Bonjour Jlcmux,

    Excellent, j'ai vraiment aimé, quand l'autre partie sera-t-elle disponible?

    Salutations et merci pour le partage

    1.    @Jlcmux dit

      Merci pour le commentaire.

      J'ai envoyé l'autre partie hier, dans le courant de la journée, je pense qu'ils le publieront.

      Salutations.

  5.   Israël dit

    Très bon ami de l'article @ Jlcmux, j'ai vraiment appris avec lui puisqu'il a clarifié certains doutes que j'avais depuis un certain temps, d'ailleurs ça ne vous dérangerait pas de partager le livre de la source de l'article, celui de Sébastien BOBILLIER, ben slau2s et maintenant à voir la 2ème partie, salu2s.

    1.    @Jlcmux dit

      Bonjour Merci d'avoir commenté Israël.

      Il s'avère que j'ai le livre sous forme physique. Mais j'ai trouvé ce lien sur Google Livres. http://books.google.com.co/books?id=zxASM3ii4GYC&pg=PA356&lpg=PA356&dq=S%C3%A9bastien+BOBILLIER+Linux+%E2%80%93+Administraci%C3%B3n+del+sistema+y+explotaci%C3%B3n+de+los+servicios+de+red#v=onepage&q=

      Je pense que c'est complet.

  6.   Ariel dit

    Très bon article, j'ajoute une question: quel serait l'avantage d'utiliser linux comme routeur, s'il y en a un, par rapport à un matériel qui lui est dédié? Ou est-ce juste pour faire de l'exercice? Je sais qu'il existe des distributions dédiées mais je ne sais pas si elles doivent récupérer de vieux PC ou fournir plus de flexibilité dans la configuration.

    1.    @Jlcmux dit

      Eh bien, je pense que les avantages et les inconvénients dépendent du scénario dans lequel vous allez mettre en œuvre cela. Pourquoi n'allez-vous pas acheter un UTM ou quelque chose du genre pour votre maison? Et peut-être pour une petite entreprise qui ne peut pas non plus se le permettre. C'est aussi un bon exercice, car cela vous aide à comprendre toute la logique de cela et vous pouvez mieux configurer un FWall dédié. En plus de cela, presque tous ces appareils sont vraiment Linux embarqué.

      Salutations.

  7.   Ariel dit

    Bonjour, une question, pouvez-vous générer une interface "artificielle" sous Linux pour un routage similaire entre les réseaux? (style de traceur de paquets) pour travailler avec des machines virtuelles? par exemple si j'ai eth0 (parce que j'ai une seule carte bien sûr) puis-je créer eth1 pour créer un autre réseau? Très bon tuteur!

    1.    animé dit

      Sous Linux, vous pouvez bien sûr créer des interfaces virtuelles. Si vous avez eth0, vous pouvez avoir eth0: 0, eth0: 1, eth0: 2 ... etc

  8.   chinois dit

    Tellement bien, merci pour le partage