В прошлый раз была
развернута система IDS Snort на FreeBSD и веб-интерфейс BASE. Информация по
атакам несомненно полезна, полезен и позволяет быть в курсе угроз, но
блокировать их прийдется самому. Без автоматизации этого процесса такая схема
будет не достаточно полной и эффективной. Для остановки атак предлагается
использовать SnortSAM (
www.snortsam.net ), который может заблокировать IP-адрес,
перенастраивая правила IP Filter (ipf), ipfw2, Packet Filter (pf), Linux
IPtables/EBtables, MS ISA Server firewall/proxy, некоторых роутеров Cisco и так
далее. Причем один SnortSAM может управлять настройками сразу нескольких
файерволов (мощная фича). Сам SnortSAM состоит из двух компонентов: патч к Snort
(устанавливается при помощи инструкции ‘-DWITH_SNORTSAM’) и собственно
управляющей программы. Устанавливаем:
# cd /usr/ports/security/snortsam
# make install clean
Параметр у SnortSAM только один:
OPTIONS= PFW "Enable IPFW table checking if it set deny rules" on
По умолчанию он включен, в большинстве случаев нет смысла его изменять.
Копируем шаблон конфига:
# cp /usr/local/etc/snortsam/snortsam.conf.sample /usr/local/etc/snortsam/snortsam.conf
Опций внутри snortsam.conf довольно много, многие из них обеспечивают
подключение и настройку файерволов с внешних машин. Конфигурируем:
# ee /usr/local/etc/snortsam/snortsam.conf
; Пароль для доступа со всех внешних машин должен совпадать с указанным в snort.conf. При помощи другого параметра "accept" можно указывать пароль для каждой системы
defaultkey snortsam_key
; Порт, на котором SnortSAM будет слушать подключения ( по умолчанию 898 ) .
port 898
; Внутренние машины нельзя блокировать
dontblock 192.168.1.0 / 24
; Список корневых DNS-серверов, идет в комплекте
include rootservers.cfg
; Режим демона
daemon
; Файл журнала и уровень протоколирования
logfile snortsam.log
loglevel 3
; Для блокировки используем IP Filter
ipf le0 И в snort.conf добавляем такую строку:
output alert_fwsam: 127.0.0.1 / snortsam_key
Где 127.0.0.1 – адрес компьютера, на котором работает SnortSAM, и через дробь
ключ доступа к нему. Помимо этого, в каждое правило Snort, при совпадении с
которым необходима блокировка, следует добавить параметр «‘fwsam: {кто},
{время};’». Например, чтобы источник блокировался на час, пишем так «fwsam: src,
1 hour;». Для этих целей как раз и подходит Oinkmaster.
modifysid 12345 "\)$" | "fwsam: src, 10 minutes;)"
Перезапускаем Snort и запускаем SnortSAM:
# /usr/local/etc/rc.d/snort restart
# echo 'snortsam_enable="YES"' >> /etc/rc.conf
# /usr/local/etc/rc.d/snortsam start
Для проверки можно создать в local.rules два правила, где 192.168.1.1 – адрес
системы с установленным Snort:
alert tcp any any - > 192.168.1.1 11110 ( msg:"TEST log 11110/tcp"; sid:1111110; )
alert tcp any any - > 192.168.1.1 11111 ( msg:"TEST block 11111/tcp"; sid:1111111; fwsam:src [ in ] ,5min; )
Теперь при подключении телнетом к порту 11110 мы получим предупреждающее
сообщение в журнале, а при подключении к порту 11111 чересчур активный узел
будет блокирован на 5 минут. В итоге мы получили полноценную систему защиты,
которая будет днем и ночью защищать твои сервера. Эту схему можно развивать,
использовав несколько сенсоров Snort и агентов SnortSAM. Естественно потребуется
тонкая подгонка правил и настроек под конкретную обстановку.
Источник: http://www.tux.in.ua/articles/1705