Po dwóch latach prac organizacja OISF (Open Information Security Foundation) opublikowała wersję systemu wykrywania i zapobiegania atakom sieciowym Suricata 8.0, który zapewnia narzędzia do inspekcji różnych rodzajów ruchu. W konfiguracjach Suricata można używać bazy sygnatur rozwijanej przez projekt Snort, a także zestawów reguł Emerging Threats i Emerging Threats Pro. Kody źródłowe projektu są rozpowszechniane na licencji GPLv2.
Główne zmiany:
- Dodano eksperymentalną możliwość używania Suricata jako zapory sieciowej. Tryb zapory sieciowej pozwala na użycie dialektu języka reguł inspekcji ruchu do filtrowania pakietów sieciowych.
- Przebudowano możliwość pisania skryptów w języku Lua. Do bazy kodu zintegrowano interpreter Lua 5.4, uruchamiany w środowisku piaskownicy, które ogranicza zasady w języku Lua (na przykład, reguły nie mogą zapisywać do plików ani tworzyć gniazd sieciowych).
- Umożliwiono dynamiczną (w czasie pracy) rejestrację wtyczek z parserami protokołów, detektorami i komponentami do prowadzenia logów.
- Przeprowadzono znaczące optymalizacje wydajności, które pozwoliły na przyspieszenie różnych aspektów działania silnika, w tym rozpoznawania protokołów, ładowania reguł i inicjalizacji. Przyspieszenie osiągnięto dzięki przewidywaniu przejść, optymalizacji funkcji hashujących, zwiększeniu rozmiaru buforów ładowania danych w formacie PCAP oraz przebudowie synchronizacji wątków. Udało się również skrócić czas uruchamiania Suricata, stosując cachowanie, rozszerzoną grupowanie portów oraz ulepszony algorytm podmiany adresów IP.
- Przepisywanie handlerów LibHTP, FTP, ENIP oraz kodu parsowania typów MIME, operacji byte_extract i dekodowania base64 odbyło się w języku Rust.
- Dodano wsparcie dla protokołów DoH (DNS przez HTTPS), LDAP, mDNS (Multicast DNS) i Websocket.
- Dodano nowe moduły dekodowania i prowadzenia logów dla protokołów ARP i POP3.
- Zapewniono przetwarzanie ruchu SDP na SIP oraz SIP na TCP.
- Rozszerzono możliwości silnika rozpoznawania protokołów i tworzenia reguł. Dla reguł zaimplementowano słowa kluczowe LDAP, MIME/EMAIL, vlan.id, DNS, SMTP, FTP, TLS, tcp.wscale, pgsql.query, from_base64, entropy, luaxform oraz mDNS. Dodano reguły transakcyjne, które pozwalają opisać oba kierunki transakcji w jednej regule.
Cechy Suricata:
- Wykorzystanie zunifikowanego formatu wyników weryfikacji Unified2, stosowanego także przez projekt Snort, co umożliwia użycie standardowych narzędzi do analizy, takich jak barnyard2. Możliwość integracji z produktami BASE, Snorby, Sguil i SQueRT. Obsługa eksportu w formacie PCAP;
- Wsparcie dla automatycznego rozpoznawania protokołów (IP, TCP, UDP, ICMP, HTTP, TLS, FTP, SMB itp.), umożliwiające operowanie w regułach tylko na podstawie typu protokołu, bez przypisania do numeru portu (na przykład blokowanie ruchu HTTP na niestandardowym porcie). Posiadanie dekoderów dla protokołów HTTP, SSL, TLS, SMB, SMB2, DCERPC, SMTP, FTP, LDAP i SSH;
- System analizy ruchu HTTP, który używa biblioteki HTP do parsowania i normalizacji ruchu HTTP, stworzonej przez autora projektu Mod_Security. Dostępny jest moduł do szczegółowego rejestrowania przekaźników HTTP (log jest zapisywany w standardowym formacie Apache). Obsługuje wydobywanie i sprawdzanie plików przesyłanych protokołem HTTP oraz analizę skompresowanej zawartości. Możliwość identyfikacji na podstawie URI, ciasteczek, nagłówków, user-agent, treści żądania/odpowiedzi;
- Wsparcie różnych interfejsów do przechwytywania ruchu, w tym NFQueue, IPFRing, LibPcap, IPFW, AF_PACKET, PF_RING. Możliwa analiza już zapisanych plików w formacie PCAP;
- Wysoka wydajność, zdolność do przetwarzania na standardowym sprzęcie strumieni o przepustowości dziesiątek gigabitów na sekundę.
- Wysokowydajny mechanizm dopasowywania według maski z dużymi zestawami adresów IP. Obsługa selekcji zawartości według maski i wyrażeń regularnych. Wyodrębnianie plików z ruchu, w tym ich identyfikacja po nazwie, typie lub hash.
- Możliwość używania zmiennych w regułach: można zapisać informacje z strumienia i później używać ich w innych regułach;
- Użycie formatu YAML w plikach konfiguracyjnych, łączącego przejrzystość z łatwością przetwarzania przez maszyny;
- Pełne wsparcie IPv6;
- Wbudowany silnik do automatycznej defragmentacji i rekonstrukcji pakietów, umożliwiający poprawne przetwarzanie strumieni, niezależnie od kolejności przybywania pakietów;
- Obsługa protokołów tunelowania: Teredo, IP-IP, IP6-IP4, IP4-IP6, GRE;
- Wsparcie dla dekodowania pakietów: IPv4, IPv6, TCP, UDP, SCTP, ICMPv4, ICMPv6, GRE, Ethernet, PPP, ARP, PPPoE, Raw, SLL, VLAN;
- Tryb rejestrowania kluczy i certyfikatów pojawiających się w połączeniach opartych na TLS;
- Możliwość pisania skryptów w języku Lua do zaawansowanej analizy ruchu i realizacji dodatkowych funkcji, które są niewystarczające dla standardowych reguł.
Źródło: opennet.ru
