Collection des règles iptables de base du pare-feu Linux
Le but de ce guide est de montrer certaines des commandes iptables les plus courantes pour les systèmes Linux. iptables est le pare-feu intégré à toutes les distributions Linux. Même les distributions comme Ubuntu, qui utilise ufw (pare-feu simple), et Red Hat, qui utilise firewalld, transmettent toujours leurs commandes à iptables et l’utilisent en arrière-plan.
Maîtriser iptables, ou au moins se familiariser avec certaines des commandes les plus basiques, est essentiel pour les administrateurs Linux. Même les utilisateurs occasionnels de Linux peuvent bénéficier de la compréhension des bases du pare-feu iptables, car ils peuvent être amenés à y appliquer quelques configurations mineures à un moment donné. Utilisez certains des exemples ci-dessous pour vous familiariser avec la syntaxe iptables et avoir une idée de la façon dont elle fonctionne pour protéger votre système.
Vous ne devez pas appliquer les règles iptables à un système de production tant que vous n’êtes pas un peu familiarisé avec leur fonctionnement. Soyez également prudent lorsque vous appliquez des règles à des systèmes distants (un ordinateur avec lequel vous avez établi une session SSH) car vous pouvez vous verrouiller accidentellement si vous entrez la mauvaise règle.
Dans ce tutoriel, vous allez apprendre :
- Collection des règles de base du pare-feu Linux iptables
Affichage des règles iptables configurées sur notre système Linux
Exemples de commandes iptables
Sachez que l’ordre de vos règles iptables compte. Lorsque votre système reçoit un paquet de trafic réseau, iptables le fera correspondre à la première règle possible. Par conséquent, si vous avez une règle pour accepter le trafic SSH, suivie d’une règle pour refuser le trafic SSH, iptables acceptera toujours le trafic car cette règle vient avant la règle de refus dans la chaîne. Vous pouvez toujours modifier l’ordre des règles en spécifiant un numéro de règle dans votre commande.
Règle : iptables pour refuser toutes les connexions réseau sortantes
La deuxième ligne de règles n’autorise que les liaisons sortantes et établies actuelles. Ceci est très utile lorsque vous êtes connecté au serveur via ssh ou telnet.
iptables -F OUTPUT iptables -A OUTPUT -m state --state ESTABLISHED -j ACCEPT iptables -A OUTPUT -j REJECTRègle : iptables pour rejeter toutes les connexions réseau entrantes
iptables -F INPUT iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT iptables -A INPUT -j REJECTRègle : iptables pour refuser toutes les connexions réseau
Cette règle abandonnera et bloquera toute connexion réseau, qu’elle soit entrante ou sortante. Plus important encore, cela inclura également les connexions actuelles, en cours, établies.
iptables -F iptables -A INPUT -j REJECT iptables -A OUTPUT -j REJECT iptables -A FORWARD -j REJECTRègle : iptables pour supprimer les requêtes ping entrantes
Cette règle iptables abandonnera toutes les requêtes ping entrantes. Notez qu’il est possible d’utiliser REJECT au lieu de DROP. La différence entre DROP et REJECT est que DROP rejette silencieusement le paquet entrant, tandis que REJECT entraînera le renvoi d’une erreur ICMP.
iptables -A INPUT -p icmp --icmp-type echo-request -j DROPRègle : iptables pour supprimer les connexions telnet sortantes
Cette règle iptables bloquera tout trafic sortant vers n’importe quel hôte dont le port de destination est 23 (telnet).
iptables -A OUTPUT -p tcp --dport telnet -j REJECTRègle : iptables pour refuser les connexions telnet entrantes
Cette règle iptables refusera toutes les demandes de connexion entrantes vers un port local 23.
iptables -A INPUT -p tcp --dport telnet -j REJECTRègle : iptables pour refuser les connexions ssh sortantes
Cette règle iptables refusera toutes les connexions sortantes provenant d’un port local 22 (ssh).
iptables -A OUTPUT -p tcp --dport ssh -j REJECTRègle : iptables pour refuser les connexions ssh entrantes
Refuser toutes les connexions entrantes vers un port local 22 (ssh).
iptables -A INPUT -p tcp --dport ssh -j REJECTRègle : iptables pour rejeter tout le trafic entrant sauf ssh et les connexions locales
Ces règles rejettent toutes les connexions entrantes au serveur, à l’exception de celles sur le port 22 (SSH). Il acceptera également les connexions sur l’interface de bouclage.
iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -p tcp --dport ssh -j ACCEPT iptables -A INPUT -j REJECTRègle : iptables pour accepter les connexions ssh entrantes à partir d’une adresse IP spécifique
En utilisant cette règle iptables, nous bloquerons toutes les connexions entrantes au port 22 (ssh) à l’exception de l’hôte avec l’adresse IP 77.66.55.44. Cela signifie que seul l’hôte avec l’IP 77.66.55.44 pourra utiliser ssh.
iptables -A INPUT -p tcp -s 77.66.55.44 --dport ssh -j ACCEPT iptables -A INPUT -p tcp --dport ssh -j REJECTRègle : iptables pour accepter les connexions ssh entrantes à partir d’une adresse MAC spécifique
En utilisant cette règle iptables, nous bloquerons toutes les connexions entrantes au port 22 (ssh) à l’exception de l’hôte avec l’adresse MAC 00 :e0:4c :f1:41:6b. En d’autres termes, toutes les connexions ssh seront limitées à un seul hôte avec une adresse MAC 00 :e0:4c :f1:41:6b.
iptables -A INPUT -m mac --mac-source 00:e0:4c:f1:41:6b -p tcp --dport ssh -j ACCEPT iptables -A INPUT -p tcp --dport ssh -j REJECTRègle : iptables pour refuser les connexions entrantes sur un port TCP spécifique
La règle iptables suivante supprimera tout le trafic entrant sur le port TCP 3333.
iptables -A INPUT -p tcp --dport 3333 -j REJECTRègle : iptables pour supprimer toutes les connexions entrantes sur une interface réseau spécifique
La règle suivante abandonnera le trafic entrant sur une interface réseau spécifique provenant du sous-réseau 192.168.0.0/16. Le est très utile pour tenter de supprimer toutes les adresses IP usurpées. Si eth0 est une interface réseau externe, aucun trafic entrant provenant du réseau interne ne doit atteindre l’interface réseau eth0.
iptables -A INPUT -i eth0 -s 192.168.0.0/16 -j DROPRègle : iptables pour créer un masquage d’IP simple
La règle suivante crée une passerelle simple de masquage d’adresse IP pour permettre à tous les hôtes du même sous-réseau d’accéder à Internet. Le eth0 spécifié ci-dessous est une interface externe connectée à Internet.
echo "1" > /proc/sys/net/ipv4/ip_forward iptables -t nat -A POSTROUTING -o $EXT_IFACE -j MASQUERADERègle : Rejeter tout le trafic telnet entrant, à l’exception de l’adresse IP spécifiée
La règle iptables suivante rejettera tout le trafic telnet entrant, à l’exception de la demande de connexion de l’adresse IP 222.111.111.222
iptables -A INPUT -t filter ! -s 222.111.111.222 -p tcp --dport 23 -j REJECTRègle : Rejeter tout le trafic ssh entrant, à l’exception de la plage d’adresses IP spécifiée
La règle iptables suivante rejettera tout le trafic ssh entrant, à l’exception des demandes de connexion provenant de la plage d’adresses IP 10.1.1.90 - 10.1.1.1.100.
La suppression du négateur « ! » de la règle ci-dessous rejette tout le trafic ssh provenant de la plage d’adresses IP 10.1.1.90 - 10.1.1.100.
iptables -A INPUT -t filter -m iprange ! --src-range 10.1.1.90-10.1.1.100 -p tcp --dport 22 -j REJECTRègle : iptables pour rejeter tout le trafic sortant vers un hôte distant spécifique
La règle iptables suivante rejettera tout le trafic sortant vers un hôte distant avec une adresse IP 222.111.111.222
iptables -A OUTPUT -d 222.111.111.222 -j REJECTRègle : iptables pour bloquer l’accès à un site web spécifique
La règle iptables suivante bloquera tout le trafic entrant en provenance de facebook.com où le port source est le port 80/www.
iptables -A INPUT -s facebook.com -p tcp --sport www -j DROPNotez que la règle iptables ci-dessus bloquera l’accès à facebook.com ainsi qu’à www.facebook.com.
Réflexions finales
Dans ce guide, nous avons vu une collection de règles iptables de base pour Linux. Cela incluait certaines des règles les plus courantes qui sont généralement appliquées aux systèmes, telles que le blocage des connexions SSH autres que celles provenant d’une adresse IP particulière. L’utilisation de ces règles vous aidera à renforcer votre serveur contre les attaques et à augmenter la sécurité globale. N’hésitez pas à adapter ces exemples à vos propres scénarios.
