FastNetMon

Monday, 25 January 2010

Определение DoS/DDoS атак на сервер

Часто меня спрашивают, как узнать - идет ли DoS атака на сервер? С одной стороны это очевидно, но далеко не для всех и далеко не всегда. В этом посте постараюсь собирать все формальные признаки атак, по которым их можно легко определить.

Во-первых, посомтрим число процессов Апача:
ps aux | grep apache | wc -l


Либо в случае ОС CentOS5/RHEL:
ps aux | grep httpd | wc -l


Если их более 20-30, то это уже повод для беспокойства.

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

/var/log/apache2/error.log
/var/log/apache2/access.log


И для CentOS:
/var/log/httpd/error.log
/var/log/httpd/access.log


Далее, стоит просмотреть логи всех сайтов (например, в случае использования панели ISPManager они лежат в папке /var/www/httpd-logs) и обратить особое внимание на самые большие из них.

Если "большой" лог найден, то его стоить проанализировать на предмет аномалий следующим образом:
cat log_type.log | awk '{print $1}' | sort | uniq -c


Эта команда укажет число запросов до сайта с уникальных айпи, вывод ее будет в виде:

14 95.67.xx.xx
21 95.68.xx.xx
25 95.68.xx.xx
15 95.68.xx.xx
15 95.68.xx.xx
1 95.69.xx.xx
15 95.70.xx.xx
1 95.70.xx.xx
21 95.70.xx.xx
24 95.70.xx.xx
22 95.70.xx.xx
15 95.70.xx.xx
17 95.70.xx.xx
1 95.70.xx.xx


Таким образом, если какой-то IP / блок айпи заваливает сайт запросами, это будет видно по резко уходящим в верх значениям запросов для IP злоумышленников.

Если же используется Nginx, то также обязательно просматривать логи:

/var/log/nginx/error.log
/var/log/nginx/access.log


Продолжение следует :)

4 comments :

  1. лучше
    netstat -n -t | grep SYN_RECV | wc -l

    если больше 500 то это ddos

    ReplyDelete
  2. Ну скорее син флуд :)

    ReplyDelete
  3. а где эти команды вводить?

    ReplyDelete

Note: only a member of this blog may post a comment.