Вимкнути модуль 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.