Jak zacząć korzystać z firewalld w systemie Linux
Opublikowany: 2022-07-08
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.
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
sudo apt install firewall-config
W Fedorze firewalld
jest już zainstalowany. Wystarczy dodać firewall-config
.
sudo dnf install firewall-config
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
Musimy włączyć demona firewalld
, aby mógł uruchamiać się przy każdym uruchomieniu komputera.
sudo systemctl włącz firewalld
I musimy uruchomić demona, aby teraz działał.
sudo systemctl uruchom firewalld
Możemy użyć systemctl
, aby sprawdzić, czy firewalld
został uruchomiony i działa bez problemów:
sudo systemctl status firewalld
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
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

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
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
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
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
Jest to przydatne, ponieważ możesz przewijać listę lub skorzystać z funkcji wyszukiwania, aby wyszukać numery portów, protokoły i usługi.
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
Rzućmy okiem na strefę domową i zobaczmy, czy nasza zmiana została dokonana.
sudo firewall-cmd --zone=home --list-all
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
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
Nasza wersja firewalld
zawierała 192 usługi. Aby włączyć usługę w strefie, użyj opcji --add-service
.
Możemy dodać usługę do strefy za pomocą opcji --add-service
.
sudo firewall-cmd --zone=public --add-service=http
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
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".
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.
Aby dodać protokół, kliknij „Protokoły”, kliknij przycisk „Dodaj” i wybierz protokół z menu podręcznego.
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.
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.