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