1С, авторизация через AD

/ Просмотров: 11315
1С, авторизация через AD

Задача: Настроить 1С сервер установленный на Linux таким образом, чтобы авторизация пользователей осуществлялась через контроллер домена, то есть доменный пользователь входя в 1С не должен ввводить пароль.

Исходные данные:

Имя домена: domainname.ru

NetBIOS имя домена: DNAM

IP контроллеров домена, они же DNS сервера: 172.16.1.16, 172.16.1.19

Сетевое имя одного из контроллеров домена: server-dc1

Сетевое имя сервера 1С: SERVER-1S

ОС сервера 1С: Debian GNU/Linux 7 (wheezy)

Версия сервера 1C: 8.3.5.1248

Все нижеследующее работает на "Debian GNU/Linux 8 (jessie)" + 1С версии 8.3.9.1850

Установка 1С сервера на Linux

1. Настраиваем DNS на сервере 1С:

nano /etc/resolv.conf

в моем случае содержание resolv.conf следующее:

domain domainname.ru
search domainname.ru
nameserver 172.16.1.16
nameserver 172.16.1.19

Имя сервера 1С должно быть вручную зарегистрировано на DNS сервере.

Ping должен выглядеть следующим образом:

root@SERVER-1S:~# ping server-1s
PING SERVER-1S.domainname.ru (127.0.1.1) 56(84) bytes of data.
64 bytes from SERVER-1S.domainname.ru (127.0.1.1): icmp_req=1 ttl=64 time=0.031 ms

2. Синхронизируем время на сервере 1С с контроллером домена.

3. Выясняем имя учетной записи от которой работает сервер 1С

cat /etc/passwd| grep 1c

4. На контроллере домена создаем учетную запись с паролем "1cv8password" и запрещаем смену пароля пользователем.

5. На контроллере домена выполняем следующую комманду

ktpass -princ usr1cv8/server-1s.domainname.ru@DOMAINNAME.RU -mapuser usr1cv8 -pass 1cv8password -out usr1cv8.keytab

, где:

usr1cv8/server-1s.domainname.ru@DOMAINNAME.RU - учетная запись от имени которой работает сервер 1С, а так-же учетная запись в AD

-mapuser usr1cv8 - доменная УЗ с которой будет сопоставлена вышеуказанная УЗ. Для каждого сервера можно создавать отдельную УЗ в АД, например usr1cv8-server01

server-1s - сетевое имя узла, на котором запущен сервер 1С, можно выяснить командой hostname

1cv8password - пароль доменного пользователя usr1cv8

В результате должен сформироваться файл usr1cv8.keytab.

6. Полученный в предыдущем пункте файл, копируем в на сервер 1С в директорию /opt/1C/v8.3/x86_64/ и устанавливаем на него необходимые права:

chown usr1cv8:grp1cv8 usr1cv8.keytab
chmod 600 usr1cv8.keytab

7. На сервере 1С Устанавливаем базовый набор утилит для работы Kerberos аутентификацией

apt-get install krb5-user

8. Настраиваем Kerberos.

nano /etc/krb5.conf

В моем случае содержание файла следующее:

[logging]
    default = FILE:/var/log/krb5libs.log
    default = SYSLOG:DEBUG:DAEMON
    kdc = FILE:/var/log/krb5kdc.log
    kdc = SYSLOG:DEBUG:DAEMON
    admin_server = FILE:/var/log/kadmind.log
    admin_server = SYSLOG:DEBUG:DAEMON
[libdefaults]
    default_realm = DOMAINNAME.RU
    dns_lookup_realm = false
    dns_lookup_kdc = false
    default_tkt_enctypes = rc4-hmac
    default_tgs_enctypes = rc4-hmac
    krb4_config = /etc/krb.conf
    krb4_realms = /etc/krb.realms
    kdc_timesync = 1
    ccache_type = 4
    forwardable = true
    proxiable = true
    v4_instance_resolve = false
    v4_name_convert = {
        host = {
            rcmd = host
            ftp = ftp
        }
        plain = {
            something = something-else
        }
    }
    fcc-mit-ticketflags = true
[realms]
    DOMAINNAME.RU = {
            kdc = server-dc1.domainname.ru:88
        default_domain = domainname.ru
    }
[domain_realm]
    domainname.ru = DOMAINNAME.RU
    .domainname.ru = DOMAINNAME.RU
    DOMAINNAME.RU = DOMAINNAME.RU
    .DOMAINNAME.RU = DOMAINNAME.RU
[appdefaults]
pam = {
    debug = true
    ticket_lifetime = 36000
    renew_lifetime = 36000
    forwardable = false
    krb4_convert = false
}

9. На сервере 1С выполняем:

klist -e -k -t /opt/1C/v8.3/x86_64/usr1cv8.keytab

результат должен быть следующим:

Keytab name: FILE:/opt/1C/v8.3/x86_64/usr1cv8.keytab
KVNO Timestamp           Principal
---- ------------------- ------------------------------------------------------
   8 01.01.1970 07:00:00 usr1cv8/server-1s.domainname.ru@DOMAINNAME.RU (arcfour-hmac)

Выполняем команду:

kinit -k -t /opt/1C/v8.3/x86_64/usr1cv8.keytab usr1cv8/server-1s.domainname.ru@DOMAINNAME.RU

В результате программа kinit должна отработать без каких-либо сообщений, не спрашивать никаких паролей и вернуть управление обратно в командную строку.

10. В 1С настраиваем параметры пользователя как на картинке (используем полное имя домена):

Источники: раз, два, три, четыре