Como eu preciso de um intervalo de IP em vez de 1 IP?


20

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:


22

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


Então isso não funcionará no Apache 2.2? phpMyAdmin funciona tanto em 2.2 e 2.4 e eu verifiquei apenas para ver o que este servidor estava funcionando e é 2,2
user281497

A menos que algo tenha sido suportado para habilitá-lo, nunca vi essa sintaxe nos arquivos de configuração 2.2.
precisa saber é o seguinte

@ fukawi2 - Sim, é claro que você está correto. Para user281497: Embora o 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.
Colt,

14

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").


Qual é a diferença entre 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.
Geremia 22/09

3
É porque 2a02: 4126: 2aa4 :: = 2a02: 4126: 2aa4: 0000: 0000: 0000: 0000: 0000, enquanto 2a02: 4126: 2aa4 :: / 48 corresponde a todos os endereços que começam com 2a02: 4126: 2aa4?
Geremia 22/09

1

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.


1

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 .


1
Comentários não são permitidos em nenhum lugar de uma linha de configuração; consulte httpd.apache.org/docs/2.4/configuring.html : "As linhas que começam com o caractere de hash" # "são consideradas comentários e são ignoradas. Os comentários não podem ser incluídos em a mesma linha que uma diretiva de configuração. "
Patrick Mevzek 03/04

0

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


5
Por favor, não copie e cole o trabalho de outras pessoas. Isso é chamado de plágio.
Gerald Schneider
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.