5. DDoS - он пришел…
1. Не паникуем
2. Удаляем http сервер из автостарта
3. Что в top?
4. Интересные сообщение в dmesg
5. Содержимое netstat
6. Анализируем access. Log
8. HTTP Flood. Frontend
И ожидаем попавшихся ботов на default vhost
server {
listen 80;
server_name noname;
return 444;
}
Ограничиваем количество одновременных соединений с одного ip
limit_zone conlim $binary_remote_addr XXm;
limit_conn conlim XX;
9. HTTP Flood. Backend
Бюджетирование нагрузки на скриптовый бэкенд через
limit_req_zone $binary_remote_addr zone=qulim:Xm rate=Yr/s;
limit_req zone=qulim burst=Z;
10. HTTP Flood. Отфильтровать в один запрос
log_format $http_accept $http_accept_language $http_accept_encoding;
+
grep --line-buffered
=
tail -f /var/log/nginx/myserver.access_log |
grep --line-buffered
-F '*/* en-us -' |
grep --line-buffered -oE "BOINK [0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3} " | sed -u
"s/^BOINK//" | xargs -n1 ipset -A myserv
и вариации на тему из myserv.error_log по ключевому слову limiting
11. HTTP Flood. Кого фильтровать не нужно
Ваши собственные ajax скрипты (вставляем заголовки-маркеры)
Полезных ботов, например поисковики:
77.88.0.0/18 Yandex
87.250.224.0/19 Yandex
93.158.128.0/18 Yandex
213.180.192.0/19 Yandex
95.108.128.0/17 Yandex
65.52.0.0/14 Microsoft
209.85.128.0/17 Google
81.19.64.0/19 Rambler*
рамблер - это телеком, и там иногда живут боты.
12. Conntrack abuse
ip_conntrack: table full, dropping packet ?
Conntrack хранит соединения в hashtable и небесплатен.
При больших размерах таблицы можно:
net.ipv4.netfilter.ip_conntrack_tcp_timeout_*
но проще выключить:
iptables -t RAW -A PREROUTING -d $PUBLISHED_IP -j NOTRACK
iptables -t RAW -A OUTPUT -d $PUBLISHED_IP -j NOTRACK
13. Большой обьем отфильрованых ботов?
ipset
его чудесные b-tree для плохих ботов
ipset -N myserv iptree --timeout XX
ipset -A myserv $OFFENDING_IP
и
-N goodbots nethash --hashsize 512 --probes 4 --resize 50
для хороших
16. Домашнее задание
1. Настроенные nginx/ipset на сервере
2. Выключенный conntrack
3. Выделенный ip для публикуемых сервисов
4. Представление о связности хостера