Одной из возможностей Cisco ASA является фильтрация по URL.
Что это значит? Это значит, что мы можем настроить наше устройство таким образом, чтоб запретить или наоборот разрешить вход пользователю по определенному URL, либо его содержанию.
Фильтрация URL, способом как это будет показано ниже, подходит для небольших офисов, небольшого количества правил. Если вы планируете пользоваться фильтрацией в больших компания и использовать большое количество правил, то рекомендуется использовать отдельные продукты, такие как WebSense или N2H2, которые замечательно интегрируются вместе с Cisco ASA.
Рассмотрим более подробно на примерах.
Допустим мы хотим заблокировать ресурс mail.ru (для нашей компании это стало актуально, потому как «работники» стали много проводить рабочего времени на этом ресурсе, играются, ну и так далее.), ну и всеми любимые одноклассники (на работе нужно работать 🙂 )
Для начала нужно описать регулярным выражением тот url, или его содержимое, с которым мы будем в дальнейшем работать (тоесть блокировать).
В режиме глобальной конфигурации:
regex blockmailru «mail.ru»
regex blockodnoklassniki.ru «odnoklassniki.ru»
Затем создаем class-map:
class-map type inspect http match-any block-url-class
match request header host regex blackmailru
match request header host regex blockodnoklassniki.ru
После создаем policy-map. Эта политика будет просто дропать соединения:
policy-map type inspect http block-url-policy
parametrs
class block-url-class
drop-connection log
policy-map global_policy
class inspection_default
inspect http block-url-policy
Ну и «привязываем» нашу политику:
service-policy global_policy global
Теперь пробуем зайти на эти два сайта. Если все настроено верно, то соединение с ресурсом не будет установлено.
К слову о regex. Для того чтобы проверить наше регулярное выражение, можно использовать test regex, например:
ciscoasa# test regex http://mail.ru mail.ru
INFO: Regular expression match succeeded.
ciscoasa#
http://mail.ru — это пользовательский запрос
mail.ru — это наше регулярное выражение.
Ну и собственно устройство нам говорит, что данный запрос попадает под наше выражение.
ciscoasa# test regex http://mail.ru maail.ru
INFO: Regular expression match failed.
ciscoasa#
Здесь соответственно не попадает.
Описанными действиями мы запретили посещение сайтов абсолютно всем пользователям.
Предположим, что необходимо дать доступ для некоторых пользователей, например начальнику или еще кому, не важно.
Пусть наш разрешенный хост имеет адрес 10.0.0.20.
Создадим access-list, в котором запретим применять url фильтры для данной машины.
access-list userregex extended deny tcp host 10.0.0.20 any eq www
access-list userregex extended permit tcp any any eq www
Далее создадим class-map:
class-map block-users-class
match access-list userregex
Теперь создадим policy-map
policy-map block-users-url-policy
class block-users-class
inspect http block-url-policy
И «привяжем» эту политику на интерфейс, который «смотрит» в локальную сеть — inside
service-policy block-users-url-policy interface inside
Если все настроено верно, то теперь мы получим: Всем пользователям кроме хоста 10.0.0.20 будет запрещен доступ на mail.ru, odnoklassniki.ru.
Что и требовалось.
Может возникнуть такая ситуация, когда нужно дать доступ только к одному URL. Для этого немного модифицируем наш class-map
class-map type inspect http match-any block-url-class
match not request header host regex blackmailru
Всё остальное остается прежним. Таким образом мы дали доступ только на описанный в соответствующем regex URL.
Для того, чтоб запретить доступ к тому или иному URL , который содержит скажем слово «music», мы можем написать class-map таким образом:
class-map type inspect http match-all allow-url-class
match request uri regex music
regex music «/music/»
Теперь Вы сами можете сделать достаточно гибкие правила для URL фильтрации используя Cisco ASA и не используя какие-либо внешние продукты, такие как WebSenser, squid, и так далее.
Для создания собственных регулярных выражений, ознакомьтесь