Инструменты безопасности с открытым исходным кодом


Настройка Snort для Windows - часть 3


Можно добавить несколько опций, разделяя их с помощью точки с запятой. Ниже приведены допустимые опции.

msgПредоставляет текстовое описание сигнала тревоги
logtoЗаписывает пакет в заданный пользователем файл вместо стандартного выходного файла
ttlПроверяет значение поля TTL в заголовке IP
tosПроверяет значение поля TOS в заголовке IP
idСравнивает значение поля идентификатора фрагмента в заголовке IP с указанной величиной
ipoptionИщет поля опций IP с определенными кодами
fragbitsПроверяет биты фрагментации в заголовке IP
dsizeСравнивает размер полезной нагрузки пакета с указанным значением
flagsПроверяет флаги TCP на соответствие определенным значениям
seqСравнивает поле порядкового номера TCP с определенным значением
ackПроверяет поле подтверждения TCP на соответствие определенному значению
itypeПроверяет поле типа ICMP на соответствие определенному значению
icodeПроверяет поле кода ICMP на соответствие определенному значению
icmp_idПроверяет поле ECHO ID ICMP на соответствие определенному значению.
icmp_seqПроверяет порядковый номер ECHO ICMP на соответствие определенному значению
contentИщет определенный шаблон в полезной нагрузке пакета
content-listИщет определенный набор шаблонов в полезной нагрузке пакета
offsetМодификатор для опции содержимого. Задает смещение для начала сопоставления с образцом
depthМодификатор для опции содержимого. Устанавливает максимальную глубину поиска при сопоставлении с образцом
nocaseСравнивает предыдущую цепочку содержимого без учета регистра символов
sessionВывод информации прикладного уровня для данного сеанса
rpcСледит за сервисами RPC для выявления определенных вызовов приложений/процедур
respАктивный ответ. Закрывает соединение (например, разрывая его)
reactАктивный ответ. Отвечает запрограммированным поведением (например, блокированием определенных Web-сайтов)
referenceИдентификаторы ссылок на внешние атаки
sidИдентификатор правила Snort
revНомер версии правила
classtypeКлассификационный идентификатор правила
priorityИдентификатор уровня серьезности правила
uricontentСопоставление с образцом в части URI пакета
tagДополнительные действия по протоколированию для правил
ip_protoЗначение протокола в заголовке IP
sameipОпределяет, не равны ли исходный и целевой IP-адреса
statelessПрименимо независимо от состояния потока
regexСопоставление с образцом с применением метасимволов
byte_testЧисловое сравнение
distanceЗаставляет при относительном сопоставлении с образцом пропустить в пакете определенное число байт
byte_testЧисловое сопоставление с образцом
byte_jumpЧисловое сопоставление с образцом и корректировка смещения

Более подробную информацию о каждой из опций правил можно получить в оперативной справке. Ниже представлены несколько примеров применения этих опций для создания индивидуальных правил Snort

Пример 1 индивидуального правила

Предположим, имеется набор бухгалтерских серверов, доступ к которым может осуществляться только из внутренней сети. Можно написать правило Snort, реагирующее на трафик, идущий с любого не принадлежащего вашей сети IP-адреса и направленный на эти серверы. Пусть бухгалтерские серверы имеют IP-адреса 192.168.1.10, 192.168.1.11 и 192.168.1.12, а ваша внутренняя сеть - адреса 192.168.2.0/24. Тогда правило будет выглядеть примерно так:

alert tcp !192.168.1.0/24 any \ < [192.168.1.10,192.168.1.11,192.168.1.12] any \ (msg: "Попытка внешнего доступа к бухгалтерскому серверу";)

Знак операции ! (восклицательный знак) обозначает логическое отрицание. Смысл правила в том, чтобы выдать сигнал тревоги при обнаружении TCP-трафика, идущего не из сети 192.168.1.0/24 и направленного на указанные серверы. Не задается никаких опций, кроме msg - метки, появляющейся в журналах сигналов. Дело в том, что нас интересует любой трафик на любой порт. Будет отмечено любое обращение к бухгалтерским серверам, исходящее из внешнего мира, так как предполагается, что любой внешний трафик к этим серверам должен считаться вредоносным.

Пример 2 индивидуального правила

Опираясь на сценарий из примера 1, предположим, что следует разрешить некоторый внешний доступ к бухгалтерским серверам, но, тем не менее, гарантировать, что никто не скопирует определенные файлы. Предположим, что имеется файл с именем payroll.xls, который содержит все данные о зарплате (совершенно секретный файл, как внутри, так и вне организации). Можно написать правило, которое проследит за любым трафиком, внутренним или внешним, направленным на эти серверы и содержащим имя секретного файла. Это можно сделать с помощью опции content, осуществляющей поиск в реальном содержимом пакетов. Правило будет выглядеть примерно так:

alert tcp ![192.168.1.10,192.168.1.11,192.168.1.12] any < [192.168.1.10,192.168.1.11,192.168.1.12] any (content: "payroll.xls";msg: "Попытка доступа к файлу зарплат")

Отметим, что знак операции ! снова означает, что нас интересует трафик, направленный на бухгалтерские серверы из любого места, кроме этих серверов. Тем самым устраняется сигнализация о межсерверном трафике. Отметим также, что символ \ позволяет писать многострочные правила, а опция content - осуществлять поиск текста payroll.xls в пакетах. В результате серверные машины могут иметь доступ в Интернет, но если этот конкретный файл будет когда-либо выгружаться с них, вы будете об этом оповещены.

С помощью других опций можно писать правила для выявления трафика практически любого вида. Если ваши правила могут представлять интерес для других организаций, стоит послать их разработчикам Snort для вставки в официальный набор распространяемых правил. Если вы решите это сделать, постарайтесь использовать все средства документирования, такие как msg, sid, rev, classtype и priority. Также тщательно протестируйте свои правила, чтобы гарантировать, что они действительно охватывают все виды активности, которую вы пытаетесь поймать, и не дают ложных срабатываний.




Начало  Назад  Вперед



Книжный магазин