Menu
Szybki wybór
Hosting Domeny VPS SSL Kalkulator Porównania FAQ
Aktywne kody
Wszystkie kody rabatowe

UFW Firewall na VPS — konfiguracja i reguły portów

Opublikowano: 8 kwietnia 2026 · Kategoria: Bezpieczeństwo VPS

UFW (Uncomplicated Firewall) to nakładka na iptables dostępna domyślnie w Ubuntu i Debian. Świeżo postawiony VPS bez firewalla akceptuje połączenia na wszystkich portach — skanery botnetów znajdą otwarty port MySQL, Redis czy inny serwis w ciągu minut. Prawidłowo skonfigurowany UFW blokuje cały ruch z wyjątkiem wyraźnie dozwolonych portów.

Instalacja i pierwsze uruchomienie

Krytyczne: zawsze dodaj regułę SSH przed włączeniem UFW, inaczej zablokujesz sobie dostęp.

# Instalacja (Ubuntu/Debian)
sudo apt update && sudo apt install ufw -y

# NAJPIERW dodaj SSH (zanim włączysz UFW!)
sudo ufw allow ssh
# lub konkretny port:
sudo ufw allow 22/tcp

# Włącz UFW (teraz bezpiecznie)
sudo ufw enable

# Sprawdź status
sudo ufw status verbose

Podstawowe reguły dla serwera web

# HTTP i HTTPS
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

# Lub użyj profilu (jeśli nginx/apache jest zainstalowany)
sudo ufw allow 'Nginx Full'
sudo ufw allow 'Apache Full'

# Domyślna polityka: blokuj przychodzące, zezwalaj wychodzące
sudo ufw default deny incoming
sudo ufw default allow outgoing

Reguły dla baz danych i serwisów wewnętrznych

Bazy danych powinny być dostępne TYLKO z localhost lub konkretnych IP — nigdy publicznie:

# MySQL/MariaDB — tylko z konkretnej podsieci
sudo ufw allow from 10.0.0.0/8 to any port 3306

# PostgreSQL — tylko localhost (domyślnie nie jest potrzebna reguła UFW)
# PostgreSQL słucha tylko na localhost w /etc/postgresql/*/main/postgresql.conf
# Jeśli jednak potrzebujesz z innego IP:
sudo ufw allow from 192.168.1.100 to any port 5432

# Redis — NIGDY nie otwieraj publicznie!
# Redis domyślnie bind 127.0.0.1 — jeśli zmieniłeś, przywróć lub dodaj regułę:
sudo ufw deny 6379

# Elasticsearch — tylko wewnętrzna sieć
sudo ufw allow from 10.0.0.0/8 to any port 9200

Rate limiting SSH — ochrona przed brute-force

# Rate limiting: blokuj IP po 6 próbach w 30 sekund
sudo ufw limit ssh
# lub dla niestandardowego portu:
sudo ufw limit 2222/tcp

# Sprawdź reguły z numerami
sudo ufw status numbered

# Usuń regułę po numerze
sudo ufw delete 3

Zmiana portu SSH — procedura bezpieczna

# Krok 1: Otwórz nowy port w UFW
sudo ufw allow 2222/tcp

# Krok 2: Zmień Port w konfiguracji SSH
sudo nano /etc/ssh/sshd_config
# Znajdź i zmień: Port 22  ->  Port 2222

# Krok 3: Restart SSH
sudo systemctl restart sshd

# Krok 4: TEST — otwórz NOWĄ sesję SSH na port 2222
# ssh -p 2222 user@server_ip

# Krok 5 (tylko po potwierdzeniu że działa): usuń stary port
sudo ufw delete allow ssh
sudo ufw delete allow 22/tcp

Whitelist konkretnych IP

# Zezwól na wszystko z konkretnego IP (np. biuro)
sudo ufw allow from 203.0.113.10

# Zezwól na SSH tylko z konkretnego IP
sudo ufw allow from 203.0.113.10 to any port 22

# Zablokuj konkretne IP (np. po ataku)
sudo ufw deny from 198.51.100.0/24

# Zezwól na wszystko z podsieci prywatnej
sudo ufw allow from 10.0.0.0/8

Logowanie UFW

# Włącz logowanie (domyślnie low)
sudo ufw logging on
# Poziomy: off, low, medium, high, full
sudo ufw logging medium

# Logi w /var/log/ufw.log
sudo tail -f /var/log/ufw.log

# Filtruj zablokowane połączenia
sudo grep "BLOCK" /var/log/ufw.log | tail -20

# Top IP atakujące port 22
sudo grep "BLOCK.*DPT=22" /var/log/ufw.log | awk '{print $13}' | sort | uniq -c | sort -rn | head -10
Port / Serwis Rekomendacja Polecenie
22 (SSH) Ogranicz do konkretnych IP lub użyj rate limiting ufw limit ssh
80 (HTTP) Otwórz publicznie ufw allow 80/tcp
443 (HTTPS) Otwórz publicznie ufw allow 443/tcp
3306 (MySQL) Tylko z konkretnych IP lub localhost ufw allow from IP to any port 3306
5432 (PostgreSQL) Tylko localhost lub konkretne IP ufw allow from IP to any port 5432
6379 (Redis) NIGDY publicznie — tylko localhost ufw deny 6379
8080 (aplikacja) Opcjonalnie — tylko jeśli potrzebne ufw allow 8080/tcp

Najczęstsze pytania

Jak włączyć UFW na Ubuntu/Debian? +
Instalacja i uruchomienie UFW: sudo apt install ufw && sudo ufw allow ssh && sudo ufw enable. WAŻNE: zawsze najpierw dodaj regułę dla SSH (port 22) zanim uruchomisz UFW, inaczej zablokujesz sobie dostęp do serwera. Sprawdzenie statusu: sudo ufw status verbose.
Jakie porty otworzyć na serwerze WWW z UFW? +
Minimalne porty dla serwera web: SSH (22 lub niestandardowy), HTTP (80), HTTPS (443). Opcjonalnie: MySQL (3306, tylko z konkretnego IP), PostgreSQL (5432, tylko lokalnie), Redis (6379, tylko localhost). Reguła: sudo ufw allow 80/tcp && sudo ufw allow 443/tcp. Dla MySQL z konkretnego IP: sudo ufw allow from 192.168.1.0/24 to any port 3306.
Jak zmienić port SSH z 22 na inny z UFW? +
Bezpieczna zmiana portu SSH: (1) Dodaj regułę dla nowego portu: sudo ufw allow 2222/tcp, (2) Zmień Port w /etc/ssh/sshd_config na 2222, (3) Zrestartuj SSH: sudo systemctl restart sshd, (4) Przetestuj nowe połączenie (nie zamykaj starego!), (5) Usuń regułę dla port 22: sudo ufw delete allow ssh. Bez kroku 4 ryzykujesz zablokowanie dostępu.
Jak ograniczyć liczbę połączeń SSH z UFW? +
UFW ma wbudowany rate limiting dla SSH: sudo ufw limit ssh. Blokuje IP po 6 nieudanych próbach połączenia w ciągu 30 sekund. To podstawowa ochrona przed brute-force. Bardziej zaawansowana ochrona: fail2ban (osobne narzędzie). Sprawdzenie reguł: sudo ufw status numbered.

Firewall ma sens dopiero tam, gdzie masz dostęp do systemu

Jeśli chcesz wdrożyć UFW, wybieraj VPS-y, na których sam zarządzasz portami, SSH i usługami sieciowymi.