📬 ISN 201: Hardening Labów, Podatność FortiSIEM i Nowy Protokół UTCP!

Numer 201 poświęcony praktycznemu hardeningowi labów: jak zabezpieczyć dostęp, analiza krytycznej podatności w FortiSIEM, praktyczne wizualizacje, automatyczny raport dostępności sieci i wprowadzenie do protokołu UTCP — wszystko do szybkiego wdrożenia.
📬 ISN 201: Hardening Labów, Podatność FortiSIEM i Nowy Protokół UTCP!

Zabezpiecz dostęp do swojego laba

Stop Exposing Your Home Lab - Do This Instead
Set up secure remote access for your home lab using Twingate, Tailscale, WireGuard, and Cloudflare Tunnel, no open ports or exposed services

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

Kolejny problem Fortineta - podatne FortiSIEM pod ostrzałem
Mamy wrażenie, że nie tylko nas zaczynają nużyć problemy produktów bezpieczeństwa, zwłaszcza od kilku firm… . Tym razem legendarny badacz SinSinology prezentuje krytyczną podatność (9.8 w skali CVSS w biuletynie bezpieczeństwa producenta) w produkcie dedykowanym dużym organizacjom – FortiSIEM. TLDR: Sprawa nie jest błaha, ponieważ jak informuje Fortinet luka ta…

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

NetVision
A network visualization and simulation app.

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

GitHub - NetFreak85/icmp-reachability-reporter: A Python script to check the ICMP reachability of multiple network devices using concurrent threads and generate a styled HTML report.
A Python script to check the ICMP reachability of multiple network devices using concurrent threads and generate a styled HTML report. - NetFreak85/icmp-reachability-reporter

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

Świetnie! Udało ci się pomyślnie zarejestrować.
Witaj z powrotem! Zalogowałeś się pomyślnie.
Pomyślnie subskrybowałeś Inna Sieć.
Twój link wygasł.
Sukces! Sprawdź swoją skrzynkę e-mailową, aby uzyskać magiczny link do logowania.
Sukces! Twoje informacje rozliczeniowe zostały zaktualizowane.
Twoje informacje rozliczeniowe nie zostały zaktualizowane.