Quiero restringir el acceso IP directo a mi sitio web. Encontré varias soluciones que involucran .htaccess pero ninguna funciona. También encontré una solución a través de la configuración de hosts virtuales apache que funcionaba bien hasta que instalé un certificado SSL a través de CPanel. No tengo ni idea de qué se modificó en el archivo httpd.conf, pero ahora la configuración de redireccionamiento no funciona incluso si desinstalo el certificado SSL.
Aquí está mi configuración actual de hosts virtuales:
NameVirtualHost 192.168.1.1:80 NameVirtualHost *
<VirtualHost 192.168.1.1:80>
ServerName mysite.com
ServerAlias www.mysite.com
DocumentRoot /home/rotate/public_html
ServerAdmin [email protected]
UseCanonicalName Off
## User rotate # Needed for Cpanel::ApacheConf
UserDir disabled
UserDir enabled rotate
ScriptAlias /cgi-bin/ /home/rotate/public_html/cgi-bin/
</VirtualHost>
<VirtualHost 192.168.1.1:80>
ServerName 192.168.1.1
Redirect 403 /
ErrorDocument 403 "Sorry, direct IP access not allowed."
DocumentRoot /usr/local/apache/htdocs
ServerAdmin [email protected]
UseCanonicalName Off
UserDir disabled
</VirtualHost>
<VirtualHost *>
ServerName server.mysite.com
DocumentRoot /usr/local/apache/htdocs
ServerAdmin [email protected]
UserDir disabled
</VirtualHost>
NameVirtualHost 192.168.1.1:443
<VirtualHost 192.168.1.1:443>
ServerName mysite.com
ServerAlias www.mysite.com
DocumentRoot /home/rotate/public_html
ServerAdmin [email protected]
UseCanonicalName Off
UserDir disabled
UserDir enabled rotate
ScriptAlias /cgi-bin/ /home/rotate/public_html/cgi-bin/
SSLEngine on
#SSL stuff here
</VirtualHost>
IP y nombres fueron sustituidos por genéricos. La parte "Redirect 403 /" no funciona desde que instaló el certificado SSL. Estaría agradecido si alguien puede arrojar algo de luz sobre lo que estoy haciendo mal aquí. Gracias.
fuente
Respuestas:
Y voila, la solución:
La solución fue simplemente reemplazar la IP con el nombre de dominio para todas las configuraciones de host virtual, excepto la que necesita redirigir / restringir el acceso directo a IP.
fuente
La respuesta podría ser mucho más simple.
Simplemente copie esto en la parte inferior de httpd.conf (generalmente ubicado en / etc / httpd / conf)
Entonces, solo cuando los visitantes acceden a través de www.example.com, él puede obtener acceso al servidor.
fuente
No puede deshabilitar el acceso IP directo a su servidor a través de HTTPS porque el nombre de host para su host virtual está encriptado dentro del certificado SSL.
Los clientes deben conectarse a su dirección IP, descargar el certificado, leer el contenido y luego pueden verificar que el nombre de host sea correcto.
La única otra forma es imponer SNI , pero provocará problemas a los usuarios que naveguen con versiones anteriores de Internet Explorer.
fuente
https://192.168.1.1
deben tener un error SSL (porque la URL difiere de la del certificado).<VirtualHost *:443> SSLEngine on </VirtualHost>
fuente
Creo que esto es lo que buscas
http://www.htaccess-guide.com/deny-visitors-by-ip-address/
fuente
Para agregar otra respuesta, mod_security, si vale la pena configurarlo, tiene reglas para prohibir el acceso al servidor por dirección IP.
fuente
Esto puede ser fácil si no coloca sus archivos en el directorio predeterminado / var / www / html. Simplemente cree otro directorio, digamos / web por ejemplo:
copia tus archivos y cambia el chown:
Luego cree un host virtual con la siguiente configuración:
No olvide habilitar su host virtual, por ejemplo:
fuente
En una configuración de Apcahe que tiene varios
.conf
archivos, la prioridad va al primer archivo cargado y luego al segundo ... del mismo modo. Entonces, si está en Ubuntu, los archivos se cargan en orden lexicográfico, por lo que el "primer".conf
archivo que se cargará será el000-default.conf
(de ahí el 000 en su nombre ) que reside en el/etc/apache2/sites-available/
directorio.Entonces, para evitar que se aplique cualquier otra regla, necesitamos colocar nuestra regla en la parte superior de ese primer archivo.
y solo puede anteponer la siguiente regla a ese archivo.
Probado y probado en Ubuntu 16.4 x64 versión Apache
> 2.4
Si está ejecutando una versión inferior de Apache, intente reemplazar
Require all denied
el código anterior para ...fuente
¡Escribí este código simple en PHP para restringir el acceso IP directo!
solo pegue en su archivo php y disfrute!
fuente