O Apache pode não enviar respostas para solicitações específicas?

1

Em um esforço para fortalecer um servidor da Web voltado para o público, meu colega e eu criamos um plano que envolve fazer com que o Apache "atinja um buraco negro" em certas solicitações. Por exemplo, solicitações de phpmyadmin (que não estão em execução) ou outras tentativas maliciosas de hackers / hackers, queremos que o apache não responda.

Eu sei que o Apache pode ser feito para enviar vários erros ou responder com dados vazios usando mod_rewrite, mas eu quero enviá-los o mínimo possível, então idealmente ... Nada.

    
por David Wilkins 06.03.2014 / 20:12

2 respostas

3

Sites grandes que precisam proteger seus aplicativos usam algo chamado de Network IDS (Intrusion Detection System), também conhecido como IPS (Intrusion Prevention System), que pode rejeitar pacotes com base em determinados critérios (IP de origem, comportamento, impressão digital, etc.) Muitos IDSs permitem que você solte um pacote no chão (por exemplo, sem resposta), encerre uma sessão TCP / UDP imediatamente, adicione você a uma lista negra, direcione a sessão para um honeypot, etc. Este tópico pode ser extremamente complicado e muito interessante: a Cisco e outros vendem aparelhos caros para isso, alguns administradores de segurança gastam sua carreira fazendo isso, etc. Sites grandes como Facebook, Twitter e Google têm IDSs extremamente complicados que fazem coisas muito interessantes.

Um IDS é um dispositivo no nível da rede, não no nível do aplicativo. Um IDS no nível do aplicativo ainda está sujeito a vários outros ataques, como DDOS, TCP & Ataques de nível IP, etc.

No entanto, nem todos podem implementar um IDS de rede. No nível do Apache, muitas pessoas usam o mod_security como um IDS em nível de aplicativo. Por padrão, o mod_security já vem com a capacidade de proteger um site de vários ataques comuns e pode ser personalizado para fazer coisas específicas que você deseja. O mod_security pode ser executado no 'Modo permissivo', no qual ele avisará sobre ataques e imprimirá o que ele acha que deveria fazer, e 'modo de bloqueio', no qual bloqueia ativamente os ataques percebidos. De seu FAQ:

link

ModSecurity™is an open source, free web application firewall (WAF) Apache module. With over 70% of all attacks now carried out over the web application level, organizations need all the help they can get in making their systems secure. WAFs are deployed to establish an external security layer that increases security, detects and prevents attacks before they reach web applications. It provides protection from a range of attacks against web applications and allows for HTTP traffic monitoring and real-time analysis with little or no changes to existing infrastructure.

Eliminar uma sessão nesse nível na pilha OSI é um pouco desajeitado, mas algumas pessoas fazem algo próximo. Consulte Como eliminar todas as solicitações usando mod_security

mod_security nem sempre é uma perspectiva fácil, mas o mod_rewrite também pode ficar muito complicado. O mod_security tem muita documentação e uma comunidade experiente de usuários para usar.

    
por 06.03.2014 / 20:29
1

O que você está tentando alcançar aqui? Inconvenientes pessoas que podem estar atacando seu servidor ou proteger seu servidor? Os 2 não são compatíveis.

O Apache não pode interferir com a pilha de rede para não fazer qualquer resposta; Isso significa que você precisa manter a conexão aberta e isso significa que você manteve artificialmente um processo girando por muito mais tempo do que o necessário. Isso, então, torna-se um recurso realmente eficaz para qualquer pessoa que queira executar um DOS do seu site - eles só o acertam com 500 ou mais pedidos de phpmyadmin e cada slot do seu servidor está amarrado.

Você poderia redirecioná-los para um endereço de buraco negro - mas, então, você tem a despesa de manter um endereço IP estático que não faz nada.

Além disso, você acredita que os script kiddies sabem como configurar um tempo limite curto em seus clientes? Você só derrotou uma única solicitação implementando isso.

Uma solução melhor é interceptar e registrar essas solicitações e usar o log (ou apenas filtrar seu error_log) para alimentar o fail2ban. Dessa forma, você pode implementar um bloco no firewall que os manterá fora antes que eles possam mapear o software que você instalou.

    
por 07.03.2014 / 00:17