web-dev-qa-db-fra.com

Comment puis-je configurer FirewallD pour bloquer tout le trafic sortant, à l'exception des ports spécifiques tout en permettant à Localhost d'accéder à l'un de ses propres ports locaux?

Je vais avouer au début que je pose cette question seulement après avoir trouvé la réponse et vouloir la partager avec tout le monde. Si cela est mauvais de forme, mes excuses sincères et je suis ouvert aux suggestions de la bonne façon de partager cette information durement gagné. S'il s'agit d'une répétition, veuillez le fermer et les visiteurs sur la question initiale.

Alors, comment puis-je configurer Firewalld (dans mon cas, à l'aide de Centos 7.6) pour bloquer tout le trafic sortant, à l'exception des ports spécifiques tout en permettant également à Localhost d'accéder à l'un de ses propres ports locaux?

J'ai commencé avec ceci:

# First, allow outbound traffic for all allowed inbound traffic 
firewall-cmd --direct --add-rule ipv4 filter OUTPUT 0 -m state --state ESTABLISHED,RELATED -j ACCEPT 

# Allow outbound HTTP, HTTPS, DNS
firewall-cmd --direct --add-rule ipv4 filter OUTPUT 1 -p icmp -m icmp --icmp-type=ping -j ACCEPT 
firewall-cmd --direct --add-rule ipv4 filter OUTPUT 1 -p tcp -m tcp --dport 53 -j ACCEPT 
firewall-cmd --direct --add-rule ipv4 filter OUTPUT 1 -p udp --dport 53 -j ACCEPT 
firewall-cmd --direct --add-rule ipv4 filter OUTPUT 1 -p tcp -m tcp --dport 80 -j ACCEPT 

# Block all other outbound traffic 
firewall-cmd --direct --add-rule ipv4 filter OUTPUT 2 -j DROP

Et tout cela a fonctionné correctement pour verrouiller un serveur de ne plus faire que des sites Web et des DNS.

Mais tous les services locaux essayant d'accéder à d'autres services locaux via la communication réseau localhost ont été bloqués. Pire encore, même avec un pare-feu configuré pour enregistrer des paquets abandonnés, les gouttes sortantes n'étaient pas enregistrées.

4
John T.

La réponse, j'ai trouvée par certains essais et erreurs, car la recherche de ce scénario exact (éventuellement impair) sur Google ou ailleurs a été infructueuse:

# Allow all outbound traffic from localhost to localhost
firewall-cmd --direct --add-rule ipv4 filter OUTPUT 1 -o lo -j ACCEPT

Cela permet aux services locaux de communiquer avec tout autre service local (même si l'IP attribuée aux services cible est autre que 127.0.0.1).

3
John T.