Zabezpiecz dostęp do swojego laba

Bezpośrednie wystawienie usług laboratorium domowego do internetu to najczęstszy błąd. Nawet przy zastosowaniu zaawansowanych zabezpieczeń, ekspozycja usług przez port forwarding pozostaje znaczącym ryzykiem bezpieczeństwa.
Otwieranie portów w zaporze i przekierowanie ruchu do wewnętrznych usług wydaje się prostym rozwiązaniem. Jednak praktyka ta niesie ze sobą poważne zagrożenia:
- Zwiększona powierzchnia ataku - każdy otwarty port to potencjalna furtka dla atakujących
- Brak granularnej kontroli dostępu - trudność w ograniczeniu dostępu do konkretnych użytkowników lub urządzeń
- Podatność na ataki DDoS - bezpośrednia ekspozycja na internet
- Problemy z dynamicznymi adresami IP i CGNAT
Współczesne rozwiązania oferują znacznie bezpieczniejsze alternatywy.
1. Twingate
Twingate to rozwiązanie hybrydowe łączące technologie VPN i proxy. Oferuje nowoczesne podejście do segmentacji i kontroli dostępu w architekturze zero-trust.
Kluczowe Zalety Architektury
Brak otwartych portów: Ruch jest inicjowany od wewnętrznego konektora, eliminując potrzebę konfiguracji NAT.
Granularna kontrola dostępu: Możliwość definiowania zasad dostępu per użytkownik i urządzenie.
Zgodność z CGNAT: Rozwiązanie działa niezależnie od topologii sieci i ograniczeń NAT.
Wbudowany resolver DNS: Automatyczne rozwiązywanie nazw dla wewnętrznych usług.
Implementacja Docker Compose
version: '3.8'
services:
twingate-connector:
image: twingate/connector:1
restart: always
sysctls:
net.ipv4.ping_group_range: "0 2147483647"
environment:
- TWINGATE_NETWORK=network-name
- TWINGATE_ACCESS_TOKEN=access-token
- TWINGATE_REFRESH_TOKEN=refresh-token
- TWINGATE_LABEL_HOSTNAME=${HOSTNAME}
- TWINGATE_LABEL_DEPLOYED_BY=docker
networks:
- proxy-network
deploy:
replicas: 1
restart_policy:
condition: any
Twingate oferuje bezpłatny plan dla maksymalnie 5 użytkowników. Zawiera enterprise connectors, split tunneling i zasady dostępu warunkowego. Jedynym ograniczeniem jest zależność od zewnętrznego dostawcy usług cloud.
2. Tailscale
Tailscale implementuje architekturę mesh VPN wykorzystując protokół WireGuard. Każde urządzenie otrzymuje prywatny adres IP z zakresu 100.x.x.x, umożliwiając bezpośrednią komunikację.
Kluczowe Zalety Architektury
Zero konfiguracji portów: Automatyczne nawiązywanie połączeń bez konieczności konfiguracji firewall.
Obsługa NAT traversal: Działa za NAT, CGNAT i podwójnym NAT.
ACL i MagicDNS: Zaawansowane funkcje kontroli dostępu i resolucji nazw.
Subnet routing: Możliwość routowania całych podsieci przez wybrany węzeł.
Przykład Konfiguracji
version: '3.8'
services:
tailscale:
image: tailscale/tailscale:latest
hostname: docker-tailscale
container_name: tailscale
restart: unless-stopped
privileged: true
network_mode: host
cap_add:
- NET_ADMIN
- NET_RAW
volumes:
- tailscale-data:/var/lib/tailscale
- /dev/net/tun:/dev/net/tun
environment:
- TS_AUTHKEY=auth-key
- TS_STATE_DIR=/var/lib/tailscale
- TS_EXTRA_ARGS=--advertise-routes=192.168.1.0/24 --advertise-exit-node
3. WireGuard
WireGuard to najszybszy i najbardziej minimalistyczny protokół VPN. Stanowi fundament dla wielu innych rozwiązań, oferując pełną kontrolę nad konfiguracją.
Kluczowe Zalety Architektury
Minimalna złożoność: Mały rozmiar kodu zwiększa bezpieczeństwo i wydajność.
Brak zależności cloud: Całkowicie self-hosted rozwiązanie.
Kryptografia stanu techniki: Nowoczesne algorytmy kryptograficzne.
Elastyczna konfiguracja: Obsługa punkt-punkt, punkt-multipoint i site-to-site.
Implementacja z WG-Easy
version: '3.8'
services:
wg-easy:
image: weejewel/wg-easy:latest
container_name: wg-easy-ui
restart: unless-stopped
cap_add:
- NET_ADMIN
- SYS_MODULE
sysctls:
- net.ipv4.ip_forward=1
- net.ipv4.conf.all.src_valid_mark=1
volumes:
- ./wg-easy-data:/etc/wireguard
ports:
- "51820:51820/udp"
- "51821:51821/tcp"
environment:
- WG_HOST=YOUR_SERVER_DOMAIN
- PASSWORD=SecurePassword123!
- WG_DEFAULT_DNS=1.1.1.1,1.0.0.1
- WG_ALLOWED_IPS=0.0.0.0/0
4. Cloudflare Tunnel
Cloudflare Tunnel umożliwia bezpieczne wystawienie usług web na internet bez otwierania portów. Agent nawiązuje websocket HTTPS tunnel wychodzący.
Kluczowe Zalety Architektury
Obsługa wielu protokołów: Nie tylko HTTP, ale także SSH, RDP i inne protokoły.
Integracja z Cloudflare Access: Zaawansowane zasady dostępu i integracja z dostawcami tożsamości.
Automatyczne SSL: Certyfikaty Let's Encrypt zarządzane automatycznie.
Ochrona DDoS: Ruch przepływa przez infrastrukturę Cloudflare.
Porównanie Rozwiązań
Cecha | Twingate | Tailscale | WireGuard | Cloudflare Tunnel |
---|---|---|---|---|
Otwarte porty | Nie | Nie | Tak (serwer) | Nie |
Łatwość wdrożenia | Wysoka | Wysoka | Średnia | Wysoka |
Obsługa CGNAT | Tak | Tak | Ograniczona | Tak |
Kontrola dostępu | Zaawansowana | ACL | Brak | Zaawansowana |
Publiczne URL | Nie | Nie | Nie | Tak |
Zależność cloud | Tak | Tak | Nie | Tak |
Self-hosting | Częściowy | Częściowy | Pełny | Ograniczony |
Kolejna krytyczna podatność w FortiSIEM

Badacz SinSinology z WatchTowr Labs odkrył podatność ocenioną na 9.8 punktów w skali CVSS. Co gorsza, Fortinet potwierdził, że luka jest już aktywnie wykorzystywana przez cyberprzestępców w rzeczywistych atakach.
FortiSIEM, jako centralny element infrastruktury bezpieczeństwa, ma dostęp do logów z całej sieci organizacji. Kompromitacja takiego systemu oznacza nie tylko utratę widoczności nad bezpieczeństwem, ale również potencjalny dostęp do wrażliwych danych z całego środowiska.
Luka znajduje się w procesie phMonitor
, który działa na porcie TCP 7900. Konkretnie problem tkwi w funkcji phMonitorProcess::handleStorageArchiveRequest
, odpowiedzialnej za obsługę żądań archiwizacji.
Kluczowe elementy podatności:
- Brak uwierzytelnienia: Atakujący może wysłać złośliwe żądanie bez logowania
- Nieprawidłowa sanityzacja: Funkcja
ShellCmd::addParaSafe
nie filtruje wszystkich niebezpiecznych znaków - Command injection: Możliwość wstrzyknięcia własnych poleceń do wywołania systemowego
Aplikacja przetwarza przesłane dane XML i wykorzystuje je do budowania polecenia systemowego:
/opt/phoenix/deployment/jumpbox/datastore.py nfs test [IP_ADDRESS] [DIRECTORY] archive
Problem polega na tym, że funkcja sanityzująca escapuje jedynie cudzysłowy, ale ignoruje inne niebezpieczne znaki jak `.
Atakujący może przesłać następujący payload XML:
<root>
<archive_storage_type>nfs</archive_storage_type>
<archive_nfs_server_ip>127.0.0.1</archive_nfs_server_ip>
<archive_nfs_archive_dir>`touch${IFS}/tmp/pwned`</archive_nfs_archive_dir>
<scope>local</scope>
</root>
Wykorzystanie zmiennej ${IFS}
(Internal Field Separator) pozwala ominąć filtry spacji, a backticki umożliwiają wykonanie dowolnej komendy.
Wersje dotknięte podatnością
Wersja FortiSIEM | Status | Zalecane działanie |
---|---|---|
7.4.x | Nie dotyczy | Brak działań |
7.3.0 - 7.3.1 | Podatna | Aktualizacja do 7.3.2+ |
7.2.0 - 7.2.5 | Podatna | Aktualizacja do 7.2.6+ |
7.1.0 - 7.1.7 | Podatna | Aktualizacja do 7.1.8+ |
7.0.0 - 7.0.3 | Podatna | Aktualizacja do 7.0.4+ |
6.7.0 - 6.7.9 | Podatna | Aktualizacja do 6.7.10+ |
6.6.x i starsze | Podatna | Migracja do nowszej wersji |
Jeśli natychmiastowa aktualizacja nie jest możliwa:
# Blokowanie portu 7900 na firewallu
iptables -I INPUT -p tcp --dport 7900 -j DROP
# Lub ograniczenie dostępu tylko do zaufanych sieci
iptables -I INPUT -p tcp --dport 7900 -s [TRUSTED_NETWORK] -j ACCEPT
iptables -I INPUT -p tcp --dport 7900 -j DROP
Wizualizacja laba
Aplikacja pozwala w szybki sposób przygotować wizualizację laba oraz przetestować jak w bardzo podstawowych warunkach będą poruszać się pakiety.
Wygeneruj raport z dostępności sieci
Skrypt wykonuje testy dostępności ICMP dla listy adresów IP, zbiera statystyki RTT i strat pakietów, generuje raport HTML i wysyła go e‑mailem. Możesz go użyć do jednoczesnego sprawdzenia wielu urządzeń w sieci — przydaje się do szybkiej identyfikacji hostów niedostępnych, z częściową utratą pakietów lub o podwyższonych opóźnieniach. Dzięki zastosowaniu scapy, wielowątkowości i szablonów Jinja2 otrzymujesz czytelny raport z metrykami (min/max/avg RTT, procent strat) oraz łatwą konfigurację w pliku YAML.
Wprowadzenie do protokołu UTCP
Przeczytaj całą historię
Zarejestruj się teraz, aby przeczytać całą historię i uzyskać dostęp do wszystkich postów za tylko dla płacących subskrybentów.
Subskrybuj