Вимкнути модуль PAM для групи


10

Нещодавно я включив двофакторну автентифікацію за допомогою google-автентифікатора на своєму SSH сервері. Однак зараз я стикаюся з проблемою:

У мене на сервері інша група користувачів, яку я використовую для SFTP, але ця група більше не може входити в систему, оскільки 2FA не налаштована для користувачів групи. Чи можна відключити модуль google-автентифікатор для цієї групи? Увімкнення його для користувачів у групі не є можливим, оскільки цей обліковий запис буде використовувати декілька користувачів.

PS: Я використовую openssh-server


Відповіли в цьому коментарі - Сподіваюся, що це допомагає askubuntu.com/a/1051973/846342
— Абхіманью Гарг

Відповіді:


13

Ви можете використовувати pam_succeed_ifмодуль (див. Сторінку керівництва) перед тим, pam_google_authenticatorщоб пропустити цю частину для вашої групи:

# the other authentication methods, such as @include common-auth
auth [success=1 default=ignore] pam_succeed_if.so user ingroup group
auth required pam_google_authenticator ...

2
Напевно, це повинно бути [success=1 default=ignore]замість required. Зараз, користувач, який не знаходиться в групі, призведе до відмови автентифікації, я думаю. success=1змусить пропустити наступний метод, default=ignoreозначатиме, що користувачі, які не в групі, просто перейдуть до наступного методу.
— муру

@muru так, ти, очевидно, маєш рацію. Ще вивчаю подробиці та всю магію стека PAM :)
— Jakuje

Це залежить від того, чи є у вас кілька "AuthenticationMethods" в / etc / ssh / sshd_config? Додано вищезазначений рядок, я все ще отримую "Дозвіл відхилено (інтерактивна клавіатура)"
— Arj

@Arj це означає, що у вас інша конфігурація, тому ця конкретна відповідь не стосується вас.
— Jakuje

1

Деякі клієнти SFTP можуть працювати з 2FA. Наприклад, я використовую 2FA з FileZilla та WinSCP, і вони працюють. Також у мене встановлення ssh-key аутентифікації, і воно працює поряд з 2FA.

Однак ваше питання цікаве, і я зробив коротке опитування. Я знайшов цю відповідь .

Отже, можна (і легко) запускати окремі екземпляри ssh. Я це вже перевірив.

  1. Зробіть окремі копії sshd_configфайлу.

    $ sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config_pwd
    $ sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config_2fa
    
  2. Відредагуйте ці нові configфайли. Однією з речей, які ви повинні змінити, є порт shh. Відповідно до прикладу:

    2.а) sshd_config_pwdконкретними лініями є:

    Port 1022
    ...
    PasswordAuthentication yes
    ChallengeResponseAuthentication no
    UsePAM no
    

    2.b) sshd_config_2faконкретними лініями є:

    Port 2022
    ...
    PasswordAuthentication no
    ChallengeResponseAuthentication yes
    UsePAM yes
    
  3. Відкрийте необхідні порти в брандмауері. Відповідно до прикладу:

    $ sudo ufw limit 1022
    $ sudo ufw limit 2022
    
  4. Запустіть нові екземпляри ssh:

    $ sudo /usr/sbin/sshd -f /etc/ssh/sshd_config_pwd
    $ sudo /usr/sbin/sshd -f /etc/ssh/sshd_config_2fa
    

Це воно.


Як це відповідає на питання? Що ви модифікуєте в, sshd_configщоб використовувати різні стеки PAM, а не використовувати 2FA?
— Jakuje

@Jakuje Я оновив свою відповідь.
— pa4080

Гаразд, тому справа в тому, що "не використовувати PAM". У деяких випадках це може працювати, але PAM стосується не лише аутентифікації, але й налаштування сеансу та багато іншого, тому він може припиняти роботу з дня на день. Також зміна порту дуже заплутує, особливо якщо ви хочете, щоб сторона підключилася до вашого сервера. Хоча так, можливе рішення.
— Jakuje

Так, це просто можливе рішення, яке все ще є неповним, оскільки я не знаю елегантного способу запустити ці окремі екземпляри ssh при запуску системи.
— pa4080

0

Нижче буде зробити Google 2fa обов'язковим для всіх користувачів ,
крім користувачів , які належать до SUDO і адміністратору групі
(тобто , якщо користувач з групи Суду або Адміністратора не 2fa налаштований, він буде аутентифицировать його / її на основі їх відкритого ключа):

Файл: /etc/pam.d/sshd

auth required pam_google_authenticator.so nullok
auth optional pam_succeed_if.so user ingroup sudo
auth optional pam_succeed_if.so user ingroup admin

Файл: /etc/ssh/sshd_config

AuthenticationMethods publickey,keyboard-interactive
UsePAM yes
ChallengeResponseAuthentication yes

Результати:

          |  Belongs to sudo or  |  Has 2FA Already Setup      |  Authentication Result
          |  admin group         |  in ~/.google_authenticator | 
----------+----------------------+-----------------------------+------------------------
User A    |          NO          |       NO                    | DENIED LOGIN UNTIL 2FA IS SETUP
User B    |          YES         |       NO                    | CAN LOGIN (PRIVATE/PUBLIC KEY USED)

User C    |          NO          |       YES                   | CAN LOGIN (PRIVATE/PUBLIC KEY AND 2FA USED)

User D    |          YES         |       YES                   | CAN LOGIN (PRIVATE/PUBLIC KEY AND 2FA USED)

Відповідно до документації README.md Google Authenticator :

нулок

PAM вимагає принаймні одного відповіді про успіх від модуля, і nullok викликає цей модуль сказати IGNORE. Це означає, що якщо використовується ця опція, принаймні один інший модуль повинен мати відповідь SUCCESS. Один із способів зробити це - додати потрібний auth pam_permit.so до кінця конфігурації PAM.

Це робить використання nullokтут безпечним.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.