Mod_security é uma coisa boa?

9

Recentemente, fui freqüentado por mensagens de erro erradas do mod_security. Seus conjuntos de filtros cobrem explorações desatualizadas do PHP, e eu tenho que reescrever minhas coisas porque o Wordpress & Co teve bugs anos atrás.

Isso acontece com mais alguém?

O Apache mod_security bloqueia solicitações HTTP possivelmente perigosas antes que elas atinjam aplicativos (PHP especificamente). Ele usa vários conjuntos de filtros, principalmente baseados em regex.

Então, eu tenho um bom provedor de hospedagem compartilhada, tecnicamente apto e outras coisas. Mas isso me incomodou:

Na semana passada, tive que alterar o nome de um parâmetro &src=em um dos meus aplicativos porque o mod_security bloqueia QUALQUER solicitação com isso. Não procurei os detalhes, mas essa regra de filtro estava impedindo a capacidade de exploração de outro aplicativo que não uso e provavelmente nunca ouvi falar. Ainda assim, tive que reescrever meu código (mudar o nome do parâmetro geralmente é suficiente para enganar mod_security), o que não tinha nada a ver ou em comum com isso!

E hoje, um regex bobo bloqueia envios de formulários, porque eu queria enviar código de exemplo php. Dado, este é o material simples que o mod_security existe para se proteger. Mas eu não acredito que o mod_security possa detectar código seriamente ofuscado, e apenas dispara em trechos de php óbvios (e neste caso totalmente triviais).

Basicamente, estou sendo penalizado pelo mod_security porque outras pessoas lançaram aplicativos propensos a erros. (Não estou dizendo que meus aplicativos são ultra seguros - eu sou bastante cauteloso em segurança, mas não faço reivindicações hiperbólicas.)
Eu já pedi ao meu provedor para desativá-lo de qualquer maneira, os benefícios são IMO muito negativos e para meus aplicativos.


O que você acha? O mod_security faz muito sentido fora da hospedagem WP? Ou é realmente apenas um monte de listas negras de bugs de segurança passados? Quais de suas regras são realmente úteis? Existe um nível de aplicativo equivalente?

mario
fonte
11
Esse envio de código PHP é tolo, porque mesmo imprimir uma string com <?php doBadStuff(); ?>não executa essa função. (A menos que você usa evalé claro que é o mal de qualquer maneira.)
DisgruntledGoat
@DisgruntledGoat: Ou talvez eu tenha ficado muito irritada novamente por causa de dois alarmes falsos. No final, o mod_security é como um antivírus que ainda carrega assinaturas de vírus do MS-DOS. Principalmente não é útil, mas pega o scanner de exploração aleatória e ocasionaisbadstuff ()? Ou seja:}
mario

Respostas:

3

Pessoalmente, vejo mod_security como um patch. Eu o uso em alguns de nossos servidores em que não podemos controlar o código enviado (servidores de hospedagem compartilhados, por exemplo), mas isso nunca me pareceu realmente uma boa solução para mim. Com base em sua abordagem ampla e muito geral da lista negra, é mais um patch para encobrir as falhas de segurança do que uma boa política de segurança.

Também pode fornecer uma falsa sensação de segurança. O mod_security pode revelar alguns ataques comuns, mas de forma alguma pode impedir qualquer ataque. Novamente, é uma lista negra de ataques conhecidos comuns. Se você simplesmente instala o mod_security e pensa que é magicamente seguro, está terrivelmente enganado.

Encontrei uma política muito melhor para servidores gerenciados, onde minha equipe analisa todo o código que é colocado neles, combinado com muitos logs, análises de arquivos de log, sistemas de relatórios e sistemas de detecção / prevenção de intrusões (IPS). Toda vez que software de terceiros ou de código aberto é instalado (estou olhando para você , WordPress!), Mantemos um registro de onde ele foi instalado e, quando novas versões são lançadas, atualizamos todas as cópias instaladas.

Novamente, é mais provável que você encontre mod_security em um servidor de hospedagem compartilhado, como está experimentando agora. À medida que cresce, você pode mudar para um provedor de hospedagem baseado em VPS ou clod, onde obtém seu próprio ambiente gerenciado e pode controlar com mais rigor o software disponível.

Josh
fonte
É assim que me parece. Para proteger contas de hospedagem compartilhadas, o suexec + fastcgi geralmente parece mais aplicável. Em um VPS e com código totalmente personalizado, o mod_security raramente ajuda (mas faz algumas verificações de conformidade HTTP). +1 logs abrangentes.
mario
0

Na minha opinião, se você é iniciante em programação, mod_security é uma boa ideia, mas se você dedicar um tempo para escrever corretamente seus aplicativos e evitar escrever código inseguro que use eval ou concatenar seqüências GET diretamente no SQL, você deve ficar bem sem isto. O mod_security nunca irá parar os hackers sérios, e se você tiver uma boa aplicação, os scripts kiddies desistirão e passarão para o próximo aplicativo realmente fraco e inseguro por aí.

Brandon Wamboldt
fonte
Maneira de não explicar seu voto negativo>. <#
Brandon Wamboldt