После обновления платформы 8.3.20.1674, обратил внимание что не выполняется реиндексация баз данных относящихся к 1С, в логах значится ошибка — «Невозможно реорганизовать индекс «_Acc48_1» в таблице «_Acc48″, поскольку отключена блокировка на уровне страницы.»

DRBD (Distributed Replicated Block Device — распределённое реплицируемое блочное устройство) — это блочное устройство, предназначенное для построения отказоустойчивых кластерных систем на операционной системе Linux. DRBD занимается полным отражением (mirroring) по сети всех операций с блочным устройством.

Поступило задание проработать возможность централизованного создания пользовательских подписей в Outlook на основе данных из их учетных записей в Active Directory и так же запрета пользователям задавать свои подписи.

Syncthing — приложение, позволяющее синхронизировать файлы между несколькими устройствами. Разберем как поднять Syncthing на Debian 11 Bullseye.

RADIUS — расширенный протокол удаленной аутентификации пользователей, представляет собой ключевой элемент в обеспечении безопасности и управлении доступом в сетях.

Опишу как настроить алерты на возникающие различные события в MSSQL, дабы быть вовремя информированным о возникшей той или иной проблеме.

В продуктиве имеется два MSSQL работающих в режиме Always On High Availability и после очередного планового переключения ноды в secondary для установки обновлений сервер и перезагрузки, после перезагрузке одна из баз в Always on Availability Group оказалась в статусе — Not Synchronizing.

Ниже опишу как ввести linux систему Debian 10 в домен Windows с помощью Kerberos, Samba, Winbind.

 

Исходные данные:

  • Контроллер домена (DC1) на Windows Server 2019, домен SYSOS.LOCAL
  • Linux система (datastore1) на Debian 10 Buster

 

Подготовка системы

Перед началом выполнения ниже описанных действий обновляем систему до актуального состояния:

apt-get update && apt-get upgrade -y

 

Указываем FQDN (Fully Qualified Domain Name) имя системы, в файле /etc/hostname:

datastore1.sysos.local

 

Так же файл /etc/hosts приводим к виду таким образом, чтобы в нём была запись с полным доменным именем компьютера и с коротким именем, ссылающаяся на один из внутренних IP:

127.0.0.1	localhost
192.168.1.10	datastore1.sysos.local datastore1

 

 

Настройка синхронизации времени

Если разница будет более 5 минут, то будет не возможно получить билет от Kerberos. Настраиваем синхронизацию времени с контроллером домена, выполняем установку NTP:

apt-get install ntp ntpdate

 

В файле конфигурации /etc/ntp.conf, добавляем в него информацию о вашем сервере времени (в моем случае указываю контролер домена):

# You do need to talk to an NTP server or two (or three).
server dc1.sysos.local

 

Перезапускаем службу времени:

/etc/init.d/ntp restart

 

 

Для единовременной синхронизации можно воспользоваться командой:

ntpdate dc1.sysos.local

[stextbox id=’info’]Рекомендую ознакомится подробней о синхронизации времени на Linux системах можно почитать в этой статье и выполнить его настройку.[/stextbox]

В различных ситуациях может понадобится выполнение sudo без ввода пароля. Рассмотрим как это сделать на Linux на нескольких примерах.

 

Для удобства рекомендую хранить файл настроек для каждого пользователя системы (если их много, то будет проще управлять) отдельно в /etc/sudoers.d.

 

 

К примеру для пользователя jakonda, разрешим выполнять абсолютно все команды без sudo пароля:

echo "jakonda ALL=(ALL:ALL) NOPASSWD:ALL" >> /etc/sudoers.d/jakonda

Пояснение по синтаксису:

jakonda Задаём имя пользователя, к которому нужно применить данное правило (в данном случае это jakonda).
Первое ALL Означает, что правило будет применяться ко всем хостам.
Второе ALL Означает, что указанный пользователь может запускать команды в сессии любого пользователя.
Третье ALL Означает, что указанный пользователь может запускать команды в любой группе.
Последнее ALL Указывает, что эти правила нужно применять ко всем командам.

 

 

Если необходимо разрешить выполнять только определенные команды, к примеру chown, chmod:

jakonda ALL=(ALL) NOPASSWD:/usr/bin/chmod,/usr/bin/chown

[stextbox id=’info’]ИНФОРМАЦИЯ. Важно указывать полный путь к исполняемому файлу. Узнать расположение файла можно используя — which <имя команды>.[/stextbox]

 

 

Можно разрешить пользователю перезапускать какую либо службу (к примеру apache):

jakonda ALL=(ALL) NOPASSWD:/usr/bin/systemctl restart apache2

Ранее я уже описывал как добавить поддержку шифрования по ГОСТ Р 34.10-2012 в OpenSSL на Debian 9, недавно возвращался к этому вопросу но уже на системе Debian 11, поэтому решил актуализировать под Debian 11.

 

# Все ниже действия будут производится от root.

 

Устанавливаем необходимые пакеты:

apt-get install g++ gcc make git libssl-dev

 

Поддержу GOST-Engine будем реализовывать для OpenSSL 1.1.1p.

 

Выполняем сборку OpenSSL 1.1.1p, выполняем команды (скачиваем, распаковываем, собираем билд, устанавливаем, настраиваем):

wget https://www.openssl.org/source/openssl-1.1.1p.tar.gz
tar -zxvf openssl-1.1.1p.tar.gz
cd openssl-1.1.1p

./config --prefix=/usr/ssl --openssldir=/usr/ssl
make all
make install

cd .. && rm /usr/bin/openssl
ln -s /usr/ssl/bin/openssl /usr/bin/openssl
echo "/usr/ssl/lib" >> /etc/ld.so.conf.d/ssl.conf
ldconfig

 

Проверяем версию OpenSSL, должно быть так:

openssl version -v
OpenSSL 1.1.1p  21 Jun 2022

 

# Для сборки GOST Engine нужна версия CMake 3.0 и выше.

# Добавляем в систему репозиторий MySQL.

wget https://dev.mysql.com/get/mysql-apt-config_0.8.18-1_all.deb
dpkg -i mysql-apt-config_0.8.18-1_all.deb

[stextbox id=’info’]Установщик пакета предложит вам выбрать версию MySQL для создания репозитория. По умолчанию для конфигурации репозитория выбрана версия MySQL 8.0.[/stextbox]

 

# Обновляем индекс репозитория

apt-get update
apt-get install mysql-community-server -y

[stextbox id=’info’]Во время установки будет предложено ввести пароль от root пользователя, а так же в случае установки MySQL 8.0 будет предложено выбрать метод аутентификации. [/stextbox]

 

# Выполняем настройку безопасности MySQL сервера.

mysql_secure_installation

 

В случае если в процессе обновления индексов репозитория вы увидите ошибку не доступности публичного ключа MySQL репозитория:

Err:2 http://repo.mysql.com/apt/debian buster InRelease
  The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 467B942D3A79BD29
W: GPG error: http://repo.mysql.com/apt/debian buster InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 467B942D3A79BD29
E: The repository 'http://repo.mysql.com/apt/debian buster InRelease' is not signed.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.

 

# Добавляем публичный ключ MySQL репозитория и обновляем локальные индексы репозитория.

apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 467B942D3A79BD29 apt-get update

Рассмотрим как ввести систему Debian в домен Windows с помощью realmd, SSSD.

 

Realmd (Realm Discovery) – сервис D-Bus, позволяющий производить настройку сетевой аутентификации и членства в домене (Active Directory) без сложных настроек. Информация о домене обнаруживается автоматически. Для аутентификации и проверки учетных записей realmd использует SSSD (через Kerberos и LDAP) или Winbind.

 

SSSD (System Security Services Daemon) — это клиентский компонент централизованных решений для управления идентификацией, таких как Microsoft Active Directory, Kerberos, OpenLDAP  и других серверов каталогов. SSSD обслуживает и кэширует информацию, хранящуюся на удаленном сервере каталогов, и предоставляет услуги идентификации, аутентификации и авторизации хост-машине.

 

Исходные данные:

  • Контроллер домена (DC1) на Windows Server 2019, домен JAKONDA.LOCAL (IP — 192.168.1.100)
  • Linux система (debian) на Debian 11 Bullseye (IP — 192.168.1.10)

 

Подготовка системы

# Обновляем информацию о репозиториях и обновляем установленные пакеты:

apt-get update && apt-get upgrade -y

 

Указываем FQDN (Fully Qualified Domain Name) имя системы, в файле /etc/hostname:

debian.jakonda.local

 

Файл /etc/hosts приводим к виду таким образом, чтобы в нём была запись с полным доменным именем компьютера и с коротким именем, ссылающаяся на один из внутренних IP хоста:

127.0.0.1	localhost
192.168.1.10	debian.jakonda.local debian

 

 

Настраиваем клиент DNS на хосте. Файл /etc/resolv.conf приводим к виду с учетом ваших данных:

domain jakonda.local
search jakonda.local
nameserver 192.168.1.100

 

Настройка синхронизации времени

Очень важно для корректной работы чтобы разница во времени между хостом и домен контроллером была минимальная или не превышала более 5 минут, в противном случае не возможно получить билет от Kerberos. Настроим синхронизацию времени с контроллером домена.

 

# Устанавливаем необходимые пакеты:

apt-get install ntp ntpdate

 

В файле /etc/ntp.conf, указываем контроллер домена в качестве точки синхранизации, остальные комментируем :

# You do need to talk to an NTP server or two (or three).
server dc1.jakonda.local

# pool.ntp.org maps to about 1000 low-stratum NTP servers.  Your server will
# pick a different set every time it starts up.  Please consider joining the
# pool: <http://www.pool.ntp.org/join.html>
# pool 0.debian.pool.ntp.org iburst
# pool 1.debian.pool.ntp.org iburst
# pool 2.debian.pool.ntp.org iburst
# pool 3.debian.pool.ntp.org iburst

 

Выполняем единовременную синхронизацию времени с контроллером домена и запускаем службу:

/etc/init.d/ntp stop
ntpdate -bs jakonda.local
/etc/init.d/ntp start

В рамках теста разворачивал ownCloud и при попытке установки внутренного приложения External Storage: Windows Network Drives видел ошибку:

 

Приложение не может быть установлено, следующие зависимости не удовлетворены:

  • The library libsmbclient is not available.

 

Ниже описание как выполнить установку libsmbclient для php7.4 в Debian 11.

 

Устанавливаем необходимые пакеты:

apt-get install php7.4-dev libsmbclient-dev -y

 

С помощью PECL (репозиторий модулей для PHP) устанавливает smbclient для версии 7.4:

pecl -d php_suffix=7.4 install smbclient

 

В файл конфигурации /etc/php/7.4/apache2/php.ini добавляем описание включение модуля

echo 'extension=smbclient.so' >> /etc/php/7.4/apache2/php.ini

 

Перезапустим apache для применения изменений:

/etc/init.d/apache2 restart

Разберем как установить и Collabora Online Development Edition на Debian 11 Bullseye.

 

Collabora Online — это мощный офисный пакет на базе LibreOffice для совместной работы с документами в браузере. В рамках статьи будем устанавливать Collabora Online Development Edition (CODE) версию. Я лично использую CODE в связке с Nextcloud.

 

# Все ниже действия будет выполняться от root.

 

Установка

Импортируем ключ подписи и добавляем репозиторий Collabora Productivity Ltd (/etc/apt/sources.list.d/collaboraonline.sources):

cd /usr/share/keyrings
wget https://collaboraoffice.com/downloads/gpg/collaboraonline-release-keyring.gpg

cat EOF /etc/apt/sources.list.d/collaboraonline.sources
Types: deb
URIs: https://www.collaboraoffice.com/repos/CollaboraOnline/CODE-debian11
Suites: ./
Signed-By: /usr/share/keyrings/collaboraonline-release-keyring.gpg
EOF

 

Обновляем информацию о репозиториях и устанавливаем пакеты:

apt-get update
apt-get install coolwsd code-brand collaboraofficebasis-ru collaboraoffice-dict-ru collaboraoffice-dict-en apache2 apache2-utils -y

 

Настройка coolwsd

Настройка CODE осуществляется через файл — /etc/coolwsd/coolwsd.xml, но более удобный способ настройки через пакет coolconfig. Выполним основные настройки для работы CODE.

 

Задаем пароль администратора для доступа в web консоль CODE.

coolconfig set-admin-password

 

Указываем FQDN имя сервера на котором запущен coolwsd (прим. collaboraonline.example.com):

coolconfig set server_name <fqdn name>

 

Указываем имя хоста которому будет разрешен доступ к демону coolwsd (прим. nextcloud.example.com):

coolconfig set storage.wopi.host <fqdn name>

Рассмотрим как на виртуальной машине Linux увеличить раздел диска без LVM.

 

Исходные данные

  • Debian 11
  • Исходный размер /dev/sda — 20G
  • Необходимо увеличить размер /dev/sda — 25G

 

Исходные данные

В системе один диск /dev/sda размером 20G, отобразим информацию по нему:

fdisk -l

Disk /dev/sda: 20 GiB, 21474836480 bytes, 41943040 sectors
Disk model: Virtual Disk
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: dos
Disk identifier: 0x73000288

Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 39942143 39940096 19G 83 Linux
/dev/sda2 39944190 41940991 1996802 975M 5 Extended
/dev/sda5 39944192 41940991 1996800 975M 82 Linux swap / Solaris
df -h

Filesystem Size Used Avail Use% Mounted on
udev       944M 0     944M   0% /dev
tmpfs      192M 500K  192M   1% /run
/dev/sda1   19G 990M   17G   6% /
tmpfs      960M    0  960M   0% /dev/shm
tmpfs      5.0M    0  5.0M   0% /run/lock
tmpfs      192M    0  192M   0% /run/user/1000

 

Увеличение размера диска

Увеличиваем размер жесткого диска в ВМ, в моем случае я увеличиваю до 25G. После расширения диска в ВМ, принудительно выполним рескан дисков, командой:

echo 1 > /sys/block/sda/device/rescan

 

Проверяем изменения. В случае если после рескана размер диска не увеличился в системе, то выполняем перезагрузку и проверяем повторно.

fdisk -l

Disk /dev/sda: 25 GiB, 26843545600 bytes, 52428800 sectors
Disk model: Virtual Disk
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: dos
Disk identifier: 0x73000288

Device     Boot    Start      End  Sectors  Size Id Type
/dev/sda1  *        2048 39942143 39940096   19G 83 Linux
/dev/sda2       39944190 41940991  1996802  975M  5 Extended
/dev/sda5       39944192 41940991  1996800  975M 82 Linux swap / Solaris

[stextbox id=’warning’]ВНИМАНИЕ. Рекомендуется перед последующими действиями сделать резервную копию ВМ.[/stextbox]

Разберем как установить из исходников актуальную (на момент написания статьи) версию VPN-сервера OpenConnect 1.2.2 на Debian 11 Bullseye.

 

# Все ниже действия будут производится из под root.

 

# Обновляем информацию о репозиториях и обновляем установленные пакеты:

apt-get update && apt-get upgrade -y

# Устанавливаем необходимые зависимости:

apt-get install build-essential make pkg-config libgnutls28-dev libev-dev libpam0g-dev liblz4-dev libseccomp-dev libreadline-dev libnl-route-3-dev libkrb5-dev libradcli-dev libpcl1-dev libcjose-dev libjansson-dev liboath-dev libprotobuf-c-dev libtalloc-dev libhttp-parser-dev libcurlpp-dev libssl-dev libmaxminddb-dev libbsd-dev libsystemd-dev libwrap0-dev libuid-wrapper libpam-wrapper libnss-wrapper libsocket-wrapper gss-ntlmssp tcpdump protobuf-c-compiler iperf3 lcov ssl-cert libpam-oath

 

# Скачиваем и распаковываем исходники OpenConnect (на момент написания статьи последняя версия 1.2.2):

wget -P /opt/ https://www.infradead.org/ocserv/download/ocserv-1.2.2.tar.xz
tar -xvf /opt/ocserv-1.2.2.tar.xz -C /opt/ 

cd /opt/ocserv-1.2.2

# Собираем и устанавливаем — OpenConnect:

./configure --prefix= --enable-oidc-auth

make && make install

 

# Создаем рабочий каталог для ocserv и копируем примеры файлов конфигурации в него:

mkdir -p /etc/ocserv/

cp doc/sample.config /etc/ocserv/ocserv.conf
cp doc/sample.passwd /etc/ocserv/
cp doc/sample.otp /etc/ocserv/
cp doc/profile.xml /etc/ocserv/

 

# Создаем пользователя ocserv от которого будет работать служба:

useradd -r -M -U -s /usr/sbin/nologin ocserv

Поступила просьба от 1С-ников организовать мониторинг  сервера 1С:Предприятие 8.3 с помощью Zabbix 5.0. В частности необходимо мониторить как общие показатели системы (CPU, RAM, HDD, Службы) так и параметры относящиеся непосредственно к серверу 1С — кол-во текущих сеансов, кол-во сеансов по типам подключения, блокировки СУБД.

 

С мониторингом общих показателей системы прекрасно справляется zabbix-agent и штатный шаблон, а вот со вторым уже нужно прибегать к функциям cервера администрирования кластера серверов 1С, который состоит из двух утилит: непосредственно самого сервера — программы ras.exe и  утилиты командной строки rac.exe, которая обращаясь к запущенному прежде серверу ras позволяет выполнять различные операции с кластером серверов 1С:Предприятия.

 

Перечитав кучу различных мануалов как мониторить кластер 1С я пришел к выводу что надо писать свое..

 

Как итог было написано две утилиты. Первая утилита запускает ras.exe как службу Windows, а вторая это утилита которая работает с rac.exe, выполняет запросы, обрабатывает и выдает результат, который в последующем может обрабатывать zabbix-agent и передавать на сервер Zabbix.

 

Итак скачиваем первую утилиту helper_ras_1c.exe и помещаем ее в какой-нибудь отдельный каталог (прим. C:\1c_ras).

[stextbox id=’info’]ИНФОРМАЦИЯ. Немного актуализировал статью под новую версию Debian, чтобы установка из статьи проходила в режиме copy-paste без ошибок.[/stextbox]

Рассмотрим как установить FreePBX 14 в связке с Asterisk 18 на Debian 10 Buster.

 

Подготовка системы

Перед началом установки обновляем систему до актуального состояния:

apt-get update && apt-get upgrade -y

Устанавливаем необходимые зависимости:

apt-get install build-essential linux-headers-`uname -r` apt-transport-https bison flex curl sox libncurses5-dev libssl-dev mpg123 libxml2-dev libnewt-dev sqlite3 libsqlite3-dev pkg-config automake libtool autoconf git unixodbc-dev uuid uuid-dev libasound2-dev libogg-dev libvorbis-dev libicu-dev libcurl4-openssl-dev libical-dev libneon27-dev libspandsp-dev subversion libtool-bin python-dev unixodbc dirmngr sudo apache2 mariadb-server mariadb-client default-libmysqlclient-dev -y

[stextbox id=’alert’]ВНИМАНИЕ. Обязательно перезагружаем систему и после этого продолжаем установку.[/stextbox]

 

Устанавливаем PHP версии 5.6 (для корректной работы FreePBX fwconsole):

curl https://packages.sury.org/php/apt.gpg | apt-key add -
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/deb.sury.org.list
apt-get update && apt-get install php5.6 php5.6-curl php5.6-cli php5.6-mysql php5.6-mbstring php5.6-gd php5.6-xml php-pear -y

Устанавливаем NodeJS :

curl -sL https://deb.nodesource.com/setup_11.x | sudo -E bash -
apt-get install nodejs -y
pear install Console_Getopt

Устанавливаем поддержку MariaDB ODBC

wget https://downloads.mariadb.com/Connectors/odbc/latest/mariadb-connector-odbc-3.1.9-debian-buster-amd64.tar.gz
tar -zxvf mariadb*
cp -v mariadb-connector-odbc-3.1.9-debian-buster-amd64/lib/mariadb/libmaodbc.so /usr/lib/x86_64-linux-gnu/odbc/

[stextbox id=’alert’]ВНИМАНИЕ. На момент написание статьи версия MariaDB ODBC — 3.1.9, поэтому обращаем внимание на случай ошибок и при необходимости корректируйте версионность. Последние версии можно посмотреть на оф. сайте — https://downloads.mariadb.com/Connectors/odbc/latest/.[/stextbox]

Рассмотрим как реализовать доступ к FreePBX GUI через HTTPS. Все действия производились на FreePBX установленный на Debian 9 Stretch (как установить можно почитать тут) и Apache.

 

Любым удобным вам способом копируем сертификат, закрытый ключ, промежуточные + корневой сертификат в систему (как это сделать через SSH можно почитать тут). Так как сертификатом будет пользоваться веб-сервер Apache, то не забываем прописать на файлы сертификатов соответствующие права. Я выставляю такие права доступа на файлы сертификатов:

chown root:www-data {путь к файлу}
chmod 640 {путь к файлу}

 

Включаем модуль SSL в Apache:

a2enmod ssl

 

Конфигурация виртуального хоста. Приводим дефолтный вирт. хост /etc/apache2/sites-available/000-default.conf к виду:

<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

<VirtualHost *:443>
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        SSLEngine On
        SSLCertificateFile /etc/ssl/crt.crt
        SSLCertificateKeyFile /etc/ssl/key.key
        SSLCACertificateFile /etc/ssl/crt-ca.crt
</VirtualHost>

[stextbox id=’warning’]ВНИМАНИЕ. Обращаю внимание что в SSLCertificateFileSSLCertificateKeyFileSSLCACertificateFile указываем свой путь к файлам.[/stextbox]