Acesso Apache2 restrito à LAN local
-
05-07-2019 - |
Pergunta
Até recentemente, eu tinha um monte de sites virtuais configurados como assim:
<VirtualHost 127.0.0.1:1234>
...
Isso funciona bem para testar na minha máquina local, onde eu uso uma área de trabalho do Linux. Para testar como o MS e o Explorer exibem minhas páginas do meu laptop do Windows, mudei para
<VirtualHost *:1234>
...
Que também funciona bem, chamando o site de http: // [myLinuxServerName]: 1234 no IE do meu laptop. No entanto, quero restringir esse curinga à LAN local. Conectar qualquer IP, como 192.nnn.nnn.nnn ou 192.*.*.*Onde o curinga está acima de 403 proibidos na máquina Windows. O servidor local ainda funciona bem na minha caixa Linux:
<VirtualHost 127.0.0.1:1234 192.*.*.*:1234>
...
ou
<VirtualHost 127.0.0.1:1234 192.nnn.nnn.nnn:1234> #exact IP of laptop
...
De qualquer forma, não gosto desse curinga no segundo exemplo de configuração acima. Dints alguém?
Solução
O (s) parâmetro (s) de VirtualHost
são os endereços locais que você ouve, não os remotos.
No Apache 2.4 e mais recente, use o Require
Diretiva:
Require ip 127.0.0.0/8
Require ip 192.0.0.0/8
Se você estiver usando o Apache 2.2 ou anterior, use o authz_host configuração:
Order Allow,Deny
Allow from 127.0.0.0/8
Allow from 192.168.0.0/16
Isso também pode funcionar no Apache 2.4, mas Order
e Allow
foram depreciados.
Outras dicas
Apenas uma nota no caso de alguns noobs como eu vêm aqui :)
O servidor HTTP Apache está configurado colocando as diretivas em arquivos de configuração de texto sem formatação. O arquivo de configuração principal é geralmente chamado httpd.conf. Principais arquivos de configuração
Para a versão 2.4
As diretrizes de permitir, negar e ordenar, fornecidas por mod_access_compat, são depreciadas e desaparecerão em uma versão futura. Você deve evitar usá -los e evitar tutoriais desatualizados recomendando seu uso. Controle de acesso
Require ip 127.0.0.0/8
Require ip 192.0.0.0/8
ou (não é exatamente o mesmo)
Require ip 127.0
Require ip 192.168
Use iptables para restringir o acesso à própria máquina. O primeiro comando permitirá que o tráfego HTTP de qualquer rede no intervalo 192 (observe que acho que você precisa de 192.168 para ser realmente local, mas eu poderia errado). O segundo comando simplesmente solta pacotes de outras fontes para a porta 80
iptables -I 1 INPUT -s 192.0.0.0/8 -p tcp --dport 80 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
iptables -I 2 INPUT -p tcp --dport 80 -m state --state NEW -j DROP
Então, em seu host virtual, você pode fazer <VirtualHost *:80>