Category: Security
Zarządzanie sygnaturami w IOS IPS 5.x
Jak już wspomniałem wcześniej zmienił się sposób zarządzania sygnaturami w nowych IOSach od wersji 12.4(11)T. Po pierwsze wydając polecenie ip ips signature-category lub ip ips signature-definition przechodzimy do trybu konfiguracji sygnatur. Zmiany przez nas wprowadzane nie będą aplikowane na routerze, dopóki nie wyjdziemy z trybu konfiguracyjnego i nie potwierdzimy enterem chęci ich zaaplikowania. Szkoda, że zmiany nie są wprowadzane jakimś poleceniem jak na Juniperach - jeżeli się rozpędzimy z konfiguracją bądź będziemy polegać na odruchach (takich jak używanie CTRL+Z), możemy odrzucić mozolnie wprowadzane zmiany bądź zaakceptować te, których w efekcie nie chcieliśmy wprowadzić.
Zarządzać możemy albo całymi kategoriami sygnatur albo poszczególnymi sygnaturami. O ile zmiany wprowadzone dla całych kategorii widoczne są w show running-config, co widać w moim poprzednim wpisie, o tyle zmiany w poszczególnych sygnaturach już nie. Jak dla mnie jest to wielka niedogodność - nie widać jakie zmiany zostały wprowadzone w funkcjonalności podsystemu względem oryginalnej konfiguracji. Trzeba przekopywać się przez listing show ip ips signature sprawdzając stan interesującej nas sygnatury.
Konfiguracja sygnatur odbywa się poprzez wchodzenie do odpowiedniego podsystemu danej sygnatury.
C1841(config)#ip ips signature-definition C1841(config-sigdef)#signature 1000 0 C1841(config-sigdef-sig)#? Category Options for configuration: alert-severity Alarm Severity Rating engine Engine exit Exit from Category Actions Mode fidelity-rating Signature Fidelity Rating no Negate or set default values of a command status Status
W podsystemie engine definiujemy zachowanie się IPSa gdy dana sygnatura złapie ruch zgodny z jej charakterystyką
C1841(config-sigdef-sig-engine)#event-action ? deny-attacker-inline Deny Attacker deny-connection-inline Deny Connection deny-packet-inline Deny Packet produce-alert Produce Alert reset-tcp-connection Reset TCP Connection
Za pomocą status włączamy oraz wyłączamy dane sygnatury
C1841(config-sigdef-sig-status)#? Status options for signatures: enabled Enable Category Signatures exit Exit from status submode no Negate or set default values of a command retired Retire Category Signatures
Tu warto zauważyć różnicę między enabled a retired - pierwsza wyłącza sprawdzanie danej sygnatury dla analizowanego ruchu, druga wyłącza dodatkowo jej kompilację, czyli zapobiega ładowaniu do pamięci.
06/03/08. 09:09:58 am. 350 words, 4469 views. Categories: Security , Leave a comment » • Send a trackback »
IOS IPS 4.x a 5.x czyli sygnaturkowy problem
Braki w dokumentacji Cisco już mnie parę razy zaskoczyły, nie inaczej było i teraz. W wersji 12.4(11)T zmianie, a dokładniej aktualizacji, uległ podsystem IPS. Zmienił się sposób konfiguracji jak i model sygnatur i ich dystrybucji.
W wersjach przed 12.4(11)T na IOSach działał IPS w wersji 4.x korzystający z sygnatur SDF. Na CCO dostępne były dwa pliki - 128MB.sdf i 256MB.sdf - przeznaczone dla maszyn o odpowiedniej ilości pamięci RAM oraz zapasie mocy obliczeniowej. Od wspomnianej wersji mamy paczkę sygnatur o nazwie np. IOS-S334-CLI.pkg ważącej około 8MB, więc kilkanaście razy więcej niż stare bazy. Załadowanie i skompilowanie całego pliku nawet na dość wydajnych platformach może być kłopotliwe a wręcz niemożliwe. Stąd nim przystąpimy do konfiguracji czy aktualizacji powinniśmy zdezaktywować wszystkie sygnatury (tak jest bezpieczniej)
ip ips config location flash:/ips/ ip ips signature-category category all retired true
Pierwsza komenda wskazuje miejsce na pamięci flash gdzie będą składowane pliki powiązane z IPSem, następne wyłączają używanie jak i kompilację wszystkich kategorii sygnatur. Z tak przygotowanym systemem ładujemy bazę sygnatur bezpośrednio z flasha czy z tftp i podobnych.
copy flash:IOS-S334-CLI.pkg idconf
Aktywacja poszczególnej grupy sygnatur następuje poprzez wyłączenie dla niej opcji retired. Dla małych platform ładujemy jedynie kategorię ios_ips basic, która mniej więcej odpowiada zestawowi 128MB.sdf
ip ips signature-category category all retired true category ios_ips basic retired false
Kompilacja sygnatur może chwilę potrwać i w tym czasie mogą pojawić się znaczące opóźnienia w działaniu innych podsystemów. Przeciążenie routera zazwyczaj objawia się crashem albo całej maszyny albo procesu kompilującego. Na moim podręcznym 1841 próba załadowania pełnego zestawu sygnatur po około 20 minutach kompilacji zakończyła się komunikatem
%SYS-2-CHUNKEXPANDFAIL: Could not expand chunk pool for regex. No memory available -Process= "Chunk Manager", ipl= 3, pid= 1, -Traceback= 0x60D82A54 0x6027CA1C
Co ciekawe router działał do czasu aż nie zachciało mi się ponownie zdeaktywować wszystkich sygnatur, wtedy poczęstował mnie crashem
*May 29 10:02:38.999: %SYS-2-MALLOCFAIL: Memory allocation of 385 bytes failed from 0x625FBA70, alignment 0 Pool: Processor Free: 156052 Cause: Memory fragmentation Alternate Pool: None Free: 0 Cause: No Alternate pool -Process= "Exec", ipl= 0, pid= 3, -Traceback= 0x60D82A54 0x6026B23C 0x60271078 0x60272184 0x6298FE04 0x625FBA78 0x625C6DF0 0x625CB600 0x625AEAB4 0x625C5394 0x625C544C 0x625CF68C 0x625CFF1C 0x625D17A0 0x60DCEAA4 0x60DF25B4
i musiałem się przejść do laba zrestartować maszynę z palca.
O nowych metodach zarządzania sygnaturami napiszę w najbliższym czasie.
peper
05/29/08. 12:56:08 pm. 460 words, 3550 views. Categories: Security , Leave a comment » • Send a trackback »