Firewalld — strefy, usługi i porty
Nauczysz się rozumieć strefy firewalld, różnicę między usługą a portem oraz bezpiecznie dodawać i usuwać reguły tymczasowe oraz permanentne.
Wróć do listy lekcji1. Krótka teoria
Firewalld zarządza regułami firewalla przez pojęcie stref. Strefa opisuje poziom zaufania dla interfejsu sieciowego albo źródła ruchu. Na prostym serwerze najczęściej pracuje się z jedną aktywną strefą, ale nadal trzeba wiedzieć, której strefy dotyczą zmiany. Komenda firewall-cmd --get-active-zones pokazuje aktywne strefy, a firewall-cmd --list-all pokazuje usługi, porty i inne reguły w wybranej strefie. Usługa w firewalld, na przykład ssh albo http, jest nazwaną definicją obejmującą porty i protokoły. Port, na przykład 8080/tcp, dodaje się wtedy, gdy nie ma gotowej definicji usługi albo aplikacja działa na niestandardowym porcie. Zmiany runtime działają od razu, ale nie muszą przetrwać przeładowania firewalla. Zmiany permanentne zapisują się w konfiguracji, ale zwykle wymagają --reload, aby wejść w życie. Dobry workflow to najpierw sprawdzić aktywną strefę, potem dodać regułę tymczasowo, przetestować dostęp, a dopiero później zapisać zmianę jako permanentną.
2. Przykłady komend
sudo firewall-cmd --get-active-zones
Pokazuje aktywne strefy firewalld i powiązane interfejsy.
$ sudo firewall-cmd --get-active-zones
sudo firewall-cmd --list-all
Wyświetla konfigurację domyślnej albo aktywnej strefy.
$ sudo firewall-cmd --list-all
sudo firewall-cmd --add-service=http
Tymczasowo dopuszcza usługę HTTP.
$ sudo firewall-cmd --add-service=http
sudo firewall-cmd --add-port=8080/tcp
Tymczasowo dopuszcza ruch TCP na porcie 8080.
$ sudo firewall-cmd --add-port=8080/tcp
sudo firewall-cmd --remove-service=http
Usuwa tymczasowe dopuszczenie usługi HTTP.
$ sudo firewall-cmd --remove-service=http
sudo firewall-cmd --reload
Przeładowuje konfigurację firewalld.
$ sudo firewall-cmd --reload
3. Zadanie praktyczne
sudo firewall-cmd --get-active-zones i sudo firewall-cmd --list-all. Zapisz aktywną strefę oraz listę usług i portów. Dodaj tymczasowo usługę HTTP przez sudo firewall-cmd --add-service=http i sprawdź wynik w --list-all. Następnie usuń ją poleceniem sudo firewall-cmd --remove-service=http. W osobnym teście dodaj port 8080/tcp przez sudo firewall-cmd --add-port=8080/tcp, sprawdź listę reguł i przeładuj firewall przez sudo firewall-cmd --reload, obserwując różnicę między zmianą runtime a trwałą konfiguracją.
4. Typowe błędy
- Dodawanie reguł bez sprawdzenia aktywnej strefy.
- Mylenie usługi firewalld z procesem działającym w systemie.
- Otwieranie portu, gdy istnieje gotowa usługa firewalld o tej samej roli.
- Zakładanie, że zmiana runtime przetrwa reload albo restart.
- Dodanie opcji --permanent i zapomnienie o przeładowaniu konfiguracji.
- Otwieranie portów bez sprawdzenia, czy aplikacja naprawdę ich potrzebuje.
5. Podsumowanie
Firewalld używa stref, usług i portów. Strefa opisuje zaufanie do ruchu, usługa jest nazwaną definicją, a port pozwala dopuścić konkretny numer i protokół. Zmiany runtime są dobre do testów, a zmiany permanentne służą do trwałej konfiguracji. --get-active-zones, --list-all, --add-service, --add-port i --reload to podstawowy zestaw komend.