Как мне настроить Joomla на требование или обход аутентификации на основе IP-адреса посетителей?
Я хотел бы настроить веб-сайт Joomla, на котором посетители должны входить в систему, если они не заходят с определенного IP-адреса или подсети.
Кроме того, я хотел бы, чтобы логин был основан на LDAP.
Я бы разместил сайт Joomla в своей локальной сети и выставлял его через маршрутизатор с перенаправлением портов.
Я хотел бы настроить веб-сайт Joomla, на котором посетители должны входить в систему, если они не заходят с определенного IP-адреса или подсети.
Создайте виртуальный хост для Joomla, как показано ниже:
<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>
Кроме того, я хотел бы, чтобы логин был основан на LDAP.
Вы можете сделать это, используя mod_authz_ldap, что-то вроде этого:
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>
Можно ли использовать HTTPS-аутентификацию с использованием LDAP (MS-AD)?
Да.
Я не уверен, что это то, что вам нужно, но ...
Другой вариант - изменить файл .htaccess, чтобы разрешить доступ по IP.
<Limit GET>
Order Deny,Allow
Deny from all
Allow from 100.100.100.100
</Limit>
Необязательно: вы можете добавить несколько адресов, разделив их запятыми.
100.100.100.101, 100.100.100.102
Документация Apache, на которую стоит обратить внимание: Контроль доступа (раздел "по хостам"), Аутентификация, авторизация и контроль доступа (директива "удовлетворения"), mod_auth_basic, и mod_authnz_ldap. Пример конфигурации для того, что вы хотите:
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
Возможно, вы захотите использовать .htaccess, чтобы просто поместить туда имя пользователя / пароль, поэтому, если у них нет внешнего пароля, они вообще не смогут получить доступ к веб-сайту.
Вы должны настроить nginx в качестве прокси-интерфейса. Nginx может сделать это, используя следующие директивы конфигурации:
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;
Таким образом, вы можете обойти аутентификацию для IP-адресов, явно указанных в allow
и иметь всплывающее диалоговое окно авторизации для всех остальных IP-адресов.