В облако на работу: Все варианты авторизации ОС сервером 1С на базе РЕД ОС 8 в домене windows. Рецепты от Капитана
В публикации рассматриваются все варианты авторизации ОС сервером 1С на базе РЕД ОС 8 в домене windows. Как случаи, когда сервер 1С авторизирует веб и обычных клиентов 1С в active directory, так и когда сам сервер является клиентом, например при HTTP запросах выполняемых сервером 1С. Тех, кто заинтересовался, прошу под кат…
Путь в тысячу ли начинается с первого шага.
©Лао-цзы
Когда публиковались первые статьи серии "Три пингвина под окном…", проходившие мимо админы делали грустную мину и рассказывали, как непосильно тяжело будет при переходе с обычной рабочей группы на серверах РедОС в домен active directory.
Из объяснительной админа,
почему ничего не сделано за рабочий день...
— Иди, — говорю ему, — купи две третьих балтики.
Пришёл, ставит на стол упаковку.
— Ты что купил? Девятку?
— А я взял шесть девятых. Две третьих — это же шесть девятых!
Математик хренов.
Админы, носящие гордое звание системных, уже не те, как прежде.
Это раньше они слушали музыку сервера (или музыку у сервера) и за некоторое количество крепких, крепленых и слегка разбавленных напитков их можно было заинтересовать проблемами 1С.
Нынче админы витают в облаках, переносят там что-то между лезвиями и на просьбы поминают всех скандинавских богов и самого Линуса всуе.
Возможно изначально линуксовые админы и в курсе проблемы, но в основной массе они считают, завести сервер 1С в домен, создать пользователя для службы и выдать права программисту 1С, на этом миссия выполнена.
Поэтому большинству 1С ников придется погрузиться в мифологию Kerberos.
В домене AD проблема усукабляется еще и тем, что у вас не будет прав проверить, как администраторы выполнили ваши просьбы по инструкции с ИТС.
Масла в огонь подлило выступление на IE 2023 спикеров из Авито, как им даже в паре с 1С РКЛ не удалось настроить доменную авторизацию 1С апача на линуксе.
С такими исходными данными мы выступаем в поход за авторизацию ОС сервером 1С (и сервера 1С) в смешанном домене windows (linux & windows рабочие станции).
- Контроллер домена, сервер Windows 2012 R2, домен AD уровня Windows 2012. dc.test.loc
- Рабочая станция Windows 10. win-cln01.test.loc
- Рабочая станция РедОС 8. red8-cln01.test.loc
- Сервер 1С РедОС 8 настроенный. red8-srv.test.loc
- Сервер 1С РедОС 8 настраиваемый. red-srv.test.loc
- Postgres 16 от PostgresPro
- 1С Предприятие 64-х 8.3.24.1467
- все в домене test.loc.
Пользователь, от которого работает сервер 1С usr1cv83, пароли у всех 123456.
Все эти значения произвольные и должны в скриптах быть заменены на ваши.
Имя домена *.local не рекомендуют коллеги РедОС. - все по железу 4ГБ RAM 50ГБ SSD 2 Ядра CPU
- все развернуто в облаке из оригинальных iso образов производителей для чистоты эксперимента.
Благодарю компанию ©Serverspace за предоставленное оборудование, без поддержки собрать такой пингвинариум мне было бы негде.
Хорошо, что у локального офиса международного облачного провайдера остался питерский, а возможно петровский, дух покровительства знаниям и наукам.
По поводу РедОС 8 и Postgres 16. В продуктовой среде на них рано переходить, но в тестовой, хочется попробовать все новинки, этим обусловлен такой выбор.
Чтобы заработала 1С в РедОС 8 достаточно одной строки bash, для аккуратных двух
find '/opt/1c*' -name 'libstdc++.so.6' -print0 | xargs -n1 -0 -t rename -v -n 'so.6' 'so.6.bak'
эта покажет что будет переименовано
find '/opt/1c*' -name 'libstdc++.so.6' -print0 | xargs -n1 -0 -t rename -v 'so.6' 'so.6.bak'
эта переименует
для установки Postgres потребуется
wget rpms.remirepo.net/enterprise/8/remi/x86_64/libicu65-65.1-1.el8.remi.x86_64.rpm
rpm -ivh *.rpm
Кроме того, что под капотом (новое ядро, новые сборки пакетов) РедОС 8 включает в себя возможность пользователю выбрать самому где у него будет кнопка Пуск находиться или выбрать интерфейс в стиле Mac.
Результат:
- прозрачная авторизация ОС для обычных клиентов 1С с рабочих станций
- прозрачная авторизация ОС для веб-клиентов 1С с рабочих станций
- прозрачная авторизация ОС 1С открытой в браузере
- прозрачная авторизация ОС запросов идущих с сервера 1С, на примере обращения к веб-серверу с отключенной анонимной и включенной авторизацией windows
Те, кто больше любит видео, могут и сейчас посмотреть его вместо чтения статьи, желательно и то, и другое.
Видео
Для остальных приступаем.
Аперитив
Рутинные операции первичной настройки сервера: обновление пакетов, настройка сети, настройка синхронизации времени. Тем не менее, не стоит пренебрегать их важностью. Здесь фраза: Как вы яхту назовете, как нельзя кстати.
Если вы используете FQDN (предпочтительный вариант), то везде дальше надо использовать полное имя, решили пойти коротким путем, аналогично. Смешивать не рекомендую.
Все настройки по инструкциям с сайта РедОС и 1С ИТС.
Украли американские шпионы чертежи МИГ-29.
Собрали у себя, получается паровоз.Снова собрали-опять паровоз!
Ничего понять не могут. Решили сознаваться.
На нашем заводе собирают-стоит МиГ-29!
Спрашивают рабочего:"Как же ты его собрал, по чертежам?"
Он им отвечает:"Внизу, мелкими буквами написано:
"После сборки-обработать напильником!".
©анекдот времен СССР
Перефразируя классика, если жизнь и рассудок дороги вам, то используйте инструкции официальных производителей.
В данном случае базу знаний РедОС и сайт 1С ИТС. Попытка скопировать ошибку и поиском по интернету найти ее решение точно не лучший вариант, оптимальнее понять логику инструкции, хотя она иногда и исходит из неизвестного начального состояния системы.
Не верите, поищите "ошибка HTTP-ответ 402 Payment Required" в контексте настройки авторизации ОС 1С, узнаете невероятно много нового, но ни одного правильного ответа.
Аналогично, пристальное внимание нужно уделить синхронизации времени, так как это базовая часть Kerberos и такая мелочь приводит к трудно диагностируемым ошибкам.
Так же в тестовом контуре вольно отнесемся к безопасности и отключим Selinux, ошибки которые порождает он могут в самых неожиданных местах проявляться.
Как с ним жить не отключая, описано в публикации
Установка 1С: Сервера взаимодействия. Заметки на полях
#изменяем локаль на русскую
localectl
dnf install glibc-langpack-ru -y
localectl set-locale LANG=ru_RU.utf8
localectl
#изменяем профиль производительности на высокую производительность
dnf install tuned -y
systemctl enable --now tuned
tuned-adm active
tuned-adm profile throughput-performance
tuned-adm active
#обновляем установленные пакеты
dnf update -y
dnf install mc -y
#Отключение SeLinux
perl -i"*_$(date +'%Y%m%d_%H%M%S').bak" -pE 's/SELINUX=enforcing/SELINUX=permissive/i' /etc/selinux/config
setenforce 0
#Настройка сети и имени хоста
hostnamectl set-hostname red-srv.test.loc
sh -c "echo '127.0.0.1 `hostname -f` `hostname -s`' >> /etc/hosts"
cat /etc/hosts
nmtui
# или
#ls -1 /etc/NetworkManager/system-connections/
#mcedit /etc/NetworkManager/system-connections/ххх.nmconnection
systemctl restart NetworkManager
reboot
nslookup dc
nslookup dc.test.loc
#mcedit /etc/resolv.conf
#Настройка синхронизации времени
#systemctl disable chronyd --now
#mcedit /etc/systemd/timesyncd.conf
#systemctl restart systemd-timesyncd
#timedatectl status
#timedatectl timesync-status
#mcedit /etc/systemd/timesyncd.conf
#systemctl restart systemd-timesyncd
#timedatectl status
timedatectl list-timezones
timedatectl set-timezone Europe/Moscow
sed -i 's/server/#server/g' /etc/chrony.conf
sh -c "echo 'server dc.test.loc iburst' >> /etc/chrony.conf"
systemctl restart chronyd
chronyc tracking
На выходе обязательно надо получить 100% результат при
- nslookup dc.test.loc
- timedatectl status либо аналогичный сервис синхронизации времени, например chronyd
так как тестовый контур в этом плане очень нестабилен из-за постоянных перезагрузок, после которых рабочая станция в хаотичном порядке может принять время хоста, а время дорого в прямом и переносном смысле, то использовал их оба.
Ввод РЕД ОС в домен Windows
#Ввод в домен
dnf install -y realmd sssd oddjob oddjob-mkhomedir adcli samba-common samba-common-tools krb5-workstation
realm discover test.loc
realm join -U -v administrator test.loc
realm discover test.loc
sed -i 's/use_fully_qualified_names = True/use_fully_qualified_names = False/g' /etc/sssd/sssd.conf
sh -c "echo 'ad_gpo_access_control = permissive' >> /etc/sssd/sssd.conf"
authselect select sssd with-fingerprint with-gssapi with-mkhomedir with-smartcard --force
sh -c "echo '* — nofile 16384' >> /etc/security/limits.conf"
sh -c "echo 'root - nofile 16384' >> /etc/security/limits.conf"
sed -i 's;default_ccache_name = KEYRING:persistent:%{uid};default_ccache_name = FILE:/tmp/krb5cc_%{uid};g' /etc/krb5.conf
sed -i '/krb5cc_%{uid}/a default_realm = TEST.LOC' /etc/krb5.conf
sh -c "echo '%Domain\ Admins ALL=(ALL) ALL' >> /etc/sudoers"
sh -c "echo '%администраторы\ домена ALL=(ALL) ALL' >> /etc/sudoers"
#mcedit /etc/krb5.conf
#default_tgs_enctypes = aes256-cts-hmac-sha1-96 aes128-cts-hmac-sha1-96 RC4-HMAC DES-CBC-CRC DES3-CBC-SHA1 DES-CBC-MD5
#default_tkt_enctypes = aes256-cts-hmac-sha1-96 aes128-cts-hmac-sha1-96 RC4-HMAC DES-CBC-CRC DES3-CBC-SHA1 DES-CBC-MD5
#preferred_enctypes = aes256-cts-hmac-sha1-96 aes128-cts-hmac-sha1-96 RC4-HMAC DES-CBC-CRC DES3-CBC-SHA1 DES-CBC-MD5
perl -i"*_$(date +'%Y%m%d_%H%M%S').bak" -pE 's/permitted_enctypes = aes256-cts-hmac-sha1-96/#permitted_enctypes = aes256-cts-hmac-sha1-96/i' /etc/krb5.conf.d/crypto-policies
service sssd restart
service sssd status
id usr1cv83
kinit usr1cv83
#login usr1cv83
su usr1cv83
Здесь тоже все по инструкции с сайта производителя.
Единственный подводный камень — файл /etc/krb5.conf.d/crypto-policies который устанавливает предпочтительный вариант шифрования файла keytab в aes256-cts-hmac-sha1-96, а 1С пока хочет видеть RC4-HMAC.
Его комментируем строкой на perl.
На выходе обязательно надо получить 100% результат при выполнении команд
Не забываем о том, что 1С рекомендует однократно войти под логином пользователем сервера, чтобы создался его домашний каталог
Первое блюдо
Устанавливаем и настраиваем сервер 1С и postgres
#Установка 1С
mkdir -p /1c
chmod -R +777 /1c
tar xvzf *.tar.gz
unzip *.zip
./setup-full-8.3.*.run --enable-components server
usermod -aG grp1cv8 usr1cv83
chown -R usr1cv83:grp1cv8 /1c
chmod -R +777 /1c
chown -R usr1cv83:grp1cv8 /var/1C/licenses/
chown -R usr1cv83:grp1cv8 /home/usr1cv83@test.loc/
chown -R usr1cv83:grp1cv8 /1c
#Установка postgreSQL
wget repo.postgrespro.ru/1c-16/keys/pgpro-repo-add.sh
sh pgpro-repo-add.sh
wget rpms.remirepo.net/enterprise/8/remi/x86_64/libicu65-65.1-1.el8.remi.x86_64.rpm
rpm -ivh *.rpm
#rename -v -n 'so.6' 'so.6.bak' /opt/1cv8/x86_64/8.3.2*.*/libstdc++.so.6
#для рабочей станции
#find '/opt' -name 'libstdc++.so.6' -print0 | xargs -n1 -0 -t rename -v -n 'so.6' 'so.6.bak'
#find '/opt' -name 'libstdc++.so.6' -print0 | xargs -n1 -0 -t rename -v 'so.6' 'so.6.bak'
yum install postgrespro-1c-16 -y
sudo -u postgres psql -U postgres -c "alter user postgres with password '123456';"
На выходе обязательно надо получить 100% результат работающий сервер 1С и возможность подключиться к нему с клиентов, в этот же момент можно создать чистую базу 1С.
Пока устанавливается сервер идем на контроллер домена и создаем учетную запись под которой будет работать сервер 1С, почти аналогично как это было для сервера на windows. Но не совсем...
Для нее нам нужно будет создать и передать на linux файл keytab с паролем и записями для служб.
В нашем случае в финальном файле keytab будут три записи принципиалов:
- usr1cv83 для пользователя (имя произвольное) под которым будет работать сервер 1С
- usr1cv83/red-srv.test.loc для службы сервера 1С на конкретном компьютере, помните мы говорили про FQDN, тут надо обратить на это внимание
- HTTP/red-srv.test.loc для службы http на конкретном компьютере
#Кейтаб domain controller
ktpass -princ usr1cv83@TEST.LOC -mapuser usr1cv83 -pass 123456 -ptype KRB5_NT_PRINCIPAL -crypto RC4-HMAC-NT -out %userprofile%\downloads\usr1cv83.keytab -setupn
ktpass -princ usr1cv83/red-srv.test.loc@TEST.LOC -mapuser usr1cv83 -pass 123456 -ptype KRB5_NT_PRINCIPAL -crypto RC4-HMAC-NT -pass 123456 -setpass /in %userprofile%\downloads\usr1cv83.keytab /out %userprofile%\downloads\usr1cv83_1.keytab -setupn
ktpass -princ HTTP/red-srv.test.loc@TEST.LOC -mapuser usr1cv83 -pass 123456 -ptype KRB5_NT_PRINCIPAL -crypto RC4-HMAC-NT -pass 123456 -setpass /in %userprofile%\downloads\usr1cv83_1.keytab /out %userprofile%\downloads\usr1cv83.keytab -setupn
Передаем keytab файл на linux сервер и кладем в каталог с доступом служб сервера 1С и HTTP
Важно
В продуктивной среде этот файл нужно максимально защитить.
Важно
Для учетных записей пользователя и компьютера сервера 1С нужно установить признак делегирования Kerberos
Без этого магия не сработает и вы получите как раз ту самую ошибку 402 Payment Required, она связана именно с этим, а не с тем, о чем все сразу подумали.
Что касается самого пользователя usr1cv83, UPN его не изменится, но обязательно должны добавиться SPN
На выходе обязательно надо получить 100% результат при выполнении команд
klist -e -k -t /1c/usr1cv83.keytab
покажет содержимое файла
kinit -k -t /1c/usr1cv83.keytab usr1cv83@TEST.LOC
аутентифицируется на сервере Kerberos используя записи keytab файла
команда не должна выдать ошибок
klist -e
покажет полученный тикет
Правим файл конфигурации сервера 1С, указав, где находится файл keytab, и поменяв, учетную запись запускаем сервер
mcedit /opt/1cv8/x86_64/8.3.*/srv*@.service
systemctl link /opt/1cv8/x86_64/8.3.24.1467/srv1cv8-8.3.24.1467@.service
systemctl enable srv1cv8-8.3.24.1467@default --now
systemctl restart srv1cv8-8.3.24.1467@default
systemctl status srv1cv8-8.3.24.1467@default --no-pager -l
dnf install msttcore-fonts-installer -y
#/opt/1cv8/x86_64/8.3.*/ras cluster --port=1545
После этого можно в базе 1С создать пользователей с авторизацией ОС, если вы не сделали это раньше и пробовать авторизацию в обычном клиенте 1С.
Второе блюдо
Устанавливаем HTTP сервер и публикуем на нем базу
dnf install httpd -y
systemctl enable httpd --now
touch /etc/httpd/conf.d/demo.conf
/opt/1cv8/x86_64/8.3.*/webinst -publish -apache24 -wsdir demo -dir /var/www/demo -connstr "Srvr=red-srv;Ref=demo" -confpath /etc/httpd/conf.d/demo.conf
Из хитростей только то, что мы не портим меняем общий файл конфигурации веб-сервера, а создаем отдельный файл конфигурации для отдельной базы 1С
в него мы прописываем настройки для авторизации Kerberos
# 1c publication
Alias "/demo" "/var/www/demo/"
<Directory "/var/www/demo/">
AllowOverride None
Options None
Order allow,deny
Allow from all
SetHandler 1c-application
AuthName "1C:Enterprise web client"
AuthType Kerberos
Krb5Keytab /1c/usr1cv83.keytab
KrbVerifyKDC off
KrbDelegateBasic off
KrbServiceName HTTP/red-srv.test.loc@TEST.LOC
#KrbServiceName any не надо так делать
KrbSaveCredentials on
KrbMethodK5Passwd off
KrbAuthRealms TEST.LOC
KrbMethodNegotiate on
Require valid-user
# Require all granted для проверки можно раскомментировать
ManagedApplicationDescriptor "/var/www/demo/default.vrd"
</Directory>
не забываем сам пакет mod_auth_kerb установить и перезапустить веб-сервер
dnf install mod_auth_kerb -y
systemctl restart httpd
systemctl status httpd --no-pager -l
Если все сделано правильно, то после перезапуска сервера мы сможем войти в базу 1С как из веб-клиента 1С, так и обычного браузера.
Со всех рабочих станций
На РедОС надо еще настроить браузеры на прозрачную авторизацию ОС для нашего домена.
mkdir -p /etc/chromium/policies/managed/
touch /etc/chromium/policies/managed/mydomain.json
mcedit /etc/chromium/policies/managed/mydomain.json
mkdir -p /etc/opt/yandex/browser/policies/managed/
touch /etc/opt/yandex/browser/policies/managed/mydomain.json
mcedit /etc/opt/yandex/browser/policies/managed/mydomain.json
содержимое файла
{
"AuthServerAllowlist": "*.test.loc",
"AuthNegotiateDelegateAllowlist": "*.test.loc"
}
Сладкое и компот
Если вы не устали, то продолжим.
Сервер 1С сам достаточно часто является клиентом, например другого сервера 1С, поэтому нужно чтобы и его могли прозрачно авторизовать по учетной записи ОС.
Эта часть ни в какой документации не описана, поэтому подробнее.
В windows мы просто в службах прописывали учетную запись и пароль пользователя от которого работает сервер 1С.
В linux мы нигде пароль не сохраняем, единственное, что нам может помочь, это билет пользователя Kerberos.
Когда мы вводили компьютер в домен, то в файле /etc/krb5.conf указали место хранения кэша
default_ccache_name = FILE:/tmp/krb5cc_%{uid}
Пользователь авторизуется и его билет помещается в кэш.
Пока он там, сервер 1С авторизуется как обычный пользователь на сервисах домена и все идет по плану. Мы делаем HTTP запрос &НаСервере и проходим авторизацию на веб сервере DC
Если бы не время жизни билета. Обычно оно составляет 24 часа.
Нет билета, нет авторизации
Вариант простой, как гвоздь, раз в сутки авторизоваться с учетной записью usr1cv83.
вижу как в меня летит помидор
Не вариант.
Но у нас есть keytab файл для пользователя usr1cv83. Делаем
kinit -k -t /1c/usr1cv83.keytab usr1cv83@TEST.LOC
сейчас билет usr1cv83 попал в кэш по id root, если мы под рутом.
Осталось узнать id usr1cv83
id -u usr1cv83
в нашем случае это 149401151 и сделать
mv /tmp/krb5cc_0 /tmp/krb5cc_149401151
chown -R usr1cv83:grp1cv8 /tmp/krb5cc_149401151
Заносим эти строки в скрипт и запускаем его чуть чаще, чем время жизни билета.
Все. Обед готов.
Ничего особо сложного.
Варите свой сервер по данному рецепту, у вас не будет проблем с авторизацией ОС 1С и вы будете жить с ним долго и счастливо, пока обновление не разлучит вас.
В планах написать продолжение, в котором расставить точки над ё рассказать, как отлаживать эту систему на этапе настройки, какие могут быть ошибки и как они проявляются.
Будет интересно, вы знаете, что сделать.
Найдете ошибки, вы знаете, где меня искать.
Ошибки есть у всех, в планах сделать публикацию(и) из серии "Разрушители легенд", где поразбирать ошибки других публикаций)
В театре посреди спектакля крик из зала.
— Врач! В зале есть врач?
— Я врач!
— Что за фигню нам показывают, коллега?
В благословенные времена, когда семинары проходили не онлайн, а в конференц-холлах, обязательно на галерке сидел технически продвинутый человек, который рвал на себе волосы показывая пальцем в докладчика и тихим шепотом советуя так не делать.
Причем иногда количество волос на голове этого человека намекало, на скольки конференциях он уже побывал.
Статья продолжает серию публикаций:
- Бесплатный вебинар "В облаке, как дома: Как настроить рабочее место пользователя 1С на базе РЕД ОС"
- В облаке, как дома: Устраиваемся поудобнее. Рабочее место пользователя 1С на базе РЕД ОС (HTTPS и архивирование)
- Три пингвина под окном… Обзор рабочих мест пользователя 1С, собранных на отечественных дистрибутивах linux
- Три пингвина под окном… Точки над Ё. Обзор рабочих мест пользователя 1С, собранных на отечественных дистрибутивах linux
- Установка 1С: Сервера взаимодействия. Заметки на полях
- Сервер 1С: Предприятие на Ubuntu 16.04 и PostgreSQL 9.6, для тех, кто хочет узнать его вкус. Рецепт от Капитана обратите внимание на дату публикации
- 1С в 1cloud.ru. Теплое, ламповое, свое отчет о походе в питерский офис ©Serverspace когда он еще не был Serverspace
Серия "Рецепты от Капитана" на всякий случай
- Подготовка к экзамену 1С: Специалист по платформе. Рецепты от Капитана
- Настройка сборки данных в Performance Monitor Windows Server. Рецепты от Капитана
- Сервер 1С: Предприятие на Ubuntu 16.04 и PostgreSQL 9.6, для тех, кто хочет узнать его вкус. Рецепт от Капитана
Также на всякий случай полный листинг установки
#Листинг установки к публикации "В облако на работу: Все варианты авторизации ОС сервером 1С на базе РЕД ОС 8 в домене windows. Рецепты от Капитана"
#https://infostart.ru/1c/2060304/
#Автор Андрей Капитонов
#свободное распостранение с указанием авторства
#изменяем локаль на русскую
localectl
dnf install glibc-langpack-ru -y
localectl set-locale LANG=ru_RU.utf8
localectl
#изменяем профиль производительности на высокую производительность
dnf install tuned -y
systemctl enable --now tuned
tuned-adm active
tuned-adm profile throughput-performance
tuned-adm active
#обновляем установленные пакеты
dnf update -y
dnf install mc -y
#Отключение SeLinux
perl -i"*_$(date +'%Y%m%d_%H%M%S').bak" -pE 's/SELINUX=enforcing/SELINUX=permissive/i' /etc/selinux/config
setenforce 0
#Настройка сети и имени хоста
hostnamectl set-hostname red-srv.test.loc
sh -c "echo '127.0.0.1 `hostname -f` `hostname -s`' >> /etc/hosts"
cat /etc/hosts
nmtui
# или
#ls -1 /etc/NetworkManager/system-connections/
#mcedit /etc/NetworkManager/system-connections/ххх.nmconnection
systemctl restart NetworkManager
reboot
nslookup dc
nslookup dc.test.loc
#mcedit /etc/resolv.conf
#Настройка синхронизации времени
#systemctl disable chronyd --now
#mcedit /etc/systemd/timesyncd.conf
#systemctl restart systemd-timesyncd
#timedatectl status
#timedatectl timesync-status
#mcedit /etc/systemd/timesyncd.conf
#systemctl restart systemd-timesyncd
#timedatectl status
timedatectl list-timezones
timedatectl set-timezone Europe/Moscow
sed -i 's/server/#server/g' /etc/chrony.conf
sh -c "echo 'server dc.test.loc iburst' >> /etc/chrony.conf"
systemctl restart chronyd
chronyc tracking
#Ввод в домен
dnf install -y realmd sssd oddjob oddjob-mkhomedir adcli samba-common samba-common-tools krb5-workstation
realm discover test.loc
realm join -U -v administrator test.loc
realm discover test.loc
sed -i 's/use_fully_qualified_names = True/use_fully_qualified_names = False/g' /etc/sssd/sssd.conf
sh -c "echo 'ad_gpo_access_control = permissive' >> /etc/sssd/sssd.conf"
authselect select sssd with-fingerprint with-gssapi with-mkhomedir with-smartcard --force
sh -c "echo '* — nofile 16384' >> /etc/security/limits.conf"
sh -c "echo 'root - nofile 16384' >> /etc/security/limits.conf"
sed -i 's;default_ccache_name = KEYRING:persistent:%{uid};default_ccache_name = FILE:/tmp/krb5cc_%{uid};g' /etc/krb5.conf
sed -i '/krb5cc_%{uid}/a default_realm = TEST.LOC' /etc/krb5.conf
sh -c "echo '%Domain\ Admins ALL=(ALL) ALL' >> /etc/sudoers"
sh -c "echo '%администраторы\ домена ALL=(ALL) ALL' >> /etc/sudoers"
#mcedit /etc/krb5.conf
#default_tgs_enctypes = aes256-cts-hmac-sha1-96 aes128-cts-hmac-sha1-96 RC4-HMAC DES-CBC-CRC DES3-CBC-SHA1 DES-CBC-MD5
#default_tkt_enctypes = aes256-cts-hmac-sha1-96 aes128-cts-hmac-sha1-96 RC4-HMAC DES-CBC-CRC DES3-CBC-SHA1 DES-CBC-MD5
#preferred_enctypes = aes256-cts-hmac-sha1-96 aes128-cts-hmac-sha1-96 RC4-HMAC DES-CBC-CRC DES3-CBC-SHA1 DES-CBC-MD5
perl -i"*_$(date +'%Y%m%d_%H%M%S').bak" -pE 's/permitted_enctypes = aes256-cts-hmac-sha1-96/#permitted_enctypes = aes256-cts-hmac-sha1-96/i' /etc/krb5.conf.d/crypto-policies
service sssd restart
service sssd status
id usr1cv83
kinit usr1cv83
su usr1cv83
#login usr1cv83
#Установка 1С
mkdir -p /1c
chmod -R +777 /1c
tar xvzf *.tar.gz
unzip *.zip
./setup-full-8.3.*.run --enable-components server
usermod -aG grp1cv8 usr1cv83
chown -R usr1cv83:grp1cv8 /1c
chmod -R +777 /1c
chown -R usr1cv83:grp1cv8 /var/1C/licenses/
chown -R usr1cv83:grp1cv8 /home/usr1cv83@test.loc/
chown -R usr1cv83:grp1cv8 /1c
mcedit /opt/1cv8/x86_64/8.3.*/srv*@.service
systemctl link /opt/1cv8/x86_64/8.3.24.1467/srv1cv8-8.3.24.1467@.service
systemctl enable srv1cv8-8.3.24.1467@default --now
systemctl restart srv1cv8-8.3.24.1467@default && sleep 10 && systemctl status srv1cv8-8.3.24.1467@default --no-pager -l
systemctl status srv1cv8-8.3.24.1467@default --no-pager -l
dnf install msttcore-fonts-installer -y
#Установка postgreSQL
wget repo.postgrespro.ru/1c-16/keys/pgpro-repo-add.sh
sh pgpro-repo-add.sh
#wget rpms.remirepo.net/enterprise/8/remi/x86_64/libicu65-65.1-1.el8.remi.x86_64.rpm
#rename -v -n 'so.6' 'so.6.bak' /opt/1cv8/x86_64/8.3.2*.*/libstdc++.so.6
#для рабочей станции
#find '/opt' -name 'libstdc++.so.6' -print0 | xargs -n1 -0 -t rename -v -n 'so.6' 'so.6.bak'
#find '/opt' -name 'libstdc++.so.6' -print0 | xargs -n1 -0 -t rename -v 'so.6' 'so.6.bak'
yum install postgrespro-1c-16 -y
sudo -u postgres psql -U postgres -c "alter user postgres with password '123456';"
#/opt/1cv8/x86_64/8.3.*/ras cluster --port=1545
#Кейтаб domain controller
ktpass -princ usr1cv83@TEST.LOC -mapuser usr1cv83 -pass 123456 -ptype KRB5_NT_PRINCIPAL -crypto RC4-HMAC-NT -out %userprofile%\downloads\usr1cv83.keytab -setupn
ktpass -princ usr1cv83/red-srv.test.loc@TEST.LOC -mapuser usr1cv83 -pass 123456 -ptype KRB5_NT_PRINCIPAL -crypto RC4-HMAC-NT -pass 123456 -setpass /in %userprofile%\downloads\usr1cv83.keytab /out %userprofile%\downloads\usr1cv83_1.keytab -setupn
ktpass -princ HTTP/red-srv.test.loc@TEST.LOC -mapuser usr1cv83 -pass 123456 -ptype KRB5_NT_PRINCIPAL -crypto RC4-HMAC-NT -pass 123456 -setpass /in %userprofile%\downloads\usr1cv83_1.keytab /out %userprofile%\downloads\usr1cv83.keytab -setupn
klist -e -k -t /1c/usr1cv83.keytab
kinit -k -t /1c/usr1cv83.keytab usr1cv83@TEST.LOC
#Веб сервер
dnf install httpd -y
systemctl enable httpd --now
touch /etc/httpd/conf.d/demo.conf
/opt/1cv8/x86_64/8.3.*/webinst -publish -apache24 -wsdir demo -dir /var/www/demo -connstr "Srvr=red-srv;Ref=demo" -confpath /etc/httpd/conf.d/demo.conf
mcedit /etc/httpd/conf.d/demo.conf
# 1c publication
Alias "/demo" "/var/www/demo/"
<Directory "/var/www/demo/">
AllowOverride None
Options None
Order allow,deny
Allow from all
SetHandler 1c-application
AuthName "1C:Enterprise web client"
AuthType Kerberos
Krb5Keytab /1c/usr1cv83.keytab
KrbVerifyKDC off
KrbDelegateBasic off
KrbServiceName HTTP/red-srv.test.loc@TEST.LOC
#KrbServiceName any
KrbSaveCredentials on
KrbMethodK5Passwd off
KrbAuthRealms TEST.LOC
KrbMethodNegotiate on
Require valid-user
# Require all granted
ManagedApplicationDescriptor "/var/www/demo/default.vrd"
</Directory>
dnf install mod_auth_kerb -y
systemctl restart httpd
systemctl status httpd --no-pager -l
#Обратная авторизация 1С
id -u usr1cv83
kinit -k -t /1c/usr1cv83.keytab usr1cv83@TEST.LOC
mv /tmp/krb5cc_0 /tmp/krb5cc_149401151
chown -R usr1cv83:grp1cv8 /tmp/krb5cc_149401151
#настройка браузеров на линукс клиенте
mkdir -p /etc/chromium/policies/managed/
touch /etc/chromium/policies/managed/mydomain.json
mcedit /etc/chromium/policies/managed/mydomain.json
mkdir -p /etc/opt/yandex/browser/policies/managed/
touch /etc/opt/yandex/browser/policies/managed/mydomain.json
mcedit /etc/opt/yandex/browser/policies/managed/mydomain.json
{
"AuthServerAllowlist": "*.test.loc",
"AuthNegotiateDelegateAllowlist": "*.test.loc"
}