Янв 22 2010

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 очень простая и сложностей не вызывает. Справляется с атаками успешно. Жалоб на него не поступало.

Добавить в закладки:

google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru
  • By Silent, 22.01.2010 @ 17:48

    Можно еще повесить sshd на нестандартный порт ;-) И необходимость использования sshit отпадет сама собой.

  • By hilik, 23.01.2010 @ 15:49

    Можно, но становится неудобно пользоваться. По мне лучше хороший пароль и антибрутофорс, что б логи сильно не забивались.

  • By Aemon, 26.01.2010 @ 12:03

    спасибо за статью, да и за весь сайт в целом. Весьма полезно. Вешать на нестандартный порт можно, но тут идеология совсем иная.

Other Links to this Post


Украинская Баннерная Сеть