Как убедиться, что билет службы Kerberos CIFS действителен достаточно долго для операции копирования

Вопрос или проблема

Как убедиться, что билет службы Kerberos CIFS действителен достаточно долго для операции копирования

У меня есть резервная работа, которая копирует большие файлы на защищенный kerberos cifs ресурс на Windows Server. Иногда работа зависает бесконечно, и процесс ядра cifs загружает процессор на 100%.

Я считаю, что это происходит, когда время действия сервисного билета kerberos для cifs сервиса истекает во время операции копирования. Если я инициирую файловую операцию в другом экземпляре оболочки на cifs ресурсе под учетной записью сервиса, первоначальная работа фактически продолжает свою операцию.

Поэтому я ищу способ гарантировать, что сервисный билет kerberos в кэше билетов действителен более чем один час. Еще лучше, если есть настройка, которая будет автоматически обновлять сервисный билет во время работы для модуля cifs.

Однако есть подводный камень: сама работа не знает название ресурса, на который она копирует (очевидно, это просто целевой путь к нему, смонтированный через autofs). Также ресурс может использоваться где-то еще (другой работой). Поэтому простое удаление текущего сервисного билета перед получением нового может привести к неудаче других работ.

Если умное автоматическое обновление невозможно, возможно, решение может заключаться в автоматическом обновлении всех сервисных билетов, доступных в кэше билетов. Действительный билет krbtgt всегда доступен, так как запущена работа k5start для этого. Есть ли способ это сделать?

Система: Ubuntu server 22.04. (ядро 5.15.0-122).

SSSD настроен для автоматической авторизации пользователя на сервере kerberos. Автоматическое получение билетов работает при доступе к многопользовательскому cifs ресурсу на autofs.

Ответ или решение

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

1. Увеличение времени жизни билета службы Kerberos

Первым делом, стоит убедиться, что время жизни сервисного билета (TGS – Ticket Granting Service) настроено таким образом, чтобы покрывать время выполнения задачи по копированию. Вы можете это сделать, изменив параметры политики Kerberos на сервере, который выдает билеты. Это можно сделать через утилиты управления Active Directory или путем редактирования конфигурации сервера Kerberos, если вы используете его в рамках Linux (например, через kdc.conf).

Пример конфигурации:

[realms]
YOUR_REALM = {
   ...
   ticket lifetimes = 12 hours
   renew lifetimes = 7 days
   ...
}

Обратите внимание, что изменения должны быть сделаны в соответствии с политиками безопасности вашей организации.

2. Настройка автообновления билетов

Второй вариант – автоматическое обновление билетов. Для этого можно использовать утилиту krenew. Она позволит вам продлевать действительность вашего TGS билета, что поможет избежать прерывания операций копирования.

Настройка krenew:

  1. Убедитесь, что на вашей системе установлен krenew.
  2. Запустите krenew в фоновом режиме с командой:
    krenew -b -K 5

    Это будет регулярно обновлять ваши билеты, пока они действительны.

3. Использование k5start для обновления билетов

Если у вас уже есть работающий k5start, ваша конфигурация может быть дополнена опцией обновления всех доступных сервисных билетов. Убедитесь, что замене подлежит только служебный билет CIFS, не затрагивая другие активные сессии. Пример команды для k5start:

k5start -U <username> -K 5 -f /path/to/your.keytab -r YOUR_REALM

4. Скрипт на автоматизацию обновления билетов

Если предыдущие решения не подходят, можно создать bash-скрипт, который будет периодически запускаться и обновлять все доступные сертификаты перед началом долгих операций копирования. Например, вы можете использовать kinit для получения нового билета, когда существующий билет становится менее чем за 10 минут от истечения срока.

Пример скрипта:

#!/bin/bash

# Проверка существования билетов
klist | grep -q "your_cifs_service" 
if [ $? -eq 0 ]; then
    # Обновление билета
    kinit -R
fi

Заключение

Каждый из предложенных методов может помочь решить вашу проблему. Однако лучшим решением будет комплексный подход: настройка времени жизни билет, использование krenew или k5start для автоматического обновления и, при необходимости, написание скриптов для автоматизации процесса. Так вы сможете создать надежную и стабильную среду для выполнения задач резервного копирования и избежания зависаний из-за истечения сроков действия билетов Kerberos.

Оцените материал
Добавить комментарий

Капча загружается...