Рівень 1: простий повільний DOS
Для знаходження ip-адреси зловмисника повільного періоду я використовую такий командний рядок:
netstat -ntu -4 -6 | awk '/^tcp/{ print $5 }' | sed -r 's/:[0-9]+$//' | sort | uniq -c | sort -n
Це дасть вам кількість активних з'єднань для кожного підключеного IP-адреси
Якщо ви перебуваєте під простою атакою DOS, дитина з одним або кількома IP-адресами, той, який має 50-100 з'єднань (або більше), швидше за все, є зловмисником, який ви можете скинути.
Це для того, щоб виявити та скинути (за допомогою iptables або бажаного hlfw) їх "реального часу", якщо ви підключені до сервера під час атаки.
Додавання часу обробки (аргумент% D або% T) у ваші журнали apache також, ймовірно, може допомогти виявити атаки повільних темпів "посмертного" шляхом аналізу журналів, якщо ви не маєте цю інформацію у своїх журналах, ви не зможете знайти щось цікаве . Див. Http://httpd.apache.org/docs/current/mod/mod_log_config.html для конфігурації журналу.
Рівень 2: реальна велика повільна DDOS
netstat (використовувати оновлення netstat для оновлення) все ще може допомогти вам побачити, що деякі IP-адреси просто завжди підключені
Щоб боротися з slowloris, на apache встановіть модулі reqtimeout і налаштуйте його, наприклад:
http://pastebin.com/3BNNwfyb
Після цього, кожен 408, який ви бачите в access_log, на 99.999% впевнений, що ip зловмисника ip.
Використовуючи модуль apache reqtimeout, ви можете легко протистояти тисячам ips та тисячам пакетів / секунду на гідному спеціалізованому сервері
Iptables також можуть трохи допомогти з чимось на зразок:
iptables -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 100 -j DROP