Мой сервер подвергается 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). Это даст вам "графическое" представление о IP-адресах с более установленными соединениями.
Надеюсь это поможет.
Для тех, кто не мог заставить это работать, я исправил синтаксис, поэтому он работает для меня под 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-адреса злоумышленника, в большинстве случаев атаки на основе словаря.
Какой дистрибутив?
Я думаю, что журнал находится в /var/log/apache2/access.log с Ubuntu ... Возможно, также Debian.
Запустите updatedb как sudo, затем найдите access.log из командной строки.
РЕДАКТИРОВАТЬ: Я считаю, что это произойдет только в том случае, если они будут атаковать вас, запрашивая страницы или напрямую через порт 80. Если они попадают в другие порты, вы не увидите там нужную информацию, вам нужно будет проверить и посмотреть, какой процесс работает на этом порту и просмотрите журналы подключений для этого процесса.
вы можете использовать tcpdump, чтобы узнать, какой это адрес $ tcpdump -vv port X, если вы подозреваете конкретный порт
Если вы работаете в распределенной DOS, то, безусловно, есть гораздо больше, чем один IP-адрес для блокировки, и IP-адреса могут быть подделаны, вам лучше спросить своего интернет-провайдера mfinni сказал. Кроме того, это может быть больше, чем DOS против вашего сервера, но приманка, чтобы скрыть настоящую атаку от обнаружения, поэтому убедитесь, что все ваши открытые службы запускаются с помощью новейшего программного обеспечения. Вас также может заинтересовать mod_dosevasive для apache.
для защиты моего сервера я использую Fail2Ban простой сценарий
сканирует файлы журналов, такие как / var / log / pwdfail или / var / log / apache / error_log, и блокирует IP-адреса, которые приводят к слишком большому количеству сбоев пароля. Он обновляет правила брандмауэра, чтобы отклонить IP-адрес.
Для начала нужно определить тип DOS. Некоторые атаки очень скрытны, но эффективны (slowloris), некоторые из них настолько сильны, что могут вывести из строя интернет-провайдера (ICMP-флуд из более высокой пропускной способности, чем у вашего провайдера).
После определения типа DOS позвоните своему провайдеру и спросите его, могут ли они отфильтровать трафик.
Я видел настолько сильные ICMP-наводнения, что нам приходилось просить вышестоящего провайдера отфильтровать IP-адрес назначения через сообщество BGP.