많은 자습서에서 다음과 같이 ssh 서버를 구성하도록 지시합니다.
ChallengeResponseAuthentication no
PasswordAuthentication no
UsePAM no
그러나이 설정을 사용하면 PAM을 사용할 수 없습니다 .Google OTP와 함께 2 단계 인증을 사용하려면 PAM이 필요합니다.
일반 암호로 로그인을 방지하고 여전히 PAM을 사용할 수 있도록하려면 새로운 데비안 jessie ssh deamon을 구성하는 방법.
어쩌면 정확한 질문은 암호를 허용하지 않도록 pam을 구성하는 방법입니까?
PAM 인증에 대한 세부 사항
PAM 기반 암호 인증을 비활성화하는 것은 직관적이지 않습니다. FreeBSD와 함께 거의 모든 GNU / Linux 배포판 (Slackware를 제외하고)에 필요합니다. 주의하지 않으면 PasswordAuthentication을 ‘no’로 설정하고 PAM 인증을 통해 비밀번호만으로 로그인 할 수 있습니다. PAM 인증을 실제로 비활성화하려면 ‘ChallengeResponseAuthentication’을 ‘no’로 설정해야합니다. FreeBSD 매뉴얼 페이지에 이런 상황이 있습니다. 상황을 좀 더 명확히하는 데 도움이 될 것입니다.
ChallengeResponseAuthentication이 ‘yes’이고 sshd에 대한 PAM 인증 정책에 pam_unix (8)가 포함 된 경우 PasswordAuthentication의 값에 관계없이 Challenge-Response 메커니즘을 통해 비밀번호 인증이 허용됩니다.
http://www.unixlore.net/articles/five-minutes-to-more-secure-ssh.html
답변
어쩌면 정확한 질문은 암호를 허용하지 않도록 pam을 구성하는 방법입니까?
옳은. 설정 UsePAM no
이 일반적으로 나쁜 조언 이라는 사실을 이미 우연히 발견했습니다 . PAM 기반 인증의 모든 형태를 방지 할뿐만 아니라 비활성화 account
및 session
모듈 도 가능합니다 . 액세스 제어 및 세션 구성이 좋습니다.
먼저 요구 사항 목록을 작성해 보겠습니다.
- 를 통한 OTP
pam_google_authenticator.so
. 이 필요UsePAM yes
하고ChallengeResponseAuthentication yes
. 결국 그들에게 자격 증명을 요구하고 있습니다! - PAM을 통한 다른 형태의 비밀번호 인증은 없습니다. 이는 로그인을
auth
통해 암호를 전송할 수있는 모든 모듈을 비활성화하는 것을 의미keyboard-interactive
합니다. (OTP를 사용하도록 설정해야합니다) - 키 기반 인증.
publickey
인증이 필요하며gssapi-with-mic
Kerberos를 구성한 경우 일 수 있습니다.
일반적으로 키를 사용한 인증은 PAM 기반 인증을 완전히 건너 뜁니다. 이로 인해 이전 버전의 openssh를 사용하여 트랙에서 우리를 막을 수 있었지만 Debian 8 (jessie)은 AuthenticationMethods
지시문을 지원합니다 . 이를 통해 여러 가지 인증 방법이 필요하지만 SSHv2를 구현하는 클라이언트에서만 작동합니다.
sshd 구성
아래는 내가 제안하는 라인입니다 /etc/ssh/sshd_config
. sshd
무언가를 깰 경우를 대비 하여이 시스템에 액세스 할 수있는 방법이 있는지 확인하십시오 !
# Require local root only
PermitRootLogin no
# Needed for OTP logins
ChallengeResponseAuthentication yes
UsePAM yes
# Not needed for OTP logins
PasswordAuthentication no
# Change to to "yes" if you need Kerberos. If you're unsure, this is a very safe "no".
GSSAPIAuthentication no
# Require an OTP be provided with key based logins
AuthenticationMethods publickey,keyboard-interactive
# Use this instead for Kerberos+pubkey, both with OTP
#
#AuthenticationMethods gssapi-with-mic,keyboard-interactive publickey,keyboard-interactive
sshd
이러한 변경이 완료되면 다시로드하는 것을 잊지 마십시오 .
PAM 구성
여전히 PAM을 구성해야합니다. 질문에 따라 데비안 8을 새로 설치한다고 가정합니다.
- 코멘트
@include common-auth
에서/etc/pam.d/sshd
. - 로
/etc/pam.d/sshd
시작하는 줄이 없는지 검토 하고 확인하십시오auth
. 새로 설치 한 경우에는 안되지만 안전한 것이 가장 좋습니다. - 에 대한
auth
항목을 추가하십시오pam_google_authenticator.so
.
로컬 비밀번호는 여전히 작동합니다.
로컬 콘솔을 통한 로그인에 영향을 줄 변경 사항을 변경하지 않았거나 사용자가 비밀번호를 사용하여 권한을 업그레이드하는 것을 막지 sudo.
않았습니다. 더 이상 진행하기로 결정한 경우, root는 항상 비밀번호를 통해 로컬로 로그인 할 수 있어야합니다. 그렇지 않으면 우발적으로 시스템에서 빠져 나올 위험이 있습니다.
답변
비밀번호 요청을 금지
이 줄을 주석으로 처리하십시오
#auth substack password-auth
/etc/pam.d/sshd에서
OTP를 사용하지 않고 ssh를 통해 인증하는 것이 좋지 않으면이 줄 끝에 nullok가 없어야합니다.
auth required pam_google_authenticator.so