Jak instalować, konfigurować i używać zapory ogniowej w Centos i Ubuntu

Jak instalować, konfigurować i używać zapory ogniowej w Centos i Ubuntu

Firewalld (Demon Firewall) jest alternatywą dla iptables Usługa, do dynamicznego zarządzania zaporą systemu z obsługą stref sieciowych (lub zapory) i zapewnia interfejs D-Bus do zarządzania konfiguracją. Jest łatwy w użyciu i konfiguracji, a teraz jest to domyślne narzędzie do zarządzania zaporą zapory RHEL/CENTOS, Fedora i kilka innych rozkładów Linux.

W tym artykule omówimy, jak skonfigurować systemy zapory systemowej Firewalld i zaimplementuj podstawowe filtrowanie pakietów Centos/Rhel 7 I Ubuntu.

Podstawy zapory ogniowej

Firewalld obejmuje trzy warstwy, które są:

  • warstwa rdzenia: Odpowiedzialny za obsługę konfiguracji i tylnych końców (wymienione poniżej).
  • Interfejs D-Bus: Podstawowy sposób zmiany i tworzenia konfiguracji zapory.
  • Backends: do interakcji z Netfilter (natywny moduł jądra używany do zapory). Obejmują one iptables, ip6Tables, eBTables, ipset, nft, linnftables; NetworkManager; i moduły.

Zarządza regułami zapory, wdrażając strefy sieci/zapory, które określają poziom zaufania połączeń sieciowych lub interfejsów. Inne obsługiwane funkcje zapory obejmują usługi, konfiguracja bezpośrednia (używana do bezpośredniego przekazywania surowej składni iptables), ipsets, a także typów ICMP.

Dwa rodzaje środowisk konfiguracyjnych są obsługiwane przez Firewalld:

  • Konfiguracja środowiska wykonawczego, która jest skuteczna tylko do momentu ponownego uruchomienia maszyny lub usługi zapory ogniowej
  • Stała konfiguracja, która jest zapisywana i działa uporczywie.

Narzędzie wiersza poleceń Firewall-CMD służy do zarządzania czasem wykonywania i konfiguracji stałej. Alternatywnie możesz użyć narzędzia konfiguracji graficznego interfejsu użytkownika Firewall-Config (GUI) do interakcji z demem.

Ponadto, Firewalld Oferuje dobrze zdefiniowany interfejs dla innych lokalnych usług lub aplikacji, aby bezpośrednio żądać zmian w zasadach zapory, jeśli działają z uprawnieniami root.

Globalny plik konfiguracyjny dla Firewalld znajduje się pod adresem /etc/firewalld/firewalld.conf a funkcje zapory są skonfigurowane w formacie XML.

Zrozumienie ważnych funkcji zapory

Główną cechą Firewalld jest strefy sieci/zapory. Każda inna funkcja jest ograniczona do strefy. Strefa zapory opisuje poziom zaufania dla połączenia, interfejsu lub wiązania adresu źródłowego.

Domyślna konfiguracja jest wyposażona w szereg predefiniowanych stref posortowanych zgodnie z domyślnym poziomem zaufania stref od niezaufanych do zaufanych: upuszczenie, blok, publiczny, zewnętrzny, DMZ, praca, dom, wewnętrzny i zaufany. Są one zdefiniowane w plikach przechowywanych w ramach /usr/lib/firewalld/strefy informator.

Możesz skonfigurować lub dodać strefy niestandardowe za pomocą klienta CLI lub po prostu utworzyć lub skopiować plik strefy /etc/firewalld/strefy z istniejących plików i edytuj je.

Kolejną ważną koncepcją w ramach Firewalld są usługi. Usługa jest definiowana za pomocą portów i protokołów; Te definicje reprezentują daną usługę sieciową, taką jak serwer WWW lub usługa dostępu zdalnego. Usługi są zdefiniowane w plikach przechowywanych w ramach /usr/lib/firewalld/usługi/ Lub /itp./Firewalld/Services/ informator.

Jeśli znasz podstawowe koncepcje iP6Tables/EBTables, możesz również użyć bezpośredniego interfejsu (lub konfiguracji), aby uzyskać bezpośredni dostęp do zapory. Ale dla osób bez żadnej wiedzy IPTABLES możesz zastosować bogaty język do tworzenia bardziej złożonych reguł zapory dla IPv4 i IPv6.

Jak zainstalować pakiet Firewalld w Linux

NA Centos 7, Firewalld Pakiet jest wstępnie zainstalowany i możesz zweryfikować za pomocą następującego polecenia.

$ rpm -qa firewalld 

NA Ubuntu 16.04 I 18.04, Możesz go zainstalować za pomocą domyślnego menedżera pakietów, jak pokazano.

$ sudo apt instal instaluj zaporę ogniową 

Jak zarządzać usługą zapory w Linux

Firewalld to zwykła usługa SystemD, którą można zarządzać za pośrednictwem polecenia SystemCtl.

 $ sudo systemctl start firewalld #Start Usługa Ze tymczas $ sudo systemctl Włącz zaporę #enable Usługa do automatycznego start w czasie uruchamiania $ sudo systemCtl Status zapory #View Status usługi 

Po rozpoczęciu Firewalld usługa, możesz również sprawdzić, czy demon działa, czy nie, używając Firewall-CMD narzędzie (w przypadku, gdy nie jest aktywne, to polecenie wyprowadzi „nie działa”).

$ sudo firewall-cmd-state 
Sprawdź status zapory ogniowej

Jeśli zdarzy ci się zapisać jakiekolwiek zmiany na stałe, możesz ponownie załadować zaporę ogniową. To ponownie załaduje zasady zapory i zachowuje informacje o stanie. Obecna konfiguracja stała stanie się nową konfiguracją środowiska wykonawczego.

$ sudo firewall-cmd-odpowiadanie 

Jak pracować ze strefami zapory w zaporze ogniowej

Aby uzyskać listę wszystkich dostępnych stref i usług zapory, uruchom te polecenia.

$ sudo firewall-cmd-get-streone $ sudo firewall-cmd-get-services 

Domyślną strefą jest strefa używana dla każdej funkcji zapory, która nie jest wyraźnie ograniczona do innej strefy. Można uzyskać zestaw strefy domyślnej dla połączeń sieciowych i interfejsów, uruchamiając.

$ sudo firewall-cmd-get-default-streone 
Lista domyślna strefa zapory ogniowej

Aby ustawić domyślną strefę, na przykład na zewnętrzne, użyj następującego polecenia. Zauważ, że dodanie opcji --stały Ustawia konfigurację na stałe (lub umożliwia zapytanie informacji ze stałego środowiska konfiguracyjnego).

$ sudo firewall-cmd-e-set-default-streone = zewnętrzny lub $ sudo firewall-cmd-set-default-st-st-st-st-st-st- 

Następnie spójrzmy, jak dodać interfejs do strefy. Ten przykład pokazuje, jak dodać adapter sieci bezprzewodowej (WLP1S0) do domu strefy, który jest używany w obszarach domowych.

$ sudo firewall-cmd-Zone = home --add-interface = wlp1s0 
Dodaj interfejs do strefy Firewalld

Interfejs można dodać tylko do jednej strefy. Aby przenieść go do innej strefy, użyj --Zmiana interfejsu przełącz jak pokazano lub usuń go z poprzedniej strefy za pomocą -Usuń interfejs Przełącz, a następnie dodaj go do nowej strefy.

Zakładając, że chcesz połączyć się z publiczną siecią Wi-Fi, powinieneś przenieść swój interfejs bezprzewodowy z powrotem do strefy publicznej, tak:

$ sudo firewall-cmd --zone = public --add-interface = wlp1s0 $ sudo firewall-cmd --zone = public --change-Interface = wlp1s0 
Zmień interfejs strefy w Firewalld

Możesz użyć wielu stref jednocześnie. Aby uzyskać listę wszystkich stref aktywnych z włączonymi funkcjami, takimi jak interfejsy, usługi, porty, protokoły, uruchom:

$ sudo firewall-cmd-get-active-streny 
Wypisz aktywne strefy w Firewalld

W odniesieniu do poprzedniego punktu, jeśli chcesz znaleźć więcej informacji o określonej strefie, ja.e wszystko dodane lub włączone, użyj jednego z tych poleceń:

$ sudo firewall-cmd-strepe = home--list-all lub $ sudo firewall-cmd--info-stref public 
Znajdź informacje o strefie zapory

Inną przydatną opcją jest --Get-cel, który pokazuje cel stałej strefy. Cel jest jednym z: domyślnych, akceptuj, upuszczania, odrzucenia. Możesz sprawdzić cel różnych stref:

$ sudo firewall-cmd --Permanent --zone = public-get-cel $ sudo firewall-cmd --Permanent --zone = blok --get-cel $ sudo firewall-cmd --Permanent --zone = dmz- -Get-Target $ sudo firewall-cmd --PerManent --zone = zewnętrzny --get-cel $ sudo firewall-cmd --Permanent --zone = drop --get-celget 

Jak otwierać i blokować porty w Firewalld

Aby otworzyć port (lub kombinację portu/protokołu) w zaporze, po prostu dodaj go w strefie z --Dodatek opcja. Jeśli nie określisz wyraźnie strefy, będzie ona włączona w strefie domyślnej.

Poniższy przykład pokazuje, jak dodać port 80 I 443 Aby umożliwić ruch w sieci za pośrednictwem Http I Https Protokoły odpowiednio:

$ sudo firewall-cmd --zone = public --Permanent --add-port = 80/tcp --add-port = 443/tcp 

Następnie ponownie załaduj zaporę ogniową i ponownie sprawdź włączone funkcje w strefie publicznej, powinieneś być w stanie zobaczyć właśnie dodane porty.

$ sudo firewall-cmd-rela jest $ sudo firewall-cmd--info-strefe public 

Blokowanie lub zamykanie portu w zaporze jest równie łatwe, po prostu usuń go ze strefy z --Usuń-port opcja. Na przykład, aby zamknąć porty 80 I 443 w strefie publicznej.

$ sudo firewall-cmd --zone = public --Permanent--Remove-Port = 80/tcp--Remove-Port = 443/TCP 

Zamiast korzystać z kombinacji portu lub protokołu, możesz użyć nazwy usługi, do której przypisany jest port w następnej sekcji.

Jak otwierać i blokować usługi w Firewalld

Aby otworzyć usługę w zaporze, włącz ją za pomocą --Dodatek opcja. Jeśli strefa zostanie pominięta, zostanie użyta strefa domyślna.

Poniższe polecenie na stałe włączy usługę HTTP w strefie publicznej.

$ sudo firewall-cmd-stzone = public --Permanent --add-service = http $ sudo firewall-cmd--relacje 

--usuń usługę Można użyć opcji do wyłączenia usługi.

$ sudo firewall-cmd-Zone = public --Permanent--Remove-Service = http $ sudo firewall-cmd-RELOAD 

Jak włączyć i wyłączyć IP udawanie za pomocą zapory ogniowej

IP udawanie (znany również jako Ipmasq Lub Masq) jest Nat (Tłumaczenie adresu sieciowego) Mechanizm w sieci Linux, który umożliwia hostom w sieci, z prywatnymi adresami IP do komunikacji z Internetem za pomocą Serwera Linux (Gateway IPMASQ) Przypisany publiczny adres IP.

To mapowanie jeden do wielu. Ruch z twoich niewidzialnych hostów pojawi się innym komputerom w Internecie, jakby pochodziło z twojego serwera Linux.

Możesz włączyć IP udającego w pożądanej strefie, na przykład strefę publiczną. Ale zanim to zrobił, najpierw sprawdź, czy maswanka jest aktywna, czy nie (a "NIE" oznacza jego niepełnosprawne i "Tak" oznacza inaczej).

$ sudo firewall-cmd-Zone = public-Query-MasQuerade $ sudo firewall-cmd-Zone = public --add-Masquerade 

Typowym przypadkiem użycia dla masy jest wykonywanie przekierowania portów. Zakładając, że chcesz SSH z zdalnego urządzenia do hosta w sieci wewnętrznej z IP 10.20.1.3, na którym demon SSHD słucha na porcie 5000.

Możesz przesłać wszystkie połączenia do portu 22 na serwerze Linux do zamierzonego portu na docelowym hoście, wydając:

$ sudo firewall-cmd --zone = public --add-forward-port = port = 22 = proto = tcp: toport = 5000: toaddr = 10.20.1.3 

Aby wyłączyć udręki w strefie, użyj --Usuń Masquerade przełącznik.

$ sudo firewall-cmd-stzone = public--Remove-Masquerade 

Jak włączyć i wyłączyć wiadomość IMCP w Firewalld

ICMP (Protokół komunikatu kontroli Internetu) Wiadomości to żądania informacji lub odpowiedzi na żądania informacji lub w warunkach błędów.

Możesz włączyć lub wyłączyć komunikaty ICMP w zaporze, ale przed tym pierwszą listą wszystkich obsługiwanych typów ICMP.

$ sudo firewall-cmd-get-icmppes 
Lista obsługiwane typy ICMP w Firewalld

Aby dodać lub usunąć typ bloku, który chcesz.

$ sudo firewall-cmd --zone = home --add-icmp-block = echo-reply lub $ sudo firewall-cmd --zone = home--remove-icmp-block = echo-reportly 

Możesz wyświetlić wszystkie typy ICMP dodane w strefie za pomocą --List-ICMP-Blocks przełącznik.

$ sudo firewall-cmd-ze-gimnasty 

Jak używać bezpośredniego interfejsu do przekazywania surowych poleceń iptables

Firewall-CMD zapewnia również bezpośrednie opcje (--bezpośredni) Aby uzyskać bardziej bezpośredni dostęp do zapory. Jest to przydatne dla osób z podstawową wiedzą na temat iptables.

Ważny: Powinieneś używać bezpośrednich opcji jako ostateczności, gdy nie można używać regularnego Firewall-CMD Opcje wyjaśnione powyżej.

Oto przykład przejścia surowej reguły iptables, używając --Dodaj-rule przełącznik. Możesz łatwo usunąć te reguły, zastępując --Dodaj-rule z --Usuń Rule:

$ sudo firewall -cmd - -Direct --add -rule IPv4 Filter in_public_allow 0 -m tcp -p tcp -dport 80 -J Zaakceptuj 

Aby uzyskać więcej informacji o iptables, Zobacz ten przewodnik: Jak skonfigurować zaporę IPTABLES, aby umożliwić zdalny dostęp do usług w Linux.

Jeśli nie znasz składni IPTABLES, możesz wybrać Firewalld's „bogaty język”Aby stworzyć bardziej złożone zasady zapory w łatwy do zrozumienia, jak wyjaśniono następne.

Jak używać bogatego języka w zaporze ogniowej

bogaty język (znany również jako bogate zasady) służy do dodawania bardziej złożonych zasad zaporowych dla IPv4 I IPv6 Bez znajomości składni iptables.

Rozszerza funkcje strefy (usługa, port, blok ICMP, maskarada i poród naprzód), które omówiliśmy. Obsługuje adresy źródłowe i docelowe, rejestrowanie, działania i limity dzienników i akcji.

--Dodaj-bogactwo służy do dodawania bogatych zasad. Ten przykład pokazuje, jak zezwolić na nowe IPv4 I IPv6 Połączenia serwisu HTTP i log 1 na minutę za pomocą audytu:

$ sudo firewall-cmd --add-rich-rule = 'Nazwa usługi reguły = "http" Audyt limit wartość = "1/m" akceptuj' ' 

Aby usunąć dodaną regułę, wymień --Dodaj-bogactwo opcja z --usuń bogatą rolę.

$ sudo firewall-cmd--Remove-Rich-Rule = 'Nazwa usługi reguły = "http" Wartość limitu audytu = "1/m" akceptuj' ' 

Ta funkcja pozwala również na blokowanie lub umożliwienie ruchu z określonego adresu IP. Poniższy przykład pokazuje, jak odrzucić połączenia z IP 10.20.1.20.

$ sudo firewall-cmd-stzone = public --add-bogacko-rule = 'reguła rodzina = "ipv4" adres źródłowy = "192.168.0.254 „Odrzucaj” 

Jak włączyć i wyłączyć tryb paniki w zaporze ogniowej

Tryb paniki to tryb specjalny pod zaporą ogniową, w którym wszystkie pakiety w obrębie i poza.
Możesz włączyć ten tryb w sytuacjach awaryjnych, w których zagrożenie dla środowiska sieciowego wychodzi.

Aby zapytać o tryb paniki, użyj --Zapytanie-panica opcja.

$ sudo firewall-cmd-Query-Panic 

Aby włączyć tryb paniki, użyj --Panika opcja. Możesz przetestować, czy działa przy użyciu polecenia ping, jak pokazano. Ponieważ pakiet jest upuszczony, nazwa www.Google.com nie można rozwiązać, stąd wyświetlony błąd.

$ sudo firewall-cmd--panic-on $ ping -c 2 www.Google.com 
Włącz tryb paniki w zaporze ogniowej

Aby wyłączyć tryb paniki, użyj --Paniki opcja.

$ sudo firewall-cmd--panic-off 

Jak zablokować zaporę ogniową

Pamiętaj, że wspominaliśmy pod podstawami o zaporze ogniowej, że lokalne aplikacje lub usługi są w stanie zmienić konfigurację zapory, jeśli działają z uprawnieniami root. Możesz kontrolować, które aplikacje mogą żądać zmian w zaporze, określając, a następnie w białej białej.

Ta funkcja jest domyślnie wyłączona, możesz włączyć lub wyłączyć za pomocą --Lokowanie Lub --izolacja przełącz receptywnie.

$ sudo firewall-cmd-lockdown-on lub $ sudo firewall-cmd--lockdown-off 

Zauważ, że zaleca się włączenie lub wyłączenie tej funkcji poprzez edycję głównego pliku konfiguracyjnego, ponieważ Firewall-CMD może nie istnieć na blokady białej lobowowej, gdy włączysz blokadę.

$ sudo vim/etc/firewalld/firewalld.conf 

Znajdź parametr Izolacja i zmień swoją wartość z NIE (oznacza) do Tak (oznacza).

LockDown = Tak 

Aby to ustawienie stałe przeładuj zaporę ogniową.

$ sudo firewall-cmd-odpowiadanie 
Streszczenie

Firewalld jest łatwym w użyciu wymiany dla usługi IPTABLES, która wykorzystuje iptables jako backend. W tym artykule pokazaliśmy, jak zainstalować pakiet Firewalld, wyjaśniliśmy ważne funkcje Firewalld i omówiliśmy, jak je skonfigurować w środowiskach wykonawczych i stałych konfiguracji.

Jeśli masz jakieś pytania lub komentarze, skontaktuj się z nami za pośrednictwem poniższego formularza komentarza. Więcej informacji można odwołać się do strony manualnej zapory (Man Firewalld) lub dokumentacji Firewalld na stronie internetowej projektu, aby uzyskać więcej informacji.