ssh

Примерно в начале ноября специалисты по безопасности заметили необычное поведение ботнетов. Они начали координированную работу по медленному перебору логинов и паролей к самым разным хостам. Специалисты называют это «медленным брутфорсом», потому что скорость перебора паролей крайне мала (нужно перебрать все комбинации паролей для всех возможных логинов по словарю) — этот процесс займёт несколько лет.

Но за счёт огромного числа машин, участвующих в «атаке», дело всё-таки постепенно продвигается — каждый день злоумышленники получают какой-то «улов». Запросы идут с разных IP (см. логи). Атака явно координируется из общего центра (у ботов есть общий словарь для перебора вариантов).

Ботнеты, участвующие в «медленном брутфорсе», стали умнее...

Что же, если и вы подвергаетесь перебору (а кто не подвергается ему сейчас...), то вам на помощь придет DenyHosts!

Установка

Я ставил вот так, более подробно на официальной странице.

# wget http://www.inetbase.com/scripts/ddos/install.sh
# chmod 0700 install.sh
# ./install.sh


Однако есть и порт для этой утилиты

# /usr/ports/security/denyhosts
# make install clean

Работает это дело через TCP-Wrappers, поэтому необходимо запускать sshd через inetd

#sshd_enable="YES"
inetd_enable="YES"
denyhosts_enable="YES"
syslogd_flags="-c"

Добавим строку в /etc/inetd.conf

ssh     stream  tcp     nowait  root    /usr/sbin/sshd          sshd -i -4

Создадим файл для забаненных IP

# touch /etc/hosts.deniedssh

Отредактируем файл /etc/hosts.allow, в самом начале файла (~ строка 23)

# разрешаем локалке
sshd : 192.168.0.0/255.255.255.0 : allow

# запретим целому списку
sshd : /etc/hosts.deniedssh : deny

# остальным разрешим
sshd : ALL : allow

Отредактируем конфигурационный файл

# vi /usr/local/etc/denyhosts.conf

Нас интересует следующее содержимое:

# сюда будет высылать отчет о забаненных IP
ADMIN_EMAIL = mail@example.com

# какие сервисы контролировать (можете добавить например ftpd)
BLOCK_SERVICE  = sshd

# лог
DAEMON_LOG = /var/log/denyhosts

# список забаненых IP
HOSTS_DENY = /etc/hosts.deniedssh

# секурный лог, туда помещается информация о соединениях
SECURE_LOG = /var/log/auth.log

# количество неправильных авторизаций
DENY_THRESHOLD_INVALID = 5

Теперь при добавлении IP в забаненый список вы получите уведомление на mail@example.com

Стартуем утилиту

# /usr/local/etc/rc.d/denyhosts start

Как сказал дуд, вообще лучше использовать сертификаты и отказаться от ввода логина/пароля, однако это не всегда удобно...


Комментарии (17) на запись «FreeBSD. DenyHosts защитит вас от брутфорса SSH»

» Трекбеки скрыты, показать их?
  1. Zord | 27.04.2009 в 01:54

    Хочу порекомендовать sshguard. Все очень удобно, работает через firewall, а не через hosts.deny. Удобно и приятно настраивается

  2. jsmax | 01.08.2009 в 13:46

    А не проще ли просто поменять порт ssh сервера ?

  3. adw0rd | 01.08.2009 в 13:57

    В принципе можно, многие боты же тупые, не будут смотреть на каком порту висит ssh.

  4. agat | 20.08.2009 в 18:47

    Замена порта однозначно рулит, как + к этому разрешение ssh по этому порту только с определенных IP внутреннюю сеть можно оставить всем, (кто знает от куда придется) а вот внешнюю однозначно резать.

    ИМХО ставить ради этого что-то себе дороже, а вдруг в пьяном бреду забыл логин и пароль от сервера который за 300 км =) и все командировка обеспечена, все это проходили знаем

    Что касается смены IP адреса разрешенного на коннект, в экстренных можно секретарше в асе объяснить что нужно качнуть, что прописать и какую строку влить в фаер, что бы потом можно было удаленно зайти и сделать все как надо =) Если уж совсем влом ехать далеко.

  5. 123 | 10.09.2009 в 11:56

    Пробовал... почемуто не работает.

    Freebsd 7.2

    Python выше 2.1

    всё стартует, но не работает... письма не шлёт, хотя мыло и сервер прописаны. Порты на ipfs открыты нужныет.

  6. adw0rd | 10.09.2009 в 12:00

    Может у вас почта не ходит? А в файле /etc/hosts.deniedssh есть что-нить?

    Права на файл выставлены так, чтобы в них можно было писать?

  7. 123 | 10.09.2009 в 12:28

    в файл /etc/hosts.deniedssh хосты появляются, но отбрасывает не правильно вписавшего пароль уже после первой попытки подбора. Хотя в конфиге написано чтоб после 5-ой попытки подбора. Причём даже попавшие в hosts.deniedssh при верно вписаном логине и пароле всё равно входят на срвер через ssh. Кстати freebsd 7.1 ... описался, пардон. А почта у меня через ssmtp отапраляется. Другие письма то получаю.

  8. adw0rd | 10.09.2009 в 15:58

    Хм, ссорь, не знаю в чем проблема :/

  9. jsmax | 08.10.2009 в 00:00

    Просто когда я пришел на место другого админа, то на серверах в логах постоянно лились записи от ssh ботов. Поменял порты и все ... Тишина =)

  10. agat | 09.10.2009 в 03:31

    =)

  11. kodzero | 04.11.2009 в 01:45

    Наверно было бы лучше разрешить ssh доступ для подсети преднозначеной под VPN или OpenVPN туннелирование.

    Ну предположим поднять простенький VPN сервис, а имено mpd5. Можно VPN использовать посредством стандартных утилит Windows.

    Поднимаем VPN тунель до срервера , автоматом получаем IP из выделенной подсети на mpd5 . Ну предположим выделенна подсеть 10.36.188.192/26 и мы получили 10.36.188.193

    Соответственно в sshd_config прописываем .

    AllowUsers *@10.36.188.*

    Все без поднятого VPN на ssh не попасть.

    Ну данную фичу я конечно всеравно прикручу , пусть будет . Бывают моменты открываю SSH для всех IP. Порой не знаешь , где ты окажешься и где надо залогиниться.

  12. adw0rd | 04.11.2009 в 01:53

    Да, так тоже вариант, но имхо первое это сменить порт, второе это соединяться по сертификату. Думаю после таких мероприятий уже нет необходимости в туннеле.

  13. phpdude | 21.07.2010 в 06:10

    вот ты же эдво умный парень, а херней балуешься :)

    1 раз сделай: www.google.ru/search?hl=r...oq=&gs_rfai=

    и боты будут сосать не вставая :)

  14. adw0rd | 22.07.2010 в 12:56

    Да это понятно, вроде уже обсудили это :)

    Как сказал дуд, вообще лучше использовать сертификаты и отказаться от ввода логина/пароля, однако это не всегда удобно...

    в конце поста уже лет что стоит)
  15. Михаил | 21.11.2010 в 22:14

    Купил новый VDS и сразу куча ботов начали пароль подбирать, я сменил порт и все прекратилось. Ну а если опять начнется, то можно запретить вход для рута и пользоваться su или разрешить вход для рута только со своего IP;)

  16. adw0rd | 22.11.2010 в 14:07

    Да, это правильно :)

  17. User | 09.02.2011 в 08:14

    FreeBSD 7.3, все поставил из портов

    взлетело с первого раза по этой инструкции.

    Спасибо!

Оставить комментарий



До окончания ремонта, осталось покрасить стены и заменить ковролин.