Jak skonfigurować zaporę sieciową i zarządzać nią w CentOS 8

firewall to metoda monitorowania i filtrowania przychodzącego i wychodzącego ruchu sieciowego. Działa poprzez zdefiniowanie zestawu reguł bezpieczeństwa, które określają, czy zezwolić, czy zablokować określony ruch. Prawidłowo skonfigurowana zapora sieciowa jest jednym z najważniejszych aspektów ogólnego bezpieczeństwa systemu.

CentOS 8 jest wyposażony w demona Firewalla o nazwie firewalld. Jest to kompletne rozwiązanie z interfejsem D-Bus, które pozwala na dynamiczne zarządzanie Zaporą systemu.

w tym samouczku porozmawiamy o tym, jak skonfigurować zaporę sieciową i zarządzać nią w CentOS 8. Wyjaśnimy również podstawowe pojęcia FirewallD.

wymagania wstępne #

aby skonfigurować usługę zapory sieciowej, musisz być zalogowany jako root lub użytkownik z uprawnieniami sudo.

podstawowe pojęcia Firewalld #

firewalld wykorzystuje pojęcia stref i usług. W oparciu o strefy i usługi, które skonfigurujesz, możesz kontrolować, jaki ruch jest dozwolony lub zablokowany do iz systemu.

Firewalld można konfigurować i zarządzać za pomocą narzędzia wiersza poleceń firewall-cmd.

w CentOS 8, iptables jest zastępowane przez nftables jako domyślny backend Firewalla dla demona firewalld.

strefy Firewalld #

strefy to predefiniowane zestawy reguł, które określają poziom zaufania sieci, do których podłączony jest komputer. Do strefy można przypisać interfejsy sieciowe i źródła.

poniżej znajdują się strefy dostarczone przez FirewallD uporządkowane zgodnie z poziomem zaufania strefy od niezaufanych do zaufanych:

  • drop: Wszystkie połączenia przychodzące są usuwane bez powiadomienia. Dozwolone są tylko połączenia wychodzące.
  • blok: wszystkie połączenia przychodzące są odrzucane za pomocą wiadomości icmp-host-prohibited dla IPv4 i icmp6-adm-prohibited dla IPv6n. dozwolone są tylko połączenia wychodzące.
  • publiczne: do użytku w niezaufanych miejscach publicznych. Nie ufasz innym komputerom w sieci, ale możesz zezwolić na wybrane połączenia przychodzące.
  • zewnętrzny: do użytku w sieciach zewnętrznych z włączoną maskaradą NAT, gdy system działa jako brama lub router. Dozwolone są tylko wybrane połączenia przychodzące.
  • wewnętrzny: do użytku w sieciach wewnętrznych, gdy system działa jako brama lub router. Inne systemy w sieci są na ogół zaufane. Dozwolone są tylko wybrane połączenia przychodzące.
  • dmz: używany dla komputerów znajdujących się w strefie zdemilitaryzowanej, które mają ograniczony dostęp do reszty sieci. Dozwolone są tylko wybrane połączenia przychodzące.
  • praca: używany do maszyn roboczych. Inne komputery w sieci są zazwyczaj zaufane. Dozwolone są tylko wybrane połączenia przychodzące.
  • Strona główna: używany do maszyn domowych. Inne komputery w sieci są zazwyczaj zaufane. Dozwolone są tylko wybrane połączenia przychodzące.
  • zaufane: wszystkie połączenia sieciowe są akceptowane. Zaufaj wszystkim komputerom w sieci.

usługi zapory #

usługi Firewalld to predefiniowane reguły, które mają zastosowanie w strefie i definiują niezbędne ustawienia zezwalające na ruch przychodzący dla określonej usługi. Usługi umożliwiają łatwe wykonywanie kilku zadań w jednym kroku.

na przykład usługa może zawierać definicje dotyczące otwierania portów, przekazywania ruchu i innych.

firewalld Runtime and Permanent Settings #

Firewalld używa dwóch oddzielnych zestawów konfiguracji: runtime i permanent configuration.

konfiguracja runtime jest aktualną konfiguracją uruchomioną i nie utrzymuje się przy ponownym uruchomieniu. Kiedy Demon firewalld się uruchamia, ładuje stałą konfigurację, która staje się konfiguracją runtime.

domyślnie podczas wprowadzania zmian w konfiguracji Firewalld przy użyciu narzędzia firewall-cmd zmiany są stosowane do konfiguracji runtime. Aby zmiany stały, dołącz do polecenia opcję --permanent.

aby zastosować zmiany w obu zestawach konfiguracji, możesz użyć jednej z następujących metod:

  1. zmień konfigurację runtime i ustaw ją na stałe:

    sudo firewall-cmd <options>sudo firewall-cmd --runtime-to-permanent
  2. Zmień stałą konfigurację i przeładuj demona firewalld:

    sudo firewall-cmd --permanent <options>sudo firewall-cmd --reload

włączenie FirewallD #

na CentOS 8 firewalld jest domyślnie instalowany i włączany. Jeśli z jakiegoś powodu nie jest zainstalowany w Twoim systemie, możesz zainstalować i uruchomić demona, wpisując:

sudo dnf install firewalldsudo systemctl enable firewalld --now

możesz sprawdzić stan usługi firewall za pomocą:

sudo firewall-cmd --state

jeśli firewall jest włączony, polecenie powinno wydrukować running. W przeciwnym razie zobaczysz not running.

strefy Firewalld #

jeśli nie została ona zmieniona, Domyślna strefa jest ustawiona na public, a wszystkie interfejsy sieciowe są przypisane do tej strefy.

Strefa domyślna to ta, która jest używana do wszystkiego, co nie jest jawnie przypisane do innej strefy.

możesz zobaczyć domyślną strefę wpisując:

sudo firewall-cmd --get-default-zone
public

aby wyświetlić listę wszystkich dostępnych stref, wpisz:

sudo firewall-cmd --get-zones
block dmz drop external home internal public trusted work

aby zobaczyć strefy aktywne i przypisane do nich interfejsy sieciowe:

sudo firewall-cmd --get-active-zones

poniższy wynik pokazuje, że interfejsy eth0 i eth1 są przypisane do strefy public :

public interfaces: eth0 eth1

możesz wydrukować ustawienia konfiguracji strefy za pomocą:

sudo firewall-cmd --zone=public --list-all
public (active) target: default icmp-block-inversion: no interfaces: eth0 eth1 sources: services: ssh dhcpv6-client ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:

z powyższego wyniku widzimy, że strefa publiczna jest aktywna i używa domyślnego celu, którym jest REJECT. Wyjście pokazuje również, że strefa jest używana przez interfejsy eth0 i eth1 i umożliwia ruch klienta DHCP i SSH.

jeśli chcesz sprawdzić konfiguracje wszystkich dostępnych stref wpisz:

sudo firewall-cmd --list-all-zones

polecenie drukuje ogromną listę z ustawieniami wszystkich dostępnych stref.

Zmiana celu strefy #

cel definiuje domyślne zachowanie strefy dla ruchu przychodzącego, które nie jest określone. Można go ustawić na jedną z następujących opcji: default, ACCEPT, REJECT, i DROP

aby ustawić cel strefy, określ strefę za pomocą opcji --zone, a cel za pomocą opcji --set-target.

na przykład, aby zmienić cel strefy public na DROP, Uruchom:

sudo firewall-cmd --zone=public --set-target=DROP

Przypisywanie interfejsu do innej strefy #

możesz utworzyć określone zestawy reguł dla różnych stref i przypisać do nich różne interfejsy. Jest to szczególnie przydatne w przypadku wielu interfejsów na komputerze.

aby przypisać interfejs do innej strefy, określ strefę za pomocą opcji --zone, a interfejs za pomocą opcji --change-interface.

na przykład następujące polecenie przypisuje interfejs eth1 do strefy work :

sudo firewall-cmd --zone=work --change-interface=eth1

Sprawdź zmiany wpisując:

sudo firewall-cmd --get-active-zones
work interfaces: eth1public interfaces: eth0

zmiana strefy domyślnej #

aby zmienić strefę domyślną, użyj opcji --set-default-zone, po której następuje nazwa strefy, którą chcesz ustawić jako domyślną.

na przykład, aby zmienić domyślną strefę na home, wykonasz następujące polecenie:

sudo firewall-cmd --set-default-zone=home

zweryfikuj zmiany za pomocą:

sudo firewall-cmd --get-default-zone
home

tworzenie nowych stref #

Firewalld pozwala również na tworzenie własnych stref. Jest to przydatne, gdy chcesz utworzyć reguły dla poszczególnych aplikacji.

w poniższym przykładzie utworzymy nową strefę o nazwie memcached, otworzymy port 11211 i umożliwimy dostęp tylko z adresu IP 192.168.100.30 :

  1. Utwórz strefę:

    sudo firewall-cmd --new-zone=memcached --permanent
  2. Dodaj Zasady do strefy:

    sudo firewall-cmd --zone=memcached --add-port=11211/udp --permanentsudo firewall-cmd --zone=memcached --add-port=11211/tcp --permanentsudo firewall-cmd --zone=memcached --add-source=192.168.100.30/32 --permanent
  3. Przeładuj demona firewalld, aby aktywować zmiany:

    sudo firewall-cmd --reload

usługi Firewalld #

dzięki firewalld możesz zezwolić na ruch dla określonych portów i / lub źródeł w oparciu o predefiniowane reguły zwane usługami.

aby uzyskać listę wszystkich domyślnych dostępnych usług typu:

sudo firewall-cmd --get-services

więcej informacji na temat każdej usługi można znaleźć, otwierając powiązany .plik xml w katalogu /usr/lib/firewalld/services. Na przykład usługa HTTP jest zdefiniowana w następujący sposób:

/usr/lib/firewalld/services/http.xml
<?xml version="1.0" encoding="utf-8"?><service> <short>WWW (HTTP)</short> <description>HTTP is the protocol used to serve Web pages. If you plan to make your Web server publicly available, enable this option. This option is not required for viewing pages locally or developing Web pages.</description> <port protocol="tcp" port="80"/></service>

Zezwolenie na przychodzący ruch HTTP (port 80) dla interfejsów w strefie publicznej, tylko dla bieżącej sesji (konfiguracja runtime) typu:

sudo firewall-cmd --zone=public --add-service=http
jeśli modyfikujesz strefę domyślną, możesz pominąć opcję --zone.

aby sprawdzić, czy usługa została pomyślnie dodana, użyj opcji --list-services :

sudo firewall-cmd --zone=public --list-services
ssh dhcpv6-client http

aby utrzymać otwarty port 80 po ponownym uruchomieniu uruchom ponownie to samo polecenie z opcją --permanent lub wykonaj:

sudo firewall-cmd --runtime-to-permanent

użyj opcji --list-services wraz z opcją --permanent, aby zweryfikować zmiany:

sudo firewall-cmd --permanent --zone=public --list-services
ssh dhcpv6-client http

składnia usuwania usługi jest taka sama jak przy dodawaniu. Wystarczy użyć --remove-service zamiast flagi --add-service :

sudo firewall-cmd --zone=public --remove-service=http --permanent

powyższe polecenie usuwa usługę http ze stałej konfiguracji strefy publicznej.

Tworzenie nowej usługi FirewallD #

jak już wspomnieliśmy, domyślne usługi są przechowywane w katalogu /usr/lib/firewalld/services. Najprostszym sposobem utworzenia nowej usługi jest skopiowanie istniejącego pliku usługi do katalogu /etc/firewalld/services, który jest miejscem dla usług utworzonych przez użytkownika i zmodyfikowanie ustawień pliku.

na przykład, aby utworzyć definicję usługi dla Plex Media Server, możesz użyć pliku usługi SSH:

sudo cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/plexmediaserver.xml

Otwórz nowo utworzony plik plexmediaserver.xml i zmień krótką nazwę i opis usługi w tagach <short> i <description>. Najważniejszym znacznikiem, który musisz zmienić, jest znacznik port, który definiuje numer portu i protokół, który chcesz otworzyć.

w poniższym przykładzie otwieramy porty 1900 UDP i 32400 TCP.

/etc/firewalld/services/plexmediaserver.xml
<?xml version="1.0" encoding="utf-8"?><service version="1.0"><short>plexmediaserver</short><description>Plex is a streaming media server that brings all your video, music and photo collections together and stream them to your devices at anytime and from anywhere.</description><port protocol="udp" port="1900"/><port protocol="tcp" port="32400"/></service>

Zapisz plik i przeładuj usługę FirewallD:

sudo firewall-cmd --reload

możesz teraz korzystać z usługi plexmediaserver w swoich strefach tak samo jak każda inna usługa.

otwieranie portów i adresów źródłowych #

Firewalld pozwala również szybko włączyć cały ruch z zaufanego adresu IP lub na określonym porcie bez tworzenia definicji usługi.

otwieranie źródłowego adresu IP #

aby umożliwić cały ruch przychodzący z określonego adresu IP (lub zakresu), określ strefę za pomocą opcji --zone, a źródłowy adres IP za pomocą opcji --add-source.

na przykład, aby umożliwić cały ruch przychodzący z 192.168.1.10 w strefie public, Uruchom:

sudo firewall-cmd --zone=public --add-source=192.168.1.10

trwałość nowej reguły:

sudo firewall-cmd --runtime-to-permanent

Sprawdź zmiany za pomocą następującego polecenia:

sudo firewall-cmd --zone=public --list-sources
192.168.1.10

składnia usuwania źródłowego adresu IP jest taka sama jak przy dodawaniu. Wystarczy użyć opcji --remove-source zamiast opcji --add-source :

sudo firewall-cmd --zone=public --remove-source=192.168.1.10

otwarcie portu źródłowego #

aby umożliwić cały ruch przychodzący na danym porcie, określ strefę za pomocą opcji --zone, a port i protokół za pomocą opcji --add-port.

na przykład, aby otworzyć port 8080 w strefie publicznej dla bieżącej sesji, którą uruchomisz:

sudo firewall-cmd --zone=public --add-port=8080/tcp

protokół może być albo tcp, udp, sctp, lub dccp

Sprawdź zmiany:

sudo firewall-cmd --zone=public --list-ports
8080

aby utrzymać otwarty port po ponownym uruchomieniu, Dodaj regułę do stałych ustawień, uruchamiając to samo polecenie za pomocą flagi --permanent lub wykonując:

sudo firewall-cmd --runtime-to-permanent

składnia usuwania portu jest taka sama jak podczas dodawania portu. Wystarczy użyć opcji --remove-port zamiast opcji --add-port.

sudo firewall-cmd --zone=public --remove-port=8080/tcp

przekazywanie portów #

aby przekazać ruch z jednego portu na drugi, najpierw włącz maskaradę dla żądanej strefy za pomocą opcji --add-masquerade. Na przykład, aby włączyć maskaradę dla strefy external, wpisz:

sudo firewall-cmd --zone=external --add-masquerade

przekazuj ruch z jednego portu na drugi pod adresem IP #

w poniższym przykładzie przekazujemy ruch z portu 80 na port 8080 na tym samym serwerze:

sudo firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toport=8080

przekierowanie ruchu na inny adres IP #

w poniższym przykładzie przesyłamy ruch z portu 80 na port 80 na serwerze z IP 10.10.10.2:

sudo firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toaddr=10.10.10.2

przekierowanie ruchu na inny serwer na innym porcie #

w poniższym przykładzie przesyłamy ruch z portu 80 na port 8080 na serwerze z IP 10.10.10.2:

sudo firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toport=8080:toaddr=10.10.10.2

aby uczynić regułę forward trwałą, użyj:

sudo firewall-cmd --runtime-to-permanent

wniosek #

nauczyłeś się konfigurować i zarządzać usługą firewalld w systemie CentOS 8.

upewnij się, że zezwalasz na wszystkie połączenia przychodzące, które są niezbędne do prawidłowego funkcjonowania systemu, jednocześnie ograniczając wszystkie niepotrzebne połączenia.



+