Путь в тысячу ли начинается с первого шага.
©Лао-цзы
![](/upload/iblock/9de/9de34da1769e3718526e95d6308f21e5.jpg)
Когда публиковались первые статьи серии "Три пингвина под окном…", проходившие мимо админы делали грустную мину и рассказывали, как непосильно тяжело будет при переходе с обычной рабочей группы на серверах РедОС в домен active directory.
Из объяснительной админа,
почему ничего не сделано за рабочий день...
- Иди, - говорю ему, - купи две третьих балтики.
Пришёл, ставит на стол упаковку.
- Ты что купил? Девятку?
- А я взял шесть девятых. Две третьих - это же шесть девятых!
Математик хренов.
Админы, носящие гордое звание системных, уже не те, как прежде.
Это раньше они слушали музыку сервера (или музыку у сервера) и за некоторое количество крепких, крепленых и слегка разбавленных напитков их можно было заинтересовать проблемами 1С.
Нынче админы витают в облаках, переносят там что-то между лезвиями и на просьбы поминают всех скандинавских богов и самого Линуса всуе.
Возможно изначально линуксовые админы и в курсе проблемы, но в основной массе они считают, завести сервер 1С в домен, создать пользователя для службы и выдать права программисту 1С, на этом миссия выполнена.
Поэтому большинству 1С ников придется погрузиться в мифологию Kerberos.
В домене AD проблема усукабляется еще и тем, что у вас не будет прав проверить, как администраторы выполнили ваши просьбы по инструкции с ИТС.
Масла в огонь подлило выступление на IE 2023 спикеров из Авито, как им даже в паре с 1С РКЛ не удалось настроить доменную авторизацию 1С апача на линуксе.
С такими исходными данными мы выступаем в поход за авторизацию ОС сервером 1С (и сервера 1С) в смешанном домене windows (linux & windows рабочие станции).
Ингредиенты:
![](/upload/iblock/e50/e50bbc37267ca8190b4f147f38fb65cb.png)
- Контроллер домена, сервер Windows 2012 R2, домен AD уровня Windows 2012. dc.test.loc
![](/upload/iblock/50c/50c9280de462c060ce06a8ea817ef3dd.png)
- Рабочая станция Windows 10. win-cln01.test.loc
![](/upload/iblock/71c/71cc849e47e19cdebe532cac36a96ea9.png)
- Рабочая станция РедОС 8. red8-cln01.test.loc
![](/upload/iblock/b1c/b1cb48ba751fc14957cb0956c399dedc.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 https://rpms.remirepo.net/enterprise/8/remi/x86_64/libicu65-65.1-1.el8.remi.x86_64.rpm
rpm -ivh *.rpm
Кроме того, что под капотом (новое ядро, новые сборки пакетов) РедОС 8 включает в себя возможность пользователю выбрать самому где у него будет кнопка Пуск находиться или выбрать интерфейс в стиле Mac.
![](/upload/iblock/603/603c7fa2bc2471991075e93f908eec71.png)
Результат:
- прозрачная авторизация ОС для обычных клиентов 1С с рабочих станций
![](/upload/iblock/52b/52b447d5c1ab06f3b64b1479391253b5.png)
- прозрачная авторизация ОС для веб-клиентов 1С с рабочих станций
![](/upload/iblock/f6f/f6f6fa84f201209cf3790af3fcb9ea8a.png)
![](/upload/iblock/6b0/6b00f711fb46859747a66cb09b09f92a.png)
- прозрачная авторизация ОС 1С открытой в браузере
![](/upload/iblock/824/82432b2a3178218309018f156aafe1f6.png)
- прозрачная авторизация ОС запросов идущих с сервера 1С, на примере обращения к веб-серверу с отключенной анонимной и включенной авторизацией windows
![](/upload/iblock/d22/d229f5597cc902dea81f656a0f97bb17.png)
Те, кто больше любит видео, могут и сейчас посмотреть его вместо чтения статьи, желательно и то, и другое.
Для остальных приступаем.
Аперитив
Рутинные операции первичной настройки сервера: обновление пакетов, настройка сети, настройка синхронизации времени. Тем не менее, не стоит пренебрегать их важностью. Здесь фраза: Как вы яхту назовете, как нельзя кстати.
![](/upload/iblock/9b7/9b7d7ae934a5cf40f0bb645ea9383352.jpg)
Если вы используете 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
так как тестовый контур в этом плане очень нестабилен из-за постоянных перезагрузок, после которых рабочая станция в хаотичном порядке может принять время хоста, а время дорого в прямом и переносном смысле, то использовал их оба.
![](/upload/iblock/2e0/2e0c092ef38aa6ec585be3cd71f45c4e.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
![](/upload/iblock/c95/c9502e4f6e2e20dac769059e92afbc42.png)
Не забываем о том, что 1С рекомендует однократно войти под логином пользователем сервера, чтобы создался его домашний каталог
![](/upload/iblock/a32/a3278075b9b823f84b7fddf9606b24b6.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 https://repo.postgrespro.ru/1c-16/keys/pgpro-repo-add.sh
sh pgpro-repo-add.sh
wget https://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С.
![](/upload/iblock/d8c/d8c141fedd30b386300cc685f181294a.png)
Пока устанавливается сервер идем на контроллер домена и создаем учетную запись под которой будет работать сервер 1С, почти аналогично как это было для сервера на windows. Но не совсем...
Для нее нам нужно будет создать и передать на linux файл keytab с паролем и записями для служб.
В нашем случае в финальном файле keytab будут три записи принципиалов:
- usr1cv83 для пользователя (имя произвольное) под которым будет работать сервер 1С
- usr1cv83/red-srv.test.loc для службы сервера 1С на конкретном компьютере, помните мы говорили про FQDN, тут надо обратить на это внимание
- HTTP/red-srv.test.loc для службы http на конкретном компьютере
![](/upload/iblock/e66/e662bbbe7afaec3f805b1f7e4e9a62a3.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
![](/upload/iblock/8e7/8e709cc0863a66a291d628f7c80c2d84.png)
![](/upload/iblock/326/3268d50b5938b78676eb635341123292.png)
Без этого магия не сработает и вы получите как раз ту самую ошибку 402 Payment Required, она связана именно с этим, а не с тем, о чем все сразу подумали.
Что касается самого пользователя usr1cv83, UPN его не изменится, но обязательно должны добавиться SPN
![](/upload/iblock/9ed/9eda046771296038eacd1b34ca3e12c3.png)
![](/upload/iblock/1d3/1d3e53500bc4932e12123a9777e8f47d.png)
На выходе обязательно надо получить 100% результат при выполнении команд
klist -e -k -t /1c/usr1cv83.keytab
покажет содержимое файла
![](/upload/iblock/7c6/7c616c9f85d39fdbf09da72c957c0fdc.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
![](/upload/iblock/21a/21a95aa10c2320ee7353db97a70417cd.png)
После этого можно в базе 1С создать пользователей с авторизацией ОС, если вы не сделали это раньше и пробовать авторизацию в обычном клиенте 1С.
![](/upload/iblock/4df/4dfcab8e54c77ea1ca0fecc16afc274d.png)
![](/upload/iblock/52b/52b447d5c1ab06f3b64b1479391253b5.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/"
<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>
![](/upload/iblock/dba/dba3c6cc544af258dfba0658382e989e.png)
не забываем сам пакет mod_auth_kerb установить и перезапустить веб-сервер
dnf install mod_auth_kerb -y
systemctl restart httpd
systemctl status httpd --no-pager -l
Если все сделано правильно, то после перезапуска сервера мы сможем войти в базу 1С как из веб-клиента 1С, так и обычного браузера.
Со всех рабочих станций
![](/upload/iblock/f6f/f6f6fa84f201209cf3790af3fcb9ea8a.png)
![](/upload/iblock/824/82432b2a3178218309018f156aafe1f6.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"
}
![](/upload/iblock/a5d/a5d29b10fa45132686a6cea4ea5de621.png)
![](/upload/iblock/6b0/6b00f711fb46859747a66cb09b09f92a.png)
Сладкое и компот
Если вы не устали, то продолжим.
Сервер 1С сам достаточно часто является клиентом, например другого сервера 1С, поэтому нужно чтобы и его могли прозрачно авторизовать по учетной записи ОС.
Эта часть ни в какой документации не описана, поэтому подробнее.
В windows мы просто в службах прописывали учетную запись и пароль пользователя от которого работает сервер 1С.
В linux мы нигде пароль не сохраняем, единственное, что нам может помочь, это билет пользователя Kerberos.
Когда мы вводили компьютер в домен, то в файле /etc/krb5.conf указали место хранения кэша
default_ccache_name = FILE:/tmp/krb5cc_%{uid}
Пользователь авторизуется и его билет помещается в кэш.
![](/upload/iblock/ecd/ecd3afc63acbacaed2ee9b0b9a9a6921.png)
Пока он там, сервер 1С авторизуется как обычный пользователь на сервисах домена и все идет по плану. Мы делаем HTTP запрос &НаСервере и проходим авторизацию на веб сервере DC
![](/upload/iblock/d22/d229f5597cc902dea81f656a0f97bb17.png)
Если бы не время жизни билета. Обычно оно составляет 24 часа.
![](/upload/iblock/09f/09f946946ee3ce9d44eb33d78ce1aeeb.png)
Нет билета, нет авторизации
![](/upload/iblock/0bf/0bf73b03119bdd414e8351fffbd8b902.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. Рецепты от Капитана"
#//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 https://repo.postgrespro.ru/1c-16/keys/pgpro-repo-add.sh
sh pgpro-repo-add.sh
#wget https://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"
}