Ошибка — Cannot find key for kvno in keytab

В один момент перестала работать 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 на Debian 11 Bullseye.

Рассмотрим как настроить 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 RC4-HMAC-NT -ptype KRB5_NT_PRINCIPAL -out C:\Keytabs\svc.web.keytab
ИНФОМАЦИЯ. где web.jakonda.ru — это имя веб-сервера на котором должна работать Kerberos SSO аутентификация, а JAKONDA.LOCAL это имя домена. Важно соблюдать регистр написания имени домена.

Передаем сгенерированный 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

Читать далее

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

Читать далее

Как установить PHP верий 8.* \ 7.* на Debian 10 Buster

Для памятки себе оставлю, как установить\обновить версии PHP 8.3, 8.2, 8.1, 8.0 / 7.4, 7.3, 7.2, 7.1 на Debian 10 Buster (более чем уверен что все описанное ниже будет применимо для всех deb-like Linux систем).

 

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

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

echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/sury-php.list
wget -qO - https://packages.sury.org/php/apt.gpg | sudo apt-key add -
sudo apt-get update

 

Установка PHP.

Установка PHP следующей командой (в зависимости от необходимой версии, подставляем необходимую):

sudo apt-get install php8.2 php8.2-cli php8.2-common -y
Можно устанавливать несколько версий PHP в системе. Каждая версия PHP будет иметь отдельные конфигурационные файлы в каталоге /etc/php/8.X.

 

Установка версий PHP по умолчанию.

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

sudo update-alternatives --set php /usr/bin/php8.2

 

Установка PHP расширений.

Чтобы установить расширения PHP, используйте следующий синтаксис команды (прим. установим модуль mysql):

sudo apt-get install php8.2-mysql

Можно так же пакетно установить модули PHP в случае если необходимо:

sudo apt-get install php8.2-{mysql,cli,common,imap,ldap,xml,fpm,curl,mbstring,zip}

Чтобы проверить загруженные модули PHP, используем команду:

php -m

 

 

Читать далее

Как установить MySQL 8.0 / 5.7 на Debian 11 / Debian 10

# Добавляем в систему репозиторий 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
Установщик пакета предложит вам выбрать версию MySQL для создания репозитория. По умолчанию для конфигурации репозитория выбрана версия MySQL 8.0.

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

apt-get update
apt-get install mysql-community-server -y
Во время установки будет предложено ввести пароль от root пользователя, а так же в случае установки MySQL 8.0 будет предложено выбрать метод аутентификации. 

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

Читать далее

Установка и настройка SMTP-клиента MSMTP на Debian

# Устанавливаем пакет msmtp и зависимости.

apt-get install msmtp msmtp-mta ca-certificates -y

# Создаем файл конфигурации

nano /etc/msmtprc

# Пример конфигурации msmtp на примере учетной записи Exchange Online (office365)

# ------------------------------------------------------------------------------
# Configuration file
# ------------------------------------------------------------------------------

# A system wide configuration is optional.
# If it exists, it usually defines a default account.
# This allows msmtp to be used like /usr/sbin/sendmail.

# ------------------------------------------------------------------------------
# Accounts
# ------------------------------------------------------------------------------

account exchanceonline
host smtp.office365.com
port 587
from no-reply@contoso.com
auth on
user no-reply@contoso.com
password secret
syslog LOG_MAIL

logfile /var/log/msmtp.log

# ------------------------------------------------------------------------------
# Configurations
# ------------------------------------------------------------------------------

# Use TLS.
tls on
tls_starttls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt

# Set a default account
account default : exchanceonline

aliases /etc/aliases
# ------------------------------------------------------------------------------#

 

Пример как указываются aliases для пользователей (прим. root). Если файл /etc/aliases не существует, то создайте его.

root: admin@contoso.com

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

echo -e "Subject: Test Mail\r\n\r\nThis is a test mail" | msmtp --debug -t admin@contoso.com

Читать далее

Ввод Debian 10 Buster в домен Windows с помощью Kerberos, Samba, Winbind

Ниже опишу как ввести 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
127.0.1.1	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
Рекомендую ознакомится подробней о синхронизации времени на Linux системах можно почитать в этой статье и выполнить его настройку.

Читать далее