Некий нехороший человек научился "вешать" apache нашего сервера. Утверждает, что использользует прокси сервера, генерирует множество запросов, сейчас уже шантажирует. Проект коммерческий, идут убытки...Симтомы следующие:
1. Load Averages из команды top падает почти до 0.
2. Работает 250 httpd процессов, т.е. максимум, определенный в httpd.conf директивой MaxClients.
3. При запросе к web страничкам через браузер происходит задержка секунд на 10-20, а затем ошибка "Невозможно отобразить страницу". Если раз 10 нажимать "обновить страницу" - может показаться.
4. Другие серсисы сервера (FTP, SSH, ...) работают нормально.
5. Некоторые строчки из httpd.conf:Timeout 20
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5<IfModule prefork.c>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 250
MaxRequestsPerChild 0
</IfModule>Пробую с ними "играться", но не помогает.
6. На сервере 3 Гб ОЗУ, процессор P4 3000. Операционка - FreeBSD 5.4
7. Поставил модуль апача mod_limitipconn2, позволяющий ограничивать число соединений с одного IP. Не помогло.
8. В access_log число запросов в порядке нормы (около 50 000 за час), в error_log уйма строк "Rejecting client at ..."Надеюсь, кто-нибудь подскажет. Идти на "поводку" шантажиста-хакера не хотелось бы... Возможно, мог бы выплатить ганарар, если помощь окажется трудоемкой... Готов отправить все логи, любые файлы, статистиску. Возможно, логины-пароли или лично встретиться в Петербурге (оплачу время, помощь). Конечно, предложение СРОЧНОЕ.
Используйте пакетный фильтр.
man pf.conf
max-src-conn, max-src-conn-rate
судя по всему, открывает 250 коннектов с разных ip и "держит" их, например забирая инфу со скоростью типа 1 байт/сек.
Отсюда - все 250 процессов и нулевой LA, ибо они просто покуривая потихоньку, отдают контент
посмотрите по логам, сколько там отбивок соединения по таймауту. При нормальном функционировании их практически не должно быить.
Попробуйте поставить nginx перед апачем.
Это должно решить вашу проблему + такое решение вам даст хороший задел на будущее.
>судя по всему, открывает 250 коннектов с разных ip и "держит" их,
>например забирая инфу со скоростью типа 1 байт/сек.
>Отсюда - все 250 процессов и нулевой LA, ибо они просто покуривая
>потихоньку, отдают контент
>посмотрите по логам, сколько там отбивок соединения по таймауту. При нормальном функционировании
>их практически не должно быить.
>Попробуйте поставить nginx перед апачем.
>Это должно решить вашу проблему + такое решение вам даст хороший задел
>на будущее.Решение проблемы найдено. Поставил nginx как проски сервер (на той же машине, где и Apache). Результат потрясающий. Если ранее работало по 200-250 процессов Apach`а, то сейчас всего 10-20. Расход памяти снизился многократно, load averages уменьшился процентов на 20. От хакерской нет и следа. Это волшебство! А сама атака атака заключалась в следующем: берем 250 прокси серверов, открываем 250 соединений, медленно что-то нибудь качаем. Apache оказывается в отключке, его архитектура подразумевает отдельный процесс под каждое соединение.
Большое СПАСИБО johnjoy !!!
рад, что помог )
а спасибо - игорю сысоеву за замечательный инструмент )
>Некий нехороший человек научился "вешать" apache нашего сервера. Утверждает, что использользует прокси
>сервера, генерирует множество запросов, сейчас уже шантажирует. Проект коммерческий, идут убытки...
>
>
>Симтомы следующие:
>1. Load Averages из команды top падает почти до 0.
>2. Работает 250 httpd процессов, т.е. максимум, определенный в httpd.conf директивой MaxClients.
>
>3. При запросе к web страничкам через браузер происходит задержка секунд на
>10-20, а затем ошибка "Невозможно отобразить страницу". Если раз 10 нажимать
>"обновить страницу" - может показаться.
>4. Другие серсисы сервера (FTP, SSH, ...) работают нормально.
>5. Некоторые строчки из httpd.conf:
>
>Timeout 20
>KeepAlive On
>MaxKeepAliveRequests 100
>KeepAliveTimeout 5
>
><IfModule prefork.c>
>StartServers 5
>MinSpareServers 5
>MaxSpareServers 10
>MaxClients 250
>MaxRequestsPerChild 0
></IfModule>
>
>Пробую с ними "играться", но не помогает.
>
>6. На сервере 3 Гб ОЗУ, процессор P4 3000. Операционка - FreeBSD
>5.4
>7. Поставил модуль апача mod_limitipconn2, позволяющий ограничивать число соединений с одного IP.
>Не помогло.
>8. В access_log число запросов в порядке нормы (около 50 000 за
>час), в error_log уйма строк "Rejecting client at ..."
>
>Надеюсь, кто-нибудь подскажет. Идти на "поводку" шантажиста-хакера не хотелось бы... Возможно, мог
>бы выплатить ганарар, если помощь окажется трудоемкой... Готов отправить все логи,
>любые файлы, статистиску. Возможно, логины-пароли или лично встретиться в Петербурге (оплачу
>время, помощь). Конечно, предложение СРОЧНОЕ.Сколько прокси учавствует в DoS, если менее 50 то можно просто забанить их временно т.к. потеря части аудитории лучше чем полная неработоспособность.
Письмо вышестоящему провайдеру/хостеру с выдержками из логов - обязательно.
Для грамотного пресечения атаки необходимо выявить отличия от легального обращения: процедура установки соединения, флаги, таймауты и т.д. (В ядре задействован DROP SYN/FIN ?)
Простейшее решение регистрация ещё одного IP (поможет, но не долго)
SNORT - на будущее.А сейчас netstat, sockstat, tcpdump и логи в студию.
Привет всем!Раз нашел подходящую проблему, не стал открывать новую тему.
Проблема почти та же самая - конкретно происходить вот что:
Приходят множество соединении извне, вешаются на апач и начинают качать данные на очень малой скорости.
установлен nginx version: nginx/1.5.5 как прокси и Apache/2.2.25.
Сервер сам Centos 6.4 x86_64 ядро 2.6.32-358.18.1.el6.x86_64.
Конфиг нгинкса:user nginx;
worker_processes 10;
worker_rlimit_nofile 100000;sendfile on;
tcp_nopush on;
tcp_nodelay on;
server_tokens off;
gzip on;
gzip_static on;
gzip_comp_level 5;
gzip_min_length 1024;
keepalive_timeout 5 5;
limit_conn_zone $binary_remote_addr zone=addr:10m;proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For
$proxy_add_x_forwarded_for;
client_max_body_size 1k;
client_body_buffer_size 1k;
client_body_timeout 10;
#client_header_timeout 10;
proxy_connect_timeout 10;
proxy_send_timeout 10;
proxy_read_timeout 10;
proxy_buffer_size 1k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;Подскажите, как решить проблему
>[оверквотинг удален]
>
> proxy_buffer_size 1k;
>
> proxy_buffers
> 4 32k;
>
> proxy_busy_buffers_size 64k;
>
> proxy_temp_file_write_size 64k;
> Подскажите, как решить проблемуРешено, это не был DoS, не хватал прямыерукипрограмиста.lib.so