Android

Jak skonfigurować i zarządzać zaporą ogniową w centos 8

Установка и настройка CentOS в VirtualBox

Установка и настройка CentOS в VirtualBox

Spisu treści:

Anonim

Zapora ogniowa 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ć lub zablokować określony ruch. Prawidłowo skonfigurowana zapora ogniowa jest jednym z najważniejszych aspektów ogólnego bezpieczeństwa systemu.

CentOS 8 jest dostarczany z demonem zapory o nazwie firewalld. Jest to kompletne rozwiązanie z interfejsem D-Bus, który umożliwia dynamiczne zarządzanie zaporą systemową.

W tym samouczku porozmawiamy o tym, jak skonfigurować i zarządzać zaporą ogniową w CentOS 8. Wyjaśnimy również podstawowe koncepcje zapory ogniowej.

Wymagania wstępne

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

Podstawowe pojęcia dotyczące zapory ogniowej

firewalld korzysta z koncepcji stref i usług. Na podstawie skonfigurowanych stref i usług możesz kontrolować, jaki ruch jest dozwolony lub blokowany do iz systemu.

Firewalld może być konfigurowany i zarządzany za pomocą narzędzia wiersza polecenia firewall-cmd .

W CentOS 8 iptables jest zastępowane przez nftables jako domyślny backend zapory ogniowej dla demona firewalld.

Strefy zapory ogniowej

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

Poniżej znajdują się strefy dostarczone przez FirewallD uporządkowane według poziomu zaufania strefy od niezaufanego do zaufanego:

  • drop: wszystkie połączenia przychodzące są odrzucane bez powiadomienia. Dozwolone są tylko połączenia wychodzące. blok: Wszystkie połączenia przychodzące są odrzucane z komunikatem icmp6-adm-prohibited dla hosta IPmp dla IPv4 i dla IPv6n icmp6-adm-prohibited dla icmp6-adm-prohibited . Dozwolone są tylko połączenia wychodzące. public: Do użytku w niezaufanych miejscach publicznych. Nie ufasz innym komputerom w sieci, ale możesz zezwolić na wybrane połączenia przychodzące. zewnętrzne: Do użytku w sieciach zewnętrznych z włączonym maskowaniem NAT, gdy system działa jako brama lub router. Dozwolone są tylko wybrane połączenia przychodzące. wewnętrzna: Do użytku w sieciach wewnętrznych, gdy system działa jako brama lub router. Inne systemy w sieci są ogólnie 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ą ogólnie zaufane. Dozwolone są tylko wybrane połączenia przychodzące. home: Używany do maszyn domowych. Inne komputery w sieci są ogólnie zaufane. Dozwolone są tylko wybrane połączenia przychodzące. zaufany: wszystkie połączenia sieciowe są akceptowane. Ufaj wszystkim komputerom w sieci.

Usługi zapory ogniowej

Usługi zapory ogniowej to predefiniowane reguły obowiązujące w strefie i określające niezbędne ustawienia umożliwiające ruch przychodzący do określonej usługi. Usługi pozwalają łatwo wykonać kilka zadań w jednym kroku.

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

Firewalld Runtime and Permanent Settings

Firewalld używa dwóch oddzielnych zestawów konfiguracji, środowiska wykonawczego i konfiguracji stałej.

Konfiguracja środowiska wykonawczego jest faktyczną konfiguracją działającą i nie utrzymuje się przy ponownym uruchomieniu. Po uruchomieniu demona zapory ładuje konfigurację stałą, która staje się konfiguracją środowiska wykonawczego.

Domyślnie podczas wprowadzania zmian w konfiguracji Firewalld za pomocą narzędzia firewall-cmd zmiany są stosowane w konfiguracji środowiska wykonawczego. Aby zmiany były trwałe, --permanent do polecenia opcję --permanent .

Aby zastosować zmiany w obu zestawach konfiguracyjnych, możesz użyć jednej z następujących dwóch metod:

  1. Zmień konfigurację środowiska wykonawczego i ustaw ją na stałe:

    sudo firewall-cmd sudo firewall-cmd --runtime-to-permanent

    Zmień stałą konfigurację i ponownie załaduj demona zapory ogniowej:

    sudo firewall-cmd --permanent sudo firewall-cmd --reload

Włączanie zapory sieciowej D.

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

sudo dnf install firewalld sudo systemctl enable firewalld --now sudo dnf install firewalld sudo systemctl enable firewalld --now

Możesz sprawdzić status usługi zapory za pomocą:

sudo firewall-cmd --state

Jeśli zapora jest włączona, polecenie powinno zostać wydrukowane. W przeciwnym razie zobaczysz, że not running .

Strefy zapory ogniowej

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

Aby zobaczyć strefę domyślną, wpisz:

sudo firewall-cmd --get-default-zone

public

Aby uzyskać listę wszystkich dostępnych stref, wpisz:

sudo firewall-cmd --get-zones

block dmz drop external home internal public trusted work

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

sudo firewall-cmd --get-active-zones

Poniższe dane wyjściowe pokazują, ż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:

Na podstawie powyższego wyniku widzimy, że strefa publiczna jest aktywna i używa domyślnego celu, którym jest REJECT . Dane wyjściowe pokazują również, że strefa jest używana przez interfejsy eth0 i eth1 i zezwala na ruch klienta DHCP i SSH.

sudo firewall-cmd --list-all-zones

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

Zmiana celu strefy

Cel określa domyślne zachowanie strefy dla ruchu przychodzącego, który nie jest określony. Można ustawić jedną z następujących opcji: default , ACCEPT , REJECT i DROP .

Aby ustawić cel strefy, określ strefę za pomocą opcji --zone i 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 tworzyć określone zestawy reguł dla różnych stref i przypisywać im różne interfejsy. Jest to szczególnie przydatne, gdy masz wiele interfejsów na swoim komputerze.

Aby przypisać interfejs do innej strefy, określ strefę z opcją --zone i interfejs z opcją --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: eth1 public interfaces: eth0

Zmiana strefy domyślnej

Aby zmienić strefę domyślną, użyj opcji --set-default-zone , a następnie nazwy strefy, którą chcesz ustawić jako domyślną.

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

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

Sprawdź zmiany za pomocą:

sudo firewall-cmd --get-default-zone

home

Tworzenie nowych stref

Firewalld pozwala także tworzyć własne strefy. Jest to przydatne, gdy chcesz utworzyć reguły dla poszczególnych aplikacji.

W poniższym przykładzie utworzymy nową strefę o nazwie memcached , otwórz port 11211 i zezwalamy na dostęp tylko z 192.168.100.30 IP 192.168.100.30 :

  1. Utwórz strefę:

    sudo firewall-cmd --new-zone=memcached --permanent

    Dodaj reguły do ​​strefy:

    sudo firewall-cmd --zone=memcached --add-port=11211/udp --permanent sudo firewall-cmd --zone=memcached --add-port=11211/tcp --permanent sudo firewall-cmd --zone=memcached --add-source=192.168.100.30/32 --permanent

    Ponownie załaduj demona zapory ogniowej, aby aktywować zmiany:

    sudo firewall-cmd --reload

Usługi zapory ogniowej

Za pomocą firewalld można 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, należy:

sudo firewall-cmd --get-services

Więcej informacji o każdej usłudze 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

WWW (HTTP) 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. WWW (HTTP) 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.

Aby zezwolić na przychodzący ruch HTTP (port 80) dla interfejsów w strefie publicznej, tylko dla bieżącej sesji (konfiguracja środowiska wykonawczego):

sudo firewall-cmd --zone=public --add-service=http Jeśli modyfikujesz strefę domyślną, możesz --zone 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

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

sudo firewall-cmd --runtime-to-permanent

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

sudo firewall-cmd --permanent --zone=public --list-services

ssh dhcpv6-client

Składnia usuwania usługi jest taka sama jak przy dodawaniu usługi. 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ż wspomniano, usługi domyślne są przechowywane w katalogu /usr/lib/firewalld/services . Najłatwiejszym 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 i tagi. Najważniejszym znacznikiem, który musisz zmienić, jest znacznik port , który określa 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

plexmediaserver 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. plexmediaserver 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.

Zapisz plik i ponownie załaduj usługę FirewallD:

sudo firewall-cmd --reload

Możesz teraz korzystać z usługi plexmediaserver w swoich strefach tak samo, jak innych usług.

Otwieranie portów i źródłowych adresów IP

Firewalld pozwala także szybko włączyć cały ruch z zaufanego adresu IP lub określonego portu bez tworzenia definicji usługi.

Otwieranie źródłowego adresu IP

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

Na przykład, aby zezwolić na 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

Utrwal nową regułę:

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 w przypadku dodawania jednego. Wystarczy użyć opcji --remove-source zamiast opcji --add-source :

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

Otwieranie portu źródłowego

Aby zezwolić na cały ruch przychodzący na danym porcie, określ strefę za pomocą opcji --zone oraz port i protokół za pomocą opcji --add-port .

Na przykład, aby otworzyć port 8080 w strefie publicznej dla bieżącej sesji, którą zlikwidowałeś:

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

Protokół może mieć postać tcp , udp , sctp lub dccp .

Sprawdź zmiany:

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

8080

Aby pozostawić port otwarty po ponownym uruchomieniu, dodaj regułę do ustawień stałych, 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

Porty przekierowujące

Aby przekierować ruch z jednego portu do drugiego, 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

Przekazywanie ruchu z jednego portu do drugiego na adres IP

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

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

Przekaż ruch na inny adres IP

W poniższym przykładzie przekazujemy ruch z portu 80 do portu 80 na serwerze o IP 10.10.10.2 :

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

Przekaż ruch do innego serwera na innym porcie

W poniższym przykładzie przekierowujemy ruch z portu 80 do portu 8080 na serwerze o 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 utrwalić regułę przekazywania, użyj:

sudo firewall-cmd --runtime-to-permanent

Wniosek

Nauczyłeś się konfigurować i zarządzać usługą firewalld w swoim 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.

firewalld firewall centos bezpieczeństwo