Acceso a Apache2 restringido a LAN local
-
05-07-2019 - |
Pregunta
Hasta hace poco, tenía un montón de sitios virtuales configurados así:
<VirtualHost 127.0.0.1:1234>
...
Esto funciona bien para probar en mi máquina local, donde uso un escritorio Linux. Para probar cómo MS y el explorador muestran mis páginas desde mi computadora portátil con Windows, cambié esto a
<VirtualHost *:1234>
...
Lo cual también funciona bien, llamando al sitio desde http: // [mylinuxservername]: 1234 en mi computadora portátil ES DECIR. Sin embargo, quiero restringir ese comodín al lan local. Conectar cualquier ip, como 192.nnn.nnn.nnn o 192. *. *. * Donde el comodín está arriba da como resultado 403 Prohibido en la máquina de Windows. El servidor local todavía funciona bien en mi caja de Linux:
<VirtualHost 127.0.0.1:1234 192.*.*.*:1234>
...
o
<VirtualHost 127.0.0.1:1234 192.nnn.nnn.nnn:1234> #exact IP of laptop
...
De todos modos, no me gusta ese comodín en el segundo ejemplo de configuración anterior. ¿Alguna pista?
Solución
Los parámetros de VirtualHost
son las direcciones locales que escuchas, no las remotas.
En Apache 2.4 y más reciente, use Requerir
directiva:
Require ip 127.0.0.0/8
Require ip 192.0.0.0/8
Si está utilizando Apache 2.2 o una versión anterior, use authz_host configuración:
Order Allow,Deny
Allow from 127.0.0.0/8
Allow from 192.168.0.0/16
Esto también puede funcionar en Apache 2.4, pero Order y
. Permitir
han sido desaprobados
Otros consejos
Solo una nota en caso de que algunos noobs como yo vengan aquí :)
El servidor HTTP Apache se configura colocando directivas en texto plano Archivos de configuración. El archivo de configuración principal suele llamarse. httpd.conf. Archivos de configuración principales
Para la versión 2.4
Las directivas Permitir, Denegar y Ordenar, proporcionadas por mod_access_compat, están en desuso y desaparecerán en una versión futura. Tú deberías evitar usándolos, y evite los tutoriales obsoletos que recomiendan su uso. Control de acceso
Require ip 127.0.0.0/8
Require ip 192.0.0.0/8
o (no es exactamente lo mismo)
Require ip 127.0
Require ip 192.168
Utilice iptables para restringir el acceso a la máquina. El primer comando permitirá el tráfico HTTP desde cualquier red en el rango 192 (tenga en cuenta que creo que necesita 192.168 para ser realmente local, pero podría equivocarme). El segundo comando simplemente elimina los paquetes de otras fuentes para el puerto 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
Luego, en su host virtual puede hacer < VirtualHost *: 80 >