Защита sshd от брутофорса.

Jul 13, 2010 11:22

Достоинство sshit заключается в том, что он работает с IPFW, IPFW2 и pf. То есть получается более универсальная система.
Устанавливается sshit из портов.
cd /usr/ports/security/sshit/
make install clean

Установка проходит без лишних вопросов. Теперь настройка.
Основной файл конфигурации /usr/local/etc/sshit.conf
В случае если вы будете использовать pf, то конфиг править не нужно, он уже готов и выглядит вот так вот:
# Sample configuration file of sshit.pl
# We use pf as firewall on default
FIREWALL_TYPE   = pf
# Number of failed login attempts within time before we block
MAX_COUNT       = 3
# Time in seconds in which all failed login attempts must occur
WITHIN_TIME     = 60
# Time in seconds to block ip in firewall
RESET_IP        = 300
IPFW_CMD        = /sbin/ipfw
# Make sure you don't have any important rules here already
IPFW_RULE_START = 2100
IPFW_RULE_END   = 2199
IPFW2_CMD       = /sbin/ipfw
IPFW2_TABLE_NO  = 0
PFCTL_CMD       = /sbin/pfctl
PF_TABLE        = badhosts

Файл настроек достаточно прост:
FIREWALL_TYPE = pf - тип файервола который используется
MAX_COUNT = 3 - сколько неудачных попыток авторизации допускается
WITHIN_TIME = 60 - период времени в секундах, за которые учитывается число неудачных попыток авторизации
RESET_IP = 300 - период времени на который блокируются ip адреса с которых происходили неудачные авторизации

Приведенные параметры нужны для всех типов файерволов.
Теперь касательно pf:
PFCTL_CMD = /sbin/pfctl - команда управления файерволом pf
PF_TABLE = badhosts - таблица pf в которую будут добавлятся заблокированные адреса

Теперь создадим правила файервола. Для этого добавим в /etc/pf.conf такие правила:
table persist

Это в описывается таблица, размещается это правило как в начале файла с правилами pf.
И само блокирующее правило:
block on $ext_if from to any

Здесь $ext_if имя вашего внешнего интерфейса.
И применяем новые правила pf:
pfctl -f /etc/pf.conf

И теперь пропишем в /etc/syslogd.conf запуск sshit

auth.info;authpriv.info                                | exec /usr/local/sbin/sshit

Теперь перезапустим syslogd:
/etc/rc.d/syslogd restart

В случае использования IPFW2, нужно указать в /usr/local/etc/sshit.conf, что мы будем использовать IPFW2. Для этого в строке:
FIREWALL_TYPE   = pf
ставим:
FIREWALL_TYPE   = ipfw2

А правило файервола будет таким:
${ipfw} add 10 deny tcp from table\(0\) to me dst-port 22

Настройка sshit очень простая и сложностей не вызывает. Справляется с атаками успешно.

По всем вопросом обращаться к оригиналу статьи:
Оригинал статьи.

pf, sshit, ipfw2, sshd, freebsd, брутфорс, ipfw, ssh

Previous post Next post
Up