вторник, 19 февраля 2019 г.

Аутентификация Kerberos на коробке Bitrix24

You're welcome!

1. Чтобы вырубить NTLM, встроенный в Б24, необходимо переименовать файлы:
ntlm_bitrix24.conf
mod_ntlm.conf
2. Настроить Kerberos:
для настройки kerberos выписан новый keytab на Windows-контроллере домена на учетную запись компа bitrix24$:
ktpass -princ HTTP/bitrix24.bulygin.lan@BULYGIN.LAN -mapuser bitrix24$@BULYGIN.LAN -crypto all -ptype KRB5_NT_SRV_HST /pass ПАРОЛЬ -out d:\krb5.keytab

3. Переписываем получившийся файл из Винды d:\krb5.keytab в Линух  /etc/krb5.keytab

Содержимое krb5.conf:
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
[libdefaults]
kdc_timesync = 5
dns_lookup_realm = false
dns_lookup_kdc = false
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true
proxiable = true
rdns = false
default_realm =
BULYGIN.LAN
default_ccache_name = KEYRING:persistent:%{uid}
[appdefaults]
autologin = true
forward = true
forwardable = true
encrypt = true
[realms]
BULYGIN.LAN = {
kdc =
dc1.bulygin.lan
admin_server =
dc1.bulygin.lan
default_domain = BULYGIN.LAN
#auth_to_local = RULE:[1:$1@$0](.+.+$)s/.+$//
}
[domain_realm]
.bulygin.lan = BULYGIN.LAN
bulygin.lanBULYGIN.LAN


4. Добавить файлы:
mod_kerberos.conf с текстом:
# Ansible managed
# create virtual hosts for NTLM
<IfModule !auth_kerb_module.c>
LoadModule auth_kerb_module modules/mod_auth_kerb.so
</IfModule>

Listen 8891

<IfModule !ssl_module.c>
LoadModule ssl_module modules/mod_ssl.so
        # httpd 2.4
    LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
SSLSessionCache shmcb:/var/cache/httpd/ssl/scache(512000)

    
SSLPassPhraseDialog builtin
SSLSessionCacheTimeout 300
SSLRandomSeed startup file:/dev/urandom  256
SSLRandomSeed connect builtin
SSLCryptoDevice builtin
    SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5
    SSLProtocol All -SSLv2 -SSLv3
</IfModule>

и kerberos_bitrix24.conf с текстом:
# Ansible managed
# create virtual hosts for NTLM 
# site: default
#
<VirtualHost *:8891>
ServerAdmin webmaster@localhost
ServerName bitrix24
ServerAlias *.bitrix24
DocumentRoot /home/bitrix/www
KeepAlive On
  
# Possible values include: debug, info, notice, warn, error, crit, alert, emerg.
LogLevel warn
ErrorLog logs/default_error_log
  #CustomLog logs/default_access_log combined

SSLEngine on
SSLProtocol all -SSLv2
SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW
SSLCertificateFile /etc/nginx/certs/default/cert.crt
SSLCertificateKeyFile /etc/nginx/certs/default/cert.key
SSLCertificateChainFile /etc/nginx/ssl/cert.chain
   
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>

    <DirectoryMatch .*\.(svn|git|hg)/.*>
    Require all denied
        </DirectoryMatch>

    <DirectoryMatch /home/bitrix/www/bitrix/(cache|managed_cache|local_cache|stack_cache)>
        AllowOverride none
        AddType text/plain php,php3,php4,php5,php6,phtml,pl,asp,aspx,cgi,dll,exe,ico,shtm,shtml,fcg,fcgi,fpl,asmx,pht
        php_value engine off
    </DirectoryMatch>

    <DirectoryMatch /home/bitrix/www/(upload|bitrix/images|bitrix/tmp)>
        AllowOverride none
        AddType text/plain php,php3,php4,php5,php6,phtml,pl,asp,aspx,cgi,dll,exe,ico,shtm,shtml,fcg,fcgi,fpl,asmx,pht
        php_value engine off
    </DirectoryMatch>

<Directory /home/bitrix/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
DirectoryIndex index.php index.html index.htm
AuthType Kerberos
AuthName "Kerberos Login" 
KrbMethodNegotiate On
#для недоменных - basic
KrbDelegateBasic On
KrbSaveCredentials On
KrbVerifyKDC Off
KrbMethodK5Passwd On
KrbAuthRealms BULYGIN.LAN
Krb5KeyTab /etc/krb5.keytab
KrbServiceName HTTP/bitrix24.bulygin.lan@BULYGIN.LAN
Require valid-user

php_admin_value session.save_path /tmp/php_sessions/www
php_admin_value upload_tmp_dir /tmp/php_upload/www
</Directory>

    <Directory /home/bitrix/www/upload/support/not_image>
        AllowOverride none
        Require all denied
            </Directory>
</VirtualHost>

Красным выделено то, что нужно исправить на своё.

5. В админке Б24 в настройке модуля AD/LDAP включить переадресацию NTLM и прописать локальные сети, для которых включаем Kerberos. Например, 192.168.1.0/24;192.168.6.0/24;192.168.8.0/24;192.168.12.0/24

6. Подключиться по SSH и в консоли перезапускаем web-сервера:
systemctl restart httpd && systemctl restart nginx

Итак, с подсети 192.168.0.0/24 доступ по аутентификации на формах, а из подсетей 192.168.1.0/24;192.168.6.0/24;192.168.8.0/24;192.168.12.0/24 - по kerberos/basic

Enjoy!

1 комментарий:

  1. Спасибо за статью, она по всей видимости единственная в рунете по kerberos и битрикс.

    ОтветитьУдалить