Виды ДОС-атак (условия для DOS/DDos атак)
1. Недостаточная фильтрация данных может привести повышенному потреблению ресурсов, к длительному или бесконечному циклу, выделению огромного объема оперативной памяти.
2. Недостаточная фильтрация данных
3. Атака второго рода — подобные атаки приводят к срабатыванию системы защиты, что приводит к недоступности сервера
4. Флуд — Думаю тут все ясно. Большое количество ресурсоемких запросов, обращенных к серверу.
В интернете были найдены полезные команды для проверки нагрузки на сервер, а так же для анализа и определения ДДОС (DDoS) атаки.
Что делать?
Во-первых, посмотрим число процессов Апача:
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
Далее, стоит просмотреть логи всех сайтов и обратить особое внимание на самые большие из них.
Если «большой» лог найден, то его стоить проанализировать на предмет аномалий следующим образом:
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 злоумышленников.
Полезные команды:
Число процессов Apache:
ps aux | grep httpd |wc -l
Число коннектов на 80 порт:
netstat -na | grep :80 | wc -l
То же, в статусе SYN
netstat -na | grep :80 | grep syn
Пример SYN-флуда:
netstat -na | grep :80 | grep SYN | wc -l 767
Посмотреть много ли разных IP:
netstat -na | grep :80 | grep SYN | sort -u | more
На какой домен чаще всего идут запросы:
tcpdump -npi eth0 port domain
Статус Apache:
apachectl status
Посмотреть откуда IP или Domain:
whois xxx.xxx.xxx.xxx
или
jwhois xxx.xxx.xxx.xxx
С какого IP сколько запросов:
netstat -na | grep :80 | sort | uniq -c | sort -nr | more
Количество соединений с сервером:
cat /proc/net/ip_conntrack | wc -l
Вывод информации в реальном времени, IP которые соединены с сервером и какое количество соединений по каждому IP
netstat -anp |grep 'tcp\|udp' | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
Проверка нагрузки на сайт
Порой все же хочется знать кукую нагрузку потянет вновь написанный сайт, или сам хостинг. Сможет ли сайт нормально функционировать при наплыве посетителей в час пик? Ответить конечно можно (теоретически, взвесив совокупность всех ресурсов доступных сайту), но хотелось бы видеть конкретные цифры.
Для тестирования сайта на нагрузку можно использовать онлайн сервис – loadimpact.com сервис к сожалению платный, но есть и бесплатный режим тестирования, на 50 человек онлайн. Думаю этого достаточно, чтобы проверить блог или небольшой сайт на нагрузку. И если ваш сайт завалится, например вы увидите ошибку Internal Server Error или страница просто не будет открываться, значит тест завален. Идем капать конфиги apache, nginx, скрипты php и запросы к серверу sql, возможно наш вновь испеченный сайт на собственной cms не так уж и хорош, как на хотелось бы)
По мимо простого теста, сервис сохраняет результаты проверки сайта, и предоставляет специальную ссылку для просмотра статистики. это очень удобно, например тогда, когда результаты нужно показать заказчику.