LINUX.ORG.RU

Защита SSH от перебора пароля с помощью blocksshd и iptables


0

0

Существуют такие ситуации, когда сервис SSH должен быть открыт для всего интернета, а не только для определённых адресов. Однако в этом случае большинство системных администраторов сталкивается с проблемой перебора паролей. Так называемой брутфорс-атакой. Это явление не столько опасное (хотя конечно же недооценивать опасность не стоит), сколько просто неприятное. Однако решение у этой проблемы есть, и даже не одно.

Существует множество различных скриптов, принцип работы которых одинаков: анализируется лог авторизации, и закрывается доступ к серверу с IP-адресов, с которых было несколько неудачных попыток авторизации в течении короткого времени.

Один из вариантов такого скрипта - написанный на perl демон blocksshd. О его настройке можно прочитать в предлагаемой статье.

>>> Статья

★★★★

Проверено: Shaman007 ()

>Очень надеюсь что вам пригодится эта статья, но не обещаю что всё будет именно так, как тут написано:)

посмиялсо.

anonymous
()

MooSE, как занести ваш блог во френды, если у меня есть блог на одном из популярных блог-сервисов, поддерживающих OpenID? В случае чего - это тема для ещё одной статьи ;)

Morgendorffer
()

Помнится, в одной книге про хацкеров написано, что можно вообще запретить руту заходить через ссш. если нада права админа, то сначала заходишь под своим логином, а потом через су получаешь права админа.
Если все так просто, то зачем замарачиваться с этим блокссшд?!?!

Vetal80
()
Ответ на: комментарий от anonymous

+1

Функциональное, легкое в настройке, одобренное отцами из Redhat решение

anonymous
()
Ответ на: комментарий от Vetal80

> Помнится, в одной книге про хацкеров написано, что можно вообще запретить руту заходить через ссш. если нада права админа, то сначала заходишь под своим логином, а потом через су получаешь права админа. Если все так просто, то зачем замарачиваться с этим блокссшд?!?!

Так все и делают, и во вменяемых дистрах/системах это по умолчанию. А заморачиваться можно чтобы логи не засорялись, сервера не грузились и траффик не тек.

AMDmi3
()
Ответ на: комментарий от gaa

+1 ходи по ключам и никакой брутфорс не страшен :)

anonymous
()
Ответ на: комментарий от Vetal80

>Помнится, в одной книге про хацкеров написано, что можно вообще запретить руту заходить через ссш. если нада права админа, то сначала заходишь под своим логином, а потом через су получаешь права админа. Если все так просто, то зачем замарачиваться с этим блокссшд?!?!

а Вам не страшно выставлять "голый" ssh дажес запретом на рута? я понимаю, что необходимо еще знать логин непривелигерованного пользователя, но всеж...

ps если Вам так не жалко, дайте remoute shell, мне он не помешает =)

pps по теме гуглить iptables hitcount

ale ★★
()
Ответ на: комментарий от gaa

> И что только не делают люди лишь бы авторизацию по ключам не использовать.

+ перевесить ssh на другой порт или поставить knockd, чтобы <censored> ботнеты в логи не гадили. А то сабж -- это какой-то изврат IMHO.

putpixel
()

не, наш путь это BSD с pf:

pass  in   on $ext_if proto tcp from any to ($ext_if) \
    port ssh flags S/SA synproxy state \
        ( max-src-conn 100, max-src-conn-rate 5/5, overload <deny> flush global)

block in log on $ext_if inet from <deny>

и ни каких левых демонов

anonymous
()
Ответ на: комментарий от Morgendorffer

> MooSE, как занести ваш блог во френды, если у меня есть блог на одном из популярных блог-сервисов, поддерживающих OpenID? В случае чего - это тема для ещё одной статьи ;)

Хех.... Философский вопрос... Кто бы мне с реализацией OpenID помог:) У меня же всё самописное:)

MooSE ★★★★
() автор топика
Ответ на: комментарий от Morgendorffer

> MooSE, как занести ваш блог во френды, если у меня есть блог на одном из популярных блог-сервисов, поддерживающих OpenID? В случае чего - это тема для ещё одной статьи ;)

Кстати... А RSS интересно у тебя можно добавлять чтобы читать во френд-ленте?

MooSE ★★★★
() автор топика

Велосипед. Покажите автору Denyhosts

anonymous
()

По моему так будет проще и без всяких скриптов:

$IPT -A INPUT -m recent --update --seconds 60 --hitcount 5 --name BAN_60 -m limit --limit 6/hour --limit-burst 1 -j ULOG --ulog-prefix "[ipt] banned 60 sec :"

$IPT -A INPUT -p tcp --dport $port -m state --state NEW -m recent --set --name BAN_60 -j ACCEPT

anonymous
()
Ответ на: комментарий от Vetal80

>Помнится, в одной книге про хацкеров написано, что можно вообще запретить руту заходить через ссш.

Это написано не в книге про хацкеров, а в man ssh. PermitRootLogin no. Брутфорсы всего лишь загрязняют логи и воруют трафик и мощности сервера.

anonymous
()
Ответ на: комментарий от anonymous

Нужно есще добавить -j DROP в верхнее правило

anonymous
()
Ответ на: комментарий от ale

>а Вам не страшно выставлять "голый" ssh дажес запретом на рута?

чет я не слыхал историй про то что ssh сломали

xargs ★★★
()
Ответ на: комментарий от anonymous

> Что это за ситуация когда ssh нужно открывать на весь мир?

У меня дома куча всяких интересных конфигов лежит. И когда я иду на шабашку я часто до конца не знаю чем придётся столкнуться и какие конфиги потребуются. И уж тем более я не знаю с какого IP я буду цепляться на свою машину.

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

MooSE ★★★★
() автор топика
Ответ на: комментарий от MooSE

>У меня дома куча всяких интересных конфигов лежит. И когда я иду на шабашку я часто до конца не знаю чем придётся столкнуться и какие конфиги потребуются. И уж тем более я не знаю с какого IP я буду цепляться на свою машину.

>это можно решить открыв ssh на другом порту на ограниченное время. Другой вариант - мой хостер предоставляет своим клиентам доступ по SSH. Понятно что он не будет ограничивать диапазон адресов, с которых можно подцепиться.

вряд ли у хостера линуксовая или юниксовая машинка имеет прямой доступ в инет. скорее через циски.

anonymous
()

iptables -A INPUT -p tcp -m state --state NEW --dport 22 -m recent --update --seconds 20 -j DROP

iptables -A INPUT -p tcp -m state --state NEW --dport 22 -m recent --set -j ACCEPT

TuLiss
()

Хм. А про fail2ban автор слышал? Или про denyhosts, который в отличии от прочих, умеет банить брутфорсеров превентивно. То есть хочет бутфорсер побрутфорсить ваш ssh впервые в жизни, ан фигу -- уже забанен.

philon
()
Ответ на: комментарий от anonymous

а блин как из коммандировки то попадать на сервер? иптаблес решает

anonymous
()

В sshd_config Port 59321 Protocol 2 PermitRootLogin no

Этого более чем достаточно. Параноики пусть выбирают пароль подлиннее и меняют его почаще. Для особых суперпараноиков есть iptables. Все эти кнокеры и блокеры. IMHO, лишнее.

fa
()

Почти так, по синей педали неугадав три раза пароль, я потерял доступ ко всему что лежало на другом континенте.

klaus_barbie
()
Ответ на: комментарий от Vetal80

>Помнится, в одной книге про хацкеров написано, что можно вообще запретить руту заходить через ссш. если нада права админа, то сначала заходишь под своим логином, а потом через су получаешь права админа. Если все так просто, то зачем замарачиваться с этим блокссшд?!?!

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

alt0v14 ★★★
()
Ответ на: комментарий от haywire

смена порта от этого отлично помогает, жаль мигннайтовский шелл-линк по нестандартным портам не пашет :(

Archangel_Azrael
()

OpenBSD + PF

anonymous
()
Ответ на: комментарий от xargs

>чет я не слыхал историй про то что ssh сломали даже в матрице показывали

anonymous
()
Ответ на: комментарий от xargs

>чет я не слыхал историй про то что ssh сломали
даже в матрице показывали

anonymous
()
Ответ на: комментарий от klaus_barbie

> Почти так, по синей педали неугадав три раза пароль, я потерял доступ > ко всему что лежало на другом континенте.

А с другого IP зайти было не судьба?

philon
()
Ответ на: комментарий от AMDmi3

>Так все и делают, и во вменяемых дистрах/системах это по умолчанию.

дебиан невменяемый дистр? там ссх после установки разрешает рутовый логин

Somewho ★★
()

вообще алгоритм распознавания брутфорса достаточно простой, я не знаю на столько хорошо iptables, что бы точно описать его в синтаксисе, но в двух словах:

1. дропаем всех из списка адресов ssh_blacklist.

2. добавляем адрес источника c connection_state=new на tcp порт 22 при условии, что адрес уже есть в списке адресов ssh_stage3 в список адресов ssh_blacklist на 10 дней.

3. добавляем адрес источника c connection_state=new на tcp порт 22 при условии, что адрес уже есть в списке адресов ssh_stage2 в список адресов ssh_stage3 на одну минуту.

4. добавляем адрес источника c connection_state=new на tcp порт 22 при условии, что адрес уже есть в списке адресов ssh_stage1 в список адресов ssh_stage2 на одну минуту.

5. добавляем адрес источника c connection_state=new на tcp порт 22 в список адресов ssh_stage1 на 1 минуту.

anonymous
()

good old OpenBSD PF:
TCP="proto tcp"
MSF="modulate state"
SSA="flags S/SA"
table <sshlock> persist
pass in on $ext_if $TCP to $ext_if port ssh $SSA label SSH-Limit \
  $MSF (max-src-conn-rate 10/60, overload <sshlock> flush global)
block drop in log on $ext_if from <sshlock> to any label SSH-Lock

McLone
()

/etc/ssh/sshd_config

AllowUsers admin_name # имя администратора

PermitRootLogin no

Тоже изобретал велосипед как-то. На shell написал скрипт: по крону просматривал ip хостов кул-хацкеров и добавлял в iptables запрещающее правило, и при этом в другой файл скидывал комманды удаления этого же правила. На следующий день выполнял этот файл - очищал iptables. Но и это скорее лишнее: я не очень понимаю на что расчитывают переборщики. Там ни имя ни пароль не угадать никак. Это все равно что выстрелить вверх и попать в пятак во Владивостоке....

anonymous
()
Ответ на: комментарий от anonymous

> Но и это скорее лишнее: я не очень понимаю на что расчитывают переборщики. Там ни имя ни пароль не угадать никак.

А тебе не приходило в голову, что раз это делается, значит, работает и срабатывает. Я сам лично брутфорсил свои машины для проверки и добвался успеха. У юзерины логин и пароль из 3-х букв и они совпадают. И это не редкость.

haywire
()

Чем лучше/хуже denyhosts?

PS: По ссылка не ходил.

anonymous
()
Ответ на: комментарий от haywire

а еще есть дурацкая привычка заводить тестовых юзеров test/test, и тд и тп

alt0v14 ★★★
()

Предлагаю использовать защиту SSH от перебора пароля с помощью установки нормального пароля.

true
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.