Polski

Blokowanie ruchu wychodzącego do sieci prywatnych w UFW

2 min
Hosting VPS/VDS

Gdy zainfekowany skrypt lub źle skonfigurowana aplikacja zaczyna skanować adresy 10.x albo 192.168.x, ruch opuszcza Twój serwer i często wywołuje zgłoszenia nadużyć od operatora sieci. Zablokowanie połączeń wychodzących do zakresów prywatnych to proste zabezpieczenie na każdym VPS Linux Infrawire. Ten poradnik pokazuje, jak zrobić to w UFW bez psucia DNS ani własnej łączności.

📋 Wymagania wstępne

  • VPS z dostępem SSH jako root, z Ubuntu 24.04 lub Debianem 12 (UFW jest dostępny w obu).
  • Podstawowa znajomość UFW. Jeśli nie jest jeszcze zainstalowany:
Bash
sudo apt update && sudo apt install -y ufw
  • Druga sesja SSH otwarta na czas zmian w zaporze.

🧭 Które zakresy blokować

ZakresZastosowanie
10.0.0.0/8Prywatny RFC1918
172.16.0.0/12Prywatny RFC1918
192.168.0.0/16Prywatny RFC1918
100.64.0.0/10NAT operatorski (RFC6598)
169.254.0.0/16Link-local IPv4
192.0.0.0/24Przydziały protokołowe IETF
198.18.0.0/15Testy wydajności
fc00::/7Unikalne adresy lokalne IPv6

Nie blokuj fe80::/10: IPv6 używa adresów link-local do wykrywania sąsiadów i często jako bramy domyślnej, więc ich zablokowanie całkowicie odcina IPv6.

🔍 Najpierw sprawdź, czego naprawdę potrzebuje VPS

Jeśli brama lub resolver DNS leży w zakresie prywatnym, blokada globalna odetnie Twoją sieć. Przed dodaniem jakiejkolwiek reguły przejrzyj konfigurację:

Bash
ip route ip -6 route cat /etc/resolv.conf resolvectl status | grep -E 'DNS Servers|Link'

Jeśli resolver lub usługa, od której zależysz, ma adres prywatny (PRIVATE_DNS_IP), zezwól na niego jawnie i umieść tę regułę na początku, jak poniżej. Jeśli wszystko, czego używasz, jest publiczne, możesz pominąć ten krok.

🧱 Metoda 1: ufw deny out

Upewnij się, że SSH pozostaje dostępny, i ustaw domyślne polityki. Odpowiedzi przychodzące na Twoje sesje SSH nie są dotknięte regułami wychodzącymi do zakresów prywatnych.

Bash
sudo ufw allow 22/tcp sudo ufw default deny incoming sudo ufw default allow outgoing

Jeśli potrzebujesz wyjątku, wstaw go na pozycji 1, aby był sprawdzany przed blokadami:

Bash
sudo ufw insert 1 allow out to PRIVATE_DNS_IP port 53

Teraz dodaj blokady, po jednej na zakres (UFW sprawdza reguły po kolei, obowiązuje pierwsze dopasowanie):

Bash
sudo ufw deny out to 10.0.0.0/8 sudo ufw deny out to 172.16.0.0/12 sudo ufw deny out to 192.168.0.0/16 sudo ufw deny out to 100.64.0.0/10 sudo ufw deny out to 169.254.0.0/16 sudo ufw deny out to 192.0.0.0/24 sudo ufw deny out to 198.18.0.0/15 sudo ufw deny out to fc00::/7 sudo ufw enable

ufw enable może ostrzec, że zakłóci połączenia SSH; ponieważ port 22 jest dozwolony, odpowiedz y. Sprawdź kolejność poleceniem:

Bash
sudo ufw status numbered

📄 Metoda 2: before.rules

Jeśli wolisz jeden blok reguł stosowany przed regułami użytkownika, edytuj /etc/ufw/before.rules. Najpierw zrób kopię zapasową:

Bash
sudo cp /etc/ufw/before.rules /etc/ufw/before.rules.bak sudo nano /etc/ufw/before.rules

W sekcji *filter, po liniach akceptujących loopback i połączenia już nawiązane, dodaj:

TEXT
1# Blokada ruchu wychodzącego do sieci prywatnych 2-A ufw-before-output -d 10.0.0.0/8 -j REJECT 3-A ufw-before-output -d 172.16.0.0/12 -j REJECT 4-A ufw-before-output -d 192.168.0.0/16 -j REJECT 5-A ufw-before-output -d 100.64.0.0/10 -j REJECT 6-A ufw-before-output -d 169.254.0.0/16 -j REJECT

IPv6 ma własny plik, /etc/ufw/before6.rules, z łańcuchem ufw-before-output:

TEXT
-A ufw-before-output -d fc00::/7 -j REJECT

Wyjątek dla PRIVATE_DNS_IP umieść tuż nad tymi liniami: -A ufw-before-output -d PRIVATE_DNS_IP -j ACCEPT. Przeładuj:

Bash
sudo ufw reload

REJECT odpowiada natychmiast błędem, więc aplikacje kończą się niepowodzeniem od razu zamiast czekać na timeout. Użyj -j DROP, jeśli wolisz ciszę.

✅ Weryfikacja

Reguły muszą być załadowane, a zablokowane cele muszą zawodzić, podczas gdy publiczne nadal działają:

Bash
sudo ufw status verbose ping -c 1 10.0.0.1 # musi zawieść ping -c 1 192.168.1.1 # musi zawieść curl -m 5 http://10.0.0.1 # musi zawieść ping -c 2 1.1.1.1 # musi się udać dig +short example.com # musi się rozwiązać curl -I https://www.debian.org

Przy ufw deny out nieudany ping zwykle zgłasza Operation not permitted. Liczniki pakietów potwierdzają trafienia:

Bash
sudo iptables -L ufw-user-output -n -v sudo iptables -L ufw-before-output -n -v

🛠️ Rozwiązywanie problemów

DNS przestał działać. Twój resolver jest w zakresie prywatnym. Popraw kolejność przez sudo ufw status numbered, a potem dodaj sudo ufw insert 1 allow out to PRIVATE_DNS_IP port 53. Możesz też przełączyć się na publiczny resolver w konfiguracji sieci.

Po zmianie IPv6 nie działa. Prawdopodobnie zablokowałeś fe80::/10 albo bramę w fc00::/7. Usuń regułę poleceniem sudo ufw delete deny out to fc00::/7 i dodaj ponownie tylko to, co potrzebne.

Straciłeś dostęp do usługi w sieci prywatnej (VPN, wewnętrzne API). Dodaj regułę zezwalającą dla dokładnie tego adresu: ufw insert 1 allow out to PRIVATE_IP. Jeśli odciąłeś sam SSH, użyj dowolnego dostępu konsolowego do serwera i wykonaj sudo ufw disable.


🔒 Twój VPS nie może już przypadkiem skanować sieci prywatnych: zgłoszenia nadużyć tego typu powinny ustać.

Bądź na bieżąco z najnowszymi ofertami, zniżkami i promocjami specjalnymi.

Zobacz promocje

Używamy plików cookie

Używamy plików cookie analitycznych, aby ulepszać nasz serwis. Nie sprzedajemy danych stronom trzecim. Więcej w polityce prywatności.