SCROLL

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

# Добавляем в систему репозиторий 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>

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

Опишу порядок действий по обновлению Greenbone Vulnerability Management (GVM) до актуальной версии.

Обновление GVM буду производить с версии 22.4.1 до 22.7.3 (самая актуальная на дату написания статьи). Все действия ниже будут выполняться от root.

 

Сперва останавливаем службы GVM:

systemctl stop notus-scanner
systemctl stop ospd-openvas
systemctl stop gvmd
systemctl stop gsad

 

Greenbone Security Assistant (GSA) требуется установленная версия NodeJS >= v18.x. В моем случае NodeJS была установлена версии v14.x., если у вас так же, то выполняем обновление NodeJS до v18.x.:

export NODE_VERSION=node_18.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 upgrade
node -v

 

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

mkdir -p /opt/update
cd /opt/update/

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

При использовании Postfix и Dovecot, в какой-то момент столкнулся с проблемой, что некоторые почтовые ящики пользователей заполнились настолько, что попытки удалить почту через web-клиент приводили к его зависанию. В папках было огромное количество спам-писем.

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

 

Для полной очистки папки INBOX для ВСЕХ пользоватлей, команда:

doveadm expunge -A mailbox INBOX ALL

Для полной очистки папки INBOX конкретного пользователя, команда:

doveadm expunge -u example@domain.com mailbox INBOX ALL

[stextbox id=’info’]ИНФОРМАЦИЯ. Тут очищается папка «Входящие» — INBOX, для «Отправленные» надо заменить на SENT.[/stextbox]

 

Для очистки папки INBOX писем стерше 2х недель, выполним команду:

doveadm expunge -A mailbox INBOX savedbefore 2w

Для очистки папки INBOX писем стерше 1го дня, выполним команду:

doveadm expunge -A mailbox INBOX before 1d

PKI (Public Key Infrastructure) — это система, которая использует цифровые сертификаты для проверки подлинности и шифрования данных между устройствами и службами.

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

Иногда приходится работать с SSL-сертификатами и каждый раз приходится вспоминать, либо искать информацию как сделать то или иное действие с сертификатами при помощи OpenSSL.

Поэтому решил создать дополняему статью на тему полезных команд по работе с SSL-сертификатами при помощи OpenSSL.

 

Проверка на валидность сертификата

Проверка .pem, .crt — сертификата.
Проверка .key — приватного ключа.
Проверка .csr — ключ запроса сертификата.

MD5 у всех должен совпадать. Важно чтобы MD5 были одинаковые только у приватного ключа (.key) и сертификата (.pem, .crt), .csr нужен в случае если понадобится продлевать данный сертификат.

openssl x509 -noout -modulus -in server.crt | openssl md5
openssl rsa -noout -modulus -in server.key | openssl md5
openssl req -noout -modulus -in request.csr | openssl md5

Пример.

root@openssl:~/intermediate# openssl rsa -noout -modulus -in private/server.key | openssl md5
(stdin)= f6647d0867087e0adae0d65d5451a994
root@openssl:~/intermediate# openssl x509 -noout -modulus -in certs/server.crt | openssl md5
(stdin)= f6647d0867087e0adae0d65d5451a994
root@openssl:~/intermediate# openssl req -noout -modulus -in csr/server.csr | openssl md5
(stdin)= f6647d0867087e0adae0d65d5451a994

Файл .pfx, который находится в формате PKCS#12, содержит сертификат SSL (открытые ключи) и соответствующие закрытые ключи. Иногда необходимо извлечь сертификат и закрытый ключ в незашифрованный текстовый формат, чтобы использовать их в другой системе.

Рассморим как преобразовать файл .pfx в отдельные файлы .crt и .key.

 

Извлечение .crt и .key из файла .pfx

Команда чтобы извлечь закрытый ключ:

openssl pkcs12 -in [yourfile.pfx] -nocerts -out [encrypted_key.key]

В процессе извлечения необходимо ввести пароль, который использовали при создании файла .pfx. Далее будет предложено ввести новый пароль для защиты экспортируемого файла .key.

 

Команда чтобы расшифровать закрытый ключ:

openssl rsa -in [encrypted_key.key] -out [decrypted_key.key]

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

 

Команда чтобы извлечь сертификат:

openssl pkcs12 -in [yourfile.pfx] -clcerts -nokeys -out [certificate.crt]

В один момент перестала работать Kerberos/SSO аутентификация на сайте размещённом на веб-сервере Apache, в логах значатся ошибки вида:

...
[Mon Sep 04 11:04:58.724720 2023] [auth_kerb:error] [pid 19547] [client 10.51.90.61:58932] gss_accept_sec_context() failed: Unspecified GSS failure. Minor code may provide more information (, Cannot find key for HTTP/svc.web@JAKONDA.LOCAL kvno 4 in keytab)
...

 

Проверяем текущее значение номера Key Version Number (KVNO) в keytab-файле:

klist -k /etc/svc.web.keytab

Keytab name: FILE:/etc/svc.web.keytab
KVNO Principal
---- --------------------------------------------------------------------------
   2 HTTP/zabbix.jakonda.ru@JAKONDA.LOCAL

Видим что номер Key Version Number (KVNO) учётной записи равен 2, в то время у учетной записи AD атрибут msDS-KeyVersionNumber равен 4.

Такое может получится при внесении изменений в учетную запись, к примеру при смене пароля и т.д., в этом случае все keytab-файлы, которые генерировались ранее для этой учётной записи (где номер KVNO меньше текущего) становятся недействительными.

 

В Windows можно посмотреть текущее значение KVNO для учетной записи в свойствах учётной записи — атрибут msDS-KeyVersionNumber

Рассмотрим как настроить Kerberos Single Sign-On (SSO) с GSSAPI в Apache веб-сервере на Debian 11 Bullseye.

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

  • Windows домен — jakonda.local
  • Доменная служебная учетная запись — svc.web
  • Linux машина — Debian 11

 

Сперва необходимо создать сервисную учетную запись (в моем случае это будет svc.web) и сгенерировать для нее KEYTAB-файл на домен контроллере Windows.

Делается все это командой ниже, не забываем подставить свои данные вместо моих.

ktpass -princ HTTP/web.jakonda.ru@JAKONDA.LOCAL -mapuser svc.web@JAKONDA.LOCAL -pass 3T2XgYCz2IFcBUo0altu -crypto ALL -ptype KRB5_NT_PRINCIPAL -out C:\Keytabs\svc.web.keytab

[stextbox id=’info’]ИНФОМАЦИЯ. где web.jakonda.ru — это имя веб-сервера на котором должна работать Kerberos SSO аутентификация, а JAKONDA.LOCAL это имя домена. Важно соблюдать регистр написания имени домена.[/stextbox]

Передаем сгенерированный KEYTAB-файл на Debian любым удобным способом и размещаем его в каталоге /etc, либо в любом другом безопасном месте месте.

 

Назначим права и уровень доступа к файлу:

chown root:www-data /etc/svc.web.keytab
chmod 640 /etc/svc.web.keytab

 

Устанавливаем пакеты веб-сервера apache, модуль аутентификации gssapi для него и kerberos.

apt-get install apache2 apache2-utils libapache2-mod-auth-gssapi krb5-user

В продакшене используется связка Nginx + Apache, где Nginx выступает в роли прокси-сервера для Apache. Рассмотрим как передавать реальный IP-адрес клиента в Apache с прокси Nginx, для отображения правильной информации в логах Apache, в противном случае в логах Apache будет по каждому запросу будет значится адрес прокси-сервера Nginx.

 

Nginx

В файле конфигурации вирутального хоста в секцию location необходимо добавить следующие параметры:

location / {
     ...
     proxy_set_header Host            $host;
     proxy_set_header X-Real-IP       $remote_addr;
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
     ...
}

 

Apache

В Apache 2.4 входит модуль mod_remoteip, который может перезаписывать удаленный IP-адрес. Настроим его чтобы он принимал проброс IP-адреса клиента с прокси-сервера Nginx.

 

Создаем конфигурацию для модуля mod_remoteip. Выполняем команду:

cat << EOF > /etc/apache2/conf-available/remoteip.conf
<IfModule remoteip_module>
        RemoteIPHeader X-Forwarded-For
        RemoteIPTrustedProxy 127.0.0.1
        RemoteIPInternalProxy 127.0.0.1
</IfModule>
EOF

[stextbox id=’warning’]ИНФОРМАЦИЯ. В случае если у вас проси-серве Nginx и Apache разнесены по разным серверам, то в параметре RemoteIPInternalProxy необходимо указать IP-адрес прокси-сервера.[/stextbox]

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

[stextbox id=’info’]Тестировалась работоспособность на deb-like Linux системах, думаю на rpm тоже будет работать.[/stextbox]

 

Скачиваем скрипт в любую директорию и распаковываем

wget -O hzcd.zip https://sysos.ru/download/1711
unzip hzcd.zip

Выполняем установку

./hzcd.sh --install && . ~/.bashrc

[stextbox id=’info’]Установка выполнится в ~/.hzcd директорию. Будут внесены изменения в ~/.bashrc[/stextbox]

Команды консоли:

  • .-l — показать список замапленных директорий
  • .-a — добавить текущею
  • .-d — удалить текущею

Любой алиас из списка перейти в указанную директорию. Для себя алиасы так-же назначаю через точку например .work

Рассмотрим как обрабатывать HTTP 404 в логах веб-сервера Nginx и блокировать злоумышленников которые пытаются найти уязвимости на опубликованных сайтах с помощью Fail2Ban.

Пример подобной атаки злоумышленников на веб-сайт размещенный на Nginx:

130.255.15.40 - - [08/Aug/2023:17:27:53 +0300] "GET /aslogo.jpeg HTTP/1.1" 404 41318 "-" "gobuster/3.1.0"
130.255.15.40 - - [08/Aug/2023:17:27:53 +0300] "GET /dexter.txt HTTP/1.1" 404 41318 "-" "gobuster/3.1.0"
130.255.15.40 - - [08/Aug/2023:17:27:53 +0300] "GET /dexter.html HTTP/1.1" 404 235 "-" "gobuster/3.1.0"
130.255.15.40 - - [08/Aug/2023:17:27:53 +0300] "GET /5553.md HTTP/1.1" 404 41318 "-" "gobuster/3.1.0"
130.255.15.40 - - [30/Aug/2023:17:00:13 +0300] "GET /admin HTTP/1.1" 429 162 "-" "Mozilla/5.0 (pc-x86_64-linux-gnu) Siege/4.0.7"
130.255.15.40 - - [30/Aug/2023:17:00:13 +0300] "GET /admins HTTP/1.1" 429 162 "-" "Mozilla/5.0 (pc-x86_64-linux-gnu) Siege/4.0.7"

 

# Устанавливаем пакет fail2ban, если он не установлен:

apt-get install fail2ban

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

cat << EOF > /etc/fail2ban/filter.d/nginx-4xx.conf
[Definition]
failregex = ^<HOST> - - \[.*\] "(GET|POST).*HTTP.* (404|429)
ignoreregex =
EOF

# Настраиваем Fail2ban для блокировки 404 запросов. В конфигурационный файл -/etc/fail2ban/jail.local добавляем:

[nginx-4xx]
enabled  = true
port     = http,https
logpath  = /var/log/nginx/*access.log
maxretry = 20
findtime = 10
bantime  = 10m
ignoreip =

Опишу как выполнить установку последний версии Ansible из исходников на Debian 11 Bullseye.
Официальный репозиторий Ansible — https://github.com/ansible/ansible

Рассмотрим как защитить 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.

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