그룹에 대한 PAM 모듈 비활성화


10

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

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

추신 : 사용합니다 openssh-server


답변:


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

@muru 네, 분명히 옳습니다. 아직도 PAM 스택의 세부 사항과 모든 마법을 배우고 있습니다 :)
— Jakuje

/ etc / ssh / sshd_config에 여러 "AuthenticationMethods"가 있는지 여부에 따라 달라 집니까? 위의 줄을 추가해도 여전히 '권한이 거부되었습니다 (키보드 대화 형)'
— Arj

@Arj는 구성이 다르므로이 특정 답변이 적용되지 않는다는 의미입니다.
— Jakuje

1

일부 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
    

그게 다야.


이것이 어떻게 질문에 대답합니까? sshd_config다른 PAM 스택을 사용하고 2FA를 사용하지 않기 위해 수정 한 내용은 무엇입니까 ?
— Jakuje

@Jakuje 내 답변을 업데이트했습니다.
— pa4080

자, 요점은 "PAM을 사용하지 않는 것"입니다. 경우에 따라 작동 할 수 있지만 PAM은 인증뿐만 아니라 세션 설정 등을 포함하므로 매일 작동하지 않을 수 있습니다. 포트를 변경하는 것은 특히 혼란 스럽습니다. 특히 타사가 서버에 연결하려는 경우 특히 그렇습니다. 가능하지만 가능한 해결책입니다.
— Jakuje

예, 시스템 시작시 이러한 별도의 ssh 인스턴스를 시작하는 우아한 방법을 모르기 때문에 가능한 해결책 일뿐입니다.
— pa4080

0

다음은 sudo 및 admin 그룹에 속한 사용자를
제외한 모든 사용자에게 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여기서 안전하게 사용 합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.