Мы — долго запрягаем, быстро ездим, и сильно тормозим.

FreeBSD
  настройка
  подсчёт трафика
  программы
  почтовые системы
  Шелезяки
  Мелочи
  Файловая система
  WWW
  Security
  немного о безопасности
  VPN (PoPToP)
  PortSentry
  sysctl
  vtund
  ipfwcount
  FreeBSD & DSA
  mpd – легко и просто!
  mpd + freeradius + mysql
  Бронированный FreeBSD
  sshit
  DSL-G804V и FreeBSD 6.2
  portaudit
  OpenVPN
  Bluetooth proximity monitor
  ESET NOD32
  GEOM-ELI
  stunnel для pop3,smtp
  NOD32 mirror
  mpd5 + ipfw-nat
  Openvpn 2 офиса
  Hotspot
  OpenVPN+авторизация
  termlog
  mpd5 + сжатие и шифрование
  ipsec_vpnc
  TOR Сервер
  Snort на FreeBSD
  Arpwatch
  Установка и настройка OpenVPN
  NOD32_mirror_v2
  Fail2ban
  IPSec
  Перенос OpenVPN сервера
  Wpa/WPA2-Radius+EAP-TLS/EAP-PEAP
  nod32 mirror script
  MAC + apache
  system
  Games Servers
  X11
  Programming
Очумелые Ручки
OpenBSD
Cisco


www.lissyara.su —> статьи —> FreeBSD —> Security —> Snort на FreeBSD

Snort на FreeBSD

Автор: Zemskov.


Snort является системой предотвращения вторжений, способной работать в двух режимах Sniffer Mode и Packet Logger Mode. Snort может быть использован для выявления различных атак, как, например, переполнение буфера, скрытое сканирование портов, CGI attacks, SMB probes, OS fingerprinting attempts, и многое другое. В общем, сугубо полезная штука и распространяется по GNU GPL.
Что понадобиться:
•    MySQL
•    Libnet
•    Libpcap
•    BASE
•    Apache
•    Php5
•    php5-extensions
•    snort-2.8.4.1
•    FreeBSD 7.0
•    oinkmaster-2.0_1

Установка MySQL:
Первым ставим  MySQL, дабы в нем хранить логи. И создадим в ней базу и пользователя
snort
mysql> create database snort;
mysql> grant CREATE,INSERT,SELECT,DELETE,UPDATE on snort.* to snort;
mysql> grant CREATE,INSERT,SELECT,DELETE,UPDATE on snort.* to snort@localhost;
mysql> use mysql;
mysql> set password for 'snort'@'localhost'=password('123');
mysql> set password for 'snort'@'%'=password('123');
mysql> flush privileges;
mysql> exit

Установка SNORT:

После ставим сам snort. Естественно порты должны быть в актуальном состоянии.
#cd /usr/ports/security/snort/ && make install clean

Выбираем поддержку
MySQL    [X] MYSQL       Enable MySQL support
SNORTSAM [X] SNORTSAM    Enable output plugin to SnortSam

Если в системе хватает всех библиотек, встать должно без проблем. Иначе качаем и ставим те библиотеки, которые попросит.

Правила Snort

Правила можно написать самому, иногда это действительно требуется, либо же взять у snort.org. Как получить эти правила? Тут у нас есть три пути:
1.Зарегиться на сайте (https://www.snort.org/signup). Получать обновления каждые 30 дней.
2.Подписать на рассылку, обновления будут приходить в реальном времени, как только они становятся доступными.
3.Незарегистрированные пользователи получают статичные правила во время каждого крупного Snort-релиза
Как добывать, дело ваше, вообще не дорого подписаться, для одной машины 30 баков всего. Но зная русскую натуру и реалии жизни, думаю, первый вариант всех устроит :).
После регистрации:
$wget http://dl.snort.org/reg-rules/snortrules-snapshot-2.8.tar.gz
$wget http://dl.snort.org/reg-rules/snortrules-snapshot-CURRENT.tar.gz.md5

Проверим целостность.
$md5 snortrules-snapshot-2.8.tar.gz

Успокоившись, что почти 90!!! метров (после распаковки 500 mb) скачались без ошибки. В архиве находятся
doc
etc
rules
so_rules
распаковываем и кладем в папку /usr/local/etc/snort/

Добыча правил посредством oinkmaster(update Snort signatures)

Ставим из портов, благо есть. Убрал поддержку ipv6 до 12 года еще далеко, а там может еще обновлюсь
#cd /usr/ports/security/oinkmaster/ && make install clean

Копируем и правим конфиг
#cp oinkmaster.conf.sample oinkmaster.conf
#vim oinkmaster.conf

Видим большой конфиг, но не пугаемся это в основном коменты :). Скажу сразу свой <oinkcode> смотрим на сайте snort’a в разделе My Account->Subscriptions and Oinkcodes->Oinkcodes
Мой конфиг:
# $Id: oinkmaster.conf,v 1.132 2006/02/02 12:05:08 andreas_o Exp $ #
#
url = http://www.snort.org/pub-bin/oinkmaster.cgi/<oinkcode>/snortrules-snapshot-2.8.tar.gz
# Assume UNIX style by default:
path = /bin:/usr/bin:/usr/local/bin
# Temporary directory to use.
# Поменял на свою, ибо по умолчанию кладет /tmp
tmpdir = /home/oinkmaster/tmp/
#
update_files = \.rules$|\.config$|\.conf$|\.txt$|\.map$
#######################################################################
# Files to totally skip (i.e. never update or check for changes)      #
#                                                                     #
# Syntax: skipfile filename                                           #
# or:     skipfile filename1, filename2, filename3, ...               #
#######################################################################
skipfile local.rules
skipfile deleted.rules
skipfile snort.conf

Забегая вперед, скажу что потребуется makesidex.pl который почему то с портами не встал или я не нашел куда он делся, нужен для создания карты сигнатур с измененными настройками.
Поэтому пришлось качать с сайта
lynx http://downloads.sourceforge.net/project/oinkmaster/oinkmaster/2.0/
oinkmaster-2.0.tar.gz?use_mirror=sunet

лежит в папке contrib
запуск
#cp makesidex.pl /usr/local/etc/snort/
#./makesidex.pl rules >/us	r/local/etc/autodisable.conf
#cd /usr/local/etc/
#oinkmaster -o snort/rules -C oinkmaster.conf -C autodisable.conf

Должно выдать
oinkmaster -o snort/rules -C oinkmaster.conf -C autodisable.conf
Loading /usr/local/etc/oinkmaster.conf
Loading /usr/local/etc/autodisable.conf
Downloading file from http://www.snort.org/pub-bin/oinkmaster.cgi/*oinkcode*/snortrules-snapshot-2.8.tar.gz... done.
Archive successfully downloaded, unpacking... done.
Setting up rules structures... done.
Processing downloaded rules... disabled 1, enabled 0, modified 0, total=8179
Setting up rules structures... done.
Comparing new files to the old ones... done.

и результат обновления :)


Теперь переходим к конфигурированию

#vim /usr/local/etc/snort/snort.conf
# В нем синем по черному (включен синтаксис vim’a) написано, что конфигурирование 
# надо проводить в 6! этапов:
# 1) Установка переменных для вашей сети 
# 2) Настройка динамически загруженных библиотек (оставим по умолчанию, 
# ибо это пути к библиотекам)
# 3) Настройка препроцессоров (так же оставим их)
# 4) Конфигурирование параметров вывода (натравим на mysql)
# 5) Add any runtime config directives (не знаю как правильно перевести, 
# интуитивно понятно)
# 6) Подгонка правил

Начнем:
Куски конфига, т.е. те в которых были изменения.
Шаг первый, самый важный:
# Step #1: Set the network variables:
# $HOME_NET определяет IP-адреса, считаемые адресами нашей домашней сети
var HOME_NET [172.16.0.0/16]
#
# Можно использовать any (любой адрес). Для уменьшения нагрузки на snort,
# многие присваивают значение not HOME_NET
var EXTERNAL_NET !$HOME_NET
#
# Ну тут список ваших серверов, которые и будет защищать хрюндель.
# следует убрать лишнее либо задать более конкретно
#
# List of DNS servers on your network
var DNS_SERVERS $HOME_NET
# List of SMTP servers on your network
var SMTP_SERVERS $HOME_NET
# List of web servers on your network
var HTTP_SERVERS $HOME_NET
# List of sql servers on your network
var SQL_SERVERS $HOME_NET
# List of telnet servers on your network
var TELNET_SERVERS $HOME_NET
#  SNMP в помине не было
#var SNMP_SERVERS $HOME_NET
#
# Ports you run web servers on и так и понятно можно вписывать как [80,8080]
portvar HTTP_PORTS 80
#
# Ports you want to look for SHELLCODE on.
portvar SHELLCODE_PORTS !80
#
# Ports you might see oracle attacks on
#portvar ORACLE_PORTS 1521
#
# Другие переменные
# например AOL'вские сервера
# AIM servers.
var AIM_SERVERS [64.12.24.0/23,64.12.28.0/23,64.12.161.0/24,64.12.163.0/24,/
64.12.200.0/24,205.188.3.0/24,205.188.5.0/24,205.188.7.0/24,205.188.9.0/24,/
205.188.153.0/24,205.188.179.0/24,205.188.248.0/24]
#
# Путь до файла с правилами
var RULE_PATH /usr/local/etc/snort/rules
var PREPROC_RULE_PATH /usr/local/etc/snort/preproc_rules

Сразу к 4му шагу настройка выводов
# database: log to a variety of databases
# ---------------------------------------
# See the README.database file for more information about configuring
# and using this plugin.
#
 output database: log, mysql, user=snort password=123 dbname=snort host=localhost

5й пропускаем, а на последнем, 6ом шаге, выбираем сигнатуры которые будем использовать.
После выбора нужных, можно сказать что первоначальное конфигурирование завершено.
Далее, таблицы для snort ручками делать бессмысленно, делаем так:

mysql -p <  /usr/local/share/examples/snort/create_mysql snort

Запуск

# snort -o -i le0 -d -c /usr/local/etc/snort/snort.conf

(вместо le0 можно указать любой другой прослушиваемый интерфейс), использованные опции означают:

-o - сменить порядок применения правил с Alert -» Pass -» Log order на Pass -»Alert -» Log order, это ускоряет несколько работу.
-i le0 - слушать указанный интерфейс. Можно опустить, если интерфейс один в системе (интерфейс vmwar так называется).
-d - выводить содержимое уровня приложения в пакетах, если стоит режим избыточности вывода или ведения учёта пакетов (дополнительная информация нам не помешает).
-с /etc/snort/snort.conf - использовать указанный конфигурационный файл.

При первом запуске выдал ошибку на dos.rules, типа не знает переменной ORACLE_PORTS, оракла у мну нет, смело комментирую в правилах эту строчку и все что связанно с oracle. Вот тут то нам и понадобиться makesidex.pl, что бы при обновлении коменты не слетали.

После этого успешно стартануло :). Ставим  запуск при загрузке:
#echo 'snort_enable="YES"' >> /etc/rc.conf

Анализ логов посредством BASE

#cd /usr/ports/security/base&&make install clean

И естественно поддержку мускула
[X] MYSQL  Enable MySQL support
Выдал каку
Fatal error: Call to undefined function preg_match() in /usr/local/share/pear/PEAR/Frontend/CLI.php on line 57
лечиться
The fix: edit the pecl script (usually /usr/local/bin/pecl) and remove the ‘-n’ from the command line arguments.
По нашенски, надо убрать ключ
-n из /usr/local/bin/pecl из строки в строке запуска (exec $PHP…)

Добавляем алиас в конфик апача

Alias /base “/usr/local/www/base”
<Directory /usr/local/www/base>
AllowOverride Options FileInfo
Allow from all
</Directory>

Добавляем в php.ini
include_path = ".:/usr/local/share/pear"
include_path = ".:/usr/local/share/pear:/usr/local/share/fpdf"

Раскоменнтируем
error_reporting = E_ALL & ~E_NOTICE
коментим error_reporting = E_ALL

Ставим разрешения на изменения конфигурационных файлов в директории BASE (по умолчанию /usr/local/www/base)

Перезапускаем апач и конфигурим BASE
Заходим через любимый браузер на http://your_server/base и видим


Далее


Последний слеш не ставим
Далее вводим данные mysql


Далее вводим данные аутентификации, можно использовать системную учетку но лучше свою


Создание таблиц



Красный пугает, могли бы и эргономичней поступить(зеленым например)
Ну вот и все


Дальше будет куча проблем с ложными срабатываниями, но это уже другая тема

SnortSAM и IPFW

SnortSam - это плагин, может работать с многими фаерами (даже с isa), но нас интересует ipfw и это ipfw2
(поддержка таблиц), для ранних версий bsd придется пересобрать ядро.

#cd /usr/ports/security/snortsam/
#make install clean
[X] IPFW  Enable IPFW table checking if it set deny rules
#cd /usr/local/etc/snortsam/
#cp snortsam.conf.sample snortsam.conf

Что менял в конфиге, вообще очень гибкий инструмент, можно показать явно что ни когда не блочить, например
корневые днс и т.д и подгружать это из файла (include) или указать в самом конфиге.

#
# pass
defaultkey 123
# в примере порт 666, но мы не суеверные :)
port 777
#
accept 127.0.0.1, 123
# На сколько блочить
keyinterval 10 minutes
# В /var/log/ нужно содать такой файло
logfile snortsam.log
# Три уровня видения логов
#      0: Quiet - No logging occurs.
#      1: Sparse - Only errors are logged.
#      2: Normal - Errors and blocks are logged.
#      3: Verbose - Additional information (such as connections/disconnections)
#         are logged as well.
loglevel 2
# Таблицы в которые будем заносить "врагов народа"
ipfw2 le0 1 2
#
#   With tables rules like:
#              00010 deny ip from any to table 1 via le0
#              00011 deny ip from table 2 to any via le0
# Путь к фаеру
fwexec /sbin/ipfw
# те самые днс
include /usr/local/etc/snortsam/rootservers.cfg

Добавляем в ipfw правила

${FwCMD} add deny log ip from any to "table(1)" via le0
${FwCMD} add deny log ip from "table(2)" to any via le0

В конфиг snort.conf добовляем
output alert_fwsam: localhost:777/123

и
#echo 'snortsam_enable="YES"' >> /etc/rc.conf

теперь точно все

Литература:
google.com
http://www.snort.org/
http://www.opennet.ru/base/faq/snort_faq_ru.txt.html
http://snortgroup.ru
http://global-security.blogspot.com
http://doc.emergingthreats.net/bin/view/Main/SnortSamFAQ
http://oinkmaster.sourceforge.net/



Ссылка на обсуждение: http://forum.lissyara.su/viewtopic.php?f=14&t=19427.

размещено: 2009-08-02,
последнее обновление: 2009-09-03,
автор: Zemskov

оценить статью:

flexbert, 2009-08-31 в 11:12:41

не хватает
#echo 'snortsam_enable="YES"' >> /etc/rc.conf

Zemskov, 2009-08-31 в 13:48:18

да, точно пропустил...
спасибо, добавил

Raiser, 2009-09-02 в 19:08:16

Перед сборкой snort'а нужно добавить поддержку snortsam
[X] SNORTSAM    Enable output plugin to SnortSam

Чтобы snortsam запускался демоном
echo "daemon" >> /usr/local/etc/snortsam/snortsam.conf

flexbert, 2009-09-03 в 8:14:19

На 64-битной системе не соединяются snort и snortsam. Ошибка:
snortsam.log
2009/09/02, 15:50:31, 127.0.0.1, 3, snortsam, Accepted connection from 127.0.0.1.
2009/09/02, 15:50:31, 127.0.0.1, 3, snortsam, Adding sensor 127.0.0.1 to list.
2009/09/02, 15:50:31, 127.0.0.1, 3, snortsam, Had to use initial key!
2009/09/02, 15:50:31, 127.0.0.1, 1, snortsam, Snort station 127.0.0.1 using wrong password, trying to re-sync.
snort: [Alert_FWsam](FWsamCheckIn) Password mismatch! Ignoring host

Можно считать что Гугель ответов не знает.
Итак: как установить snort и snortsam на 64-битную FreeBSD.
1) обновляем порты. Получились версии: snort-2.8.4.1_1, snortsam-2.60.
2) качаем snortsam-2.57 с сайта разработчика: http://www.snortsam.net/files/oldfiles/snortsam/snortsam-src-2.57.tar.gz
3) # cd /usr/ports/security/snort
# make config   - выбираем какие нам надо галочки
# make fetch extract patch
теперь лезем в snortsam-src-2.57.tar.gz, находим там два файла src/twofish.c/.h и заменяем такие же файлы в /usr/ports/security/snort/work/snort-2.8.4.1/src/
# make build install clean
Snort установили. Едем дальше:
4) # cd /usr/ports/security/snortsam
# make config   - выбираем какие нам надо галочки
# make fetch extract
в папке /usr/ports/security/snortsam/work/snortsam/ удаляем все кроме CVS, копируем туда содержимое snortsam-src-2.57.tar.gz
# make build install

Собственно после ошибка с паролем при коннекте snort и snortsam пропадает. У меня все заработало.

Zemskov, 2009-09-03 в 14:50:34

Raiser абсолютно верно... поправил

alex, 2010-01-06 в 17:00:33

# На сколько блочить
keyinterval 10 minutes

— на самом деле из описания седует, что
# Это заставит агента просить / создать новый ключ шифрования каждый <time>.
# Если опущено эту линию, ключевые умолчанию жизни до 4 часов. Вы можете использовать
# 'Часы', 'дней', 'месяца', 'недели', 'год' в срок.
--
и вообще создается впечатление, что это все работать (у меня не заработало) не будет - для того чтобы работало требуется изменять правила и ддобавлять к кждой строчке в правилах fwsam: who[how],time;
так написано здесь http://doc.emergingthreats.net/bin/view/Main/SnortSamFAQ#Q_How_do_I_configure_Snort

alex, 2010-01-06 в 18:11:27

решение такое и в статье про это не написано, вот что нужно сделать чтобы работало, вот ссылка http://www.e1.ru/talk/forum/read.php?f=125&i=23242&t=23242
---
Теперь нужно родить файл банов. Делаем пока по простому, дальше понятно будет
Я ленивый, поэтому скрипты не точил до блеску :-)
Исходник:
cd /etc/snort
cat sid-msg.map | cut -f 1 -d " " > sidb
делаем файлик sid.sh
Исходник:
cat sidb | while read file
do
echo $file: src, 15 min
done
запускаем его ./sid.sh > sid-block.map
sid-block.map - это файлик с сидами, тобиш номерами атак и временем блокировки.

Alex, 2010-07-07 в 14:25:14

при сборки Snort  просьба поставить галочку на пункте - Dynamic , иначе при попытке запуска не будет найдена библиотека libsf_endine.so

irokez_v, 2010-07-12 в 9:13:29

Долго бился запуская snortsam, перечитал все что нашел в сети, патчил его, но он все никак не хотел мои таблицы воспринимать в ipfw (FreeBSD 7.3). Уже и отложил в сторонку это дело, пока не довелось через пару месяцев сервак перезагрузить - и оно заработало.
Может кому поможет.

Phanthom, 2010-10-18 в 0:40:07

Кошмар... В тексте статьи кучи ошибок, половина не объясняется что куда и откуда... Если автор писал статью для себя - нафаг тут выкладывать было, если сюда метил - то статья недоработана.
1. Чтобы внести ясность - надо бы добавить что правила можно скачать 2-мя способами. Первый напрямую с сайта второй посредством oinkmaster
2. Что за makesidex.pl откуда он взялся и зачем нужен вообще??
Добавьте чтоли строчки
cd /usr/ports/security/oinkmaster/work/oinkmaster-2.0/contrib/ перед
cp makesidex.pl /usr/local/etc/snort/
и cd /usr/local/etc/snort/
перед ./makesidex.pl rules >/usr/local/etc/autodisable.conf
И кстати в последней строчке поправьте путь к autodisable.conf
3.Структура ссылки на файл снэпшота изменилась. Теперь это
snortrules-snapshot-2860.tar.gz где 2860 - версия 2.8.6.0
4. Про конфигурирование - ничо не понятно. Порядок шагов изменился. Теперь база в 6 шаге. А руллсет в 7. И что и как конфигурировать тоже хотелось бы чтобы присутствовало хотя бы ваш конфиг в качестве примера.
5. Опции -o при запуске снорта больше нет.
Дальше делать не стал ибо после запуска снорт вывалил ошибок море на отсутствие динамических либ. Плюнул на мануал автора и пошол курить нормальные маны.
Автору незачёт.

ыыы, 2010-10-18 в 11:02:32

%) статье год, версия хрюнделя сменилась до 2.8.6.1 только в портах зарелизили 2.9 ))))
все подряд объяснять это уже совсем не серьезно
1. представлен рабочий вариант на дату опубликования, с опубликованным по
2. про makesidex.pl, а это что?
Забегая вперед, скажу что потребуется makesidex.pl который почему то с портами не встал или я не нашел куда он делся, нужен для создания карты сигнатур с измененными настройками.
Поэтому пришлось качать с сайта...
далее по тексту %)
3. ну и версия поменялась
4. см выше
5. см. выше
%)


Оставьте свой комментарий:
Ваше имя:   *
e-mail:  
жирный
наклонный
подчёркнутый
ссылка
цвет
Нынешний год:   *
 


Хостинг HOST-FOOD

2014-07-27, lissyara
gmirror

Удалённое создание софтверного зеркала средствами gmirror, на диске разбитом с использованием gpart. Использование меток дисков для монтирования разделов.
2013-08-20, zentarim
Scan+Print server FreeBSD 9

Настройка сервера печати и сервера сканирования под управлением операционной системы FreebSD 9 для МФУ Canon PIXMA MP540
2011-11-20, BlackCat
Разъём на WiFi-карту

Делаем съёмной несъёмную антену на WiFi-карте путём установки ВЧ-разъёма
2011-09-14, manefesto
Настройка git+gitosis

Настройка системы контроля версия исходного кода в связке git+gitosis+ssh
подписка

    вверх      
Статистика сайта
Сейчас на сайте находится: 7 чел.
За последние 30 мин было: 38 человек
За сегодня было
2175 показов,
480 уникальных IP
 

  Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
  Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.0514 секунд
Из них PHP: 38%; SQL: 62%; Число SQL-запросов: 84 шт.
Исходный размер: 144736; Сжатая: 26360