Подбор паролей ssh
За последнее время, количество атак на ssh, возросло, просто катастрофически. И хотя, любой, нормальный человек, понимает, что нормальный, правильный пароль подобрать по словарю почти не реально, количество записей в auth.log, таково, что нормально найти интересующую нас запись, без использования grep, почти не реально. Для защиты от этих атак, в последнее время появилась масса утилит. Я пользуюсь bruteforceblockerом. При выборе я руководствовался, тем, что во первых, bruteforceblocker, использует pf, во вторых, присутствует база ip адресов нарушителей, которые уже были занесены в базу проэкта, другими пользователями. Для меня это плюс.
Устанавливаем:
cd /usr/ports/security/bruteforceblocker make install clean
По окончании установки, приступаем к настройке.
Настроим конфигурационный файл /usr/local/etc/bruteforceblocker.conf:
# vim: syntax=perl $cfg = { email => 'hilik@hilik.org.ua', # email на который слать отчеты о #добавленном в черный список ip table => 'bruteforce', # имя таблицы pf в который заносятся ip tablefile => '/var/db/ssh-bruteforce', # файл в который записываются ip max_attempts => 3, # количество неудачных попыток timeout => 3600, # время за которое учитываются неудачные попытки report => 1, # Отправлять заблокированные ip в базу проэкта, #если 1, отправлять debug => 0, # режим отладки, что бы включить, установите в 1 use_remote => 1, # Запрашивать заблокированные ip из базы проэкта mindays => 365, # Запрашивать адреса, добавленные за последние #365 дней mincount => 2,#Эта опция устанавливает количество пожаловавшихся почтовых #ящиков, если меньше этой цифры - считать информацию не #достоверной и не блокировать ip mail => '/usr/bin/mail', # Путь к утилите mail pfctl => '/sbin/pfctl', # Путь к pfctl # whitelist - белый список, список адресов, которые не будут блокироваться whitelist => [qw{ 127.0.0.1 192.168.0.15 192.168.0.1 }], }; #leave 1; here! 1;
Для того что бы bruteforceblocker получал сведения о неудачных попытках ввода пароля, пропишем его в /etc/syslogd.conf, что бы syslogd слал информацию на STDIN скрипту:
auth.info;authpriv.info | exec /usr/local/sbin/bruteforceblocker
После того как кто то попытается авторизоваться у вас на хосте по ssh, bruteforceblocker запустится автоматически.
Теперь остается добавить поддержку в pf:
Прописываем таблицу в которой находтся ip черного списка
#Table from ssh bruteforce blocker table <bruteforce> persist file "/var/db/ssh-bruteforce" </bruteforce>
Добавляем правила блокирующие доступ к ssh от адресов, находящихся в таблице bruteforce:
#Block ip from bruteforce blocker block in quick log on $ext_if proto tcp from <bruteforce> to any port ssh </bruteforce>
Проверим работоспособность pf c новыми правилами:
pfctl -nf /etc/pf.rules
/etc/pf.rules – это файл с правилами файервола
Если, сообщений об ошибках в правилах, не последовало, применяем новый файервол:
pfctl -f /etc/pf.rules



