Nesse post veremos como restringir acesso a IPs no Virtual Host do Apache de modo que somente máquinas autorizadas possam ter acesso.
Um virtual host no Apache é uma configuração que permite hospedar vários sites em um único servidor. Cada virtual host tem seu próprio nome de domínio e diretório raiz, permitindo que vários sites sejam acessados através do mesmo endereço IP. É como ter várias casas em um terreno, cada uma com sua própria entrada e características únicas.
A vantagem de restringir o acesso a IPs no Virtual Host do Apache é garantir que apenas máquinas autorizadas possam acessar o servidor, aumentando a segurança e protegendo contra possíveis ataques ou acessos não autorizados.
Clique aqui e veja diversos posts falando sobre o Apache.
Usando a Diretiva “Require IP” do Apache
No Apache 2.4 em diante, podemos fazer isso usando a diretiva Require ip para permitir que apenas algumas máquinas da rede tenham acesso ou então uma sub-rede inteira.
Por exemplo, a linha abaixo diz ao Apache para liberar acesso somente aos IPs dentro da faixa 192.168.0.0/24 , ou seja, num intervalo de 192.168.0.0 até 192.168.0.255,
<VirtualHost *:80>
<Location />
Require ip 192.168.0.0/24
</Location>
...
</VirtualHost>
para darmos permissão apenas aos IPs 192.168.0.2 e 192.168.0.3 podemos fazer assim,
<VirtualHost *:80>
<Location />
Require ip 192.168.0.2 192.168.0.3
</Location>
...
</VirtualHost>
Usando a Diretiva “Require Local” do Apache
Podemos usar a diretiva Require Local do Apache dentro de um Virtual Host para concedermos acesso apenas na máquina onde o Apache está instalado,
<VirtualHost *:80>
<Location />
Require local
</Location>
...
</VirtualHost>
Require Local permite que você conceda acesso a todos os três hosts a seguir que estiverem definidos em seu vhost
- localhost,
- 127.0.0.1
- ServerAlias
Aqui, o ipv6 também conta, se ele estiver habilitado.
Em Apache 2.2
Se você estiver usando o Apache 2.2 dentro do seu host virtual, você deve adicionar a seguinte diretiva (mod_authz_host):
Order deny,allow
Deny from all
Allow from 10.0.0.1
Você pode até especificar uma sub-rede
Allow from 10.0.0
Veja mais em apache.