15.10.2019

Apt-Get Install Snort-Mysql

Jun 29, 2017 - Решил написать небольшую инструкцию для поднятия IDS Snort (ее сейчас сопровождает. Sudo apt-get install -y build-essential libpcap-dev libpcre3-dev. Mysql> grant create, insert, select, delete, update on snort.

Содержание. Здравствуйте друзья! Сегодня, наконец, дошли руки до написания статьи на тему защиты своей внутренней сети от вторжений извне.

Snort-Mysql

Точнее даже не самой защиты, а своевременной и наглядной идентификации. Итак, перейду ближе к делу. У нас имеется сервер с Debian 8 (скачал новую версию специально для этого дела), два сетевых интерфейса eth0 и eth1.

Как водится, это граничный шлюз, будет раздавать инет, приходящий на внешний интерфейс eth0 во внутреннюю сеть eth1. Это мы уже делали, на этом зацикливаться не буду. Первым делом нам потребуется ssh, чтобы “рулить” уже с рабочего места (не очень удобно торчать в морозной серверной с консолью, стоя и в неприятном шуме). # apt-get -y install openssh-server Далее открываем конфиг: # vi /etc/ssh/sshdconfig И раскомментируем строчки: Protocol 2 Port 22 Запустим сервис: # /etc/init.d/ssh start Всё, теперь можно коннектиться уже с рабочего места.

Перехожу из серверной к себе в уютную коморку (фотки уже проскакивали;). Пришлось снова идти в серверную. На только что установленной системе не был прописан IP адрес интерфейса, не смог приконнектиться.

Исправлюсь Открываем файл конфигурации интерфейсов и прописываем наши данные (DHCP у меня нет): # vi /etc/network/interfaces. Sources Соответственно, добавляем ключ для доступа к этим источникам: # cd /tmp && wget # cat dotdeb.gpg apt-key add - Обновляемся и ставим сопутствующий софт # apt-get update && apt-get -y install apache2 apache2-doc autoconf automake bison ca-certificates ethtool flex g gcc libapache2-mod-php5 libcrypt-ssleay-perl libmysqlclient-dev libnet1 libpcre3 libpcre3-dev libphp-adodb libssl-dev libtool libwww-perl make mysql-client mysql-common mysql-server ntp php5-cli php5-gd php5-mysql php-pear sysstat Ставится куча компонентов и зависимостей, они нам понадобятся в будущем. Идём пить кофе, у меня процесс установки занялся минут на 5. Придётся ввести пароль root для mysql-сервера. Попутно выдается предупреждение о том, что adodb установлен в /usr/share/php/adodb, запомним этот путь, он нам пригодится потом. Разгружаем ядро (если планируется большой трафик) # vi /etc/rc.local. Вот в консоль и посыпались сообщения Готово!

Наш сенсор атак уже обнаруживает попытки пропинговать кого-то в нашей сети. Ну пока ещё это не очень удобная конфигурация. Мы можем установить классификатор для перегона логов в mysql базу. Установка Barnyard2 # cd /usr/src # wget # tar xzf master.tar.gz # cd barnyard2-master # autoreconf -fvi -I./m4 #./configure -with-mysql -with-mysql-libraries=/usr/lib/i386-linux-gnu && make && make install # mv /usr/local/etc/barnyard2.conf /usr/local/etc/snort # cp schemas/createmysql /usr/src # mkdir /var/log/barnyard2 # chown snort:snort /var/log/barnyard2 Дальше конфигурим # vi /usr/local/etc/snort/barnyard2.conf Меняем пути к конфигурационным файлам согласно тем, которые мы перенесли в каталог snort-а. Barnyard2 А так же ищем строку output alertfast: stdout меняем просто на output alertfast. В конце файла добавим строку: output database: log, mysql, user=snort password=snortpass dbname=snort host=localhost Разумеется, пароль вы можете указать произвольный. Дальше надо будет эту базу данных создать.

Статистика Видим ненулевую статистику по ICMP. Значит связка работает. Осталось прикрутить веб-интерфейс.

Ставим WEB-интерфейс # cd /usr/src # wget # tar xzf base-1.4.5.tar.gz # cp -r base-1.4.5 /var/www/base # chown -R www-data:www-data /var/www/base Создаём конфиг: # vi /etc/apache2/conf-enabled/base.conf следующего содержания (временно) Alias /base /var/www/base/ AllowOverride None Настраиваем Apache2 на SSL # a2enmod ssl # cp /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled Далее, надо бы отключить показ замечаний: # vi /etc/php5/apache2/php.ini ищем строку errorreporting и устанавливаем значение в EALL & ENOTICE для удобства отладки и сокрытия лишних сообщений. Добавляем расширения к PHP: # pear config-set preferredstate alpha && pear channel-update pear.php.net # pear install -alldeps ImageColor2 ImageCanvas ImageGraph # /etc/init.d/apache2 restart Открываем в браузере URL: https:///base. Код # cd /usr/src # wget # tar xzf pulledpork-0.7.0.tar.gz # cd pulledpork-0.7.0 # cp pulledpork.pl /usr/local/bin # cp etc/.conf /usr/local/etc/snort Пропишем наш oinkcode в конфигурационный файл # vi /usr/local/etc/snort/pulledpork.conf В строки 19, и 26 (я завуалировал фрагмент) Меняем значение distro= в соответствии с нашей системой (строка 131), в данном случае Debian-6-0. В 139 строке закомментируем использование Blacklist, а так же раскомментируем строки с 194 по 197. Enablesid=/usr/local/etc/snort/enablesid.conf dropsid=/usr/local/etc/snort/dropsid.conf disablesid=/usr/local/etc/snort/disablesid.conf modifysid=/usr/local/etc/snort/modifysid.conf. Итак, я заметил одну неприятную вещь. Если, используя эксплоит, указывать LHOST (локальный хост), принадлежащий целевой подсети (даже сопадающий с атакуемой машиной) то Snort молчит.

Вызвано это видимо тем, что он не фиксирует в логах атаки с HOMENET. По крайней мере у меня дважды ничего не было. Здесь у хакера простор для творчества, можно производить попытки обойти IDS. А у админа – головная боль. Надо попробовать настроить Snort так, чтобы он фиксировал соединения даже из домашней сети в домашнюю.