Учет с pam_radius

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

Как настроить учет на системе Unix с использованием pam_radius?
Конфигурация pam_radius проста для аутентификации.

Но я запутался, как найти способ для учета.

В учете мы отправляем некоторые AVP на 1813 порт сервера RADIUS.
Однако как я могу сделать это с помощью pam_radius?

Например, у меня есть следующая конфигурация в /etc/pam.d/radius:

auth        sufficient      pam_radius_auth.so
account     sufficient      pam_radius_auth.so
session     sufficient      pam_radius_auth.so
password    sufficient      pam_radius_auth.so

И я тестирую свою конфигурацию с помощью pamtester:

pamtester radius ali authenticate
Пароль: 
pamtester: успешно аутентифицирован

Сервер RADIUS уже работает, и аутентификация прошла успешно.

Но где же учет в модуле pam_radius?

Учет обычно выполняет тип PAM “session”. Это единственный тип, который вызывается при входе и выходе, и есть отдельные вызовы PAM для Accounting-Start и Accounting-Stop:

pamtester radius ali open_session close_session

(Вызовы “session” выполняются даже для входов, которые не основаны на паролях, таких как аутентификация по ключу SSH, которая, конечно, не может пройти через “authenticate”, так как пароля не требуется.)


Обратите внимание, что несмотря на свое название, тип “account” не предназначен для учета RADIUS – он используется для авторизации (проверки учетной записи), т.е. для проверки, разрешено ли учетной записи входить в систему.

Возможно, немного поздно, но я наткнулся на этот вопрос, пытаясь диагностировать аналогичную проблему. Оказывается, когда модуль RADIUS PAM пытается отправить пакет, если в конфигурации сервера pam_radius не указан конкретный порт, он ищет порт по имени в /etc/services. Для аутентификации он ищет имя “radius”. Для учета он ищет имя “radacct”. Однако в моей системе запись в /etc/services на самом деле “radius-acct”. Я компилирую свою версию, поэтому просто изменил эту строку, чтобы она соответствовала моей системе.

Еще один вариант – убедиться, что порт указан в конфигурации сервера для pam_radius. Если указан числовой порт, модуль рассматривает его как “radius” порт и увеличивает его на единицу, чтобы получить порт учета. Так что, если вы явно укажете :1812, учетные пакеты будут отправляться на порт 1813, как и нужно.

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

Учет с помощью pam_radius на Unix-системах

Введение

Настройка учета пользователей в системах Unix с использованием модуля PAM-radius может быть сложной задачей. Хотя аутентификация с его помощью обычно выполняется без особых проблем, реализация учета требует более глубокой проработки. В данной статье мы рассмотрим, как правильно настроить учет с использованием модуля pam_radius, а также ответим на распространенные вопросы, касающиеся конфигурации и работы с RADIUS-серверами.

Настройка PAM-radius

Для начала давайте обратим внимание на конфигурацию PAM-radius. Основной файл конфигурации обычно располагается в /etc/pam.d/radius и может выглядеть следующим образом:

auth        sufficient      pam_radius_auth.so
account     sufficient      pam_radius_auth.so
session     sufficient      pam_radius_auth.so
password    sufficient      pam_radius_auth.so

Эта настройка позволяет использовать pam_radius для аутентификации, учета и управления сессиями. Однако возникает вопрос: как реализовать учет, отправляя AVP (Attribute-Value Pairs) на порт 1813 RADIUS-сервера, что необходимо для ведения регистрации?

Учет с помощью PAM: сессии и порты

Как уже упоминалось, учет в контексте PAM и RADIUS выполняется в основном через вызовы сессий. Специфические параметры учета "Accounting-Start" и "Accounting-Stop" обрабатываются в момент открытия и закрытия сессий. Чтобы протестировать настройки, можно воспользоваться коммандой:

pamtester radius ali open_session close_session

Эти вызовы гарантируют, что запросы на учет будут отправлены RADIUS-серверу.

Особенности порта

Кроме того, при использовании pam_radius существует особенность в определении портов. По умолчанию, если в конфигурации сервера pam_radius не указан конкретный порт, модуль ищет его в файле /etc/services. Для аутентификации он использует имя "radius" (порт 1812), а для учета — имя "radacct". Однако в вашем случае имя может отличаться, например, "radius-acct". Важно убедиться, что соответствующие записи в /etc/services корректны.

Существует два основных способа обеспечить корректное направление учетных запросов:

  1. Обновление файла /etc/services: Убедитесь, что в вашем файле /etc/services присутствует правильная настройка для "radacct", которая соответствует необходимому для вашего окружения порту.

  2. Явное указание порта в конфигурации pam_radius: Вы можете установить порт 1812 в конфигурационном файле. Pam_radius автоматически увеличит указанный порт на единицу для отправки учетных запросов на порт 1813.

Заключение

Реализация учета с использованием pam_radius требует внимания к деталям, особенно в отношении настройки портов и управления сессиями. Обеспечение правильной конфигурации, а также понимание различий между аутентификацией и учетом, является критически важным для успешного завершения настройки. Если у вас возникли трудности либо есть сомнения относительно работы системы, рекомендуется провести диагностику как через команды pamtester, так и через анализ сетевых пакетов, чтобы убедиться в отправке учетных запросов на RADIUS-сервер.

Контактная информация

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

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

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