PAM과 함께 ssh 서버를 사용하지만 암호 인증은 허용하지 않는 방법은 무엇입니까?


13

많은 자습서에서 다음과 같이 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

답변:


23

어쩌면 정확한 질문은 암호를 허용하지 않도록 pam을 구성하는 방법입니까?

옳은. 설정 UsePAM no이 일반적으로 나쁜 조언 이라는 사실을 이미 우연히 발견했습니다 . PAM 기반 인증의 모든 형태를 방지 할뿐만 아니라 비활성화 accountsession모듈 도 가능합니다 . 액세스 제어 및 세션 구성이 좋습니다.

먼저 요구 사항 목록을 작성해 보겠습니다.

  • 를 통한 OTP pam_google_authenticator.so. 이 필요 UsePAM yes하고 ChallengeResponseAuthentication yes. 결국 그들에게 자격 증명을 요구하고 있습니다!
  • PAM을 통한 다른 형태의 비밀번호 인증은 없습니다. 이는 로그인을 auth통해 암호를 전송할 수있는 모든 모듈을 비활성화하는 것을 의미 keyboard-interactive합니다. (OTP를 사용하도록 설정해야합니다)
  • 키 기반 인증. publickey인증이 필요하며 gssapi-with-micKerberos를 구성한 경우 일 수 있습니다.

일반적으로 키를 사용한 인증은 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는 항상 비밀번호를 통해 로컬로 로그인 할 수 있어야합니다. 그렇지 않으면 우발적으로 시스템에서 빠져 나올 위험이 있습니다.


havn 아직 테스트하지 않았지만 논리적으로 보이며 5 upvotes로 받아 들일 수 있다고 생각합니다.
c33s

나는 스스로 테스트했다. 비밀번호를 완전히 비활성화하려면 ChallengeResponseAuthentication no도 설정해야합니다. blog.tankywoo.com/linux/2013/09/14/…
anonymous 익명의

@anonymous OP의 질문과 첫 번째 글 머리표를 참조하십시오. 비활성화 ChallengeResponseAuthentication하면 키보드 대화 형 인증 방법이 중단되어 OTP를 처리하는 PAM 인증 모듈에 필요합니다. 당신이 진정 경우 비활성화 CRA 수행에만 안전합니다 (OP가 원하는) 제로 에서 PAM 모듈을 auth스택 화재 필요가 있다고. 경우 PasswordAuthenticationGSSAPIAuthentication비활성화, 암호가 PAM은이 요청 인증 모듈을 활성화하지 않는 한 허용되지 않습니다.
앤드류 B

(즉, 그것은 여전히 ​​훌륭한 연결입니다)
Andrew B

1

비밀번호 요청을 금지

이 줄을 주석으로 처리하십시오

#auth       substack     password-auth

/etc/pam.d/sshd에서

OTP를 사용하지 않고 ssh를 통해 인증하는 것이 좋지 않으면이 줄 끝에 nullok가 없어야합니다.

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