Generator reguł UFW
Skrypt bash dla UFW: polityki domyślne, SSH z limitem prób lub z jednego IP, HTTP/HTTPS i własne reguły ze źródłem
-
1Wprowadź dane
Wpisz treść, wklej tekst lub załaduj plik z dysku. -
2Kliknij przycisk
Narzędzie natychmiast przetworzy Twoje dane w przeglądarce. -
3Pobierz wynik
Skopiuj gotowy tekst lub zapisz plik na urządzeniu.
return "Wynik gotowy w 0.1s";
}
Źródło i komentarz są opcjonalne (brak źródła = z dowolnego adresu). Zakres portów zapisz jako 6000:6007/tcp.
Reguł w skrypcie
Ruch przychodzący
Domyślnie deny
Ruch wychodzący
Domyślnie allow
Port SSH
Z limitem prób
Skrypt UFW (bash)
Wklej skrypt w terminalu serwera albo zapisz go jako ufw.sh i uruchom poleceniem bash ufw.sh. Do czasu sprawdzenia reguł zostaw otwartą drugą sesję SSH.
Ściąga UFW
| Polecenie | Co robi |
|---|---|
| sudo ufw status numbered | Lista reguł z numerami |
| sudo ufw delete 3 | Usuwa regułę o numerze 3 (numer z „status numbered”) |
| sudo ufw allow 8080/tcp | Otwiera port 8080 dla TCP |
| sudo ufw deny from 203.0.113.5 | Blokuje ruch z jednego adresu IP |
| sudo ufw logging on | Włącza logowanie (plik /var/log/ufw.log) |
| sudo ufw reload | Przeładowuje reguły |
| sudo ufw disable | Wyłącza firewall, reguły zostają zapisane |
| sudo ufw reset | Kasuje wszystkie reguły i wyłącza UFW |
| Port | Protokół | Usługa |
|---|---|---|
| 22 | TCP | SSH |
| 80 | TCP | HTTP |
| 443 | TCP | HTTPS |
| 25 | TCP | SMTP (serwer pocztowy) |
| 587 | TCP | SMTP – wysyłka z uwierzytelnieniem |
| 993 | TCP | IMAP przez TLS |
| 53 | TCP i UDP | DNS |
| 123 | UDP | NTP (czas) |
| 3306 | TCP | MySQL / MariaDB – tylko z zaufanych adresów |
| 5432 | TCP | PostgreSQL – tylko z zaufanych adresów |
| 6379 | TCP | Redis – tylko z zaufanych adresów |
| 27017 | TCP | MongoDB – tylko z zaufanych adresów |
Najpierw SSH, potem włączenie
Przy połączeniu zdalnym dopuść port SSH, zanim włączysz firewall. Jeśli zmieniono port w sshd, wpisz ten sam w generatorze. Skrypt używa --force, więc nie poprosi o potwierdzenie.
Co robi ufw limit
Reguła limit przepuszcza połączenia, ale odrzuca adres IP, który w ciągu 30 sekund próbował nawiązać 6 lub więcej połączeń. To proste ograniczenie zgadywania haseł; nie zastępuje kluczy SSH.
Polityki domyślne
Przy „deny” dla ruchu przychodzącego otwarte jest tylko to, co wypiszesz w regułach. Przy „allow” reguły allow nic nie zmieniają. Domyślnie UFW zezwala na ruch wychodzący; blokada wymaga ręcznego otwarcia DNS i HTTP(S), inaczej nie działają aktualizacje.
Docker i UFW
Porty publikowane przez Dockera (-p 8080:80) dodają własne reguły iptables i mogą być dostępne z zewnątrz mimo reguł UFW. Publikuj na 127.0.0.1 albo za reverse proxy.
Oceń to narzędzie:
Powiązane narzędzia
Inne narzędzia, które mogą Ci się przydaćGenerator reguł UFW
UFW (Uncomplicated Firewall) to prosta nakładka na iptables, instalowana domyślnie w Ubuntu. Generator reguł UFW składa z zaznaczonych opcji gotowy skrypt bash: ustawia IPv6, polityki domyślne, dopuszcza SSH (z limitem prób albo tylko z wybranego adresu), porty 80 i 443 oraz Twoje reguły niestandardowe, a na końcu włącza firewall.
Podstawowe zasady
| Zasada | Efekt |
|---|---|
| default deny incoming | blokuje ruch przychodzący, który nie pasuje do żadnej reguły |
| default allow outgoing | serwer dalej łączy się na zewnątrz: aktualizacje, DNS, zewnętrzne API |
| allow 22/tcp | otwiera SSH dla wszystkich adresów |
| limit 22/tcp | przepuszcza SSH, ale odrzuca adres, który w ciągu 30 sekund próbuje otworzyć 6 lub więcej połączeń (ochrona brute force) |
| allow 80/tcp, allow 443/tcp | otwiera serwer www |
| allow from 10.0.0.0/8 to any port 3306 proto tcp | dopuszcza MySQL tylko z sieci wewnętrznej |
Bezpieczne wdrożenie
- dodaj regułę na SSH przed włączeniem firewalla – w skrypcie z generatora
ufw --force enablestoi zawsze na końcu, po regułach, - zostaw otwartą drugą sesję SSH, dopóki nie zalogujesz się ponownie w nowym oknie,
- sprawdź
ufw status verbose, - w razie potrzeby włącz logi:
ufw logging on(plik /var/log/ufw.log), - nie blokuj sobie dostępu – trzymaj konsolę awaryjną (VNC/KVM w panelu dostawcy serwera).
Jak działa generator reguł UFW
Generator nie filtruje ruchu sam z siebie – zbiera wybrane opcje (politykę domyślną, porty, adresy źródłowe) i składa je w gotowy skrypt z komendami ufw, który wykonujesz na serwerze: wklejasz w terminalu albo zapisujesz jako ufw.sh i uruchamiasz poleceniem bash ufw.sh. UFW sprawdza reguły od góry, a pakiet zatrzymuje się na pierwszej pasującej regule. Polityka domyślna stanowi więc tło, a każdy wyjątek to osobny wpis dopisany ponad nią. Skrypt zaczyna się od set -euo pipefail, więc zatrzyma się na pierwszym błędzie, np. gdy pakiet ufw nie jest zainstalowany (w Debianie: sudo apt install ufw).
Reguła default deny incoming ustawia domyślną politykę dla ruchu przychodzącego: wszystko, co nie pasuje do żadnej reguły dopuszczającej, zostaje odrzucone. Ruch wychodzący pozostaje bez zmian, więc serwer nadal może pobierać aktualizacje i wysyłać odpowiedzi na nawiązane połączenia. Kolejność poleceń w skrypcie jest stała: wpis IPV6=yes lub IPV6=no w /etc/default/ufw, polityki domyślne dla ruchu wychodzącego i przychodzącego, reguła SSH, HTTP, HTTPS, reguły niestandardowe, opcjonalne reguły wychodzące i logowanie, a na końcu sudo ufw --force enable i sudo ufw status verbose. Przełącznik --force pomija pytanie o potwierdzenie, które UFW zadaje przy aktywnej sesji SSH. Gdy odznaczysz „Włącz UFW na końcu skryptu”, generator pominie ustawienie IPv6, polityki i włączenie firewalla – zostaną same reguły do dopisania w działającej konfiguracji.
Osobny mechanizm to limit. Zamiast zwykłego dopuszczenia UFW dopina regułę śledzącą i liczy próby połączeń z danego adresu. Adres, który w ciągu 30 sekund spróbuje nawiązać 6 lub więcej połączeń, jest blokowany. Dlatego limit nadaje się do SSH, gdzie nikt nie potrzebuje wielu równoległych sesji, ale nie do portów 80 i 443, przez które za jednym adresem NAT może kryć się wielu użytkowników. Generator stosuje go tylko do SSH. Limit nie zastępuje logowania kluczem.
Trzy gotowe ustawienia przyspieszają start: „Serwer WWW” (deny incoming, SSH, HTTP i HTTPS), „API (tylko HTTPS)” (bez portu 80) oraz „Sieć lokalna” (allow incoming, bez reguł WWW). Nad skryptem widać liczbę reguł, stan obu polityk i port SSH, a pod nimi ostrzeżenia: brak SSH przy włączanym firewallu, port inny niż 22, przychodzące allow, blokada ruchu wychodzącego bez DNS i HTTP(S) oraz pominięte, błędnie zapisane reguły.
Przykład krok po kroku: SSH, WWW i baza w sieci wewnętrznej
- Wybierz ustawienie „Serwer WWW”. Polityka przychodząca to deny, zaznaczone są SSH, HTTP i HTTPS. Ruch wychodzący zostaje na allow, więc aktualizacje i DNS działają bez dodatkowych reguł.
- Zawęź SSH. Wpisz port 2222, a w polu „Tylko z adresu” swój stały adres, np. 203.0.113.10. Przy zaznaczonym limicie powstaje reguła
sudo ufw limit from 203.0.113.10 to any port 2222 proto tcp comment 'SSH z limitem prób'. Generator ostrzeże, że port różni się od 22 – przed uruchomieniem sprawdź dyrektywęPortw/etc/ssh/sshd_config. - Dodaj bazę danych. W polu reguł niestandardowych zastąp dwa przykładowe wiersze jednym:
3306/tcp; 10.0.0.0/8; MySQL. Wynik:sudo ufw allow from 10.0.0.0/8 to any port 3306 proto tcp comment 'MySQL'. - Sprawdź licznik. SSH, HTTP, HTTPS i MySQL dają 4 reguły w skrypcie. Polityki domyślne i logowanie nie są wliczane.
- Uruchom i zweryfikuj. Po
bash ufw.shskrypt sam wywołaufw status verbose. Przy włączonym IPv6 reguły HTTP i HTTPS pojawią się dwa razy, drugi raz z dopiskiem (v6). Reguły z adresem IPv4 w źródle (SSH i MySQL) mają tylko wersję IPv4.
Tabela referencyjna reguł
Reguły niestandardowe wpisujesz po jednej w wierszu, w formacie port/protokół; źródło; komentarz. Źródło to adres IP albo sieć CIDR, IPv4 lub IPv6; puste pole oznacza dowolny adres. Komentarz jest skracany do 60 znaków, a znaki spoza liter, cyfr i podstawowej interpunkcji są usuwane. Generator przyjmuje do 100 reguł.
| Wpis w polu | Polecenie w skrypcie |
|---|---|
| 8080 | sudo ufw allow 8080 |
| 8080/tcp; ; Panel | sudo ufw allow 8080/tcp comment 'Panel' |
| 3306/tcp; 10.0.0.0/8; MySQL | sudo ufw allow from 10.0.0.0/8 to any port 3306 proto tcp comment 'MySQL' |
| 5432/tcp; 2001:db8::/32; PostgreSQL | sudo ufw allow from 2001:db8::/32 to any port 5432 proto tcp comment 'PostgreSQL' |
| 6000:6007/tcp | sudo ufw allow 6000:6007/tcp |
| 6000:6007 | pominięte: zakres portów wymaga protokołu |
| 70000/tcp | pominięte: port poza zakresem 1–65535 |
Praktyczne wskazówki użycia
- Najpierw SSH, potem firewall. Regułę na port SSH dodaj przed włączeniem filtrowania i trzymaj otwartą drugą konsolę. Zamknięcie ruchu przychodzącego bez wyjątku na SSH oznacza utratę dostępu do serwera.
- Do SSH używaj limit, nie allow. Próg 6 połączeń w 30 sekund wystarcza do normalnej pracy, a skutecznie utrudnia automatyczne zgadywanie hasła. Zwykłe allow 22/tcp nie daje żadnego licznika.
- Porty 80 i 443 zostaw jako allow. Za jednym adresem NAT może stać wielu użytkowników, więc limit na porcie WWW blokowałby normalnych odwiedzających, a nie atakujących.
- Zawężaj źródło, kiedy to możliwe. Bazę danych czy Redis lepiej ograniczyć wpisem z adresem 10.0.0.0/8 niż otwierać dla wszystkich. Każdy adres spoza podanego zakresu nie przejdzie.
- Przy polityce deny dla ruchu wychodzącego zostaw zaznaczone DNS, HTTP, HTTPS i NTP. Generator dopisze wtedy 4 reguły
allow out(53, 80/tcp, 443/tcp, 123/udp); bez nich apt nie pobierze aktualizacji. - Po każdej zmianie zajrzyj do
ufw status numbered. Zbędną regułę usuniesz poleceniemufw deletez jej numerem.
Ograniczenia generatora
- Brak geolokalizacji. UFW nie filtruje ruchu po kraju pochodzenia. Generator nie zbuduje reguły typu „tylko Polska” – potrzebne są ipset lub zewnętrzne listy adresów, a źle dobrana lista potrafi odciąć własnych użytkowników.
- Nie zna stanu serwera. Narzędzie nie sprawdza, na jakim porcie faktycznie nasłuchuje SSH ani czy port 80 jest w ogóle używany. Wartości wpisujesz ręcznie, więc pomyłka w numerze portu daje regułę, która niczego nie otwiera.
- Nie analizuje istniejących reguł. UFW dopisuje nowe do tych, które już są (identycznych nie dubluje), więc stare wpisy zostają. Aby zacząć od zera, wykonaj wcześniej
sudo ufw reset. - Reguły niestandardowe są zawsze typu allow i zawsze dotyczą portu. Blokadę adresu, np.
sudo ufw deny from 203.0.113.5, dopisz do skryptu ręcznie.
Najczęstsze pytania
Czym różni się ufw allow 22 od ufw limit 22?
allow przepuszcza każde połączenie na porcie 22. limit dokłada licznik i odrzuca adres, który w ciągu 30 sekund próbuje nawiązać 6 lub więcej połączeń, co spowalnia atak siłowy na SSH.
Jak nie zablokować sobie SSH przez UFW?
Dodaj regułę na port, na którym faktycznie działa sshd, zanim włączysz firewall, i trzymaj otwartą drugą sesję. Jeśli ograniczasz SSH do jednego adresu, upewnij się, że to Twój stały publiczny IP, a nie adres zmieniany przez operatora.
Czy UFW obsługuje IPv6?
Tak, gdy w /etc/default/ufw jest IPV6=yes – skrypt z generatora ustawia to domyślnie. Reguły bez adresu źródłowego obejmują wtedy IPv4 i IPv6, a reguły z konkretnym adresem tylko jego wersję protokołu.
Jak sprawdzić, czy firewall UFW działa?
sudo ufw status verbose pokazuje stan (active lub inactive), polityki domyślne i listę reguł. Odrzucony ruch zobaczysz w /var/log/ufw.log po włączeniu ufw logging on.
Jak usunąć regułę UFW?
Wyświetl reguły z numerami poleceniem sudo ufw status numbered, a potem wykonaj sudo ufw delete z numerem reguły. Numery przesuwają się po każdym usunięciu, więc sprawdzaj listę ponownie.