Более простая система - denyhosts, но она следит только за ssh, тогда как возможности fail2ban гораздо шире.
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.
# 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
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
enabled = true
filter = asterisk
action = bsd-ipfw[table=200, tablearg=10]
#!!! уточнить путь, где хранятся логи
logpath = /var/log/asterisk/messages
maxretry = 5
bantime = 259200
Линки:
Комментариев нет:
Отправить комментарий