Minhas alterações de IP fazem uma classe D diferente, então eu quero definir um intervalo:
123.123.123.xxx em que o último segmento pode ser de 0 a 255.
No momento, o Apache diz:
<RequireAny>
Require ip 127.0.0.1
Require ip ::1
</RequireAny>
Minhas alterações de IP fazem uma classe D diferente, então eu quero definir um intervalo:
123.123.123.xxx em que o último segmento pode ser de 0 a 255.
No momento, o Apache diz:
<RequireAny>
Require ip 127.0.0.1
Require ip ::1
</RequireAny>
Respostas:
Primeiramente, vou assumir que você quer dizer Apache 2.4, apesar da tag "apache-2.2", já que a sintaxe que você postou é da 2.4.
Na documentação do Apache:
ip.address é um endereço IP, um endereço IP parcial, um par de rede / máscara de rede ou uma especificação de rede / nnn CIDR.
Eu suponho que você quer dizer que deseja permitir um / 24, já que os endereços de classe D são multicast e a rede de classe morreu nos anos 90. Para permitir um / 24, você pode usar qualquer um dos seguintes:
Require ip 123.123.123
Require ip 123.123.123.0/255.255.255.0
Require ip 123.123.123.0/24
Pessoalmente, acho que o último é menos ambíguo que o primeiro e mais fácil de ler que o segundo.
Você pode achar útil esta seção da documentação: http://httpd.apache.org/docs/2.4/howto/access.html#host
Requiresuporte seja limitado no Apache 2.2, o Apache 2.2 não suporta Require ipou <RequireAny>. Conforme observado na Visão geral dos novos recursos do Apache HTTP Server 2.4 , "A lógica de autorização avançada agora pode ser especificada usando a Requirediretiva e as diretivas de contêiner relacionadas, como <RequireAll>". Os primeiros estão entre as melhorias adicionadas ao Apache 2.4.
No Apache 2.2 e abaixo, você poderia trabalhar com:
Order deny,allow
Deny from all
Allow from 24.18 # allow access from home
Allow from 162.12 # allow access from work
no seu .htacess, diretamente no nível básico (não dentro de nenhum <directive>).
A partir do Apache 2.4 e superior, aqui está:
<RequireAny>
#IPv4 range at my work
Require ip 207.100
#IPv4 range I usually get through my mobile provider
Require ip 29.11
#IPv6 from home
Require ip 2a02:4126:2aa4::/48
</RequireAny>
(todos os números ficcionais, não se preocupe ;-).
Estou usando isso há muitos anos, para proteger minhas pastas de back-end contra 99% dos usuários em potencial. (Funcionando muito bem, a menos que você seja um ávido blogueiro enquanto viaja. Se você é um usuário do Gmail: "última atividade da conta", o link na parte inferior é uma maneira confortável de descobrir seus próprios "hábitos de IP").
Require ip 2a02:4126:2aa4::/48e Require ip 2a02:4126:2aa4::? Ambos não produzem erros de sintaxe para mim, mas apenas o anterior funciona.
Observando que agora você confirmou o uso do Apache 2.2 , o Apache 2.2 não suporta Require ipou <RequireAny>. Conforme observado na Visão geral dos novos recursos do Apache HTTP Server 2.4 , "A lógica de autorização avançada agora pode ser especificada usando a Requirediretiva e as diretivas de contêiner relacionadas, como <RequireAll>". Os primeiros estão entre as melhorias adicionadas ao Apache 2.4.
Para lidar com isso no Apache 2.2, você provavelmente precisará fazer algo como:
Order allow,deny
Allow from 123.123.123
que obterá todo o intervalo especificado.
Nota: Estou deixando isso aqui, pois outros podem se beneficiar; não é uma resposta direta à pergunta.
Por exemplo:
Exigir ip 192.168.100.0/22
funciona, enquanto
Exigir ip 192.168.100.0/22 #localnetwork
falha!
Reiniciando saídas httpd:
O trabalho para httpd.service falhou porque o processo de controle saiu com o código de erro. Consulte "status do systemctl httpd.service" e "journalctl -xe" para obter detalhes.
Portanto, parece que nenhum comentário é permitido nessa linha .
A diretiva Exigir do Apache é usada durante a fase de autorização para garantir que um usuário tenha permissão ou acesso negado a um recurso. mod_authz_host estende os tipos de autorização com ip, host, forward-dns e local. Outros tipos de autorização também podem ser usados, mas podem exigir que módulos de autorização adicionais sejam carregados.
Esses provedores de autorização afetam quais hosts podem acessar uma área do servidor. O acesso pode ser controlado pelo nome do host, endereço IP ou intervalo de endereços IP.
Desde a v2.4.8, as expressões suportadas no host exigem diretivas. Exigir ip
O provedor de IP permite que o acesso ao servidor seja controlado com base no endereço IP do cliente remoto. Quando Exigir endereço IP ip for especificado, a solicitação terá acesso permitido se o endereço IP corresponder.
Um endereço IP completo:
Require ip 10.1.2.3
Require ip 192.168.1.104 192.168.1.205
Um endereço IP de um host com acesso permitido
Um endereço IP parcial:
Require ip 10.1
Require ip 10 172.20 192.168.2
Os primeiros 1 a 3 bytes de um endereço IP, para restrição de sub-rede.
Um par de rede / máscara de rede:
Require ip 10.1.0.0/255.255.0.0
Uma rede abcd e uma máscara de rede wxyz Para obter mais restrições de sub-rede refinadas.
Uma especificação de rede / nnn CIDR:
Require ip 10.1.0.0/16
Semelhante ao caso anterior, exceto que a máscara de rede consiste em nnn 1 bits de ordem superior.
Observe que os últimos três exemplos acima correspondem exatamente ao mesmo conjunto de hosts.
Endereços IPv6 e sub-redes IPv6 podem ser especificados como mostrado abaixo:
Require ip 2001:db8::a00:20ff:fea7:ccea
Require ip 2001:db8:1:1::a
Require ip 2001:db8:2:1::/64
Require ip 2001:db8:3::/48
Nota: Como os endereços IP são analisados na inicialização, as expressões não são avaliadas no momento da solicitação.
Fonte: https://httpd.apache.org/docs/trunk/mod/mod_authz_host.html