
¿Cómo configuraría Joomla para requerir o evitar la autenticación según la dirección IP de los visitantes?
Me gustaría configurar un sitio web Joomla que requiera que los visitantes inicien sesión, a menos que visiten desde una dirección IP o subred específica.
Además, me gustaría que el inicio de sesión se base en LDAP.
Estaría alojando el sitio Joomla en mi red local y exponiéndolo a través de mi enrutador con reenvío de puertos.
Respuesta1
Me gustaría configurar un sitio web Joomla que requiera que los visitantes inicien sesión, a menos que visiten desde una dirección IP o subred específica.
Cree un host virtual para Joomla como se muestra a continuación:
<VirtualHost *:80>
ServerName joomla.yourdomain.com
ServerAdmin ...
DocumentRoot /var/www/html/joomla
ErrorLog logs/joomla.error_log
<Directory "/var/www/html/joomla">
Options ...
Order allow,deny
Allow from 192.168.1.0/24
Satisfy Any
</Directory>
</VirtualHost>
Además, me gustaría que el inicio de sesión se base en LDAP.
Puedes hacerlo usandomod_authz_ldap, algo como esto:
LoadModule authz_ldap_module modules/mod_authz_ldap.so
<IfModule mod_authz_ldap.c>
<Location /var/www/html/joomla>
AuthBasicProvider ldap
AuthzLDAPAuthoritative Off
AuthLDAPURL ldap://IP:3268/dc=domain,dc=com?sAMAccountName
AuthLDAPBindDN cn=binduser,dc=domain,dc=com
AuthLDAPBindPassword secret
AuthType Basic
AuthName "Authorization required"
require valid-user
AuthzLDAPLogLevel debug
</Location>
</IfModule>
¿La autenticación HTTPS mediante LDAP (MS-AD) es una opción?
Sí.
Respuesta2
No estoy seguro de si esto es lo que buscas, pero...
Otra opción es cambiar el archivo .htaccess para permitir el acceso por IP
<Limit GET>
Order Deny,Allow
Deny from all
Allow from 100.100.100.100
</Limit>
Opcional: puede agregar varias direcciones separándolas con comas.
100.100.100.101, 100.100.100.102
Respuesta3
La documentación de Apache para mirar esControl de acceso(la sección 'por anfitrión'), Autenticación, Autorización y Control de Acceso(la directiva "satisfacer"),mod_auth_basic, ymod_authnz_ldap. Una configuración de muestra para hacer lo que quieres es
AuthType Basic
AuthBasicProvider ldap
AuthName "Joomla"
# change the ldap attributes to what matches your environment
AuthLDAPBindDN "uid=example,ou=example,dc=example,dc=com"
AuthLDAPBindPassword example
AuthLDAPURL "ldap://example.com:port/basedn?attribute?scope?filter"
Order allow,deny
# change the ip to match your network that should not have to authenticate
Allow from 10.0.0.0/24
Satisfy any
Respuesta4
Debes configurar nginx como interfaz de proxy. Nginx puede hacer esto usando las siguientes directivas de configuración:
auth_basic "Restricted";
auth_basic_user_file htpasswd;
satisfy any;
allow 10.0.0.0/24;
allow 10.1.0.0/24;
allow 10.2.1.1;
deny all;
De esta manera, puede omitir la autenticación para las IP enumeradas explícitamente allow
y tener el cuadro de diálogo emergente de autenticación para todas las demás IP.