1С:Предприятие 8.2 /
Администрирование /
Linux
Пример настройки Kerberos-аутентификации для Linux-версии сервера 1С:Предприятия 8
Статья предназначена для версий 1С:Предприятия , начиная с 8.1.12 и 8.2.8.
В данном примере описывается настройка Kerberos- аутентификации сервера 1С:Предприятия8.1 для некоторой базовой системы, состоящей из трех компьютеров: контроллера домена, центрального сервера кластера 1С:Предприятия и рабочей станции.
Настройка сервера 1С:Предприятия версии 8.2 выполняется аналогично с учетом следующего:
- Вместо usr1cv81 следует использовать usr1cv82
- Вместо grp1cv81 - grp1cv82
- Вместо /opt/1C/v8.1 - /opt/1C/v8.2
Описание базовой системы
В базовой системе присутствуют следующие компьютеры:
- Контроллер домена Active Directory
- имя компьютера (hostname) - main
- IP-адрес - 192.168.29.150
- имя домена - krb.local
- Центральный сервер кластера 1С:Предприятия
- Операционная система Fedora 6
- Имя компьютера (hostname) - srv1c
- IP-адрес - 192.168.29.151
- Установлена реализация Kerberos от MIT, поддерживающая алгоритм RC4-HMAC (пакет krb5-workstation).
- Рабочая станция
Настройка контроллера домена
В нашем примере мы полагаем, что контроллер домена Active Directory настроен и работает. Исходя из этого, для настройки Kerberos-аутентификации нужно выполнить следующие шаги:
- В DNS-сервере следует "вручную" зарегистрировать все Linux-компьютеры. Регистрация Windows-компьютеров происходит автоматически при включении их в домен. В нашем случае, "вручную" необходимо зарегистрировать центральный сервер кластера 1С:Предприятия (т.к. на нем исполняется Linux-версия сервера), а рабочую станцию включить в домен (зарегистрирована она будет автоматически).
- После этого следует создать учетную запись пользователя , с которой будут ассоциироваться запросы авторизации к серверу 1С:Предприятия . В нашем примере это будет пользовательusr1cv8 с паролем pass1cv8. В свойствах этой учетной записи следует сбросить флажок "Use DES encryption types with this account". Если ваша реализация Kerberos не поддерживает алгоритм шифрования RC4-HMAC, то флажок обязательно нужно выставить.
- Затем для пользователя usr1cv8 следует сгенерировать файл с секретным ключом. Для этого используется утилита ktpass, входящая в состав в пакет Windows Support Tools (Его можно найти в подкаталоге SUPPORT установочного диска Windows).
В командной строке запустим утилиту ktpass. В нашем примере командная строка должна выглядеть следующим образом:
C:>ktpass -princ usr1cv81/srv1c.krb.local@KRB.LOCAL -mapuser usr1cv8 -pass pass1cv8 -out usr1cv81.keytabC:>Если алгоритм RC4-HMAC не поддерживается, командная строка должна выглядеть так:
C:>ktpass -crypto DES-CBC-CRC -princ usr1cv81/srv1c.krb.local@KRB.LOCAL -mapuser usr1cv8 -pass pass1cv8 -out usr1cv81.keytabC:>В результате будет создан файл usr1cv81.keytab в текущей директории (в нашем случае - это корень диска C:), а c пользователем usr1cv8 будет ассоциировано имя участника службы usr1cv81/srv1c.krb.local.
Обратите внимание на различие между именем usr1cv81 и usr1cv8. В нашем примере usr1cv81/srv1c.krb.local@KRB.LOCAL - это стандартное имя службы. Оно включает в себя имя локального пользователя, от имени которого на центральном сервере кластера запускается сервер 1С:Предприятия (usr1cv81). А usr1cv8, указываемое в параметре mapuser, - это имя доменного пользователя, которое мы создали в пункте 2.
В параметре pass передается пароль учетной записи usr1cv8 - pass1cv8.
В параметре out указывается имя файла с ключом. В нашем случае это usr1cv81.keytab.
Настройка центрального сервера кластера 1С:Предприятия
В нашем примере мы полагаем, что кластер серверов 1С:Предприятия уже установлен и работает на центральном сервере кластера.
Прежде всего следует указать DNS-сервер для центрального сервера кластера. Это должен быть DNS контроллер домена. Процесс настройки зависит от конкретного дистрибутива Linux, в нашем случае отредактируем "вручную" файл /etc/resolv.conf, указав в нем IP адрес контроллера домена. В результате файл должен содержать следующие строки:
srv1c:~# cat /etc/resolv.confnameserver 192.168.29.150search krb.localsrv1c:~#
Теперь проверим работу DNS. Для этого выполним команду ping:
srv1c:~# ping main -c 1PING main.krb.local (192.168.29.150) 56(84) bytes of data.64 bytes from 192.168.29.150: icmp_seq=1 ttl=128 time=0.177 ms--- main.krb.local ping statistics ---1 packets transmitted, 1 received, 0% packet loss, time 0msrtt min/avg/max/mdev = 0.177/0.177/0.177/0.000 mssrv1c:~#
Для компьютеров, участвующих в процессе аутентификации, не допускается большого расхождения системных часов, так как аутентификационные пакеты (тикеты) имеют ограниченное время действия. Соответственно, нужно синхронизировать время центрального сервера кластера с контроллером домена. Используем для этого команду ntpdate:
srv1c:~# ntpdate main4 Jun 11:51:53 ntpdate[2527]: step time server 192.168.29.150 offset -56.766439 secsrv1c:~#
Теперь настроим Kerberos. Для этого отредактируем файл /etc/krb5.conf. При этом, нам понадобится NETBIOS-имя контроллера домена. Оно, как правило, представляет собой имя домена в верхнем регистре . Поэтому в нашем случае NETBIOS-имя будет KRB.LOCAL.
В результате файл /etc/krb5.conf должен выглядеть следующим образом:
srv1c:~# cat /etc/krb5.conf[logging]default = FILE:/var/log/krb5libs.logkdc = FILE:/var/log/krb5kdc.logadmin_server = FILE:/var/log/kadmind.log[libdefaults]default_realm = KRB.LOCALdns_lookup_realm = falsedns_lookup_kdc = falsedefault_tkt_enctypes = rc4-hmacdefault_tgs_enctypes = rc4-hmac[realms]KRB.LOCAL = { kdc = main.krb.local:88 default_domain = krb.local}[domain_realm]krb.local = KRB.LOCAL.krb.local = KRB.LOCALKRB.LOCAL = KRB.LOCAL.KRB.LOCAL = KRB.LOCAL[kdc]profile = /var/kerberos/krb5kdc/kdc.conf[appdefaults]pam = { debug = true ticket_lifetime = 36000 renew_lifetime = 36000 forwardable = false krb4_convert = false}srv1c:~#
Если алгоритм RC4-HMAC не поддерживается, то значения параметров default_tkt_enctypes и default_tgs_enctypes должны быть следующими:
. . .default_tkt_enctypes = des-cbc-crc des-cbc-md5default_tgs_enctypes = des-cbc-crc des-cbc-md5. . .
Теперь проверим работу системы аутентификации. Для этого выполним команду kinit <имя>, где имя - это имя произвольного пользователя, зарегистрированного в домене krb.local. В следующем примере это имя user. Далее введем пароль этого пользователя и нажмем Enter. Если после этого программа не выдаст никаких сообщений - значит все хорошо.
Убедиться в этом можно с помощью командыklist. Как видно на рисунке, мы получили от KDC (Key Distribution Center - центр распределения ключей. Эту функцию выполняет контроллер домена) так называемый ticket-granting ticket. После этого следует с помощью команды kdestroy очистить локальный кэш тикетов, чтобы вернуться в исходное состояние.
srv1c:~# kinit userPassword for user@KRB.LOCAL:srv1c:~# klistTicket cache: FILE:/tmp/krb5cc_0Default principal: user@KRB.LOCALValid starting Expires Service principal06/04/08 11:29:21 06/04/08 21:28:28 krbtgt/KRB.LOCAL@KRB.LOCAL renew until 06/05/08 11:29:21Kerberos 4 ticket cache: /tmp/tkt0klist: You have no tickets cachedsrv1c:~# kdestroysrv1c:~#
Далее, любым способом следует передать файл с секретным ключом usr1cv81.keytab, полученный во время настройки контроллера домена, на центральный сервер кластера 1С:Предприятия. Этот файл следует скопировать в директорию, где установлен сервер 1С:Предприятия (по умолчанию это /opt/1C/v8.1/i386), и установить права и владельца файла, как показано ниже:
srv1c:~# cd /opt/1C/v8.1/i386srv1c:i386# chown usr1cv81:grp1cv81 usr1cv81.keytabsrv1c:i386# chmod 600 usr1cv81.keytabsrv1c:i386#
При желании файл можно разместить в любом другом месте, нужно только изменить переменную SRV1CV8_KEYTAB в конфигурационном файле, чтобы она указывала на новое местоположение файла с секретным ключом.
После этого, с помощью команды klist проверяем, все ли мы сделали правильно. Для этого выполним команду:
srv1c:~# klist -e -k -t /opt/1C/v8.1/i386/usr1cv81.keytab
В нашем случае результат выполнения команды должен выглядеть следующим образом:
Keytab name: FILE:/opt/1C/v8.1/i386/usr1cv81.keytabKVNO Principal---- --------------------------------------------------------------------- 13 usr1cv81/srv1c.krb.local@KRB.LOCAL (ArcFour with HMAC/md5)
Если алгоритм RC4-HMAC не поддерживается, результат выполнения команды будет выглядеть следующим образом:
Keytab name: FILE:/opt/1C/v8.1/i386/usr1cv81.keytabKVNO Principal---- --------------------------------------------------------------------- 13 usr1cv81/srv1c.krb.local@KRB.LOCAL (DES cbc mode with RSA-MD5)
Мы видим, что файл с секретным ключом содержит именно то, что нам нужно (в колонке Principal указано то самое имя службы, которое мы задавали при создании файла с секретным ключом (п. 3), и правильный алгоритм шифрования (ArcFour with HMAC/md5 для RC4-HMAC или DES cbc mode with RSA-MD5 для DES).
Далее проверим возможность работы Kerberos без пароля с использованием секретного ключа. С помощью команды kinit укажем, что надо использовать аутентификационную информацию из файла (в нашем случае /opt/1C/v8.1/i386/usr1cv81.keytab) и прочитать оттуда ключ для сервиса usr1cv81/srv1c.krb.local@KRB.LOCAL. В результате программа kinit должна отработать без каких-либо сообщений, не спрашивать никаких паролей и вернуть управление обратно в командную строку:
srv1c:~# kinit -k -t /opt/1C/v8.1/i386/usr1cv81.keytab usr1cv81/srv1c.krb.local@KRB.LOCALsrv1c:~#
Теперь посмотрим на результаты работы с помощью команды klist. В случае успеха мы увидим примерно следующее:
srv1c:~# klistTicket cache: FILE:/tmp/krb5cc_0Default principal: usr1cv81/srv1c.krb.local@KRB.LOCALValid starting Expires Service principal06/04/08 11:44:54 06/04/08 21:43:58 krbtgt/KRB.LOCAL@KRB.LOCAL renew until 06/05/08 11:44:54Kerberos 4 ticket cache: /tmp/tkt0klist: You have no tickets cachedsrv1c:~#
Если что-то настроено не так, то эта команда выведет следующее:
srv1c:~# klistklist: No credentials cache found (ticket cache FILE:/tmp/krb5cc_1000)Kerberos 4 ticket cache: /tmp/tkt1000klist: You have no tickets cachedsrv1c:~#
Если проверка работоспособности прошла успешно, это значит, что с данного момента сервер кластера 1С:Предприятия способен обрабатывать запросы на аутентификацию. При этом перезапуск сервера не требуется, кроме того случая, когда в конфигурационном файле было изменено место расположения файла с секретным ключом.
Другие материалы по теме:
query, службы, далее, работает, сервер, зарегистрировать, команды, компьютер, описание, алгоритм, программа, буфер обмена, копировать, файл, реализация, автоматически, обмен, вручную, время, настройки, результат, настройка
Материалы из раздела: 1С:Предприятие 8.2 / Администрирование / Linux
Другие материалы по теме:
Использование параметров сеанса
Вопросы безопасности информационных систем на платформе 1С:Предприятие 8.1
Утилита 1CEClientSetupMake.exe
Нас находят: авторизация в 1С kerberos windows, настройка аутентификации kerberos linux, ow ly
Мы на Facebook