Firewall na serwerze Linux: podstawy zapory sieciowej i ufw

Mateusz Bogolubow

Mateusz Bogolubow

12-11-2026

Czym jest firewall, jak działa i po co go masz na VPS. Krok po kroku konfiguracja ufw, porty, reguły i najczęstszy błąd: odcięcie się od własnego serwera.

Firewall na serwerze Linux: podstawy zapory sieciowej i ufw
Firewall (zapora sieciowa) to mechanizm, który kontroluje ruch przychodzący i wychodzący według reguł: wpuszcza tylko to, na co pozwolisz. Na serwerze z Linuxem najprościej skonfigurować go narzędziem ufw. Najpierw pozwól na SSH, dopiero potem włącz zaporę, bo w przeciwnym razie możesz odciąć się od własnego serwera.

Nowy serwer ma publiczny adres IP, więc od pierwszej minuty może go próbować odwiedzić każdy. Firewall decyduje, które połączenia przejdą, a które zostaną odrzucone. W artykule o serwerze VPS pisałem, że przy VPS niezarządzanym zaporę ustawiasz sam. Tutaj pokazuję, jak to zrobić. Uwaga: na tej maszynie nie mam serwera z Linuxem i ufw, więc żadnej komendy firewalla nie uruchamiałem. Wszystkie polecenia pochodzą z dokumentacji Ubuntu i podręcznika ufw i są tak oznaczone.

Czym jest firewall?

Według Wikipedii firewall (zapora sieciowa) to system bezpieczeństwa sieci, który monitoruje i kontroluje ruch przychodzący oraz wychodzący według skonfigurowanych reguł. Najprościej: stoi między serwerem a internetem i sprawdza, czy dane połączenie spełnia reguły. Jeśli nie, odrzuca je.

Dwie odmiany warto odróżnić:

RodzajGdzie działaPrzykład
Firewall sieciowymiędzy sieciami, np. między siecią firmową a internetemsprzęt lub maszyna wirtualna przed siecią
Firewall hostowy (host-based)bezpośrednio na komputerze lub serwerzeufw na Twoim VPS

W tym artykule skupiam się na firewallu hostowym, czyli takim, który ustawiasz sam na serwerze.

Jak działa firewall?

Firewall porównuje każde połączenie z listą reguł i je przepuszcza albo odrzuca. Wikipedia opisuje trzy podstawowe rodzaje:

  • Filtrowanie pakietów. Sprawdza adres IP, protokół i port. Domyślnie nieprzepuszczone pakiety są po cichu odrzucane.
  • Śledzenie połączeń. Pamięta, jakie porty dwa adresy używają w danej rozmowie, więc odpowiedzi na Twoje połączenia przechodzą.
  • Zapora warstwy aplikacji. Rozumie konkretne protokoły, np. FTP, DNS czy HTTP.

Najważniejsze dla Ciebie jest to, jaką politykę domyślną ma zapora. Według podręcznika ufw po instalacji domyślnie ruch przychodzący jest blokowany, ruch przekazywany też, a ruch wychodzący dozwolony. Oznacza to, że nic z zewnątrz nie wejdzie, dopóki sam tego nie dopuścisz. To rozsądna zasada: zamknij wszystko, otwórz tylko to, czego potrzebujesz.

Po co firewall na serwerze VPS?

Serwer ma wiele portów, a każdy z nich może być wejściem. Aplikacje nasłuchują na portach, a Ty nie musisz wystawiać wszystkich światu. Firewall pozwala otworzyć tylko te, które są potrzebne. Typowy serwer internetowy wymaga niewielu:

PortDo czegoCzy zwykle otwierasz
22 (TCP)SSH, czyli zdalne logowanietak, najlepiej tylko dla zaufanych adresów
80 (TCP)HTTPtak, jeśli serwujesz stronę
443 (TCP)HTTPStak, jeśli serwujesz stronę
21 (TCP)FTPnie; do wysyłania plików używaj SFTP przez port 22
port bazy danychPostgreSQL, MySQL i innezwykle nie; baza nie powinna być dostępna z internetu

Numery 22, 80 i 443 to ogólnie przyjęte konwencje (z wiedzy ogólnej). O tym, dlaczego SFTP zastępuje FTP, i jak wysyłać pliki bezpiecznie, piszemy w artykule o FTP i SFTP.

Które porty serwera otworzyć, a których nie?

Rozszerzona wersja tabeli powyżej. Numery to domyślne porty tych usług (z wiedzy ogólnej, nie z dokumentacji Ubuntu), więc w Twojej konfiguracji mogą być inne:

UsługaDomyślny portOtwierać z internetu?Uwagi
SSH22tak, najlepiej tylko dla zaufanych adresówdo logowania i SFTP; zobacz ufw limit
HTTP80tak, jeśli serwujesz stronęczęsto tylko do przekierowania na HTTPS
HTTPS443tak, jeśli serwujesz stronęgłówny ruch strony
FTP21niezamiast tego SFTP przez port 22
MySQL3306zwykle niebaza powinna być dostępna lokalnie lub z konkretnych adresów
PostgreSQL5432zwykle niejak wyżej
Redis6379zwykle niepamięć podręczna i kolejki, nie wystawiaj publicznie
MongoDB27017zwykle niejak wyżej

Zasada jest jedna dla wszystkich usług: jeśli nie musisz, nie otwieraj portu z internetu. Aplikacja na tym samym serwerze łączy się z bazą lokalnie, więc port bazy nie musi być dostępny z zewnątrz. Jeśli potrzebujesz dostępu z konkretnego komputera, użyj reguły z jednym adresem, jak w tabeli zarządzania regułami poniżej.

Jakich narzędzi użyć do firewalla na Linuxie?

NarzędzieCo to jestUwagi
ufw (Uncomplicated Firewall)prosty interfejs do zarządzania zaporądomyślne narzędzie na Ubuntu według dokumentacji, zalecane na start
iptablesnarzędzie niższego poziomuwedług dokumentacji Ubuntu jest „pod spodem” ufw
nftables, firewalldinne narzędzia i warstwy zarządzania zaporąz wiedzy ogólnej, nie opisuję, bo nie sprawdzałem ich w dokumentacji
Firewall w panelu dostawcyzapora ustawiana poza serwerem, w panelu hostingu lub chmurywiele chmur i hostingów ją oferuje (z wiedzy ogólnej); działa niezależnie od zapory na serwerze

Dokumentacja Ubuntu zaznacza, że ufw jest domyślnie wyłączony. Nowy serwer na Ubuntu nie ma więc włączonej zapory, dopóki jej nie włączysz.

Jak skonfigurować firewall ufw krok po kroku?

Poniższa kolejność pochodzi z dokumentacji Ubuntu i podręcznika ufw. Najważniejsza zasada: najpierw pozwól na SSH, a dopiero potem włącz zaporę.

# 1. pozwól na SSH (port 22), zanim cokolwiek włączysz
sudo ufw allow 22/tcp

# 2. pozwól na ruch WWW, jeśli serwer ma stronę
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

# 3. sprawdź, co zostanie zastosowane (nic nie zmienia)
sudo ufw --dry-run allow http

# 4. włącz zaporę
sudo ufw enable

# 5. sprawdź stan i reguły
sudo ufw status verbose

Składnia ufw allow PORT[/PROTOKÓŁ]: według podręcznika protokół dopisujesz po ukośniku, np. 25/tcp, a reguła bez protokołu obejmuje TCP i UDP. Dokumentacja Ubuntu pozwala też używać nazwy usługi z /etc/services zamiast numeru portu. --dry-run pokazuje, co zrobi polecenie, bez zmiany reguł.

Jak nie odciąć się od własnego serwera?

Uwaga mentora: zasada przy firewallu jest prosta: najpierw pozwól na SSH, dopiero potem włącz zaporę. Pomyłka kosztuje dostęp do własnego serwera, a naprawa bywa możliwa tylko przez konsolę w panelu dostawcy.

To najczęstszy i najbardziej kosztowny błąd. Podręcznik ufw ostrzega, że ufw enable „może zerwać istniejące połączenia (np. ssh)”. Reguły dodane wcześniej, np. dla SSH, zostają aktywne po włączeniu zapory, a przy pracy przez SSH ufw pyta o potwierdzenie. Co z tego wynika:

  1. Najpierw dodaj regułę dla SSH. Bez niej po włączeniu zapory nikt (także Ty) nie zaloguje się na port 22.
  2. Jeśli zmieniłeś port SSH, otwórz właściwy port. Reguła dla 22 Ci wtedy nie pomoże.
  3. Zostaw drugie okno terminala z otwartą sesją SSH i testuj połączenie w nowym oknie, zanim zamkniesz stare.
  4. Zanim zrobisz coś ryzykownego, znajdź w panelu dostawcy dostęp awaryjny (konsola w przeglądarce), bo to ostatni ratunek po zablokowaniu SSH. To praktyka z wiedzy ogólnej, a jej dostępność zależy od dostawcy.

O samym SSH, kluczach i najczęstszych błędach logowania piszę w artykule o SSH.

Jak zarządzać regułami firewalla?

Po włączeniu zapory przydadzą się polecenia z dokumentacji Ubuntu i podręcznika ufw:

Czego chceszPolecenie
Pokazać reguły z numeramisudo ufw status numbered
Dodać regułę na wskazanym miejscusudo ufw insert 1 allow 80
Usunąć regułęsudo ufw delete deny 22 lub sudo ufw delete 3 (po numerze)
Pozwolić tylko z jednego adresusudo ufw allow proto tcp from 192.168.0.2 to any port 22
Ograniczyć próby logowaniasudo ufw limit ssh/tcp (blokuje adres, który w 30 sekund inicjuje 6 lub więcej połączeń)
Włączyć logowaniesudo ufw logging on
Zresetować do ustawień fabrycznychsudo ufw reset
Zmienić politykę domyślnąsudo ufw default deny incoming (składnia z podręcznika: ufw default + allow, deny lub reject + kierunek)

Dwie rzeczy do zapamiętania. Po pierwsze, kolejność reguł ma znaczenie: według podręcznika pierwsza pasująca reguła wygrywa, więc bardziej szczegółowe reguły dodawaj przed ogólnymi. Po drugie, przy regułach dla IPv4 i IPv6 usunięcie po numerze kasuje tylko jedną z nich, więc sprawdź listę po usunięciu.

Dokumentacja Ubuntu opisuje też profile aplikacji w katalogu /etc/ufw/applications.d. Zobaczysz je poleceniem sudo ufw app list, a regułę dla profilu dodasz np. sudo ufw allow Samba.

Jakie błędy zdarzają się przy konfiguracji firewalla?

ProblemCo zwykle znaczyCo zrobić
Po włączeniu zapory SSH przestał działaćbrak reguły dla SSH lub zły portużyj konsoli awaryjnej w panelu dostawcy, dodaj regułę dla SSH
Strona nie działa z zewnątrzport 80 lub 443 zamkniętysudo ufw status verbose, dodaj allow 80/tcp i allow 443/tcp
Reguła nie działa, choć jest na liściekolejność reguł: wcześniejsza reguła przechwytuje ruchsprawdź status numbered i ułóż reguły od szczegółowych do ogólnych
Zapora ma regułę, ale nic się nie zmieniłoufw jest wyłączony (domyślnie jest wyłączony)sprawdź sudo ufw status i włącz zaporę
Baza danych dostępna z internetuotwarty port bazyusuń regułę, zostaw bazę dostępną tylko lokalnie lub z konkretnych adresów
Reguły zniknęłyużyty ufw resetodtwórz reguły; trzymaj listę komend w notatkach

Czego firewall nie załatwia?

Zapora kontroluje, kto może się połączyć z którym portem, ale nie rozwiązuje wszystkich problemów z bezpieczeństwem:

  • Nie naprawi słabego hasła ani błędu w aplikacji na otwartym porcie.
  • Nie zastąpi aktualizacji systemu i oprogramowania.
  • Nie chroni przed utratą danych. Do tego służą kopie zapasowe, o których będzie osobny artykuł.
  • Nie zabezpieczy samego logowania SSH. Dopiero klucze i wyłączone hasła to robią. Przykładem jest podatność OpenSSH CVE-2026-123158, opisana w artykule o SSH.

Firewall to jedna warstwa z kilku: obok niego są klucze SSH, aktualizacje i kopie. Wdrażanie aplikacji na serwerze pokazujemy w module wdrożenie produkcyjne w chmurze w kursie AI Engineer, a podstawy pracy w konsoli opisuje artykuł o podstawach Linuxa.

Podsumowanie

  • Firewall kontroluje ruch przychodzący i wychodzący według reguł. Na serwerze z Linuxem najprościej użyć ufw.
  • Według podręcznika ufw domyślnie ruch przychodzący jest blokowany, a wychodzący dozwolony, ale na Ubuntu ufw jest domyślnie wyłączony, więc trzeba go włączyć.
  • Najpierw SSH, potem ufw enable. Pomyłka może odciąć Cię od serwera, a podręcznik ostrzega, że włączenie zapory może zerwać połączenia SSH.
  • Otwieraj tylko potrzebne porty (zwykle 22, 80 i 443), a bazy danych nie wystawiaj do internetu.
  • Kolejność reguł ma znaczenie: pierwsza pasująca reguła wygrywa.
  • Firewall to jedna warstwa: potrzebujesz też kluczy SSH, aktualizacji i kopii zapasowych. Komendy opisałem z dokumentacji, bo nie uruchamiałem ich na prawdziwym serwerze.

Masz pytanie do artykułu? Chcesz zgłosić błąd?

Pytaj ogólnie o temat artykułu albo napisz, co poprawić. Jeśli chcesz omówić swój konkretny przypadek, umów się na rozmowę lub . Ze względów bezpieczeństwa nie przeglądamy ani nie publikujemy żadnych linków. Wiadomości z linkami nie są zapisywane. Limit: 2 pytania na godzinę.

Wyślemy na niego link do potwierdzenia pytania i odpowiedź.

Ostateczną decyzję o opublikowaniu pytania podejmuje administrator.

Konsultacja i warsztaty devmentor.pl

Masz pytania?

Partnerzy

Firmy, z którymi współpracujemy

To partnerzy odpowiedzialni za staże po naszych kursach. Organizują je dla najlepszych absolwentów.

Zobacz wszystkich partnerów →
  • VR Medical
  • Sophona
  • Robot Force