Des liens vers la documentation officielle et recommandée existent sur le site Web de Netfilter.
Ce n'est pas un nouveau sujet, les ressources sont illimitées .
La plupart des commandes de base sont assez intuitives et peuvent facilement faire référence à la page de manuel .
netfilter, qui est la technologie au niveau du noyau qui permet le filtrage des paquets, est assez avancée. Il existe des tables supplémentaires qui peuvent modifier les paquets, traduire les paquets et autrement affecter le routage. L' iptables
utilitaire est l'outil utilisateur pour interagir avec netfilter. Si vous souhaitez en savoir plus sur les fonctionnalités avancées, je vous suggère de consulter la documentation susmentionnée. Pour une introduction aux fonctionnalités de base, veuillez lire la suite.
Pour répertorier toutes les règles existantes:
iptables -L -n
-n
empêche iptables de résoudre les ips, ce qui produit une sortie plus rapide.
La table par défaut est la filter
table, qui est utilisée pour appliquer les règles de base du pare-feu aux trois chaînes. Les trois chaînes par défaut dans le filter
tableau sont INPUT
, OUTPUT
et FORWARD
.
Les chaînes sont largement explicites. La chaîne INPUT affecte les paquets entrant, la chaîne OUTPUT affecte les paquets générés localement, et enfin FORWARD pour tous les paquets qui transitent par le système.
Parmi les cibles que vous pouvez spécifier, vous pouvez les DROP
paquets, ce qui signifie simplement ignorer et ne pas répondre. Vous pouvez des REJECT
paquets, où une réponse icmp serait envoyée à la source du refus. Enfin, vous pouvez ACCEPT
les utiliser, ce qui permet aux paquets de continuer le routage.
Souvent, avec un pare-feu extérieur, le choix par défaut sera DROP
opposé à REJECT
, car il réduit l'empreinte visible de votre réseau sur Internet. Par exemple, une adresse IP qui autrement limite les services à un hôte spécifique aurait moins de visibilité avec DROP
.
Remarque, -A
signifie ajouter à la fin de la chaîne. Si vous souhaitez insérer en haut, vous pouvez utiliser -I
. Toutes les règles sont traitées de haut en bas. -D
pour suppression.
Vers DROP
un paquet entrant provenant de 192.168.235.235
:
iptables -A INPUT -s 192.168.235.235 -j DROP
Cela saute à la DROP
cible pour tous les protocoles provenant de cette IP.
Accepter:
iptables -A INPUT -s 192.168.235.235 -j ACCEPT
Pour empêcher l'accès à cette adresse IP à partir de votre serveur ou réseau local:
iptables -A OUTPUT -d 192.168.235.235 -j DROP
Vous pouvez spécifier le -p
protocole, la -s
source du paquet, la -d
destination du paquet, le port de destination --dport
, le port source --sport
et de nombreux autres indicateurs qui affecteront la façon dont les paquets sont traités par la règle.
Si votre INPUT
stratégie par défaut était DROP
et que vous vouliez autoriser tout le monde sur le 192.168.123.0/24
sous - réseau à accéder à SSH sur votre serveur, voici un exemple:
iptables -A INPUT -s 192.168.123.0/24 -p tcp --dport 22 -j ACCEPT
C'est vrai, vous pouvez également utiliser la notation CIDR !
De manière générale, la meilleure politique par défaut est DROP
pour toutes les chaînes. Chaque chaîne a une politique par défaut, qui est spécifiée par l' -P
indicateur. Même si votre stratégie est définie par défaut DROP
, il est toujours conseillé d'avoir l'entrée finale dans une chaîne pour qu'elle soit DROP
également.
Par exemple, pour modifier la stratégie DROP
pour les chaînes INPUT, FORWARD et OUTPUT:
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
Attention , si vous spécifiez la politique par défaut de DROP for INPUT sur un système distant sans vous autoriser au préalable à accéder à SSH, vous pourriez vous empêcher d'accéder au système. Si sur un système distant, vous pouvez spécifier une crontab temporaire pour vider toutes les règles toutes les 5 minutes en tant que sécurité intégrée.
Pour supprimer toutes les règles et autoriser tout le trafic:
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -X
iptables -F
Remarque, -X
supprime toutes les chaînes créées. -F
vide toutes les règles.
Il existe des outils natifs pour enregistrer et restaurer les règles. En particulier, iptables-save
et iptables-restore
. La plupart des distributions Linux modernes ont save
et restore
fonctionnent dans un fichier init iptables fourni avec le système.
Il existe d'autres meilleures pratiques de pare-feu, telles que la suppression de paquets mal formés et d'autres types de trafic indésirable. C'est l'un des avantages de l'utilisation d'un utilitaire frontal tel que Shorewall , car il implémentera un grand nombre de ces politiques par défaut. Néanmoins, je suis d'accord avec votre approche et je préfère également maintenir directement mes propres règles, et ces mêmes bonnes pratiques peuvent être mises en œuvre sans frontal.