PROFINET - protokół warstwy 2 w ekosystemie Siemens. Bezpieczeństwo i segmentacja
PROFINET - komunikacja przemysłowa warstwy 2 (EtherType), tryby RT i IRT, ekosystem Siemens. Dlaczego firewalle IP nie wystarczą i jak projektować segmentację.
PROFINET (Process Field Network) to protokół komunikacji przemysłowej opracowany przez organizację PROFIBUS & PROFINET International (PI) i stanowiący fundament ekosystemu automatyki Siemens. W odróżnieniu od wielu protokołów przemysłowych, PROFINET w swoich trybach czasu rzeczywistego (RT i IRT) nie korzysta ze stosu TCP/IP - ramki przesyłane są bezpośrednio w warstwie 2 modelu OSI z dedykowanym EtherType 0x8892. Ta cecha daje PROFINET wyjątkową wydajność, ale jednocześnie sprawia, że tradycyjne firewalle IP są wobec niego bezradne.
Architektura i tryby komunikacji
PROFINET definiuje trzy klasy komunikacji, różniące się wymaganiami czasowymi i mechanizmem transportu:
PROFINET NRT (Non-Real-Time)
Komunikacja niekrytyczna czasowo - diagnostyka, konfiguracja, przesyłanie plików firmware. Wykorzystuje standardowy stos TCP/IP i UDP. Ten tryb jest “widoczny” dla firewalli IP i może być filtrowany jak każdy inny ruch sieciowy.
PROFINET RT (Real-Time)
Podstawowy tryb wymiany danych I/O w czasie rzeczywistym. Ramki RT pomijają stos TCP/IP i są przesyłane bezpośrednio jako ramki Ethernet z EtherType 0x8892. Priorytet ramek jest zarządzany przez mechanizm VLAN tagging (IEEE 802.1Q) z wysokim priorytetem CoS. Typowy cykl komunikacji: 1-10 ms.
PROFINET IRT (Isochronous Real-Time)
Tryb deterministyczny dla aplikacji wymagających synchronizacji poniżej 1 ms - typowo napędy serwo, systemy motion control. IRT rezerwuje dedykowane sloty czasowe w cyklu komunikacji (podobnie do TDMA). Wymaga przełączników z obsługą IRT (np. Siemens SCALANCE z chipem ERTEC).
Parametry techniczne
| Parametr | Wartość |
|---|---|
| Warstwa modelu OSI | 2 (RT/IRT) / 4-7 (NRT) |
| EtherType | 0x8892 |
| Porty TCP/UDP (tryb NRT) | UDP 34964 (DCP), TCP 102 (S7comm), UDP 161 (SNMP) |
| Cykl komunikacji RT | 1-10 ms |
| Cykl komunikacji IRT | < 1 ms (deterministyczny) |
| Uwierzytelnianie | Brak |
| Szyfrowanie | Brak |
| Główny ekosystem | Siemens (S7-1500, S7-1200, ET 200, SCALANCE) |
| Organizacja standaryzująca | PI (PROFIBUS & PROFINET International) |
Ocena bezpieczeństwa
PROFINET nie posiada wbudowanych mechanizmów uwierzytelniania ani szyfrowania - w żadnym z trybów komunikacji. Oznacza to, że:
- Każde urządzenie podłączone do segmentu sieciowego z PROFINET RT/IRT może odczytywać i wstrzykiwać ramki
- Protokół DCP (Discovery and Configuration Protocol) pozwala na zmianę nazwy i adresu IP urządzeń PROFINET bez uwierzytelniania - znany wektor ataków DoS
- Komunikacja S7comm (TCP 102) używana przez stacje inżynierskie TIA Portal do programowania sterowników S7 nie wymaga uwierzytelniania w domyślnej konfiguracji
Problem z firewallami IP
To kluczowa różnica wobec protokołów takich jak EtherNet/IP czy Modbus TCP. Ruch PROFINET RT i IRT nie ma nagłówków IP - firewall warstwy 3 po prostu go nie widzi. Ramki przechodzą przez przełączniki jak każdy inny ruch L2, a standardowe ACL oparte na adresach IP i portach nie mają zastosowania.
TIP
Jeśli w sieci OT działają urządzenia PROFINET, przetestuj, czy Twój firewall faktycznie widzi ruch RT/IRT. Wiele organizacji dowiaduje się o tej luce dopiero podczas audytu. Sprawdź, czy przełączniki w strefie PROFINET mają włączone filtrowanie na poziomie MAC i VLAN.
Siemens S7 - dodatkowy kontekst
PROFINET jest ściśle powiązany z protokołem S7comm/S7comm-plus, używanym do programowania i konfiguracji sterowników Siemens S7. W starszych modelach (S7-300, S7-400) protokół S7comm nie oferuje uwierzytelniania - każdy klient z dostępem do TCP 102 może odczytać i zapisać program sterownika. Nowsze S7-1500 z firmware v2.0+ wspierają mechanizm Access Protection (hasło na poziom dostępu), ale nie szyfrują komunikacji.
TIP
Narzędzie open-source snap7 (biblioteka C/Python) umożliwia pełną komunikację z PLC Siemens przez S7comm - odczyt/zapis bloków danych, upload/download programu. Służy integratorom, ale jest też regularnie wykorzystywane w scenariuszach ofensywnych. Dostęp do TCP 102 powinien być ściśle ograniczony.
Segmentacja sieci z PROFINET
Segmentacja sieci zawierającej PROFINET wymaga podejścia uwzględniającego specyfikę warstwy 2. Nie wystarczą reguły firewalla IP - potrzebne są mechanizmy działające na poziomie ramek Ethernet.
Zalecenia praktyczne
-
Dedykowane VLANy dla stref PROFINET - urządzenia PROFINET RT/IRT powinny być izolowane w osobnych VLANach. Ruch między VLANami powinien przechodzić przez firewall L2-aware lub router z inspekcją ramek.
-
Firewalle L2-aware na granicach stref - stosuj firewalle rozumiejące EtherType 0x8892 i strukturę ramek PROFINET. Przykłady: Siemens SCALANCE S (seria 600), Hirschmann EAGLE, Phoenix Contact mGuard. Te urządzenia potrafią filtrować ruch PROFINET na podstawie nazwy urządzenia, typu ramki i funkcji CIP.
-
Filtrowanie DCP - protokół DCP (discovery/configuration) powinien być ograniczony do stacji inżynierskich. Blokuj ramki DCP Set na portach przełącznika, do których nie są podłączone stacje TIA Portal.
-
Separacja ruchu NRT od RT/IRT - ruch diagnostyczny (TCP/IP) powinien przechodzić przez oddzielny interfejs sieciowy lub VLAN. Wiele sterowników S7-1500 obsługuje dwa porty Ethernet - jeden dla PROFINET RT, drugi dla komunikacji IT/diagnostyki.
-
Kontrola dostępu do TCP 102 - programowanie sterowników (S7comm) powinno być możliwe wyłącznie ze stacji inżynierskich w autoryzowanym segmencie. Firewall powinien blokować TCP 102 z każdego innego źródła.
-
Port security na przełącznikach - ograniczenie liczby adresów MAC na porcie i blokowanie nieznanych adresów MAC utrudnia podłączenie nieautoryzowanych urządzeń do segmentu PROFINET.
-
Monitoring specjalizowany - systemy IDS z obsługą PROFINET (Claroty, Nozomi, Rhebo) dekodują ramki L2 i wykrywają anomalie: nieautoryzowane operacje DCP, zmiany topologii, nowe urządzenia w segmencie.
Więcej o projektowaniu stref i korytarzy w środowiskach OT znajdziesz w artykule Segmentacja sieci OT - jak chronić systemy przemysłowe.
Podsumowanie
PROFINET to protokół wyjątkowo wydajny, ale wymagający przemyślanego podejścia do bezpieczeństwa. Działanie w warstwie 2 czyni go niewidocznym dla standardowych firewalli IP - co w wielu instalacjach oznacza, że ruch PROFINET nie podlega żadnej inspekcji. Brak uwierzytelniania i szyfrowania w połączeniu z szerokim wdrożeniem w ekosystemie Siemens sprawia, że segmentacja na poziomie L2 (VLANy, firewalle L2-aware, port security) jest nie opcją, lecz koniecznością.
Narzędzia open source
| Narzędzie | Język | Opis | Link |
|---|---|---|---|
| zeek-plugin-profinet | Zeek (NSM) | Plugin do Zeek generujący ustrukturyzowane logi z ruchu PROFINET DCP i RPC | GitHub |
| ProfinetTools | .NET | Skaner urządzeń PROFINET - wykrywanie i identyfikacja w segmencie sieciowym | GitHub |
| Wireshark | C | Wbudowany disektor PROFINET - analiza ramek RT/IRT, DCP i komunikacji S7 | wireshark.org |
TIP
zeek-plugin-profinet generuje ustrukturyzowane logi ruchu PROFINET DCP discovery i RPC - idealne do wykrywania nieautoryzowanych operacji konfiguracyjnych w sieci OT.
Źródła
- PI - PROFINET Technology - oficjalna dokumentacja PROFINET International
- Siemens - PROFINET System Description - opis techniczny Siemens
- CISA - ICS-CERT Advisories for Siemens - alerty bezpieczeństwa dotyczące produktów Siemens
- Biham, Bitan, Cassuto et al. - “A Security Analysis of PROFINET” - analiza bezpieczeństwa protokołu (2022)
- snap7 - GitHub - biblioteka komunikacji S7
- Siemens SCALANCE S - Industrial Security Appliances - firewalle L2 dla PROFINET