Skonfiguruj FirewallD na serwerze z CentOS 8 i 7

Począwszy od CentoOS 7 pojawiło się nowe narzędzie do konfiguracji reguł filtrowania ruchu. zapora ogniowa. Zaleca się używanie go do zarządzania regułami iptables. CentOS 8 używa teraz frameworka nftables zamiast standardowego pakietu filtrującego iptables, a podczas konfigurowania reguł zapory ogniowej przez firewalld, faktycznie konfigurujesz nftables. W tym artykule rozważymy instalację, podstawowe pojęcia i konfigurację zapory ogniowej na serwerze z systemem CentOS 8 (w CentOS 7 wszystko jest takie samo).


Treść

  • Podstawowe pojęcia, strefy i reguły zapory ogniowej
  • Zainstaluj i włącz firewalld na CentOS
  • Praca z regułami zapory ogniowej
  • Firewalld: Blokowanie adresów IP, wyjątek
  • Przekazywanie portów w zaporze ogniowej

Firewalld - zapora ogniowa chroniąca serwer przed niechcianym ruchem z obsługą dynamicznego zarządzania regułami (bez ponownego uruchamiania) i implementacją trwałych reguł zapory ogniowej. Działa jako interfejs dla iptables i nftables. FirewallD może być używany w prawie wszystkich dystrybucjach Linuksa.

Podstawowe pojęcia, strefy i reguły zapory ogniowej

Przed rozpoczęciem instalacji i konfiguracji zapora ogniowa, zapoznamy się z koncepcją stref, które służą do określania poziomu zaufania do różnych związków. Dla różnych stref zapora ogniowa możesz zastosować różne reguły filtrowania, określić aktywne opcje zapory w postaci predefiniowanych usług, protokołów i portów, przekierowania portów i reguł rozszerzonych.

Firewalld filtruje ruch przychodzący według stref, w zależności od reguł zastosowanych do strefy. Jeśli IP-adres nadawcy żądania jest zgodny z regułami dowolnej strefy, pakiet zostanie wysłany przez tę strefę. Jeśli adres nie pasuje do żadnej ze stref skonfigurowanych na serwerze, pakiet zostanie przetworzony przez strefę domyślną. Podczas instalacji zapora ogniowa domyślna strefa nazywa się publiczne.

Istnieją zapory w firewalld, w których uprawnienia do różnych usług są już wstępnie skonfigurowane. Możesz użyć tych ustawień lub stworzyć własne strefy. Lista stref domyślnych, które są tworzone podczas instalacji firewalld (przechowywane w katalogu / usr / lib / firewalld / zone /):

upuśćminimalny poziom zaufania. Wszystkie połączenia przychodzące są blokowane bez odpowiedzi, dozwolone są tylko połączenia wychodzące;
blokstrefa jest podobna do poprzedniej, ale gdy przychodzące żądania są odrzucane, wysyłany jest komunikat o niedozwolonym hostie icmp dla Ipv4 lub o niedozwolonym icmp6-adm dla IPv6;
publiczneReprezentuje publiczne, niezaufane sieci. Możesz zezwolić na wybrane połączenia przychodzące indywidualnie;
zewnętrznysieci zewnętrzne podczas korzystania z zapory ogniowej jako bramy. Jest skonfigurowany do maskowania NAT, więc twoja sieć wewnętrzna pozostaje prywatna, ale dostępna;
wewnętrznyantonim strefy zewnętrznej. Host ma wystarczający poziom zaufania, dostępnych jest wiele dodatkowych usług;
dmzużywany dla komputerów znajdujących się w strefie DMZ (komputery izolowane bez dostępu do reszty sieci). Dozwolone są tylko niektóre połączenia przychodzące;
pracastrefa dla pracujących maszyn (większość komputerów w sieci jest zaufana);
domstrefa sieci domowej. Możesz ufać większości komputerów, ale obsługiwane są tylko niektóre połączenia przychodzące;
zaufanyUfaj wszystkim komputerom w sieci. Najbardziej otwarta ze wszystkich dostępnych opcji, wymaga świadomego użycia.

W zapora ogniowa stosowane są dwa zestawy zasad - stały i tymczasowy. Reguły tymczasowe działają do momentu ponownego uruchomienia serwera. Domyślnie podczas dodawania reguł do zapora ogniowa, reguły są uważane za tymczasowe (środowisko uruchomieniowe) Aby dodać regułę na bieżąco, musisz użyć flagi - stały. Te zasady będą obowiązywać po ponownym uruchomieniu serwera..

Zainstaluj i włącz firewalld na CentOS

W CentOS 7/8 zapora ogniowa jest instalowana domyślnie podczas instalacji systemu operacyjnego. Jeśli go usunąłeś i chcesz zainstalować firewalld, możesz użyć standardowego menedżera yum / dnf:

# yum zainstaluj firewalld -y - dla Centos 7
# dnf zainstaluj firewalld -y - dla Centos 8

Demon zapora ogniowa zaczął się automatycznie wraz z uruchomieniem serwera, musisz dodać go do uruchamiania:

# systemctl enable firewalld

I uruchom:

# systemctl start firewalld

Sprawdź status usługi:

# systemctl status firewalld

● firewalld.service - firewalld - dynamiczny demon zapory Załadowano: załadowano (/usr/lib/systemd/system/firewalld.service; włączony; preset dostawcy: włączony) Aktywny: aktywny (uruchomiony) od Pon 2019-10-14 14:54 : 40 +06; 22s temu Dokumenty: man: firewalld (1) Główny PID: 13646 (firewalld) Grupa C: /system.slice/firewalld.service └─13646 / usr / bin / python2 -Es / usr / sbin / firewalld --nofork --nopid 14 października 14:54:40 server.vpn.ru systemd [1]: Uruchamianie zapory ogniowej - dynamiczny demon zapory ogniowej ... 14 października 14:54:40 server.vpn.ru systemd [1]: Uruchomienie zapory ogniowej - dynamiczny demon zapory ogniowej.

Lub przez polecenie:

# firewall-cmd --state

Polecenie firewall-cmd to zapora ogniowa dla nftables / iptables.

# firewall-cmd --state

bieganie

Praca z regułami zapory ogniowej

Domyślne zasady:

Przed skonfigurowaniem reguł zapory ogniowej należy sprawdzić, która strefa jest domyślnie używana:

# firewall-cmd --get-default-zone

Ponieważ właśnie zainstalowaliśmy i nie skonfigurowaliśmy firewalla, mamy strefę domyślną publiczne.

Sprawdź rdzeń. Jest także jedna - publiczna:

# firewall-cmd --get-active-zone

interfejsy publiczne: eth0

Jak widać, interfejs sieciowy eth0 jest kontrolowany przez strefę. publiczne.

Listę interfejsów sieciowych CentOS można wyświetlić:

# ip link show
Lub
# status urządzenia nmcli

Aby wyświetlić podstawowe zasady, wprowadź:

# firewall-cmd --list-all

public (active) target: default icmp-block-inversion: brak interfejsów: źródła eth0: usługi: dhcpv6-client porty ssh: protokoły: maskarada: brak portów przesyłania: porty źródłowe: bloki icmp: bogate reguły:

Jak widać z listy, do tej strefy dodano zwykłe operacje związane z klientem DHCP i ssh..

Dostępne strefy

Aby wyświetlić listę wszystkich stref, musisz uruchomić polecenie:

# firewall-cmd --get-zone

Mam następującą listę:

blok dmz upuść zewnętrzny dom wewnętrzny publiczny zaufana praca

Aby sprawdzić reguły określonej strefy, dodaj flagę strefy.

# firewall-cmd --zone = home --list-all

cel domowy: domyślny inwersja bloków icmp: brak interfejsów: źródła: usługi: dhcpv6-client mdns samba-client porty ssh: protokoły: maskarada: brak portów przesyłania: porty źródłowe: bloki icmp: bogate reguły:

Reguły wszystkich stref można wyświetlić za pomocą polecenia:

# firewall-cmd --list-all-zone

Lista będzie dość duża, ponieważ może istnieć wiele stref.

Zmień strefę domyślną.

Domyślnie wszystkie interfejsy sieciowe znajdują się w strefie publiczne, ale można je przenieść do dowolnej strefy za pomocą polecenia:

# firewall-cmd --zone = home -change-interface = eth0

Po parametrze -strefa = określ żądaną strefę.

Aby zmienić domyślną strefę, użyj polecenia:

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

Dodawanie reguł dla aplikacji

Aby otworzyć port dla aplikacji, możesz dodać usługę do wyjątków. Wyświetl listę dostępnych usług:

# firewall-cmd --get-services

Dane wyjściowe będą zawierać dużą liczbę usług. Szczegóły usługi są zawarte w xml plik. Te pliki znajdują się w katalogu / usr / lib / firewalld / services.

Na przykład:

# cd / usr / lib / firewalld / services

# cat smtp.xml

  Poczta (SMTP) Ta opcja umożliwia dostarczanie poczty przychodzącej SMTP. Jeśli chcesz zezwolić zdalnym hostom na bezpośrednie połączenie z komputerem w celu dostarczania poczty, włącz tę opcję. Nie musisz tego włączać, jeśli pobierasz pocztę od serwera swojego dostawcy usług internetowych przez POP3 lub IMAP, lub jeśli używasz narzędzia takiego jak fetchmail. Pamiętaj, że niepoprawnie skonfigurowany serwer SMTP może pozwolić zdalnym komputerom na używanie twojego serwera do wysyłania spamu.  

Plik XML zawiera opis usługi, protokół i numer portu, które zostaną otwarte w zaporze ogniowej.

Podczas dodawania reguł możesz użyć parametru -usługa dodatkowa, Aby otworzyć dostęp do określonej usługi:

# firewall-cmd --zone = public --add-service = http

sukces

# firewall-cmd --zone = public --add-service = https

sukces

Po dodaniu reguł możesz sprawdzić, czy usługi są dodawane do określonej strefy:

# firewall-cmd --zone = publiczne --list-services

klient dhcpv6 http https ssh

Jeśli chcesz, aby te reguły były trwałe, musisz dodać parametr podczas dodawania -stały.

Aby usunąć usługę ze strefy:

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

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

Test HTHPSVS-Client HTHPV6-Client

Jeśli chcesz dodać swoją usługę do wyjątków, możesz utworzyć plik xml sam i wypełnij to. Możesz skopiować dane z dowolnej usługi, zmienić nazwę, opis i numer portu.

Skopiuj plik smtp.xml do katalogu do pracy z usługami użytkownika:

# cp /usr/lib/firewalld/services/smtp.xml / etc / firewalld / services

Zmień opis usługi w pliku.

Nazwa pliku XML musi również zostać zmieniona na nazwę usługi. Następnie należy ponownie uruchomić zaporę ogniową i sprawdzić, czy nasza usługa znajduje się na liście:

# firewall-cmd --get-services

Zadzwoniłem do serwisu test a na liście pojawił się:

syslog-tls telnet test tftp

Teraz możesz dodać utworzoną usługę do dowolnej strefy:

# firewall-cmd --zone = public --add-service = test --permanent

sukces

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

dhcpv6-client http https ssh test

Jeśli nie znalazłeś potrzebnej usługi na liście, możesz otworzyć żądany port w zaporze ogniowej za pomocą polecenia:

# firewall-cmd --zone = public -add-port = 77 / tcp - otwórz port 77 tcp
# firewall-cmd --zone = public -add-port = 77 / udp - otwórz port 77 udp
# firewall-cmd --zone = public -add-port = 77-88 / udp - zakres portów otwartych 77–88 udp
# firewall-cmd --zone = public -list-porty - sprawdź listę dozwolonych portów

Zablokuj / zezwól na odpowiedzi ICMP:

# firewall-cmd --zone = public --add-icmp-block = echo-reply
# firewall-cmd --zone = public --remove-icmp-block = echo-reply

Usuń dodany port:

# firewall-cmd --zone = public -remove-port = 77 / udp - usuń tymczasową regułę 77 udp

# firewall-cmd --permanent --zone = public -remove-port = 77 / udp - usuń trwałą regułę

Dodawanie stref niestandardowych

Możesz stworzyć własną strefę (nazwę ją nasz):

# firewall-cmd --permanent --new-zone = nasz

Po utworzeniu nowej strefy, a także po utworzeniu usługi, musisz zrestartować komputer zapora ogniowa:

# firewall-cmd --reload

sukces

# firewall-cmd --get-zone

blok dmz upuść zewnętrzny dom wewnętrzny nasza publiczna zaufana praca

Strefa nasz dostępne. Możesz dodać do niego usługi lub otworzyć określone porty.

Firewalld: Blokowanie adresów IP, wyjątek

Możesz dodać zaufane adresy IP do wyjątków zapory ogniowej lub zablokować niechciane.

Aby dodać określony adres IP (na przykład 8.8.8.8) na serwerze za pomocą wyjątków zapora ogniowa, użyj polecenia:

# firewall-cmd --zone = public --add-rich-rules = 'family family = "ipv4" adres źródłowy = "8.8.8.8" accept "

Sprawdź obszar i upewnij się IP dodano do wyjątków w regule reguł rozszerzonych:

# firewall-cmd --zone = public --list-all

public (active) target: default icmp-block-inversion: brak interfejsów: źródła eth0: usługi: dhcpv6-client http https ssh porty testowe: protokoły: maskarada: brak portów do przesyłania: porty źródłowe: icmp-bloki: bogate reguły: rodzina reguł = adres źródłowy „ipv4” = „8.8.8.8” zaakceptuj

Aby zablokować IP, trzeba wymienić zaakceptować na odrzucić:

# firewall-cmd --zone = public --add-rich-rules = 'rodzina reguł = "ipv4" adres źródłowy = "8.8.4.4" odrzuć "

# firewall-cmd --zone = public --list-all

public (active) target: default icmp-block-inversion: brak interfejsów: źródła eth0: usługi: dhcpv6-client http https ssh porty testowe: protokoły: maskarada: brak portów do przesyłania: porty źródłowe: icmp-bloki: bogate reguły: rodzina reguł = adres źródłowy „ipv4” = „8.8.8.8” zaakceptuj rodzina reguł = adres źródłowy „ipv4” = „8.8.4.4” odrzuć

Możesz włączyć określoną usługę tylko dla żądań z określonego adresu IP:

# firewall-cmd --permanent --add-rich-rules 'rodzina reguł = "ipv4" adres źródłowy = "10.10.1.0/24" nazwa usługi = "https" accept "

Jeśli pilnie potrzebujesz w ogóle zablokować wszystkie żądania do serwera, użyj polecenia paniki:

# firewall-cmd --panic-on

Możesz wyłączyć tryb paniki za pomocą polecenia:

# firewall-cmd --panic-off

Lub ponowne uruchomienie serwera.

Możesz zablokować konfigurację zapory ogniowej, aby lokalne usługi z uprawnieniami administratora nie mogły zmienić utworzonych reguł zapory:

# firewall-cmd --lockdown-on

Wyłącz tryb blokady:

# firewall-cmd --lockdown-off

Przekazywanie portów w zaporze ogniowej

Możesz utworzyć regułę przekierowania portów w firewalld. Aby przekierować port 443 na 9090:

# firewall-cmd --zone = public --add-forward-port = port = 443: proto = tcp: toport = 9090 - stały

W systemie Windows można skonfigurować przekierowanie portów za pomocą narzędzia netsh.

Aby usunąć regułę przekierowania portów:

# firewall-cmd --zone = public --remove-forward-port = port = 443: proto = tcp: toport = 9090