Astra linux аутентификация не пройдена

Обновлено: 02.07.2024

В Linux команда passwd используется для установки или изменения паролей учетных записей пользователей, в то время как при использовании этой команды иногда пользователи могут столкнуться с ошибкой: passwd: Authentication token manipulation error, как показано ниже.

В этой статье мы расскажем о различных способах исправления ошибки в системах Linux.

1. Перезагрузка системы

Первым основным решением является перезагрузка системы.

Я не могу сказать, почему это сработало, но это сработало для меня на моем CentOS 7.

Если это не удается, попробуйте следующие решения.

2. Установите правильные настройки модуля PAM

Другой возможной причиной ошибки является неправильный параметр PAM (Pluggable Authentication Module).

Это делает модуль неспособным получить введенный новый токен аутентификации.

Различные параметры для PAM находятся в /etc/pam.d/.

3. Перезапись раздела root

Вы также можете увидеть эту ошибку, если / partition установлен только для чтения, что означает, что файл не может быть изменен, поэтому пароль пользователя не может быть установлен или изменен.

4. Установите правильные разрешения в файле shadow

Неправильные разрешения на файл /etc/shadow, который хранит фактические пароли для учетных записей пользователей в зашифрованном формате, также могут вызвать эту ошибку.

Чтобы проверить разрешения для этого файла, используйте следующую команду.

Чтобы установить для него правильные разрешения, используйте команду chmod следующим образом.

5. Восстановление и исправление ошибок файловой системы.

Незначительные ошибки накопителя или файловой системы также могут вызвать ошибку.

Вы можете использовать инструменты для проверки диска Linux, такие как fsck, для исправления таких ошибок.

6. Освободите дисковое пространство

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


В этой статье мне бы хотелось рассказать о том, как приложения в Linux могут использовать систему Подключаемых Модулей Безопасности (Pluggable Authentication Modules) для прозрачной аутентификации пользователей. Мы немного покопаемся в истории развития механизмов аутентификации в Linux, разберемся с системой настроек PAM и разберем исходный код модуля аутентификации pam_p11, который позволяет проводить аутентификацию пользователей по смарт-картам.
В конце статьи мы рассмотрим на практике настройку и работу модуля аутентификации в сертифицированном по 3 классу защищенности СВТ и 2 уровню контроля отсутствия недекларированных возможностей дистрибутиве Astra Linux для аутентификации по USB-токенам Рутокен ЭЦП и Рутокен S. Учитывая то, что Рутокен S имеет сертификаты ФСТЭК по НДВ 3, а Рутокен ЭЦП по НДВ 4, это решение может применяться в информационных системах, обрабатывающих конфиденциальную информацию, вплоть до информации с грифом «С».

Немного истории

  1. Linux-PAM – основная реализация архитектуры PAM, рассматривается нами в этой статье
  2. OpenPAM – альтернативная реализация PAM, используемая в BSD-системах и Mac OS X
  3. Java PAM – Java-обертка над Linux-PAM

Структура PAM

  • Запросить пароль у пользователя и проверить введенное значение с хранимым в системе
  • Проверить, удовлетворяет ли пароль требованиям безопасности и не истек ли он
  1. Приложение инициализирует библиотеку PAM (libpam.so)
  2. PAM в соответствии с конфигурационным файлом для приложения обращается к требуемым модулям
  3. Модули выполняют возложенные на них действия
  4. Приложению возвращается результат операции
  • Аутентификация (auth)
  • Управление учетными записями (account)
  • Управление сеансами (session)
  • Управление паролями (passwd)

Конфигурация PAM

Если приложению требуется аутентификация, то оно должно создать файл со своим именем в каталоге /etc/pam.d, в котором должны быть указаны модули, с помощью которых производится аутентификация и прочие действия. Посмотрим, что лежит в каталоге /etc/pam.d в Ubuntu 11.10

Для примера, посмотрим на абстрактный файл конфигурации для приложения login

Каждая строчка конфига записывается в виде

  • Тип модуля соответствует обозначениям самих модулей (т.е. auth/account/session/passwd)
  • Управляющий флаг указывает критичность модуля для успешного выполнения операции. Флаг может принимать следующие значения: requisite (необходимый), required (требуемый), sufficient (достаточный) и optional (необязательный).
  • Путь к библиотеке задает собственно путь до файла модуля. По умолчанию они ищутся в /lib/security/
  • Параметры задают список аргументов, которые будут переданы модулю. Аргументы передаются аналогично принципу argc/argv в функции main(), за исключением того, что argv[0] содержит не имя модуля, а конкретный аргумент.
  • requisite (необходимый): если модуль стека вернет отрицательный ответ, то запрос сразу же отвергается. Другие модули при этом не будут выполнены.
  • required (требуемый): если один или несколько модулей стека вернут отрицательный ответ, все остальные модули будут выполнены, но запрос приложения будет отвергнут.
  • sufficient (достаточный): если модуль помечен как достаточный и перед ним ни один из необходимых или достаточных модулей не возвратил отрицательного ответа, то все оставшиеся модули в стеке игнорируются, и возвращается положительный ответ.
  • optional (дополнительный): если в стеке нет требуемых модулей, и если ни один из достаточных модулей не возвратил положительного ответа, то хотя бы один из дополнительных модулей приложения или службы должен вернуть положительный ответ

Разработка модуля аутентификации для PAM

В этом разделе мы разберем исходный код модуля pam_p11 и рассмотрим основные моменты, которым стоит уделить внимание при написании своего собственного модуля.

pam_p11
  • На токене хранится сертификат пользователя и его закрытый ключ
  • Сертификат также сохранен в домашнем каталоге пользователя как доверенный
  1. На токене выполняется поиск сертификата пользователя
  2. Через PAM производится запрос PIN-кода к токену
  3. Если аутентификация на токене прошла успешно, то производится подпись случайных данных с помощью закрытого ключа с токена. Сама подпись выполняется аппаратно.
  4. Полученная ЭЦП проверяется с помощью сертификата пользователя
Собственно разработка модуля
  • pam_sm_authenticate, pam_sm_setcred – аутентификация
  • pam_sm_acct_mgmt – управление учетными записями
  • pam_sm_chauthtok – управление паролями
  • pam_sm_open_session, pam_sm_close_session — управление сеансами

Эти константы необходимы, чтобы PAM знал, что наш модуль может выполнять все функции, описанные выше. Конечно, если мы реализуем только аутентификацию, то остальные функции можно отбросить, но разработчики pam_p11 решили, что надежнее будет поставить заглушки вместо неиспользуемых функций.
Приступим к написанию функции pam_sm_authenticate. Она имеет следующую сигнатуру:

Запросим у PAM имя пользователя

Теперь среди сертификатов на токене найдем тот, что лежит у нас в

А сейчас самое интересное – нам нужно запросить через PAM пароль пользователя (который в нашем случае будет PIN-кодом к токену), а затем выполнить аутентификацию на токене

Теперь мы можем выполнить аутентификацию на токене:

На этом завершается первый этап аутентификации. Теперь нам нужно проверить, обладает ли владелец токена закрытым ключом. Для этого вычислим ЭЦП для произвольного блока данных и проверим ее с помощью доверенного сертификата.
Для начала считаем 128 байт из /dev/random

Затем получим закрытый ключ, соответствующий сертификату и подпишем на нем случайные данные

Проверим подпись. Для этого сначала средствами OpenSSL получим открытый ключ из сертификата, а затем выполним проверку ЭЦП

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

Практическое использование



В качестве подопытного дистрибутива можно было бы взять свежую Ubuntu, но учитывая то, что в 12.04 все слишком хорошо работает, мы решили с пользой для общего дела настроить аутентификацию в релизе «Смоленск» операционной системы Astra Linux Special Edition по USB-токенам Рутокен ЭЦП и Рутокен S.

Установка дополнительных пакетов
  • libopenct1 (0.6.20-1.2): libopenct1_0.6.20-1.2_amd64.deb
  • openct (0.6.20-1.2): openct_0.6.20-1.2_amd64.deb
Для Рутокен S
  • libopensc2_0.11.13-1.1_amd64.deb
  • opensc_0.11.13-1.1_amd64.deb
  • mozilla-opensc_0.11.13-1.1_amd64.deb
Для Рутокен ЭЦП
  • opensc (0.12.2-2): opensc_0.12.2-2_amd64.deb
  • libltdl7 (>= 2.2.6b): libltdl7_2.2.6b-2_amd64.deb
  • libssl0.9.8 (>= 0.9.8m-1): libssl0.9.8_0.9.8o-4squeeze11_amd64.deb
Модуль PAM и его зависимости
Настройка pam_p11


В появившемся диалоге необходимо выбрать pam_p11. Если вы хотите отключить аутентификацию по паролям, то можно отключить Unix authentication. Поскольку в конфигурационном файле профиля было указано, что модуль будет «sufficient», то при получении от нашего модуля ответа «PAM_SUCCESS» весь процесс аутентификации будет считаться успешным.

Создание ключа и сертификата

Для начала создаем ключевую пару RSA длины 2048 бит c ID «45» (id стоит запомнить, он понадобится при создании сертификата).

Проверим сгенерированный ключ:

Теперь с помощью OpenSSL создадим самоподписанный сертификат. Запускаем openssl и подгружаем модуль поддержки pkcs11:

Создаем сертификат в PEM-формате:

В последней команде 1:45 — это пара :<id ключа>. Таким образом, мы создали сертификат на базе ключевой пары, хранящейся на токене. При этом в текущем каталоге должен создаться файл сертификата с именем cert.pem.
Теперь сохраним сертификат на токен:

Занесение сертификата в список доверенных

На данном этапе нам осталось только прочитать с токена сертификат с нужным ID и записать его в файл доверенных сертификатов:

Настройка двухфакторной аутентификации в домене Astra Linux Directory

Интернет-портал habrahabr.ru, сентябрь, 2017
Статья Дмитрия Шуралёва, технического специалиста по работе с технологическими партнёрами компании "Аладдин Р.Д."

В этом посте мы решили рассказать о доменной аутентификации в Linux, с использованием смарт-карт и USB-токенов JaCarta PKI в качестве второго фактора аутентификации. Если о локальной аутентификации через PAM-модуль информации существует довольно много, то вопрос доменной инфраструктуры и аутентификация по Kerberos-билетам в Linux рассмотрен слабо, особенно на русском языке. В качестве операционной системы возьмём Astra Linux и на примере Astra Linux Directory (ALD) это и покажем.

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

Немного вводных об Astra Linux Directory (ALD) и JaCarta PKI

Домен Astra Linux Directory (ALD) предназначен для организации единого пространства пользователей (домена локальной вычислительной сети) в автоматизированных системах.

ALD использует технологии LDAP, Kerberos5, Samba/CIFS и обеспечивает:

  • централизованное хранение и управление учётными записями пользователей и групп;
  • сквозную аутентификацию пользователей в домене с использованием протокола Kerberos5;
  • функционирование глобального хранилища домашних директорий, доступных по Samba/CIFS;
  • автоматическую настройку файлов конфигурации UNIX, LDAP, Kerberos, Samba, PAM;
  • поддержку соответствия БД LDAP и Kerberos;
  • создание резервных копий БД LDAP и Kerberos с возможностью восстановления;
  • интеграцию в домен входящих в дистрибутив СУБД, серверов электронной почты, Web-серверов, серверов печати и другие возможности.

JaCarta PKI — это линейка PKI-токенов для строгой аутентификации пользователей в корпоративных системах, безопасного хранения ключевых контейнеров программных СКЗИ и цифровых сертификатов российского производителя – компании "Аладдин Р.Д.".


В среде Astra Linux Directory (ALD) электронные ключи JaCarta PKI могут использоваться для двухфакторной аутентификации пользователя в домене ALD и отказа от паролей. Кроме того, с этими же электронными ключами можно выполнять различные сценарии внутри ОС, после аутентификации, такие, как: электронная подпись, хранение ключевых контейнеров, доступ к Web-ресурсам, проброс ключа в сессии MS Windows. Доступ к VDI сервисам, таким, как VmWare или Citrix.

Процесс настройки

Пример демо-зоны

  • Сервер — Astra Linux Smolensk SE 1.5 4.2.0-23-generic, x86_64, с установленными пакетами:
    • JaCarta IDProtect 6.37;
    • libccid;
    • pcscd;
    • libpcsclite1;
    • krb5-pkinit;
    • libengine-pkcs11-openssl;
    • opensc.
    • JaCarta IDProtect 6.37;
    • libccid;
    • pcscd;
    • libpcsclite1;
    • krb5-pkinit.

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

    Установка драйверов на сервер и клиент

    Для обеспечения работы со смарт-картой JaCarta PKI на клиенте и сервере установите следующие пакеты: libccid, pcscd, libpcsclite1. После установки этих обязательных пакетов установите пакет драйверов IDProtectClient, который можно загрузить с официального сайта "Аладдин Р.Д.".

    Для обеспечения работы со смарт-картой подсистемы Kerberos добавочно к предустановленным пакетам ald/kerberos установите пакет krb5-pkinit на клиенте и сервере.

    Для обеспечения возможности выпуска ключей и сертификатов на JaCarta PKI на сервере также установите пакеты libengine-pkcs11-openssl и opensc.

    Установка и настройка центра сертификации на сервере

    В качестве центра сертификации (CA) будет использован OpenSSL.

    OpenSSL — криптографический пакет с открытым исходным кодом для работы с SSL/TLS. Позволяет создавать ключи RSA, DH, DSA и сертификаты X.509, подписывать их, формировать CSR и CRT.

    Содержимое файла pkinit_extensions (его следует положить в тот каталог, откуда вы выполняете команды):

    1. Выпустите сертификат KDC: $ openssl x509 -req -in kdc.req -CAkey cakey.pem -CA cacert.pem -out kdc.pem -extfile pkinit_extensions -extensions kdc_cert –CAcreateserial –days 365
    2. Файлы kdc.pem, kdckey.pem, cacert.pem перенесите в /var/lib/krb5kdc/
    3. Создайте резервную копию файла /etc/krb5kdc/kdc.conf. Отредактируйте /etc/krb5kdc/kdc.conf, дополнив секцию [kdcdefaults] следующими записями: pkinit_identity = FILE:/var/lib/krb5kdc/kdc.pem,/var/lib/krb5kdc/kdckey.pem pkinit_anchors = FILE:/var/lib/krb5kdc/cacert.pem Первая запись задаёт ключи и сертификат сервера, а вторая указывает на корневой сертификат центра сертификации.
    4. Для принятия изменений выполните: /etc/init.d/krb5-admin-server restart /etc/init.d/krb5-kdc restart

    Подготовка смарт-карты. Выпуск ключей и сертификата пользователя

    Убедитесь в том, что установлены пакеты libengine-pkcs11-openssl и opensc. Подключите устройство, которое следует подготовить.

    Проинициализируйте устройство, установите PIN-код пользователя. Помните, что инициализация устройства удалит все данные на JaCarta PKI без возможности восстановления.

    Для инициализации необходимо воспользоваться утилитой pkcs11-tool.

    pkcs11-tool --slot 0 --init-token --so-pin 00000000 --label 'JaCarta PKI' --module /lib64/libASEP11.so,

    --slot 0 — указывает, в какой виртуальный слот подключено устройство. Как правило, это слот 0, но могут быть и другие значения – 1,2 и т.д.;
    --init-token – команда инициализации токена;
    --so-pin 00000000 – PIN-код администратора JaCarta PKI. По умолчанию имеет значение 00000000;
    --label 'JaCarta PKI' – метка устройства;
    --module /lib64/libASEP11.so — указывает путь до библиотеки libASEP11.so. Устанавливается в рамках пакета idprotectclient см. раздел "Установка драйверов на сервер и клиент".

    Для задания PIN-кода пользователя используйте команду:/


    pkcs11-tool --slot 0 --init-pin --so-pin 00000000 --login --pin 11111111 --module /lib64/libASEP11.so,

    --slot 0 — указывает, в какой виртуальный слот подключено устройство. Как правило, это слот 0, но могут быть и другие значения – 1,2 и т.д.;
    --init-pin – команда установки PIN-кода пользователя;
    --so-pin 00000000 – PIN-код администратора JaCarta PKI. По умолчанию имеет значение 00000000;
    --login – команда логина;
    --pin 11111111 – задаваемый PIN-код пользователя;
    --module /lib64/libASEP11.so — указывает путь до библиотеки libASEP11.so. Устанавливается в рамках пакета idprotectclient см. раздел "Установка драйверов на сервер и клиент".

    Сгенерируйте ключи на устройстве, для этого введите следующую команду:

    pkcs11-tool --slot 0 --login --pin 11111111 --keypairgen --key-type rsa:2048 --id 42 --label “test1 key” --module /lib64/libASEP11.so,

    --slot 0 — указывает, в какой виртуальный слот подключено устройство. Как правило, это слот 0, но могут быть и другие значения – 1,2 и т.д.;
    --login --pin 11111111 — указывает, что следует произвести логин под пользователем с PIN-кодом "11111111". Если у Вашей карты другой PIN-код пользователя, укажите его;
    --keypairgen --key-type rsa:2048 — указывает, что должны быть сгенерированы ключи длиной 2048 бит;
    --id 42 — устанавливает атрибут CKA_ID ключа. CKA_ID может быть любым;
    Запомните это значение! Оно необходимо для дальнейших шагов подготовки устройства к работе.
    --label “test1 key” — устанавливает атрибут CKA_LABEL ключа. Атрибут может быть любым;
    --module /lib64/libASEP11.so — указывает путь до библиотеки libASEP11.so. Устанавливается в рамках пакета idprotectclient см. раздел "Установка драйверов на сервер и клиент".

    Сгенерируйте запрос на сертификат с помощью утилиты openssl. Для этого введите следующие команды:

    Необходимо установить переменные окружения

    Настройка клиента. Проверка работоспособности

    Создайте на клиенте каталог /etc/krb5/. Скопируйте в /etc/krb5/ сертификат CA (cacert.pem) c сервера.

    Настройте kerberos в /etc/krb5.conf. Секцию [libdefaults] дополните следующими строками.

    Когда появится строка запроса PIN-кода к карте, введите его.

    Для проверки того, что kerberos-тикет был успешно получен для пользователя, введите команду klist. Для удаления тикета — kdestroy.

    Для входа в домен по смарт-карте на экране входа в ОС вместо пароля введите PIN-код от смарт-карты.

    На этом настройка окончена. Да, к сожалению, система сама не поменяет и не подстроит login окно под смарт-карту, и оно будет стандартным, но если приложить немного секретных усилий, можно добиться красивого результата.

    Фирма «1С» анонсировала поддержку аутентификации пользователей средствами операционной системы для тонкого клиента в Linux с использованием протокола Kerberos.

    Аутентификация средствами ОС для Linux-клиентов

    На страницах официального технологического блога «Заметки из Зазеркалья» опубликован анонс новых возможностей технологической платформы 1С. Разработчики пообещали обеспечить поддержку аутентификации пользователей средствами операционной системы для тонкого клиента в ОС Linux с помощью с протокола Kerberos.

    Предполагается, что это решение будет актуально для систем, где используются инструменты для централизованного управления аутентификацией – Windows Active Directory, OpenLDAP, FreeIPA и другие.

    В заметке сообщается, что новая функциональность появится в исправительных релизах, начиная с версии 8.3.17.


    В каких случаях могут быть полезны новые возможности технологической платформы

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

    Новые возможности аутентификации для Linux-клиентов могут быть актуальны в проектах, где есть требования по поддержке аутентификации на уровне ОС, но при этом бюджет не позволяет развернуть все необходимые компоненты с использованием решений Microsoft. Средняя цена корпоративной лицензии Windows сейчас составляет примерно 13 500 рублей.

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


    Полный текст о новых возможностях технологической платформы для аутентификации пользователей linux-клиентов доступен в официальном блоге «Заметки из Зазеркалья».

    Актуальная техническая документация по видам аутентификации для платформы « 1С:Предприятие » на портале ИТС (ссылка открывается при наличии действующей подписки ИТС)

    Читайте также: