Защита ssh от брутфорса на OpenBSD

Аватар пользователя ttys

Блокировка брутфорс атак на ssh средствами sshwatchd

Ставим:

cd /usr/ports/security/
wget http://www.ignix.ru/system/files/sshwatchd.tar.gz

tar xfv sshwatchd.tar.gz
cd /usr/ports/security/sshwatchd/
make && make install clean 

Проверяем, если всё в порядке то увидим примерно это:
ls /usr/local/sbin | grep sshwatchd 
-r-xr-xr-x  1 root  bin  14.2K Feb 16 08:37 sshwatchd

Правим /etc/rc.local:

У меня допускается 2 ошибки за 60 секунд.
vi /etc/rc.local

if [ -x /usr/local/sbin/sshwatchd ]; then
        /usr/local/sbin/sshwatchd -s 60 -m 2  && echo -n ' sshwatchd'
fi


Правим /etc/pf.conf:
vi /etc/pf.conf
table <blocked> persist
block in log quick from <blocked>
pass in on $int_if proto tcp from $int_if:network to $int_if port ssh synproxy state
pass in on $ext_if proto tcp from any to $ext_if port ssh synproxy state

Варианты запуска sshwatchd:


usage: sshwatchd [-dk] [-f logfile] [-l facility] [-m maxfails] [-s seconds] [-t table]

  • -d - Отладочный режим. Не отцепляться от терминала, на stderr выводить диагностические сообщения.
  • -f logfile - Указывает log файл, за которым нужно наблюдать. По умолчанию используется /var/log/authlog.
  • -k - Указывает на то, что при блокировке адреса следует убить PF статы, относящиеся к нему.
  • -l facility - Указывает syslog facility. Допустимыми значениями являются auth, authpriv, daemon, local0-local7. Значение по умолчанию auth.
  • -m maxfails - Указывает количество ошибок авторизации за заданный промежуток времени, вызывающее блокировку адреса. Значение по умолчанию 8.
  • -s seconds - Указывает промежуток времени для измерения количества ошибок авторизации в секундах. Значение по умолчанию 5.
  • -t table - Указывает имя PF таблицы, в которую добавляются заблокированные адреса. Значение по умолчанию blocked.

Посмотреть тех кто в таблице можно так:

pfctl -t blocked -T show

Удалить ip адрес (например 192.168.1.9), из таблицы можно так:
pfctl -t blocked -T delete 192.168.1.9

осталось настроить cron
crontab -e

30  *  *  *  *  /sbin/pfctl -t blocked -T expire 86400

Каждые час (в 30 минут) "-T expire 86400" удаляет все записи из таблицы старше 86400 секунд (сутки)

В OpenSSH версий до 4.3 включительно при использовании режима разделения привилегий (режим по умолчанию) на каждую ошибку авторизации в лог пишутся два сообщения.

На всякий случай программа по умолчанию собирается как static.

Чтобы собрать dynamic вариант, нужно дать команду "make LDSTATIC=".

Также можно защитится от ssh брутфорса и средствами pf (Защита ssh от брутфорса)

ВложениеРазмер
sshwatchd.tar.gz30 КБ
Дополнительные материалы
Голосов пока нет

порт поменять на какой нить

порт поменять на какой нить 666 и запретить сканирование портов - очень помогает

а зачем эти извращения если

порт поменять на какой нить 666 и запретить сканирование портов - очень помогает

а зачем эти извращения если есть готовое решение?

Последние статьи

Theme by Danetsoft and Danang Probo Sayekti inspired by Maksimer