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

Dans le poster antérieure Nous avons vu la configuration d'IPTables pour fonctionner comme un pare-feu. Nous pouvons maintenant voir comment créer ces scripts pour que les règles soient exécutées automatiquement au démarrage du système, et aussi comment éliminer ou arrêter ces règles pendant un instant.

Avant de faire le script et de vous montrer à quoi il ressemble, parlons un peu de NAT et du concept de ce que nous voulons faire avec cet équipement.

NAT et contexte de l'exemple.

Quand on parle de NAT, on peut confondre cela avec le routage, puisque les deux sont chargés de connecter deux réseaux différents entre eux. La vraie différence est que le routage est appliqué pour aller d'un réseau local à un autre et que cet autre réseau peut se connecter à un routeur et sortir sur Internet.

Alors que lorsque nous parlons de NAT, nous parlons de routage de paquets d'un réseau local ou privé vers un réseau public ou Internet. Il le fait en masquant les paquets en mettant l'adresse IP publique avec laquelle il va sur Internet. Autrement dit, nous n'avons pas besoin d'un routeur, car l'adresse IP publique appartient directement à l'ordinateur GNU / Linux.

nat

Nous travaillerons cela avec le slogan que nous utilisons notre Linux comme routeur / pare-feu pour accéder à Internet à partir d'un réseau local. Mais ici deux scénarios peuvent apparaître.

  • Que notre Linux se situe entre le routeur du fournisseur de services et le réseau local.

Dans ce cas, entre le routeur et notre Linux, il y aurait un réseau, et entre le Linux et le réseau local, il y aurait un autre réseau différent. Cela signifie que notre routeur n'aurait pas à faire de NAT en tant que tel, avec un simple routage du trafic comme expliqué dans poster antérieure serait bien.

  • Que notre Linux dispose d'une interface connectée au réseau local et que via l'autre interface, il reçoit directement une adresse IP publique avec laquelle il navigue.

Cela signifie que notre Linux doit faire du NAT pour que les paquets puissent atteindre Internet.

Pour les besoins de ce petit laboratoire alors, nous dirons que notre Linux reçoit directement une IP publique et pourra ainsi tester les effets du NAT.

Pour faire du NAT, nous utilisons ensuite la syntaxe

 iptables -t nat -A POSTROUTING -O eth1 -j MASQUERADE

Où eth1 est l'interface où nous recevons l'adresse IP publique, c'est-à-dire où nous allons sur Internet.

MASQUERADE est utilisé lorsque l'ip est public mais il peut varier dans le temps (dynamique). Sinon, nous pouvons utiliser SNAT - to-source ip

Création d'un script iptables

Supposons alors que: 172.26.0.0 est notre réseau local et 81.2.3.4 est l'adresse IP publique avec laquelle nous allons sur Internet. (c'est une adresse IP statique). J'ai les interfaces eth0 (réseau local)

eth1 (réseau public).

Il consiste essentiellement à créer un script qui peut être appelé depuis /etc/init.d/firestop (par exemple). et à partir de ce script, nous pouvons démarrer, arrêter ou vérifier l'état de notre configuration, comme nous le faisons avec n'importe quel démon système.

Supposons que mes règles IPTABLES SONT:

#! / bin / bash # Pare-feu de ma maison. # Nom de fichier / etc / firewall_on # Par Jlcmux Twitter: @Jlcmux # # Politique de base. iptables -P INPOUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP # #NAT pour partager Internet de eth0 à eth1 iptables -t nat -A POSTROUTING -O eth1 -j SNAT --to-source 81.2.3.4
# # Autoriser les connexions entrantes démarrées par mon iptables -A FORWARD -m state --state ESTABLISHED, RELATED -j ACCEPT # # Trafic sortant autorisé iptables -A FORWARD -i eth0 -o eth1 -p tcp --dport 80 -j ACCEPTER iptables -A FORWARD -i eth0 -o eth1 -p tcp --dport 443 -j ACCEPTER iptables -A FORWARD -i eth0 -o eth1 -p udp --dport 53 -j ACCEPTER
N'oublions pas de donner des autorisations d'exécution

Explication:

Le script effectue essentiellement les opérations suivantes:

  1. Limitez d'abord toute navigation, connexions et trafic. (Politiques de pare-feu de base)
  2. Créez ensuite le NAT avec la destination eth1. indiquant que nous avons une adresse IP publique statique « 81.2.3.4 »
  3. Il ouvre les ports nécessaires pour recevoir les paquets de connexions initiées par moi.
  4. Accepte le trafic sortant HTTP, HTTPS et DNS.
Les règles sont destinées au trafic FORWARD parce que nous utilisons notre Linux comme un routeur, donc les politiques sont utilisées pour le trafic qui passe par Linux, c'est-à-dire qu'il agit comme un intermédiaire. Cela signifie que notre Linux ne peut pas vraiment naviguer ou recevoir directement des données. Cela ne s'applique qu'aux ordinateurs qui y sont connectés, mais pas à lui-même

Si nous voulons utiliser notre équipement pour naviguer, nous devons répéter les lignes et changer FORWARD en INPUT ou OUTPUT selon le cas.

Annuler le script.

Nous allons maintenant créer un script qui remplace tout ce qui précède et laisse l'ordinateur propre de tout cela. (À des fins de test ou nous voulons simplement désactiver le pare-feu).

#! / bin / bash # Pare-feu de ma maison. # Nom de fichier / etc / firewall_off # Par Jlcmux Twitter: @Jlcmux # #Suppression des règles iptables -F # #Application des politiques par défaut (tout le trafic accepté) iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT iptables -P FORWARD ACCEPT

Automatiser.

Maintenant, nous devons créer le script à l'intérieur /etc/init.d/ et le service démarre automatiquement et nous pouvons le gérer de manière plus confortable.

#! / bin / bash # Pare-feu de ma maison. # Nom du fichier /etc/init.d/ firewall # Par Jlcmux Twitter: @Jlcmux case $ 1 au début) / etc / firewall_on ;; stop) / etc / firewall_off ;; status) iptables -L ;; *) echo "Syntaxe incorrecte. Valide = /etc/init.d/ firewall start | stop | status ;; esac

Explication:

Ce dernier script que nous avons mis /etc/init.d/ avec le nom pare-feu. Donc, si nous voulons gérer le pare-feu, nous pouvons utiliser la commande /etc/init.d/ pare-feu démarre. De la même manière, nous pouvons l'arrêter ou voir l'état.

Maintenant, nous allons éditer le fichier /etc/rc.local et nous mettons quelque chose comme: /etc/init.d/ firewall start pour commencer avec le système.

Aussi. Ceci est la deuxième partie. J'espère que cela vous apportera quelque chose. Dans le suivant, nous voyons Proxy et IDS.


7 commentaires, laissez le vôtre

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.   chasseur dit

    Si vous utilisez Debian, il y a un paquet dans le dépôt (iptables-persistent) qui fait exactement cela, il vide les règles actuelles dans /etc/iptables/rules.v4 ou v6 en fonction de ce que vous utilisez, puis vous les applique lorsque vous soulevez le système.

  2.   OCZ dit

    En pratique, pour nettoyer la configuration d'un pare-feu iptables conventionnel (et utiliser NAT ne le serait pas de mon point de vue), dans la plupart des cas, un vidage de règle et une réinitialisation des politiques par défaut sur ACCEPT suffiraient.
    Mais en théorie, et pour autant que je sache, en plus de cela, vous devez également effacer les chaînes non par défaut et réinitialiser les compteurs. Actions à réaliser en gardant à l'esprit qu'en plus de "filter" il y a d'autres tables, (il est obligatoire de lire le fichier "/ proc / net / ip_tables_names" pour cela).

    À propos, l'orthodoxie dit qu'un pare-feu doit déjà être en place avant que le réseau ne le soit. Je ne sais pas comment cela est réalisé sur les autres systèmes Linux, mais sur les systèmes Debian, le script pourrait être adapté et placé dans le répertoire "/etc/network/if-pre-up.d/".

    Bon pare-feu tout le monde. 😉

  3.   Nautile dit

    Bonjour, le message est très bon. J'ai lu les 2 volumes entiers.

    En attendant le prochain 🙂

  4.   anonyme dit

    Une question de mon ignorance, nous continuons avec iptables, mais pour plusieurs versions de noyau que nous avons nftables, je suis déjà en train de tester, les questions sont, est-ce que nftables est quelque chose de bêta par rapport à iptables? Iptables continuera-t-il à être utilisé plus longtemps?

    Merci.

    1.    Yukiteru dit

      nftables comprend toutes les fonctionnalités d'iptables, ip6tables, arptables et ebtables, tous utilisant une nouvelle infrastructure à la fois dans l'espace noyau et dans l'espace utilisateur, ce qui garantit de meilleures performances et des fonctionnalités améliorées. nftables remplacera iptables et tous les autres outils mentionnés mais pas pour le moment, du moins jusqu'à ce qu'il y ait une utilisation plus répandue de nftables en tant que tel.

  5.   Alexander dit

    très bon post, je voulais en savoir plus car il est très bien expliqué .. salutations merci grande contribution

  6.   Avra dit

    Salut! Très bon à la fois post.
    En guise de contribution, vous pourriez ajouter à la fin de cette partie:

    "Maintenant, nous allons éditer le fichier /etc/rc.local et mettre quelque chose comme: /etc/init.d/firestop start pour qu'il démarre avec le système."

    Ajoutez ceci à rc.local.

    if [-x /etc/init.d/ pare-feu]; puis
    /etc/init.d/ firewall start
    fi

    Ce qui signifie que si le "pare-feu" a des autorisations d'exécution, exécutez-le, sinon.
    Si vous voulez que le "pare-feu" ne démarre pas, il vous suffit de supprimer les autorisations.

    Par exemple: chmod + x /etc/init.d/ firewall
    pour le faire fonctionner à chaque démarrage ou ...
    chmod -x /etc/init.d/ pare-feu
    pour le désactiver complètement.

    Salutations!