• Установка Python 3.11/3.10 из исходников в Debian 11 Bullseye

    Я ниже рассмотрю установку из исходников Python 3.11. В случае если необходима версия 3.10, то действия будут аналогичные приведенным ниже.

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

    Установка

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

    apt-get install build-essential pkg-config libreadline-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev libffi-dev zlib1g-dev -y

    # Скачиваем последнюю версию исходников Python и распаковываем их.

    cd /opt
    
    wget https://www.python.org/ftp/python/3.11.4/Python-3.11.4.tar.xz
    tar -Jxf Python-3.11.4.tar.xz
    
    cd Python-3.11.4
    ИНФОРМАЦИЯ. Официальная страница загрузок Python — https://www.python.org/downloads/source/

    # Конфигурируем, собираем и устанавливаем пакет — Python

    ./configure --prefix=/usr --enable-optimizations
    make
    make altinstall
    cd ..

    Читать далее

  • Настраиваем Fail2ban, для защиты Postfix от попыток авторизации с использованием SASL метода аутентификации.

    Рассмотрим как защитить Postfix от попыток авторизации с использованием SASL метода аутентификации.

    Когда проверка подлинности завершается неудачей, в лог-файл /var/log/maill.log записываются записи вида:

    Oct 20 08:00:42 mail postfix/smtps/smtpd[23234]: warning: unknown[5.34.207.172]: SASL LOGIN authentication failed: UGFzc3dvcmQ6
    Oct 20 08:00:42 mail postfix/smtps/smtpd[23234]: lost connection after AUTH from unknown[5.34.207.172]

    С помощью Fail2Ban будем отлавливать такие астоту таких неправильных попыток аутентификации. Для этого нам нужно настроить Fail2Ban для обновления правил брандмауэра, чтобы отклонять такие IP-адреса в течение определенного периода времени. В дополнение к этому, Fail2ban также позволяет создавать уведомления по электронной почте. И, когда происходит возможная атака, Fail2ban немедленно оповещает владельца сервера по электронной почте.

     

    # Создаем фильтр Fail2Ban для поиска сбоев аутентификации:

    cat << EOF > /etc/fail2ban/filter.d/postfix-sasl.conf
    [INCLUDES]
    before = common.conf
    [Definition]
    _daemon = postfix(-\w+)?/\w+(?:/smtp[ds])?
    failregex = (?i): warning: [-._\w]+\[<HOST>\]: SASL (?:LOGIN|PLAIN|(?:CRAM|DIGEST)-MD5) authentication failed(: [ A-Za-z0-9+/]*={0,2})?\s*$
    ignoreregex =
    EOF
    

    Читать далее

  • Подключение к MS SQL Server через ODBC в Debian 11 Bullseye

    Рассмотрим как выполнить настройку подключения к MS SQL Server через ODBC в Debian 11 Bullseye.

    Установка Microsoft ODBC Driver for SQL Server

    # Добавляем публичный GnuPG-ключ репозитория Microsoft. Добавляем репозиторий Microsoft в список репозиториев и обновляем репозиторий:

    curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
    curl https://packages.microsoft.com/config/debian/11/prod.list > /etc/apt/sources.list.d/mssql-release.list
    
    apt-get update
    

    # Устанавливаем пакеты ODBC, драйвер ODBC Driver for SQL Server и пакет для возможности авторизации на основе проверки подлинности:

    apt-get install -y unixodbc-dev libgssapi-krb5-2
    
    ACCEPT_EULA=Y apt-get install -y msodbcsql18
    ACCEPT_EULA=Y apt-get install -y mssql-tools18
    
    echo 'export PATH="$PATH:/opt/mssql-tools18/bin"' >> ~/.bashrc
    source ~/.bashrc

     

    Посмотреть информацию о настройках ODBC и список подключенных драйверов, можно командами:

    odbcinst -j
    odbcinst -q -d

    Читать далее

  • Ошибка реорганизация индексов базы данных MS SQL «Невозможно реорганизовать индекс» на базах 1С Предприятие.

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

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

    • До дефрагментации индекса необходимо включить страничные блокировки. Пример команды: ALTER INDEX index_name ON table_name SET (ALLOW_PAGE_LOCKS = ON, ALLOW_ROW_LOCKS = ON);
    • Выполнить дефрагментацию.
    • Обратно выключить страничные блокировки. Пример команды: ALTER INDEX index_name ON table_name SET (ALLOW_PAGE_LOCKS = OFF, ALLOW_ROW_LOCKS = ON);

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

    Скрипт работает по следующему принципу:

    • В базе данных определяются таблицы для которых необходимо включить страничные блокировки и таблицы для которых страничные блокировки уже включены.
    • Выполняется включение страничных блокировок для определенных таблиц.
    • Выполняется реорганизация индексов базы данных.
    • Выполняется выключение страничных блокировок для тех таблиц, для которых оно было включено.

    Читать далее

  • Установка 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/.

    Читать далее