Re: vérifier l'utilisation d'une règle Iptables
Salut,
Seb a écrit :
Sur ma passerelle, j'ai ajouté des règles Iptables pour améliorer la
sécurité, en empêchant par exemple les trames venant d'Internet qui ont
comme source des IP de classes A, B, C et D.
Alors tes règles ne doivent pas laisser passer grand chose, dans la
mesure ou la plupart des adresses internet appartiennent à ces anciennes
classes. Classes qui sont désormais obsolètes depuis l'adoption de CIDR,
c'est-à-dire un bon moment.
iptables -t nat -A PREROUTING -i $WAN_INTERFACE -s 10.0.0.0/8 -j DROP
Dans ce cas, je sais quelles fonctionnent avec "iptables -t nat -L -n
- -v" et le nb de paquets donné.
Remarque : bien que supportant les cibles ACCEPT et DROP, les chaînes
PREROUTING, OUTPUT et POSTROUTING de la table nat ne sont pas prévues
pour faire du filtrage mais uniquement du NAT (SNAT, DNAT, MASQUERADE,
REDIRECT, NETMAP...), à cause de leur fonctionnement particulier en
relation avec le suivi de connexion : seul le premier paquet d'une
connexion est examiné par les règles des chaînes de la table nat, et le
résultat détermine également le traitement des paquets suivants dans les
deux sens.
Le filtrage (ACCEPT, REJECT, DROP...) doit avoir lieu dans les chaînes
INPUT, OUTPUT et FORWARD de la table filter (table par défaut) qui sont
prévues pour ça. A la limite, si on a besoin de filtrer sur des critères
qui peuvent être altérés après la traversée de la chaîne PREROUTING
(comme par exemple l'adresse destination en cas de port forwarding), il
vaut mieux le faire dans la table mangle (toujours traversée avant la
table nat) que dans la table nat. Mais une solution plus élégante
consiste à marquer les paquets à filtrer dans la table mangle avec la
cible MARK et à les filtrer dans la table filter avec la correspondance mark.
Exemple pour rejeter l'accès aux adresses privées du LAN depuis l'extérieur :
iptables -t mangle -A PREROUTING -i $WAN_INTERFACE -d $LAN_NETWORK \
-j MARK --set-mark 0x1234
iptables -A INPUT -i $WAN_INTERFACE -m mark --mark 0x1234 \
-j REJECT --reject-with network unreachable
iptables -A FORWARD -i $WAN_INTERFACE -m mark --mark 0x1234 \
-j REJECT --reject-with network unreachable
J'ai voulu ajouté des règles pour l'accès à POP3 (tcp/110) où seules les
IP des serveurs POP3 choisis seront accessibles (en fait je drop les
trames qui ne corresponde pas).
iptables -t nat -A PREROUTING -i $LAN_INTERFACE -s $LAN_NETWORK -p tcp
- --dport 110 -d ! $ipPopServer -j DROP
Remarque 1: comme expliqué plus haut, ce filtrage devrait avoir lieu dans
la chaîne FORWARD de la table filter.
Remarque 2: pour ce genre de filtrage il vaut mieux utiliser la cible
REJECT avec émission d'un RST (option --reject-with tcp-reset) pour
signaler immédiatement à l'émetteur que la connexion est refusée au lieu
de le laisser réessayer plusieurs fois et attendre en vain une réponse
avant d'abandonner finalement.
Remarque 3: tu fais comment s'il y a plusieurs adresses de serveurs POP3
autorisées ?
Pour les tests j'ai mis "-j ACCEPT"
Si c'est pour compter on peut aussi ne pas spécifier de cible, ainsi le
paquet continue à traverser les règles suivantes.
Mais dans ce cas, même en allant relever mes mails, je n'ai pas d'info
sur le nb de paquets pris par la règle.
Mais encore ? Le compteur de paquets reste à zéro ?
Le serveur POP interrogé est-il celui autorisé ou un autre ?
Une erreur de ma part, c'est sûr, mais je ne vois pas où.
Une petite idée ??
Il faudrait voir les règles précédentes. Mais la première erreur est déjà
d'avoir fait du filtrage dans la table nat.
Reply to: