Трудности с настройкой apparmor для разрешения rsyslog выполнять пользовательскую программу.

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

Я настроил свой сервер, доступный через интернет, для регистрации неудачных попыток входа в SSH, настроив rsyslog на отправку журналов в скрипт оболочки authfail, который выполняет Python-скрипт, сохраняющий детали в базе данных. К сожалению, когда я недавно обновил сервер с Jammy до Noble, добавление apparmor в rsyslog нарушило эту настройку. Я пробовал настраивать конфигурацию apparmor, но ничего не помогло.

Что я пробовал:

  1. Создание файла /etc/apparmor.d/rsyslog.d/authfail.apparmor, содержащего только строку /path/to/authfail Ux,

  2. То же, что и в #1, но с ix вместо Ux

  3. То же, что и в #1, но с Px вместо Ux и добавлением файла /etc/apparmor.d/authfail, содержащего:

    #include <tunables/home>
    
    profile authfail /path/to/authfail {
       /path/to/python/script Px,
       /path/to/sub-log-file a,
    }
    
     profile logsdb /path/to/python/script {
       #include <abstractions/python>
       /path/to/a/config/file r,
     }
    
  4. То же, что и в #1, но с flags=(unconfined), добавленным к строке profile rsyslog в /etc/apparmor/usr.sbin.rsyslogd

Большинство из них приводят к ошибкам “Permission denied”, испускаемым rsyslog, и /var/log/syslog содержит такие строки, как:

2025-01-05T00:19:05.361692+00:00 firefly kernel: audit: type=1400 audit(1736036345.357:255): apparmor="DENIED" operation="exec" class="file" profile="rsyslogd" name="/opt/jwodder/bin/authfail" pid=84565 comm=72733A6D61696E20513A526567 requested_mask="x" denied_mask="x" fsuid=104 ouid=1001

Как настроить apparmor, чтобы позволить rsyslog выполнять мою программу?

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

Настройка AppArmor для разрешения выполнения rsyslog вашего пользовательского сценария может показаться сложной задачей, особенно учитывая изменения в обновлениях дистрибутивов Linux. Давайте разберемся, как вы можете правильно настроить AppArmor, чтобы решить вашу проблему.

Шаг 1: Проверка правильности путей

Первым делом убедитесь, что пути, указанные в вашем профиле AppArmor, корректны и соответствуют фактическому расположению скрипта и интерпретатора Python. Это очевидный шаг, но не стоит его игнорировать.

Шаг 2: Изучение профиля rsyslogd

Откройте файл конфигурации профиля rsyslogd, который обычно находится в /etc/apparmor.d/usr.sbin.rsyslogd. Попробуйте вручную внести изменения в него, чтобы разрешить выполнение вашего скрипта напрямую из этого профиля.

# Вставьте следующую строку в профиль rsyslogd
/path/to/authfail Px,

Шаг 3: Создание отдельного профиля для вашего сценария

Создайте отдельный профиль для вашего скрипта. Это может быть более гибким решением. Профиль может выглядеть следующим образом:

#include <tunables/global>

/path/to/authfail {
    # Доступ на выполнение скрипта
    /path/to/authfail Px,

    # Разрешения для Python
    # Включаем абстракции для Python
    #include <abstractions/python>

    # Разрешить чтение файла конфигурации
    /path/to/a/config/file r,

    # Разрешить доступ к лог-файлу
    /path/to/sub-log-file a,
}

Шаг 4: Перезагрузка профилей AppArmor

После внесения изменений, не забудьте перезагрузить профили AppArmor, чтобы изменения вступили в силу:

sudo apparmor_parser -r /etc/apparmor.d/usr.sbin.rsyslogd
sudo apparmor_parser -r /etc/apparmor.d/your_profile_file

Проверьте файл /var/log/syslog на предмет новых ошибок. Если профиль применен правильно, ошибок "Permission denied" быть не должно.

Шаг 5: Тестирование и настройка

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

Заключение

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

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

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

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