DataLife Engine > Безопасность > sshguard - защищаемся от подбора паролей по ssh

sshguard - защищаемся от подбора паролей по ssh


10-08-2010. Разместил: synergix Чтение лог-файлов, для любого вменяемого системного администратора, является довольно повседневным занятием, делать это можно по разному, речь сейчас пойдет не об этом. Вряд-ли найдется человек, занимающийся удаленным администрированием и ни разу не сталкивавшийся с логом авторизации в системе, буквально заваленным тысячами сообщений о неудачных попыток входа в систему по протоколу SSH. Напомню, что SSH является стандартом для подключения и администрирования удаленных системы, кстати, не только в мире UNIX, и входит в стандартный набор установленных пакетов, многих UNIX дистрибутивов, FreeBSD в частности.

Причиной такого количества неудачных подключений, являются попытки подбора пары логин:пароль, так называемые атаки по словарю, осуществляемые с помощью специальных программ. Бороться с данным видом атак вручную, абсолютно бесполезное занятие, наличие IP адреса атакующего ничего не дает, так как, в подавляющем большинстве случаев, являются "левыми" и периодически меняются.

Если копнуть соответствующие материалы по безопасности серверных операционных систем, можно найти целый ряд простых правил, придерживаясь которых, можно обеспечить достаточно высокий уровень безопасности SSH. Приведу краткий список того, что необходимо знать и помнить:
1. Конечно-же устанавливать нормальные пароли. Безопасный пароль должен состоять как минимум из 10-16 знаков, содержать, буквы в нижнем и вернем регистрах, цифры, и символы( !"№;%:?-_ и т.д. ). Подобрать такой пароль, за сколь-нибудь приемлемый промежуток времени, практически не реально.
2. Запретить удаленный вход в систему под учетной записью root.
3.Для нужд удаленного администрирования, завести отдельного пользователя с минимальными правами, разрешив ему подключаться по протоколу SSH. Для повышения привилегий в системе, использовать программы типа su.
4. Если есть возможность, ограничить удаленные подключения по IP адресам. ( средствами демона SSH или фаерволом ).
5. По возможности сменить порт демона sshd (по умолчанию 22).

Кроме вышеперечисленных мер, существует масса программ, помогающих администратору поддерживать безопасность системы на уровне, да и просто облегчающих жизнь. Программа sshguard с плагином для штатного фаервола FreeBSD, IPFW, одна из таких программ.

Итак установка из портов:
#cd /usr/ports/security/sshguard-ipfw
# make install clean


Принцип работы программы программы следующий: sshguard парсит лог файл регистраций в системе, если обнаруживает аномальное количество неудачных подключений с определенного IP, помечает адрес как нарушителя и добавляет в IPFW блокирующее правило на определенный промежуток времени, по умолчанию, время блокировки, 7 минут. Если в дальнейшем, данный IP вновь обратит на себя внимание sshguard своим неадекватным поведением, снова будет создано блокирующее правило в IPFW, но срок будет 2*7. Схема расчета времени блокировки следующая: 7 минут, 2*7 минут, 2*2*7 минут ..... 2^(n-1)*7 минут. В дальнейшем, после определенного количества рецидивов, указанного в опции -b, IP может будет помещен с черный список на постоянной основе.

Настройка sshguard, так-же проста как и установка. Для использования sshguard, будем использовать syslog, соответственно в конфиг данного демона ( /etc/syslog.conf ), пропишем следующую строку:
auth.info;authpriv.info     |exec /usr/local/sbin/sshguard -a 3 -b 10:/var/db/sshguard/blacklist -w /var/db/sshguard/whitelist


после чего нужно перезапустить демон syslogd.
# /etc/rc.d/syslogd restart


Если быть точным, sshguard сама пропишет необходимый минимум в этот файл, нужно только раскомментировать строку и поправить под свои нужды. Итак, основные опции
-a
Количество неудачных попыток ввода пароля, после которых адрес блокируется, в нашем случае 3.

-b номер:/path/to/blacklist
Задает файл черного списка адресов и количество блокировок, после которого IP адрес будет помещен в этот список.

-w адрес/хост/блок/файл
Данная опция определяет белый список адресов. Может принимать IP адрес IP4 или IP6, доменное имя хоста или блок IP адресов в формате 10.20.30.0/24. Кроме того можно прописать путь до файла, содержащего все вышеперечисленное в виде списка. Что-бы указать несколько адресов, хостов или блоков, данную нужно использовать повторно, то есть -w 1.2.3.4 -w 5.6.7.8 -w microsoft.com. Мы прописали путь до файла.

-p секунды
Время блокировки адреса атакующего. По умолчанию 420 секунд (7 минут ).

-s секунд
Реабилитировать адрес после указанного количества секунд. По умолчанию 20*60 ( 20 минут). Грубо говоря, если попытки атаки с одного IP предпринимаются раз в 20 минут, в черный список он не попадет никогда.

Программа sshguard поддерживает следующие форматы лог файлов:
syslig
syslog-ng
metalog
multilog
raw messages


и работает со следующими фаерволами:
IBM AIX firewall
PF
netfilter/iptables
IPFW
IP Filter
/etc/hosts.allow
null firewall


Если у вас ядро собрано без поддержки файрволла, то рекомендую его пересобрать, указав в конфиге ядра опции:
options IPFIREWALL
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=100
options IPFIREWALL_DEFAULT_TO_ACCEPT


Более подробно штатный файрволл IPFW мы рассмотрим в последующих статьях.

Ну и конечно рекомендую почитать man sshguard.
Вернуться назад