1.  [Strona główna](/) ›
2.  [Baza wiedzy](/baza-wiedzy/) ›
3.  UFW Firewall na VPS - konfiguracja

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

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

⚡ W skrócie · 7 min czytania

-   Jak skonfigurować UFW na Ubuntu/Debian VPS: dodawanie reguł, zmiana portu SSH, rate limiting, logowanie i typowe scenariusze.
-   Instalacja i pierwsze uruchomienie.
-   Podstawowe reguły dla serwera web.
-   Reguły dla baz danych i serwisów wewnętrznych.
-   Rate limiting SSH - ochrona przed brute-force.

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.

Mikrus

Dobry do nauki firewalli, SSH i podstawowego hardeningu.

VPS

[Aktywuj rabat →](/out/mikrus/#reklama "Mikrus")

#Reklama · link partnerski

[Zobacz kod rabatowy →](/kody-rabatowe/mikrus/)

Contabo

Opcja do bardziej rozbudowanych testów sieciowych i wielu usług.

Zasoby

[Aktywuj rabat →](/out/contabo/#reklama "Contabo")

#Reklama · link partnerski

[Zobacz kod rabatowy →](/kody-rabatowe/contabo/)

ProSerwer.pl

Polski punkt odniesienia dla własnej konfiguracji UFW i usług systemowych.

PL VPS

[Aktywuj rabat →](/out/proserwer-pl/#reklama "ProSerwer.pl")

#Reklama · link partnerski

[Zobacz kod rabatowy →](/kody-rabatowe/proserwer/)

## Powiązane strony

-   [Fail2ban - konfiguracja na VPS](/baza-wiedzy/fail2ban-konfiguracja-vps/)
-   [Klucze SSH - konfiguracja i bezpieczeństwo](/baza-wiedzy/ssh-klucze-konfiguracja-hosting/)
-   [Nginx - konfiguracja virtual hosts](/baza-wiedzy/nginx-vhost-konfiguracja/)
-   [phpMyAdmin - zabezpieczenie dostępu](/baza-wiedzy/phpmyadmin-bezpieczenstwo/)
-   [Wszystkie artykuły](/baza-wiedzy/)
-   [Bezpieczeństwo VPS - checklist po instalacji
    
    Kompletna lista kontrolna bezpieczeństwa VPS po instalacji: SSH hardening, UFW firewall, fail2ban, unattended-upgrades,…
    
    ](/baza-wiedzy/bezpieczenstwo-vps-checklist/)
-   [CrowdSec - nowoczesna ochrona serwera z community blocklist
    
    CrowdSec: instalacja na Ubuntu, parsery Nginx/SSH/WordPress, bouncer nftables, community blocklist, konsola online.…
    
    ](/baza-wiedzy/crowdsec-ochrona-serwera/)
-   [Jaki VPS wybrać?](/jaki-vps-wybrac/)

Autor: [Redakcja HostGrade.pl](/autorzy/) Zespół redakcyjny · Aktualizacja: 8 maja 2026

Artykuły HostGrade.pl przygotowuje i aktualizuje redakcja serwisu. Ceny startowe, ceny odnowienia i warunki planów sprawdzamy w cennikach i regulaminach dostawców, a potem liczymy całkowity koszt za 2 lata (cena startowa plus odnowienia). Zasady zbierania danych i liczenia kosztów opisujemy na stronie Metodologia. Linki partnerskie oznaczamy jako #reklama.

[O redakcji i metodologii →](/autorzy/)