Unix PAM 하위 시스템의 SSH 서버에서 모든 사용자에게 2FA를 시행하는 방법이 있습니까?

Unix PAM 하위 시스템의 SSH 서버에서 모든 사용자에게 2FA를 시행하는 방법이 있습니까?

Unix PAM 하위 시스템의 SSH 서버에 있는 모든 사용자에 대해 2단계 인증(2FA)을 시행하는 방법이 있습니까?

답변1

저는 귀하와 같이 이름이 지정되지 않은 UNIX 시스템에 액세스할 수 없으므로 여기에서 설명하는 솔루션을 귀하의 상황에 맞게 조정해야 합니다. (특정 정보를 추가하려면 이 답변을 자유롭게 편집하세요.)

이것PAM 하위 시스템인증 프로세스에 다른 모듈을 포함할 수 있습니다. 조항 중 하나구글 OTP (Microsoft 제품과 같은 호환 제품도 마찬가지입니다.)

sudo시작하기 전에 루트 세션이 설정되어 있는지 확인하고 계속 로그인할 수 있는지(그리고 다른 연결을 사용할 수 있는지 확인하기 전에는 닫지 마십시오 su).

다음은 Debian 12("Bookworm")의 설치 및 구성 프로세스입니다. 이 과정을 root전체적으로 따라야 하므로 쉘을 sudo -s구하는 것부터 시작하세요.root

sudo -s

apt update
apt install libpam-google-authenticator

cp -p /etc/pam.d/common-auth{,.$(date +'%Y-%m-%d')}
echo 'auth required pam_google_authenticator.so nullok echo_verification_code' >>/etc/pam.d/common-auth

이제 편집 /etc/ssh/sshd_config(아니요 ssh_config) 이 줄을 추가하거나 편집합니다. 추가하려면 바로 아래에 배치하세요 UsePAM yes.

cp -p /etc/ssh/sshd_config{,.$(date +'%Y-%m-%d')}
vi /etc/ssh/sshd_config    # or nano, or any preferred editor

ChallengeResponseAuthentication yes
KbdInteractiveAuthentication yes

그리고 다시 시작sshd

systemctl restart sshd

이제 일반 사용자로 로그인하고 인증자를 설정하십시오.

google-authenticator

   Do you want authentication tokens to be time-based (y/n) y
   Warning: pasting the following URL into your browser exposes the OTP secret to Google:
     https://www.google.com/chart?...secret...stuff...

텍스트 터미널에 또는 생성된 웹 링크를 클릭하면 QR 코드가 표시됩니다. 평소처럼 인증자 앱에서 캡처하세요.

   Your new secret key is: 4JD3xxxxxxxxxxxxxxxxxxH7EE
   Enter code from app (-1 to skip): xxxxxx
   Code confirmed
   Your emergency scratch codes are:

   Do you want me to update your "/home/{user}/.google_authenticator" file? (y/n) y
   Do you want to disallow multiple uses of the same authentication token? (y/n) y
   By default […] This will permit for a time skew of up to 4 minutes
   between client and server. Do you want to do so? (y/n) n
   Do you want to enable rate-limiting? (y/n) y

지금 테스트해보세요. 그것이 효과가 있다면 좋을 것입니다. 그렇지 않은 경우 복구 /etc/pam.d/common-auth하고 /etc/ssh/sshd_config다시 시도하십시오.

PAM 구성 항목에 이 옵션을 포함 시켰기 때문에 nullok사용자는 인증 설정을 피하도록 선택할 수 있습니다. 제거하면 필수값이 됩니다. 이 옵션을 제거하면 을 포함한 모든 사용자 계정에 영향을 미치므로 주의하십시오 root. 다른 옵션에 대한 설명서를 읽어보세요( man pam_google_authenticator및 참조 man google-authenticator).

관련 정보