Егор Егоров - ssh атаки [entries|archive|friends|userinfo]

[ сайт | домашняя страничка ]
[ моя | юзеринфа ]
[ архив | записей ]

Links
[Я читаю| Христианские новости Slashdot The Daily WTF ]
[Моя церковь| Hillsong Kiev ]

ssh атаки [Июн. 17, 2005|13:27]
Previous Entry в избранное рассказать другу Next Entry

Jun 17 01:15:30 o pam_tcb[11838]: sshd: Authentication failed for UNKNOWN USER from (uid=0)
Jun 17 01:15:30 o sshd[11839]: Failed password for UNKNOWN USER from 60.32.86.38 port 52051 ssh2
Jun 17 01:15:30 o sshd[11839]: Received disconnect from 60.32.86.38: 11: Bye Bye
Jun 17 01:15:38 o sshd[11836]: Unknown username from 60.32.86.38

Достали. Решил вопрос. До понедельника еще подумаю, а потом - во freshmeat.

Update: Ладно, код действительно плох, игрушка не сложилась. Убрал.

ссылкаОтветить

Comments:
[User Picture]From: [info]unbe
2005-06-17 10:36 none (UTC)

не решил проблему, а создал

(Link)

Не рекомендую пользоваться этим никому.
Во-первых, серьезные проблемы с security, во-вторых будет пропускать строки в быстрозаполняющихся логах - низкая эффективность.

В багртраке был аналогичный скрипт, конечно не на С, по иронии - тоже с огромными дырами :)
[User Picture]From: [info]egorfine
2005-06-17 10:59 none (UTC)

Спасибо за критику

(Link)

Дык я ж говорю contribution welcome. Пропускать не должен по идее.

Какие дыры я допустил?

PS: Я не сишник. я просто получил удовольствие от процесса кодинга, соскучился уже:)
[User Picture]From: [info]unbe
2005-06-17 11:18 none (UTC)

не за что, поругать я всегда могу :)

(Link)

Да, пропуск маловероятен - только если запись строки в лог неатомарна. Виноват, не врубился сразу в оригинальный метод построчного чтения :)
Дыры, как минимум, здесь:

int logMessage(char *message) {
...
fprintf(logFile, messageLine);
printf(messageLine);

В messageLine есть username, полученный от пользователся.

Что касается contribution, то я лучше воздержусь. При всем к тебе уважении, это - отстой :)
И по дизайну, и по реализации. Проще заново написать.
[User Picture]From: [info]egorfine
2005-06-17 11:29 none (UTC)

Re: не за что, поругать я всегда могу :)

(Link)

Заново - проще, но где мой фан? :)


про messageLine - пять баллов

[User Picture]From: [info]unbe
2005-06-17 11:31 none (UTC)

Re: не за что, поругать я всегда могу :)

(Link)

фан фаном, но других-то зачем подставлять? :)
тем более массово.

Хотя, кто подставился - сам дурак :)
[User Picture]From: [info]egorfine
2005-06-17 11:35 none (UTC)

Re: не за что, поругать я всегда могу :)

(Link)

Ну хорошо, я исправлю юзера.
Где еще там потенциальная неправда?
[User Picture]From: [info]unbe
2005-06-17 12:01 none (UTC)

(Link)

По реализации - очень странное чтение из файла (man fgets, если уж с потоками связался), неудачные регулярные выражения, полный швах с fd=0..2, куча лишнего кода - лениво мне, в общем-то, все выискивать.
Основная проблема в самой идее.
Во-первых, почему это делается по логам?
Во-вторых, почему вечный бан за первый received disconnect?
[User Picture]From: [info]egorfine
2005-06-17 12:06 none (UTC)

(Link)

Ладно, убедил. Грохну. :(
[User Picture]From: [info]unbe
2005-06-17 12:07 none (UTC)

(Link)

Ну вот, теперь я чувствую себя виноватым - лишил человека игрушки :)
[User Picture]From: [info]woodykas
2005-06-17 21:06 none (UTC)

(Link)

ну вот ... как ты мог ... жестокий ... :)
[User Picture]From: [info]unbe
2005-06-17 12:37 none (UTC)

(Link)

Во-первых, против проблемы не поможет скорее всего, т.к. не-realtime.
Во-вторых, есть подозрение, что схавает и забанит IP адрес, аккуратно подсунутый в username - как и у Егора :)
В третьих, тоже изрядно раком написано, как по мне.
[User Picture]From: [info]sloven
2005-06-17 12:40 none (UTC)

(Link)

Просто в отличие от Егорки, у меня предпринимается 3-5 атак в день ;)
Каждая из них - пару сот попыток :(
[User Picture]From: [info]unbe
2005-06-17 12:44 none (UTC)

(Link)

Основной вопрос - ну и что? :)
Второй вопрос - эти атаки что, с одних и тех же адресов? Если нет, то этот скрипт не поможет.
[User Picture]From: [info]woodykas
2005-06-17 14:06 none (UTC)

(Link)

ППКС.

мне от этих атак - не холодно и не жарко, пусть ломятся, если им не лень :)
[User Picture]From: [info]egorfine
2005-06-17 13:25 none (UTC)

(Link)

Ну у меня не 3-5 атак в день, конечно... но "в отличии от Егорки" - откуда у тебя представление о количестве атак? :)
[User Picture]From: [info]egorfine
2005-06-17 13:23 none (UTC)

(Link)

Видел. Don't like it.
[User Picture]From: [info]ormuz
2005-06-17 12:44 none (UTC)

(Link)

Он ещё лог не переоткрывает. Ну и впадет в спячку на log-rotate.

ну и непонятно чем это лучше
какого нибудь - tail -f /var/log/messages|egrep "sshd.*Failed" | perl -ne 'if( /(\d+\.\d+\.\d+.\d+)/ ){ print $1,"\n";}'|grep -v -f "protectedIPS" |xargs -n 1 banIP
[User Picture]From: [info]unbe
2005-06-17 12:48 none (UTC)

(Link)

не, все-таки получше, ваш вариант - это совсем "ужоснах" :)
[User Picture]From: [info]ormuz
2005-06-17 12:52 none (UTC)

(Link)

Не понял.
[User Picture]From: [info]unbe
2005-06-17 13:02 none (UTC)

(Link)

Выражаюсь более развернуто: программа господина Егорова будет работать в целом корректнее, чем ваша строчка, которая обладает рядом недостатков. Дальше идет смайлик, который говорит о том, что данное высказывание следует воспринимать с улыбкой, а не на полном серъезе.

Теперь поняли?
[User Picture]From: [info]ormuz
2005-06-17 13:12 none (UTC)

(Link)

Я ж и интересуюсь, какими такими неисправимыми за 2-3 минуты недостатками обладает такая строка по сравнению с программой господина Егорова (я её не читал особо)?
[User Picture]From: [info]unbe
2005-06-17 13:24 none (UTC)

эх, пофлеймим!

(Link)

Ну, так и программу можно исправить.
По сути, конечно, использовать С для такой задачи смысла практически нет, просто Егор поиграцца хотел :)
Что касается вашей строки, то раз вы уж вызываете перл, то зачем еще 2 грепа? :)
[User Picture]From: [info]ormuz
2005-06-17 15:52 none (UTC)

Re: эх, пофлеймим!

(Link)

Из концептуальных соображений не делать на пёрле ничего сложнее вышеуказаного.
[User Picture]From: [info]egorfine
2005-06-17 13:25 none (UTC)

(Link)

Опухнуть... это вы написали или бойфренд? :)
[User Picture]From: [info]k001
2005-09-19 23:10 none (UTC)

(Link)

Мне тоже надоели такие вот пионэры, долбящиеся в закрытую дверь (скорее даже, больше озаботила не безопасность (пароли вроде сложные), а флуд в /var/log/messages), поэтому я переставил дверь на потолок, то есть перевесил sshd на другой порт, 2231, а на клиентах сказал что-то типа
echo -e "Host myhost.com *.myhost.com\n\tPort 2231" >> ~/.ssh/config

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

Второй вариант решения проблемы - закрыть фаерволом на сервере всем доступ к 22 порту, открыть для себя (для своих сетей). Вполне работает, но хуже тем, что в случае чего не удастся зайти с произвольной машины (а при первом способе надо только вспомнить номер порта).
[User Picture]From: [info]egorfine
2005-09-20 07:22 none (UTC)

(Link)

Порт 22 гораздо чаще НАТится чем любой другой. Если уж перевешивать ssh, то на 443.