Инструментальные средства обеспечения безопасности

       

Правила инструмента snort: краткий обзор


Правила инструмента Snort похожи на выражения для пакетного фильтра, которые вы создаете в tcpdump и Ethereal. Они могут отфильтровывать пакеты, основываясь на IP-адресах, портах, данных заголовка, флагах и содержании пакета. У Snort три вида правил.

  • Правила предупреждений. Пакеты, которые удовлетворяют правилу предупреждений, будут зарегистрированы в указанном вами формате и будет послано предупреждение.
  • Правила пропуска. Пакеты, которые удовлетворяют правилам пропуска, будут пропущены и проигнорированы.
  • Правила регистрации. Пакеты, которые удовлетворяют правилам регистрации, будут зарегистрированы, но без предупреждения.

Snort поставляется со стандартным набором правил, который проверяет такую деятельность, как скрытное сканирование с помощью nmap, поиск уязвимых мест (vulnerability exploits), попытки взлома путем переполнения буфера, анонимный доступ по FTP, и многое другое.

По умолчанию сначала Snort проверяет пакет на соответствие правилам предупреждений, затем правилам пропуска, и, наконец, правилам регистрации. Эта установка отлично подходит для администратора, который еще только изучает Snort и планирует использовать заданный по умолчанию файл конфигурации и набор правил. Заданный по умолчанию набор правил Snort не включает никаких правил пропуска или регистрации. Однако запускать Snort без какой-либо настройки или конфигурации плохо, поскольку вы, без сомнения, будете завалены ложными предупреждениями.

Когда вы лучше познакомитесь с синтаксисом правил инструмента Snort, вам захочется написать правила игнорирования некоторого трафика. Например, в нашей сети, любое время было огромное количество DNS-запросов, отправленных нашему DNS-серверу другими DNS-серверами из интернета, Snort обнаруживал ложное UDP-сканирование портов и зондирование DNS. Очевидно, мы не хотели, чтобы наши файлы регистрации были завалены всеми этими ложными срабатываниями. Поэтому мы установили наш собственный файл правил и определили переменную DNS_SERVERS, которая содержала IP-адреса всех наших DNS-серверов.
Затем мы написали следующие правила:

var DNS_SERVERS [192.168.1.150/32,192.168.1.151/32]

pass udp $DNS_SERVERS 53 - $DNS_SERVERS 53 pass udp $EXTERNAL_NET 53 - $DNS_SERVERS 53

Эти правила вынудили Snort пропускать (или игнорировать) любой DNS-трафик между нашими DNS-серверами и пропускать весь DNS-трафик между нашими DNS-серверами и DNS-серверами во внешней сети (EXTERNAL_NET, который определен в главном файле snort.conf). Но проблема все еще сохранялась. Поскольку правила соответствий проверяются в таком порядке: правила предупреждений, пропуска, регистрации, то пакеты все еще сначала вызывали предупреждения. Нам было необходимо изменить порядок проверки соответствий. К счастью, Snort предусматривает опцию -o, которая изменяет порядок проверки правил на пропуск, предупреждение, регистрацию.

Совет. Хотя порядок, обеспечиваемый опцией -o, предпочтительнее, автор пакета не установил -o порядком, заданным по умолчанию, потому что люди писали плохие правила для пропуска, которые пропускали большее количество пакетов, чем нужно, и предупреждения оказывались пропущенными. Вы должны использовать опцию -o, только если хорошо овладели написанием правил.

Наше второе правило пропуска фактически оставляет потенциальную дырку в нашем IDS. Мы предполагали, что только внешние DNS-серверы будут говорить с нашими DNS-серверами с порта отправителя 53. Если посторонний человек узнал бы об этом правиле, он мог бы перекинуть любой трафик мимо нашего IDS, сделав так, чтобы все были уверены, что DNS-запросы и попытки переноса зоны, прибывают с порта отправителя 53. Именно поэтому вы должны быть чрезвычайно осторожны при написании правил пропуска пакетов для Snort.


Содержание раздела