SSD Nodes Learn
Przewodniki Matt ConnorAutor: Matt Connor · Zaktualizowano 2026-07-24

Konfiguracja UFW na VPS krok po kroku

Dowiedz się jak poprawnie skonfigurować UFW na VPS. Dowiedz się jak zezwolić na port SSH przed aktywacją zapory, aby uniknąć utraty dostępu do serwera.

Czym jest UFW i dlaczego warto go używać

UFW to Uncomplicated Firewall. Jest to nakładka na wbudowany w jądro Linux firewall. Zamiast tworzyć surowe reguły, można używać krótkich komend, takich jak ufw allow 22/tcp. W nowym VPS domyślnie każda usługa nasłuchująca jest dostępna z internetu. Firewall zmienia tę konfigurację: najpierw blokuje się wszystko, a następnie zezwala na dostęp tylko do wybranych portów. Ta zmiana, wykonana za pomocą około czterech komend, znacząco ogranicza powierzchnię ataku.

Przed konfiguracją należy sprawdzić, jakie usługi nasłuchują, ponieważ to one podlegają regułom firewalla. Pierwszym krokiem powinno być sprawdzenie aktywnych usług za pomocą ss -tlnp.

Jedna zasada zapobiegająca utracie dostępu do systemu

Błąd ten budzi obawy przed konfigurowaniem firewalli. Włączenie UFW z domyślną polityką deny-all bez wcześniejszego zezwolenia na ruch SSH skutkuje natychmiastowym przerwaniem połączenia po aktywacji zapory. Aby uniknąć tego problemu, należy zawsze zezwolić na ruch SSH przed włączeniem UFW. Poniższe kroki realizują to zadanie w bezpiecznej kolejności.

W przypadku wystąpienia błędu dostęp nie zostanie całkowicie utracony. Konsola webowa dostawcy (przez VNC lub port szeregowy) nie korzysta z protokołu SSH, co umożliwia zalogowanie się i uruchomienie ufw disable lub dodanie brakującej reguły.

Krok 1: Ustawienie domyślnych polityk

Należy najpierw skonfigurować UFW tak, aby blokował cały ruch przychodzący i zezwalał na cały ruch wychodzący:

sudo ufw default deny incoming
sudo ufw default allow outgoing

Kluczowe znaczenie ma deny incoming. Oznacza to, że każdy port, dla którego nie utworzono jawnej reguły zezwalającej, jest zamknięty dla sieci zewnętrznej, nawet jeśli usługa na nim nasłuchuje. allow outgoing umożliwia serwerowi standardowe połączenie z internetem w celu pobierania aktualizacji i podobnych danych. Powyższe polecenia zmieniają jedynie politykę; żadne reguły nie zostaną wyegzekwowane do momentu aktywacji UFW w kroku 3.

Krok 2: Odblokowanie wymaganych portów

Przed aktywacją należy otworzyć port SSH, aby uniknąć utraty połączenia:

sudo ufw allow 22/tcp

UFW umożliwia również ograniczanie liczby połączeń dla SSH: sudo ufw limit 22/tcp zezwala na dostęp do portu, ale blokuje każdy adres, który nawiąże sześć lub więcej połączeń w ciągu trzydziestu sekund. Pozwala to ograniczyć skuteczność ataków brute-force bez instalowania dodatkowego oprogramowania.

W przypadku korzystania z serwera WWW należy również odblokować protokoły HTTP oraz HTTPS:

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

Należy otwierać tylko te usługi, które są udostępniane publicznie. Bazy danych, takie jak Postgres na porcie 5432, nie powinny posiadać reguły zezwalającej (allow). Zamiast tego należy przypisać bazę do 127.0.0.1, aby była dostępna wyłącznie lokalnie na maszynie. Każdy otwarty port stanowi potencjalny punkt wejścia, dlatego należy utrzymywać listę otwartych usług w jak najmniejszym zakresie.

Pełną sekwencję poleceń ufw dla serwera można wygenerować tutaj, a następnie uruchomić je kolejno:

ToolUFW rule generator

Step 3: Enable, and confirm it is on

sudo ufw enable

Pojawia się ostrzeżenie, że polecenie może przerwać istniejące połączenia SSH. Sesja zostanie zachowana, ponieważ w kroku 2 zezwolono na 22/tcp. Należy potwierdzić wynik:

sudo ufw status verbose
Status: active
Default: deny (incoming), allow (outgoing)

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW IN    Anywhere
22/tcp (v6)                ALLOW IN    Anywhere (v6)
80/tcp                     ALLOW IN    Anywhere

Należy przeanalizować dwie informacje. Status: active oznacza, że firewall działa. Każda reguła wyświetla się dwukrotnie: raz w formie zwykłej, a raz z (v6), co wskazuje, że UFW obsługuje zarówno IPv4, jak i IPv6. Jeśli brakuje linii (v6), stos IPv6 nie jest zarządzany, co stanowi błąd opisany w wpisie o firewallu IPv6.

Zarządzanie regułami w późniejszym terminie

Aby wyświetlić reguły wraz z numerami w celu usunięcia wybranej:

sudo ufw status numbered
sudo ufw delete 3

Aby zezwolić na dostęp do portu tylko z jednego adresu (metoda zalecana przy udostępnianiu usług administracyjnych wyłącznie dla własnego adresu IP):

sudo ufw allow from 10.0.0.24 to any port 5432 proto tcp

Firewall stanowi jedną warstwę zabezpieczeń. Kontroluje on ruch docierający do portu, lecz nie spowalnia ataków typu brute-force na otwarte porty, np. SSH. W celu blokowania powtarzających się prób ataków należy zastosować Fail2ban przed usługą SSH. Strategia defense in depth zakłada, że każda warstwa zabezpiecza to, czego nie są w stanie obsłużyć pozostałe.

Stosowanie firewalla ma sens dopiero po zrozumieniu czym są porty i jak działają usługi, a jego konfiguracja jest niezbędnym elementem pierwszych 10 minut pracy na nowym VPS.

FAQ

Czy włączenie UFW spowoduje rozłączenie sesji SSH?

Nie, jeśli najpierw zezwolisz na ruch SSH. Należy uruchomić sudo ufw allow 22/tcp przed sudo ufw enable, aby połączenie zostało utrzymane dzięki zezwoleniu na port 22. Ryzyko występuje przy włączeniu zapory typu default-deny bez reguły allow dla SSH, co skutkuje utratą dostępu. W takim przypadku należy zalogować się przez konsolę VNC lub serialną dostawcy i uruchomić ufw disable.

Jakie porty należy otworzyć na VPS?

Tylko te, które są udostępniane publicznie. SSH (22/tcp) w celu zarządzania serwerem oraz HTTP i HTTPS (80/tcp, 443/tcp) w przypadku hostowania witryny. Pozostałe usługi powinny pozostać zablokowane. Usługi wewnętrzne, takie jak bazy danych, powinny być przypisane do 127.0.0.1 i nie powinny posiadać reguł firewall, aby nie były dostępne w sieci.

Czy UFW obsługuje IPv6?

W nowoczesnych wersjach Ubuntu tak: IPV6=yes jest ustawione w /etc/default/ufw, więc każda reguła dotyczy obu stosów, a ufw status wyświetla reguły IPv6 z przyrostkiem (v6). Możliwe błędy opisano w pułapce firewall IPv6.

Jak usunąć regułę UFW?

Należy uruchomić sudo ufw status numbered, aby wyświetlić listę reguł z numerami indeksów, a następnie sudo ufw delete N, gdzie N to numer reguły do usunięcia. Można również usuwać reguły za pomocą specyfikacji, na przykład sudo ufw delete allow 80/tcp.

Jak zezwolić na dostęp do portu tylko z jednego adresu IP?

Należy użyć reguły from zamiast zwykłej allow. Aby umożliwić dostęp do PostgreSQL tylko z adresu biurowego, należy uruchomić sudo ufw allow from 10.0.0.10 to any port 5432 proto tcp. Przy polityce default-deny port jest zamknięty dla wszystkich, dopóki reguła go nie otworzy, zatem reguła from jest jedyną drogą dostępu: cały internet pozostaje zablokowany, a dostęp otrzymuje tylko wskazany adres. Nie należy dodawać zwykłej reguły allow 5432/tcp, ponieważ otworzy ona port dla wszystkich. Jest to najbezpieczniejszy sposób udostępniania bazy danych lub panelu administracyjnego. Wynik należy zweryfikować poleceniem sudo ufw status verbose, które wyświetla adres źródłowy obok portu.