URL фильтрация в Cisco IOS

Рассмотрим два варианта фильтрации: NBAR  и CBAC.

Фильтрация методом NBAR

У метода ограничение – всего 24 match уловий по url или host. При достижении будет сообщение:
» % Exceed maximum #<24> of subport instances »
Итак, сами настройки с примерами

class-map match-any url-zapret
 match protocol http url "*sokolov1488*"
 match protocol http host "*oper-v-zakone.livejournal.com*"
 match protocol http url "*id82853615*"
 match protocol http host "*islamdin.biz*
!
policy-map url-inspection
 class url-zapret
 drop 
!
interface GigabitEthernet0/0
 description -- inside network
 ip address X.X.X.X Y.Y.Y.Y
 service-policy input url-inspection
!

«match protocol http host» — Определяет совпадение по host полю внутри GET запроса,
«match protocol http url» — Определяет совпадение по URL. Класифицируется только то что идет за доменом. Например в адресе www.anydomain.com/latest/whatsnew.html урлом для циски будет только /latest/whatsnew.html.

Так выглядит дамп HTTP GET запроса на получение страницы vk.com/sokolov1488

tcpdump -A -s 1492 dst port 80

14:45:14.827940 IP lx003.testdomain.ru.24926 > srv101-131.vkontakte.ru.http: Flags [P.], ack 1, win 8326, options [nop,nop,TS val 608724935 ecr 1743569832], length 118
E...5.@.@.n..O..W..ea^.Pa3.[|f7... .Z......
$Hg.g...GET /sokolov1488 HTTP/1.1
User-Agent: Wget/1.13.4 (freebsd8.2)
Accept: */*
Host: vk.com
Connection: Keep-Alive

Как видно из дампа, «vk.com» и «/sokolov1488» находятся в разных полях и если мы сделаем

match protocol http url "*vk.com/sokolov1488*"

то совершим большую ошибку, так как в GET запросе такой строчки нет и совпадения не будет. Что бы зафильтровать именно по полному url vk.com/sokolov1488, необходимо составить class-map с match-all с host и url класификаторами. Тогда наш конфигурация примет следующий вид:

class-map match-all url-sokolov1488
 match protocol http host "*vk.com*"
 match protocol http url "*/sokolov1488*"
!
class-map match-any url-zapret
 match protocol http host "*oper-v-zakone.livejournal.com*"
 match protocol http url "*id82853615*"
 match protocol http host "*islamdin.biz*"
!
policy-map url-inspection
 class url-zapret
 drop
 class url-sokolov1488
 drop
!
interface GigabitEthernet0/0
 description -- inside network
 ip address X.X.X.X Y.Y.Y.Y
 service-policy input url-inspection
!

Полезные ссылки:

http://www.cisco.com/en/US/docs/ios/12_2/qos/command/reference/qrfcmd5.html#wp1066747

http://www.networklabs.info/2011/12/cisco-url-filtering.html 

URL фильтрация средствами CBAC (Context-Based Access Control)

В этом методе фильтрация осуществляется только по домену, ограничения по колличеству зафильтрованных строчек нет.

Пример:

 ip inspect name webfilter http urlfilter
 ip urlfilter allow-mode on
 ip urlfilter cache 0
 ip urlfilter exclusive-domain deny blabla.ru
 no ip urlfilter alert
interface GigabitEthernet0/1.101
 encapsulation dot1Q 101
 ip address Z.Z.Z.Z 255.255.255.240
 ip inspect webfilter in
 !
Запись опубликована в рубрике Cisco, Security, Блог. Добавьте в закладки постоянную ссылку.