Приветствую, Античатовцы! Хочу рассказать Вам об IDS (англ. Intrusion Detection System) Snort, системе обнаружения вторжений, на примере операционной системы Centos 6.3. [INTRO] Cеть - это неотъемлемая часть современного мира, без которой остановится прогресс. Технологии развиваются, данные передаются с высочайшей скоростью. И становится ясно, что все эти технологии могут использоваться не только во благо, но и во вред. Для того, чтобы отрезать возможные пути и попытки взломщика на стадии изучения вашей сети, чтобы детектировать многие атаки, чтобы обнаружить нежелательную деятельность внутри сети - используются ситемы обнаружения вторжений. В этой статье я хотел бы кратко анонсировать мощнейшую систему под названием Snort. [Возможности] Эта IDS выявляет следующее: - Плохой трафик - Использование эксплоитов (выявление Shellcode) - Сканирование системы (порты, ОС, пользователи и т.д.) - Атаки на такие службы как Telnet, FTP, DNS, и т.д. - Атаки DoS/DDoS - Атаки связанные с Web серверами (cgi, php, frontpage, iss и т.д.) - Атаки на базы данных SQL, Oracle и т.д. - Атаки по протоколам SNMP, NetBios, ICMP - Атаки на SMTP, imap, pop2, pop3 - Различные Backdoors - Web-фильтры (порнография) - Вирусы Так, что нам потребуется для установки. Нам необходимы следующие пакеты: gcc (4.4.6), flex (2.5.35), bison (2.4.1), zlib (1.2.3 включая zlib-devel), libpcap (1.0.0 включая libpcap-devel), которая и осуществляет прослушивание всего трафика. Библиотека позволяет видеть Snort пакеты до того, как они будут восприняты остальными приложениями, а на этом уровне требуются права суперпользователя. pcre (7.84 включая pcre-devel), libdnet (1.11 или 1.12 включая libdnet-devel), tcpdump (4.1.0). Конечно же, в процессе установки нам необходимы права суперпользователя. Устанавливаем через rpm –i libpcap-devel-1.0.0-6.20091201git117cb5.el6.x86_64.rpm libdnet-debuginfo-1.12-6.choon.centos6.x86_64.rpm Code: [COLOR=Red]cd /usr/local/src tar -zxvf <путь>libdnet-1.11.tar.gz tar -zxvf <путь>daq-2.0.0.tar.gz tar -zxvf <путь>snort-2.9.4.x.tar.gz[/COLOR] Собираем libdnet: Code: [COLOR=Red]cd /usr/local/src/libdnet-1.11 ./configure –with-pic make make install[/COLOR] При ./configure могут выскакивать ошибки, которые детектируются в config.log Code: [COLOR=Red]cd /usr/local/lib ldconfig –v /usr/local/lib[/COLOR] Последнюю версию Snort всегда можно найти на сайте разработчиков www.snort.org. С этого же ресурса необходимо скачать стандартный пакет с правилами. Можно установить дополнительные правила, и даже купить некоторые из них, недоступные широкой публике. На этом же сайте существует возможность подписаться на неплохую подписку (тавтология ). [Немного о правилах] Для того, чтобы вовремя следить за попытками вторжения, следует научиться простому языку правил для IDS Snort. Ведь для новой уязвимости легче написать правило самому, чем ждать очередной версии Snort или обновления пакета с нужными правилами. Структуру правил можно представить в следующей схеме: <действие_правила><протокол><порт> <оператор_направления><порт> ([мета_данные] [даные_о_содержимом_пакета] [данные_в_заголовке] [действие_после_обнаружения]) Действия правил делятся на следующие категории: alert - Создать предупреждение, используя выбранный метод, и передать информацию системе журналирования. log - Использовать систему журналирования для записи информации о пакете. pass - Игнорировать пакет. activate - Использовать другое динамическое правило. dynamic - После того, как выполнится активное правило, задействуется правило с процедурой журналирования. drop - Отбросить пакет, используя программный брандмэуер, и передать информацию системе журналирования. Работает только в режиме inline. sdrop - Отбросить пакет при помощи программного брандмэуера и не использовать систему журналирования. Работает только в режиме inline. reject - Используя брандмэуер, отбросить пакет в том случае, если протокол TCP, или же записать в файл журнала сообщение: ICMP порт недоступен, если пакет приходит по протоколу UDP. Работает только в режиме inline. Вот,вкратце о правилах. [ОСНОВНОЕ] Далее собираем саму систему обнаружения вторжений: Code: [COLOR=Red] cd /usr/local/src/snort-2.9.4.x ./configure --enable-sourcefire make make install cd /usr/local/lib ldconfig –v /usr/local/lib[/COLOR] Файлы правил будут лежать в /etc/snort/rules/ Code: [COLOR=Red]cd /etc mkdir -p snort cd snort tar -zvxf <path to>snortrules-snapshot-<nnnn>.tar.gz cp ./etc/* . touch /etc/snort/rules/white_list.rules /etc/snort/rules/black_list.rules [/COLOR] Далее добавим пользователя и группу snort: Code: [COLOR=Red]groupadd -g 5000 snort useradd snort -u 5000 -d /var/log/snort -s /sbin/nologin -c SNORT_IDS –g snort cd /etc/snort chown -R snort:snort * chown -R snort:snort /var/log/snort[/COLOR] Для того, чтобы демон IDS стартовал при загрузке Centos, выполним: Code: [COLOR=Red]chkconfig --level 345 snort on[/COLOR] Также создадим папку Snort в директории /var/log и назначим ей права: Code: [COLOR=Red] cd /var/log mkdir snort chmod 700 snort chown -R snort:snort snort cd /usr/local/lib chown -R snort:snort snort* chown -R snort:snort snort_dynamic* chown -R snort:snort pkgconfig chmod -R 700 snort* chmod -R 700 pkgconfig [/COLOR] Выполним следующие команды: Code: [COLOR=Red]cd /usr/local/bin chown -R snort:snort daq-modules-config chown -R snort:snort u2* chmod -R 700 daq-modules-config chmod 700 u2* cd /etc chown -R snort:snort snort chmod -R 700 snort [/COLOR] Теперь можем тестировать: Code: [COLOR=Red]cd /usr/local/bin ./snort -T -i eth0 -u snort -g snort -c /etc/snort/snort.conf[/COLOR] Если все успешно, увидим следующее: Snort successfully validated the configuration! Snort exiting Также не забываем мониторить /var/log/messages. Все сделали,запускаем IDS: Code: [COLOR=Red]cd /usr/local/bin ./snort -A fast -b -d -D -i eth0 -u snort -g snort -c /etc/snort/snort.conf -l /var/log/snort[/COLOR] Заходим в процессы и видим, что все работает: Code: [COLOR=Red]ps aux | grep -i "snort"[/COLOR] При обновлении Snort до новой версии, рекомендуется сделать резервные копии следующих файлов: local.rules, snort.conf, threshold.conf, white_list.rules, black_list.rules. [Заключение] Конечно, IDS Snort не дает стопроцентной уверенности в том, что будут замечены и отображены все подозрительные события, но если разобраться, то на сегодняшний день ни одна система не обладает такими свойствами. Заметим, что Snort может определять атаки под прикрытием, так называемый шум. Это когда злоумышленник отсылает множество подозрительных пакетов на целевую систему и во время этого шума проводит атаку. Спасибо Всем, кто прочитал статью! С уважением, YaBtr!
Спасибо за статью! Вопрос к тем, кто использует. Поделитесь плс. опытом по использованию снорта, на сколько эффективна система по детекту и оражению всевозможных сканирований и буртфорс атак? Также очень интересует сравнение с другими IDS
Это понятно, вопрос основной все же снорт или сурикана? С одной стороны сурикана куда перспективнее, а распространена больше снорт. Просто хочу с циски переползти. Вот и выбираю, что бы зря время не тратить...
на форвадинг трафик на линукс роутере че то не пошло, пробовал и чисто правила для iptables от снорт.