logo

Select Sidearea

Populate the sidearea with useful widgets. It’s simple to add images, categories, latest post, social media icon links, tag clouds, and more.
hello@youremail.com
+1234567890

Авторизация Active Directory на Linux сервере 1С

Авторизация Active Directory на Linux сервере 1С

В 1С у пользователей есть возможность авторизоваться не только с помощью пароля, но и пользователем операционной системы. Это повышает управляемость и доступность системы, так как пользователь, авторизовавшись в операционной системе, может просто открыть 1С и база откроется от его имени без ввода дополнительных паролей. Это также повышает общую безопасность системы, так как не остается учетных записей, для которых не установлен пароль или установлен не надежный. В организации роль глобального каталога пользователей, как правило, выполняет контроллер домена. Как правило, применяются доменные службы Active Directory под управлением Windows. Для работы с пользователями в такой среде с Linux сервером 1С необходимо выполнить ряд манипуляций, чтобы к пользователям баз 1с, размещенным на нем, могла применяться сквозная авторизация (Single-Sign-On).

Для работы сервера в такой среде потребуется сделать всего несколько дел, при этом вводить сервер в домен не обязательно, нужно только вручную добавить статическую запись DNS в доменной зоне, чтобы сервер мог правильно пинговаться. Также следует заранее позаботиться о синхронности времени на сервере 1С и контроллере домена. Далее необходимо настроить домен поиска и сервера имен в файле resolv.conf:

domain example.com
search example.com
nameserver MY_NS_IP

Далее необходимо выполнить ряд действий на контроллере домена. Необходимо создать на контроллере домена учетную запись, имя которой совпадает с именем учетной записи сервера 1С. Как правило, это usr1cv8. Затем на контроллере домена необходимо создать файл с секретным ключом:

ktpass -princ usr1cv8/ИМЯ_СЕРВЕРА.example.com@EXAMPLE.COM -mapuser usr1cv8 -pass ПАРОЛЬ_СОЗДАННОГО_ПОЛЬЗОВАТЕЛЯ -out usr1cv8.keytab

В результате создастся файл usr1cv8.keytab в текущей директории, а c пользователем usr1cv8 будет ассоциировано имя участника службы usr1cv81/ИМЯ_СЕРВЕРА.example.com@EXAMPLE.COM. Его необходимо разместить на сервере 1С в каталоге /opt/1C/v8.3/x86_64/ и задать соответствующие права:

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

На сервере 1С необходимо установить и настроить Kerberos для авторизации в домене. Установка выполняется командой apt install krb5-user (apt или не apt зависит от используемой операционной системы). Далее его необходимо сконфигурировать. В общем случае конфиг выглядит следующим образом:

[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 = EXAMPLE.COM
    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]
    EXAMPLE.COM = {
            kdc = КОНТРОЛЛЕР_ДОМЕНА.example.com:88
        default_domain = example.com
    }
[domain_realm]
    EXAMPLE.COM = EXAMPLE.COM
    .EXAMPLE.COM = EXAMPLE.COM
    EXAMPLE.COM = EXAMPLE.COM
    .EXAMPLE.COM = EXAMPLE.COM
[appdefaults]
pam = {
    debug = true
    ticket_lifetime = 36000
    renew_lifetime = 36000
    forwardable = false
    krb4_convert = false
}

Теперь можно проверить правильность сделанных настроек и попробовать авторизовать пользователя.

Результат

После того, как все действия выполнены, можно проверить правильность сделанных настроек:

kinit -k -t /opt/1C/v8.3/x86_64/usr1cv8.keytab usr1cv8/ИМЯ_СЕРВЕРА.example.com@EXAMPLE.COM

Команда должна выполниться без какого либо вывода и запросов. После этого команда klist дляжна отобразить полученный тикет пользователя:

# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: usr1cv8/ИМЯ_СЕРВЕРА.example.com@EXAMPLE.COM

Valid starting       Expires              Service principal
06.04.2020 19:08:24  07.04.2020 05:08:24  krbtgt/EXAMPLE.COM@EXAMPLE.COM
	renew until 07.04.2020 19:08:24

Теперь можно установить пользователю в настройках в базе 1С галочку Авторизация операционной системы и вписать или выбрать нужного пользователя домена. При следующем входе этот пользователь будет авторизован в базе 1С без запроса пароля. В случае блокировки пользователя в домене, соответственно, зайти в базу 1С, не важно откуда, у пользователя уже не выйдет.

roox
8 комментариев
  • Posted at 19:06, 11.03.2021

    Сделал строго по инструкции, получил это
    kinit: Pre-authentication failed: Key table file ‘/opt/1C/v8.3/x86_64/usr1cv8.keytab’ not found while getting initial credentials
    как побороть эту неприятность?

      • Posted at 19:23, 11.03.2021

        Выполняю от пользователя с правами root и без привилегий
        результат одинаковый для админа и для пользователя usr1cv8
        axolotl@postgresql:~$ sudo kinit -k -t /opt/1C/v8.3/x86_64/usr1cv8.keytab usr1cv8/postgresql.mns.lcl@MNS.LCL
        kinit: Pre-authentication failed: Key table file ‘/opt/1C/v8.3/x86_64/usr1cv8.keytab’ not found while getting initial credentials

        axolotl@postgresql:~$ sudo -u usr1cv8 kinit -k -t /opt/1C/v8.3/x86_64/usr1cv8.keytab usr1cv8/postgresql.mns.lcl@MNS.LCL
        kinit: Pre-authentication failed: Key table file ‘/opt/1C/v8.3/x86_64/usr1cv8.keytab’ not found while getting initial credentials

        axolotl@postgresql:~$ kinit -k -t /opt/1C/v8.3/x86_64/usr1cv8.keytab usr1cv8/postgresql.mns.lcl@MNS.LCL
        kinit: Pre-authentication failed: Key table file ‘/opt/1C/v8.3/x86_64/usr1cv8.keytab’ not found while getting initial credentials

      • Posted at 19:27, 11.03.2021

        когда генерировал keytab на контроллере, вывод был таким

        C:\Users\Администратор>ktpass -princ usr1cv8/postgresql.mns.lcl@MNS.LCL -mapuser usr1cv8 -pass «12345678» -out usr1cv8.keytab
        Targeting domain controller: dc.mns.lcl
        Using legacy password setting method
        Successfully mapped usr1cv8/postgresql.mns.lcl to USR1CV8.
        WARNING: pType and account type do not match. This might cause problems.
        Key created.
        Output keytab to usr1cv8.keytab:
        Keytab version: 0x502
        keysize 69 usr1cv8/postgresql.mns.lcl@MNS.LCL ptype 0 (KRB5_NT_UNKNOWN) vno 9 etype 0x17 (RC4-HMAC) keylength 16 (0x259745cb123a52aa2e693aaacca2db52)

      • Posted at 22:52, 11.03.2021

        очевидно что-то все таки с правами на файл, т.к. из домашней папки все срабатывает хорошо

        axolotl@postgresql:~$ kinit -k -t usr1cv8.keytab usr1cv8/postgresql.mns.lcl@MNS.LCL
        axolotl@postgresql:~$ ls -hal usr1cv8.keytab
        -rw-rw-r— 1 axolotl axolotl 75 мар 11 19:24 usr1cv8.keytab

        буду думать — что с правами

  • andrey yakunin
    Ответить
    Posted at 11:18, 03.03.2023

    Добрый день! подскажите пожалуйста будет ли работать данная конфигурация в случае связки — Linux рабочая машина в домене — 1с сервер в домене — windows домен. ?

Post a Comment

Comment
Name
Email
Website