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
).