Очень часто по чьему-то злому умыслу или по случайности, ваш сервис начинает испытывать нагрузку свыше той, на которую он рассчитан. Зачастую в таких случаях ваши постоянные клиенты начинают страдать от отказа в обсушивании на вашем ресурсе. Это может проявляться как полным отсутствием ответа от вашего сервиса, так и неприемлемо медленной его работой. Данную ситуацию можно оценивать как атаку на ваш сервис. Данный вид атак называется DoS — Denial of Service(если атака производится с одного адреса), либо DDoS — Distributed Denial of Service (если атака производится с множества адресов). В данной статье мы расскажем как настроить систему которая позволит защищать ваш сервис от подобного вида атак.
1. Подтверждение атаки на сервер
При DDoS-атаке (в нашем случае на 80 порт, который открыт на ресурсах, где размещены проекты, к которым нужен доступ по http) наблюдается повышение открытых и ожидающих закрытия соединений (до нескольких тысяч или десятков тысяч), возрастает количество пакетов на сетевом интерфейсе. В случае DDoS-атаки на 80 порт увеличивается общее число процессов на сервере, количество процессов apache (httpd), сайты начинают долго отвечать или не отвечать вовсе, на сервере используется большее число ресурсов (возрастает LA сервера, использование CPU и RAM достигает 100%). В таком случае нужно проверить общее количество соединений с сервером командой netstat:
netstat -n -p | awk '{print $6}'|awk -F: '{print $1}' | sort -n | uniq -c | sort -nr | head -n10
вывод команды в случае DDoS-а будет приблизительно таким:
8580 LAST_ACK
340 ESTABLISHED
251 SYN_RECV
157 FIN_WAIT1
28 CONNECTED
7 CLOSING
6 TIME_WAIT
3 FIN_WAIT2
3 CLOSE_WAIT