Ten przewodnik pokazuje, jak zainstalować i skonfigurować UFW (Uncomplicated Firewall) — prosty, ale skuteczny firewall dla systemu Linux. UFW ułatwia zarządzanie regułami zapory na serwerze VPS.
📋 Wymagania wstępne
- Serwer VPS z dostępem root lub sudo
- Aktywne połączenie SSH
- Ubuntu/Debian (polecenia dostosowane do tych dystrybucji)
📥 Instalacja UFW
Instalacja na Ubuntu/Debian
Bashsudo apt update sudo apt install ufw -y
Weryfikacja instalacji
Bash# Sprawdź status UFW sudo ufw status
Jeśli UFW nie jest włączony, zobaczysz komunikat: Status: inactive
⚙️ Podstawowa konfiguracja
Ważne: Przed włączeniem UFW upewnij się, że zezwoliłeś na port SSH (22), w przeciwnym razie stracisz dostęp do serwera.
Ustawienie reguł domyślnych
Bash# Blokuj przychodzące, zezwalaj na wychodzące sudo ufw default deny incoming sudo ufw default allow outgoing
Zezwolenie na niezbędne połączenia
Bash# SSH (22) sudo ufw allow 22/tcp # HTTP (80) sudo ufw allow 80/tcp # HTTPS (443) sudo ufw allow 443/tcp
🔧 Włączenie UFW
Po skonfigurowaniu podstawowych reguł włącz UFW:
Bash# Włącz UFW sudo ufw enable # Sprawdź status sudo ufw status verbose
Ważne: Upewnij się, że zezwoliłeś na SSH przed włączeniem UFW, w przeciwnym razie stracisz dostęp!
📝 Reguły zaawansowane
Zezwolenie na konkretne adresy IP
Bash# Zezwól na konkretny adres IP sudo ufw allow from 192.168.1.100 # Zezwól na konkretny IP na konkretnym porcie sudo ufw allow from 192.168.1.100 to any port 22
Zakresy portów
Bash# Zezwól na zakres portów sudo ufw allow 8000:9000/tcp
Odrzucanie wybranych połączeń
Bash# Odrzuć konkretny port sudo ufw deny 8080/tcp # Odrzuć konkretny adres IP sudo ufw deny from 192.168.1.200
🔍 Zarządzanie regułami
Lista wszystkich reguł
Bash# Lista numerowana sudo ufw status numbered # Szczegółowy status sudo ufw status verbose
Usuwanie reguł
Bash# Usuń regułę po numerze sudo ufw delete 3 # Usuń regułę po treści sudo ufw delete allow 80/tcp
Reset wszystkich reguł
Bash# Reset UFW do stanu domyślnego (wyłączenie i usunięcie reguł) sudo ufw reset
💡 Typowe przykłady
Konfiguracja serwera WWW
Bashsudo ufw default deny incoming sudo ufw default allow outgoing sudo ufw allow 22/tcp sudo ufw allow 80/tcp sudo ufw allow 443/tcp sudo ufw enable
Konfiguracja serwera pocztowego
Bashsudo ufw allow 25/tcp # SMTP sudo ufw allow 587/tcp # SMTP submission sudo ufw allow 465/tcp # SMTPS sudo ufw allow 993/tcp # IMAPS sudo ufw allow 995/tcp # POP3S
Konfiguracja serwera bazy danych
Bashsudo ufw allow from 192.168.1.0/24 to any port 3306 # MySQL z sieci lokalnej sudo ufw allow from 192.168.1.0/24 to any port 5432 # PostgreSQL z sieci lokalnej
✅ Weryfikacja
Sprawdź, czy UFW działa poprawnie:
Bash# Status sudo ufw status verbose # Aktywne reguły (numerowane) sudo ufw status numbered # Test połączenia z innej maszyny # (telnet lub nc do testu portów)
🚫 Wyłączenie UFW
Jeśli chcesz tymczasowo wyłączyć UFW:
Bash# Wyłącz UFW sudo ufw disable # Włącz ponownie sudo ufw enable
📚 Dobre praktyki
- Zawsze zezwalaj na SSH przed włączeniem UFW
- Testuj reguły przed wdrożeniem na produkcji
- Używaj konkretnych adresów IP, gdy to możliwe, zamiast otwierać porty dla wszystkich
- Przeglądaj reguły regularnie i usuwaj nieużywane
- Dokumentuj reguły dla łatwiejszego utrzymania
- Twórz kopię zapasową konfiguracji przed większymi zmianami
🆘 Rozwiązywanie problemów
Brak połączenia SSH po włączeniu UFW
Bash# Połącz się przez konsolę dostawcy (jeśli dostępna) # Reset UFW sudo ufw reset sudo ufw allow 22/tcp sudo ufw enable
Reguły UFW nie działają
Bash# Czy UFW jest aktywny sudo ufw status # Przeładuj UFW sudo ufw reload # Sprawdź iptables (UFW korzysta z iptables) sudo iptables -L -n
Port nadal zablokowany po dodaniu reguły
Bash# Czy reguła istnieje sudo ufw status numbered # Czy reguła deny nie ma pierwszeństwa sudo ufw status verbose # Usuń i dodaj regułę ponownie sudo ufw delete allow 80/tcp sudo ufw allow 80/tcp sudo ufw reload
📚 Dodatkowe zasoby
❓ Najczęstsze pytania
P: Czy mogę używać UFW razem z innymi narzędziami firewall?
O: Nie — UFW zarządza bezpośrednio iptables. Jednoczesne użycie z firewalld itp. może powodować konflikty.
P: Jak zezwolić na port dla konkretnej usługi?
O: Po numerze portu: sudo ufw allow 3306/tcp lub po nazwie usługi, jeśli jest zdefiniowana: sudo ufw allow mysql.
P: Czy UFW działa na CentOS/RHEL?
O: UFW jest przeznaczone głównie dla Debian/Ubuntu. Na CentOS/RHEL lepiej użyć firewalld.
P: Jak zobaczyć otwarte porty?
O: sudo ufw status verbose pokazuje aktywne reguły i porty.
P: Czy UFW w kontenerze Docker?
O: UFW działa na poziomie hosta. W kontenerach korzystaj z sieci i zabezpieczeń Dockera.