Егор Егоров ([info]egorfine) wrote,
@ 2005-06-17 13:27:00
Previous Entry  Add to memories!  Tell a Friend  Next Entry
ssh атаки

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: Ладно, код действительно плох, игрушка не сложилась. Убрал.




(27 comments) - (Post a new comment)

не решил проблему, а создал
[info]unbe
2005-06-17 10:36 am UTC (link)
Не рекомендую пользоваться этим никому.
Во-первых, серьезные проблемы с security, во-вторых будет пропускать строки в быстрозаполняющихся логах - низкая эффективность.

В багртраке был аналогичный скрипт, конечно не на С, по иронии - тоже с огромными дырами :)

(Reply to this) (Thread)

Спасибо за критику
[info]egorfine
2005-06-17 10:59 am UTC (link)
Дык я ж говорю contribution welcome. Пропускать не должен по идее.

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

PS: Я не сишник. я просто получил удовольствие от процесса кодинга, соскучился уже:)

(Reply to this) (Parent)(Thread)

не за что, поругать я всегда могу :)
[info]unbe
2005-06-17 11:18 am UTC (link)
Да, пропуск маловероятен - только если запись строки в лог неатомарна. Виноват, не врубился сразу в оригинальный метод построчного чтения :)
Дыры, как минимум, здесь:

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

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

Что касается contribution, то я лучше воздержусь. При всем к тебе уважении, это - отстой :)
И по дизайну, и по реализации. Проще заново написать.

(Reply to this) (Parent)(Thread)

Re: не за что, поругать я всегда могу :)
[info]egorfine
2005-06-17 11:29 am UTC (link)
Заново - проще, но где мой фан? :)


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

(Reply to this) (Parent)(Thread)

Re: не за что, поругать я всегда могу :)
[info]unbe
2005-06-17 11:31 am UTC (link)
фан фаном, но других-то зачем подставлять? :)
тем более массово.

Хотя, кто подставился - сам дурак :)

(Reply to this) (Parent)(Thread)

Re: не за что, поругать я всегда могу :)
[info]egorfine
2005-06-17 11:35 am UTC (link)
Ну хорошо, я исправлю юзера.
Где еще там потенциальная неправда?

(Reply to this) (Parent)(Thread)


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

(Reply to this) (Parent)(Thread)


[info]egorfine
2005-06-17 12:06 pm UTC (link)
Ладно, убедил. Грохну. :(

(Reply to this) (Parent)(Thread)


[info]unbe
2005-06-17 12:07 pm UTC (link)
Ну вот, теперь я чувствую себя виноватым - лишил человека игрушки :)

(Reply to this) (Parent)(Thread)


[info]woodykas
2005-06-17 09:06 pm UTC (link)
ну вот ... как ты мог ... жестокий ... :)

(Reply to this) (Parent)


[info]sloven
2005-06-17 12:14 pm UTC (link)
http://www.opennet.ru/opennews/art.shtml?num=5582

(Reply to this) (Thread)


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

(Reply to this) (Parent)(Thread)


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

(Reply to this) (Parent)(Thread)


[info]unbe
2005-06-17 12:44 pm UTC (link)
Основной вопрос - ну и что? :)
Второй вопрос - эти атаки что, с одних и тех же адресов? Если нет, то этот скрипт не поможет.

(Reply to this) (Parent)(Thread)


[info]woodykas
2005-06-17 02:06 pm UTC (link)
ППКС.

мне от этих атак - не холодно и не жарко, пусть ломятся, если им не лень :)

(Reply to this) (Parent)


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

(Reply to this) (Parent)


[info]egorfine
2005-06-17 01:23 pm UTC (link)
Видел. Don't like it.

(Reply to this) (Parent)


[info]ormuz
2005-06-17 12:44 pm 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

(Reply to this) (Thread)


[info]unbe
2005-06-17 12:48 pm UTC (link)
не, все-таки получше, ваш вариант - это совсем "ужоснах" :)

(Reply to this) (Parent)(Thread)


[info]ormuz
2005-06-17 12:52 pm UTC (link)
Не понял.

(Reply to this) (Parent)(Thread)


[info]unbe
2005-06-17 01:02 pm UTC (link)
Выражаюсь более развернуто: программа господина Егорова будет работать в целом корректнее, чем ваша строчка, которая обладает рядом недостатков. Дальше идет смайлик, который говорит о том, что данное высказывание следует воспринимать с улыбкой, а не на полном серъезе.

Теперь поняли?

(Reply to this) (Parent)(Thread)


[info]ormuz
2005-06-17 01:12 pm UTC (link)
Я ж и интересуюсь, какими такими неисправимыми за 2-3 минуты недостатками обладает такая строка по сравнению с программой господина Егорова (я её не читал особо)?

(Reply to this) (Parent)(Thread)

эх, пофлеймим!
[info]unbe
2005-06-17 01:24 pm UTC (link)
Ну, так и программу можно исправить.
По сути, конечно, использовать С для такой задачи смысла практически нет, просто Егор поиграцца хотел :)
Что касается вашей строки, то раз вы уж вызываете перл, то зачем еще 2 грепа? :)

(Reply to this) (Parent)(Thread)

Re: эх, пофлеймим!
[info]ormuz
2005-06-17 03:52 pm UTC (link)
Из концептуальных соображений не делать на пёрле ничего сложнее вышеуказаного.

(Reply to this) (Parent)


[info]egorfine
2005-06-17 01:25 pm UTC (link)
Опухнуть... это вы написали или бойфренд? :)

(Reply to this) (Parent)


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

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

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

(Reply to this) (Thread)


[info]egorfine
2005-09-20 07:22 am UTC (link)
Порт 22 гораздо чаще НАТится чем любой другой. Если уж перевешивать ssh, то на 443.

(Reply to this) (Parent)


(27 comments) - (Post a new comment)

Create an Account
Forgot your login or password?
Login w/ OpenID
English • Español • Deutsch • Русский…