Мій сервер перебуває під DDOS-атаками, і я хочу заблокувати IP, який це робить, які журнали потрібно шукати, щоб визначити IP-адресу зловмисника?
Мій сервер перебуває під DDOS-атаками, і я хочу заблокувати IP, який це робить, які журнали потрібно шукати, щоб визначити IP-адресу зловмисника?
Відповіді:
tail -n 10000 yourweblog.log|cut -f 1 -d ' '|sort|uniq -c|sort -nr|more
Погляньте на топ IP-адреси. Якщо хтось виділиться з-поміж інших, це були б ті, хто брандмауер.
netstat -n|grep :80|cut -c 45-|cut -f 1 -d ':'|sort|uniq -c|sort -nr|more
У цьому розділі перегляньте активні підключення, щоб побачити, чи є якісь IP-адреси, що підключаються до порту 80. Можливо, вам доведеться змінити cut -c 45-, оскільки IP-адреса може не починатись із стовпця 45. Якщо хтось робив потоп UDP до ваш веб-сервер, це також підніме його.
Швидше за все, що жоден із них не показує жодних IP-адрес, які надмірно перевищують норму, вам слід припустити, що у вас нападає ботнет, і вам потрібно буде шукати певні шаблони в журналах, щоб побачити, що вони роблять. Поширена атака на сайти Wordpress:
GET /index.php? HTTP/1.0
Якщо ви переглянете журнали доступу для свого веб-сайту, ви можете зробити щось на кшталт:
cut -f 2 -d '"' yourweblog.log|cut -f 2 -d ' '|sort|uniq -c|sort -nr|more
яка б відображала найпоширеніші URL-адреси. Ви можете виявити, що вони потрапляють на певний сценарій, а не завантажують весь сайт.
cut -f 4 -d '"' yourweblog.log|sort|uniq -c|sort -nr|more
дозволить вам бачити звичайні UserAgents. Цілком можливо, що вони використовують один UserAgent в атаці.
Трюк полягає в тому, щоб знайти щось спільне з атакою трафіку, який не існує у вашому звичайному трафіку, а потім відфільтрувати його через iptables, mod_rewrite або вище за допомогою веб-хостингу. Якщо ви потрапили під удар Slowloris, Apache 2.2.15 тепер має модуль reqtimeout, який дозволяє налаштувати деякі параметри для кращого захисту від Slowloris.
Тут є кілька хороших порад. Я також додам це:
netstat -an | grep ESTABLISHED | awk '\''{print $5}'\'' | awk -F: '\''{print $1}'\'' | sort | uniq -c | awk '\''{ printf("%s\t%s\t",$2,$1); for (i = 0; i < $1; i++) {printf("*")}; print ""}'\''
Помістіть це під псевдонімом (наприклад, nn). Це дасть вам "графічну" перспективу ips з більш встановленими з'єднаннями.
Сподіваюся, це допомагає.
Для тих, хто не зміг змусити це працювати, я виправив синтаксис, тому він працює для мене під Ubuntu:
netstat -an|grep ESTABLISHED|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|awk '{ printf("%s\t%s\t",$2,$1); for (i = 0; i < $1; i++) {printf("*")}; print ""}'
Мої улюблені файли журналів для перевірки атак DOS - це / var / log / secure (під Redhat / Centos / Fedora ....) та /var/log/auth.log (під ubuntu, debian ...). Ви побачите невдалі спроби входу, зроблені з вихідного IP-адреса зловмисника, в більшості випадків атаки на основі словника.
для захисту свого сервера я використовую Fail2Ban простий скрипт
сканує файли журналу на зразок / var / log / pwdfail або / var / log / apache / error_log та забороняє IP, що робить занадто багато збоїв у паролі. Він оновлює правила брандмауера, щоб відхилити IP-адресу.
Який дистрибутив?
Я думаю, що журнал знаходиться під /var/log/apache2/access.log з Ubuntu ... Можливо також Debian.
Запустіть updateb як sudo, а потім знайдіть access.log з командного рядка.
EDIT: Я вважаю, що це відбудеться лише в тому випадку, якщо вони вдарять вас або через запит на сторінки, або безпосередньо через порт 80. Якщо вони потрапляють в інші порти, ви не побачите потрібну інформацію там, вам потрібно буде перевірити і подивитися, який процес працює на цьому порту і перегляньте журнали підключень для цього процесу.
Якщо ви перебуваєте під розподіленим DOS, звичайно, існує набагато більше, ніж один IP-адрес для блокування, і IP-адреси можуть бути підроблені, вам краще запитати провайдера, як сказав mfinni . Крім того, це може бути більше ніж DOS проти вашого сервера, але приманка, щоб приховати реальну атаку від виявлення, тому перевірте, чи всі ваші відкриті служби виконуються за допомогою сучасного програмного забезпечення. Можливо, вас також зацікавить mod_dosevasive для apache.
Спочатку потрібно визначити тип DOS. Деякі атаки є дуже прихованими, але ефективними (slowloris), деякі з них настільки важкі, що можуть знизити ISP (потоки ICMP з пропускною здатністю більш високої, ніж ваш джерело провайдера).
Визначивши тип DOS, зателефонуйте своєму провайдеру і запитайте їх, чи можуть вони відфільтрувати трафік.
Я бачив напливи ICMP настільки сильні, що нам довелося попросити провідного провайдера відфільтрувати цільовий IP через співтовариство BGP.