SCROLL

Посты автора «jakonda»

# Устанавливаем необходимые пакеты зависимостей. Все действия ниже будут выполняться от root.

apt-get install gcc cmake make pkg-config valgrind git python3 python3-pip python3-pytest check libbz2-dev libcurl4-openssl-dev libjson-c-dev libmilter-dev libncurses5-dev libpcre2-dev libssl-dev libxml2-dev libsystemd-dev zlib1g-dev -y

# Начиная с версии 0.105+, для компиляции частей libclamav требуется набор инструментов Rust. Как установить язык программирования Rust на Debian 11 Bullseye

 

Установка ClamAV

# Скачиваем исходник, распаковываем его и переходим в распакованный каталог (на момент написания статьи latest версия 1.1.0).

cd /opt

wget https://www.clamav.net/downloads/production/clamav-1.1.0.tar.gz
tar -zxvf clamav-1.1.0.tar.gz
cd clamav-1.1.0

[stextbox id=’warning’]ИНФОРМАЦИЯ: оф. страница https://www.clamav.net/downloads не доступна из РФ, поэтому скачиваем исходник через VPN.[/stextbox]

 

# Создаем «build» подкаталог и переходим в него.

mkdir build && cd build

[stextbox id=’info’]ИНФОРМАЦИЯ: Это позволит легко удалить файлы сборки, если что-то пойдет не так и потребуется перенастроить и повторить попытку.[/stextbox]

 

# Конфигурирование сборки.

cmake .. \
    -D CMAKE_BUILD_TYPE=RelWithDebInfo \
    -D CMAKE_INSTALL_PREFIX=/usr \
    -D CMAKE_INSTALL_LIBDIR=/usr/lib \
    -D APP_CONFIG_DIRECTORY=/etc/clamav \
    -D DATABASE_DIRECTORY=/var/lib/clamav \
    -D ENABLE_MILTER=ON \
    -D ENABLE_JSON_SHARED=OFF

[stextbox id=’info’]ИНФОРМАЦИЯ: Разработчики рекомендуют установку со статической библиотекой json-c  (ENABLE_JSON_SHARED=OFF)[/stextbox]

# Собираем пакет, тестируем и устанавливаем

cmake --build .
ctest
cmake --build . --target install

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

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

apt-get install build-essential curl cmake pkg-config gcc-mingw-w64 gnupg gnutls-bin libglib2.0-dev libgpgme-dev libgnutls28-dev libcurl4-gnutls-dev uuid-dev libssh-gcrypt-dev libhiredis-dev libxml2-dev libpcap-dev libnet1-dev libldap2-dev libradcli-dev libpq-dev libical-dev xsltproc rsync libbsd-dev texlive-latex-extra texlive-fonts-recommended xmlstarlet zip rpm fakeroot nsis gpgsm wget sshpass openssh-client socat bison snmp libsnmp-dev nmap smbclient xmltoman doxygen graphviz xml-twig-tools libmicrohttpd-dev libpopt-dev libunistring-dev heimdal-dev perl-base libgcrypt20-dev libksba-dev libjson-glib-dev libpaho-mqtt-dev mosquitto pandoc git python3 python3-pip python3-setuptools python3-packaging python3-wrapt python3-cffi python3-psutil python3-lxml python3-defusedxml python3-paramiko python3-redis python3-gnupg python3-paho-mqtt python3-venv python3-impacket  postgresql postgresql-contrib postgresql-server-dev-13 -y

# Установка NodeJS v14.x

export NODE_VERSION=node_14.x
export KEYRING=/usr/share/keyrings/nodesource.gpg
export DISTRIBUTION="$(lsb_release -s -c)"
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource.gpg.key | gpg --dearmor | sudo tee "$KEYRING" >/dev/null
gpg --no-default-keyring --keyring "$KEYRING" --list-keys

echo "deb [signed-by=$KEYRING] https://deb.nodesource.com/$NODE_VERSION $DISTRIBUTION main" | sudo tee /etc/apt/sources.list.d/nodesource.list
echo "deb-src [signed-by=$KEYRING] https://deb.nodesource.com/$NODE_VERSION $DISTRIBUTION main" | sudo tee -a /etc/apt/sources.list.d/nodesource.list

apt-get update
apt-get install -y nodejs

# Установка yarn

curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add
echo deb https://dl.yarnpkg.com/debian/ stable main | tee /etc/apt/sources.list.d/yarn.list

apt-get update
apt-get install yarn -y

# Создаем пользователя GVM от которого будет работать система.

useradd -r -M -U -s /usr/sbin/nologin -c "GVM User" gvm

 

# Скачиваем последние версии исходников пакетов входящих в состав системы GVM 22.4 и распаковываем их.

mkdir -p /opt/gvm-source
cd /opt/gvm-source/

export GVM_LIBS_VERSION=$(curl -s https://api.github.com/repos/greenbone/gvm-libs/releases/latest | grep -Po '"tag_name":.*?[^\\]",' | awk '{print $2}' | sed  's/^..\(.*\)..$/\1/')
export GVMD_VERSION=$(curl -s https://api.github.com/repos/greenbone/gvmd/releases/latest | grep -Po '"tag_name":.*?[^\\]",' | awk '{print $2}' | sed  's/^..\(.*\)..$/\1/')
export PG_GVM_VERSION=$(curl -s https://api.github.com/repos/greenbone/pg-gvm/releases/latest | grep -Po '"tag_name":.*?[^\\]",' | awk '{print $2}' | sed  's/^..\(.*\)..$/\1/')
export GSA_VERSION=$(curl -s https://api.github.com/repos/greenbone/gsa/releases/latest | grep -Po '"tag_name":.*?[^\\]",' | awk '{print $2}' | sed  's/^..\(.*\)..$/\1/')
export GSAD_VERSION=$(curl -s https://api.github.com/repos/greenbone/gsad/releases/latest | grep -Po '"tag_name":.*?[^\\]",' | awk '{print $2}' | sed  's/^..\(.*\)..$/\1/')
export OPENVAS_SMB_VERSION=$(curl -s https://api.github.com/repos/greenbone/openvas-smb/releases/latest | grep -Po '"tag_name":.*?[^\\]",' | awk '{print $2}' | sed  's/^..\(.*\)..$/\1/')
export OPENVAS_SCANNER_VERSION=$(curl -s https://api.github.com/repos/greenbone/openvas-scanner/releases/latest | grep -Po '"tag_name":.*?[^\\]",' | awk '{print $2}' | sed  's/^..\(.*\)..$/\1/')
export OSPD_OPENVAS_VERSION=$(curl -s https://api.github.com/repos/greenbone/ospd-openvas/releases/latest | grep -Po '"tag_name":.*?[^\\]",' | awk '{print $2}' | sed  's/^..\(.*\)..$/\1/')
export NOTUS_VERSION=$(curl -s https://api.github.com/repos/greenbone/notus-scanner/releases/latest | grep -Po '"tag_name":.*?[^\\]",' | awk '{print $2}' | sed  's/^..\(.*\)..$/\1/')

echo $GVM_LIBS_VERSION
echo $GVMD_VERSION
echo $PG_GVM_VERSION
echo $GSA_VERSION
echo $GSAD_VERSION
echo $OPENVAS_SMB_VERSION
echo $OPENVAS_SCANNER_VERSION
echo $OSPD_OPENVAS_VERSION
echo $NOTUS_VERSION

curl -f -L https://github.com/greenbone/gvm-libs/archive/refs/tags/v$GVM_LIBS_VERSION.tar.gz -o gvm-libs-$GVM_LIBS_VERSION.tar.gz
curl -f -L https://github.com/greenbone/gvmd/archive/refs/tags/v$GVMD_VERSION.tar.gz -o gvmd-$GVMD_VERSION.tar.gz
curl -f -L https://github.com/greenbone/pg-gvm/archive/refs/tags/v$PG_GVM_VERSION.tar.gz -o pg-gvm-$PG_GVM_VERSION.tar.gz
curl -f -L https://github.com/greenbone/gsa/archive/refs/tags/v$GSA_VERSION.tar.gz -o gsa-$GSA_VERSION.tar.gz
curl -f -L https://github.com/greenbone/gsad/archive/refs/tags/v$GSAD_VERSION.tar.gz -o gsad-$GSAD_VERSION.tar.gz
curl -f -L https://github.com/greenbone/openvas-smb/archive/refs/tags/v$OPENVAS_SMB_VERSION.tar.gz -o openvas-smb-$OPENVAS_SMB_VERSION.tar.gz
curl -f -L https://github.com/greenbone/openvas-scanner/archive/refs/tags/v$OPENVAS_SCANNER_VERSION.tar.gz -o openvas-scanner-$OPENVAS_SCANNER_VERSION.tar.gz
curl -f -L https://github.com/greenbone/ospd-openvas/archive/refs/tags/v$OSPD_OPENVAS_VERSION.tar.gz -o ospd-openvas-$OSPD_OPENVAS_VERSION.tar.gz
curl -f -L https://github.com/greenbone/notus-scanner/archive/refs/tags/v$NOTUS_VERSION.tar.gz -o notus-scanner-$NOTUS_VERSION.tar.gz

tar -xvzf gvm-libs-$GVM_LIBS_VERSION.tar.gz && mv gvm-libs-$GVM_LIBS_VERSION gvm-libs
tar -xvzf gvmd-$GVMD_VERSION.tar.gz && mv gvmd-$GVMD_VERSION gvmd
tar -xvzf pg-gvm-$PG_GVM_VERSION.tar.gz && mv pg-gvm-$PG_GVM_VERSION pg-gvm
tar -xvzf gsa-$GSA_VERSION.tar.gz && mv gsa-$GSA_VERSION gsa
tar -xvzf gsad-$GSAD_VERSION.tar.gz && mv gsad-$GSAD_VERSION gsad
tar -xvzf openvas-smb-$OPENVAS_SMB_VERSION.tar.gz && mv openvas-smb-$OPENVAS_SMB_VERSION openvas-smb
tar -xvzf openvas-scanner-$OPENVAS_SCANNER_VERSION.tar.gz && mv openvas-scanner-$OPENVAS_SCANNER_VERSION openvas-scanner
tar -xvzf ospd-openvas-$OSPD_OPENVAS_VERSION.tar.gz && mv ospd-openvas-$OSPD_OPENVAS_VERSION ospd-openvas
tar -xvzf notus-scanner-$NOTUS_VERSION.tar.gz && mv notus-scanner-$NOTUS_VERSION notus-scanner

Переодически нужно обновить MariaDB до 10.5 на Debian 10 и каждый раз вспоминаю как это сделать, поэтому для памятки оставлю как MariaDB до 10.5 и выше на Debian 10 Buster.

 

Добавление репозиторий пакетов APT:

wget https://downloads.mariadb.com/MariaDB/mariadb_repo_setup
chmod +x mariadb_repo_setup
sudo ./mariadb_repo_setup --mariadb-server-version="mariadb-10.5"
sudo apt-get update

[stextbox id=’info’]ИНФОРМАЦИЯ.  Доступные версии для установки — 10.6, 10.5, 10.4, 10.3 и 10.2, просто в передаваемом параметре mariadb- указываем нужную версию.[/stextbox]

 

Для обновления уставноленной версии MariaDB, выполняем команду:

apt-get install --only-upgrade mariadb-server

Обновил Zabbix c 5.4 до 6.4 и обнаружил что оповещения Telegram не работают, отображается ошибка — Sending failed: ReferenceError: identifier 'CurlHttpRequest' undefined

# Устанавливаем необходимые пакеты зависимостей. Все действия ниже будут выполняться от root.

apt-get install build-essential linux-headers-`uname -r` apt-transport-https gnupg2 sudo apache2 mariadb-server mariadb-client default-libmysqlclient-dev 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 -y

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

 

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

wget -qO - https://packages.sury.org/php/apt.gpg | sudo apt-key add -
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/sury-php.list
apt-get update && apt-get install php7.4 php7.4-curl php7.4-cli php7.4-common php7.4-mysql php7.4-gd php7.4-mbstring php7.4-intl php7.4-xml php-pear -y

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

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

# Устанавливаем поддержку 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]

В один момент не смог подключится к своему MSSQL Server используя Windows Authentication, получал ошибку — The target principal name is incorrect. Cannot generate SSPI context.

В логах видно что не удается зарегистрировать Service Principal Name (SPN) службы SQL Server:

Date        1/27/2023 4:31:22 PM
Log        SQL Server (Current - 1/27/2023 5:12:00 PM)
Source        Server
Message
SQL Server is attempting to register a Service Principal Name (SPN) for the SQL Server service. Kerberos authentication will not be possible until a SPN is registered for the SQL Server service. This is an informational message. No user action is required.

Date        1/27/2023 4:31:22 PM
Log        SQL Server (Current - 1/27/2023 5:12:00 PM)
Source        Server
Message
The SQL Server Network Interface library could not register the Service Principal Name (SPN) [ MSSQLSvc/n******4005.example.local:N******4005 ] for the SQL Server service. Windows return code: 0x21c7, state: 15. Failure to register a SPN might cause integrated authentication to use NTLM instead of Kerberos. This is an informational message. Further action is only required if Kerberos authentication is required by authentication policies and if the SPN has not been manually registered.

 

Быстро диагностировать и исправить проблемы можно утилитой — Microsoft Kerberos Configuration Manager (KCM).

 

На компьютере, на котором возникла проблема с подключением, скачиваем и устанвливаем Kerberos Configuration Manager.

Скачать можно с официального сайта — https://www.microsoft.com/en-us/download/details.aspx?id=39046

 

Запускаем KerberosConfigMgr.exe из папки C:\Program Files\Microsoft\Kerberos Configuration Manager for SQL Server используя учетную запись домена, у которой есть разрешения для подключения к компьютеру SQL Server, к которому не можем подключиться.

Нажимаем Connect. На форме подключения оставляем имя сервера и учетные данные, пустыми.

 

При конфигурации WSUS сервиса на Windows Server 2022 столкнулся с такой проблемой на стадии соединения с серверами обновлений MS выдает ошибку — The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel.

Для памятки как настроить LDAP аутентификацию в Greenbone Vulnerability Management.

GVM использует либо команду StartTLS через LDAP на порту 389, либо SSL/TLS через LDAPS на порту 636. Чтобы проверить подлинность сервера LDAP, GVM должен доверять сертификату сервера. Для этого сертификат центра сертификации, выдавшего сертификат (CA), должен храниться каталоге корневых сертификатов на локальной машине.

Cертификат центра сертификации должен быть экспортирован в виде файла в кодировке Base64 и помещен в каталог хранения корневых сертификатов системы (/usr/share/ca-certificates/mozilla/).

cp CA.crt /usr/share/ca-certificates/mozilla/CA.crt

[stextbox id=’info’]ИНФОРМАЦИЯ.  Если центр сертификации является промежуточным центром сертификации, то необходимо так же экспортировать корневой сертификат центра сертификации и поместить в каталог хранения корневых сертификатов.[/stextbox]

 

В файл /etc/ca-certificates.conf необходимо добавить информацию о добавленных корневых сертификатов в каталог хранения корневых сертификатов.

..
mozilla/CA.crt

Обновляем сертификаты:

update-ca-certificates

Успешное добавление сертификатов, должно быть вида:

Updating certificates in /etc/ssl/certs...
1 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d...
done.

DKIM (DomainKeys Identified Mail) — это система, которая позволяет вашим почтовым серверам добавлять подпись к заголовкам исходящей электронной почты. Он идентифицирует открытый ключ вашего домена, чтобы другие почтовые серверы могли проверить подпись. Кроме того, DKIM помогает не допустить, чтобы ваша почта считалась спамом. Это также позволяет почтовым серверам обнаруживать, когда ваша почта была подделана при пересылке.

Прошу обратить внимание что все ниже действия будут производится применительно к домену — example.com.

 

# Устанавливаем пакеты OpenDKIM:

apt-get install opendkim opendkim-tools -y

 

Настройка OpenDKIM

# Создаем каталоги для хранения файлов данных OpenDKIM:

mkdir /etc/opendkim
mkdir /etc/opendkim/keys
touch /etc/opendkim/KeyTable
touch /etc/opendkim/SigningTable
touch /etc/opendkim/TrustedHosts

# Добавляем пользователя postfix в группу opendkim. Назначаем права собственности пользователю opendkim:

adduser postfix opendkim
chown -R opendkim:opendkim /etc/opendkim

# Создаем каталог с названием домена для размещения ключа:

mkdir /etc/opendkim/keys/example.com

 

# Генерируем открытый и закрытый ключи:

opendkim-genkey -r -s mail -d example.com -D /etc/opendkim/keys/example.com -v

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

chown -R opendkim:opendkim /etc/opendkim/keys/*

 

# Добавляем в файл (/etc/opendkim/KeyTable) пару селектор/домен и путь к их закрытому ключу. В качестве селектора используем строку которую указывали при генерации ключа (mail):

echo "mail._domainkey.example.com example.com:mail:/etc/opendkim/keys/example.com/mail.private" >> /etc/opendkim/KeyTable

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

 

# Добавляем в файл (/etc/opendkim/SigningTable) домен и его селектор:

echo "*@example.com mail._domainkey.example.com" >> /etc/opendkim/SigningTable

# Определяем в файле (/etc/opendkim/TrustedHosts) перечень доверенных хостов, исходящие от этих хостов подписанными:

cat << EOF > /etc/opendkim/TrustedHosts
127.0.0.1
localhost
*.example.com
EOF

Прежде чем пытаться удалить пакет elasticsearch, важно отключить службу Elasticsearch:

systemctl stop elasticsearch

Как только Elasticsearch будет отключен, удаляем пакет (после удаления файлы конфигурации останутся в соответствующих каталогах):

apt-get remove elasticsearch -y

Очистка файлов конфигурации Elasticsearch:

apt-get --purge autoremove elasticsearch -y

Удаление следующих каталогов вручную также может помочь обеспечить максимально чистое удаление:

rm -rf /var/lib/elasticsearch
rm -rf /etc/elasticsearch

# Деинсталлируем пакет Grafana из системы с последующей чисткой от не нужных пакетов после деинсталляции.

apt-get purge grafana grafana-enterprise
apt autoremove

# Подчищаем оставшиеся после деинсталляции файлы и каталоги относящиеся к Grafana.

rm /etc/systemd/system/multi-user.target.wants/grafana-server.service
rm /sys/fs/cgroup/pids/system.slice/grafana-server.service
rmdir /sys/fs/cgroup/pids/system.slice/grafana-server.service
rmdir /sys/fs/cgroup/devices/system.slice/grafana-server.service
rmdir /run/grafana/grafana-server.pid
rm /run/grafana/grafana-server.pid
rmdir /run/grafana

Недавно разбирался как поднять почтовый сервер на Postfix в связке с Dovecot, для памяти опишу как поднять такой сервер на Debian 10. Все действия ниже будут выполняться от root.

 

Настройка DNS записей

# Добавляем DNS-записи для вашего почтового сервера:

@           MX  10  mail.example.com.
mail        A   192.168.1.10

 

Настройка системы

# Задаем имя системы (mail) в файле (/etc/hostname):

echo mail > /etc/hostname

# Указываем в файле (/etc/hosts) строку содержащую IP-адрес с полным доменным именем (FQDN).

127.0.0.1       localhost
192.168.1.10    mail.example.com mail

[stextbox id=’info’]ИНФОРМАЦИЯ: В приведенном выше примере 192.168.1.10 — это IP-адрес машины, mail — это имя локального хоста, а mail.example.com это полное доменное имя.[/stextbox]

 

Настройка MySQL

Данные о пользователях почтового сервера (адреса электронной почты), доменах и псевдонимах будут хранится в базе данных MySQL.

 

# Устанавливаем MySQL сервер.

apt-get install mariadb-server -y

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

mysql_secure_installation

mariadb

 

# Создаем базу данных для работы почтового сервера, пользователя для работы с базой данных и делегируем права на созданную базу данных.

CREATE DATABASE postfix;
CREATE USER 'postfix'@'localhost' IDENTIFIED BY 'postfix';
GRANT SELECT ON postfix.* TO 'postfix'@'localhost';
FLUSH PRIVILEGES;

 

# Переключаемся на созданную базу данных, для создания необходимых таблиц.

use postfix;

 

# Создаем таблицу для доменов, которые будут получать почту:

CREATE TABLE `virtual_domains` (
  `id` int(11) NOT NULL auto_increment,
  `name` varchar(50) NOT NULL,
  PRIMARY KEY (`id`)
);

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

CREATE TABLE `virtual_users` (
  `id` int(11) NOT NULL auto_increment,
  `domain_id` int(11) NOT NULL,
  `password` varchar(106) NOT NULL,
  `email` varchar(100) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `email` (`email`),
  FOREIGN KEY (domain_id) REFERENCES virtual_domains(id) ON DELETE CASCADE
);

# Устанавливаем необходимые пакеты зависимостей. Все действия ниже будут выполняться от root.

apt-get install gcc g++ make cmake pkg-config git doxygen valgrind -y

# Скачиваем исходник (оф. репозиторий json-c — https://github.com/json-c/json-c#installprereq), раскаковываем его и переходим в распакованный каталог.

cd /opt
git clone https://github.com/json-c/json-c.git

cd json-c/
mkdir build && cd build

# Конфигурирование сборки.

../cmake-configure --prefix=/usr

# Собираем и устанавливаем пакет.

make && make test
make install

Python — это высокоуровневый язык программирования общего назначения с динамической строгой типизацией и автоматическим управлением памятью.

# Устанавливаем необходимые пакеты зависимостей. Все действия ниже будут выполняться от root.

apt-get install -y gcc g++ make pkg-config valgrind check libbz2-dev libcurl4-openssl-dev libjson-c-dev libmilter-dev libncurses5-dev libpcre2-dev libssl-dev libxml2-dev zlib1g-dev

# Создаем сервисный аккаунт от которого будут работать службы (freshclam, clamd).

groupadd clamav && useradd -g clamav -s /bin/false -c "Clam Antivirus" clamav

 

# Скачиваем исходник, раскаковываем его и переходим в распакованный каталог (на момент написания статьи LTS версия 0.103.7).

cd /opt

wget https://www.clamav.net/downloads/production/clamav-0.103.7.tar.gz
tar -zxvf clamav-[ver].tar.gz
cd clamav-[ver]

[stextbox id=’warning’]ИНФОРМАЦИЯ: оф. страница https://www.clamav.net/downloads не доступна из РФ, поэтому скачиваем исходник через VPN.[/stextbox]

 

# Создаем «build» подкаталог и переходим в него.

mkdir build && cd build

[stextbox id=’info’]ИНФОРМАЦИЯ: Это позволит легко удалить файлы сборки, если что-то пойдет не так и потребуется перенастроить и повторить попытку.[/stextbox]

 

# Конфигурирование сборки.

../configure --prefix=/usr --sysconfdir=/etc/clamav --with-dbdir=/var/lib/clamav --with-libjson=/usr/lib/x86_64-linux-gnu/libjson-c.a --enable-milter

[stextbox id=’info’]ИНФОРМАЦИЯ: Разработчики рекомендуют уставноку со статической библиотекой json-c  (—with-libjson-static), но для этого необходима установленная libjson-c версии 0.15 или новее.

Статья как установить актуальную версию библиотеки json-c — https://sysos.ru/?p=735[/stextbox]

 

# Собираем и устанавливаем пакет.

make
make check VG=1
make install

На тот случай когда по тем или иным причинам нет возможности купить сертификат, мы разберем как выпустить и установить Let’s Encrypt SSL-сертификат в Zimbra Collaboration 8.X..

 

Установим пакет для запросов сертификатов Let’s Encrypt:

apt-get install certbot -y

 

Перед тем как выпустить сертификат, выполним тестовый выпуск сертификата :

certbot certonly --dry-run --standalone -d mail.contoso.com

Если все хорошо и ошибок нет, то выпускаем сертификат:

certbot certonly --standalone -d mail.contoso.com

В процессе будет запрошен email администратора (указываем свой) и пара вопросов на которые отвечаем утвердительно.

Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel): admin@contoso.com

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel: A

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y

 

Переходим в каталог letsencrypt с нашим доменом (/etc/letsencrypt/live/$DOMAIN/), скачаем корневые сертификаты от Let’s Encrypt и сформируем корректную цепочку сертификатов, чтобы Zimbra ее приняла:

cd /etc/letsencrypt/live/$DOMAIN/

wget -4 -O /etc/letsencrypt/live/$DOMAIN/isrgrootx1.pem https://letsencrypt.org/certs/isrgrootx1.pem.txt
wget -4 -O /etc/letsencrypt/live/$DOMAIN/letsencryptauthorityx3.pem https://letsencrypt.org/certs/letsencryptauthorityx3.pem.txt

cat /etc/letsencrypt/live/$DOMAIN/isrgrootx1.pem > /etc/letsencrypt/live/$DOMAIN/zimbra_chain.pem
cat /etc/letsencrypt/live/$DOMAIN/letsencryptauthorityx3.pem >> /etc/letsencrypt/live/$DOMAIN/zimbra_chain.pem
cat /etc/letsencrypt/live/$DOMAIN/chain.pem >> /etc/letsencrypt/live/$DOMAIN/zimbra_chain.pem

Опишу для памятки как реализовать поддержку шифрования по ГОСТ Р 34.10-2012 (GOST2012) в OpenSSL 1.1.1 на Debian 10 Buster.

Реализация криптоалгоритмов российского ГОСТа для OpenSSL — https://github.com/gost-engine/engine

 

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

apt-get install g++ gcc make

 

Установка OpenSSL

Скачиваем исходники, распаковываем их:

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 version -v
OpenSSL 1.1.1p  21 Jun 2022

 

Установка Cmake

Для корректной сборки gost-engine, установим последнюю (на момент написания статьи) версию cmake.

 

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

apt-get install git libssl-dev

Скачиваем исходники, распаковываем их:

wget https://github.com/Kitware/CMake/releases/download/v3.23.2/cmake-3.23.2.tar.gz
tar -zxvf cmake-3.23.2.tar.gz
cd cmake-3.23.2

Собираем пакет и устанавливаем его:

./bootstrap --prefix=/usr
make
make install
cd ..

Для проверки, выведем установленную версию:

cmake --version
cmake version 3.23.2

В один прекрасный момент при попытке обновить пакеты php через репозиторий packages.sury.org получил ошибку недействительного публичного ключа для packages.sury.org^

Нет доверия сертификату для «packages.sury.org». ОШИБКА: Срок действия сертификата «packages.sury.org» истёк.

apt-get update

Hit:1 http://deb.debian.org/debian buster InRelease
Hit:2 http://security.debian.org/debian-security buster/updates InRelease
Hit:3 http://deb.debian.org/debian buster-updates InRelease
Get:4 https://packages.sury.org/php buster InRelease [6837 B]
Err:4 https://packages.sury.org/php buster InRelease
  The following signatures couldn't be verified because the public key is not available: NO_PUBKEY B188E2B695BD4743
Hit:5 https://repo.zabbix.com/zabbix/5.4/debian buster InRelease
Reading package lists... Done
W: GPG error: https://packages.sury.org/php buster InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY B188E2B695BD4743
E: The repository 'https://packages.sury.org/php 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.

Чтобы это исправить, выполняем команды ниже:

sudo rm -rf /etc/apt/trusted.gpg.d/php.gpg
sudo apt-key del B188E2B695BD4743
sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg

Для проверки обновляем данные по репозиториям:

apt-get update

 

В случае если в ходе обновления ключей возникают ошибки, то скорей всего какой то из ниже пакетов отсутствует в системе:

apt-get install -y gnupg2 ca-certificates lsb-release apt-transport-https

Столкнулся с таким вопросом — как удалить пакет собранный из исходников и установленный make install.

Для памятки оставлю для метода как это сделать, все ниже действия производится на Debian 10 (более чем уверен что все описанное ниже будет применимо для всех deb-like Linux систем).

 

Метод #1 (make uninstall)

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

cd $SOURCE_DIR 
sudo make uninstall

В случае если каталог сборки был удален, то можно загрузить его по новой, выполнить сборку (make) и удалить пакет методом #2.

 

Метод #2 (install_manifest.txt)

Если файл install_manifest.txt существует в вашем исходном каталоге, он должен содержать имена файлов каждого отдельного файла, созданного установкой.

Сначала проверяем список файлов и время их обновления:

cd $SOURCE_DIR 
sudo xargs -I{} stat -c "%z %n" "{}" < install_manifest.txt

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

 

Если все в порядке, то собираем файлы в один каталог для удаления:

cd $SOURCE_DIR 
mkdir deleted-by-uninstall
sudo xargs -I{} mv -t deleted-by-uninstall "{}" < install_manifest.txt

Для памятки опишу как установить модуль chan_sccp в FreePBX на базе Asterisk 18.

Описывать конфиги и настройку не буду (по крайней мере на момент написания статьи), вся исчерпывающая информация тут — https://github.com/chan-sccp

 

Устанавливаем необходимые для успешной сборки пакеты и скачиваем chan_sccp:

apt-get install git build-essential make install-headers -y

cd /opt/
git clone https://github.com/chan-sccp/chan-sccp.git chan-sccp
cd /opt/chan-sccp

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

asterisk -rx "core show version"

Конфигурируем, компилируем и устанавливаем:

./configure --with-asterisk-version=18.7
make
make install

 

После установки обязательно отключаем модуль chan_skinny.so и включаем chan_sccp.so в GUI FreePBX в модули Asterisk.