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.
- Czym jest firewalld i dlaczego warto go używać
- Kiedy firewalld sprawdza się najlepiej
- Instalacja firewalld na Ubuntu Server
- Uruchomienie i automatyczny start po restarcie
- Podstawowa zasada działania – strefy i reguły
- Sprawdzenie aktywnej strefy
- Najważniejsza zasada bezpieczeństwa – nie zamknij sobie SSH
- Otwieranie portów dla serwera WWW
- Otwieranie kilku portów naraz
- Reguły tymczasowe i trwałe
- Usuwanie portu lub usługi
- Lista otwartych portów i usług
- Przykładowa szybka konfiguracja dla typowego serwera
- Zmiana strefy dla interfejsu
- Przekierowanie portów i maskarada
- Lockdown i panic mode
- Jak bezpiecznie testować konfigurację
- Najczęstsze błędy przy konfiguracji firewalld
- Przykład gotowej konfiguracji dla serwera produkcyjnego
- Firewalld a UFW i iptables – krótko o różnicach
- Gotowa instrukcja wdrożeniowa krok po kroku
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ługa | Port | Protokół |
|---|---|---|
| SSH | 22 | TCP |
| HTTP | 80 | TCP |
| HTTPS | 443 | TCP |
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:
- Zainstaluj pakiet firewalld.
- Włącz usługę i ustaw autostart.
- Otwórz SSH.
- Otwórz tylko potrzebne usługi, np. HTTP i HTTPS.
- Zastosuj reguły trwałe.
- Przeładuj konfigurację.
- Sprawdź aktywną strefę i listę usług.
- 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.








