Zablokować połączenia wychodzące na RHEL7 / CentOS7 za pomocą firewalld?


12

RHEL7 / CentOS7 zawiera nową firewalldusługę zapory ogniowej, która zastępuje iptables service(oba używają iptablesnarzędzia do interakcji z Netfilterem jądra poniżej).

firewalldmożna łatwo dostroić, aby blokować ruch przychodzący, ale jak zauważył Thomas Woerner 1,5 lat temu „ograniczenie ruchu wychodzącego nie jest obecnie możliwe przy pomocy firewalld w prosty sposób”. I o ile widzę, sytuacja się nie zmieniła. A może to? Czy jest jakiś sposób na blokowanie ruchu wychodzącego firewalld? Jeśli nie, czy istnieją inne „standardowe” sposoby (na dystrybucji RHEL7) blokowania ruchu wychodzącego, z wyjątkiem ręcznego dodawania reguł za pomocą iptablesnarzędzia?

Odpowiedzi:


13

Nie znalazłem żadnej opcji w tym ładnym GUI, ale jest to możliwe poprzez bezpośredni interfejs

Aby włączyć tylko port wychodzący 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

Spowoduje to dodanie go do reguł stałych, a nie reguł wykonawczych.
Będziesz musiał ponownie załadować stałe reguły, aby stały się regułami wykonawczymi.

firewall-cmd --reload

wyświetlać stałe reguły

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

aby wyświetlić reguły wykonawcze

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

Jak można to osiągnąć, korzystając z rzeczywistego języka opartego na regułach sformułowania?
Casey

@Casey Z mojego zrozumienia, bogate reguły są ściśle stosowane w łańcuchach INPUT.
Rice,

Zakładam, że powyższe zasady działają tylko dla ipv4(iptables). Może być pożądane mieć podobne reguły dla ipv6(dla ip6tables) lub eb(dla ebtables).
mwfearnley

To także zabiło moje połączenie SSH z serwerem! Zobacz odpowiedź user253068, aby dowiedzieć się, jak zachować ustanowione połączenia.
mwfearnley

6

Po tym, jak sam zadałem to samo pytanie i przy odrobinie majsterkowania, zebrałem kilka fajnych zasad ograniczania ruchu wychodzącego do zapytań HTTP / HTTPS i DNS:

Zezwalaj na ustanowione połączenia:

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

Zezwalaj na HTTP:

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

Zezwalaj na HTTPS:

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

Zezwalaj na zapytania 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

Odrzuć wszystko inne:

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

Dobrym pomysłem może być przetestowanie najpierw, pomijając argument „--permanent”.

Nie jestem bynajmniej ekspertem, ale wydaje mi się, że to działa dobrze :)


W pewnym momencie może się przydać usunięcie reguł. Usuwanie pojedynczych reguł wydaje się trudne, ale w przypadku młota firewall-cmd [--permanent] --direct --remove-rules ipv4 filter OUTPUTzrobi to masowo.
mwfearnley

1

W sprawie GUI; Myślę, że znajdziesz to w „ Konfiguracja bezpośrednia ”. Aby uzyskać do niego dostęp, musisz wybrać go w „ Widoku ”. Mogę się mylić.

Dygresja

Aby usunąć reguły; musisz wyjść, a następnie ponownie wejść.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.