그룹에 대한 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

다음은 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여기서 안전하게 사용 합니다.

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