В облако на работу: Все варианты авторизации ОС сервером 1С на базе РЕД ОС 8 в домене windows. Рецепты от Капитана

В публикации рассматриваются все варианты авторизации ОС сервером 1С на базе РЕД ОС 8 в домене windows. Как случаи, когда сервер 1С авторизирует веб и обычных клиентов 1С в active directory, так и когда сам сервер является клиентом, например при HTTP запросах выполняемых сервером 1С. Тех, кто заинтересовался, прошу под кат…

utmauqb1qqcpces9bof_unqju1o.jpeg

Путь в тысячу ли начинается с первого шага.
©Лао-цзы

qk9sdysk8ykh3-dz6kj_at0qhla.jpeg

Когда публиковались первые статьи серии «Три пингвина под окном…», проходившие мимо админы делали грустную мину и рассказывали, как непосильно тяжело будет при переходе с обычной рабочей группы на серверах РедОС в домен active directory.

Лирическое отступление

Из объяснительной админа,
почему ничего не сделано за рабочий день…
 — Иди, — говорю ему, — купи две третьих балтики.
Пришёл, ставит на стол упаковку.
 — Ты что купил? Девятку?
 — А я взял шесть девятых. Две третьих — это же шесть девятых!
Математик хренов.

 

Админы, носящие гордое звание системных, уже не те, как прежде.
Это раньше они слушали музыку сервера (или музыку у сервера) и за некоторое количество крепких, крепленых и слегка разбавленных напитков их можно было заинтересовать проблемами 1С.
Нынче админы витают в облаках, переносят там что-то между лезвиями и на просьбы поминают всех скандинавских богов и самого Линуса всуе.
Возможно изначально линуксовые админы и в курсе проблемы, но в основной массе они считают, завести сервер 1С в домен, создать пользователя для службы и выдать права программисту 1С, на этом миссия выполнена.
Поэтому большинству 1С ников придется погрузиться в мифологию Kerberos.
В домене AD проблема усукабляется еще и тем, что у вас не будет прав проверить, как администраторы выполнили ваши просьбы по инструкции с ИТС.
 

Масла в огонь подлило выступление на IE 2023 спикеров из Авито, как им даже в паре с 1С РКЛ не удалось настроить доменную авторизацию 1С апача на линуксе.

С такими исходными данными мы выступаем в поход за авторизацию ОС сервером 1С (и сервера 1С) в смешанном домене windows (linux & windows рабочие станции).

Ингредиенты:
mylgy74atekz3zng8fl-hvbvqcg.png

  • Контроллер домена, сервер Windows 2012 R2,  домен AD уровня Windows 2012. dc.test.loc
    uv8grjs4h5oeyfzxbmfywjcr9vu.png
  • Рабочая станция Windows 10. win-cln01.test.loc
    9bfh9naezzl1fggsh0rsbogfw-k.png
  • Рабочая станция РедОС 8. red8-cln01.test.loc
    asrd3xfekitvvzrgkl1e7wm05cq.png
  • Сервер 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.
ubesjupaoiz-ctr0uekz3p_ldcu.png

Результат:

Те, кто больше любит видео, могут и сейчас посмотреть его вместо чтения статьи, желательно и то, и другое.

Видео

Для остальных приступаем.

Аперитив

Рутинные операции первичной настройки сервера:  обновление пакетов, настройка сети, настройка синхронизации времени. Тем не менее, не стоит пренебрегать их важностью. Здесь фраза: Как вы яхту назовете, как нельзя кстати. 
omjc_bmjfy_wjwnerwhcgzitjvc.jpeg
Если вы используете 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
    так как тестовый контур в этом плане очень нестабилен из-за постоянных перезагрузок, после которых рабочая станция в хаотичном порядке может принять время хоста, а время дорого в прямом и переносном смысле, то использовал их оба.
    6d0eulsvpjkmh5b1hug0bwvsqmu.png

Ввод РЕД ОС в домен 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% результат при выполнении команд

id usr1cv83
kinit usr1cv83
f3rizfi66qfzq618rittx5ar3-q.png

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

Первое блюдо

Устанавливаем и настраиваем сервер 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С.
9mtiqg5bh3vif6ehz4niytgko18.png
Пока устанавливается сервер идем на контроллер домена и создаем учетную запись под которой будет работать сервер 1С, почти аналогично как это было для сервера на windows. Но не совсем…
Для нее нам нужно будет создать и передать на linux файл keytab с паролем и записями для служб.
В нашем случае в финальном файле keytab будут три записи принципиалов:

  • usr1cv83 для пользователя (имя произвольное) под которым будет работать сервер 1С
  • usr1cv83/red-srv.test.loc для службы сервера 1С на конкретном компьютере, помните мы говорили про FQDN, тут надо обратить на это внимание
  • HTTP/red-srv.test.loc для службы http на конкретном компьютере
    kajtfgvdj2h-yhq5nn58t9sdgou.png
Командная строка

 #Кейтаб 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
ifptw4dcq9us5zpoxdo1qzu2xfw.png
rt0uy5eootsp7blzth_rjpozahw.png

Без этого магия не сработает и вы получите как раз ту самую ошибку 402 Payment Required, она связана именно с этим, а не с тем, о чем все сразу подумали.
Что касается самого пользователя usr1cv83,   UPN его не изменится, но обязательно должны добавиться SPN
7hlbn6j_mic6tmsamumy8nh5p5w.png

htymqecy-ozesob0bjyk8lbzbwe.png

На выходе обязательно надо получить 100% результат при выполнении команд

klist -e -k -t /1c/usr1cv83.keytab

покажет содержимое файла
p5sipfshrwzkofvxwhyv664snoy.png
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


vzcoz6ux5bjepmugdl9avc8srwu.png

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

fixpufazmxdlljomejwh35nodfe.png
r5f0e09t7r-tk5chleozojvn5oq.png

Второе блюдо

Устанавливаем 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/»

    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»


zesus-4g9wvyhclvd1qc0gxj3qe.png
не забываем сам пакет mod_auth_kerb установить и перезапустить веб-сервер

dnf install mod_auth_kerb -y

systemctl restart httpd 
systemctl status httpd --no-pager -l

Если все сделано правильно, то после перезапуска сервера мы сможем войти в базу 1С как из веб-клиента 1С, так и обычного браузера.
Со всех рабочих станций
17k08e1ctkxpfaslox045u30m8c.png

17k08e1ctkxpfaslox045u30m8c.png

На РедОС надо еще настроить браузеры на прозрачную авторизацию ОС для нашего домена.

Командная строка

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»
}


y--hhrxxurarye6uoddki8apfnu.png
rd6gsoyygvqhwal8k1qha3ufk2e.png

Сладкое и компот

Если вы не устали, то продолжим.
Сервер 1С сам достаточно часто является клиентом, например другого сервера 1С, поэтому нужно чтобы и его могли прозрачно авторизовать по учетной записи ОС.
Эта часть ни в какой документации не описана, поэтому подробнее.
В windows мы просто в службах прописывали учетную запись и пароль пользователя от которого работает сервер 1С.
В linux мы нигде пароль не сохраняем, единственное, что нам может помочь, это билет пользователя Kerberos.
Когда мы вводили компьютер в домен, то в файле /etc/krb5.conf указали место хранения кэша 
default_ccache_name = FILE:/tmp/krb5cc_%{uid}
Пользователь авторизуется и его билет помещается в кэш.
y31l8ihdrcnacpodhjq0o07ia6m.png

Пока он там, сервер 1С авторизуется как обычный пользователь на сервисах домена и все идет по плану. Мы делаем HTTP запрос &НаСервере и проходим авторизацию на веб сервере DC

Если бы не время жизни билета. Обычно оно составляет 24 часа. _nyqnzr7ly_no04kcwszkw2z4-a.png

Нет билета, нет авторизации
g3k_noypuojbolcdc3cbmxuyfpq.png
Вариант простой, как гвоздь, раз в сутки авторизоваться с учетной записью 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С на базе РЕД ОС 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/»

    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»

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»
}


© Habrahabr.ru