[ssh] как лучше бороться с пидарчатами?

Chupa

вот такими:

Dec 24 15:51:10 cluster sshd[10130]: Illegal user indiana from 211.234.100.135
Dec 24 15:51:13 cluster sshd[10132]: Illegal user inter from 211.234.100.135
Dec 24 15:51:16 cluster sshd[10134]: Illegal user irine from 211.234.100.135
Dec 24 15:51:20 cluster sshd[10136]: Illegal user iris from 211.234.100.135
Dec 24 15:51:23 cluster sshd[10138]: Illegal user irvin from 211.234.100.135
Dec 24 15:51:26 cluster sshd[10140]: Illegal user irving from 211.234.100.135
Dec 24 15:51:29 cluster sshd[10142]: Illegal user isa from 211.234.100.135

AlexV769

ipfw add deny ....

Chupa

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

AlexV769

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

shlyumper

а они тебя напрягают? боишься что действительно взломают?

ava3443

я просто отключил возможность аутентификации по паролю

Chupa

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

shlyumper

а юзеры не всегда утруждают себя придумыванием нормальных пассвордов
в этом случае тебя взломают в любом случае. чего париццо?

Chupa

не надо говорить глупостей
"париццо" есть смысл в любом случае, чтобы вывести время ожидаемого наступления взлома значительно за пределы времени жизни железяки
вопрос, как именно это сделать, чтобы у людей оставалась возможность работать

Ivan8209

Переписать правила стенки так, чтобы пакеты отправлялись туда, где нет sshd?
---
...Я работаю антинаучным аферистом...

Trams

гы, два раза исправил пост всё же 127.0.0.1 имхо лучше

Chupa

tcp-reset вернуть не жалко, это не самая главная проблема
нужно:
1) пускать народ не только из внутренних доверенных сетей, но и снаружи (в пределах москвы, например, китайцы, буржуи и прочие нафиг не нужны)
2) для адресов, с которых возможен доступ, надо уметь обнаруживать и предотвращать такую атаку

shlyumper

вопрос, как именно это сделать, чтобы у людей оставалась возможность работать
один мой знакомый делал так:
Система настраивается, чтобы:
1. при смене пароля обязательно проверить пароль cracklib'ом, если тест не проходит - предложить сменить пароль.
2. новый пароль проверяется на соответствие с любым когда-либо существовавшим на этой системе паролем у какого-либо пользователя. если совпадает - предложить сменить пароль.
3. естественно, все когда-либо стоявшие у кого-либо пароли архивируются, для дальнейших проверок новых паролей.
Настраиваешь таким образом систему, добавляешь все существующие сейчас пароли в базу для 2. и предлагаешь всем добровольно поменять пароль в течение недели, иначе они лишатся доступа к системе. Готово.
А защита от говноскриптов взлома всего интернета - это так себе, разве что для самоуспокоения поможет.

ruler

новый пароль проверяется на соответствие с любым когда-либо существовавшим на этой системе паролем у какого-либо пользователя. если совпадает - предложить сменить пароль.
Ох. Решил я сделать пароль "hatelenasomuchoh". А тут мне система говорит, что такой уже есть. Я дедуктирую, что это мой сосед по парте Андрей такой пароль использовал, пробую использовать его для доступа на почтовый ящик, где указанной системы защиты нет, и вуаля

ava3443

один мой знакомый делал так
Не проще ли сделать обязательной strong authentication? Т.е., нагенерить всем ключи и запретить аутентификацию паролем.

ava3443

Система настраивается
Кстати, как это делается? Свой модуль к PAM?

sergey_m

> Не проще ли сделать обязательной strong authentication? Т.е., нагенерить всем ключи и запретить аутентификацию паролем.
Ты счастливый человек. Ты не встречался с пользователями.

ava3443

Ещё как встречался. У меня манагеры и сейлзы в своё время Redhat Linux 7.3 на десктопах имели
Если серьёзно, действительно заставил всех, кому нужен shell, сгенерить ключи. Мне кажется, что при грамотной реализации это не тот вопрос, которым пользователи могут быть недовольны.

Ivan8209

Мне не нравится, что пакеты будут отправляться самому себе ещё раз.
---
...Я работаю...

Ivan8209

А hosts.{allow,deny} проверяются?
Разбирать логи и добавлять правила по ходу дела?
Попытаться повесить sshd под daemontools?
Там, вроде есть какие-то способы отрубать слишком часто подсоединяющихся.
---
...Я работаю...

Ivan8209

Всё равно, ты счастливый человек.
Тебе попались умные пользователи.
Либо ты просто оказался выше по лестнице.
---
...Я работаю...

otvertka07

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

ava3443

Кстати, поиск в гугле по "ssh block login attempts" может дать немало полезной информации
Например, вот: http://bsdwiki.com/wiki/Blocking_repeated_failed_login_attem...

spirinale

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

Marinavo_0507

пусть юзера регистрируются через веб-интерфейс, указывая, с каких ip они будут ходить
кто с другого заходит, тех не пускать, а указать в сообщении, что надо зарегистрироваться

ava3443

Если не удаётся заставить пользователей private key себе сгенерировать один раз, то и регистрироваться через веб-интерфейс они тем более не будут

spirinale

#!/bin/sh
ipfw delete 20000
for ips in `cat /var/log/auth.log | grep sshd | grep "Illegal" | awk '{print $10}' | uniq -d` ; do
ipfw -q add 20000 deny tcp from $ips to any
done
cat /var/log/auth.log | grep sshd | grep "Failed" | rev | cut -d\ -f 4 | rev | sort | uniq -c | \
( while read num ips; do
if [ $num -gt 5 ]; then
if ! ipfw show | grep -q $ips ; then
ipfw -q add 20000 deny tcp from $ips to any
fi
fi
done
)
это пи_дец
мало того, что в /var/log/auth.log при неудачной попытке пишется 11 полей и именно 11-е - IP адрес, так еще и такую комбинацию завернуть...
cat|grep|grep|awk|uniq или cat|grep|grep|rev|cut|rev|sort|uniq
awk 'BEGIN {system("ipfw delete 20000")} /sshd.+(Illegal|Failed)/ {P[$NF] += (/Illegal/) ? 5 : 1}
END {for (i in P) if (P[i] >= 5) system("ipfw -q add 20000 deny tcp from " i " to any")}' /var/log/auth.log
и может вообще лучше использовать таблицы?

ava3443


что лучше - я уже написал - аутентификация только по private key

valentin160962

А как ты думаешь, почему во всем мире идентификация по паролю? Может, все не знают про такой классный способ, как ключи?
2: Дык, пусть ломают юзеров. А у себя - нормальный пароль и вообще дырки позатыкай;) Кого-нибудь взломают и напакостят в их home - так юзеры поймут, зачем нужны нормальные пароли;)

ava3443

А как ты думаешь, почему во всем мире идентификация по паролю? Может, все не знают про такой классный способ, как ключи?
Да, я думаю, что не все люди, от которых зависят подобные решения, знают и понимают необходимость strong authentication. И ещё меньше людей знают, как легко и просто реализовать strong authentication применительно к ssh.

Marinavo_0507

> Если не удаётся заставить пользователей private key себе сгенерировать
> один раз, то и регистрироваться через веб-интерфейс они тем более не будут
Через веб регистрироваться гораздо проще, это любой виндоюзер умеет по определению.

ava3443

Более того, в целом образованность по security оставляет желать лучшего

ava3443

Через веб регистрироваться гораздо проще, это любой виндоюзер умеет по определению.
Напряг это большой очень - каждый раз при смене IP регистрироваться

valentin160962

пусть юзера регистрируются через веб-интерфейс, указывая, с каких ip они будут ходить
кто с другого заходит, тех не пускать, а указать в сообщении, что надо зарегистрироваться
Этот способ делает невозможным заход с других ip'ов для честных пользователей;) Потом проблемы с динамическими ипами. А если юзер - простой юзер, то он и IP свой узнать не сможет;)

Marinavo_0507

> Напряг это большой очень - каждый раз при смене IP регистрироваться
Если у кого-то часто меняется, можно диапазон зарегистрировать.
Это может сделать автомат, посмотрев whois, а может админ помочь.
Большинство же ходит с постоянных IP.

ava3443

А если юзер - простой юзер, то он и IP свой узнать не сможет;)
Кстати да, это аргумент.

valentin160962

Админу больше делать нечего...;) А если кому очень надо - заведет аккаунт у нужного прова, который попадает в разрешенный диапазон, и взломает так же точно;)
И, опять же, если я хочу не из дома зайти, что делать?

shlyumper

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

shlyumper

вроде да.

sergey_m

> это пи_дец
> ...
> и может вообще лучше использовать таблицы?
Я так и сделал.

#!/usr/bin/perl
use strict;
use constant USERRE => '(?:root|backup|cyrus|daemon|mysql|nobody|operator)';
use constant IPFWCMD => '/sbin/ipfw';
use constant TABLE => 1;
use constant PIDARS => '/etc/pidars';
my $RE1 = 'Failed (?:password|keyboard\-interactive\/pam) for '.&USERRE.' from (\d+\.\d
+\.\d+\.\d+) port \d+';
my $RE2 = 'Illegal user \w+ from (\d+\.\d+\.\d+\.\d+)';
while (<>) {
local *FH;
next unless ($_ =~ $RE2 or $_ =~ $RE1);
system(&IPFWCMD, 'table', &TABLE, 'add', $1);
if (open(FH, '>>'.&PIDARS {
printf(FH "%s\n", $1);
close(FH);
}
}

Программа кормится от syslog-ng, который ей даёт только логи sshd.

evgen5555

Я бы сделал так:
5 фейлов с одного ИПа и юзерагента - и бан на час (фейл в любом случае, а не рефузить коннект)

sergey_m

Какого еще юзерагента?

evgen5555

При negotiation клиент с сервером обмениваются версиями - путти, хуютти, винссх там, и так далее.

Fragaria

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

evgen5555

От версии многое зависит.

sergey_m

Придётся еще патчить sshd, чтобы он это выводил в syslog.

krishtaf

а если кто-нибудь из пользователей просто неправильно логин набрал ?
долго придется в файле искать нужный адрес.

viktor954

Дорогое решение:
Каждому пользователю вот по такой пиз@юлине:
http://www.aladdin.com/etoken/ng_otp.asp
+софт под эту хрень - и вуаля....
Вроде к sshd оно тоже прикручивается...
Выбор решения зависит от того бюджета, который надо освоить...

krishtaf

ты маньяк-извращенец

sergey_m

Насколько я понял, конечной целью Шурика не является освоение бюджета.
Оставить комментарий
Имя или ник:
Комментарий: