그룹에 대한 PAM 모듈 비활성화 google-authenticator를 사용하여 이중 인증을 사용하도록 설정했습니다.

최근에 SSH 서버에서 google-authenticator를 사용하여 이중 인증을 사용하도록 설정했습니다. 그러나 나는 지금 문제에 직면하고있다 :

SFTP에 사용중인 서버에 다른 사용자 그룹이 있지만 그룹의 사용자에 대해 2FA가 설정되지 않아 해당 그룹에 더 이상 로그인 할 수 없습니다. 해당 그룹에 대한 Google 인증 모듈을 비활성화 할 수 있습니까? 여러 사용자가이 계정을 사용하므로 그룹의 사용자에 대해 사용하도록 설정하는 것은 옵션이 아닙니다.

추신 : 사용합니다 openssh-server



답변

그룹에서이 부분을 건너 뛰기 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 ...


답변

일부 SFTP 클라이언트는 2FA를 처리 할 수 ​​있습니다. 예를 들어 FileZilla 및 WinSCP와 함께 2FA를 사용하고 있습니다. 또한 ssh 키 인증을 설정했으며 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.a) 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
    

그게 다야.


답변

다음은 sudoadmin 그룹에 속한 사용자를
제외한 모든 사용자에게 Google 2FA를 필수로 설정 합니다
(sudo 또는 admin 그룹의 사용자가 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)

Google OTP의 README.md 설명서 에 따르면 :

널록

PAM은 모듈에서 하나 이상의 성공 응답을 요구하며 nullok는이 모듈이 IGNORE라고 말합니다. 즉,이 옵션을 사용하는 경우 하나 이상의 다른 모듈에 성공 했어야합니다. 이를 수행하는 한 가지 방법은 PAM 구성의 끝에 인증 필수 pam_permit.so를 추가하는 것입니다.

이것은 nullok여기서 안전하게 사용 합니다.


답변