FreeBSD: блокируем bruteforce перебор паролей с помощью pam_af
Думаю любой, кто администрирует *nix сервера обращал внимание на множество ботов, пытающихся подобрать пароль к ssh. Достаточно взглянуть на auth.log:
Конечно, чтобы обезопасить себя необходимо прописать пользователей, которым разрешен доступ через ssh в /etc/ssh/sshd_config:
Кроме того, нам поможет pam модуль pam_af. Он отслеживает число неудачных попыток и блокирует доступ на заданное время, кроме того, можно прописать команды, которые будут выполняться при блокировании и при разблокировании. Это более естественный способ, чем парсить лог файл (как, например, в fail2ban).
Устанавливаем:
Главное перед тем как начать — будьте осторожны, не заблокируйте себе доступ! Чтобы заблокировать себе доступ достаточно ошибиться в настройке pam!
Редактируем настройки pam /etc/pam.d/sshd, добавив наш модуль в секцию auth сверху:
Попробуем зайти под неправильным пользователем и паролем и посмотрим статистику с помощью:
Нам нужно создать правила. Каждый раз их создавать не нужно, они добавляются в файл настроек:
Первое правило позволяет ошибаться сколько угодно раз при работе через localhost. Второе правило — блокировать остальные хосты после 3х неудачных попыток ввода пароля на 2 часа.
Просмотрим созданные правила:
Правила вступают в силу немедленно, так что хосты у которых был накручен счетчик будут заблокированы:
Я осознанно не привожу примеры правил с блокировкой с помощью фаерволов, так как в FreeBSD их несколько и выбирать их нужно исходя из других задач.
Автор данного PAM модуля — Станислав Седов, за простоту и элегантность решения ему большое спасибо!
Sep 5 16:25:56 sshd[10571]: Invalid user nagios from 196.46.242.38
Sep 5 16:28:07 sshd[10573]: Invalid user nagios from 196.46.242.38
Sep 5 16:30:15 sshd[10803]: Invalid user nagios from 196.46.242.38
Sep 5 16:32:24 sshd[10805]: Invalid user nagios from 196.46.242.38
Sep 5 16:34:40 sshd[10831]: Invalid user oracle from 196.46.242.38
Sep 5 16:36:53 sshd[11061]: Invalid user oracle from 196.46.242.38
Sep 5 16:39:12 sshd[11063]: Invalid user oracle from 196.46.242.38
Конечно, чтобы обезопасить себя необходимо прописать пользователей, которым разрешен доступ через ssh в /etc/ssh/sshd_config:
AllowUsers user1
Кроме того, нам поможет pam модуль pam_af. Он отслеживает число неудачных попыток и блокирует доступ на заданное время, кроме того, можно прописать команды, которые будут выполняться при блокировании и при разблокировании. Это более естественный способ, чем парсить лог файл (как, например, в fail2ban).
Устанавливаем:
pkg_add -r pam_af
Главное перед тем как начать — будьте осторожны, не заблокируйте себе доступ! Чтобы заблокировать себе доступ достаточно ошибиться в настройке pam!
Редактируем настройки pam /etc/pam.d/sshd, добавив наш модуль в секцию auth сверху:
auth requisite /usr/local/lib/pam_af.so
auth sufficient pam_opie.so no_warn no_fake_prompts
auth requisite pam_opieaccess.so no_warn allow_local
#auth sufficient pam_krb5.so no_warn try_first_pass
#auth sufficient pam_ssh.so no_warn try_first_pass
auth required pam_unix.so no_warn try_first_pass
Попробуем зайти под неправильным пользователем и паролем и посмотрим статистику с помощью:
/usr/local/sbin/pam_af_tool statlist
<hoststat>
<host hostname='xx.xx.xx.xx'>
<attempts>3</attempts>
<last_attempt>Mon Sep 5 23:52:12 2011</last_attempt>
<status>unlocked</status>
</host>
</hoststat>
Нам нужно создать правила. Каждый раз их создавать не нужно, они добавляются в файл настроек:
/usr/local/sbin/pam_af_tool ruleadd -h localhost -a unlimited -t 0
/usr/local/sbin/pam_af_tool ruleadd -h '*' -a 3 -t 2H
Первое правило позволяет ошибаться сколько угодно раз при работе через localhost. Второе правило — блокировать остальные хосты после 3х неудачных попыток ввода пароля на 2 часа.
Просмотрим созданные правила:
/usr/local/sbin/pam_af_tool rulelist
<hostrules>
<host ip='*'>
<attempts>3</attempts>
<locktime>7200S</locktime>
<lockcmd></lockcmd>
<unlockcmd></unlockcmd>
</host>
<host ip='127.0.0.1'>
<attempts>unlimited</attempts>
<locktime>0S</locktime>
<lockcmd></lockcmd>
<unlockcmd></unlockcmd>
</host>
<host ip='::1'>
<attempts>unlimited</attempts>
<locktime>0S</locktime>
<lockcmd></lockcmd>
<unlockcmd></unlockcmd>
</host>
</hostrules>
Правила вступают в силу немедленно, так что хосты у которых был накручен счетчик будут заблокированы:
/usr/local/sbin/pam_af_tool statlist
<hoststat>
<host hostname='xx.xx.xx.xx'>
<attempts>16</attempts>
<last_attempt>Mon Sep 5 23:58:48 2011</last_attempt>
<status>locked</status>
</host>
</hoststat>
Я осознанно не привожу примеры правил с блокировкой с помощью фаерволов, так как в FreeBSD их несколько и выбирать их нужно исходя из других задач.
Автор данного PAM модуля — Станислав Седов, за простоту и элегантность решения ему большое спасибо!
- —
- 06 сентября 2011, 15:48
Комментарии (3)
RSS свернуть / развернутьyababay
Sergei_T
FREExLOADER
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.