Bloccare le connessioni in uscita su RHEL7 / CentOS7 con firewalld?


12

RHEL7 / CentOS7 presenta un nuovo firewalldservizio firewall, che sostituisce iptables service(entrambi utilizzano lo iptablesstrumento per interagire con il Netfilter del kernel sottostante).

firewalldpuò essere facilmente ottimizzato per bloccare il traffico in entrata, ma come osservato da Thomas Woerner 1,5 anni fa "al momento non è possibile limitare il traffico in uscita con firewalld in modo semplice". E per quanto posso vedere la situazione non è cambiata da allora. O ce l'ha? Esiste un modo per bloccare il traffico in uscita con firewalld? In caso contrario, esistono altri modi "standard" (sulla distro RHEL7) per bloccare il traffico in uscita se non l'aggiunta manuale di regole tramite lo iptablesstrumento?

Risposte:


12

Non ho trovato alcuna opzione in quella bella interfaccia grafica, ma è possibile tramite l'interfaccia diretta

Per abilitare solo la porta 80 in uscita:

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

Questo lo aggiungerà alle regole permanenti, non alle regole di runtime.
Dovrai ricaricare le regole permanenti in modo che diventino regole di runtime.

firewall-cmd --reload

per visualizzare regole permanenti

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

per visualizzare le regole di runtime

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

Come si ottiene questo risultato utilizzando l'attuale linguaggio delle regole avanzate?
Casey,

@Casey Secondo la mia comprensione, le regole ricche sono utilizzate rigorosamente per le catene INPUT.
Rice,

Presumo che le regole precedenti funzionino solo per ipv4(iptables). Potrebbe essere desiderabile avere regole simili per ipv6(per ip6tables) o eb(per ebtables).
mwfearnley,

Inoltre, questo ha ucciso la mia connessione SSH al server! Vedere la risposta di user253068 per come conservare le connessioni stabilite.
mwfearnley,

5

Dopo aver posto la stessa domanda da solo, e con un po 'di armeggiamento, ho raccolto alcune belle regole per limitare il traffico in uscita alle query HTTP / HTTPS e DNS:

Consenti connessioni stabilite:

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

Consenti HTTP:

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

Consenti HTTPS:

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

Consenti query 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

Nega tutto il resto:

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

Potrebbe essere una buona idea testare prima omettendo l'argomento "--permanent".

Non sono affatto un esperto, ma questo sembra funzionare bene da parte mia :)


Ad un certo punto potresti trovare utile rimuovere le regole. La rimozione di singole regole dirette sembra complicata, ma per una mazza, firewall-cmd [--permanent] --direct --remove-rules ipv4 filter OUTPUTverrà rimossa in blocco.
mwfearnley,

1

Per quanto riguarda la GUI; Penso che lo trovi sotto " Configurazione diretta ". Per accedervi devi selezionarlo in " Visualizza ". Potrei sbagliarmi.

Nota a margine

Per eliminare le regole; devi uscire e poi rientrare.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.