Zapora sieciowa to pierwsza i jedna z najważniejszych linii obrony przed nieautoryzowanym dostępem do serwerów i systemów komputerowych. UFW (Uncomplicated Firewall) upraszcza zarządzanie zaporą na Linuksie, szczególnie w Ubuntu, eliminując złożoność iptables i oferując intuicyjny interfejs CLI. Ten przewodnik omawia konfigurację UFW: od podstaw, przez reguły i porty, po zaawansowane funkcje, monitorowanie i najlepsze praktyki bezpieczeństwa.
Fundamenty UFW – czym jest i dlaczego warto go stosować
UFW to przyjazny interfejs do zarządzania regułami iptables. Minimalizuje ryzyko błędów konfiguracyjnych dzięki prostym, czytelnym poleceniom. Zamiast skomplikowanych komend iptables, używasz krótkich, zrozumiałych instrukcji.
Netfilter w jądrze Linuksa odpowiada za filtrowanie pakietów w czasie rzeczywistym. UFW abstrahuje złożoność iptables, oferując rozsądne ustawienia domyślne i prosty interfejs wiersza poleceń. Nie pokrywa całego zakresu iptables, ale jest idealny dla szybkiej, bezpiecznej konfiguracji serwerów.
Instalacja i przygotowanie UFW do pracy
UFW jest dostępny w repozytoriach Ubuntu, więc instalacja jest prosta. Poniżej znajdziesz rekomendowaną ścieżkę przygotowania:
- Zainstaluj UFW:
sudo apt install ufw; - sprawdź status i szczegóły:
sudo ufw status verbose; - przed włączeniem dodaj regułę SSH (patrz sekcja poniżej), aby nie odciąć sobie dostępu;
- włącz UFW, gdy reguły są gotowe:
sudo ufw enable.
Domyślnie UFW blokuje wszystkie połączenia przychodzące i zezwala na wszystkie wychodzące. To bezpieczna strategia „deny by default”.
Domyślne zasady i konfiguracja bazowa
Na starcie ustaw domyślne polityki oraz (jeśli używasz) włącz IPv6:
- domyślne polityki –
sudo ufw default deny incomingorazsudo ufw default allow outgoing; - włączenie IPv6 – w pliku
/etc/default/ufwustawIPV6=yes, a następniesudo ufw reload; - bezpieczna baza – domyślne reguły stanowią fundament, na którym budujesz precyzyjne wyjątki dla usług..
Zarządzanie połączeniami SSH przed włączeniem zapory
Zanim włączysz UFW, dodaj regułę SSH, inaczej odetniesz sobie zdalny dostęp. Użyj: sudo ufw allow ssh lub równoważnie sudo ufw allow 22/tcp.
Jeśli SSH działa na porcie niestandardowym (np. 8822), otwórz go: sudo ufw allow 8822/tcp. Zmiana domyślnego portu ogranicza skanowanie botów i „szum” w logach.
Otwieranie i zamykanie portów
Kontroluj dostęp do usług przez reguły portów. Podstawowe polecenia wyglądają tak: sudo ufw allow [port], sudo ufw allow [port]/tcp lub sudo ufw allow [port]/udp. Na przykład dla HTTP użyj sudo ufw allow 80/tcp. Wskazanie protokołu (TCP/UDP) zwiększa precyzję reguł.
Możesz korzystać z nazw usług (mapowanych w /etc/services): sudo ufw allow http, sudo ufw allow https, itp.
Aby otworzyć zakresy portów dla aplikacji wielokanałowych, użyj: sudo ufw allow 7100:7200/tcp oraz sudo ufw allow 7100:7200/udp. Zakresy upraszczają konfigurację i redukują liczbę reguł.
Dla szybkiej orientacji w popularnych usługach i portach, skorzystaj z poniższej listy:
- HTTP – 80/TCP;
- HTTPS – 443/TCP;
- OpenSSH – 22/TCP;
- MySQL – 3306/TCP;
- DNS – 53/UDP (często także 53/TCP do transferów stref).
Profile aplikacji i zarządzanie usługami
Wiele pakietów dostarcza profile UFW w /etc/ufw/applications.d. To ułatwia otwieranie portów bez pamiętania numerów.
- Wyświetl dostępne profile:
sudo ufw app list; - sprawdź szczegóły profilu:
sudo ufw app info 'NazwaProfilu'; - zastosuj profil (np. OpenSSH):
sudo ufw allow OpenSSH.
Profile pozwalają utrzymać spójność i skracają czas konfiguracji.
Reguły oparte na adresach IP i białe listy
Zawężaj ekspozycję usług, dopuszczając tylko zaufane adresy IP lub całe podsieci. To szczególnie ważne dla SSH, baz danych i paneli administracyjnych.
Przykłady:
- dostęp z jednego IP do wszystkich portów –
sudo ufw allow from 203.0.113.100; - dostęp z IP do konkretnego portu –
sudo ufw allow from 87.197.5.125 to any port 22; - ograniczenie do interfejsu –
sudo ufw allow in on eth0 from 203.0.113.102; - podsiec (CIDR) do usługi –
sudo ufw allow from 203.0.113.0/24 to any port 3306.
Blokowanie i odrzucanie połączeń
Do kontrolowania niepożądanego ruchu użyj akcji deny lub reject. Różnica: deny milczy, reject odsyła informację o odrzuceniu. Poniżej krótkie porównanie:
| Akcja | Zachowanie | Kiedy używać |
|---|---|---|
| deny | brak odpowiedzi do nadawcy | ukrywanie powierzchni ataku, utrudnianie rozpoznania usług |
| reject | wysyła pakiet odrzucenia | gdy klient powinien szybko wiedzieć, że usługa jest niedostępna |
Przykłady: sudo ufw deny 25, sudo ufw reject 113, blokada z IP/na port: sudo ufw deny from 192.4.5.3 to any port 22, blokada całej podsieci: sudo ufw deny from 203.0.113.0/24.
Zaawansowana konfiguracja – rate limiting i ochrona przed atakami
Rate limiting ogranicza liczbę nowych połączeń z jednego IP w krótkim czasie. sudo ufw limit ssh domyślnie pozwala na maks. 6 nowych połączeń w 30 s, ograniczając ataki brute force.
Po przekroczeniu progu źródło jest tymczasowo ograniczane. Limity można dostroić w plikach konfiguracyjnych UFW.
Integracja z Fail2ban podnosi ochronę: narzędzie monitoruje logi (np. nieudane logowania SSH) i dynamicznie dodaje blokady w UFW.
Obsługa IPv6 w UFW
UFW wspiera IPv4 i IPv6. Aby włączyć IPv6, edytuj /etc/default/ufw i ustaw IPV6=yes, następnie przeładuj UFW: sudo ufw reload lub sudo ufw disable i sudo ufw enable.
Zapewnij spójność reguł IPv4 i IPv6, aby uniknąć luk. sudo ufw status verbose pokaże reguły dla obu stosów (wpisy z oznaczeniem v6).
Monitorowanie i rejestrowanie zdarzeń zapory
Logowanie pomaga wykrywać ataki i diagnozować problemy. Włącz je poleceniem: sudo ufw logging on. Poziomy logowania i ich zastosowanie:
- low – podstawowe zdarzenia, dobre na start;
- medium – więcej szczegółów, zwykle rekomendowany kompromis;
- high – wysoka szczegółowość do analiz incydentów;
- full – maksymalna werboza, tylko tymczasowo ze względu na objętość.
Użyteczne polecenia do przeglądania logów:
- journalctl –
sudo journalctl -u ufw -n 200 --no-pager; - plik logu –
sudo tail -f /var/log/ufw.log; - zmiana poziomu –
sudo ufw logging medium.
Pamiętaj o rotacji logów, aby nie przepełnić dysków.
Usuwanie i modyfikacja reguł
Gdy reguły się dezaktualizują, usuń je bezpiecznie. Najprościej robić to po numerze:
- Wyświetl reguły z numeracją:
sudo ufw status numbered; - usuń regułę po numerze:
sudo ufw delete [numer](wymaga potwierdzenia); - alternatywnie usuń po treści:
sudo ufw delete allow 8069.
Usuwając reguły na serwerze produkcyjnym, upewnij się, że nie utracisz dostępu (zwłaszcza SSH).
Wyłączanie i resetowanie UFW
Do chwilowego wyłączenia użyj: sudo ufw disable. Reguły pozostają zapisane i wrócą po sudo ufw enable.
Reset do ustawień fabrycznych: sudo ufw reset (wyłącza UFW, usuwa reguły, przywraca domyślne polityki). Operacja wymaga potwierdzenia i może przerwać sesję SSH — stosuj ostrożnie.
Zaawansowane funkcje – przekierowanie portów i NAT
Przekierowania i NAT wymagają edycji plików UFW. Włącz przekazywanie pakietów w /etc/ufw/sysctl.conf (linia net/ipv4/ip_forward=1), a w /etc/ufw/before.rules dodaj reguły sekcji *nat. Przykład przekierowania portu 70 na 8600:
*nat
:PREROUTING ACCEPT
:POSTROUTING ACCEPT
-A PREROUTING -p tcp --dport 70 -j REDIRECT --to-port 8600
COMMIT
Po zmianach przeładuj UFW: sudo ufw disable && sudo ufw enable.
Docker i UFW – obsługa kontenerów
Docker modyfikuje iptables bezpośrednio, co może obchodzić UFW. Aby ograniczyć ten efekt, rozważ poniższe działania:
- włącz iptables w Dockerze – upewnij się, że demon nie pomija reguł systemowych;
- zmień politykę forwardowania UFW – w
/etc/default/ufwustawDEFAULT_FORWARD_POLICY="DROP"i dodaj selektywne reguły routingu (ufw route); - kontroluj publikowane porty – np.
sudo ufw route allow proto tcp from any to any port 80dla usług na porcie 80.
Dzięki temu UFW zachowuje kontrolę nad połączeniami przychodzącymi także dla usług kontenerowych.
Zabezpieczanie SSH – zaawansowane praktyki
SSH to newralgiczny punkt dostępu — jego twarde zabezpieczenie jest priorytetem po uruchomieniu serwera. Stosuj następujące rekomendacje:
- klucze zamiast haseł – wyłącz logowanie hasłem, włącz uwierzytelnianie kluczami;
- niestandardowy port – zmiana z 22 zmniejsza liczbę automatycznych skanów;
- białe listy IP – np.
sudo ufw allow from 203.0.113.10 to any port 2222 proto tcp; - rate limiting –
sudo ufw limit sshogranicza szybkie próby logowania; - Fail2ban – dynamiczne bany po nieudanych logowaniach.
Optymalizacja wydajności UFW
UFW działa w jądrze i zwykle nie obciąża systemu. Przy bardzo dużym ruchu pomagają poniższe praktyki:
- konsoliduj reguły – używaj zakresów portów i podsieci (CIDR) zamiast wielu pojedynczych wpisów;
- grupuj adresy – rozważ
ipsetdo dużych list blokad; - ogranicz logowanie – ustaw poziom na
lowlubmedium; - czyść stare reguły – regularne przeglądy minimalizują narzut.
Integracja z Fail2ban
Fail2ban monitoruje logi i automatycznie blokuje źródła ataków. Integracja z UFW jest prosta:
- Zainstaluj:
sudo apt install fail2ban; - w
/etc/fail2ban/jail.localustawbanaction = ufww odpowiednich „jails” (np.sshd); - zrestartuj usługę:
sudo systemctl restart fail2ban.
Fail2ban + UFW zapewniają dynamiczną, skuteczną ochronę przed brute force i skanami.
Wyświetlanie statusu i konfiguracji
Do przeglądu konfiguracji użyj: sudo ufw status lub sudo ufw status verbose (domyślne polityki, poziom logowania, pełne reguły). Numery reguł uzyskasz przez sudo ufw status numbered. Przykładowe wyjście:
Status: active
To Action From
-- ------ ----
22/tcp ALLOW Anywhere
80/tcp ALLOW Anywhere
443/tcp ALLOW Anywhere
Graficzny interfejs – GUFW
Dla preferujących GUI dostępny jest GUFW. Zainstaluj: sudo apt install gufw, uruchom: gufw. Dostępne profile: Dom, Biuro, Publiczny, Custom.
GUFW umożliwia intuicyjne dodawanie prostych i zaawansowanych reguł bez pamiętania komend.
Najlepsze praktyki i rekomendacje bezpieczeństwa
Poniższa lista ułatwia utrzymanie bezpiecznej, przejrzystej konfiguracji UFW:
- przygotuj reguły SSH przed włączeniem UFW – zapobiegniesz utracie dostępu do serwera;
- stosuj politykę „deny incoming, allow outgoing” – bezpieczna baza pod wyjątki dla usług;
- regularnie przeglądaj i porządkuj reguły – usuwaj zbędne wpisy i zbędnie otwarte porty;
- integruj z monitorowaniem – Fail2ban i logowanie UFW zwiększają wykrywalność ataków;
- włącz i nadzoruj logi – szybciej reagujesz na anomalie i próby włamań;
- zadbaj o spójne reguły dla IPv6 – unikniesz niezamierzonych luk bezpieczeństwa.
Prawidłowo skonfigurowany UFW, wsparty monitorowaniem i dobrymi praktykami operacyjnymi, znacząco podnosi bezpieczeństwo serwerów Linux.




