Como eu poderia excluir mod_security de subdiretórios no Amazon EC2 com LAMP?

2

Eu nunca ativei antes do mod_security ou edite hosts virtuais, então é um novo desafio para mim, tentei seguir este tutorial mas parece que a maioria dos tutoriais da web não está refletindo a minha situação. Eu tenho uma instância do EC2 executando o Apache 2 no Ubuntu 14.04, eu não tenho um arquivo chamado httpd, porém dentro da minha pasta /etc/apache2/sites-available eu tenho o arquivo chamado 000-default.conf :

<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html

        <IfModule security2_module>
            SecRuleEngine Off
        </IfModule>
        <Directory /var/www >
            AllowOverride All
        </Directory>
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

e este é o meu security2.conf localizado em /etc/apache2/mods-available

<IfModule security2_module>
        SecDataDir /var/cache/modsecurity
        Include "/usr/share/modsecurity-crs/*.conf"
        Include "/usr/share/modsecurity-crs/activated_rules/*.conf"
        IncludeOptional /etc/modsecurity/*.conf
</IfModule>

Eu desejo habilitar o mod_security mas agora eu não posso porque dentro da pasta ../html (a pasta do meu site) eu tenho o Wordpress e o phpMyAdmin (então se eu remover o SecRuleEngine Off, ele me dá permissão de erro negada em todos o site). No tutorial mencionado acima, sei que preciso usar esse código para excluir um diretório específico:

<Directory "/var/www/wp-admin">
    <IfModule security2_module>
        SecRuleEngine Off
    </IfModule>
</Directory>

O que eu não entendo é: eu preciso criar um novo arquivo .conf dentro de /sites-available ? Por exemplo, como ele deve se parecer com o arquivo .conf para excluir o diretório phpMyAdmin localizado em /usr/share/phpmyadmin ?

    
por dr house 19.02.2015 / 12:55

1 resposta

3

[Isso foi muito longo para um comentário, então o postou como resposta. Espero que ajude]

Parece que você não configurou os Hosts Virtuais. Em vez disso, basta um DocumentRoot principal e você chama sites com o link link .

Digamos que seus dois hosts virtuais: Um em / var / www / html / wordpress e o outro / var / www / html / phpmyadmin.
Se você precisa desabilitar para o phpmyadmin, então sob a configuração do host virtual do phpmyadmin, adicione a linha que você declarou na segunda metade:

<VirtualHost *:80>
  ..
  ..
  ..
    <Directory "/var/www/html/phpmyadmin">
      <IfModule security2_module>
          SecRuleEngine Off
      </IfModule>
    </Directory>
  ..
  ..
</VirtualHost>

E para desativá-lo para o admin do wordpress, adicione o mesmo sob a configuração do host virtual do site wordpress: ie.

<virtualhost *:80>
  ..
  ..
  ..
     <Directory "/var/www/html/wordpress/wp-admin">
      <IfModule security2_module>
         SecRuleEngine Off
      </IfModule>
    </Directory>
  ..
  ..
</VirtualHost>

Fonte: link

Se não houver configuração do VirtualHost, você pode tentar adicionar a diretiva: <Directory>..</Directory> para o phpmyadmin e o wp-admin no arquivo de configuração mod_security: '/etc/apache2/mods-available/security2.conf'

Teste a sintaxe com apachectl -t antes de recarregá-la.

    
por 20.02.2015 / 02:57