Firewalld na Ubuntu Server – szybka konfiguracja zapory

Oskar Gajzler
Przez
Oskar Gajzler
Redaktor IINTE.edu.pl, na co dzień zajmuje się technologiami internetowymi i tłumaczeniem skomplikowanych tematów na prosty język. Pisze poradniki o tym, jak załatwiać sprawy przez internet, jak...
10 min czytania

W Ubuntu najczęściej spotyka się UFW, ale firewalld również można zainstalować i używać jako centralny menedżer reguł zapory oparty o strefy i usługi.

Firewalld to wygodny sposób zarządzania zaporą sieciową w Linuxie, szczególnie gdy zależy nam na pracy z logiką stref, zestawami usług i regułami, które da się zmieniać bez ręcznej edycji iptables/nftables.

Na Ubuntu Server firewalld nie jest domyślny, ale można go szybko doinstalować, włączyć i otworzyć wyłącznie niezbędne porty, wzmacniając bezpieczeństwo.

W tym poradniku pokażę, jak:

  • zainstalować firewalld na Ubuntu Server,
  • uruchomić usługę i włączyć ją przy starcie systemu,
  • skonfigurować podstawową strefę bezpieczeństwa,
  • otworzyć porty dla SSH, WWW i innych usług,
  • stosować reguły tymczasowe i trwałe,
  • sprawdzić działanie zapory,
  • uniknąć najczęstszych błędów administracyjnych.

Czym jest firewalld i dlaczego warto go używać

Firewalld to warstwa zarządzania regułami zapory, która pozwala definiować zasady dla stref sieciowych zamiast ręcznie tworzyć pojedyncze reguły. Upraszcza to administrację i przyspiesza zmiany, np. szybkie otwieranie kilku portów lub różne poziomy zaufania dla różnych interfejsów.

W porównaniu z ręcznym zestawem reguł iptables/nftables firewalld ułatwia utrzymanie i zmiany, oferując komendy wysokiego poziomu oraz reguły trwałe zapisywane w konfiguracji.

Kiedy firewalld sprawdza się najlepiej

Firewalld jest dobrym wyborem, gdy:

  • chcesz zarządzać zaporą z linii poleceń w prosty sposób,
  • potrzebujesz przejrzystych reguł dla usług i portów,
  • planujesz konfigurację serwera www, ssh, poczty lub własnej aplikacji,
  • chcesz używać stałych reguł po restarcie systemu,
  • zarządzasz kilkoma interfejsami lub strefami bezpieczeństwa.

Jeśli szukasz najprostszego narzędzia na Ubuntu, popularny jest UFW. Gdy konfiguracja zaczyna rosnąć, firewalld daje większą elastyczność.

Instalacja firewalld na Ubuntu Server

Aby zainstalować firewalld z repozytoriów Ubuntu, wykonaj:

sudo apt update
sudo apt install firewalld

Po instalacji sprawdź, czy narzędzie jest dostępne:

firewall-cmd --version

Jeśli komenda zwraca wersję, firewalld jest poprawnie zainstalowany.

Uruchomienie i automatyczny start po restarcie

Włącz usługę, uruchom ją i sprawdź status:

sudo systemctl enable firewalld
sudo systemctl start firewalld
sudo systemctl status firewalld

Możesz też sprawdzić stan bezpośrednio przez narzędzie:

sudo firewall-cmd --state

Status „running” oznacza aktywną zaporę.

Podstawowa zasada działania – strefy i reguły

Firewalld opiera się na strefach. Strefa to zestaw zasad, który określa, jak zapora traktuje ruch z danego źródła lub interfejsu. Najczęściej używane strefy to:

  • public – dla sieci niezaufanych;
  • home – dla sieci domowej;
  • internal – dla sieci wewnętrznej;
  • block – blokowanie ruchu z informacją ICMP;
  • drop – odrzucanie ruchu bez odpowiedzi.

Na serwerze publicznym zwykle zaczyna się od strefy public, a następnie otwiera tylko niezbędne usługi (np. SSH i HTTP/HTTPS).

Sprawdzenie aktywnej strefy

Aby sprawdzić, jaka strefa jest aktywna i jakie interfejsy są do niej przypisane, użyj:

sudo firewall-cmd --get-active-zones

Aby wyświetlić pełną konfigurację danej strefy:

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

Najważniejsza zasada bezpieczeństwa – nie zamknij sobie SSH

Jeśli łączysz się z serwerem zdalnie, najpierw otwórz SSH, a dopiero potem zaostrzaj zasady. Zbyt restrykcyjna konfiguracja może odciąć Ci dostęp.

Dla standardowego SSH na porcie 22/tcp dodaj regułę i przeładuj konfigurację:

sudo firewall-cmd --permanent --zone=public --add-service=ssh
sudo firewall-cmd --reload

Jeśli SSH działa na niestandardowym porcie, np. 8822/tcp, otwórz konkretny port i przeładuj:

sudo firewall-cmd --permanent --zone=public --add-port=8822/tcp
sudo firewall-cmd --reload

Otwieranie portów dla serwera WWW

Dla stron www zwykle trzeba dopuścić ruch na 80/tcp (HTTP) i 443/tcp (HTTPS). Możesz dodać usługę albo konkretny port.

Dla usług:

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

Alternatywnie dla portów:

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

Po zmianach należy przeładować konfigurację:

sudo firewall-cmd --reload

Dla szybkiej orientacji poniżej znajdziesz najczęściej otwierane usługi i ich porty:

UsługaPortProtokół
SSH22TCP
HTTP80TCP
HTTPS443TCP

Otwieranie kilku portów naraz

Gdy aplikacja wymaga kilku portów, dodaj je osobno i przeładuj konfigurację:

sudo firewall-cmd --permanent --zone=public --add-port=8080/tcp
sudo firewall-cmd --permanent --zone=public --add-port=8443/tcp
sudo firewall-cmd --reload

Dla usług działających na UDP użyj odpowiedniego protokołu, np. 1194/udp dla OpenVPN:

sudo firewall-cmd --permanent --zone=public --add-port=1194/udp
sudo firewall-cmd --reload

Reguły tymczasowe i trwałe

Reguły tymczasowe działają do ponownego uruchomienia usługi lub systemu. Przykład:

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

Reguły trwałe zapisujesz opcją --permanent i stosujesz po --reload:

sudo firewall-cmd --permanent --zone=public --add-port=8080/tcp
sudo firewall-cmd --reload

Na serwerze produkcyjnym najlepiej od razu stosować reguły trwałe.

Usuwanie portu lub usługi

Aby cofnąć regułę portu, a następnie przeładować konfigurację, użyj:

sudo firewall-cmd --permanent --zone=public --remove-port=8080/tcp
sudo firewall-cmd --reload

Aby usunąć usługę i przeładować konfigurację:

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

Lista otwartych portów i usług

Aby sprawdzić, co jest aktualnie dozwolone w strefie:

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

Aby wyświetlić same porty:

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

Aby wyświetlić same usługi:

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

Przykładowa szybka konfiguracja dla typowego serwera

Poniżej przykład minimalnej konfiguracji dla serwera WWW z dostępem SSH:

sudo apt update
sudo apt install firewalld
sudo systemctl enable firewalld
sudo systemctl start firewalld
sudo firewall-cmd --permanent --zone=public --add-service=ssh
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload
sudo firewall-cmd --zone=public --list-all

Taka konfiguracja zazwyczaj pozwala na:

  • dostęp administracyjny przez ssh,
  • obsługę zwykłej strony www,
  • obsługę szyfrowanego https.

Zmiana strefy dla interfejsu

Gdy serwer ma więcej niż jeden interfejs, możesz przypisać je do różnych stref. To przydatne, gdy jeden interfejs jest w Internecie, a drugi obsługuje sieć wewnętrzną.

Aby sprawdzić interfejsy i aktywne strefy, użyj:

ip a
sudo firewall-cmd --get-active-zones

Aby przypisać interfejs do strefy i przeładować konfigurację:

sudo firewall-cmd --permanent --zone=public --change-interface=eth0
sudo firewall-cmd --reload

Nazwa interfejsu może być inna, np. ens3, enp0s3 lub eth1.

Przekierowanie portów i maskarada

Maskarada i forwardowanie portów umożliwiają bardziej zaawansowane scenariusze, np. udostępnienie usługi hosta wewnętrznego na porcie publicznym. Maskarada jest wymagana do przekierowań portów.

Aby włączyć maskaradę w strefie:

sudo firewall-cmd --permanent --zone=public --add-masquerade
sudo firewall-cmd --reload

Przykład przekierowania z 8080/tcp na 80/tcp hosta 10.0.0.2:

sudo firewall-cmd --permanent --zone=public --add-forward-port=port=8080:proto=tcp:toport=80:toaddr=10.0.0.2
sudo firewall-cmd --reload

Lockdown i panic mode

Tryb lockdown i panic mode pomagają w sytuacjach awaryjnych.

Aby włączyć/wyłączyć lockdown:

sudo firewall-cmd --lockdown-on
sudo firewall-cmd --lockdown-off

Aby włączyć/wyłączyć panic mode:

sudo firewall-cmd --panic-on
sudo firewall-cmd --panic-off

Panic mode natychmiast blokuje ruch – używaj rozważnie.

Jak bezpiecznie testować konfigurację

Po każdej zmianie sprawdź:

  • czy działa ssh,
  • czy otwiera się strona www,
  • czy porty są widoczne z zewnątrz,
  • czy reguły są zapisane jako trwałe.

Do testów lokalnych użyj:

sudo firewall-cmd --list-all
sudo firewall-cmd --state

Test z innego hosta lub zewnętrznego skanera portów potwierdza, które porty są faktycznie otwarte.

Najczęstsze błędy przy konfiguracji firewalld

Najczęstsze problemy to:

  • brak --permanent, przez co reguła znika po restarcie,
  • zapomnienie o --reload,
  • zamknięcie portu ssh przed dodaniem wyjątku,
  • dodanie portu do niewłaściwej strefy,
  • użycie złej nazwy interfejsu,
  • pomylenie protokołu tcp z udp.

Jeżeli coś nie działa, zacznij diagnostykę od:

sudo systemctl status firewalld
sudo firewall-cmd --state
sudo firewall-cmd --get-active-zones
sudo firewall-cmd --zone=public --list-all

Przykład gotowej konfiguracji dla serwera produkcyjnego

Jeśli serwer ma pełnić rolę hosta WWW, a panel administracyjny jest dostępny wyłącznie przez SSH, zastosuj:

sudo firewall-cmd --permanent --zone=public --add-service=ssh
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload

Gdy aplikacja działa na dodatkowym porcie, np. 3000/tcp, dodaj wyłącznie niezbędny port:

sudo firewall-cmd --permanent --zone=public --add-port=3000/tcp
sudo firewall-cmd --reload

To dobry kompromis między wygodą a bezpieczeństwem.

Firewalld a UFW i iptables – krótko o różnicach

Na Ubuntu bardzo popularny jest UFW, który pozwala szybko otwierać SSH/HTTP/HTTPS i inne usługi. Iptables/nftables dają pełną kontrolę, ale wymagają ręcznego zapisu i odtwarzania reguł.

Firewalld to praktyczny środek pośredni:

  • prostszy niż ręczne iptables/nftables,
  • bardziej elastyczny niż podstawowa konfiguracja,
  • wygodny przy wielu strefach i usługach,
  • dobry do serwerów wymagających czytelnej administracji.

Gotowa instrukcja wdrożeniowa krok po kroku

Jeśli chcesz od razu wdrożyć firewalld na Ubuntu Server, wykonaj poniższe kroki:

  1. Zainstaluj pakiet firewalld.
  2. Włącz usługę i ustaw autostart.
  3. Otwórz SSH.
  4. Otwórz tylko potrzebne usługi, np. HTTP i HTTPS.
  5. Zastosuj reguły trwałe.
  6. Przeładuj konfigurację.
  7. Sprawdź aktywną strefę i listę usług.
  8. Wykonaj test z innego hosta.

Przykładowy zestaw komend:

sudo apt update
sudo apt install firewalld
sudo systemctl enable firewalld
sudo systemctl start firewalld
sudo firewall-cmd --permanent --zone=public --add-service=ssh
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload
sudo firewall-cmd --zone=public --list-all

Na platformie testowej dodawaj wyłącznie te usługi i porty, których realnie potrzebujesz.

Udostępnij ten artykuł
Obserwuj
Redaktor IINTE.edu.pl, na co dzień zajmuje się technologiami internetowymi i tłumaczeniem skomplikowanych tematów na prosty język. Pisze poradniki o tym, jak załatwiać sprawy przez internet, jak bezpiecznie korzystać z sieci i jak dobierać sprzęt oraz oprogramowanie. Prywatnie tropi nowinki technologiczne i testuje je, zanim opisze.
Brak komentarzy

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Wymagane pola są oznaczone *