DDoS атака на сайт (nginx+apache.)

FreeBSD, NetBSD, OpenBSD, DragonFly и т. д.

Модератор: arachnid

Thug
Сообщения: 200

DDoS атака на сайт

Сообщение Thug »

Ну вот добрались и до нашего сайта. Четвертый день имеем стабильный жутик вида:
IP - - [23/Aug/2007:11:00:16 +0400] "GET //static/51 HTTP/1.0" 200 20113 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru
; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1"
Сам сайт развернут на варианте nginx front + apache back. Необходимость апача - предполагалось разворачивать еще Н хостов с пхп и прочим.
Пока что написан скрипт, раз в две минуты потрошащий логи нгинкса и банящий на ipfw адреса ботов. Но если ipfw отключить - нгинкс уходит в кому примерно за 3 минуты. Причем кома столь глубока, что он даже не реагирует на kill -s 9. Только ребут системы.
Что было сделано:
nginx.conf:

Код: Выделить всё

user  www;
 worker_processes  [b]2;[/b]

 error_log  /var/log/nginx-error.log;
 pid        /var/run/nginx.pid;


 events {
     worker_connections  [b]8192[/b];
 }


 http {
     include       mime.types;
     default_type  application/octet-stream;

     #log_format  main  '$remote_addr - $remote_user [$time_local] $request '
     #                  '"$status" $body_bytes_sent "$http_referer" '
     #                  '"$http_user_agent" "$http_x_forwarded_for"';

     #access_log  logs/access.log  main;

     sendfile        on;
     #tcp_nopush     on;

     #keepalive_timeout  0;
     keepalive_timeout  65;
     tcp_nodelay         on;

     #gzip  on;


     server {
         listen       80;
         server_name
         location / {
         proxy_pass         http://127.0.0.1:8080/;
         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       10m;
         client_body_buffer_size    128k;
         proxy_connect_timeout      90;
         proxy_send_timeout         90;
         proxy_read_timeout         90;
         proxy_buffer_size          4k;
         proxy_buffers              4 32k;
         proxy_busy_buffers_size    64k;
         proxy_temp_file_write_size 64k;
         }
 #        location ~* ^.+.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|
midi|wav|bmp|rtf|js)$ {
 #        root   /html;
 #        }
         error_page   500 502 503 504  /50x.html;
         location = /50x.html {
             root   html;
         }
     }

httpd.conf - добавления, которые особо не изменили ситуацию.

Код: Выделить всё

MinSpareServers 15
 MaxSpareServers 60
 StartServers 15
 MaxClients 250


Судя по всему все же проблема именно в нгинкс. Ибо зависает именно он. Есть какие-то рекомендации как увеличить стрессоустойчивость нгинкса? И как можно порешать проблему ДДоС на уровне системы?
Страйкбол - игра админов :)
Спасибо сказали:
Аватара пользователя
magus
Сообщения: 373
ОС: arch, suse, solaris

Re: DDoS атака на сайт

Сообщение magus »

мож сдесь что дельное есть... http://staff.washington.edu/dittrich/misc/ddos/ сам хотел почитать, да пока времени не было... Ещё я планировал поставить IDS snort, она вроде имеет механизмы против дос атак. но в деталях тож не разбирался. впринципе в гугле инфы много.
Спасибо сказали:
Аватара пользователя
shadowless
Сообщения: 15
ОС: Free/Open BSD

Re: DDoS атака на сайт

Сообщение shadowless »

для начала покажите свой sysctl.conf
Спасибо сказали:
Thug
Сообщения: 200

Re: DDoS атака на сайт

Сообщение Thug »

Даже стыдно показывать - он девственно чист.

Код: Выделить всё

# $FreeBSD: src/etc/sysctl.conf,v 1.8 2003/03/13 18:43:50 mux Exp $
#
#  This file is read when going to multi-user and its contents piped thru
#  ``sysctl'' to adjust kernel values.  ``man 5 sysctl.conf'' for details.
#

# Uncomment this to prevent users from seeing information about processes that
# are being run under another UID.
#security.bsd.see_other_uids=0
Страйкбол - игра админов :)
Спасибо сказали:
Аватара пользователя
gcc
Сообщения: 526
ОС: FreeBSD 8.0 CURRENT

Re: DDoS атака на сайт

Сообщение gcc »

security.bsd.see_other_uids=0
security.bsd.see_other_gids=0
net.inet.ip.ttl=128
net.inet.tcp.blackhole=2
net.inet.udp.blackhole=1
net.inet.tcp.log_in_vain=1
net.inet.udp.log_in_vain=1
kern.ipc.somaxconn=1024
net.link.ether.inet.log_arp_movements=1
net.link.ether.inet.max_age=600
net.inet.icmp.drop_redirect=1
net.inet.icmp.log_redirect=1
net.inet.ip.redirect=0
net.inet.icmp.bmcastecho=0
net.inet.tcp.sendspace=130000
net.inet.tcp.recvspace=130000
net.inet.ip.fw.one_pass=0
net.inet.tcp.icmp_may_rst=0
security.bsd.conservative_signals=1
security.bsd.unprivileged_proc_debug=0
security.bsd.unprivileged_read_msgbuf=0
security.bsd.unprivileged_get_quota=0
kern.maxusers=256 kern.securelevel=1

etc
Спасибо сказали:
Thug
Сообщения: 200

Re: DDoS атака на сайт

Сообщение Thug »

Благодарствую. Пошел изучать параметры.
Страйкбол - игра админов :)
Спасибо сказали:
Аватара пользователя
shadowless
Сообщения: 15
ОС: Free/Open BSD

Re: DDoS атака на сайт

Сообщение shadowless »

gcc писал(а):
28.08.2007 04:02
security.bsd.see_other_uids=0
security.bsd.see_other_gids=0
net.inet.ip.ttl=128
net.inet.tcp.blackhole=2
net.inet.udp.blackhole=1
net.inet.tcp.log_in_vain=1
net.inet.udp.log_in_vain=1
kern.ipc.somaxconn=1024
net.link.ether.inet.log_arp_movements=1
net.link.ether.inet.max_age=600
net.inet.icmp.drop_redirect=1
net.inet.icmp.log_redirect=1
net.inet.ip.redirect=0
net.inet.icmp.bmcastecho=0
net.inet.tcp.sendspace=130000
net.inet.tcp.recvspace=130000
net.inet.ip.fw.one_pass=0
net.inet.tcp.icmp_may_rst=0
security.bsd.conservative_signals=1
security.bsd.unprivileged_proc_debug=0
security.bsd.unprivileged_read_msgbuf=0
security.bsd.unprivileged_get_quota=0
kern.maxusers=256 kern.securelevel=1

etc

ну ко всему выше написаному у меня еще добавлено

net.inet.icmp.maskrepl=0
net.inet.ip.sourceroute=0
net.inet.ip.accept_sourceroute=0
net.inet.tcp.msl=15000
net.inet.icmp.icmplim=100
net.inet.ip.random_id=1
security.bsd.unprivileged_proc_debug=0
security.bsd.unprivileged_read_msgbuf=0
security.bsd.hardlink_check_uid=0
security.bsd.hardlink_check_gid=0
vfs.usermount=0
kern.ps_showallprocs=0
net.inet.tcp.sack.enable=0
kern.polling.enable=1
Спасибо сказали: