Skonfigurowanie zapory sieciowej Ubuntu za pomocą UFW (Uncomplicated Firewall) pomaga chronić serwer VPS: umożliwia niezbędne połączenia i blokuje zbędny ruch przychodzący. Wystarczy kilka poleceń, ale ich kolejność ma znaczenie: zezwól na dostęp przez SSH przed włączeniem zapory, inaczej możesz utracić zdalny dostęp.
W tym poradniku dowiesz się, jak zainstalować UFW, ustawić bezpieczne reguły domyślne, otworzyć porty dla strony internetowej, włączyć zaporę i później zarządzać jej regułami.
Najważniejsze informacje
- UFW umożliwia łatwe zarządzanie zaporą sieciową Ubuntu z poziomu wiersza poleceń.
- Przed włączeniem UFW na zdalnym serwerze VPS zezwól na dostęp przez faktycznie używany port SSH.
- Domyślnie blokuj niezamówiony ruch przychodzący, a następnie otwórz tylko porty potrzebne Twoim usługom.
- Sprawdź dostęp za pomocą drugiego połączenia i przeglądaj reguły przy każdym dodaniu lub usunięciu aplikacji.
Czym jest UFW w Ubuntu?
UFW to narzędzie do konfiguracji zapory sieciowej, które zarządza regułami systemu filtrowania pakietów w jądrze Linux. Zamiast pisać reguły niskiego poziomu, możesz zezwalać na połączenia lub je blokować za pomocą poleceń takich jak ufw allow i ufw delete.
Na typowym serwerze VPS służącym do hostowania stron internetowych zezwolisz na dostęp przez SSH do celów administracyjnych oraz otworzysz porty 80 i 443 dla odwiedzających. Porty baz danych i aplikacji wewnętrznych zasadniczo powinny pozostać niedostępne z publicznego internetu.
Zanim skonfigurujesz zaporę sieciową Ubuntu
Potrzebujesz serwera VPS z Ubuntu, dostępu do polecenia sudo i działającego połączenia SSH. Jeśli dopiero zaczynasz zdalną administrację, zapoznaj się z poradnikiem ZYNOO dotyczącym poleceń SSH dla początkujących.
Nie zamykaj bieżącej sesji SSH. Sprawdź, czy działa konsola internetowa lub odzyskiwania udostępniana przez dostawcę serwera VPS. Zapory sieciowe na poziomie dostawcy działają niezależnie od UFW i również mogą wymagać odpowiednich reguł.
Poniższe instrukcje zakładają, że konfiguracja UFW jest nowa lub nieaktywna. Jeśli UFW już działa, przed zmianą zasad domyślnych sprawdź jego reguły i wymagania usług.

Krok 1: Sprawdź i zainstaluj UFW
Sprawdź, czy UFW jest dostępne:
sudo ufw status
Status: inactive oznacza, że UFW jest zainstalowane, ale nie egzekwuje reguł. Jeśli polecenie nie zostanie znalezione, zainstaluj UFW:
sudo apt update
sudo apt install ufw
Nie włączaj jeszcze zapory.
Krok 2: Zezwól na dostęp przez SSH przed włączeniem UFW
Ustal port TCP, na którym nasłuchuje SSH:
sudo ss -ltnp
Porównaj wynik z portem używanym przez Twój klient SSH. Port 22 jest powszechnie stosowany, ale w konfiguracjach serwerów VPS może być używany inny port.
Jeśli SSH używa portu 22, uruchom:
sudo ufw allow 22/tcp
Jeśli SSH faktycznie używa niestandardowego portu, na przykład 2222, zezwól na ruch przez ten port zamiast portu 22:
sudo ufw allow 2222/tcp
Port 2222 to tylko przykład, a nie dodatkowy port, który każdy powinien otworzyć. Sprawdź reguły oczekujące na włączenie:
sudo ufw show added
Krok 3: Ustaw reguły domyślne i sprawdź obsługę IPv6
Ustaw domyślne blokowanie połączeń przychodzących, jednocześnie zezwalając serwerowi VPS na inicjowanie połączeń wychodzących:
sudo ufw default deny incoming
sudo ufw default allow outgoing
Jeśli Twój serwer VPS ma publiczną łączność IPv6, upewnij się, że UFW ją obsługuje:
grep '^IPV6=' /etc/default/ufw
Oczekiwane ustawienie to IPV6=yes. Jeśli używasz IPv6, ale ustawiona jest wartość no, edytuj plik /etc/default/ufw, aby włączyć obsługę IPv6 przed uruchomieniem zapory.
Krok 4: Otwórz porty potrzebne Twojej stronie internetowej
Jeśli serwer VPS hostuje publicznie dostępną stronę internetową, zezwól na ruch HTTP i HTTPS przed włączeniem UFW:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
Typowe porty serwera VPS z Ubuntu to:
| Usługa | Port | Protokół |
|---|---|---|
| SSH | 22 (lub Twój niestandardowy port) | TCP |
| HTTP | 80 | TCP |
| HTTPS | 443 | TCP |
Jeśli publiczna aplikacja korzysta z innego portu TCP, składnia polecenia zezwalającego na ruch przez port w UFW wygląda tak:
sudo ufw allow 8080/tcp
Uruchom to przykładowe polecenie tylko wtedy, gdy Twoja usługa wymaga dostępu z zewnątrz przez port 8080. W przypadku usługi UDP podaj zamiast tego /udp, na przykład sudo ufw allow 51820/udp dla punktu końcowego WireGuard skonfigurowanego na tym porcie.
Możesz też sprawdzić dostępne profile aplikacji:
sudo ufw app list
Jeśli na liście znajduje się Nginx Full, sprawdź jego porty poleceniem sudo ufw app info 'Nginx Full'. Polecenie sudo ufw allow 'Nginx Full' może zastąpić dwie powyższe reguły dotyczące portów strony internetowej — nie musisz stosować obu rozwiązań. Aplikacje działające za lokalnym serwerem proxy odwrotnym Nginx zasadniczo nie powinny udostępniać publicznie portu swojego serwera zaplecza.
Krok 5: Włącz UFW i sprawdź zaporę
Gdy zezwolisz na dostęp przez SSH oraz otworzysz wszystkie wymagane porty usług, włącz UFW:
sudo ufw enable
Może pojawić się ostrzeżenie, że ta operacja może wpłynąć na SSH. Kontynuuj dopiero po potwierdzeniu poprawności reguły SSH i dostępności konsoli odzyskiwania. Sprawdź aktywne reguły:
sudo ufw status verbose
Powinien pojawić się Status: active, zasady domyślne i otwarte porty. UFW będzie też automatycznie uruchamiać się podczas startu systemu.
Przed zamknięciem pierwotnej sesji SSH nawiąż nowe połączenie w drugim terminalu. Na swoim komputerze użyj polecenia ssh -p 22 username@server-ip, zastępując nazwę użytkownika, adres i port odpowiednimi wartościami. Jeśli otwarto porty 80 i 443, sprawdź również dostępność strony internetowej z zewnątrz. Sama reguła ALLOW nie dowodzi, że usługa jest dostępna.
Krok 6: Zarządzaj regułami UFW, ograniczaj je i usuwaj
Aby wyświetlić ponumerowaną listę reguł zapory:
sudo ufw status numbered
Aby usunąć nieaktualną regułę zezwalającą na ruch, na przykład przez port TCP 8080:
sudo ufw delete allow 8080/tcp
Możesz też usunąć regułę według numeru (sudo ufw delete 3), ale najpierw sprawdź aktualną listę: numeracja może się zmienić, a usunięcie według numeru może usunąć tylko jedną regułę z odpowiadającej sobie pary IPv4/IPv6.
Opcjonalnie: ogranicz dostęp przez SSH do swojego adresu IP
Jeśli Twój administracyjny adres IP jest stały, możesz ograniczyć dostęp przez SSH do tego adresu. Na przykład:
sudo ufw allow from 203.0.113.10 to any port 22 proto tcp
Zastąp przykładowy adres IP swoim rzeczywistym publicznym adresem IP. Przetestuj nowe logowanie z tego adresu, a następnie usuń starą regułę zezwalającą na dostęp z dowolnego adresu za pomocą sudo ufw delete allow 22/tcp. Pozostawienie tej reguły nadal umożliwiałoby dostęp wszystkim. Przez cały czas zachowaj pierwotną sesję i dostęp do konsoli odzyskiwania.
Opcjonalnie: ogranicz częstotliwość prób połączenia SSH
Jeśli potrzebujesz dostępu przez SSH ze zmieniających się adresów IP, możesz zamiast tego zastąpić ogólną regułę zezwalającą ograniczeniem częstotliwości połączeń:
sudo ufw limit 22/tcp
sudo ufw delete allow 22/tcp
sudo ufw status numbered
Zrób to dopiero po potwierdzeniu, że połączenie SSH działa i masz dostęp do konsoli odzyskiwania. Jeśli SSH używa innego portu, podaj go zamiast 22. Następnie przetestuj kolejne logowanie. Jest to alternatywa dla ograniczenia dostępu do określonego adresu IP, a nie rozwiązanie, które należy z nim łączyć. Ograniczanie częstotliwości nie zastępuje uwierzytelniania za pomocą kluczy SSH.
Krok 7: Sprawdź dzienniki i rozwiąż problemy z dostępem
Włącz podstawowe rejestrowanie, gdy potrzebujesz zbadać blokowany ruch:
sudo ufw logging on
sudo ufw status verbose
W zależności od konfiguracji rejestrowania dzienniki UFW mogą być dostępne w dzienniku systemowym lub w pliku /var/log/ufw.log.
Jeśli dostęp przez SSH przestanie działać, użyj konsoli odzyskiwania dostawcy, aby sprawdzić aktywne reguły. W sytuacji awaryjnej możesz tymczasowo wyłączyć egzekwowanie reguł poleceniem sudo ufw disable. Następnie popraw regułę SSH i ponownie włącz UFW.
Jeśli strona internetowa się nie ładuje, sprawdź usługi nasłuchujące poleceniem sudo ss -ltnp, reguły UFW oraz zaporę dostawcy. Otwarcie portu nie uruchamia usługi, która z niego korzysta.
Często zadawane pytania
Tak. Po uruchomieniu sudo ufw enable UFW będzie włączane przy kolejnych uruchomieniach systemu. Sprawdź jego konfigurację poleceniem sudo ufw status verbose.
Nie. Reguły dodane lub usunięte za pomocą UFW zaczynają obowiązywać bez ponownego uruchamiania serwera VPS. Możesz od razu sprawdzić bieżącą konfigurację.
Niekoniecznie. Porty opublikowane przez Docker mogą omijać zwykłe reguły UFW dotyczące ruchu przychodzącego, ponieważ Docker konfiguruje własne reguły sieciowe. Zanim zaczniesz polegać na UFW w ograniczaniu dostępu do kontenerów, zapoznaj się z dokumentacją Docker dotyczącą zapór sieciowych.
Podsumowanie
Bezpieczną konfigurację zapory sieciowej Ubuntu za pomocą UFW zacznij od zezwolenia na dostęp przez SSH, ustawienia domyślnego blokowania ruchu przychodzącego i otwarcia tylko portów potrzebnych Twoim aplikacjom. Po włączeniu UFW sprawdź dostęp za pomocą osobnego połączenia i usuwaj nieaktualne reguły w miarę zmian na serwerze VPS.
UFW kontroluje dostęp sieciowy, ale nie chroni przed nadużyciami na poziomie aplikacji. W przypadku publicznie dostępnych stron internetowych obsługiwanych przez Nginx przydatnym dodatkowym zabezpieczeniem jest ograniczanie częstotliwości żądań.