Ocultando um Auth-Realm HTTP enviando 404 para IPs desconhecidos?

1

Eu tenho um Apache (2.2) servindo um aplicativo da web em example.com . Esse aplicativo da web tem uma página de depuração acessível por example.com/debug . /debug está atualmente protegido por uma autenticação básica HTTP. Como há apenas uma base de usuários muito pequena que tem acesso à página de depuração, eu gostaria de ocultá-la com base no endereço IP e retornar 404 para clientes que não acessam de nossa VPN.

A exibição de um 404 com base no endereço IP é fácil e está descrita no link . Mas assim que eu adiciono autenticação, os usuários veem um 401 em vez de um 404 .

Basicamente, o que eu preciso é:

if ($REMOTE_ADDR ~ 10.11.12.*):
  do_basic_auth (aka return 401)
else:
  return 404

UPDATE Isso funciona:

<VirtualHost ...>
...
SetEnvIf REMOTE_ADDR 10.128.0.* HAS_debug=1
SetEnvIf REMOTE_ADDR 10.128.1.* HAS_debug=1
SetEnvIf REMOTE_ADDR 10.128.2.* HAS_debug=1

RewriteEngine On
RewriteCond %{ENV:HAS_debug} !=1
RewriteRule ^/debug($|/) - [R=404,L]

<Location /debug>
    AuthType Basic
    AuthName "hidden-debug"
    AuthUserFile ...
    Require valid-user
</Location>
</VirtualHost>

A parte crucial foi reescrever fora do Location .

    
por zhenech 06.11.2013 / 12:15

1 resposta

2

Se você tem / não se importa em ativar o mod_rewrite, pode ocultar o diretório de IPs desconhecidos reescrevendo solicitações para o diretório de depuração (em um .htaccess no diretório pai) para retornar um 404 se o IP for desconhecido e deixe uma autenticação básica padrão .htaccess em seu diretório debug para autenticar usuários que o fazem tão longe.

RewriteEngine on
RewriteCond %{REMOTE_ADDR} !=<vpn ip>
RewriteRule ^debug($|/) - [L,R=404]

(Este exemplo foi retirado diretamente de Retornando o código 404 para tentativas não autorizadas quando eu estava procurando a sintaxe exata que você precisa)

    
por 06.11.2013 / 15:52