J'ai actuellement ma chaîne OUTPUT réglée sur DROP. Je voudrais le changer en REJETER, afin d'avoir une idée que c'est mon pare-feu qui m'empêche d'accéder à quelque chose plutôt qu'un problème avec le service auquel j'essaie d'accéder (rejet immédiat au lieu de temporiser). Cependant, iptables ne semble pas s'en soucier. Si j'édite manuellement mon fichier de règles enregistré et que j'essaye de le restaurer, j'obtiens iptables-restore v1.4.15: Can't set policy 'REJECT' on 'OUTPUT' line 22: Bad policy name
et il refuse de charger les règles. Si j'essaye de régler ceci manuellement ( iptables -P OUTPUT REJECT
), j'obtiens iptables: Bad policy name. Run 'dmesg' for more information.
mais il n'y a aucune sortie dans dmesg.
J'ai confirmé que la règle appropriée est compilée dans le noyau et j'ai redémarré pour m'assurer qu'elle est chargée:
# CONFIG_IP_NF_MATCH_TTL is not set
CONFIG_IP_NF_FILTER=y
***
CONFIG_IP_NF_TARGET_REJECT=y
***
CONFIG_IP_NF_TARGET_LOG=y
CONFIG_IP_NF_TARGET_ULOG=y
(Des astérisques ont été ajoutés pour mettre en évidence la règle applicable)
Tout ce que je peux trouver indique que REJETER est une politique / cible valide (en général), mais je ne trouve rien qui dise qu'il n'est pas valide pour les chaînes INPUT, FORWARD ou OUTPUT. Mon Google-fu n'aide pas. Je suis sur Gentoo, si cela fait une différence. Quelqu'un ici a une idée?
la source
iptables
règles en question?Réponses:
REJECT
est une extension cible , tandis qu'une stratégie de chaîne doit être une cible . La page de manuel dit que (bien que ce ne soit pas vraiment clair), mais une partie de ce qu'elle dit est complètement fausse.La politique ne peut être que sur
ACCEPT
ouDROP
sur des chaînes intégrées. Si vous voulez avoir pour effet de rejeter tous les paquets qui ne correspondent pas aux règles précédentes, assurez-vous simplement que la dernière règle correspond à tout et ajoute une règle avec uneREJECT
extension cible. En d'autres termes, après avoir ajouté toutes les règles pertinentes, faites-leiptables -t filter -A OUTPUT -j REJECT
.Voir le fil "quelles sont les politiques de chaîne possibles" sur la liste netfilter pour plus de détails.
la source
Je n'ai pas pu le trouver documenté, mais une référence ici indique que les seules politiques autorisées sont ACCEPTor DROP. Ceci est confirmé en regardant la source de
libiptc
(qui est responsable de la manipulation des règles) autour de la ligne 2429, où le code aLe fil d' origine suggère que la meilleure chose à faire est d'ajouter REJECT à la fin de la chaîne qui devrait l'être
iptables -A OUTPUT -j REJECT
.Notez que le code juste avant c'est:
Vous ne pouvez donc pas du tout définir la stratégie sur une chaîne définie par l'utilisateur.
la source
-p
est pour l'appariement sur un protocole; il voulait dire-A
comme ma réponse le dit.REJECT
onOUTPUT
n'a aucun sens; aREJECT
renverra un paquet ICMP qui devra traverser un réseau.Ajoutez un nouveau
-j LOG
comme dernière règle (donc avant laDROP
politique) pour voir ce qui arrive si loin dans laOUTPUT
chaîne.la source
REJECT
paquet ICMP ne pouvait-il pas revenir sur l'interface lo? Je suis d'accord sur le fait que aLOG
est utile pour le dépannage, mais ce que j'espérais vraiment est un moyen de me rappeler que "Oh, oui ... c'est probablement bloqué par monDROP
iptables par défaut" au lieu de dépanner pendant 5 minutes demande à un collègue de accéder au serveur XYZ se rend compte qu'il est probablement local , ce qui est mon approche la plus courante, car ma journée de travail typique touche rarement des choses pour lesquelles je n'ai pas déjà ouvert de trou. Bien sûr, je dois peut-être mieux garder cela à l'esprit, mais un appartementREJECT
est plus évident.ethX
interface génère du trafic sur l'lo
interface pour de nombreuses raisons. Ils sont très indépendants; vous pouvez facilement appliquer des chaînes à l'une et non à l'autre.