Ausgehende Verbindungen auf RHEL7 / CentOS7 mit Firewall blockieren?

12

RHEL7 / CentOS7 verfügt über einen neuen firewalldFirewall-Dienst, der den ersetzt iptables service(beide verwenden das iptablesTool, um mit dem darunterliegenden Netfilter des Kernels zu interagieren).

firewalldkann einfach so eingestellt werden, dass eingehender Datenverkehr blockiert wird. Wie jedoch vor 1,5 Jahren von Thomas Woerner festgestellt wurde, ist "die Begrenzung des ausgehenden Datenverkehrs mit Firewalld derzeit nicht auf einfache Weise möglich". Und soweit ich das sehe, hat sich die Situation seitdem nicht geändert. Oder hat es? Gibt es eine Möglichkeit, ausgehenden Datenverkehr mit zu blockieren firewalld? Wenn nicht, gibt es andere "Standard" -Methoden (in RHEL7 Distribution), um ausgehenden Verkehr zu blockieren, außer das manuelle Hinzufügen von Regeln über das iptablesTool?

Golem
quelle

Antworten:

10

Ich habe in dieser netten GUI keine Option gefunden, aber es ist über die direkte Schnittstelle möglich

So aktivieren Sie nur ausgehenden Port 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

Dies fügt es permanenten Regeln hinzu, nicht den Laufzeitregeln.
Sie müssen permanente Regeln neu laden, damit sie zu Laufzeitregeln werden.

firewall-cmd --reload

um permanente Regeln anzuzeigen

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

Laufzeitregeln anzeigen

firewall-cmd --direct --get-all-rules
Fedora-Benutzer
quelle
Wie erreicht man das mit der eigentlichen Rich-Rule-Sprache?
Casey
@Casey Nach meinem Verständnis werden für INPUT-Ketten strikte Rich-Regeln verwendet.
Reis
Ich gehe davon aus, dass die obigen Regeln nur für ipv4(iptables) funktionieren . Es kann wünschenswert sein, ähnliche Regeln für ipv6(für ip6tables) oder eb(für ebtables) zu haben.
Mwfearnley
Außerdem hat dies meine SSH-Verbindung zum Server beendet! In der Antwort von user253068 erfahren Sie, wie Sie bestehende Verbindungen beibehalten.
Mwfearnley
5

Nachdem ich die gleiche Frage selbst gestellt und ein wenig gebastelt habe, habe ich einige Regeln für die Beschränkung des ausgehenden Datenverkehrs auf HTTP / HTTPS- und DNS-Abfragen zusammengestellt:

Erlaube bestehende Verbindungen:

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

HTTP zulassen:

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

HTTPS zulassen:

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

Zulassen von DNS-Abfragen:

# 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

Alles andere ablehnen:

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

Es könnte eine gute Idee sein, zuerst zu testen, indem Sie das Argument '--permanent' weglassen.

Ich bin auf keinen Fall ein Experte, aber das scheint bei mir gut zu funktionieren :)

Adobe
quelle
Irgendwann kann es hilfreich sein, die Regeln zu entfernen. Das Entfernen einzelner direkter Regeln scheint schwierig zu sein, aber für einen Vorschlaghammer firewall-cmd [--permanent] --direct --remove-rules ipv4 filter OUTPUTwird eine Massenentfernung durchgeführt.
Mwfearnley
1

In Bezug auf die GUI; Ich denke, Sie finden dies unter " Direkte Konfiguration ". Um darauf zuzugreifen, müssen Sie es in " Ansicht " auswählen . Ich könnte falsch liegen.

Randnotiz

Regeln löschen; Sie müssen beenden und dann erneut eingeben.

user301864
quelle