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.

by peper
06/03/08. 09:09:58 am. 350 words, 1725 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

by peper
05/29/08. 12:56:08 pm. 460 words, 1166 views. Categories: Security , Leave a comment »Send a trackback »