Android

Jak skonfigurować firewall z firewalld na Centos 7

Настройка firewall в CentOS 7 (firewalld)

Настройка firewall в CentOS 7 (firewalld)

Spisu treści:

Anonim

Prawidłowo skonfigurowana zapora ogniowa jest jednym z najważniejszych aspektów ogólnego bezpieczeństwa systemu.

FirewallD to kompletne rozwiązanie zapory ogniowej, które zarządza regułami systemu iptables i zapewnia interfejs D-Bus do ich obsługi. Począwszy od CentOS 7, FirewallD zastępuje iptables jako domyślne narzędzie do zarządzania zaporą.

W tym samouczku pokażemy, jak skonfigurować zaporę ogniową za pomocą FirewallD w systemie CentOS 7 i wyjaśnimy podstawowe pojęcia FirewallD.

Wymagania wstępne

Przed rozpoczęciem tego samouczka upewnij się, że jesteś zalogowany na serwerze za pomocą konta użytkownika z uprawnieniami sudo lub użytkownika root. Najlepszą praktyką jest uruchamianie poleceń administracyjnych jako użytkownik sudo zamiast root. Jeśli nie masz użytkownika sudo w swoim systemie CentOS, możesz go utworzyć, postępując zgodnie z tymi instrukcjami.

Podstawowe pojęcia dotyczące zapory ogniowej

FirewallD używa koncepcji stref i usług zamiast łańcucha i reguł iptables. W oparciu o strefy i usługi, które skonfigurujesz, możesz kontrolować, jaki ruch jest dozwolony lub zabroniony do iz systemu.

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

Strefy zapory ogniowej

Strefy to predefiniowane zestawy reguł określające, jaki ruch powinien być dozwolony na podstawie poziomu zaufania w sieciach, 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.

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 jest trwała przy ponownym uruchomieniu. Po uruchomieniu usługi 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, musisz użyć opcji --permanent .

Instalowanie i włączanie FirewallD

  1. Firewalld jest instalowany domyślnie na CentOS 7, ale jeśli nie jest zainstalowany w twoim systemie, możesz zainstalować pakiet, wpisując:

    sudo yum install firewalld

    Usługa zapory jest domyślnie wyłączona. Możesz sprawdzić stan zapory za pomocą:

    sudo firewall-cmd --state

    Aby uruchomić usługę FirewallD i włączyć ją podczas rozruchu:

    sudo systemctl start firewalld sudo systemctl enable firewalld

Praca ze strefami zapory ogniowej

Po włączeniu usługi FirewallD po raz pierwszy strefa public jest ustawiana jako strefa domyślna. Możesz wyświetlić strefę domyślną, wpisując:

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

Domyślnie wszystkim interfejsom sieciowym przypisana jest strefa domyślna. Aby sprawdzić, które strefy są używane przez interfejs sieciowy:

sudo firewall-cmd --get-active-zones

public interfaces: eth0 eth1

Powyższy wynik mówi nam, że oba interfejsy eth0 i eth1 są przypisane do strefy publicznej.

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 wynika, że ​​strefa publiczna jest aktywna i ustawiona jako domyślna, używana zarówno przez interfejsy eth0 jak i eth1 . Ponadto dozwolone są połączenia związane z klientem DHCP i SSH.

sudo firewall-cmd --list-all-zones

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

Zmiana strefy interfejsu

Możesz łatwo zmienić Strefę Interfejsu, używając opcji --zone w połączeniu z opcją --change-interface . Następujące polecenie przypisze interfejs eth1 do strefy pracy:

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 domową, uruchom następujące polecenie:

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

Sprawdź zmiany za pomocą:

sudo firewall-cmd --get-default-zone

home

Otwieranie portu lub usługi

Za pomocą FirewallD możesz zezwolić na ruch dla określonych portów 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

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

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 podczas dodawania usługi. Wystarczy użyć opcji --remove-service zamiast opcji --add-service :

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

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

Co się stanie, jeśli korzystasz z aplikacji takiej jak Plex Media Server, dla której nie ma dostępnej odpowiedniej usługi?

W takich sytuacjach masz dwie opcje. Możesz otworzyć odpowiednie porty lub zdefiniować nową usługę FirewallD.

Na przykład serwer Plex nasłuchuje na porcie 32400 i używa protokołu TCP, aby otworzyć port w strefie publicznej dla bieżącej sesji, użyj opcji --add-port= :

sudo firewall-cmd --zone=public --add-port=32400/tcp Protokoły mogą mieć postać tcp lub udp .

Aby sprawdzić, czy port został pomyślnie dodany, użyj opcji --list-ports :

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

32400/tcp

Aby port 32400 pozostawał otwarty po ponownym uruchomieniu, dodaj regułę do ustawień stałych, uruchamiając to samo polecenie, używając opcji --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=32400/tcp

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żemy 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.

Port przekazywania z zaporą ogniową

Aby przekierować ruch z jednego portu do drugiego portu lub adresu, najpierw włącz maskaradę dla żądanej strefy za pomocą przełącznika --add-masquerade . Na przykład, aby włączyć maskaradę dla typu strefy external :

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

  • Przekazywanie ruchu z jednego portu do drugiego na tym samym serwerze

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 do innego serwera

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

Tworzenie zestawu reguł za pomocą FirewallD

W poniższym przykładzie pokażemy, jak skonfigurować zaporę, jeśli korzystasz z serwera WWW. Zakładamy, że twój serwer ma tylko jeden interfejs eth0 i chcesz zezwolić na ruch przychodzący tylko na porty SSH, HTTP i

  1. Zmień domyślną strefę na dmz

    Użyjemy strefy dmz (zdemilitaryzowanej), ponieważ domyślnie zezwala tylko na ruch SSH. Aby zmienić domyślną strefę na dmz i przypisać ją do interfejsu eth0 , uruchom następujące polecenia:

    sudo firewall-cmd --set-default-zone=dmz sudo firewall-cmd --zone=dmz --add-interface=eth0

    Otwórz porty HTTP i

    Aby otworzyć porty HTTP i HTTPS, dodaj stałe reguły usług do strefy dmz:

    sudo firewall-cmd --permanent --zone=dmz --add-service=http sudo firewall-cmd --permanent --zone=dmz --add-service=https

    Wprowadź zmiany od razu, ponownie ładując zaporę:

    sudo firewall-cmd --reload

    Sprawdź zmiany

    Aby sprawdzić ustawienia konfiguracji strefy dmz:

    sudo firewall-cmd --zone=dmz --list-all

    dmz (active) target: default icmp-block-inversion: no interfaces: eth0 sources: services: ssh http https ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:

    Powyższe dane wyjściowe mówią nam, że dmz jest strefą domyślną, jest stosowany do interfejsu eth0 i porty ssh (22) http (80) i https (443) są otwarte.

Wniosek

Nauczyłeś się konfigurować i zarządzać usługą FirewallD w systemie CentOS.

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 iptables centos security