• Установка ClamAV 1.1.* из исходников на Debian 11 Bullseye

    # Устанавливаем необходимые пакеты зависимостей. Все действия ниже будут выполняться от 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
    ИНФОРМАЦИЯ: оф. страница https://www.clamav.net/downloads не доступна из РФ, поэтому скачиваем исходник через VPN.

     

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

    mkdir build && cd build
    ИНФОРМАЦИЯ: Это позволит легко удалить файлы сборки, если что-то пойдет не так и потребуется перенастроить и повторить попытку.

     

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

    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
    ИНФОРМАЦИЯ: Разработчики рекомендуют установку со статической библиотекой json-c  (ENABLE_JSON_SHARED=OFF)

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

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

    Читать далее

  • Как установить язык программирования Rust на Debian 11 Bullseye

    Рассмотрим как установить язык программирования Rust на Debian 11 Bullseye. Удобней всего использовать набор инструментов rustup для установки Rust в системе Debian и управления им.

    ИНФОРМАЦИЯ. rustup — это официальный проект, поддерживаемый Rust

     

    Установка Rust

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

    sudo apt-get install curl build-essential gcc make -y

    Загружаем установщик rustup и устанавливаем Rust общесистемно.

    wget -qO - https://sh.rustup.rs | sudo RUSTUP_HOME=/opt/rust CARGO_HOME=/opt/rust sh -s -- --no-modify-path -y
    ИНФОРМАЦИЯ. Набор инструментов rustup будет загружен в каталог пользовательской установки ‘/opt/rust’ и будут определены переменные окружения для ‘RUSTUP_HOME’ и ‘CARGO_HOME’ в каталоге ‘/opt/rust’.

     

    После завершения установки добавляем переменную окружения ‘$RUSTUP_HOME=/opt/rust’ и двоичный путь к rustup toolchain ‘/opt/rust/bin’ в переменную окружения ‘$PATH’. Это сделает переменные окружения постоянными и автоматически загружаемыми при каждом входе в систему.

    echo 'export RUSTUP_HOME=/opt/rust' | sudo tee -a /etc/profile.d/rust.sh
    echo 'export PATH=$PATH:/opt/rust/bin' | sudo tee -a /etc/profile.d/rust.sh

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

    source /etc/profile

    Проверим переменные окружения ‘$RUSTUP_HOME’ и ‘$PATH’, используя следующую команду.

    echo $RUSTUP_HOME
    echo $PATH

    Читать далее

  • Установка Greenbone Vulnerability Management (GVM) 22.4.1 на Debian 11 Bullseye

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

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

    apt-get install build-essential curl cmake pkg-config gcc-mingw-w64 gnupg gnutls-bin libglib2.0-dev libgpgme-dev libgnutls28-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 Buster

    Переодически нужно обновить 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
    ИНФОРМАЦИЯ.  Доступные версии для установки — 10.6, 10.5, 10.4, 10.3 и 10.2, просто в передаваемом параметре mariadb- указываем нужную версию.

     

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

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

    Читать далее

  • После обновления Zabbix c 5.4 до 6.4 перестали работать оповещения Telegram.

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

     

    Как оказалось начиная с 6.2 версии CurlHttpRequest удален и заменен на HttpRequest (ниже выдержка из Update notes к версии 6.2):

    The CurlHttpRequest additional JavaScript object that was renamed to HttpRequest in Zabbix 5.4, and had been deprecated since, has now been removed.

    Читать далее

  • Установка Asterisk 19 с FreePBX 16 на Debian 10 Buster

    # Устанавливаем необходимые пакеты зависимостей. Все действия ниже будут выполняться от 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
    ВНИМАНИЕ. Желательно перезагрузить систему и после этого продолжить установку.

     

    # Устанавливаем 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/
    ВНИМАНИЕ. На момент написание статьи версия MariaDB ODBC — 3.1.9, поэтому обращаем внимание на случай ошибок и при необходимости корректируйте версионность. Последние версии можно посмотреть на оф. сайте — https://downloads.mariadb.com/Connectors/odbc/latest/.

    Читать далее

  • MSSQL Server ошибка при подключении — The target principal name is incorrect. Cannot generate SSPI context.

    В один момент не смог подключится к своему 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 ошибка соединения с серверами Microsoft — The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel.

    При конфигурации WSUS сервиса на Windows Server 2022 столкнулся с такой проблемой на стадии соединения с серверами обновлений MS.

    Выдает ошибку:

    WebException: The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel. ---> System.Security.Authentication.AuthenticationException: The remote certificate is invalid according to the validation procedure.
    at System.Web.Services.Protocols.WebClientProtocol.GetWebResponse(WebRequest request)
       at System.Web.Services.Protocols.HttpWebClientProtocol.GetWebResponse(WebRequest request)
       at Microsoft.UpdateServices.ServerSync.ServerSyncCompressionProxy.GetWebResponse(WebRequest webRequest)
       at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)
       at Microsoft.UpdateServices.ServerSyncWebServices.ServerSync.ServerSyncProxy.GetAuthConfig()
       at Microsoft.UpdateServices.ServerSync.ServerSyncLib.InternetGetServerAuthConfig(ServerSyncProxy proxy, WebServiceCommunicationHelper webServiceHelper)
       at Microsoft.UpdateServices.ServerSync.ServerSyncLib.Authenticate(AuthorizationManager authorizationManager, Boolean checkExpiration, ServerSyncProxy proxy, Cookie cookie, WebServiceCommunicationHelper webServiceHelper)
       at Microsoft.UpdateServices.ServerSync.CatalogSyncAgentCore.SyncConfigUpdatesFromUSS()
       at Microsoft.UpdateServices.Server

    Эта проблема возникает из-за того, что функция импорта WSUS не может использовать TLS 1.2.

    Для решения этой проблемы создадим или обновим (если он уже имеется) файл w3wp.exe.config, чтобы включить TLS 1.2.

    Читать далее

  • Настройка LDAP авторизации на Greenbone Vulnerability Management (GVM) 21.04.

    Для памятки как настроить 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
    
    ИНФОРМАЦИЯ.  Если центр сертификации является промежуточным центром сертификации, то необходимо так же экспортировать корневой сертификат центра сертификации и поместить в каталог хранения корневых сертификатов.

     

    В файл /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 в связке с Postfix.

    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
    ИНФОРМАЦИЯ.  Если на почтовом сервере несколько доменом, то DKIM запись должна быть по одной строке на каждую пару селектор/домен и путь к их закрытому ключу.

     

    # Добавляем в файл (/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

    Читать далее