Firewall nowej generacji to znacznie więcej niż urządzenie filtrujące ruch na podstawie adresów IP, portów i protokołów. Współczesne rozwiązania muszą jednocześnie realizować routing, kontrolować sesje, analizować zawartość komunikacji, wykrywać zagrożenia i obsługiwać szyfrowany ruch sieciowy (i przede wszystkim zaglądać w niego). Jak tego dokonać zachowując odpowiednią wydajność?
Działanie FortiGate łączy dwie kwestie – programowe mechanizmy bezpieczeństwa oraz specjalizowane układy sprzętowe ASIC.
Zrozumienie architektury FortiGate wymaga więc spojrzenia na kilka współpracujących ze sobą elementów: procesor główny CPU, jednostki SPU, mechanizmy akceleracji sprzętowej, sposób przetwarzania pakietów i tryby inspekcji
Architektura FortiGate — ogólny model działania
Podstawą działania FortiGate jest FortiOS, czyli system operacyjny odpowiedzialny za konfigurację urządzenia, zarządzanie ruchem oraz uruchamianie funkcji bezpieczeństwa. Administrator definiuje w nim polityki firewall, tablice routingu, profile inspekcji, ustawienia interfejsów i pozostałe parametry pracy urządzenia.
W zależności od modelu FortiGate i rodzaju wykonywanej operacji przetwarzanie może angażować procesor główny CPU, wyspecjalizowane układy ASIC lub oba te elementy. Takie rozdzielenie jest ważne, ponieważ firewall nie powinien wykonywać wszystkich operacji na pakietach wyłącznie za pomocą ogólnego procesora. Przy dużym natężeniu ruchu mogłoby to wysycić możliwości naszego urządzenia. Prowadzić to może do niestabilnego działania, np. losowych restartów i failoverów (zamiany ról urządzeń master oraz backup w klastrze HA). Właśnie dlatego Fortinet rozwija własne układy przeznaczone do przyspieszania wybranych operacji sieciowych i bezpieczeństwa.
ASIC w FortiGate — NP, CP
ASIC, czyli Application-Specific Integrated Circuit, to układ scalony zaprojektowany do realizacji określonych zadań. W przeciwieństwie do uniwersalnego procesora CPU, który może wykonywać szeroki zakres instrukcji, ASIC jest zoptymalizowany pod kątem konkretnych operacji.
W urządzeniach FortiGate rozwiązania te są wykorzystywane do przyspieszania przetwarzania ruchu sieciowego i wybranych funkcji bezpieczeństwa. Ich zastosowanie może zmniejszać obciążenie CPU, zwiększać przepustowość i ograniczać opóźnienia. Fortinet posługuje się określeniem SPU, czyli Security Processing Unit, w odniesieniu do swojej rodziny wyspecjalizowanych jednostek przetwarzających. Do najważniejszych kategorii należą Network Processor (NP) oraz Content Processor (CP). W mniejszych modelach spotykamy zintegrowane procesory CP i NP nazywane jako SP (Security Processor).
Network Processor (NP)
NP odpowiada przede wszystkim za przyspieszanie operacji związanych z ruchem sieciowym. W zależności od generacji układu i modelu urządzenia może wspomagać obsługę pakietów, przekazywanie ruchu, przetwarzanie sesji oraz wybrane operacje sieciowe.
W praktyce oznacza to, że ruch spełniający określone warunki może być przetwarzany przez wyspecjalizowany układ zamiast angażować CPU w każdą operację. Jest to szczególnie istotne przy dużej liczbie sesji i wysokim natężeniu ruchu.
Content Processor (CP)
CP koncentruje się na przyspieszaniu wybranych operacji związanych z analizą zawartości i funkcjami bezpieczeństwa. W zależności od generacji może wspomagać między innymi określone operacje kryptograficzne, inspekcję treści lub zadania związane z rozpoznawaniem wzorców.
Nie należy jednak zakładać, że każdy CP realizuje identyczny zestaw funkcji. Zakres akceleracji zależy od konkretnej generacji procesora, platformy oraz wersji FortiOS, działa on jednak w obszarze profili security w trybie flow-based oraz offloadingu SSL.
Podsumowywując, najważniejsza zasada jest prosta: ASIC nie zastępuje całkowicie CPU, lecz przejmuje te operacje, które można wykonać wydajniej w wyspecjalizowanym sprzęcie.
Hardware acceleration — jak FortiGate przyspiesza ruch
Sama obecność układów ASIC nie oznacza jeszcze, że każdy pakiet będzie przez nie przetwarzany. Kluczowe znaczenie ma mechanizm hardware acceleration, czyli sprzętowego przyspieszania obsługi ruchu.
W typowym scenariuszu FortiGate odbiera pakiet, identyfikuje kontekst komunikacji i podejmuje decyzje niezbędne do zastosowania odpowiednich reguł. Część tych operacji wymaga udziału CPU. Gdy sesja spełnia warunki określone przez daną platformę, możliwe jest przekazanie obsługi kwalifikujących się operacji do układu akcelerującego.
W tym kontekście często używa się terminu offloading. Oznacza on przeniesienie określonych zadań z procesora głównego do wyspecjalizowanego układu.
Korzyści są istotne. CPU może przeznaczyć więcej zasobów na operacje, których nie da się łatwo przenieść do ASIC, a sam ruch może być obsługiwany z większą wydajnością i mniejszym obciążeniem procesora.
Nie każda sesja może jednak korzystać z akceleracji w takim samym zakresie. Wpływ mają między innymi:
- model urządzenia i dostępne układy ASIC
- rodzaj ruchu oraz wykorzystywane protokoły
- konfiguracja polityki firewall
- aktywne profile bezpieczeństwa
- sposób obsługi inspekcji i deszyfrowania TLS
- ograniczenia wynikające z konkretnej wersji FortiOS
Ważne jest również rozróżnienie pomiędzy akceleracją sieciową a akceleracją operacji związanych z analizą treści. W zależności od modelu różne zadania mogą być obsługiwane przez różne układy.
Nie należy zatem utożsamiać hardware acceleration z całkowitym pominięciem analizy bezpieczeństwa. Sprzętowe przyspieszanie ma umożliwiać wydajną realizację obsługiwanych operacji, przy zachowaniu wymaganych kontroli. Dokładna ścieżka przetwarzania zależy od sesji i konfiguracji.
Droga pakietu przez FortiGate
Aby zrozumieć zależności między CPU, ASIC i funkcjami bezpieczeństwa, warto prześledzić uproszczony przebieg komunikacji przez firewall.
Odbiór pakietu
Ruch dociera do interfejsu wejściowego FortiGate. Urządzenie analizuje podstawowe informacje o pakiecie i ustala kontekst, w którym należy go przetworzyć.
Identyfikacja sesji
FortiGate sprawdza, czy pakiet należy do istniejącej sesji, czy rozpoczyna nową komunikację. Wykorzystywane są informacje o adresach źródłowych i docelowych, portach, protokole oraz stanie sesji.
Istotne znaczenie ma również routing. Firewall musi ustalić, czy i przez który interfejs ruch powinien zostać przekazany dalej.
Dopasowanie do polityki firewall
Dla nowej komunikacji urządzenie ustala, jaka polityka ma zastosowanie. Na tym etapie znaczenie mają między innymi interfejsy, adresy, usługi i inne kryteria zdefiniowane przez administratora.
Polityka określa, czy komunikacja jest dozwolona, a także jakie dodatkowe mechanizmy kontroli należy zastosować. Mogą to być na przykład profile IPS, kontrola aplikacji, filtrowanie stron internetowych czy inspekcja antywirusowa.
Inspekcja i przekazywanie ruchu
W zależności od konfiguracji ruch przechodzi przez odpowiednie mechanizmy inspekcji. Jednocześnie, jeśli spełnione są wymagania sprzętowe i programowe, wybrane operacje mogą zostać przyspieszone przez ASIC. Od kiedy zaczyna się akceleracja? W przypadku TCP 3-way handshake, a dla UDP pierwszy pakiet, procesowane są zawsze przez CPU. Pakiet, który przeszedł wymagane kontrole i może być przekazany dalej, trafia do odpowiedniego interfejsu wyjściowego.
Flow-based vs proxy-based inspection
Jednym z istotnych elementów architektury FortiGate jest sposób inspekcji ruchu. FortiOS udostępnia między innymi tryby flow-based i proxy-based, które różnią się sposobem przetwarzania komunikacji oraz możliwościami dostępnymi dla poszczególnych funkcji bezpieczeństwa.
Flow-based inspection
W trybie flow-based FortiGate analizuje przepływ danych w miarę ich napływania, bez konieczności pełnego buforowania całej zawartości komunikacji w modelu charakterystycznym dla pełnego pośrednictwa proxy.
Takie podejście może ograniczać narzut związany z przetwarzaniem i pozwalać na szybkie wykrywanie zagrożeń w trakcie przepływu danych. W wielu scenariuszach jest korzystne pod względem wydajności i opóźnień. Brak buforowania zawartości oznacza jednak gorsze działanie profili security.
Proxy-based inspection
W trybie proxy-based FortiGate pośredniczy w obsłudze komunikacji, realizując przetwarzanie charakterystyczne dla mechanizmu proxy. Przede wszystkim w tym trybie możliwe jest buforowanie zawartości w celu dokładniejszego sprawdzenia.
Może to umożliwiać zastosowanie określonych mechanizmów analizy lub funkcji bezpieczeństwa, które są niedostępne dla trybu flow. Przykład to analiza i logowanie wyszukiwanych fraz w wyszukiwarkach.
Takie podejście może jednak wiązać się z większym zapotrzebowaniem na zasoby. Inną niedogodnością mogą być opóźnienia powodowane przez buforowanie – usługi, które wymagają komunikacji lub dostarczenia danych w określonym czasie mogą przestać działać.
Jak wybrać odpowiedni tryb?
Wybór trybu inspekcji powinien wynikać z wymagań bezpieczeństwa, a nie wyłącznie z oczekiwanej przepustowości.
Flow-based może być dobrym rozwiązaniem tam, gdzie istotne są sprawne przetwarzanie strumienia danych i ograniczenie narzutu. Proxy-based warto rozważyć, gdy wymagane funkcje bezpieczeństwa lub charakter komunikacji przemawiają za tym modelem inspekcji.
Trzeba też pamiętać o ruchu szyfrowanym. Bez odpowiedniego mechanizmu deszyfrowania FortiGate nie ma dostępu do pełnej treści zaszyfrowanej komunikacji, choć nadal może analizować dostępne metadane i inne widoczne informacje. Inspekcja SSL/TLS może istotnie zmienić wymagania dotyczące zasobów i sposób przetwarzania sesji.
Aspekt praktyczny – błędy powodowane przez akcelerację
W przeszłości zdarzały się przypadki błędnego działania FortiGate powodowane błędami związanymi z akceleracją sprzętową. W takich sytuacjach rozwiązaniem często jest aktualizacja do poprawionej wersji FortiOS, ale nie zawsze da się to zrobić odpowiednio szybko. Akcelerację można jednak wyłączyć (np. globalnie lub na poziomie polityk). Efektem takiego działania jest obsługa całego ruchu przez CPU. Należy wtedy zwrócić uwagę na zużycie zasobów – np. ruch backupowy, przekazywany nocą przez tunel IPsec, który do tej pory minimalnie obciążał urządzenie, po wyłączeniu akceleracji potrafi wysycić możliwości urządzenia.
Podsumowanie
Architektura FortiGate opiera się na współpracy systemu FortiOS, procesora głównego CPU oraz wyspecjalizowanych układów ASIC. Każdy z tych elementów pełni inną rolę, a ich współdziałanie umożliwia jednoczesne przekazywanie ruchu i realizowanie zaawansowanych funkcji bezpieczeństwa.
Układy NP i CP (lub zintegrowane SP) przyspieszają wybrane operacje sieciowe i związane z bezpieczeństwem. Mechanizmy hardware acceleration pozwalają przenosić kwalifikujące się zadania do wyspecjalizowanego sprzętu, ale zakres tej akceleracji zależy od modelu urządzenia, rodzaju sesji i konfiguracji.
Równie ważny jest sposób inspekcji ruchu. Flow-based i proxy-based reprezentują różne modele analizy komunikacji, których wybór powinien wynikać z wymagań bezpieczeństwa i dostępnych funkcji. Z kolei VDOM pozwala organizować wiele logicznie odseparowanych środowisk na jednej platformie, bez tworzenia niezależnych zasobów sprzętowych dla każdej domeny.
