Вы здесь

ssh bruteforce attack

Логи замусорены вот такими сообщениями:

# tail -n 100 /var/log/messages | grep ssh
Mar 12 12:23:07 gate sshd[7466]: Invalid user mouse from 70.129.216.130
Mar 12 12:23:10 gate sshd[7470]: Invalid user user from 70.129.216.130
Mar 12 12:23:14 gate sshd[7474]: Invalid user andrew from 70.129.216.130
Mar 12 12:23:17 gate sshd[7478]: Invalid user tony from 70.129.216.130
Mar 12 12:23:19 gate sshd[7480]: Invalid user control from 70.129.216.130
Mar 12 12:23:25 gate sshd[7486]: Invalid user lee from 70.129.216.130
Mar 12 12:23:28 gate sshd[7490]: Invalid user mickey from 70.129.216.130
Mar 12 12:23:32 gate sshd[7494]: Invalid user rock from 70.129.216.130
Mar 12 12:23:33 gate sshd[7496]: Invalid user rock from 70.129.216.130
Mar 12 12:23:39 gate sshd[7502]: Invalid user kevin from 70.129.216.130

причем атаки производятся не только с этого ip.

Кто-нибудь сталкивался с подобной проблемой?

Ну, ломятся всякие придурки да и *** с ними. Можно настроить автоматический бан на IP с которых ломятся к тебе. Если лень ручками писать, то

emerge -pv fail2ban

Описание на http://www.fail2ban.org

поставь portsentry

сталкивался... ко мне постоянно ломятся, то с китая, то с беркли... малолетние кулхацкеры развлекаются...

я их тупо в бан ставлю и не парюсь

поставь blocksshd из оверлея sunrise

_________________
Gentoo GNU/Linux 2.6.20 GCC 4.1.2 Dual Xeon
Working on Gentoo for iPAQ hx4700 :-)

___________________________________________
Working on Gentoo for iPAQ hx4700 and Openmoko Neo Freerunner :-)
Если у вас компьютер с Windows, есть два выхода: выбросить компьютер в форточку или выбросить форточки с компьютера

пасиб конечно, но у меня там FreeBSD стоит...
да и писать правила для автоматического бана мне лень, я по результатам недельной активности их в бан-лист ставлю

Видел в сети Perl-скртипы для отслеживания auth.log и добавления IP в таблицу фаервола. Я обхожусь "самоделкой" написаной на С. Принцип - работаем в режиме демона, отслеживаем записи в лог-файл, следим только за ... sshd .... Invalid user .... IP. Если IP в логах засветится трижды автоматом добавляем в таблицу PF. Собственно скрипты работают по тому же принципу. Ну или взять что-нибудь более универсальное.

да можно и на bash-е написать и на С, только нащет 3х раз может не прокатить...
я смотрел логи, там идет примерно так:
User 'user1': incorrect...
User 'user2': incorrect...
User 'user3': incorrect...
User 'user4': incorrect...
...
SSHD ## Connect timelimit exceed...
SSHD ## Connect timelimit exceed...
SSHD ## Connect timelimit exceed...
SSHD ## Connect timelimit exceed...
вот в таком духе...

У меня разбор полётов идёт именно по формату лог-файла

Mar 12 12:23:07 gate sshd[7466]: Invalid user mouse from 70.129.216.130

1. 5-е поле == sshd[...] Дыба отсеить других демонов.
2. 6-е поле == Invalid
3. 7-e поле == user
4. 9-е поле есть IP адрес.

Адрес ищется в списке, который хранится в памяти (демон всё-таки :) ). Если находим - увеличиваем значение счётчика. Если счётчик == 3 вызываем pfct -t bla bla bla. Если не находим, то создаем новый элемент списка со значением счётчика == 1. т.е. пофигу в каком месте лог-файла у нас это строка. даже ротация лога нам фиолетова :)
За лог-файлом следим через kevent т.е. чем-то напоминает работу tail -f . Не думаю что на bash это реализуемо :)

Дабы не разводить флейм ... если найду скрипт который брал за основу кину ссылку.

Если есть возможность, то как вариант можно ограничить по маске сети через ListenAddress в sshd_config. Кроме того, можно пошуровать в pam.
_________________
Это заговор квадратикофф!!!
From Siberia with Love!

Не грусти, товарищ! Всё хорошо, beautiful good!

Кхе-хе?! Вот ту читаю предложения по решению проблемы и плакаю! А как на счет iptables?? Про это ктото слышал? А про расширение resent последнего??? У меня на gw такая схема:
sshd выдает два запроса пароля, дальше рвет соединение. Каждое соединение, пределах заданного промежутка времени с одного ip, на 22 порт увеличивет счетчик resent, если их больше 2 то бан на указаннае время. Мне как првило 4 попыток ввести правильный пароль, даже с бодуна вполен хватает.

А каким местом iptables можно прикрутить к FreeBSD ? :)

tr написал:
А каким местом iptables можно прикрутить к FreeBSD ? :)

Может быть сносом freeBSD и установкой gentoo? :)))))))))
Мы веть на gentoo.ru ...

т.е. ты мне предлагаешь снести отлаженную годами фрю и поставить генту??
и только ради того, чтоп вместо ее родной ipfw(и неродной для линуксоида) была родная для меня iptables...

имхо не стоит оно того...

Это кстати как правило скрипты всяких автоматизированных недо-руткитов ломятся.
Кстати интересный способ сбора рут-шеллов - по IP из этих логов заходим ssh и брутфорсим пароль рута, т.к. системы с которых так ломятся это в большинстве системы со слабым паролем, которых уже брутфорснули.
Я так ручками даже за 10 минут пару рутшеллов находил =)
Пароли на рут были 'password' и 'admin' =)

о кстати! тиресная мысль... я както не додумался им тож самое устроить :))

+5!

+1
Жалко ко мне больше не ломятся... :( Так бы может кого поломал бы. :)
_________________
Linux ns 2.6.18-suspend2-r1 #2 SMP Sat Feb 3 13:56:55 KRAT 2007 i686 Intel(R) Pentium(R) 4 CPU 3.00GHz GenuineIntel GNU/Linux

Еще одна статья в тему - HOWTO Protect SSHD with Swatch

А каким логгером toshik пользуется?
_________________
:. Поделись опытом на ru.gentoo-wiki.com или на www.gentoo-wiki.com

Юзаю syslog-ng

В гугле по ипу нашел интересные списки:
http://danger.rulez.sk/projects/bruteforceblocker/blist.php
осталось только акуратно скормить iptables.

Не нужно это прикручивать!!! Шанс что к тебе будут ломится именно с этих хостов, очень не велик.
Уж лучше уже тогда расширение geoip, от недохакеров "страны восходящего" солца точно защищать будет. По статистике, покрайней мере у меня, процентов 90% на китай приходится.

2 T-34 "Страна Восходящего Солнца" - это Япония ;)
Попытки ССАШ-брутфорса несколько раз видел в логах и банил эти айпишники руками по факту нарушения (iptables). На самом деле такие попытки случаются не очень часто и они достаточно безопасны если вход руту запретить вообще, а для управления машиной входить под пользователем и делать su. Другое дело - электронная почта. Вот это настоящая катастрофа! Запрещённый pre-greeting трафик, настроеный спамассасин и DNSBL-листы (при всей сомнительности последней меры) для меня спасают положение... Но проблема в том, что нектороые несознательные админы используют блокировку по geoip. Вот надо было мне недавно послать письмо в Венесуэлу. Оно не дошло (кстати и не вернулось, а просто ПРОПАЛО, в логах не поленился посмотреть - был ответ сервера о том что письмо принято к доставке). Ну ясно, что абсолютное большинство почтового трафика между РФ и Венесуэлой составляет спам. Вот какой-то умник и настроил почтовый сервер... Пришлось ради этого письма заводить ящик на гмейле. Так вот, люди, плиз, если сервисами настраевоемой машины будете пользоваться не только Вы - не используйте блокировку по странам или нациаональным доменам! Это есть зло!

Это не есть зло, если понимать для чего и как.
Лучше один раз завести себе почту на gmail чем держать ответ при DDoS скажем, с участием Китая.

А так, очень изящно и просто.
Разрешаем доступ к 22-му порту только тем, кто из России и Украины (например) остальных желающих попасть на этот порт шлём лесом

iptables -A INPUT -p tcp --dport 22 -m geoip --src-cc RU,UA -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP

Просто конечно, но в условиях современной глобализации не очень правильно...
Например, у меня на работе адреса из UK пула, хотя я территориально сижу в другой стране. И это не единичный случай, а довольно типичный для транснациональных корпораций.

1. Я же не предлагаю почтовый или http трафик geoip резать! А в ситуации, с ssh к которому доступ должен быть только 2-3 админам, вполне приемлемо использовать geоip. Ну конечно если вы в отпуск решите отравиться, на пример в Крушавель :) обломчик получится! Но это с другой стороны тоже правильно, ибо нефиг в отпуске о работе думать.

А по поводу страны восходящего солнца, это придирки, разницу между китаем и японией я улавливаю!

для Китая праильно будет "поднебесная" ! :)

P.S.: Linux - это красная таблетка :-) Windows - синяя...

примерно так:

iptables -A tcp_packets -p TCP --dport 22 -m state --state NEW -m recent --name BLOCK --rcheck --seconds 600 -j TARPIT
iptables -A tcp_packets -p TCP --dport 22 -m state --state NEW -m hashlimit \
--hashlimit-name BLOCK --hashlimit-mode srcip --hashlimit-above 2/m \
--hashlimit-burst 2 -m recent --name BLOCK --set -j TARPIT
iptables -A tcp_packets -p TCP --dport 22 -j ACCEPT

В логах 2 попытки подключения и тишина