Servidor sob ataque DDOS - Como descobrir IPs?


20

Meu servidor está sob ataques DDOS e quero bloquear o IP que está fazendo isso, quais logs devo procurar para determinar o IP do invasor?


2
Como você determinou que o servidor está sendo atacado? Parece-me que você precisaria examinar algum tipo de tabela de sessão TCP (netstat no Windows) para fazer essa determinação e, ao fazer isso, veria os endereços IP dos hosts conectados ao seu servidor, o que faria sua pergunta discutível.
joeqwerty

Respostas:


43
tail -n 10000 yourweblog.log|cut -f 1 -d ' '|sort|uniq -c|sort -nr|more

Veja os principais endereços IP. Se algum se destacar dos outros, esses seriam os únicos a fazer firewall.

netstat -n|grep :80|cut -c 45-|cut -f 1 -d ':'|sort|uniq -c|sort -nr|more

Isso examinará as conexões atualmente ativas para verificar se há IPs conectados à porta 80. Talvez seja necessário alterar o cut -c 45-, pois o endereço IP pode não iniciar na coluna 45. Se alguém estava fazendo uma inundação de UDP para seu servidor da web, isso também seria útil.

Com a chance de que nenhum deles mostre IPs excessivamente fora do padrão, você precisaria assumir que um botnet o estava atacando e precisaria procurar padrões específicos nos logs para ver o que eles estão fazendo. Um ataque comum contra sites wordpress é:

GET /index.php? HTTP/1.0

Se você procurar nos logs de acesso do seu site, poderá fazer algo como:

cut -f 2 -d '"' yourweblog.log|cut -f 2 -d ' '|sort|uniq -c|sort -nr|more

que mostraria os URLs mais acessados. Você pode achar que eles estão acessando um script específico em vez de carregar o site inteiro.

cut -f 4 -d '"' yourweblog.log|sort|uniq -c|sort -nr|more

permitiria ver UserAgents comuns. É possível que eles estejam usando um único UserAgent em seu ataque.

O truque é encontrar algo em comum com o tráfego de ataque que não existe no tráfego normal e filtrá-lo através de iptables, mod_rewrite ou upstream com o seu host. Se você for atingido pelo Slowloris, o Apache 2.2.15 agora possui o módulo reqtimeout, que permite definir algumas configurações para melhor proteger contra o Slowloris.


Muito obrigado, eu definitivamente vou olhar para este fim de semana.
Webnet

excelente. muito útil e simplesmente ótimo .... continue assim e que Deus os abençoe. Allinonescript.com ( allinonescript.com ) Em todo o mundo, os desenvolvedores O conhecimento adquire conhecimento.
Vadivel S

Desde que você configure seu access_log corretamente: tail -n 10000 / var / log / httpd / access_log | cut -f 1 -d '' | sort | uniq -c | sort -nr | more Isso deve funcionar. Trabalhou para mim, #
dustbuster

7

FYI - Você deve tentar trabalhar com seu ISP para ver se eles podem bloqueá-lo antes de você.


4

Algumas boas dicas aqui. Eu também adicionaria isso:

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 ""}'\''

Coloque isso sob um alias (nn, por exemplo). Isso fornecerá uma perspectiva "gráfica" dos ips com conexões mais estabelecidas.

Espero que isto ajude.

Para aqueles que não conseguiram fazer isso funcionar, corrigi a sintaxe para que ela funcione no 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 ""}'

3

Meus arquivos de log favoritos para verificar ataques do DOS são / var / log / secure (no Redhat / Centos / Fedora ....) e /var/log/auth.log (no ubuntu, debian ...). Você verá tentativas de login com falha feitas a partir do IP de origem do atacante, na maioria das vezes ataques baseados em dicionário.



0

Qual distro?

Eu acho que o log está em /var/log/apache2/access.log com o Ubuntu ... Possivelmente o Debian também.

Execute updatedb como sudo e localize access.log na linha de comando.

EDIT: Acredito que isso só acontecerá se eles estiverem acessando você, solicitando páginas ou diretamente através da porta 80. Se eles estiverem acessando outras portas, você não verá as informações necessárias lá, precisará verificar e ver qual processo está em execução nessa porta e veja os logs de conexão para esse processo.


0

você pode usar o tcpdump para ver qual endereço é $ tcpdump -vv port X se suspeitar de uma porta específica


0

Se você estiver em um DOS distribuído, certamente há muito mais do que um IP para bloquear e IPs podem ser forjados, é melhor perguntar ao seu ISP, como disse o mfinni . Além disso, isso pode ser mais do que um DOS no servidor, mas sim um engodo para impedir que o ataque real seja detectado. Verifique se todos os serviços expostos estão sendo executados por software atualizado. Você também pode estar interessado em mod_dosevasive for apache.


2
Os IPs são muito difíceis de criar para ataques na web. Como uma conexão da Web válida requer um handshake de sincronização / confirmação, você terá a sorte de ter o endereço IP forjado com o número de sequência correto para que sua carga do site de ataque forjado funcione. O tráfego UDP / ICMP não possui conexão e permite pacotes forjados, mas a maioria dos hosts os bloqueia.
user6738237482

0

Primeiro você precisa determinar o tipo de DOS. Alguns ataques são muito furtivos, mas eficazes (slowloris), alguns deles são tão pesados ​​que podem derrubar um ISP (inundação ICMP de uma largura de banda maior que a sua fonte ISP).

Depois de determinar o tipo do DOS, ligue para o ISP e pergunte se eles podem filtrar o tráfego.

Vi as inundações do ICMP tão pesadas que tivemos que pedir ao ISP upstream para filtrar o IP de destino por meio de uma comunidade BGP.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.