Olej писал(а):Продолжаю разбираться с проектом fail2ban.
После установки мы получаем набор программ:
Код: Выделить всё
$ ls /bin/fail2ban*
/bin/fail2ban-client /bin/fail2ban-regex /bin/fail2ban-server /bin/fail2ban-testcases
Сервер запускается как сервис, и после инсталляции у нас всё готово для работы с этим сервисом стандартными системными средствами:
Код: Выделить всё
$ service fail2ban status
Redirecting to /bin/systemctl status fail2ban.service
● fail2ban.service - Fail2Ban Service
Loaded: loaded (/usr/lib/systemd/system/fail2ban.service; disabled; vendor preset: disabled)
Active: inactive (dead)
Docs: man:fail2ban(1)
...
Проект состоит из:
-
фильтров (/etc/fail2ban/filter.d) — фактически это регулярные выражения, которыми мы «ловим» в системном журнале сообщения отказа от интересующих нас сервисов;
-
действий (/etc/fail2ban/action.d) — система действий, которые следует применять к назойливым гостям, как правило, это действия iptables, но не обязательно — там предлагаются и действия для подсистемы разрешения адресов ARP и др.);
-
изоляторов (/etc/fail2ban/jail.conf) — это правила, связывающая то, какие действия нужно предпринимать при обнаружении событий, предусмотренных фильтрами;
Для конфигурирования вашей защиты самым важным (и зачастую достаточным) является файл конфигурации изоляторов (в составе уже есть достаточное количество фильтров и действий, достаточных для практически всех целей). Структура защиты определяется большим числом файлов *.conf (дефаултных) и *.local (пользовательских, изначально отсутствующих). Сначала считывается содержимое .conf-файлов, а только затем содержимое .local-файлов, поэтому значения ранее определённых параметров могут быть замещены. Таким образом, в .local-файлах хранятся лишь те значения параметров, которые вам требуется скорректировать.
Содержимое файла /etc/fail2ban/jail.conf разделяется на именованные секции, соответствующие различным сервисам. Первая секция называется [DEFAULT] и предназначается для определения общих параметров, значения которых имеют силу во всех последующих секциях (взято для примера из моей реальной инсталляции):
Код: Выделить всё
[DEFAULT]
ignoreip = 127.0.0.1/8
bantime = 600
findtime = 600
maxretry = 5
Это означает, что после 5-ти неудачных попыток (maxretry) получить доступ в систему с одного и того же IP-адреса в течение 10 минут (600 секунд, findtime) этот адрес будет автоматически заблокирован на следующие 10 минут (600 секунд, bantime). Для параметра ignoreip (исключены из наблюдения) задан только один диапазон IP-адресов, поскольку блокировать localhost не имеет никакого смысла.
Секция [sshd] описывает реакцию на фильтр sshd.conf (точно так же по аналогии вы можете определить реакцию на любой сервер!). Доопределим реакцию на SSH — создадим новый файл jail.local в каталоге /etc/fail2ban/jail.d (файл может быть с любым именем, параметры определяются именем секции, хотя правильнее было бы назвать файл sshd.local):
Код: Выделить всё
# pwd
/etc/fail2ban/jail.d
# sudo touch jail.local
# cat jail.local
[sshd]
enabled = true
maxretry = 4
bantime = 120