sshit. Защита sshd от брутофорса.
Статью по защите от брутофорса(подбора пароля) с помощью bruteblockerа я уже писал. И вот недавно я настраивал sshit. Это тоже блокировщик брутефорса, он работает по тем же принципам, что и большинство подобных систем. Достоинство sshit заключается в том, что он работает с IPFW, IPFW2 и pf. То есть получается более универсальная система. В моем случае настрока проводилась под 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 <badhosts> persist
Это в описывается таблица, размещается это правило как в начале файла с правилами pf.
И само блокирующее правило:
block on $ext_if from <badhosts> 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 очень простая и сложностей не вызывает. Справляется с атаками успешно. Жалоб на него не поступало.
Комментарии (3)
Other Links to this Post
RSS-лента комментариев к этой записи. TrackBack URI


By Silent, 22.01.2010 @ 17:48
Можно еще повесить sshd на нестандартный порт ;-) И необходимость использования sshit отпадет сама собой.
By hilik, 23.01.2010 @ 15:49
Можно, но становится неудобно пользоваться. По мне лучше хороший пароль и антибрутофорс, что б логи сильно не забивались.
By Aemon, 26.01.2010 @ 12:03
спасибо за статью, да и за весь сайт в целом. Весьма полезно. Вешать на нестандартный порт можно, но тут идеология совсем иная.