Estou executando o CentOS 5.5 com o estoque Apache httpd-2.2.3.
Tenho habilitado mod_status na / server-status Localização. Gostaria de permitir o acesso a esse único local da seguinte maneira:
- Negar de todos
- Permitir a partir da sub-rede 192.168.16.0/24
- Negue de um IP 192.168.16.100, que esteja dentro da sub-rede 192.168.16.0/24.
1 e 2 são fáceis. No entanto, como eu "Permitir a partir de 192.168.16.0/24", é possível negar a partir de 192.168.16.100?
Tentei adicionar uma instrução Deny para 192.168.16.100, mas ela não funciona. Aqui está a configuração relevante:
<Location /server-status>
SetHandler server-status
Order Allow,Deny
Deny from all
Deny from 192.168.16.100 # This does not deny access from 192.168.16.100
Allow from 192.168.16.0/24
</Location>
Ou:
<Location /server-status>
SetHandler server-status
Order Allow,Deny
Deny from all
Deny from 192.168.16.100 # This does not deny access from 192.168.16.100
Allow from 192.168.16.0/24
</Location>
No entanto, isso não impede o acesso a esta página específica, conforme demonstrado nos logs do Access:
www.example.org 192.168.16.100 - - [11/Mar/2011:16:01:14 -0800] "GET /server-status HTTP/1.1" 200 9966 "-" "
De acordo com o manual para mod_authz_host :
Permitem negar
Primeiro, todas as diretivas Allow são avaliadas; pelo menos um deve corresponder ou a solicitação é rejeitada. Em seguida, todas as diretivas Negar são avaliadas. Se houver correspondência, a solicitação é rejeitada
O endereço IP corresponde à diretiva Negar. Portanto, a solicitação não deve ser rejeitada?
De acordo com a tabela na página mod_authz_host, esse endereço IP deve "Corresponder a Permitir e Negar" e, portanto, a regra "Controles finais de correspondência: Negado" deve ser aplicada.
Corresponder Permitir, Negar resultado Negar, Permitir resultado Correspondência Permitir apenas Solicitação permitida Solicitação permitida Corresponder apenas Negar Pedido negado Pedido negado Sem correspondência Padrão para a segunda diretiva: Negado Padrão para a segunda diretiva: Permitido Corresponder os dois controles de correspondência Permitir e Negar final: Negado Controles de correspondência final: Permitido
fonte
Allow from 192.168.16.0/24
. Pelo que entendi a documentação, qualquer IP solicitante na rede 192.168.16.0/24 corresponderá a esta instrução Allow, a solicitação é permitida.Respostas:
Eu não testei, mas acho que você está quase lá.
Deny from all
Não é necessário. Na verdade, vai estragar tudo, porque tudo vai combinarall
e, assim, negado (e acho que o Apache está tentando ser inteligente e fazer algo estúpido). Eu sempre achei Apache doOrder
,Allow
eDeny
directivas confuso, por isso sempre visualizar as coisas em uma tabela (retirado os documentos ):Com as configurações acima:
fonte
Provavelmente, também adicionaria regras do IPTables para negar o host único na porta 80, negar a todos e permitir a sub-rede.
Você não deve ter problemas para configurar uma regra de negação a partir de um endereço específico depois de permitir a sub-rede. Apenas faça nessa ordem.
fonte
Você pode usar php? Nesse caso, adicione uma instrução php para sair / redirecionar para esse endereço IP específico
Exemplo:
$ negar = matriz ("111.111.111", "222.222.222", "333.333.333");
if (in_array ($ _SERVER ['REMOTE_ADDR'], $ negar))
{header ("local: http://www.google.com/ ");
Saída();
Referência: http://perishablepress.com/press/2007/07/03/how-to-block-ip-addresses-with-php/
fonte