Скзи віддалена автентифікація користувача linux. Виправлення помилки 'Authentication Token Manipulation Error' в Ubuntu Linux. Створення ключів на токені

17.05.2020 Новини

  1. Підключіть USB-токен до комп'ютера.
  2. Для визначення назви моделі USB-токена відкрийте Терміналта введіть команду:
$lsusb

В результаті у вікні Терміналу з'явиться назва моделі USB-токена:

Переконайтеся, що ви використовуєте: Aktiv Rutoken ECP

Вступ

Pluggable Authentication Modules (PAM, що підключаються модулі аутентифікації) - це набір бібліотек, що розділяються, які дозволяють інтегрувати різні низькорівневі методи аутентифікації у вигляді єдиного високорівневого API. Це дозволяє надати єдині механізми для керування, вбудовування прикладних програму процес аутентифікації.

Загальний порядок дій для налаштування PAM:

  1. Згенерувати на токені ключову пару RSA (перевірено, що працює для довжини ключа 2048 біт, з 1024 були проблеми)
  2. Якщо потрібно сертифікат, то за допомогою OpenSSL або іншого програмного забезпечення згенерувати сертифікат і записати його на токен
  3. Записати відкритий ключабо сертифікат у необхідний каталог

У результаті це виглядає так:



Попередня підготовка

Демонстрація роботи проводиться на Ubuntu 18.04. Описана послідовність дій є актуальною також для інших версій Ubuntu та систем, заснованих на Debian.

Для конфігурації модуля PAM необхідно встановити пакети:

  • pcscd
  • OpenSC
  • OpenSSL
  • libpam-p11
  • libengine-pkcs11-openssl

Sudo apt-get install pcscd opensc openssl libpam-p11 libengine-pkcs11-openssl

Користувачам Рутокен S також потрібно встановити драйвер з нашого сайту.

Загальний порядок дій

Налаштування pam_p11

До початку роботи з токеном варто налаштувати модуль pam_p11:

    Створити файл /usr/share/pam-configs/p11 з таким змістом:

    Name: Pam_p11 Default: yes Priority: 800 Auth-Type: Primary Auth: sufficient pam_p11_opensc.so /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so

    Якщо ви використовуєте Ubuntu 18.04, вам необхідно перевірити місцезнаходження opensc-pkcs11.so. Він може бути, наприклад, в

    /usr/lib/opensc-pkcs11.so. Якщо його знайти не вдається, скористайтесь командою find

    Оновити конфігурацію PAM:

    Sudo pam-auth-update

  1. У діалозі необхідно переконатися, що обраний pam_p11. Якщо ви хочете вимкнути аутентифікацію за паролями, можна вимкнути Unix authentication.

    Створення ключів на токені

  2. Підготуємо токен.

    $ pkcs15-init -E $ pkcs15-init --create-pkcs15 --so-pin "87654321" --so-puk "" $ pkcs15-init --store-pin --label "User PIN" --auth- id 02 --pin "12345678" --puk "" --so-pin "87654321" --finalize

    У параметрах pin та so-pin можна вказати бажані пін-коди користувача та адміністратора.

    Створюємо ключову пару RSA довжини 2048 біт з ID "45" (id варто запам'ятати, він знадобиться під час створення сертифіката). Аутентифікація на токені відбувається під сутністю користувача.

    $ pkcs15-init --generate-key rsa/2048 --auth-id 02 --id 45<вводим PIN пользователя>

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

    $ pkcs15-tool --list-keys За допомогою відповіді з карткою: Aktiv Rutoken ECP 00 00 Private RSA Key Object Flags: , private, modifiable Usage: , sign Access Flags: , sensitive, alwaysSensitive, neverExtract, local ModLength: 2 : 1 (0x1) Native: yes Path: 3f001000100060020001 Auth ID: 02 ID: 45

    Створення сертифіката та імпорт його на токен

  3. Запускаємо openssl

    Підвантажуємо модуль підтримки pkcs11:

    OpenSSL> engine dynamic -pre SO_PATH:/usr/lib/x86_64-linux-gnu/engines-1.1/pkcs11.so -pre ID:pkcs11 -pre LIST_ADD:1 -pre LOAD -pre MODULE_PATH:/usr/lib/x86_64- linux-gnu/opensc-pkcs11.so (dynamickий) Dynamic engine /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so Додано: (pkcs11) pkcs11 engine OpenSSL>

    Якщо ви використовуєте Ubuntu 18.04, вам необхідно перевірити місцезнаходження pkcs11.so. Він може розташовуватися, наприклад, /usr/lib/openssl/engines/ . Якщо його знайти не вдається, скористайтесь командою find

    Створюємо самопідписаний сертифікат у PEM-форматі:

    OpenSSL> req -engine pkcs11 -new -key 0:45 -keyform engine -x509 -out cert.pem -text

    Де 0:45 це пара slot:id (який ми вказували в п.5). OpenSSL запропонує ввести PIN-код та заповнити інформацію про сертифікат. Якщо у вас виникла помилка, перевірте, чи не підключені інші токи USB або зчитувачі смарт-карт до комп'ютера.

    Перевіряємо створений сертифікат. У поточному каталозі має бути створений файл самопідписаного сертифіката з ім'ям cert.pem.
    Примітка: якщо при створенні сертифіката OpenSSL прибрати ключ -x509, то на виході отримаємо заявку на сертифікат.

    Примітка

    На стадії вибору користувача інформація про підключений токен може не оновлюватися динамічно. Якщо ви підключили токен і не бачите поля введення пін-коду, вам може знадобитися перенести фокус на "гостовий сеанс" і назад на вашого користувача.

Якщо ви адміністратор Linux і хочете максимально убезпечити свої сервери та настільні комп'ютери, Ви, напевно, замислювалися про використання двофакторної аутентифікації. Взагалі, налаштувати її настійно рекомендується кожному, тому що двофакторна автентифікація помітно ускладнює зловмисникам завдання отримати доступ до ваших машин.

Linux дозволяє налаштувати комп'ютер так, що увійти в консоль, робочий стіл або через Secure Shell буде не можна без коду двофакторної автентифікації, прив'язаного до цієї машини. Розглянемо весь процес налаштування на системі Ubuntu Server 16.04.

Вступ

Перш ніж почати, потрібно врахувати один факт – після налаштування двофакторної автентифікації ви не зможете отримати доступ до вашого комп'ютера без згенерованих третьою стороною кодів. Щоразу, коли ви захочете увійти в систему, вам знадобиться ваш смартфон або екстрені коди (emergency codes), які можна налаштувати в процесі.

Нам знадобиться сервер або робочий стіл Linux. Переконайтеся, що система є в актуальному стані, а ваші дані скопійовані на випадок непередбачених обставин. Для створення двофакторних кодів будемо використовувати сторонній додатокнаприклад, Authy або Google Authenticator. Умовно користуватимемося Google Authenticator, яке потрібно попередньо встановити.

Встановлення

Залогіньтесь в системі та виконайте такі кроки:

  1. Відкрийте вікно терміналу.
  2. Виконайте команду: sudo apt install libpam-google-authenticator.
  3. Введіть пароль sudo та натисніть Enter.
  4. Якщо з'явиться запит на підтвердження, введіть "y" і натисніть клавішу Enter.
  5. Дочекайтесь кінця установки.

Тепер настав час налаштувати комп'ютер на двофакторну автентифікацію.

Конфігурація

Поверніться у вікно терміналу та введіть команду: sudo nano /etc/pam.d/common-auth. Додайте наступний рядок до кінця файлу:

Збережіть та закрийте цей файл.

Тепер ми повинні настроїти Google Authenticator для кожного користувача, хто повинен мати доступ до системи. Для цього потрібно повернутися у вікно терміналу та від імені користувача, якому планується надати доступ, запустити команду google-authenticator. Тут доведеться відповісти на кілька запитань.

Перше запитання: «Чи хочете, щоб токени аутентифікації були засновані на часі (y/n)» (Do you want authentication tokens to be time-based (y/n)). Дайте відповідь «y», вам буде наданий QR-код. Відкрийте на своєму смартфоні двофакторний додаток, додайте обліковий записта відскануйте цей QR-код.

Малюнок 1. Отриманий QR-код

Після того, як ви додасте код, залишиться відповісти ще на кілька запитань:

  • Ви хочете, щоб update your "/home/jlwallen/.google_authenticator" file (y/n) - Чи хочете ви оновити файл/home/jlwallen/.google_authenticator;
  • Do you want to disallow multiple uses of the same authentication token (y/n)? - Чи хотіли б ви відключити можливість багаторазового використання одного токена? Це налаштування дозволяє виконувати лише один вхід у систему кожні 30 секунд. Якщо ця опція активована, ваші шанси помітити або навіть запобігти атакі виду «» (man-in-the-middle) зростають.
  • Оскільки значення за замовчуванням становить 30 секунд, а час сервера та клієнта може незначно відрізнятися, є можливість використовувати якийсь додатковий токен. Отже, якщо у вас виникають проблеми із синхронізацією, ви можете збільшити час вікна приблизно до 4 хвилин. Чи хотіли б ви це зробити? - Do you want to do so (y/n).
  • Якщо ви сумніваєтеся у захисті комп'ютера від атак типу брутфорс (brute-force), ви можете активувати обмеження швидкості для модуля аутентифікації. За замовчуванням це не більше трьох спроб входу в систему кожні 30 секунд. Чи хочете ви включити обмеження швидкості? - Do you want to enable rate-limiting (y/n)

Відповімо на кожне запитання ствердно, ввівши «y» і натиснувши Enter.

Налаштування SSH

Наступним кроком буде налаштування SSH для роботи з двофакторною автентифікацією. Якщо цей крок пропустити, ви не можете увійти через SSH.

Спочатку потрібно увімкнути модуль PAM. Для цього набираємо команду: sudo nano /etc/pam.d/sshd. Відкривши файл, додаємо наступний рядок до кінця файлу:

auth required pam_google_authenticator.so nullok

Зберігаємо цей файл, а потім виконуємо команду: sudo nano /etc/ssh/sshd_config. У цьому файлі знаходимо:

ChallengeResponseAuthentication no

І міняємо на:

ChallengeResponseAuthentication yes

Зберігаємо цей файл і перезапускаємо sshd - sudo systemctl restart sshd.

Вхід в систему

Перш ніж здійснити вихід із системи, рекомендуємо вам відкрити нове вікно терміналу і спробувати виконати вхід через SSH. Якщо це зробити не вдалося, повторіть описані вище кроки, переконавшись, що ви нічого не пропустили. Після того, як вам вдасться успішно залогінитися через SSH, ви можете завершити сеанс та знову увійти до системи.

Висновки

Нещодавно ми змінювали пароль користувача в Linux, коли зіткнулися з помилкою: Authentication Token Manipulation Error'.

Ми використовували звичайну команду passwd, щоб змінити пароль, і він видав нам цю помилку, і пароль не було змінено.

Sudo passwd my_user_name Зміна password для user my_user_name Зміна password для tecmint (current) UNIX password: passwd: Authentication token manipulation error passwd: password unchanged

Виправлення помилки маніпуляції токеном аутентифікації в Ubuntu

"Authentication Token Manipulation Error'" означає, що з деяких причин зміна пароля не вдалася.

І тому може бути кілька причин. У найпростіших випадках ви побачите корінну причину проблеми у самому висновку. Наприклад, якщо ви не вказали пароль, ви повинні побачити його в помилці:

No password supplied passwd: Authentication token manipulation error passwd: password unchanged

Так само, якщо повторне введення пароля не збігається, він також покаже цю інформацію:

Sorry, passwords do not match passwd: Authentication token manipulation error passwd: password unchanged

Це легко, тому що ви знаєте, що викликало проблему, і можете вжити коригуючих дій на підставі цього. Але вам, можливо, не завжди щастить, тому що в деяких випадках ви не побачите жодного корисної інформації, лише помилку.

Давайте подивимося деякі з цих випадків і виправимо цю проблему.

Спосіб 1

Якщо ви знайомі зі структурою каталогів Linux , ви знаєте, що каталог/etc/shadow зберігає пароль у зашифрованому форматі разом з іншою інформацією про користувачів та їх паролі.

Ось чому ви повинні переконатися, що у вас є дозвіл на читання та запис у цей файл. Оскільки ви будете змінювати пароль як суперкористувач, цей файл повинен мати права на читання і запис для root.

Якщо це не так, ви повинні встановити правильний дозвіл:

Sudo chmod 640 /etc/shadow

Спосіб 2

Метод 1 працюватиме здебільшого. Але в нашому випадку нам довелося перемонтувати кореневий розділ із правами на читання та запис. Ми намагалися скинути пароль адміністратора в Ubuntu.

Mount -rw -o remount /

В окремих випадках ваш диск може бути настільки заповнений, що ви не зможете внести будь-які зміни до файлу /etc/shadow. Але якщо це так, то ви зіткнетеся і з багатьма іншими проблемами.

Це спрацювало для вас?

Ми поділилися тим, що спрацювало для нас, і ми можемо сподіватися, що це спрацювало і для вас. Чи зробили це? Який спосіб працював для вас? Згадуйте це у коментарях.

З 2020 року використання шифрування за ГОСТ Р 34.10-2001 опиниться під забороною, а отже, усі організації, які взаємодіють із держструктурами, змушені терміново впроваджувати наступний стандарт – 2012 року. Якщо ти працюєш в одній із них, то не проходь мимо: у цій статті ми поговоримо про те, як вирішити проблему, використовуючи сервер на CentOS 7 та пакет CryptoPro JCP.

Якщо ж ти вперше чуєш про все це, то невелика історична довідка.

У 1994 році у ФСБ розробили низку стандартів та заходів, покликаних захистити обмін документами між організаціями та іншими учасниками цього процесу. Однією з таких заходів безпеки став електронний цифровий підпис документів, а одним із стандартів - ГОСТ Р 34.10-94, де описано алгоритм формування та перевірки електронної цифровий підпис. Прийнятий і введений у дію ухвалою Держстандарту Росії від 23 травня 1994 року за номером 154, він пропрацював до 2001 року.

На зміну прийшов усім відомий ГОСТ Р 34.10-2001 – покращений стандарт, розроблений для забезпечення більшої стійкості алгоритму. Але час не стоїть на місці, змінюються алгоритми та методи криптозахисту, і через одинадцять років ГОСТ Р 34.10-2001 змінюють на ГОСТ Р 34.10-2012.

У новому стандарті перший варіант вимог до параметрів залишився тим самим. Довжина секретного ключа становить близько 256 біт, та передбачено використання хеш-функції з довжиною хеш-коду 256 або 512 біт. Головна ж відмінність нового стандарту - варіанти з додатковими параметрамита схемами, у тому числі хешуванням за стандартом ГОСТ Р 34.11-2012 «Стрибог».

INFO

Стрибог - бог древніх слов'ян, який захищає вітри, погоду і все, що пов'язане з повітряним простором. Можливо, і хмарним технологіямтеж. Докладніше про цей шифр читай у статтях «» та «».

У лютому 2014 року ФСБ оголосила про початок переходу на використання нового національного стандарту ГОСТ Р 34.10-2012 у коштах електронного підписудля інформації, що не містить відомостей, що становлять державну таємницю. У світ вийшов документ за номером 149/7/1/3-58 від 31 січня 2014 року «Про порядок переходу до використання нових стандартів ЕЦП та функції хешування», він встановлював такі вимоги.

  1. Після 31 грудня 2013 року припинити сертифікацію коштів електронного підпису на відповідність вимогам до засобів електронного підпису, затвердженим наказом ФСБ Росії від 27.12.2011 року №796, якщо у цих засобах не передбачається реалізація функцій відповідно до ГОСТу Р 34.10-201.
  2. Після 31 грудня 2018 року заборонити використання ГОСТ Р 34.10-2001 на формування електронного підпису.

Міністерство зв'язку навіть створило план переходу на стандарт (PDF). Однак на практиці виявилось, що все не так просто, і перехід довелося відкласти до 31 грудня 2019 року. Причини такі.

  1. Багато державних та муніципальних органів не готові перейти на використання нового стандарту електронного підпису ГОСТ-2012 через відсутність підтримки на рівні ПЗ.
  2. Щоб випускати сертифікати нового зразка, потрібне обладнання, яке підтримує новий ГОСТ, та сертифікат Головного центру, що засвідчує, сформований з використанням ГОСТ-2012. Посвідчувальні центри отримали його лише влітку 2018 року. Потрібен додатковий час, щоб випустити сертифікати для всіх користувачів.

Зараз у ході два стандарти криптозахисту для роботи ЕЦПАле тим, хто використовує ГОСТ-2001, терміново потрібно щось робити. Зима, як кажуть, близько, а це означає, що на нас чекає низка випробувань при впровадженні підтримки ГОСТ-2012.

Я розповім, як розгорнути сертифікований ФСБ засіб СКЗІ (CryptoPro JCP) на сервері Linux під керуванням Java JDK. До речі, якщо ти досі використовуєш ГОСТ-2001, на сайті CryptoPro є чудова, раджу тобі її прочитати, зайвим не буде.

Весь документообіг між учасниками обміну відбувається за принципом СМЕВ (система міжвідомчої електронної взаємодії). Додаток може бути учасником такої системи, але може і не бути ним зовсім принцип обміну документами від цього не змінюється. Для простоти розуміння намалював невелику схему.


Ціни

Як завжди, постає питання ліцензування програмного рішення. CryptoPro JCP недешевий, і якщо одна робоча станція обійдеться в 1200 рублів, то серверні ліцензії коштують значно дорожче – близько 30 000 за кожне ядро ​​(або два ядра). процесора Intelз вимкненим Hyper Threading).

Встановлення та налаштування криптопровайдера

У прикладах я використовуватиму віртуальну машинуз CentOS 7, але ти не обмежений у виборі апаратного забезпеченняі дистрибутива Linux. Усі дії та команди будуть такими самими.

Насамперед створимо локального користувача, під яким працюватиме ПЗ, що використовує підпис документів.

$ sudo useradd -d /opt/user -p<Тут указываем пароль>-s /bin/bash user; sudo grep user /etc/passwd

Правильно встановимо Java JDK. Викачуємо необхідний дистрибутив.

$wget --header "Cookie: oraclelicense=a" .gz -O jdk-8u191-linux-x64.tar.gz

Розпаковуємо архів та перевіряємо, чи готова папка з Java для копіювання.

$ tar zxvf jdk-8u191-linux-x64.tar.gz; ls -al;

Копіюємо папку розділ для прикладного ПЗ. Я зазвичай використовую /opt.

$ sudo cp -rf jdk1.8.0_191 /opt/

Перевіряємо, що скопіювалося правильно. Якщо потрібно, міняємо власника папки на root.

$ ls -al /opt/jdk1.8.0_191/ $ sudo chown -R root:root /opt/jdk1.8.0_191/; cd /opt/jdk1.8.0_191/; ls -al;

Прописуємо змінні оточення Java JDK для всіх користувачів за промовчанням.

$ sudo vi /etc/profile.d/oracle.sh

У файл пишемо наступне:

Export JAVA_HOME=/opt/jdk1.8.0_191 export JRE_HOME=/opt/jdk1.8.0_191/jre export PATH=$PATH:/opt/jdk1.8.0_191/bin:/opt/jdk1.8.0_191/jre/

Якщо на сервері стоїть кілька версій Java JDK, необхідно зареєструвати альтернативи для нової версії.

$ sudo alternatives --install /usr/bin/java java /opt/jdk1.8.0_191/bin/java 2 $ sudo alternatives --install /usr/bin/jar jar /opt/jdk1.8.0_191/bin/jar 2 $ sudo alternatives --install /usr/bin/javac javac /opt/jdk1.8.0_191/bin/javac 2 $ sudo alternatives --set jar /opt/jdk1.8.0_181/bin/jar $ sudo alternatives --set jar /opt/jdk1.8.0_191/bin/jar $ sudo alternatives --set javac /opt/jdk1.8.0_191/bin/javac $ sudo alternatives --config java

У меню вибираємо опцію 2 (або ту, що призведе до використання новішої версії Java). Не забуваємо виправити права на JRE systemPrefs.

$ sudo chmod 777 -R /opt/jdk1.8.0_191/jre/.systemPrefs

Перевіряємо встановлену версію Java.

$java -version
java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)

Копіюємо папку з дистрибутивом CryptoPro JCP у розділ для прикладного програмного забезпечення.

$ sudo cp -rf jcp-2.0.40035 /opt/

Перевіряємо, що все скопіювалось коректно.

$ ls -al /opt/jcp-2.0.40035/

Видаємо права на запуск скриптів.

$ sudo chmod +x /opt/jcp-2.0.40035/*.sh

Перевіряємо власника та права на папку, має бути root. Переходимо до неї.

$ls -al /opt/jcp-2.0.40035/; cd /opt/jcp-2.0.40035/;

Щоб уникнути проблем при інсталяції, перевір кількість ядер на процесорі і звірься з ліцензією. Дізнатися число ядер можна командою nproc.

Переходимо до встановлення криптопровайдера JCP. Під час встановлення необхідно буде відповісти на низку запитань.

Продовження доступне лише учасникам

Варіант 1. Приєднайтесь до спільноти «сайт», щоб читати всі матеріали на сайті

Членство у спільноті протягом зазначеного терміну відкриє тобі доступ до ВСІХ матеріалів «Хакера», збільшить особисту накопичувальну знижку та дозволить накопичувати професійний рейтинг Xakep Score!