понедельник, 24 июня 2013 г.

FreeBSD: fail2ban - базовая настройка

fail2ban это универсальная система для защиты от атак перебором, в том числе на ssh, телефонию, ftp итд.
Более простая система - denyhosts, но она следит только за ssh, тогда как возможности fail2ban гораздо шире.
Классическая установка для freebsd:
cd /usr/ports/security/py-fail2ban
make install clean

(также можно portinstall py-fail2ban или portmaster -D security/py-fail2ban)

Пропишем в автозагрузку
echo 'fail2ban_enable="YES"'>>/etc/rc.conf

При желании - ротация логов
echo '/var/log/fail2ban.log                   600 7 200 * JC' >>/etc/newsyslog.conf 

Общие настройки системы в
/usr/local/etc/fail2ban/fail2ban.conf (там менять особо нечего)
Настройки под свой сервер -- главный файл
/usr/local/etc/fail2ban/jail.conf, хотя первыми же строками сказано
Changes:  in most of the cases you should not modify this file, but provide customizations in jail.local file, e.g.:...

В любом случае, конфиг явно писался под линукс + содержит строки вида 
sender=fail2ban@example.com
dest=you@example.com
localhost=192.168.0.1
file=/not/a/standard/path/hosts.deny
итд, так что можно оригинальный jail.conf переименовать и создать с нуля.

Основная секция
[DEFAULT]
ignoreip = 127.0.0.1 195.268.118.27 216.227.266.66
# "bantime" is the number of seconds that a host is banned.
# время бана в секундах
bantime  = 3600

# A host is banned if it has generated "maxretry" during the last 
# "findtime" seconds.
# время проверки, за которое событие успеет повториться, чтобы отловить 
# и забанить
findtime  = 900

# "maxretry" is the number of failures before a host get banned.
# максимальное число правонарушений :)
maxretry = 3

# "backend" specifies the backend used to get files modification.
# Available options are "pyinotify", "gamin", "polling" and "auto".
# This option can be overridden in each jail as well.
#
# pyinotify: requires pyinotify (a file alteration monitor) to be installed.
#              If pyinotify is not installed, Fail2ban will use auto.
# gamin:     requires Gamin (a file alteration monitor) to be installed.
#              If Gamin is not installed, Fail2ban will use auto.
# polling:   uses a polling algorithm which does not require external libraries.
# auto:      will try to use the following backends, in order:
#              pyinotify, gamin, polling.
# метод парсинга логов можно еще через Gamin, если он будет установлен
backend = auto

Дальше идут описания тех сервисов, за которыми следим
[ssh-ipfw]

enabled  = true
# использовать фильтр из примеров /filter.d/bsd-sshd.conf  
filter   = bsd-sshd
# использовать /action.d/bsd-ipfw.conf
# в квадратных скобках указываем значения переменных, в
#данном случае указываем, что нужно добавить ip адрес в
#таблицу 100 с tablearg 22 (я использую, как пометку причины бана)
action   = bsd-ipfw[table=100, tablearg=22]
logpath  = /var/log/auth.log
maxretry = 3
# банить на 7 суток
bantime  = 604800

По аналогии пишем другие сервисы. Помним, что при перезапуске сервиса/сервера все баны снимаются.
Также в секции ssh-ipfw вписано правило для ipfw и таблицы в нём, так что надо ещё
а) настроить ipfw
б) создать там нужные таблицы

И читаем линки ниже, там есть ещё примеры правил, правка /usr/local/etc/fail2ban/action.d/bsd-ipfw.conf, /filter.d/bsd-sshd.conf итд.

PS
Секция для asterisk
[asterisk-ipfw]

enabled  = true
filter = asterisk
action = bsd-ipfw[table=200, tablearg=10]
#!!! уточнить путь, где хранятся логи
logpath  = /var/log/asterisk/messages
maxretry = 5
bantime = 259200

Линки:

Комментариев нет:

Отправить комментарий