Как-то проснувшись утром наблюдаю на почте такую картину:
login failures:
Jun 2 07:07:55 4dle sshd[45556]: Failed password for invalid user webadmin from 163.21.230.20 port 35758 ssh2
Jun 2 07:07:58 4dle sshd[45560]: Failed password for invalid user ftp from 163.21.230.20 port 35844 ssh2
Jun 2 07:08:01 4dle sshd[45569]: Failed password for invalid user test from 163.21.230.20 port 35933 ssh2
Jun 2 07:08:07 4dle sshd[45620]: Failed password for invalid user admin from 163.21.230.20 port 36102 ssh2
Jun 2 07:08:10 4dle sshd[45625]: Failed password for invalid user guest from 163.21.230.20 port 36183 ssh2
Jun 2 07:08:13 4dle sshd[45630]: Failed password for invalid user master from 163.21.230.20 port 36273 ssh2
Jun 2 07:08:16 4dle sshd[45652]: Failed password for invalid user apache from 163.21.230.20 port 36360 ssh2
Явно подбирают логин\пароль к ssh. Бороться с данным видом атак вручную, явно бесполезное занятие, наличие IP адреса атакующего ничего не дает, так как, в подавляющем большинстве случаев, являются "левыми" и периодически меняются.
Было решено поставить програмку
sshguard.
Принцип работы программы программы следующий: sshguard парсит лог файл регистраций в системе, если обнаруживает аномальное количество неудачных подключений с определенного IP, помечает адрес как нарушителя и добавляет в IPFW блокирующее правило на определенный промежуток времени, по умолчанию, время блокировки, 7 минут. Если в дальнейшем, данный IP вновь обратит на себя внимание sshguard своим неадекватным поведением, снова будет создано блокирующее правило в IPFW, но срок будет 2*7. Схема расчета времени блокировки следующая: 7 минут, 2*7 минут, 2*2*7 минут ..... 2^(n-1)*7 минут. В дальнейшем, после определенного количества рецидивов, указанного в опции -b, IP может будет помещен с черный список на постоянной основе.
Итак, ставим её из портов
# cd /usr/ports/security/sshguard-ipfw
# make install clean
Открываем /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
Всё, можно пользоваться :)
PS: Основные опции:
-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 минут, в черный список он не попадет никогда.