Como evitar o ataque de sincronização DDOS [duplicado]

1

Estou executando um site com 2 GB de RAM no centos. Usando LAMP

Todos os dias, por algumas horas (cerca de 3 a 4 horas), o apache diminui. Demora muito para carregar uma página e, na maioria das vezes, mostra Tempo limite de solicitação. Mas outras portas estão bem como o ftp também o 7778, já que estou usando o kloxo.

Eu não sou um especialista em servidores, mas pesquisei e pesquisei um pouco e acho que isso é um ataque de sincronização de ddos.

Eu usei netstat -n | grep :80 | grep SYN |wc -l para procurar conexões syn

Durante o ataque, mostra um número superior a 3000. Mas quando meu site volta ao normal, mostra um número em torno de 100.

Então, por favor me ajude. e me diga como parar isso isso está realmente me irritando.

    
por Suman Biswas 09.08.2012 / 21:57

4 respostas

8

A primeira coisa a fazer é determinar o que está acontecendo. Tudo o que você sabe no momento é que o Apache não responde às vezes e, durante esses momentos, você tem muitas conexões TCP semiabertas. Você não sabe se as conexões TCP são a causa do problema ou apenas um sintoma .

Você tem algum sistema de monitoramento de desempenho como Cacti, Munin, Zabbix, Observium ou qualquer outra opção neste espaço? Se não, pegue um deles agora. Configure-os para representar graficamente todas as coisas normais, como uso de memória, média de carga, uso da CPU, espaço livre em disco, IOPS, uso de rede, etc, mas também pode ser útil adicionar métricas personalizadas, como solicitações por minuto ou estados TCP. Além disso, adicione os modelos que correspondam aos serviços que você está usando, como Apache, MySQL, memcached, etc.

Ao analisar os gráficos que essas ferramentas produzem, você deve poder encontrar o recurso que está atingindo 100% durante esses tempos de inatividade. A partir daí, você pode rastrear a cadeia de causa e efeito até o gatilho inicial que causou o problema. É possível que o recurso que está sendo esgotado não esteja sendo medido por você e possa nem estar sob seu controle.

Como um palpite, se suas conexões estiverem no estado SYN_SENT , você provavelmente está usando a API de outra pessoa por meio de HTTP e elas estão inativas ou bloquearam você temporariamente. Se eles estiverem no estado SYN_RECV , pode haver um problema de firewall que esteja impedindo que as respostas SYN-ACK sejam recebidas pelo cliente ou que a resposta do cliente seja recebida por você. Também poderia ser a inundação SYN que você sugeriu.

Durante um verdadeiro SYN-flood, você verá a largura de banda e o número de pacotes por segundo aumentando significativamente. Use tcpdump -w packet-capture-file.cap ou -j LOG no iptables para registrar esses pacotes e ver se você consegue identificar um padrão. Talvez o endereço de origem seja sempre o mesmo, talvez esteja sempre em um intervalo pequeno, talvez um sinalizador de TCP estranho (como URG ou PSH) esteja definido. Se isso falhar, veja se os endereços IP envolvidos fazem várias tentativas de conexão. Em caso afirmativo, você pode adicioná-los a uma regra de DROP em seu firewall para que seu sistema operacional não tenha que lidar com eles. Dependendo de quantos endereços IP diferentes existem, você pode precisar dividir suas regras em várias tabelas para reduzir o tamanho da lista que o iptables deve verificar.

O DDoS pode ser grande o suficiente para esgotar a largura de banda do seu provedor de hospedagem. Se esse for o caso, eles provavelmente precisarão ir a uma empresa de mitigação de DDoS dedicada. Esses caras usam DNS ou BGP para direcionar seu tráfego para eles, filtrar o tráfego de DDoS e enviar o restante para você. Eles geralmente não são baratos e você terá que pesar o custo do tempo de inatividade contra o custo do serviço de mitigação. Também existem serviços como o CloudFlare que podem impedir ataques DDoS até certos limites e ter planos de preços mais acessíveis.

    
por 09.08.2012 / 23:38
1

Eles são distribuídos ou provenientes de um único IP? De qualquer forma, eu recomendaria um firewall como o csf para restringir os ataques de sincronização TCP.

    
por 09.08.2012 / 22:07
0

Uma solução rápida e barata é:

  • Reduza o tempo limite no tempo limite dos pacotes syn

    Edite o /etc/sysctl.conf

net.netfilter.nf_conntrack_tcp_timeout_syn_recv=30

  • Limite a quantidade de pacotes de sincronização que você pode receber

crie novas cadeias

iptables -N syn-flood

limita os pacotes de entrada

iptables -A syn-flood -m limit --limit 10/second --limit-burst 50 -j RETURN

registra ataques

iptables -A syn-flood -j LOG --log-prefix "SYN flood: "

silenciosamente abandone o resto

iptables -A syn-flood -j DROP

Fonte

    
por 09.08.2012 / 23:50
0

Quem se importa em rastrear os IPs? 90% dos ataques DoS / DDoS serão intermediados por proxy! Você precisa configurar um período de lista negra com base no "tráfego malicioso".

http://perishablepress.com/eight-ways-to-blacklist-with-apaches-mod_rewrite/

Em um ataque SYN, seu sistema é inundado com uma série de pacotes SYN (obviamente). Cada pacote faz com que seu sistema emita uma resposta SYN-ACK. Seu sistema aguarda por um ACK que segue o SYN + ACK (handshake de 3 vias). Como o ataque nunca envia de volta um ACK, seus recursos do sistema são consumidos. Quando a fila estiver cheia, seu sistema ignorará as solicitações recebidas de usuários legítimos para serviços (http / mail, etc). Por isso, é necessário parar este ataque com o iptables, ipfw, etc.

Em relação a uma regra do iptables:

iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP

    
por 10.08.2012 / 00:40

Tags