최근에 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 인스턴스를 실행하는 것이 가능하고 쉽습니다. 나는 이미 그것을 테스트했다.
-
별도의
sshd_config
파일 사본을 만드십시오 .$ sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config_pwd $ sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config_2fa
-
이 새
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
-
방화벽으로 필요한 포트를 엽니 다. 예제에 따르면 :
$ sudo ufw limit 1022 $ sudo ufw limit 2022
-
새 ssh 인스턴스를 실행하십시오.
$ sudo /usr/sbin/sshd -f /etc/ssh/sshd_config_pwd $ sudo /usr/sbin/sshd -f /etc/ssh/sshd_config_2fa
그게 다야.
답변
다음은 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
여기서 안전하게 사용 합니다.