Ataque de negação de serviço (DDoS)

Atualmente os ataques DDoS, estão constantemente sendo mencionados nos meios de comunicação, mas, o que são esses ataques  e  Como podemos nos defender ?

Objetivos

O ataques DDoS tem por objetivo tornar os recursos de um sistema indisponíveis para seus utilizadores por um período de tempo ou permanentemente.

Em um ataque distribuído de negação de serviço um computador mestre (denominado “Master”) pode ter sob seu comando até milhares de computadores (“Zombies” – zumbis). Neste caso, as tarefas de ataque de negação de serviço são distribuídas a um “exército” de máquinas escravizadas, podendo esses ataques ser distribuidos atualmente através de sites que precisam apenas ser acessados para gerar ataques específicos em um determinado servidor.

O ataque consiste em fazer com que os Zumbis (máquinas infectadas e sob comando do Mestre) se preparem para acessar um determinado recurso em um determinado servidor em uma mesma hora de uma mesma data.

Dependendo do recurso atacado, o servidor pode chegar a reiniciar ou até mesmo ficar travado.

Vírus conhecidos criados para a distribuição de rotinas de ataque de negação de serviço incluem “Codered”, “Slammer”, “MyDoom”, que escravizam o infectado. Ferramentas conhecidas de ataques DDos incluem “Fabi” (1998), “Blitznet”, “Trin00” (jun/1999), “TFN” (ago/1999), “Stacheldraht” (set/1999), “Shaft”, “TFN2K” (dez/1999), “Trank”.

Como detectar?

As ferramentas DDoS são muito furtivas no quesito detecção. Dentre as diversaspropriedades que dificultam a sua detecção pode-se citar como mais significativa a presença de criptografia. Por outro lado, é possível modificar o código fonte de forma que as portas, senhas e valores padrões sejam alterados.

Contudo, não é impossível detectá-las. Assim, esta seção tem por objetivo apresentar alguns mecanismos que auxiliem na detecção de um eventual comprometimento da sua máquina (ou rede) que indique ela estar sendo usada em ataques DDoS. Estes mecanismos vão desde os mais convencionais até os mais modernos.

Como se previnir ?

Até o momento não existe uma “solução mágica” para evitar os ataques DDoS, o que sim é possível é aplicar certas estratégias para mitigar o ataque, este é o objetivo desta seção.

Dentre as estratêgias recomendadas pode-se considerar as seguintes:

  • Incrementar a segurança do host
    Sendo que a característica principal deste ataque é a formação de uma rede de máquinas comprometidas atuando como masters e agentes, recomenda-se fortemente aumentar o nível de segurança de suas máquinas, isto dificulta a formação da rede do ataque.
  • Instalar patches
    Sistemas usados por intrusos para executar ataques DDoS são comumente comprometidos via vulnerabilidades conhecidas. Assim, recomenda-se manter seus sistemas atualizados aplicando os patches quando necessário.
  • Aplicar filtros “anti-spoofing”
    Durante os ataques DDoS, os intrusos tentam esconder seus endereços IP verdadeiros usando o mecanismo de spoofing, que basicamente consite em forjar o endereço origem, o que dificulta a identificação da origem do ataque. Assim, se faz necessário que:

    1. Os provedores de acesso implementem filtros anti-spoofing na entrada dos roteadores, de modo que ele garanta que as redes dos seus clientes não coloquem pacotes forjados na Internet.
    2. As redes conectadas à Internet, de modo geral, implementem filtros anti-spoofing na saída dos roteadores de borda garantindo assim que eles próprios não enviem pacotes forjados na Internet.
  • Limitar banda por tipo de tráfego
    Alguns roteadores permitem limitar a banda consumida por tipo de tráfego na rede. Nos roteadores Cisco, por exemplo, isto é possível usando CAR (Commited Access Rate). No caso específico de um ataque DDoS que lança um flood de pacotes ICMP ou TCP SYN, por exemplo, você pode configurar o sistema para limitar a banda que poderá ser consumida por esse tipo de pacotes.
  • Prevenir que sua rede seja usada como “amplificadora”
    Sendo que algumas das ferramentas DDoS podem lançar ataques smurf (ou fraggle), que utilizam o mecanismo de envio de pacotes a endereços de broadcasting, recomenda-se que sejam implementadas em todas as interfaces dos roteadores diretivas que previnam o recebimento de pacotes endereçados a tais endereços. Isto evitará que sua rede seja usada como “amplificadora”. Maiores informações a respeito do ataque smurf (e do parente fraggle) podem ser encontradas em: http://users.quadrunner.com/chuegen/smurf
  • Estabelecer um plano de contingência
    Partindo da premisa que não existe sistema conectado à Internet totalmente seguro, urge que sejam considerados os efeitos da eventual indisponibilidade de algum dos sistemas e se tenha um plano de contingência apropriado, se necessário for.
  • Planejamento prévio dos procedimentos de resposta
    Um prévio planejamento e coordenação são críticos para garantir uma resposta adequada no momento que o ataque está acontecendo: tempo é crucial! Este planejamento deverá incluir necessariamente procedimentos de reação conjunta com o seu provedor de backbone.

Firewall

Parede de fogo é um dispositivo de uma rede de computadores que tem por objetivo aplicar uma política de segurança a um determinado ponto da rede. O firewall pode ser do tipo filtros de pacotes, proxy de aplicações, etc. Os firewalls são geralmente associados a redes TCP/IP.

Este dispositivo de segurança existe na forma de software e de hardware, a combinação de ambos normalmente é chamado de “appliance”. A complexidade de instalação depende do tamanho da rede, da política de segurança, da quantidade de regras que controlam o fluxo de entrada e saída de informações e do grau de segurança desejado.

Sistemas mais usados para protenção

Se o seu servidor está em um máquina que usa o sistema operacional LINUX é possível utilizar os seguintes aplicativos para tentar se previnir ou minimizar os efeitos de um ataque.

CSF – É um aplicativo que que tenta detectar os ataques e bloquei as formas mais comuns, para instalar em seu servidor via SSH use os seguintes comandos abaixo, ou acesse o site da aplicação.

http://configserver.com/cp/csf.html

rm -fv csf.tgz
wget http://www.configserver.com/free/csf.tgz
tar -xzf csf.tgz
cd csf
sh install.sh

ModSecurity – É  um firewall de código aberto de aplicações web, ele trabalha no servidor web, ou autônomo como um dispositivo de segurança de rede, podendo ser utilizado em servidores LINUX e Windows. Para instalar esse firewall você precisa ter o APACHE intalado em sua máquina, abaixo segue os comandos via SSH para a intalação, sendo possível também acessar o site oficial para mais informações.

http://www.modsecurity.org/projects/modsecurity/apache/

sudo apt-get –f install apache2
/etc/init.d/apache2 status
/etc/init.d/apache2 start

Caso os camandos acima não consiga instalar o ModSecurity, acessar o seu WHM/Cpanel e recompilar o PHP, ativando a opção mod security,  através da opção EasyApache (Apache Update).

 

CloudFlare

O CloudFlare é um site que utilize os conhecimentos de varios desenvolvedores para criar sistemas de segurança para sites de forma eficaz e integrada,  podendo detectar ataques maliciosos, como injeção de SQL e denial of service (DOS) ataques. CloudFlare fornece proteção de segurança contra todos esses tipos de ameaças e muito mais para manter seu site seguro, tendo servidores de segurança em vários pontos do Mundo.

Servidores CloudFlare no Mundo

Servidores CloudFlare
Amsterdam, NL
Ashburn, US
Atlanta, US
Chicago, US
Dallas, US
Frankfurt, DE
Hong Kong, HK
London, GB
Los Angeles, US
Miami, US
Newark, US
Paris, FR
Prague, CZ
San Jose, US
Seattle, US
Seoul, KR
Singapore, SG
Stockholm, SE
Sydney, AU
Tokyo, JP
Toronto, CA
Vienna, AT
Warsaw, PL

Otimizando o MySql

A otimização do mysql, também pode ajudara manter o seu servidor online e melhorar a sua performance mediante ataques DDoS, abaixo segue uma algumas opções para essa otimização.

Script de otimização de Banco de dados MySql  – Comandos via SSH

wget http://day32.com/MySQL/tuning-primer.sh

chmod +x ./tuning-primer.sh

./tuning-primer.sh

Otimizando a consulta de dados através do arquivo de configuração my.cnf, localizando em (/etc/mysql/ ou /etc/ ).

Edite este arquivo e insira os seguintes daddos.

[mysqld]
set-variable = max_connections=400
log-slow-queries
safe-show-database
local-infile=0
skip-networking
symbolic-links=0
max_connections = 400
key_buffer = 256M
myisam_sort_buffer_size = 64M
join_buffer_size = 2M
read_buffer_size = 2M
sort_buffer_size = 2M
read_rnd_buffer_size = 2M
thread_concurrency = 16
table_cache = 1024
thread_cache_size = 50
wait_timeout = 7200
connect_timeout = 10
tmp_table_size = 32M
max_allowed_packet = 160M
max_connect_errors = 10
query_cache_limit = 1M
query_cache_size = 32M
query_cache_type = 1

[mysqld_safe]
open_files_limit = 8192

[mysqldump]
max_allowed_packet = 16M

[myisamchk]
key_buffer = 64M

 

Se protegendo através do arquivo .Htaccess

Para se proteger de alguns ataques DDoS, também é possível inserir comandos no .Htacess, segue abaixo uma configuração a qual pode lhe proteger.

Edite o arquivo .Htaccess de seu site e insira os seguintes dados.

RewriteEngine on
#Medidas para bloquear ataques de injeção de SQL
RewriteCond %{QUERY_STRING} .*(/\*|union|select|insert|cast|set|declare|drop|update|md5|script|benchmark) [NC]
RewriteRule .* - [R=406,L]
# Bloquear uso de caracteres ilegais ou inseguro na solicitação HTTP
RewriteCond %{THE_REQUEST} ^.*(\\r|\\n|%0A|%0D).* [NC,OR]
# Bloquear uso de caracteres ilegais ou inseguro na Variável Referer da solicitação HTTP
RewriteCond %{HTTP_REFERER} ^(.*)(<|>|'|%0A|%0D|%27|%3C|%3E|%00).* [NC,OR]
#Bloquear uso de caracteres ilegais ou inseguro em qualquer cookie associado com a solicitação HTTP
RewriteCond %{HTTP_COOKIE} ^.*(<|>|'|%0A|%0D|%27|%3C|%3E|%00).* [NC,OR]
# Bloquear uso de caracteres ilegais em URI ou uso de URI malformado
RewriteCond %{REQUEST_URI} ^/(,|;|:|<|>|">|"<|/|\\\.\.\\).{0,9999}.* [NC,OR]
# Bloquear uso de Agentes de conexão vazias pelo usuário
# OBS - desativar esta regra se o site é integrado com meios de pagamento, como o PayPal
RewriteCond %{HTTP_USER_AGENT} ^$ [OR]
# Bloquear uso de caracteres ilegais ou inseguro na variável User Agent
RewriteCond %{HTTP_USER_AGENT} ^.*(<|>|'|%0A|%0D|%27|%3C|%3E|%00).* [NC,OR]
# Bloquear referência a localhost/loopback/127.0.0.1 na consulta
RewriteCond %{QUERY_STRING} ^.*(localhost|loopback|127\.0\.0\.1).* [NC,OR]
# Bloquear uso de caracteres ilegais ou inseguro na variável de seqüência de consulta
RewriteCond %{QUERY_STRING} ^.*(<|>|'|%0A|%0D|%27|%3C|%3E|%00).* [NC]

Equipe SpeedWebdesigner

Referências

http://pt.wikipedia.org/wiki/Ataque_de_nega%C3%A7%C3%A3o_de_servi%C3%A7o | http://www.rnp.br/newsgen/0003/ddos.html#ng-como
http://pt.wikipedia.org/wiki/Firewall
http://josefernandes.pt/artigos/optimizar-mysql-linux
http://security.stackexchange.com/questions/6756/how-to-patch-against-refrefs-dos-attack
https://pt-br.cloudflare.com