Cisco Context Based Access Control (методическое пособие)

Материал из wiki
Перейти к: навигация, поиск

Эволюция

ACL = packet filter

  • работает на tcam, статичен

ACL tcp established

  • очень простой псевдоним для фильтра по tcp-флагам, соответствующим established-соединению


Reflexive ACL

  • записи отраженные в reflexive генерируются на CPU
  • динамичен, но ничего не знает про сложные протоколы
  • записи отражают sip, dip, sport, dport


CBAC (Cisco IOS® Firewall Feature Set)

  • анализ известных протоколов, фильтрация содержимого по сложным правилам
  • записи отражают текущее состояние соединения (statefull)
  • динамически открывает порты, необходимые для работы сложных протоколов
  • работает на CPU


Statefull фильтрация будет ломаться на ассиметричных потоках трафика. Требуется специальный функционал для синхронизации состояний.

В некоторых протоколах есть уловки для использования простых пакет-фильтров, например FTP PASV.

CBAC is a context-based firewall that performs the following:

 Inspects traffic in one direction for network, transport, and application layer information
 Extracts relevant port information
 Dynamically creates access list entries for return traffic
 Closes ports at the end of a connection
CBAC also forces protocol conformance for some protocols, has a limited vulnerability signature detection mechanism, and extensive denial-of-service (DOS) prevention mechanisms. However, many of these features are CPU intensive, thereby, adversely affecting the performance of the router. The router is also affected during times of heavy traffic due to the processing of the base engine itself. With this feature, the performance of the router running CBAC is no longer subdued.

стартовый конфиг

ip dhcp pool LAN
   network 10.111.0.0 255.255.255.0
   default-router 10.111.0.1
   dns-server 212.192.64.2
!
no ip domain lookup
!
interface FastEthernet0/0
 ip address 212.192.88.150 255.255.255.0
 no shut
!
interface FastEthernet0/1
 ip address 10.111.0.1 255.255.255.0
 no shut
!
ip route 0.0.0.0 0.0.0.0 212.192.88.1

настроить роутинг

Сканируем NMAP снаружи внутрь, изнутри наружу - видно всё

добавить ACL

ip access-list extended to-inet
 permit icmp any any
 permit tcp any any eq www
 permit udp any any eq domain
 permit tcp any any eq 3389
ip access-list extended to-lan
 permit icmp any any
 permit tcp any eq www any
 permit udp any eq domain any
 permit tcp any eq 3389 any

nmap -sS -sU -T4 -A -v 10.111.0.2 Не видно ничего

Добавить порт источника, якобы 80, или 53 для udp nmap -sS -sU -T4 -A -v -g 80 10.111.0.2 Видно всё

Настроить рефлексив ACL, для всего TCP

ip access-list extended to-inet
 permit icmp any any reflect fw
 permit tcp any any reflect fw
 permit udp any any eq domain reflect fw
 permit tcp any any eq 443 reflect fw
ip access-list extended to-lan
 evaluate fw 

Router#sh access-list
Reflexive IP access list fw
     permit udp host 212.192.64.2 eq domain host 10.111.0.2 eq 25114 (2 matches) (time left 248)
     permit udp host 212.192.64.2 eq domain host 10.111.0.2 eq 16030 (2 matches) (time left 248)
     permit tcp host 212.192.64.74 eq 3389 host 10.111.0.2 eq 17797 (5335 matches) (time left 299)
     permit udp host 212.192.64.2 eq domain host 10.111.0.2 eq 27506 (2 matches) (time left 191)
     permit icmp host 212.192.64.74 host 10.111.0.2  (369 matches) (time left 299)
Extended IP access list to-inet
    10 permit icmp any any reflect fw (246 matches)
    20 permit tcp any any reflect fw
    40 permit udp any any eq domain reflect fw (9 matches)
Extended IP access list to-lan
    10 evaluate fw


nmap -sS -T4 -A -v -Pn 10.111.0.2 Не видно ничего

Сканируем изнутри наружу nmap -p 1-65535 -T5 -A -v -Pn 212.192.64.74

Наблюдаем как пухнет таблица list fw и CPU load

Router#sh proc cpu history 

Router   08:48:08 AM Wednesday Mar 25 2015 UTC

                                                                
    88777777777766666666668888877777                            
    9999999444443333333333888888888844444                       
100                                                             
 90 **                    *****                                 
 80 *******               **********                            
 70 ************          **********                            
 60 ********************************                            
 50 ********************************                            
 40 ********************************                            
 30 ********************************                            
 20 ********************************                            
 10 ********************************                            
   0....5....1....1....2....2....3....3....4....4....5....5....6
             0    5    0    5    0    5    0    5    0    5    0
               CPU% per second (last 60 seconds)

Router#sh proc cpu sorted 5sec 
CPU utilization for five seconds: 89%/33%; one minute: 55%; five minutes: 25%
 PID Runtime(ms)   Invoked      uSecs   5Sec   1Min   5Min TTY Process 
  55       83756     13989       5987 45.14% 27.32% 12.67%   0 IP Input         
 164       23692      4795       4940  9.68%  5.97%  2.66%   0 IP RACL Ager     

Включить CBAC

ip inspect name CBAC icmp
ip inspect name CBAC http
ip inspect name CBAC tcp
ip inspect name CBAC udp   ! DNS DNS DNS
!
interface FastEthernet0/0
 ip access-group FROM-INET in
!
interface FastEthernet0/1
 ip access-group TO-INET in
 ip inspect CBAC in
!
ip access-list extended FROM-INET
 deny   ip any any
ip access-list extended TO-INET
 permit ip 10.111.0.0 0.0.0.255 any
 deny   ip any any
!


nmap -sS -T4 -A -v -Pn 10.111.0.2 Не видно ничего

Сканируем изнутри наружу nmap -p 1-65535 -T5 -A -v -Pn 212.192.64.74 Видно всё Наблюдаем как растет CPU load, а таблица сессий не растет от полуоткрытых )))

Established Sessions
 Session 635A2A30 (10.111.0.2:18534)=>(212.192.64.197:80) http SIS_OPEN
 Session 635A3930 (10.111.0.2:18530)=>(212.192.64.197:80) http SIS_OPEN
 Session 635A3E30 (10.111.0.2:8)=>(212.192.64.74:0) icmp SIS_OPEN
 Session 635A22B0 (10.111.0.2:18526)=>(10.10.64.2:5060) tcp SIS_OPEN
 Session 635A3BB0 (10.111.0.2:18457)=>(212.192.64.74:3389) tcp SIS_OPEN
 Session 635A1DB0 (10.111.0.2:18525)=>(10.10.64.2:6970) tcp SIS_OPEN

Router#sh proc cpu sorted 5sec  
CPU utilization for five seconds: 89%/35%; one minute: 86%; five minutes: 37%
 PID Runtime(ms)   Invoked      uSecs   5Sec   1Min   5Min TTY Process 
  55      211088     21616       9765 48.01% 23.51%  9.41%   0 IP Input         
 109       16140      3229       4998  3.92%  1.91%  0.76%   0 Inspect Timer  

Ограничиваем количество полуоткрытых соединений на хост назначения

ip inspect tcp max-incomplete host 100 block-time 1   ! на хост
no ip inspect alert-off   ! смотреть ограничивалку сканирований
ip inspect tcp block-non-session ! ???

Сканируем изнутри наружу nmap -p 1-65535 -T5 -A -v -Pn 212.192.64.74 Ничего не видно - срабатывает ограничение на халф-опен


.Cisco IOS Software, 1841 Software (C1841-ADVIPSERVICESK9-M), Version 12.4(25g)