Ubuntu: Comment ajouter une règle iptables que UFW ne peut pas créer

15

UFW fonctionne très bien pour moi, sauf dans les cas où cela ne fonctionne pas ...

Je veux pouvoir ajouter manuellement une autre règle qui sera appliquée au démarrage?

  • où dois-je mettre cette règle?
  • comment dois-je le faire démarrer au démarrage?
  • comment puis-je le faire jouer bien avec UFW?
Arthur Ulfeldt
la source
1
ufw est l'une de ces choses «ce que vous voyez est tout ce que vous obtenez» qui le rendent plus facile pour les débutants. Si vous devez faire plus que ce qu'il peut faire, envisagez de passer complètement à iptables. Que "ça marche vraiment bien pour moi" est une bonne preuve que vous pouvez essayer quelque chose (iptables) plus compliqué (mais aussi plus flexible).
halp

Réponses:

14

Selon cette page wiki Ubuntu (faites défiler jusqu'à "Fonctionnalité avancée"), vous pouvez réaliser ce que vous voulez en mettant vos propres iptablesrègles dans les fichiers suivants:

  • /etc/ufw/before.rules
  • /etc/ufw/after.rules

Le beforefichier est évalué avant l'application des ufwrègles; le afterfichier est évalué après. (Il existe également des fichiers de règles before6et correspondants after6pour vos ip6tablesrègles.)

Ces fichiers de règles devraient être dans une iptables-restoresyntaxe compatible, probablement parce ufwqu'ils les chargent simplement à l'aide iptables-restore. Enfin, notez que vous devez arrêter et redémarrer ufwaprès avoir apporté des modifications aux fichiers de règles.

Steven Monday
la source
3
Notez que vous pouvez (peut-être involontairement) modifier la priorité des règles iptables si vous oubliez de standardiser l'utilisation de -I ou -A lors de l'utilisation de ces fichiers. -I (insérer) ajoute des règles au sommet de la chaîne, évaluées en premier, tandis que -A (ajouter) les ajoute au bas de la chaîne. Cela peut entraîner des résultats inattendus si vous utilisez -I dans le fichier .after, par exemple. Juste une pensée.
Sam Halicke
0

UFW purgera toute règle ajoutée MANUELLEMENT dans /etc/ufw/user.ruleslaquelle n'est PAS préfacé avec un commentaire:

### tuple ### allow tcp 80 0.0.0.0/0 any 0.0.0.0/0 out
-A ufw-user-output -p tcp --dport 80 -j ACCEPT

Lorsque UFW sanity vérifie les règles au démarrage, il attend un commentaire d'accompagnement. S'il n'est PAS présent, même si la syntaxe de la règle est correcte, UFW la purgera toujours.

Et n'utilisez pas n'importe quel commentaire arbitraire: il DOIT être le commentaire que UFW insérera lors de la création d'une règle utilisateur via le cli, c'est-à-dire:

sudo ufw allow http/tcp

Donc, si vous souhaitez pré-amorcer une série de règles dans un ensemble de règles dans un fichier simple, vous devez toujours créer les règles via l'interface CLI d'UFW pour apprendre la syntaxe des commentaires attendus pour que la règle passe la validation et persiste. .

Essayez ce qui précède avec et SANS le commentaire et rechargez le spécimen de règle HTTP ci-dessus; vous remarquerez qu'avec le commentaire, la règle ajoutée manuellement survit au redémarrage ( ufw enable ) d'UFW.

C'est vraiment un comportement contre-intuitif et non documenté du tout.

F1Linux
la source