25 Règles de pare-feu iptable utiles que chaque administrateur Linux devrait connaître

25 Règles de pare-feu iptable utiles que chaque administrateur Linux devrait connaître

La gestion du trafic réseau est l'un des emplois les plus difficiles dont les administrateurs système doivent traiter. Il doit configurer le pare-feu de manière à répondre aux exigences du système et des utilisateurs pour les connexions entrantes et sortantes, sans laisser le système vulnérable aux attaques.

25 Règles de pare-feu iptables pour Linux

C'est ici que iptables être utile. Iptables est un pare-feu de ligne de commande Linux qui permet aux administrateurs système de gérer le trafic entrant et sortant via un ensemble de règles de table configurables.

Iptables Utilise un ensemble de tables qui ont des chaînes contenant un ensemble de règles intégrées ou définies par l'utilisateur. Grâce à eux, un administrateur système peut filtrer correctement le trafic réseau de son système.

Selon Iptables Manual, il existe actuellement 3 types de tables:

    1. FILTRE - Il s'agit du tableau par défaut, qui contient les chaînes intégrées pour:
      1. SAISIR  - packages destinés aux prises locales
      2. AVANT - paquets acheminés via le système
      3. SORTIR - paquets générés localement
    2. Nat - Une table qui est consultée lorsqu'un paquet essaie de créer une nouvelle connexion. Il a l'intégration suivante:
      1. Prurotinage - utilisé pour modifier un paquet dès qu'il est reçu
      2. SORTIR - Utilisé pour modifier les paquets générés localement
      3. Postal - utilisé pour modifier les paquets car ils sont sur le point de sortir
    3. MUTILER - Ce tableau est utilisé pour la modification des paquets. Jusqu'à la version du noyau 2.4 Cette table n'avait que deux chaînes, mais ils ont maintenant 5 ans:
      1. Prurotinage - pour modifier les connexions entrantes
      2. SORTIR - pour modifier les paquets générés localement
      3. SAISIR - pour les paquets entrants
      4. Postal - pour modifier les paquets car ils sont sur le point de sortir
      5. AVANT - Pour les paquets acheminés dans la boîte

Dans cet article, vous verrez des commandes utiles qui vous aideront à gérer votre pare-feu Linux à travers des iptables. Aux fins de cet article, je vais commencer par des commandes plus simples et aller plus complexe jusqu'à la fin.

1. Démarrage / arrêt / redémarrer le pare-feu iptables

Tout d'abord, vous devez savoir gérer le service iptables dans différentes distributions Linux. C'est assez facile:

Sur les distributions Linux basées sur Systemd

------------ Sur Cent / Rhel 7 et Fedora 22+ ------------ # systemctl start iptables # systemctl stop iptables # systemctl redémarrage iptables 

Sur les distributions Linux basées sur Sysvinit

------------ Sur Cent / Rhel 6/5 et Fedora ------------ # / etc / init.d / iptables start # / etc / init.d / iptables stop # / etc / init.d / iptables redémarrer 

2. Vérifiez toutes les règles de pare-feu iptables

Si vous souhaitez vérifier vos règles existantes, utilisez la commande suivante:

# iptables -l -n -v 

Cela devrait renvoyer la sortie similaire à celle ci-dessous:

Entrée de la chaîne (politique accepte 1129k paquets, 415m octets) pkts octets cible prot opt ​​dans la destination de la source 0 0 accepter TCP - lxcbr0 * 0.0.0.0/0 0.0.0.0/0 TCP DPT: 53 0 0 accepter UDP - LXCBR0 * 0.0.0.0/0 0.0.0.0/0 UDP DPT: 53 0 0 Accepter TCP - LXCBR0 * 0.0.0.0/0 0.0.0.0/0 TCP DPT: 67 0 0 Accepter UDP - LXCBR0 * 0.0.0.0/0 0.0.0.0/0 UDP DPT: 67
Chaîne en avant (politique accepte 0 paquets, 0 octets) pkts octets cible prot opt ​​dans la destination de la source 0 0 accepter tout - * lxcbr0 0.0.0.0/0 0.0.0.0/0 0 0 Accepter tout - lxcbr0 * 0.0.0.0/0 0.0.0.0/0
Sortie de la chaîne (politique accepte 354k paquets, 185m octets) PKTS octets cible prot opt ​​dans la destination de la source

Si vous préférez vérifier les règles d'un tableau spécifique, vous pouvez utiliser le -t Option suivie du tableau que vous souhaitez vérifier. Par exemple, pour vérifier les règles dans le Nat table, vous pouvez utiliser:

# iptables -t nat -l -v -n 

3. Bloquer l'adresse IP spécifique dans le pare-feu iptables

Si vous trouvez une activité inhabituelle ou abusive à partir d'une adresse IP, vous pouvez bloquer cette adresse IP avec la règle suivante:

# iptables -a entrée -s xxx.xxx.xxx.xxx -j Drop 

Où vous devez changer "xxx.xxx.xxx.xxx " avec l'adresse IP réelle. Soyez très prudent lorsque vous exécutez cette commande car vous pouvez bloquer accidentellement votre propre adresse IP. Le -UN L'option ajoute la règle à la fin de la chaîne sélectionnée.

Au cas où vous voudrez seulement bloquer TCP Trafic à partir de cette adresse IP, vous pouvez utiliser le -p option qui spécifie le protocole. De cette façon, la commande ressemblera à ceci:

# iptables -a entrée -p tcp -s xxx.xxx.xxx.xxx -j Drop 

4. Débloquer l'adresse IP dans le pare-feu iptables

Si vous avez décidé que vous ne souhaitez plus bloquer les demandes de l'adresse IP spécifique, vous pouvez supprimer la règle de blocage avec la commande suivante:

# iptables -d entrée -s xxx.xxx.xxx.xxx -j Drop 

Le -D L'option supprime une ou plusieurs règles de la chaîne sélectionnée. Si vous préférez utiliser l'option plus longue que vous pouvez utiliser --supprimer.

5. Bloquer le port spécifique sur le pare-feu iptables

Parfois, vous pouvez bloquer les connexions entrantes ou sortantes sur un port spécifique. C'est une bonne mesure de sécurité et vous devriez vraiment y réfléchir lorsque vous configurez votre pare-feu.

Pour bloquer les connexions sortantes sur une utilisation de port spécifique:

# iptables -a output -p tcp --dport xxx -j Drop 

Pour permettre une utilisation des connexions entrantes:

# iptables -a entrée -p tcp --dport xxx -j accepter 

Dans les deux exemples, changez "xxx" avec le port réel que vous souhaitez autoriser. Si vous voulez bloquer UDP trafic au lieu de TCP, changer simplement "TCP" avec "UDP" Dans la règle iptables ci-dessus.

6. Autoriser plusieurs ports sur iptables à l'aide de multiport

Vous pouvez autoriser plusieurs ports à la fois, en utilisant multiport, Vous trouverez ci-dessous une telle règle pour les connexions entrantes et sortantes:

# iptables -a entrée -p TCP -M Multiport - Dports 22,80,443 -J accepter # iptables -a output -p TCP -M Multiport - Sports 22,80,443 -j accepter 

7. Autoriser une plage de réseau spécifique sur un port particulier sur iptables

Vous pouvez limiter certaines connexions sur un port spécifique à un réseau donné. Disons que vous souhaitez autoriser les connexions sortantes sur le port 22 Pour réseauter 192.168.100.0/24.

Vous pouvez le faire avec cette commande:

# iptables -a sortie -p tcp -d 192.168.100.0/24 --DPORT 22 -J accepter 

8. Bloquer Facebook sur le pare-feu iptables

Certains employeurs aiment bloquer l'accès à Facebook à leurs employés. Vous trouverez ci-dessous un exemple comment bloquer le trafic vers Facebook.

Note: Si vous êtes un administrateur système et que vous devez appliquer ces règles, gardez à l'esprit que vos collègues peuvent cesser de vous parler :)

Trouvez d'abord les adresses IP utilisées par Facebook:

# hôte Facebook.com Facebook.com a l'adresse 66.220.156.68 
# whois 66.220.156.68 | grep cidr cidr: 66.220.144.0/20 

Vous pouvez ensuite bloquer ce réseau Facebook avec:

# iptables -a sortie -p tcp -d 66.220.144.0/20 -J Drop 

Gardez à l'esprit que la gamme d'adresses IP utilisée par Facebook peut varier dans votre pays.

9. Configuration de la redirection du port en iptables

Parfois, vous voudrez peut-être transmettre le trafic d'un service vers un autre port. Vous pouvez y parvenir avec la commande suivante:

# iptables -t nat -a pré -out -i eth0 -p tcp --dport 25 -j redirect --to-port 2525 

La commande ci-dessus transmet tout le trafic entrant sur l'interface réseau ETH0, Depuis le port 25 au port 2525. Vous pouvez changer les ports avec ceux dont vous avez besoin.

dix. Bloquer le réseau inondable sur le port Apache avec iptables

Parfois, les adresses IP peuvent demander trop de connexions vers des ports Web sur votre site Web. Cela peut entraîner le nombre de problèmes et pour éviter de tels problèmes, vous pouvez utiliser la règle suivante:

# iptables -a entrée -p TCP - Dport 80 -M limite - Limit 100 / Minute - Limit-BURST 200 -J Accepter 

La commande ci-dessus limite les connexions entrantes de par minute à 100 et définit une rafale de limite à 200. Vous pouvez modifier la limite et la limite de limite à vos propres exigences spécifiques.

11. Bloquer les demandes de ping entrantes sur iptables

Certains administrateurs système aiment bloquer les demandes de ping entrantes en raison de problèmes de sécurité. Bien que la menace ne soit pas si grande, il est bon de savoir comment bloquer cette demande:

# iptables -a entrée -p ICMP -i eth0 -j Drop 

12. Autoriser l'accès à boucler

Accès en bouclement (accès depuis 127.0.0.1) est important et vous devez toujours le laisser actif:

# iptables -a entrée -i lo -j accepter # iptables -a sortie -o lo -j accepter 

13. Gardez un journal de paquets de réseau abandonnés sur iptables

Si vous souhaitez enregistrer les paquets supprimés sur l'interface réseau ETH0, Vous pouvez utiliser la commande suivante:

# iptables -a entrée -i eth0 -j journal - log-prefix "paquets iptables supprimés:" 

Vous pouvez modifier la valeur après "- log-prefix" avec quelque chose par votre choix. Les messages sont connectés / var / log / messages Et vous pouvez les rechercher avec:

# grep "Paquets iptables supprimés:" / var / log / messages 

14. Bloquer l'accès à une adresse MAC spécifique sur iptables

Vous pouvez bloquer l'accès à votre système à partir de l'adresse MAC spécifique en utilisant:

# iptables -a entrée -m mac - mac-source 00: 00: 00: 00: 00: 00 -J Drop 

Bien sûr, vous devrez changer "00: 00: 00: 00: 00: 00" avec l'adresse MAC réelle que vous souhaitez bloquer.

15. Limitez le nombre de connexions simultanées par adresse IP

Si vous ne voulez pas avoir trop de connexion simultanée établie à partir d'une adresse IP unique sur le port donné, vous pouvez utiliser la commande ci-dessous:

# iptables -a entrée -p TCP --Syn --DPORT 22 -M Connlimit --Connlimit-Above 3 -J Rejet 

La commande ci-dessus ne permet pas plus que 3 Connexions par client. Bien sûr, vous pouvez modifier le numéro de port pour correspondre à différents services. Également --Connlimit-Above devrait être modifié pour correspondre à vos besoins.

16. Rechercher dans la règle iptables

Une fois que vous avez défini vos règles iptables, vous voudrez rechercher de temps en temps et peut-être avoir besoin de les modifier. Un moyen facile de rechercher dans vos règles est d'utiliser:

# iptables -l $ table -v -n | grep $ string 

Dans l'exemple ci-dessus, vous devrez changer $ table avec le tableau réel dans lequel vous souhaitez rechercher et $ String avec la chaîne réelle pour laquelle vous recherchez.

Voici un exemple:

# iptables -l entrée -v -n | Grep 192.168.0.100 

17. Définir la nouvelle chaîne iptables

Avec iptables, vous pouvez définir votre propre chaîne et y stocker des règles personnalisées. Pour définir une chaîne, utilisez:

# iptables -n filtre personnalisé 

Vous pouvez maintenant vérifier si votre nouveau filtre est là:

# iptables -l 
Échantillon de sortie
Entrée de chaîne (Accept de politique) Target Prot Opt Source Destination 
Chain Forward (Policy Accept) Target Prot Opt Source Destination
Sortie de la chaîne (Politique Accept) Target Prot Opt Source Destination
Chaîne Filtre personnalisé (0 références) Target Prot Opt Source Destination

18. Rinçonner les chaînes ou les règles de pare-feu iptables

Si vous souhaitez vider vos chaînes de pare-feu, vous pouvez utiliser:

# iptables -f 

Vous pouvez rincer des chaînes à partir de table spécifique avec:

# iptables -t nat -f 

Vous pouvez changer "Nat" avec la table réelle que les chaînes que vous souhaitez rincer.

19. Enregistrer les règles iptables dans un fichier

Si vous souhaitez enregistrer vos règles de pare-feu, vous pouvez utiliser le iptables-save commande. Vous pouvez utiliser ce qui suit pour enregistrer et stocker vos règles dans un fichier:

# iptables-save> ~ / iptables.règles 

C'est à vous de décider où allez-vous stocker le fichier et comment vous le nommez.

20. Restaurer les règles iptables d'un fichier

Si vous souhaitez restaurer une liste de règles iptables, vous pouvez utiliser iptables-restore. La commande ressemble à ceci:

# iptables-restore < ~/iptables.rules 

Bien sûr, le chemin vers votre fichier de règles peut être différent.

21. Configuration des règles iptables pour la conformité PCI

Certains administrateurs système pourraient être tenus de configurer leurs serveurs pour être compiliant PCI. Il existe de nombreuses exigences par différents fournisseurs de conformité PCI, mais il y en a peu de.

Dans de nombreux cas, vous devrez avoir plus d'une adresse IP. Vous devrez appliquer les règles ci-dessous pour l'adresse IP du site. Soyez très prudent lorsque vous utilisez les règles ci-dessous et utilisez-les uniquement si vous êtes sûr de ce que vous faites:

# iptables -i entrée -d Site -p TCP -M Multiport - Dports 21,25,110,143,465,587 993 995 -J Drop 

Si vous utilisez CPanel ou un panneau de configuration similaire, vous devrez peut-être bloquer ses ports également. Voici un exemple:

# iptables -i in_sg -d dedi_ip -p TCP -M Multiport - Dports 2082 2083.2095.2096.2525.20862087 -J DROP 

Note: Pour vous assurer de répondre aux exigences du fournisseur de votre PCI, vérifiez attentivement leur rapport et appliquez les règles requises. Dans certains cas, vous devrez peut-être également bloquer le trafic UDP sur certains ports.

22. Autoriser les connexions établies et connexes

Comme le trafic réseau est séparé sur le nouveau et le sort. Pour les connexions entrantes, faites-le avec:

# iptables -a entrée -m ConnTrack --ctstate établi, lié -J accepter 

Pour une utilisation sortante:

# iptables -a sortie -m Conntrack --ctstate établi -j accepter 

23. Déposez les paquets non valides en iptables

Il est possible d'avoir des paquets de réseau marqués comme non valides. Certaines personnes peuvent préférer enregistrer ces packages, mais d'autres préfèrent les laisser tomber. Pour laisser tomber les paquets invalides, vous pouvez utiliser:

# iptables -a entrée -m Conntrack --ctstate invalid -j Drop 

24. Bloquer la connexion sur l'interface réseau

Certains systèmes peuvent avoir plus d'une interface réseau. Vous pouvez limiter l'accès à cette interface réseau ou bloquer les connexions à partir de certaines adresses IP.

Par exemple:

# iptables -a entrée -i eth0 -s xxx.xxx.xxx.xxx -j Drop 

Changement «Xxx.xxx.xxx.xxx ” avec l'adresse IP réelle (ou le réseau) que vous souhaitez bloquer.

25. Désactiver les courriers sortants via iptables

Si votre système ne doit pas envoyer de courriels, vous pouvez bloquer les ports sortants sur les ports SMTP. Par exemple, vous pouvez utiliser ceci:

# iptables -a sortie -p tcp --DORTS 25,465,587 -j rejet 

Conclusion

Iptables est un pare-feu puissant dont vous pouvez facilement bénéficier. Il est essentiel pour chaque administrateur système d'apprendre au moins les bases des iptables. Si vous souhaitez trouver des informations plus détaillées sur les iptables et ses options, il est fortement recommandé de lire son manuel:

# homme iptables 

Si vous pensez que nous devons ajouter plus de commandes à cette liste, veuillez les partager avec nous, en les soumettant dans la section des commentaires ci-dessous.