Рассмотрим два варианта фильтрации: 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 !