Содержание
Сервер управления
Физический или виртуальный сервер. Можно несколько - для распределения нагрузки и/или утилизации каналов связи (механизм балансировки и синхронизации таких серверов - не реализован)
Аналогично контроллеру домена в Windows-окружении предоставляет политики управления тонким клиентами, которые, в свою очередь, являются полноценными членами домена MS Active Directory как объекты-компьютеры.
Параметры сервера
Начать можно с:
- RAM >= 1GB
- HDD >= 5GB
Количество тонких клиентов не сильно влияет на ресурсы сервера, начальных параметров вполне достаточно для обслуживания не менее 300 устройств.
Операционная система
Одинаковая: для сервера и тонких клиентов - любая актуальная RHEL-based система версии 8,
например:
- RHEL
- CentOS (Stream)
- AlmaLinux
- Rocky Linux
- Oracle Linux
Предполагается минимальная начальная инсталляция:
- /etc/dnf/dnf.conf
[main] best=true clean_requirements_on_remove=true deltarpm=false gpgcheck=true installonly_limit=2 install_weak_deps=false max_parallel_downloads=1 plugins=false skip_if_unavailable=false tsflags=nodocs #reposdir=/etc/yum.repos.d/local
и настроенный сетевой стек: IP-адрес, DNS-регистрация и CNAME:
# hostname: srvtc8.aliennet.ru hostnamectl | head -1 Static hostname: srvtc8.aliennet.ru getent hosts srvtc8 192.168.100.200 srvtc8.aliennet.ru # CNAME: tc8 -> srvtc8 getent hosts tc8 192.168.100.200 srvtc8.aliennet.ru tc8.aliennet.ru # CNAME: zmb -> tc8 getent hosts zmb 192.168.100.200 srvtc8.aliennet.ru zmb.aliennet.ru tc8.aliennet.ru
Администратор системы (zmb)
Локальный пользователь на сервере.
В его домашнем каталоге устанавливается все необходимое: веб-сайт, корень сетевой загрузки, пакеты ПО и т.п.
useradd --comment "The Managed Box (ZMB) Administrator" --home-dir /opt/zmb --create-home --user-group zmb chmod -v go+rx /opt/zmb
Рекомендуется:
- настроить ssh-доступ пользователю zmb с авторизацией по ключу;
- назначить необходимый уровень sudo;
- заблокировать суперпользователя root.
Например:
dnf install sudo echo "zmb ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/zmb echo 'root:*' | chpasswd -e
usermod --groups systemd-journal --append zmb
Полезные дополнения:
- /opt/zmb/.bashrc
. . . # User specific aliases and functions alias ping='ping -O'
Далее, по тексту предполагается интерактивная работа на сервере управления
под пользователем zmb
(за исключением очевидных операций суперпользователя).
В качестве ~
выступает домашний каталог: /opt/zmb
.
Необходимые криптографические сущности
SSH
Удаленный административный доступ к тонким клиентам осуществляется по протоколу SSH с авторизацией по ключу.
Интерактивный вход пользователем root на тонких клиентах запрещен (пароль замаскирован):
ssh-keygen
- /opt/zmb/.ssh/config
Host * LogLevel ERROR StrictHostKeyChecking no User root UserKnownHostsFile /dev/null
GPG
Для цифровой подписи пакетов и репозитория:
sudo dnf install createrepo pinentry rng-tools rpm-build rpm-sign rpmdevtools sudo reboot gpg --full-generate-key
Real name: The Managed Box (ZMB) Project Email address: zmb@aliennet.ru
Резервная копия:
gpg --export --armor zmb@aliennet.ru > zmb@aliennet.ru-pub.txt gpg --export-secret-keys --armor zmb@aliennet.ru > zmb@aliennet.ru-sec.txt gpg --export-secret-subkeys --armor zmb@aliennet.ru > zmb@aliennet.ru-sec-sub.txt gpg --export-ownertrust > ownertrust.txt
Восстановление:
gpg --import zmb@aliennet.ru-pub.txt gpg --import zmb@aliennet.ru-sec.txt gpg --import zmb@aliennet.ru-sec-sub.txt gpg --import-ownertrust ownertrust.txt
Полезное:
gpg --edit-key a@b.c gpg> passwd gpg> trust gpg> save
RPM
cd ~
rpmdev-setuptree
Небольшое отступление от «стандартов» - трехбуквенный базовый каталог сборки (для красоты):
mv -fv ~/rpm{build,} sed -i "s/rpmbuild/rpm/g" ~/.rpmmacros echo >> ~/.rpmmacros echo "%_gpg_name$(gpg --list-keys zmb@aliennet.ru | sed -n 2p)" >> ~/.rpmmacros
Структура домашнего каталога /opt/zmb (~)
https://www.aliennet.ru/download/zmb/
~/bin - исполняемые модули, сервисы и таймеры (доступные по PATH) dat - база данных тонких клиентов log - протоколы работы системы rpm - сборочный каталог собственных *.rpm пакетов www - файлы общего доступа web- и pxe- серверов
Электронная почта
Для уведомления о событиях системы и состоянии тонких клиентов:
sudo dnf install postfix
- /etc/aliases
. . . # Person who should get root's mail root: zmb # ZMB Administrator zmb: zmbadm@aliennet.ru
sudo newaliases sudo systemctl --now enable postfix echo test-zmb | sendmail zmb echo test-root | sendmail root
WEB-сервер
Необходим для сетевой установки ОС на тонких клиентах, предоставления им обновлений и политик управления:
sudo dnf install httpd
- /etc/httpd/conf.modules.d/00-optional.conf
. . . LoadModule ratelimit_module modules/mod_ratelimit.so . . .
- /etc/httpd/conf.d/zmb.conf
ServerSignature Off ServerTokens ProductOnly LogFormat "%{%d.%m.%Y %H:%M:%S}t %h %r %>s %b" zmb CustomLog "/opt/zmb/log/httpd-access.log" zmb <VirtualHost *:80> ServerName zmb.aliennet.ru ServerAdmin webmaster@aliennet.ru DocumentRoot "/opt/zmb/www" <Directory "/opt/zmb/www"> Options +Indexes -MultiViews +FollowSymLinks IndexOptions IgnoreCase FancyIndexing FoldersFirst NameWidth=* SuppressDescription SuppressHTMLPreamble AllowOverride All Require all granted </Directory> </VirtualHost> <Location "/cvd"> SetOutputFilter RATE_LIMIT SetEnv rate-limit 20 SetEnv rate-initial-burst 50 </Location>
mkdir -pv ~/log ~/www sudo truncate -s 0 /etc/httpd/conf.d/welcome.conf sudo systemctl --now enable httpd
Базовый каталог основного сайта: ~/www
PXE-сервер
Необходим для загрузки «по сети» тонких клиентов с целью их начальной инициализации:
- /etc/systemd/system/tftp.service.d/override.conf
[Service] ExecStart= ExecStart=/usr/sbin/in.tftpd -s /opt/zmb/www/setup -B 1360
mkdir -pv ~/www/setup sudo dnf install tftp-server sudo systemctl --now enable tftp
Базовый каталог сетевой загрузки: ~/www/setup