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?
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?
Respostas:
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.
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 ""}'
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.
para proteger meu servidor, uso Fail2Ban um script simples
varre arquivos de log como / var / log / pwdfail ou / var / log / apache / error_log e bane o IP que causa muitas falhas de senha. Ele atualiza as regras de firewall para rejeitar o endereço IP.
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.
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.
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.