Найти тему
Заметки DevOps

Установка 1C Server, Postgres на Linux Ubuntu 22.04.2 и авторизация 1с через Kerberos, Active Directory на Windows

1) Первоначальная подготовка сервера Ubuntu

все действия лучше выполнять из под root

su root
Обновляемся и можно начинать
apt-get update -y && apt-get upgrade -y

Установка локалей

locale-gen en_US.UTF-8
locale-gen ru_RU.UTF-8
update-locale LANG=ru_RU.UTF8
dpkg-reconfigure locales

После установки локалей, необходимо перезагрузить сервер, после перезагрузки проверить, применились ли настройки командой

locale

Результат должен выглядеть так:

LANG=ru_RU.UTF-8
LANGUAGE=
LC_CTYPE="ru_RU.UTF-8"
LC_NUMERIC="ru_RU.UTF-8"
LC_TIME="ru_RU.UTF-8"
LC_COLLATE="ru_RU.UTF-8"
LC_MONETARY="ru_RU.UTF-8"
LC_MESSAGES="ru_RU.UTF-8"
LC_PAPER="ru_RU.UTF-8"
LC_NAME="ru_RU.UTF-8"
LC_ADDRESS="ru_RU.UTF-8"
LC_TELEPHONE="ru_RU.UTF-8"
LC_MEASUREMENT="ru_RU.UTF-8"
LC_IDENTIFICATION="ru_RU.UTF-8"
LC_ALL=

открываем порты для 1с и домена

iptables -A INPUT -p tcp -m tcp -m multiport -m state --state NEW -j ACCEPT --dports 1540,1541,5432
iptables -A INPUT -p tcp -m tcp -m state --dport 1560:1591 --state NEW -j ACCEPT
iptables -A INPUT -m state --state NEW -m udp -p udp --dport 137 -j ACCEPT
iptables -A INPUT -m state --state NEW -m udp -p udp --dport 138 -j ACCEPT
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 139 -j ACCEPT
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 445 -j ACCEPT
iptables -A INPUT -m state --state NEW -m udp -p udp --dport 631 -j ACCEPT
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 631 -j ACCEPT

2) Установка и настройка Kerberos и ввод в домен

Ставим samba и winbind

apt-get install samba winbind

Ставим авторизацию kerberos

apt-get install krb5-user
apt-get install libpam-krb5 libpam-winbind libnss-winbind

Правим winbind

nano /etc/nsswitch.conf
passwd: files winbind
group: files winbind
initgroups: files winbind
shadow: files
gshadow: files
hosts: files mdns4_minimal [NOTFOUND=return] dns wins
networks: files
protocols: db files
services: db files
ethers: db files
rpc: db files
netgroup: nis

Правим samba

nano /etc/samba/smb.conf
[global]
workgroup = DOMEN
realm = DOMEN.RU

security = ADS
encrypt passwords = true

dns proxy = no
socket options = TCP_NODELAY
panic action = /usr/share/samba/panic-action %d

winbind enum groups = yes
winbind enum users = yes
winbind use default domain = yes
template shell = /bin/bash
winbind refresh tickets = yes

domain master = no
local master = no
preferred master = no
os level = 0
domain logons = no

load printers = no
show add printer wizard = no
printcap name = /dev/null
disable spoolss = yes
server string = %h server (Samba, Ubuntu)

idmap config * : backend = tdb
idmap config * : range = 3000-7999
idmap config DOMEN : backend = tdb
idmap config DOMEN : range = 100000-999999
[share]
path = /home/virtual/Share
writeable = yes
browseable = yes
guest ok = no

Правим ошибку количества соединений

Добавляем в конец файл строку со значением 16384

nano /etc/security/limits.conf
*               -       nofile          16384

Проверяем настройки samba

testparm -s

Изменения лимитов будут приняты после перезагрузки

Правим настройки kerberos

SERV.DOMEN.RU - сервер где находится AD

nano /etc/krb5.conf
[logging]
default = FILE:/var/log/krb5libs.log
default = SYSLOG:DEBUG:DAEMON
kdc = FILE:/var/log/krb5kdc.log
kdc = SYSLOG:DEBUG:DAEMON
admin_server = FILE:/var/log/kadmind.log
admin_server = SYSLOG:DEBUG:DAEMON
[libdefaults]
default_realm = DOMEN.RU
dns_lookup_realm = false
dns_lookup_kdc = false
ticket_lifetime = 24000

default_tkt_enctypes = rc4-hmac
default_tgs_enctypes = rc4-hmac
krb4_config = /etc/krb.conf
krb4_realms = /etc/krb.realms
kdc_timesync = 1
ccache_type = 4
forwardable = true
proxiable = true

v4_instance_resolve = false
v4_name_convert = {
host = {
rcmd = host
ftp = ftp
}
plain = {
something = something-else
}
}
fcc-mit-ticketflags = true

[realms]
DOMEN.RU = {
kdc = SERV.DOMEN.RU
admin_server = SERV.DOMEN.RU
default_domain = DOMEN.RU
}

[domain_realm]
.domen.ru = DOMEN.RU
domen.ru = DOMEN.RU

[login]
krb4_convert = false
krb4_get_tickets = false
[appdefaults]
pam = {
debug = true
ticket_lifetime = 36000
renew_lifetime = 36000
forwardable = false
krb4_convert = false
}

Правим файл hosts

nano /etc/hosts
127.0.0.1 localhost
#127.0.1.1
server1c server1c.domen.ru
192.168.1.5 server1c.
domen.ru

Присоединяем к домену используя учетную запись с правами администратора домена

net ads join -U superadmin@domen.ru domen.ru

Проверяем присоединение

net ads testjoin
net rpc testjoin
Join is OK

Проверяем работу winbind

wbinfo -t
wbinfo -u
wbinfo -g

Должны отобразится списки груп и пользователей из AD

Перезагружаемся и Проверяем работу kerberos

kinit supauser@DOMEN.MY

Смотрим что мы получили

klist
Default principal: supauser@DOMEN.MY
Valid starting       Expires              Service principal
15.03.2023 12:59:59  15.03.2023 19:39:55  krbtgt/DOMEN.MY@DOMEN.MY

отключаем дефолнтный билет kerberos (создается при вводе в домен)

kdestroy

3) Установка Postgresql-14

apt-get install postgresql-common
apt-get install postgrespro-1c-14

Стартуем службу:

service postgrespro-1c-14 start

Проверяем статус:

service postgrespro-1c-14 status

Зададим пароль пользователя postgres

sudo -i -u postgres
/opt/pgpro/1c-14/bin/psql -U postgres -c "alter user postgres with password 'password';"

‘password’ – Ваш пароль, должно вернуть ALTER ROLE

exit

На этом с сервером postgrespro - всё! Перезагружаемся идём дальше.

4) Установка платформы 1С сервер

Установить шрифты mscorefonts

apt install ttf-mscorefonts-installer fontconfig
apt install imagemagick curl

Скачаем нужный дистрибутив с сайта https://releases.1c.ru/project/Platform83

и выбираем "Технологическая платформа 1С:Предприятия (64-bit) для Linux"

распакуем и переходим в папку с распакованным дистрибутивом, запускаем единый установочный файл:

./setup-full-8.3.22.1709-x86_64.run

если не запускается то сделайте права этому файлу на запуск

chmod +x setup-full-8.3.22.1709-x86_64.run

Выбираем русский язык, платформу не ставим, клиенты не ставим, сервер ставим, остальные средства администрирования на ваше усмотрение. Модули расширения веб-сервера нам тут тоже не понадобятся.
Соглашаемся, соглашаемся, соглашаемся, готово.

Регистрируем новую службу (тут надо использовать полный путь):

systemctl link /opt/1cv8/x86_64/8.3.22.1709/srv1cv8-8.3.22.1709@.service

Добавляем новую службу в автозагрузку:

systemctl enable srv1cv8-8.3.22.1709@

редактируем 1с для работы в файлом .keytab

nano /opt/1cv8/x86_64/8.3.22.1709/srv1cv8-8.3.22.1709@.service
SRV1CV8_KEYTAB=/opt/1cv8/x86_64/8.3.22.1709/usr1cv83.keytab

Запускаем службу и проверяем что она работает, перезагружаем сервер:

systemctl start srv1cv8-8.3.22.1709@default.service
systemctl status srv1cv8-8.3.22.1709@default.service
reboot

На этом с сервером 1С - всё! Перезагружаемся и идём дальше.

5) Настройка работы через.keytab

генерируем файл .keytab в AD ()

ktpass /crypto ALL /princ usr1cv8/server1c.domen.ru@DOMEN.RU /mapuser usr1cv8 /pass password /out usr1cv83.keytab

пользователь в AD и на сервер 1с-linux (под которым работает 1с) !!! ДОЛЖНЫ БЫТЬ ОДИНАКОВЫЕ !!! в нашем случаи это "usr1cv8"

кладем файл .keytab на сервер 1с-linux по пути

/opt/1cv8/x86_64/8.3.22.1709/usr1cv83.keytab

даем права на файл .keytab

chown usr1cv8:grp1cv8 usr1cv83.keytab && chmod 600 usr1cv83.keytab

проверяем права

ls -hal /opt/1cv8/x86_64/8.3.22.1709/usr1cv83.keytab
должно быть так
* -rw------- 1 usr1cv8 grp1cv8 362 мар 15 12:45 /opt/1cv8/x86_64/8.3.22.1709/usr1cv83.keytab

говорим kerberos через какой файл работать

kinit -k -t /opt/1cv8/x86_64/8.3.22.1709/usr1cv83.keytab usr1cv8/server1c.domen.ru@DOMEN.RU

Смотрим что мы получили

klist
Default principal: usr1cv8/server1c.domen.ru@DOMEN.RU
Valid starting       Expires              Service principal
15.03.2023 12:59:59  15.03.2023 19:39:55  krbtgt/DOMEN.MY@DOMEN.MY

6) Настройка самой базы 1с для авторизации

Просто указываем автопизацию через домен
\\domen.ru\user

На этом - всё! Всем спасибо.