Jak zacząć korzystać z firewalld w systemie Linux

Opublikowany: 2022-07-08
Ekran laptopa przedstawiający wiersz poleceń systemu Linux.
fatmawati achmad zaenuri/Shutterstock.com

Jeśli szukasz nowoczesnego, wydajnego firewalla dla Linuksa, który jest łatwy do skonfigurowania z wiersza poleceń lub z interfejsem GUI, to prawdopodobnie firewalld jest tym, czego szukasz.

Potrzeba zapór sieciowych

Połączenia sieciowe mają źródło i miejsce docelowe. Oprogramowanie w miejscu pochodzenia żąda połączenia, a oprogramowanie w miejscu docelowym je akceptuje lub odrzuca. Jeśli zostanie zaakceptowany, pakiety danych — ogólnie nazywane ruchem sieciowym — mogą przechodzić przez połączenie w obu kierunkach. Odnosi się to do tego, czy dzielisz się w całym pokoju we własnym domu, łączysz się zdalnie z pracą z domowego biura, czy korzystasz z odległego zasobu w chmurze.

Co właściwie robi zapora sieciowa?
POWIĄZANE Co właściwie robi zapora?

Dobra praktyka bezpieczeństwa mówi, że należy ograniczać i kontrolować połączenia z komputerem. To właśnie robią firewalle. Filtrują ruch sieciowy według adresu IP, portu lub protokołu i odrzucają połączenia, które nie spełniają wstępnie zdefiniowanego zestawu kryteriów — reguł zapory — które zostały skonfigurowane przez użytkownika. Są jak pracownicy ochrony na ekskluzywnej imprezie. Jeśli twojego imienia nie ma na liście, nie wejdziesz do środka.

Oczywiście nie chcesz, aby reguły zapory sieciowej były tak restrykcyjne, że ograniczałyby Twoje normalne działania. Im prostsze jest skonfigurowanie zapory, tym mniejsze prawdopodobieństwo przypadkowego ustawienia sprzecznych lub drakońskich reguł. Często słyszymy od użytkowników, którzy mówią, że nie używają zapory, ponieważ jest zbyt skomplikowana do zrozumienia lub składnia poleceń jest zbyt nieprzejrzysta.

firewalld jest wydajny, a jednocześnie prosty w konfiguracji, zarówno z wiersza poleceń, jak i poprzez dedykowaną aplikację GUI. Pod maską zapory ogniowe Linuksa opierają się na netfilter , strukturze filtrowania sieci po stronie jądra. W świecie użytkownika mamy do wyboru narzędzia do interakcji z netfilter , takie jak iptables , nieskomplikowany firewall ufw i firewalld .

Naszym zdaniem firewalld oferuje najlepszą równowagę między funkcjonalnością, szczegółowością i prostotą.

Instalowanie zapory ogniowej

firewalld składa się z dwóch części. Jest firewalld , proces demona, który zapewnia funkcjonalność firewalla i jest firewall-config . To jest opcjonalny GUI dla firewalld . Zauważ, że w firewall-config nie ma „d”.

Instalowanie firewalld na Ubuntu, Fedorze i Manjaro jest proste we wszystkich przypadkach, chociaż każdy z nich ma swoje własne podejście do tego, co jest preinstalowane i co jest dołączone.

Aby zainstalować na Ubuntu, musimy zainstalować firewalld i firewall-config .

 sudo apt zainstaluj firewalld 

Instalowanie firewalld na Ubuntu

 sudo apt install firewall-config 

Instalowanie firewall-config na Ubuntu

W Fedorze firewalld jest już zainstalowany. Wystarczy dodać firewall-config .

sudo dnf install firewall-config

Instalowanie firewall-config w Fedorze

W Manjaro żaden z komponentów nie jest preinstalowany, ale są one umieszczone w jednym pakiecie, dzięki czemu możemy zainstalować oba za pomocą jednego polecenia.

 sudo pacman -Sy firewalld 

Instalowanie firewalld i firewall-config za pomocą jednego polecenia na Manjaro

Musimy włączyć demona firewalld , aby mógł uruchamiać się przy każdym uruchomieniu komputera.

 sudo systemctl włącz firewalld 

Włączanie firewalld na automatyczne uruchamianie przy starcie

I musimy uruchomić demona, aby teraz działał.

 sudo systemctl uruchom firewalld 

Uruchamianie demona firewalld

Możemy użyć systemctl , aby sprawdzić, czy firewalld został uruchomiony i działa bez problemów:

 sudo systemctl status firewalld 

Sprawdzanie stanu firewalld za pomocą systemctl

Możemy również użyć firewalld , aby sprawdzić, czy działa. Wykorzystuje to firewall-cmd z opcją --state . Zauważ, że w firewall-cmd nie ma „d” :

 sudo firewall-cmd --stan 

Sprawdzanie stanu firewalld za pomocą polecenia firewall-cmd

Po zainstalowaniu i uruchomieniu zapory możemy przejść do jej konfiguracji.

Pojęcie stref

firewalld opiera się na strefach . Strefy to zbiory reguł zapory i skojarzone połączenie sieciowe. Pozwala to dostosować różne strefy — i inny zestaw ograniczeń bezpieczeństwa — w ramach których można działać. Na przykład możesz mieć zdefiniowaną strefę do regularnego, codziennego biegania, inną strefę do bezpieczniejszego biegania i pełną strefę „nic w, nic nie wychodzi”.

Aby przejść z jednej strefy do drugiej i efektywnie z jednego poziomu bezpieczeństwa na drugi, przenosisz swoje połączenie sieciowe ze strefy, w której się znajduje, do strefy, w której chcesz działać.

Dzięki temu bardzo szybko można przenieść jedną z jednego zdefiniowanego zestawu reguł zapory do innego. Innym sposobem korzystania ze stref byłoby, aby Twój laptop używał jednej strefy, gdy jesteś w domu, a innej, gdy jesteś poza domem i korzystasz z publicznej sieci Wi-Fi.

firewalld posiada dziewięć wstępnie skonfigurowanych stref. Można je edytować i dodawać lub usuwać kolejne strefy.

  • drop : Wszystkie przychodzące pakiety są odrzucane. Ruch wychodzący jest dozwolony. To najbardziej paranoiczne ustawienie.
  • block : Wszystkie przychodzące pakiety są odrzucane, a do nadawcy wysyłana jest wiadomość icmp-host-prohibited . Ruch wychodzący jest dozwolony.
  • zaufany : Wszystkie połączenia sieciowe są akceptowane, a inne systemy są zaufane. Jest to najbardziej ufne ustawienie i powinno być ograniczone do bardzo bezpiecznych środowisk, takich jak sieci testowe lub Twój dom.
  • public : ta strefa jest przeznaczona do użytku w sieciach publicznych lub innych, w których żaden inny komputer nie może być zaufany. Akceptowany jest niewielki wybór typowych i zazwyczaj bezpiecznych żądań połączenia.
  • zewnętrzna : Ta strefa jest przeznaczona do użytku w sieciach zewnętrznych z włączonym maskowaniem NAT (przekierowaniem portów). Twoja zapora działa jak router przekierowujący ruch do Twojej sieci prywatnej, która pozostaje dostępna, ale nadal prywatna.
  • wewnętrzna : Ta strefa jest przeznaczona do użytku w sieciach wewnętrznych, gdy system działa jako brama lub router. Inne systemy w tej sieci są ogólnie zaufane.
  • dmz : Ta strefa jest przeznaczona dla komputerów znajdujących się w „strefie zdemilitaryzowanej” poza Twoimi zabezpieczeniami obwodowymi iz ograniczonym dostępem z powrotem do Twojej sieci.
  • praca : Ta strefa jest przeznaczona dla maszyn roboczych. Inne komputery w tej sieci są ogólnie zaufane.
  • home : Ta strefa jest przeznaczona dla maszyn domowych. Inne komputery w tej sieci są ogólnie zaufane.

Strefy domu, pracy i wewnętrzne mają bardzo podobne funkcje, ale rozdzielenie ich na różne strefy pozwala dostosować strefę do własnych upodobań, zawierając jeden zestaw reguł dla konkretnego scenariusza.

Dobrym punktem wyjścia jest sprawdzenie, jaka jest strefa domyślna. Jest to strefa, do której dodawane są interfejsy sieciowe podczas instalacji firewalld .

 sudo firewall-cmd --get-default-zone 

Znajdowanie domyślnej strefy firewalld

Naszą domyślną strefą jest strefa publiczna. Aby zobaczyć szczegóły konfiguracji strefy, użyj opcji --list-all . Wyświetla wszystko, co zostało dodane lub włączone dla strefy.

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

Podanie szczegółów strefy publicznej

Widzimy, że ta strefa jest powiązana z połączeniem sieciowym enp0s3 i zezwala na ruch związany z DHCP, mDNS i SSH. Ponieważ do tej strefy został dodany co najmniej jeden interfejs, strefa ta jest aktywna.

firewalld umożliwia dodawanie usług , z których chcesz akceptować ruch do strefy. Ta strefa przepuszcza wtedy ten rodzaj ruchu. Jest to łatwiejsze niż pamiętanie, że na przykład mDNS używa portu 5353 i protokołu UDP i ręczne dodawanie tych szczegółów do strefy. Chociaż możesz to zrobić.

Jeśli poprzednie polecenie uruchomimy na laptopie z połączeniem Ethernet i kartą Wi-Fi, zobaczymy coś podobnego, ale z dwoma interfejsami.

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

Strefa z dwoma interfejsami

Oba nasze interfejsy sieciowe zostały dodane do strefy domyślnej. Strefa ma reguły dla tych samych trzech usług, co w pierwszym przykładzie, ale DHCP i SSH zostały dodane jako usługi nazwane, a mDNS został dodany jako parowanie portów i protokołów.

Aby wyświetlić wszystkie strefy, użyj opcji --get-zones .

 sudo firewall-cmd --get-zones 

Lista wszystkich stref zapory ogniowej

Aby zobaczyć konfigurację wszystkich stref jednocześnie, użyj opcji --list-all-zones . Będziesz chciał przełożyć to na less .

 sudo firewall-cmd --list-all-zones | mniej 

Lista szczegółów wszystkich stref

Jest to przydatne, ponieważ możesz przewijać listę lub skorzystać z funkcji wyszukiwania, aby wyszukać numery portów, protokoły i usługi.

Szczegóły wszystkich stref wyświetlane w mniej

Na naszym laptopie przeniesiemy nasze połączenie Ethernet ze strefy publicznej do strefy domowej. Możemy to zrobić za pomocą opcji --zone i --change-interface .

 sudo firewall-cmd --zone=home --change-interface=enp3s0 

Dodawanie interfejsu sieciowego do strefy domowej

Rzućmy okiem na strefę domową i zobaczmy, czy nasza zmiana została dokonana.

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

Strefa domowa z dodanym interfejsem sieciowym

I tak się stało. Nasze połączenie Ethernet zostało dodane do strefy domowej.

Nie jest to jednak zmiana trwała. Zmieniliśmy bieżącą konfigurację zapory, a nie jej zapisaną konfigurację. Jeśli zrestartujemy komputer lub użyjemy opcji --reload , powrócimy do poprzednich ustawień.

Aby zmiana była trwała, musimy użyć trafnie nazwanej opcji --permanent .

Oznacza to, że możemy zmienić zaporę sieciową dla jednorazowych wymagań bez zmiany zapisanej konfiguracji zapory. Możemy również testować zmiany zanim wyślemy je do konfiguracji. Aby nasza zmiana była trwała, format, którego powinniśmy użyć to:

 sudo firewall-cmd --zone=home --change-interface=enp3s0 --permanent

Jeśli dokonasz jakichś zmian, ale zapomnisz użyć --permanent na niektórych z nich, możesz zapisać ustawienia bieżącej uruchomionej sesji firewalla w konfiguracji za pomocą opcji --runtime-to-permanent .

 sudo firewall-cmd --runtime-to-permanent 

Ponowne ładowanie konfiguracji zapory

POWIĄZANE: Co to jest DHCP (protokół dynamicznej konfiguracji hosta)?

Dodawanie i usuwanie usług

firewalld wie o wielu usługach. Możesz je wymienić za pomocą opcji --get-services .

 sudo firewall-cmd --get-services 

Lista usług firewalld może się odwoływać po nazwie

Nasza wersja firewalld zawierała 192 usługi. Aby włączyć usługę w strefie, użyj opcji --add-service .

Lista uznanych usług

Możemy dodać usługę do strefy za pomocą opcji --add-service .

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

Dodawanie usługi HTTP do strefy

Nazwa usługi musi być zgodna z jej wpisem na liście usług firewalld .

Aby usunąć usługę, zamień --add-service na --remove-service

Dodawanie i usuwanie portów i protokołów

Jeśli wolisz wybrać, które porty i protokoły są dodawane, możesz to zrobić. Musisz znać numer portu i protokół dla typu dodawanego ruchu.

Dodajmy ruch HTTPS do strefy publicznej. Używa portu 443 i jest formą ruchu TCP.

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

Dodawanie parowania portu i protokołu do strefy

Możesz podać szereg portów, umieszczając między pierwszym i ostatnim portem myślnik „ - ”, np. „400-450”.

Aby usunąć port, zamień --add-port na --remove-port .

POWIĄZANE: Jaka jest różnica między TCP a UDP?

Korzystanie z GUI

Naciśnij klawisz „Super” i zacznij pisać „firewall”. Zobaczysz ikonę ceglanego muru dla aplikacji firewall-config .

Kliknij tę ikonę, aby uruchomić aplikację.

Dodanie usługi do firewalld za pomocą GUI jest tak proste, jak wybranie strefy z listy stref i wybranie usługi z listy usług.

Możesz wybrać modyfikację uruchomionej sesji lub stałej konfiguracji, wybierając "Runtime" lub "Permanent" z menu rozwijanego "Configuration".

Rozwijane menu konfiguracji

Aby wprowadzić zmiany w uruchomionej sesji i zatwierdzić zmiany dopiero po przetestowaniu ich działania, ustaw menu „Konfiguracja” na „Runtime”. Wprowadź zmiany. Gdy będziesz zadowolony, że robią to, co chcesz, użyj opcji menu Opcje > Runtime to Permanent.

Aby dodać wpis portu i protokołu do strefy, wybierz strefę z listy stref i kliknij "Porty". Kliknięcie przycisku dodawania umożliwia podanie numeru portu i wybranie protokołu z menu.

Dodawanie parowania portu i protokołu za pomocą graficznego interfejsu użytkownika konfiguracji zapory

Aby dodać protokół, kliknij „Protokoły”, kliknij przycisk „Dodaj” i wybierz protokół z menu podręcznego.

Protokół w strefie publicznej, w GUI konfiguracji firewall

Aby przenieść interfejs z jednej strefy do drugiej, kliknij dwukrotnie interfejs na liście „Połączenia”, a następnie wybierz strefę z wyskakującego menu.

Przenoszenie interfejsu sieciowego z jednej strefy do drugiej w GUI konfiguracji zapory

Wierzchołek góry lodowej

Z firewalld można zrobić o wiele więcej , ale to wystarczy, aby zacząć działać. Dzięki informacjom, które Ci przekazaliśmy, będziesz mógł tworzyć znaczące reguły w swoich strefach.