LINUX.ORG.RU

Увидеть пароли, которыми брутят твой SSH-сервер

 , , ,


17

3

Один из вариантов, который выбрал я — пропатчить OpenSSH (он используется в большинстве дистрибутивов).

Патч:

--- old/auth-passwd.c	2009-03-07
+++ new/auth-passwd.c	2013-01-30
@@ -86,6 +86,8 @@
 	static int expire_checked = 0;
 #endif
 
+	logit("auth_password: username: `%s' password: `%s'", authctxt->user, password);
+
 #ifndef HAVE_CYGWIN
 	if (pw->pw_uid == 0 && options.permit_root_login != PERMIT_YES)
 		ok = 0;

Теперь мы будем в /var/log/auth.log (или где там у вас пишутся логи ssh-сервака) видеть, чем именно нас пытаются «брутить» нехорошие дяденьки:

Jan 30 08:54:46 POWER sshd[12266]: reverse mapping checking getaddrinfo for corporat190-024010011.sta.etb.net.co [190.24.10.11] failed - POSSIBLE BREAK-IN ATTEMPT!
Jan 30 08:54:46 POWER sshd[12266]: auth_password: username: `root' password: `cacutza'
Jan 30 08:54:46 POWER sshd[12266]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=190.24.10.11  user=root
Jan 30 08:54:48 POWER sshd[12266]: Failed password for root from 190.24.10.11 port 41016 ssh2
Jan 30 08:54:52 POWER sshd[12266]: auth_password: username: `root' password: `root2010'
Jan 30 08:54:53 POWER sshd[12266]: Failed password for root from 190.24.10.11 port 41016 ssh2
Jan 30 08:54:53 POWER sshd[12266]: Connection closed by 190.24.10.11 [preauth]
Jan 30 08:54:53 POWER sshd[12266]: PAM 1 more authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=190.24.10.11  user=root
Jan 30 09:06:05 POWER sshd[12275]: reverse mapping checking getaddrinfo for corporat190-024010011.sta.etb.net.co [190.24.10.11] failed - POSSIBLE BREAK-IN ATTEMPT!
Jan 30 09:06:05 POWER sshd[12275]: auth_password: username: `root' password: `cacutza'
Jan 30 09:06:06 POWER sshd[12275]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=190.24.10.11  user=root
Jan 30 09:06:08 POWER sshd[12275]: Failed password for root from 190.24.10.11 port 52188 ssh2
Jan 30 09:06:08 POWER sshd[12275]: auth_password: username: `root' password: `handler'
Jan 30 09:06:10 POWER sshd[12275]: Failed password for root from 190.24.10.11 port 52188 ssh2
Jan 30 09:06:10 POWER sshd[12275]: auth_password: username: `root' password: `centosadmin'
Jan 30 09:06:13 POWER sshd[12275]: Failed password for root from 190.24.10.11 port 52188 ssh2
Jan 30 09:06:13 POWER sshd[12275]: Connection closed by 190.24.10.11 [preauth]
Jan 30 09:06:13 POWER sshd[12275]: PAM 2 more authentication failures; logname= uid=0 euid=0 tty=ssh ruser= rhost=190.24.10.11  user=root
Jan 30 09:17:25 POWER sshd[12352]: reverse mapping checking getaddrinfo for corporat190-024010011.sta.etb.net.co [190.24.10.11] failed - POSSIBLE BREAK-IN ATTEMPT!
Jan 30 09:17:25 POWER sshd[12352]: auth_password: username: `root' password: `cacutza'
Jan 30 09:17:25 POWER sshd[12352]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=190.24.10.11  user=root
Jan 30 09:17:28 POWER sshd[12352]: Failed password for root from 190.24.10.11 port 41523 ssh2
Jan 30 09:17:30 POWER sshd[12352]: auth_password: username: `root' password: `private'
Jan 30 09:17:33 POWER sshd[12352]: Failed password for root from 190.24.10.11 port 41523 ssh2
Jan 30 09:17:35 POWER sshd[12352]: Connection closed by 190.24.10.11 [preauth]
Jan 30 09:17:35 POWER sshd[12352]: PAM 1 more authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=190.24.10.11  user=root
Jan 30 09:28:46 POWER sshd[12406]: reverse mapping checking getaddrinfo for corporat190-024010011.sta.etb.net.co [190.24.10.11] failed - POSSIBLE BREAK-IN ATTEMPT!
Jan 30 09:28:46 POWER sshd[12406]: auth_password: username: `root' password: `cacutza'
Jan 30 09:28:46 POWER sshd[12406]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=190.24.10.11  user=root
Jan 30 09:28:48 POWER sshd[12406]: Failed password for root from 190.24.10.11 port 50360 ssh2
Jan 30 09:28:51 POWER sshd[12406]: auth_password: username: `root' password: `root123'
Jan 30 09:28:53 POWER sshd[12406]: Failed password for root from 190.24.10.11 port 50360 ssh2
Jan 30 09:28:56 POWER sshd[12406]: Connection closed by 190.24.10.11 [preauth]
Jan 30 09:28:56 POWER sshd[12406]: PAM 1 more authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=190.24.10.11  user=root

Простите, если боян.

Не боян, интересная тема.
ЕМНИП, на яндекс олимпиаде мы его тоже хакали примерно в том же ключе.

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

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

Было бы здорово, но всё равно будет много тех, у кого рутовый пароль `cacutza'^W`12345'.

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

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

и ставить запреты на подобные пароли.

Я бы сделал «rm -rf --no-preserve-root /*», если бы мне кто-то запретил поставить то, что я хочу.
Может разумней была бы рекомендация?

Spirit_of_Stallman ★★★
()

Ну поставь ты уже пароль «cacutza», будь человеком!

Да, у бота с 190.24.10.11 к `cacutza' какая-то особая любовь. Кто-нибудь где-нибудь хоть раз юзал этот пароль? :-)

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

$ ssh root@127.0.0.1
root@127.0.0.1's password: 
Permission denied, please try again.
root@127.0.0.1's password: ^C

Ибо:

PermitRootLogin no
mr_doug
() автор топика
Ответ на: комментарий от Spirit_of_Stallman

Может разумней была бы рекомендация?

Ты - да. А у меня куча юзверов есть, которые используют unix логин, в том числе и в ssh. Им бы я запретил законодательно :)

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

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

Большая часть дистрибутивов из коробки разрешают логин рута.

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

Кстати, ребята из OpenSSH говорят, что это подрывает безопасность. Потому что успешные логины с их паролями тоже будут в auth.log. И тот, кто сможет его прочитать, сможет залогиниться под всем, что увидит в auth.log.

chmod 600 /var/log/auth.log немного решает проблему, да.

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

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

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

А у этих пользователей полная свобода действий?

Нет конечно.

Или, может, это персонал?

Именно.

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

Само собой. Но запрет на простые пароли ты как сделаешь? ;)

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

Это мне совсем непонятно. Всегда можно su -l потом, если что.

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

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

Кстати, ребята из OpenSSH говорят, что это подрывает безопасность. Потому что успешные логины с их паролями тоже будут в auth.log. И тот, кто сможет его прочитать, сможет залогиниться под всем, что увидит в auth.log.

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

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

У тебя у рядовых сотрудников у всех «белые» ойпи, смотрящие в интернет, и ssh-серваки? Но зачем?!

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

Кстати, а абьюзы на 190.24.10.11 катать имеет смысл или?

Всегда имеет. Пиши и прикладывай логи. Плюс, пиши не только на эту айпишку, но и апстримам.

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

у меня куча юзверов есть, которые используют unix логин, в том числе и в ssh

Ну не рутовый же! А узнать какой там на удалённой машине есть другой юзернейм — ещё та задача для таких вот «взломщиков».

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

Само собой. Но запрет на простые пароли ты как сделаешь? ;)

function test1(){
    pass="$1"
    # тут проверка пароля в базе, скажем mysql
    [ "$fail_trigger" == "1" ] && { echo "придумай сложнее пароль, ракушка!"; exit; }
    echo "$pass" | chpasswd
    echo "pass ok"
}

alias passwd='test1'

м?

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

У тебя у рядовых сотрудников у всех «белые» ойпи, смотрящие в интернет, и ssh-серваки? Но зачем?!

1. В моём отделе нету рядовых сотрудников. Хэд департамент.
2. Не в белости дело, и не только на 22 боты стучат.

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

# тут проверка пароля в базе, скажем mysql

А саму базу паролей то ты откуда возьмешь? Я и говорю - делать онлайн блеклист под них было бы прикольно.

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

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

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

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

руками всегда генерировать пароль самому для юзверей

Причём часто юзвери сами рады такому. Я раньше раздавал логины так: для `userx' пасс `userx21lovespower', где цифра — порядковый номер, power — имя хоста. И запомнить легко, и долго брутить будешь.

Ну и passwd доступным только руту держать.

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

Я всегда, когда ставлю пароли, использую только генератор. Аля

taz@think ~> makepasswd -chars 20
TT9RqJPULTTiBHootIF6
taz@think ~> makepasswd -chars 20
ABgotQWLC36hqnFVQTjP
taz@think ~> makepasswd -chars 20
f7VBX8vXBX56tWuFw8Lf

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

А саму базу паролей то ты откуда возьмешь?

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

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

запрет на простые пароли ты как сделаешь? ;)

По-моему, для этих целей замечательно подходит pam_cracklib.

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

Я всегда, когда ставлю пароли, использую только генератор.

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

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

Please create a password. Your password needs to contain a capital letter, a number, an emoji, 8 elements from the Periodic Table, and a plot containing a protagonist with some character development and a twisted ending.

beastie ★★★★★
()

Так, пока что вот что имею за пару часов

# cat /var/log/auth.log | grep 'auth_password:' | cut -d' ' -f6- | sort | uniq
auth_password: username: `root' password: `1234'
auth_password: username: `root' password: `acer'
auth_password: username: `root' password: `alcatraz'
auth_password: username: `root' password: `cacutza'
auth_password: username: `root' password: `centosadmin'
auth_password: username: `root' password: `fail'
auth_password: username: `root' password: `francesco'
auth_password: username: `root' password: `handler'
auth_password: username: `root' password: `jesse'
auth_password: username: `root' password: `mypassword'
auth_password: username: `root' password: `nvidia'
auth_password: username: `root' password: `Password'
auth_password: username: `root' password: `paul'
auth_password: username: `root' password: `pingpong'
auth_password: username: `root' password: `private'
auth_password: username: `root' password: `procesor'
auth_password: username: `root' password: `root123'
auth_password: username: `root' password: `root2010'
auth_password: username: `root' password: `security'
auth_password: username: `root' password: `sony'
auth_password: username: `root' password: `utility'
mr_doug
() автор топика
Ответ на: комментарий от tazhate

Флешка да. Но, если честно, ни разу не видел на вписках GNU/Linux'а, а как там в этой-самой-системе с их pscp (вроде бы так называется) логин по ключам сделать — не знаю, и гуглить лень.

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

Может разумней была бы рекомендация?

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

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

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

Само собой. Но запрет на простые пароли ты как сделаешь? ;)

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

anonymous_sama ★★★★★
()

Внезапно. А если и правда поставить на рут его любимый `cacutza' и посмотреть, что этот бот будет делать, залогинившись? Естественно, логиниться он будет в чрут.

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

У меня может, даже, где-то остались словарики, для вардрайвинга.
Но стоит учесть что каждый хацкор пользует свои, обычно, или своего «сообщества».

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

А телефон/планшет от пролюбливания защищаешь приковывая его к себе цепью или как-то более фундаментально?

Пароль + зашифрованная сд карта встроенными тулзами. Плюс ссх ключи тоже защищены паролем.

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

А мне виртуалку как-то захватил китайский бот.
У меня он оставил бинарь, тихо слушающий кастомный порт, ну и добавил себя в вайтлист апитейблса.
Недельное слежение показало что оно менялось с дестенейшеном только hello'шками, и ничего не делало. Думаю ждало команд, будучи частью ботнета.

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

Знать, какой пароль используется, всё равно важно. Например, «служба безопасности» в одной российской «государственной» (на самом деле они ОАО, но до сих пор играют там в особую секретность и прочую гебню) конторе в сентябре отобрала у меня компьютер, лишив меня оборудования и, соответственно, работы (см. также статьи 15 и 22 ТК РФ). Пароли и рута, и обычного юзверя от рабочего компа я им дал, конечно, мне жалко чо ли. Так вот. Спустя пару недель, эти самые связки были использованы для попытки проникновения на мой домашний комп. Этим гебням невдомёк что ли, что одинаковые пароли ставить — моветон. Зато я сразу же узнал, что это — они, потому что никто больше (причём с первой попытки) мои пароли и логины знать не мог :-)

Кстати, и этот брут с вероятностью 50% — остаток от деятельности всяких «К», кому они мои данные передали.

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

chmod 600 /var/log/auth.log немного решает проблему, да.

Так а может лучше исправить патч и логировать только неуспешные попытки?

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

Там всё разделено очень. То, что говорит, что удачная попытка, пароль (в его «текстовом» виде) уже совершенно недоступен.

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

Походу cacutza очень популярный пароль.

А ведь он всегда первый. То есть цепочка всегда начинается с этого cacutza, потом только все остальные. Однако, зачем? Лишняя попытка же тратится.

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