Como posso solicitar por senha determinados IPs e permitir acesso livre a todos os outros usando o Apache?

5

RESOLVIDO: A ideia é que, se o visitante vier da China, ele precisa passar por uma autenticação básica. Se você tiver qualquer outro endereço IP, pode visitar o site sem ser incomodado (incluindo proxies)

//1400 rules....
SetEnvIf Remote_Addr 222.249.128.0/19 china
SetEnvIf Remote_Addr 222.249.160.0/20 china
SetEnvIf Remote_Addr 222.249.176.0/20 china
AuthType Basic
AuthName "Restricted"
AuthUserFile /www/passwd/users
Require valid-user
Order allow,deny
Allow from All
Deny from env=china
Satisfy any
    
por Moak 29.06.2009 / 13:39

3 respostas

1

Este é o código que eu uso para permitir todos os usuários, negar os que formam a China e a senha para solicitar:

AuthType Basic
AuthName "Restricted"
AuthUserFile /home/.htpasswds/.htpasswd
Require valid-user
Order Allow,Deny
Allow from all
deny from 58.14.0.0/15
....
deny from 222.249.192.0/18
satisfy any
    
por 10.08.2009 / 14:41
5

Basta adicionar "allow from myiprange" ou "allow from myinternalnetwork.com". O 'Satisfazer qualquer' exigirá um usuário válido ou a permissão de.

Veja: Autenticação, autorização e controle de acesso

    
por 29.06.2009 / 14:24
1

Geralmente, a configuração padrão tem acesso irrestrito para todos

<Directory "/home/web/htdocs">
    Order allow,deny
    Allow from all
</Directory>

Em seguida, você deve forçar a autenticação de sua área restrita, negando tudo, depois permitindo apenas essas sub-redes, seguido por quaisquer requisitos de como eles realmente seriam autenticados. Satisfazer tudo é usado para garantir que as ambas políticas de acesso sejam necessárias.

<Directory "/home/web/htdocs/restricted">
    Order Deny,Allow
    Deny from all
    Allow from 58.240.0.0/15
    Allow from 58.242.0.0/15
    Require valid-user
    Satisfy all
    AuthName "Restricted Area" 
    AuthType Basic 
    AuthUserFile /home/web/.htpasswds/.htpasswd 
    Require valid-user
</Directory>

Advertência!

Toda vez que eu acho que entendo as regras de como a autenticação funciona, eu tenho que continuar com a configuração repetidamente até obter alguma nuance correta. Use isso apenas como ponto de partida. Releia a documentação do apache em mod_auth e mod_access em particular, prestando especial atenção à diretiva Order. Aí reside a sua resposta.

Espero que isso ajude, e por favor poste o seu exemplo de trabalho se ele não corresponder a este, pois esta é uma receita muito boa para se ter em um livro de receitas do apache.

- editar -

O teste acima mostra que a área restrita é proibida para todos, exceto para aqueles do endereço IP, que devem fornecer autenticação.

Não está claro, a partir de sua pergunta, se os usuários de outros IPs precisam de acesso irrestrito a essa "área restrita" ou se são simplesmente proibidos?

    
por 29.06.2009 / 14:58