It-e.RU
Цифровой двигатель вашего бизнеса.

Защита публичных сервисов от перебора паролей

Защита публичных сервисов от перебора паролей

С течением времени количество публичных сервисов увеличивается. Такие сервисы уже не закроешь фаирволом, не спрячешь. Поэтому сегодня рассмотрим небольшую программу, которая будет блокировать доступ к нашим сервисам от врагов.


С течением времени количество публичных сервисов увеличивается. Такие сервисы уже не закроешь фаирволом, не спрячешь. Поэтому сегодня рассмотрим небольшую программу, которая будет блокировать доступ к нашим сервисам от врагов.

Устанавливаем: /usr/ports/security/bruteblocker - зависимости подтянутся сами.
Теперь настроим процесс попадания логов в нашего защитника. Для этого в /etc/syslog.conf добавляем:

auth.info;authpriv.info | exec /usr/local/sbin/bruteblock -f /usr/local/etc/bruteblock/ssh.conf
и перезапускаем syslogd.

В случае работы с виртуальными клетками (jail), на работу которых накладываются достаточно большое количество ограничений, предлагаю настроить syslog виртуальных машин на пересылку логов на головную машину. И уже на ней анализировать и блокировать способом, описанным выше.

Теперь настроим саму программу. Она настраивается через rc.conf:

bruteblockd_enable="YES" # Хотим ли мы запустить демона.
     bruteblockd_table="15" # Номер таблицы со списком врагов. У меня в таблице 15 ipfw.
     bruteblockd_flags="-s 5" # Время проверки таблицы, не пора ли про кого-нибудь уже забыть (5 секунд, значение по-умолчанию)
Запускаем программу: /usr/local/etc/rc.d/bruteblockd onestart
Теперь в фаирвол впишем нечно подобное:
ipfw add 00074 reset tcp from "table(15)" 1024-65534 to me
ipfw add 00075 pass tcp from me to "table(15)" 1024-65534
Я рекомендую создать таблицу и добавить разрешающие правила в фаирвол с номерами меньшими, чем запрещающие правила, так как в сети люди жалуются, что их непроизвольно блокирует и сетует на отсуствие белых списков в самой программе, хотя это совершенно не нужно.
Теперь все работает и блокруется. У данной программы, в отличие от sshit например, если важная особенность, которая меня и привлекла: можно задать регулярные выражения, а значит, программа защитит любой сервис, который способен вести лог. Кроме того для каждого защищаемого сервиса можно вести отдельную таблицу.

Рассмотрим несколько примеров: pure-ftpd:

regexp=pure-ftpd: *\(\?\@(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\) \[WARNING\] Authentication failed for user \[\S+\]
Разумеется, необходимо сделать запись в /etc/syslog.conf:
ftp.info                                        /var/log/xferlog
ftp.info /var/log/xferlog| exec /usr/local/sbin/bruteblock -f /usr/local/etc/bruteblock/pureftpd.conf
dovecot: Просим программу вести лог через syslogd: syslog_facility = local2)
Настраиваем /etc/syslog.conf:
local2.*                                        /var/log/mail/dovecot.log
local2.* | exec /usr/local/sbin/bruteblock -f /usr/local/etc/bruteblock/dovecot.conf
  • pop3-login: Disconnected (auth failed, 1 attempts): user=, method=PLAIN, rip=(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})
  • imap-login: Disconnected (auth failed, 1 attempts): user=, method=PLAIN, rip=(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})
  • imap-login: Disconnected (no auth attempts): rip=(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})

    PS: Текст сыроват, будет дополняться.

    Пожалуйста, уважайте труд автора, при копировании материалов сохраняйте ссылку на источник!

    Комментарии (0)



    Добавление комментариев закрыто.