Аутентификация в 1С средствами ОС в домене

18.03.24

Администрирование - Информационная безопасность

Настройка сквозной авторизации в БД 1С (БП, ЗУП). Клиенты - вин-машины с тонкими клиентами в домене. Сервер 1С - ubuntu 18, НЕ в домене. Домен - Samba DC

За основу взята оф статья 1С. Только у них про КД на винде. Я же гордый владелец домена на SambaDC, вшитого в SynologyDSM. Есть некоторые подводные камни, которые касаются именно Synology - трудности с рут-доступом по ssh через winCSP. Основной функционал основывается на работе Samba DC (samba-tool).

Итак, имеем:

  • Клиенты - тонкий клиент на win10pro в домене
  • Сервер 1С - Ubuntu 18LTS. Не в домене. Установка - штатная
  • Домен - Samba DC (в исполнении от synology)

Хотим: "чтобы работало одной кнопкой" (когда-нибудь). Сегодня - сквозная авторизация на клиенте.


Переменные, используемые в мануале (чтобы заменить их в notepad++):
    %FQDN сервера 1с% = полный dns-адрес сервера 1с. Например, 1csrv.domain.example
    %ПОЛНЫЙ АДРЕС ДОМЕНА% = realm. так, как написано в настройках домена. Например, DOMAIN.EXAMPLE
        Если эта переменная указана ПРОПИСНЫМИ, то реальные данные указывать ПРОПИСНЫМИ. Если строчными - строчными. Не надо самодеятельности
    %IP ДНС-сервера% = ip днс-сервера, обслуживающего Домен. Чаще всего - Контроллер домена. Например, 192.168.0.2
    %хост КД% = hostname Контроллера домена. Например, dc01
    %FQDN контроллера домена% = полный dns-адрес Контроллера домена. Например, dc01.domain.example
    %Учетка% = имя пользователя домена. Не заблокирован, Без Суффикса. Например, Admin
    %Версия% = версия действующего Сервера 1с. Например, 8.3.22.2283
    %рабочая директория% = путь до исполняемых файлов Сервера 1с. Например, /opt/1cv8/x86_64/8.3.22.2283

на АД (synology DSM - samba-dc):
	1. Добавить хост сервера 1с в ДНС (хост должен иметь статичный IP)
	2. Создать пользователя (usr1c) с рандомным паролем. Без особых групп. Галочка про использовать DES - снята.
	3. Войти от root по SSH на КД. (для synology +: sudo -i)
	4. Добавить SPN к созданному пользователю
		samba-tool spn add usr1cv8/%FQDN сервера 1с% usr1c
	5. Отредактировать вручную данные пользователя (найти строку, начинающуюся на userPrincipalName и привести к виду, указанному ниже)
		samba-tool user edit usr1c
		userPrincipalName: usr1cv8/%FQDN сервера 1с%@%ПОЛНЫЙ АДРЕС ДОМЕНА%
		:wq
		должно появиться сообщение "Modified User 'usr1c' successfully"
	6. Экспортировать keytab
		samba-tool domain exportkeytab /tmp/usr1cv8.keytab --principal=usr1cv8/%FQDN сервера 1с%@%ПОЛНЫЙ АДРЕС ДОМЕНА%
		должно появиться сообщение "Export one principal to /tmp/usr1cv8.keytab"
	7. Скопировать keytab	
		Для synology:
			Установить права для скачивания
				chmod 755 /tmp/usr1cv8.keytab
		войти через WinSCP
		скопировать на копм файл "/tmp/usr1cv8.keytab"

на сервере 1с (ubuntu):
	1. Настроить резолв
		nano /etc/resolv.conf
			nameserver %IP ДНС-сервера%
			search %ПОЛНЫЙ АДРЕС ДОМЕНА%
			сохранить
			systemctl restart systemd-resolved
	2. Проверить, что пинги по короткому dns (имени хоста КД) работают
	3. Сверить время. Установить, если надо, синхронизацию
		ntpdate %хост КД%
	4. Установить (если не установлен) krb
		apt install krb5-user
	5. Настроить конфиг:
		nano /etc/krb5.conf
			[libdefaults]
				default_realm = %ПОЛНЫЙ АДРЕС ДОМЕНА%
				dns_lookup_realm = false
				dns_lookup_kdc = false
				default_tkt_enctypes = rc4-hmac
				default_tgs_enctypes = rc4-hmac
			[logging]
				default = FILE:/var/log/krb5libs.log
				kdc = FILE:/var/log/krb5kdc.log
				admin_server = FILE:/var/log/kadmind.log
			[realms]
				%ПОЛНЫЙ АДРЕС ДОМЕНА% = {
					kdc = %FQDN контроллера домена%
					default_domain = %ПОЛНЫЙ АДРЕС ДОМЕНА%
				}
			[domain_realm]
				%полный адрес домена% = %ПОЛНЫЙ АДРЕС ДОМЕНА%  // тут именно маленькие буквы
				.%полный адрес домена% = %ПОЛНЫЙ АДРЕС ДОМЕНА% // тут именно маленькие буквы
				%ПОЛНЫЙ АДРЕС ДОМЕНА% = %ПОЛНЫЙ АДРЕС ДОМЕНА%
				.%ПОЛНЫЙ АДРЕС ДОМЕНА% = %ПОЛНЫЙ АДРЕС ДОМЕНА%
			[appdefaults]
				pam = {
					debug = true
					ticket_lifetime = 36000
					renew_lifetime = 36000
					forwardable = false
					krb4_convert = false
				}
	6. Проверить, что настроили правильно. Получить билет на учетку, данные от которой заранее известны и валидны
		kinit %Учетка%@%ПОЛНЫЙ АДРЕС ДОМЕНА%
		пароль от %Учетка%
			Если никаких сообщений об ошибках - все ок.
		klist
			Должно вывести что-то подобное
				Ticket cache: FILE:/tmp/krb5cc_0
				Default principal: %Учетка%@%ПОЛНЫЙ АДРЕС ДОМЕНА%
		kdestroy
	7. Найти рабочую директорию 1с
		systemctl status system-srv1cv8*
			будет что-то подобное "/opt/1cv8/x86_64/%Версия%
		перейти в папку
			cd %рабочая директория%
	8. Скопировать в %рабочая директория% файл, полученный с КД "usr1cv8.keytab". Название должно быть таким же
	9. Выставить права (если, конечно, пользователь и группа по-умолчанию)
		chown usr1cv8:grp1cv8 usr1cv8.keytab
		chmod 600 usr1cv8.keytab
	10. Проверить, что файл читается и в нем тот пользователь, что требуется
		klist -e -k -t %рабочая директория%/usr1cv8.keytab
		должно вывести что-то похожее
			KVNO Timestamp           Principal
			---- ------------------- ------------------------------------------------------
				1 15.03.2024 17:30:43 usr1cv8/%FQDN сервера 1с%@%ПОЛНЫЙ АДРЕС ДОМЕНА% (arcfour-hmac)
	11. Пробуем подключиться к ДК с помощью этого файла
		kinit -k -t %рабочая директория%/usr1cv8.keytab usr1cv8/%FQDN сервера 1с%@%ПОЛНЫЙ АДРЕС ДОМЕНА%
		если нет ошибок klist
			предполагаемый вывод:
				Ticket cache: FILE:/tmp/krb5cc_0
				Default principal: usr1cv81/%FQDN сервера 1с%@%ПОЛНЫЙ АДРЕС ДОМЕНА%
				Valid starting     Expires            Service principal
				15.03.2024 17:33:56  16.03.2024 03:33:56  krbtgt/%ПОЛНЫЙ АДРЕС ДОМЕНА%@%ПОЛНЫЙ АДРЕС ДОМЕНА%
						renew until 16.03.2024 17:33:56
		если похоже - все ок. 
		kdestroy

в Базе Данных:
	1. Администрирование - Настройки пользователей и прав - Пользователи
	2. Открыть конкретного пользователя. В параметрах входа выбрать "Аутентификация операционной системы"
	3. В открывшемся окне слева выбрать %полный адрес домена%, справа - пользователя
		должно получиться \\%полный адрес домена%\%пользователь% 
			разницы ПРОПИСНЫЕ или строчные знаки - нет. НЕ работает с коротким именем (netBIOS, суффикс)домена
	4. Записать и закрыть
	5. Проверить
	Важно!
		В настройках подключения БД "Вариант аутентификации" должен быть отмечен кружок "Выбирать автоматически"
		В файле *.v8i это параметр WA=1

Если установка 1С была штатной и по мануалу ничего не меняли, перезагружать сервер 1С не нужно.

Гуд Люк!)

См. также

Информационная безопасность Системный администратор Программист Платные (руб)

AUTO VPN (portable) - автоматизация подключения пользователей к удаленному рабочему месту или сети посредством создания автоматического VPN (L2TP или L2TP/IPSEC и т.д.) подключения без ввода настроек пользователем (с возможностью скрытия этих настроек от пользователя). Программа автоматически выполняет подключение к VPN серверу и после успешного коннекта , если необходимо, подключение к серверу удаленных рабочих столов (RDP).

1200 руб.

24.03.2020    15364    25    32    

35

Информационная безопасность Программист Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Предлагается внешняя обработка для просмотра данных в формате ASN1. Есть 2 режима: загрузка из бинарного формата и из BASE64. Реализована функция извлечения всех сертификатов, которые можно найти в ASN1-файле. В дополнении к этому продукту предлагается методическая помощь по вопросам, связанным с технической реализацией криптографии и шифрования в 1С.

2400 руб.

29.08.2016    30053    9    1    

10

Информационная безопасность Пароли Платформа 1С v8.3 Бесплатно (free)

Все еще храните пароли в базе? Тогда мы идем к вам! Безопасное и надежное хранение секретов. JWT авторизация. Удобный интерфейс. Демо конфигурация. Бесплатно.

30.05.2024    6209    kamisov    17    

60

Информационная безопасность Программист Платформа 1С v8.3 Бесплатно (free)

Рассмотрим в статье более подробную и последовательную настройку аутентификации в 1С с использованием распространенной технологии JWT, которая пришла в программу в платформе версии 8.3.21.1302.

27.02.2024    7313    PROSTO-1C    10    

39

Информационная безопасность Программист Платформа 1С v8.3 Абонемент ($m)

Интеграционные решения стали неотъемлемой частью нашей жизни. Правилом хорошего тона в современных приложениях является не давать интегратору доступ к чувствительным данным. Device flow позволяет аутентифицировать пользователя, не показывая приложению чувствительные данные (например: логин и пароль)<br> Рассмотрим Device flow аутентификацию, в приложении, на примере OpenID провайдера Yandex.

1 стартмани

27.10.2023    2409    platonov.e    1    

23

Информационная безопасность Системный администратор Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

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

5 стартмани

24.04.2023    6252    20    soulner    8    

32

Информационная безопасность Системный администратор Программист Платформа 1С v8.3 1С:ERP Управление предприятием 2 Абонемент ($m)

1С, начиная с версии платформы 8.3.21, добавили в систему возможность двойной аутентификации. Как это работает: в пользователе информационной базы появилось свойство «Аутентификация токеном доступа» (АутентификацияТокеномДоступа во встроенном языке), если установить этот признак и осуществить ряд манипуляций на встроенном языке, то появляется возможность при аутентификации отправлять HTTP запросы, которые и реализуют этот самый второй фактор. Данное расширение позволяет организовать двухфакторную аутентификацию с помощью электронной почты или мессенджера Telegram.

2 стартмани

08.12.2022    7278    50    Silenser    12    

24
Оставьте свое сообщение