Документация по ОС FreeBSD Пятница, 26.04.2024, 00:27
Приветствую Вас Гость | RSS
Меню сайта

Категории каталога
Мои статьи [0]
Установка и настройка [281]
X Window [25]
Man pages [30]
Ports & Packages [26]
cvs [18]
Multimedia [20]
Нововсти в мире Unix [0]
RFC [4]
RFC (Request for Comments, Запрос на комментарии) - серия документов, публикуемая сообществом исследователей и разработчиков, руководствующихся практическими интересами, в которой описывается набор протоколов и обобщается опыт функционирования Интернет.
Безопасность [52]
Работа с железом [58]
Книги по FreeBSD [17]
Сеть [505]
Программирование [40]
FireWall [58]
Темы экзамена BSDA [14]
Официальные темы экзамена BSDA, включая подробноые описания и советы по обучению.

Главная » Статьи » Безопасность

Snort на FreeBSD [2009]
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)
Если в системе хватает всех библиотек, встать должно без проблем. Иначе качаем и ставим те библиотеки, которые попросит.

Правила 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 и видим

Первая страница установки BASE


Далее

путь к ADODB


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

данные для mysql


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

данные аутентификации


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

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


создание табл2


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

end


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

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

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

Литература:
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://www.lissyara.su/?id=1966
Категория: Безопасность | Добавил: oleg (04.08.2009) | Автор: Zemskov
Просмотров: 997 | Рейтинг: 0.0/0 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа

Beastie

Друзья сайта

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
links

Copyright MyCorp © 2024