Bloquer les connexions sortantes sur RHEL7 / CentOS7 avec firewalld?

12

RHEL7 / CentOS7 propose un nouveau firewalldservice de pare-feu, qui remplace le iptables service(qui utilisent tous deux l' iptablesoutil pour interagir avec Netfilter du noyau en dessous).

firewalldpeut être facilement réglé pour bloquer le trafic entrant, mais comme l'a noté Thomas Woerner il y a 1,5 ans, "limiter le trafic sortant n'est pas possible avec firewalld de manière simple pour le moment". Et pour autant que je puisse voir, la situation n'a pas changé depuis. Ou bien? Existe-t-il un moyen de bloquer le trafic sortant avec firewalld? Sinon, existe-t-il d'autres moyens "standard" (sur la distribution RHEL7) de bloquer le trafic sortant, sauf l'ajout manuel de règles via l' iptablesoutil?

Golem
la source

Réponses:

12

Je n'ai trouvé aucune option dans cette belle interface graphique, mais c'est possible via l'interface directe

Pour activer uniquement le port sortant 80:

firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 0 -p tcp -m tcp --dport=80 -j ACCEPT
firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 1 -j DROP

Cela l'ajoutera aux règles permanentes, pas aux règles d'exécution.
Vous devrez recharger des règles permanentes pour qu'elles deviennent des règles d'exécution.

firewall-cmd --reload

afficher des règles permanentes

firewall-cmd --permanent --direct --get-all-rules

pour afficher les règles d'exécution

firewall-cmd --direct --get-all-rules
Utilisateur Fedora
la source
Comment peut-on y parvenir en utilisant le véritable langage de règles riches?
Casey
@Casey D'après ma compréhension, les règles riches sont strictement utilisées pour les chaînes INPUT.
Rice
Je suppose que les règles ci-dessus ne fonctionnent que pour ipv4(iptables). Il peut être souhaitable d'avoir des règles similaires pour ipv6(pour ip6tables) ou eb(pour ebtables).
mwfearnley
De plus, cela a tué ma connexion SSH au serveur! Voir la réponse de user253068 pour savoir comment conserver les connexions établies.
mwfearnley
5

Après avoir posé la même question moi-même, et avec quelques bricolages, j'ai rassemblé quelques règles intéressantes pour restreindre le trafic sortant aux requêtes HTTP / HTTPS et DNS:

Autoriser les connexions établies:

# firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 0 -m state --state ESTABLISHED,RELATED -j ACCEPT

Autoriser HTTP:

# firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 1 -p tcp -m tcp --dport 80 -j ACCEPT

Autoriser HTTPS:

# firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 1 -p tcp -m tcp --dport 443 -j ACCEPT

Autoriser les requêtes DNS:

# firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 1 -p tcp -m tcp --dport 53 -j ACCEPT
# firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 1 -p udp --dport 53 -j ACCEPT

Refuser tout le reste:

# firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 2 -j DROP

Ce pourrait être une bonne idée de tester d'abord en omettant l'argument «--permanent».

Je ne suis en aucun cas un expert, mais cela semble bien fonctionner pour moi :)

Adobe
la source
À un moment donné, il peut être utile de supprimer les règles. La suppression de règles directes simples semble délicate, mais pour un marteau, firewall-cmd [--permanent] --direct --remove-rules ipv4 filter OUTPUTfera une suppression en masse.
mwfearnley
1

Concernant l'interface graphique; Je pense que vous le trouverez sous " Configuration directe ". Pour y accéder, vous devez le sélectionner dans " Affichage ". Je peux me tromper.

Note complémentaire

Pour supprimer des règles; vous devez quitter puis rentrer.

user301864
la source