62 votes

Conseils et astuces pour iptables

Je suis sûr que les administrateurs système de Linux sont assez familiers avec iptables l'interface utilisateur de l netfilter cadre de filtrage de paquets.

Maintenant, cette "Question" est censée être une Wiki communautaire pour rassembler les différents morceaux de iptables sagesse. Rien n'est trop commun ou trop obscur. Publiez tout ce que vous savez qui pourrait aider d'autres personnes à tirer le maximum de iptables .

3voto

CertainlyNot Points 847

Un autre GUI qui peut être utilisé pour configurer iptables est Créateur de pare-feu . Il permet aux utilisateurs de créer des éléments de règles sous forme d'objets dans une base de données, puis de glisser-déposer ces objets dans un éditeur de règles pour créer la politique de pare-feu souhaitée. L'application génère ensuite un fichier script avec toutes les commandes iptables requises pour mettre en œuvre les règles.

Contrairement à d'autres solutions GUI iptables où vous ne pouvez gérer qu'une seule configuration iptables à la fois, avec Firewall Builder vous pouvez gérer un grand nombre de configurations iptables à partir d'une seule application. Firewall Builder fonctionne sous Linux, Windows et Mac OS X, existe depuis plus de 10 ans et compte des milliers d'utilisateurs actifs dans le monde.

Divulgation complète - Je suis le cofondateur de NetCitadel, la société qui développe Firewall Builder.

2voto

kofemann Points 4088

Journal des connexions sortantes avec uid

iptables -A OUTPUT -m state --state NEW -m tcp -p tcp -m limit --limit 5/m -j LOG --log-uid --log-prefix="outgoing connection: "

le transfert de port/connexion :

iptables -A PREROUTING -t nat -i eth1 -p tcp --dport 80 -j DNAT --to 10.0.1.7:80
iptables -A INPUT -p tcp -m state --state NEW --dport 80 -i eth1 -j ACCEPT

2voto

XTL Points 189

Faire correspondre plusieurs noms d'interface avec un joker

Exemple : vous avez eth0 y eth1 et souhaite autoriser tout trafic entre eux ?

iptables -A FORWARD -i eth+ -o eth+ -j ACCEPT

J'ai utilisé cette méthode dans le passé afin de faire correspondre l'indice de la veth<something> interfaces créées et nommées dynamiquement par LXC. Je peux donc les faire correspondre toutes en même temps avec veth+ .

J'ai aussi intentionnellement nommé certaines interfaces _<something> afin d'établir une correspondance avec _+ .

2voto

infinmed Points 17

Limitation de toutes les adresses IP individuelles à un quota de bande passante sortante avec les IP Sets

Vous pouvez configurer votre serveur pour que chaque IP ne puisse utiliser que 15GiByte de bande passante par mois, dans l'espoir de refléter ou d'éviter une attaque de l'utilisation de la bande passante, peut-être pour votre quota de bande passante mesuré par votre FAI. Cela peut se faire de la manière suivante :

Créez d'abord les ensembles IP pour IPv4 et IPv6 :

ipset create IP_QUOTA_SET_OUT hash:ip timeout 345600 counters
ipset create IP_QUOTA_SET_OUT_INET6 hash:ip timeout 345600 counters family inet6

Maintenant ajoutez vos règles iptables. La première ligne ajoutera l'IP à l'ensemble si elle n'y est pas déjà. La deuxième ligne ne correspondra pas si le nombre d'octets transférés pour l'IP dans l'ensemble est supérieur à la quantité spécifiée. Ensuite, on fait la même chose pour IPv6.

iptables -I OUTPUT -m set ! --match-set IP_QUOTA_SET_OUT dst -j SET --add-set IP_QUOTA_SET_OUT dst --timeout 345600
iptables -I OUTPUT -m set --match-set IP_QUOTA_SET_OUT dst --bytes-gt 16106127360 -j DROP

ip6tables -I OUTPUT -m set ! --match-set IP_QUOTA_SET_OUT_INET6 src -j SET --add-set IP_QUOTA_SET_OUT_INET6 src --timeout 345600
ip6tables -I OUTPUT -m set --match-set IP_QUOTA_SET_OUT_INET6 src --bytes-gt 16106127360 -j DROP

Cela permettra d'éviter des attaques telles qu'un utilisateur demandant un fichier volumineux à votre serveur Web pendant une longue période, ou à n'importe quel service d'ailleurs. La même chose peut être faite pour la chaîne INPUT.

1voto

NRaf Points 1425

Bloquer les valeurs MSS peu communes

iptables -t mangle -A PREROUTING -p tcp \
-m conntrack --ctstate NEW -m tcpmss ! --mss 536:65535 -j DROP

Cible SYNPROXY pour la protection DDos

Le but de cette cible est de vérifier si l'hôte qui a envoyé le paquet SYN établit la connexion ou ne fait rien après avoir initié la connexion SYN. S'il ne fait rien, il rejette le paquet avec un effort minimal.

Définir les paquets syn à la table de suivi de connexion dans la table brute

iptables -t raw -A PREROUTING -p tcp -m tcp --dport 80 --syn -j CT --notrack

Activer le synproxy pour le serveur http :

iptables -A INPUT -p tcp -m tcp --dport 80 -m conntrack --ctstate INVALID,UNTRACKED \
-j SYNPROXY --sack-perm --timestamp --wscale 7 --mss 1460

Ressource : Cible SYNPROXY du blog RHEL

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X