# Управление пользователями pfSense - локальные, LDAP, RADIUS

> Настройка пользователей в pfSense - создание локальных учетных записей, группы и привилегии, аутентификация через LDAP/Active Directory и RADIUS

Source: https://opennix.org/docs/pfsense/users/pfsense-user-management/


User Manager (System > User Manager) - централизованная система управления учётными записями pfSense. Через него создаются локальные пользователи, формируются группы с определёнными привилегиями и настраиваются подключения к внешним серверам аутентификации. Учётные записи используются не только для доступа к веб-интерфейсу, но и для аутентификации в VPN-сервисах, Captive Portal и при SSH-подключении к консоли межсетевого экрана.

## Учётная запись администратора

При установке pfSense создаётся учётная запись `admin` с полными привилегиями доступа ко всем функциям системы. Эта учётная запись не может быть удалена и всегда сохраняет полный набор привилегий.

### Рекомендации по безопасности учётной записи admin

| Рекомендация | Описание |
|---|---|
| Сменить пароль по умолчанию | Первое действие после установки - изменение пароля admin |
| Использовать сложный пароль | Минимум 12 символов, включая буквы, цифры и специальные символы |
| Создать именные учётные записи | Для повседневной работы использовать персональные учётные записи |
| Ограничить доступ к GUI | Настроить правила файрвола для ограничения доступа к веб-интерфейсу по IP-адресам |

> **Внимание**:
>
> Использование общей учётной записи admin несколькими администраторами затрудняет аудит действий. Необходимо создавать именные учётные записи для каждого администратора.

## Создание локальных пользователей

Локальная база пользователей хранится в конфигурации pfSense (config.xml) и не зависит от внешних серверов аутентификации.

### Процедура создания пользователя

1. Перейти в **System > User Manager**, вкладка **Users**
2. Нажать **Add** для создания нового пользователя
3. Заполнить параметры:

| Параметр | Описание |
|---|---|
| Disabled | Отключить учётную запись без удаления |
| Username | Имя пользователя (латинские буквы, цифры, дефис, точка) |
| Password | Пароль учётной записи |
| Full name | Полное имя пользователя для идентификации |
| Expiration date | Дата автоматической деактивации учётной записи |
| Custom Settings | Индивидуальные настройки интерфейса (тема, язык) |
| Group membership | Принадлежность к группам |
| Certificate | Привязка пользовательского сертификата |
| Authorized keys | SSH-ключи для аутентификации при консольном доступе |
| IPsec Pre-Shared Key | Предварительно согласованный ключ для IPsec VPN |

4. Нажать **Save**

### Дата истечения учётной записи

Поле **Expiration date** позволяет автоматически деактивировать учётную запись по истечении заданного срока. Это полезно для:

- Временных учётных записей подрядчиков
- Учётных записей с ограниченным сроком действия (стажёры, аудиторы)
- Обеспечения соответствия политикам безопасности, требующим периодической ревалидации доступа

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

## Группы и привилегии

Группы объединяют пользователей с одинаковыми правами доступа. Привилегии назначаются на уровне группы и наследуются всеми её участниками. Дополнительные привилегии могут быть назначены индивидуально конкретному пользователю.

### Предустановленная группа admins

pfSense содержит предустановленную группу `admins`, которой назначена привилегия **WebCfg - All pages**. Все пользователи этой группы получают полный доступ к веб-интерфейсу. Учётная запись `admin` автоматически включена в эту группу.

### Создание группы

1. Перейти в **System > User Manager**, вкладка **Groups**
2. Нажать **Add**
3. Заполнить параметры:

| Параметр | Описание |
|---|---|
| Group name | Имя группы (латинские буквы, цифры) |
| Scope | Local (для локальных групп) или Remote (для групп из LDAP/RADIUS) |
| Description | Описание назначения группы |
| Group membership | Пользователи, входящие в группу |

4. Нажать **Save**
5. Открыть группу для редактирования
6. В секции **Assigned Privileges** нажать **Add**
7. Выбрать необходимые привилегии
8. Нажать **Save**

### Типовые схемы привилегий

| Роль | Привилегии | Назначение |
|---|---|---|
| Полный администратор | WebCfg - All pages | Полный доступ ко всем страницам веб-интерфейса |
| Оператор мониторинга | WebCfg - Dashboard, WebCfg - Status: * | Просмотр состояния системы без возможности изменений |
| VPN-администратор | WebCfg - OpenVPN: *, WebCfg - IPsec: * | Управление VPN-подключениями |
| Администратор файрвола | WebCfg - Firewall: *, WebCfg - Diagnostics: * | Управление правилами файрвола и диагностика |
| Пользователь VPN | User - VPN: IPsec/OpenVPN | Только подключение через VPN |

### Принцип наименьших привилегий

При назначении привилегий следует придерживаться следующих правил:

- Каждый пользователь получает только те привилегии, которые необходимы для выполнения его задач
- Привилегии назначаются через группы, а не индивидуально (за исключением особых случаев)
- Регулярно проводить аудит привилегий и удалять неиспользуемые
- Документировать обоснование для назначения каждой привилегии

## Серверы аутентификации

pfSense поддерживает интеграцию с внешними серверами аутентификации для централизованного управления учётными записями.

### LDAP и Active Directory

LDAP-интеграция позволяет аутентифицировать пользователей через корпоративный каталог Active Directory или OpenLDAP.

#### Настройка LDAP-сервера

1. Перейти в **System > User Manager**, вкладка **Authentication Servers**
2. Нажать **Add**
3. Заполнить параметры:

| Параметр | Значение | Описание |
|---|---|---|
| Descriptive name | Corporate-AD | Имя для идентификации |
| Type | LDAP | Тип сервера |
| Hostname or IP | dc.example.com | Адрес контроллера домена |
| Port | 389 (LDAP) / 636 (LDAPS) | Порт подключения |
| Transport | TCP - Standard / SSL/TLS | Протокол транспорта |
| Peer Certificate Authority | AD-CA | CA для проверки сертификата сервера (при LDAPS) |
| Protocol version | 3 | Версия протокола LDAP |
| Search scope | Entire Subtree | Область поиска |
| Base DN | DC=example,DC=com | Базовый DN для поиска |
| Authentication containers | OU=Users,DC=example,DC=com | Контейнеры для поиска пользователей |
| Bind credentials | CN=ldap-reader,OU=Service,DC=example,DC=com | Учётная запись для поиска (bind DN) |
| User naming attribute | samAccountName | Атрибут имени пользователя (AD) |
| Group naming attribute | cn | Атрибут имени группы |
| Group member attribute | memberOf | Атрибут членства в группах |

4. Нажать **Save**

#### Требования к учётной записи bind

Для поиска пользователей в каталоге pfSense необходима служебная учётная запись (bind account) с правами чтения. Требования к этой учётной записи:

- Минимальные привилегии - только чтение атрибутов пользователей и групп
- Пароль не должен истекать (или необходимо обеспечить своевременную ротацию в pfSense)
- Учётная запись не должна быть заблокирована политиками безопасности AD

> **Внимание**:
>
> Не следует использовать доменного администратора в качестве bind-аккаунта. Компрометация этой учётной записи даст атакующему чрезмерные привилегии в домене.

### RADIUS

RADIUS-интеграция обеспечивает аутентификацию через централизованный RADIUS-сервер (FreeRADIUS, Microsoft NPS, Cisco ISE и др.).

#### Настройка RADIUS-сервера

1. Перейти в **System > User Manager**, вкладка **Authentication Servers**
2. Нажать **Add**
3. Заполнить параметры:

| Параметр | Значение | Описание |
|---|---|---|
| Descriptive name | Corporate-RADIUS | Имя для идентификации |
| Type | RADIUS | Тип сервера |
| Hostname or IP | radius.example.com | Адрес RADIUS-сервера |
| Shared Secret | ************ | Общий секрет для связи с сервером |
| Services offered | Authentication and Accounting | Предоставляемые сервисы |
| Authentication port | 1812 | Порт аутентификации |
| Accounting port | 1813 | Порт учёта |
| Authentication Timeout | 5 | Таймаут ожидания ответа (секунды) |
| RADIUS NAS IP Attribute | LAN IP | IP-адрес pfSense для идентификации на RADIUS-сервере |

4. Нажать **Save**

#### Маппинг групп RADIUS

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

### Тестирование аутентификации

После настройки сервера аутентификации необходимо проверить корректность подключения:

1. Перейти в **Diagnostics > Authentication**
2. Выбрать сервер аутентификации
3. Ввести имя пользователя и пароль
4. Нажать **Test**

Результат отображает статус аутентификации и список групп, к которым принадлежит пользователь. При неудачной аутентификации следует проверить:

- Доступность сервера по сети (ping, traceroute)
- Корректность bind-credentials (для LDAP)
- Корректность shared secret (для RADIUS)
- Правильность Base DN и Authentication containers (для LDAP)

### Настройка источника аутентификации по умолчанию

Для изменения источника аутентификации, используемого при входе в веб-интерфейс:

1. Перейти в **System > User Manager**, вкладка **Settings**
2. В поле **Authentication Server** выбрать нужный сервер
3. Нажать **Save**

> **Внимание**:
>
> При переключении на внешний сервер аутентификации необходимо убедиться, что локальная учётная запись admin остаётся работоспособной. В случае недоступности внешнего сервера она останется единственным способом входа в систему.

## Доступ к консоли и SSH

### SSH-доступ

pfSense поддерживает SSH-доступ для администрирования через командную строку.

1. Включить SSH: **System > Advanced**, вкладка **Admin Access**, секция **Secure Shell**
2. Установить флажок **Enable Secure Shell**
3. Указать порт SSH (по умолчанию 22)
4. Выбрать метод аутентификации:

| Метод | Описание |
|---|---|
| Password | Аутентификация по паролю (менее безопасно) |
| Public Key Only | Только по SSH-ключу (рекомендуется) |
| Both | Пароль и ключ |

Для SSH-аутентификации по ключу необходимо добавить публичный ключ в поле **Authorized keys** учётной записи пользователя.

### Shell-доступ

По умолчанию пользователи с SSH-доступом получают меню pfSense console. Для предоставления полного shell-доступа (tcsh) необходимо:

1. Назначить пользователю привилегию **User - System: Shell account access**
2. Этот доступ предоставляет полные возможности командной строки FreeBSD

> **Внимание**:
>
> Shell-доступ предоставляет неограниченные возможности модификации системы, включая прямое редактирование конфигурации. Следует предоставлять его только доверенным администраторам.

### Sudo-доступ

pfSense поддерживает sudo через установку пакета **sudo**:

1. Установить пакет sudo через **System > Package Manager**
2. Настроить правила sudo в **System > sudo**
3. Определить, какие команды доступны для каждого пользователя или группы

## Многофакторная аутентификация

pfSense поддерживает многофакторную аутентификацию (MFA) через интеграцию с RADIUS-серверами, поддерживающими TOTP/HOTP (например, FreeRADIUS с модулем Google Authenticator или privacyIDEA).

### Схема работы MFA

1. Пользователь вводит имя и пароль в форме входа pfSense
2. pfSense передаёт учётные данные на RADIUS-сервер
3. RADIUS-сервер проверяет пароль и запрашивает OTP (или принимает OTP, объединённый с паролем)
4. При успешной проверке RADIUS возвращает Access-Accept

### Интеграция с TOTP

Для реализации TOTP (Time-based One-Time Password) необходимо:

1. Настроить RADIUS-сервер с поддержкой TOTP
2. Добавить RADIUS-сервер в pfSense как описано выше
3. Настроить пользователей на RADIUS-сервере с привязкой TOTP-секрета
4. Пользователи вводят пароль, конкатенированный с OTP-кодом (формат зависит от конфигурации RADIUS)

## Устранение неполадок

### Не удаётся войти в веб-интерфейс

Возможные причины и решения:

| Причина | Решение |
|---|---|
| Забыт пароль admin | Сбросить пароль через консоль (опция 3 в меню) |
| Внешний сервер аутентификации недоступен | Войти с локальной учётной записью admin |
| Учётная запись заблокирована | Проверить дату истечения и статус учётной записи |
| Браузер не принимает сертификат | Проверить [настройки сертификатов](/docs/pfsense/certificates/pfsense-certificate-management/) |

### LDAP bind не работает

1. Проверить доступность LDAP-сервера: **Diagnostics > Ping** или **Diagnostics > Test Port**
2. Убедиться в корректности формата bind DN (для AD: CN=user,OU=container,DC=domain,DC=com)
3. Проверить, не заблокирована ли служебная учётная запись политиками AD
4. При использовании LDAPS - убедиться, что CA-сертификат импортирован в pfSense
5. Использовать **Diagnostics > Authentication** для тестирования

### Группы LDAP/RADIUS не маппятся на привилегии

1. Создать локальную группу с областью действия **Remote**
2. Убедиться, что имя локальной группы точно совпадает с именем группы в каталоге
3. Для LDAP: проверить атрибут **Group member attribute** (memberOf для AD)
4. Для RADIUS: проверить, что RADIUS-сервер возвращает атрибут с именем группы
5. Использовать **Diagnostics > Authentication** для проверки списка групп пользователя

### Пользователь VPN не может подключиться

1. Убедиться, что учётная запись не деактивирована и не истекла
2. Проверить, что учётная запись имеет привилегию VPN-доступа
3. Для сертификатной аутентификации - проверить привязку [сертификата к пользователю](/docs/pfsense/certificates/pfsense-certificate-management/)
4. Проверить логи VPN в **Status > System Logs**

## Примечания по миграции

При миграции конфигурации pfSense между устройствами локальная база пользователей переносится автоматически в составе config.xml. Следует учитывать:

- Все локальные пользователи, группы и привилегии сохраняются в [резервной копии](/docs/pfsense/backup/pfsense-backup-recovery/)
- Настройки внешних серверов аутентификации (LDAP, RADIUS) переносятся, но подключение необходимо проверить после миграции
- SSH-ключи пользователей сохраняются в конфигурации
- Пользовательские сертификаты переносятся вместе с основной конфигурацией

## Связанные разделы

- [Управление сертификатами](/docs/pfsense/certificates/pfsense-certificate-management/) - создание клиентских сертификатов для VPN-аутентификации
- [VPN - OpenVPN](/docs/pfsense/vpn/openvpn/) - настройка VPN с пользовательской аутентификацией
- [Правила файрвола](/docs/pfsense/firewall/pfsense-firewall-rules/) - ограничение доступа к веб-интерфейсу по IP-адресам

