Negação de Serviço, Negação de Serviço Distribuída e Botnets


3. Defesa

  • 3.1: Considerações

    De forma geral, quando se trata de ataques de negação de serviço, a defesa não é uma tarefa simples. Entre os motivos estão o número muito elevado de máquinas envolvidas em um ataque e a dificuldade de rastreamento da origem dos ataques devido à utilização de endereços IP forjados.

    Medidas preventivas podem ser muito caras ou até mesmo inviáveis, enquanto que medidas reativas podem ser trabalhosas e críticas, no sentido de que devem ser realizadas o mais rapidamente possível.

  • 3.2: Formas de defesa

    As medidas tomadas para defesa podem ser tanto preventivas como reativas. Muitas vezes, ainda é possível realizar uma combinação das duas.

    • 3.2.1: Medidas preventivas

      Medidas preventivas envolvem eliminar a possibilidade da ocorrência de ataques DoS ou possibilitar que potenciais vítimas resistam ao ataque sem que neguem serviços a seus verdadeiros clientes.

      Medidas de prevenção contra ataques envolvem basicamente o aumento da segurança do sistema. Tais medidas incluem a remoção de bugs e vulnerabilidades do sistema, atualização de protocolos, melhores práticas de programação etc. Uma máquina segura é uma máquina que não será utilizada em uma botnet e que dificilmente fornecerá brechas a um atacante.

      As medidas que previnem contra a negação de serviços podem envolver o aumento de recursos ou o policiamento de recursos.

      O aumento de recursos não é exatamente uma solução perfeita, pois apenas dificulta o sucesso de um ataque de negação de serviço, que para ser efetivo irá necessitar de um número maior de máquinas participantes. Além disso, é uma solução que pode ser muito cara. Por outro lado, esta medida preventiva pode ser bastante eficiente caso o usuário possa bancar os custos de forma a tornar o sucesso de um ataque extremamente custoso.

      Já o policiamento de recursos gerencia a utilização dos recursos por um usuário baseando-se em seu comportamento e privilégios, de forma a garantir qualidade de serviço a todos os usuários. Portanto, este método necessita de identificação e autenticação.

    • 3.2.2: Medidas reativas

      Medidas reativas agem no sentido de aliviar os efeitos de um ataque de negação de serviço. Para isto, ocorrem duas etapas fundamentais: detecção do ataque e resposta ao ataque.

      O objetivo da detecção do ataque é detectar toda tentativa de ataques DDoS o mais cedo possível e com o menor número de falso-positivos. Após a detecção, os pacotes podem ser caracterizados e então a medida adequada pode ser tomada. As medidas reativas são classificadas de acordo com o mecanismo de detecção:

      • Detecção de padrões: as assinaturas previamente conhecidas de atacantes são comparadas com as assinaturas dos pacotes que estão chegando
      • Detecção de anomalias: o comportamento atual do sistema é comparado com o modelo de comportamento em condições normais
      • Detecção híbrida: utiliza tanto detecção de padrões como detecção de anomalias

      Medidas que podem ser tomadas após a detecção do ataque envolvem filtragem de pacotes, pedido de mais banda para suportar o ataque, blackholing (que será discutido a seguir), entre outras.

  • 3.3: Técnicas de defesa atuais

    Algumas das técnicas utilizadas atualmente já não se mostram muito efetivas na defesa contra ataques de negação de serviço, já que não foram projetadas para combater algumas das formas modernas de ataque. Porém, permanecem válidas em várias situações. Algumas das mais discutidas atualmente são:

    • Blackholing

      A técnica de blackholing consiste em bloquear todo o tráfego de um determinado servidor, redirecionando o tráfego a um “buraco negro” onde será descartado. Um tipo comum de “buraco negro” é simplesmente especificar um endereço IP de um servidor que não esteja rodando ou um endereço IP que não corresponda a nenhum servidor.

      Porém, esta não é uma solução muito boa, já que todo o tráfego é descartado – inclusive o de usuários legítimos.

      Figura 8: Redirecionamento do tráfego através da técnica de blackholing

    • Roteadores

      Roteadores podem funcionar como uma primeira linha de defesa, pois possuem listas de controle de acesso que podem ser utilizadas para deter ataques de negação de serviço simples, tais como um ataque de inundação por ping, filtrando protocolos não essenciais e endereços IP inválidos.

      Porém, muitos dos ataques DDoS mais sofisticados utilizam protocolos válidos que são essenciais para a conexão com a Internet. Portanto, a filtragem de pacotes torna-se pouco efetiva.

      Além disso, muitos atacantes utilizam endereços de IP mascarados (spoofed), porém válidos. Portanto, a filtragem de endereços IP inválidos também torna-se pouco efetiva.

    • SYN Cookies

      SYN cookies é uma técnica chave na prevenção contra SYN Flood (inundação SYN), que utiliza técnicas criptográficas para proteger o sistema. Foi criada em 1996 e está presente no Linux, apesar de não ser habilitado por padrão.

      Quando o iniciador deseja estabelecer uma conexão, ele envia um pacote SYN ao ouvinte. O ouvinte então responderá ao iniciador enviando um pacote SYN+ACK contendo um cookie. Este cookie é um número de sequência inicial (Initial sequence number – ISN) calculado por técnicas criptográficas, que envolvem inclusive o endereço IP e o número da porta do iniciador. O pacote SYN original então pode ser descartado.

      Para que a conexão seja estabelecida, o iniciador deve responder ao ouvinte enviando um pacote ACK contendo o número de sequência “cookie+1”. Caso isto não aconteça, a conexão não é validada.

      Caso o iniciador de fato responda enviando um pacote ACK, o ouvinte irá subtrair 1 de seu número de sequência. A partir daí, o ouvinte irá calcular novamente o valor do cookie para verificar se o pacote recebido é um ACK válido. Se for realmente válido, o ouvinte pode obter o pacote SYN original decodificando informações contidas no pacote ACK recebido e a conexão é estabelecida normalmente.

      Com esta técnica, o sistema aloca espaço para a conexão apenas quando recebe o pacote ACK válido de resposta. Desta forma, o ataque por inundação SYN passa a ser inefetivo.

      Figura 9: Estabelecimento da conexão utilizando SYN cookie

    • Firewalls

      Um firewall pode ser um mecanismo de defesa eficiente na defesa contra ataques de inundação SYN, porém não muito eficiente na detecção de ataques DDoS mais sofisticados.

      Uma das técnicas que podem ser empregadas por um firewall é a de mascarar pacotes SYN+ACK enviados ao iniciador. Nesta técnica, o firewall funciona como um intermediário entre o iniciador e o servidor. Quando o iniciador envia um pacote SYN para iniciar a conexão, o firewall envia um pacote SYN+ACK mascarado ao iniciador, sem que o servidor tenha conhecimento. Caso o iniciador responda com um pacote ACK, o firewall então inicia uma conexão com o servidor, e este passa a atuar como um intermediário na conexão entre iniciador e servidor. Caso o iniciador não responda com um pacote ACK, o firewall simplesmente não inicia a conexão com o servidor, e os recursos não são gastos pelo servidor. Esta técnica funciona desde que o firewall possua um mecanismo de defesa como o SYN cookie.

      Porém, firewalls não possuem mecanismos de detecção de ataques baseados em anomalias.

      Quando se trata de aplicações para web, o acesso deve ser liberado para alguns protocolos, como o HTTP. Sendo assim, um atacante pode utilizar um destes protocolos permitidos para iniciar um ataque. Como o firewall não possui mecanismos de detecção por anomalia, o ataque não será detectado.

      Figura 10: Troca de pacotes através de um firewall utilizando SYN+ACK mascarado [15]