에서 /etc/ssh/sshd_config
PAM은 Debian 10에서 기본적으로 활성화됩니다.
UsePAM yes
비밀번호나 Kerberos 로그인을 허용하지 않고 SSH 키 인증만 허용하는 상황에서 PAM
sshd에서 이를 활성화하면 어떤 이점이 있습니까 ? 아니면 UsePAM
"아니요"로 설정하면 프로세스가 단순화되고 잠재적으로 더 안전해 집니까?
SSHD에서 PAM을 비활성화하면 실제적인 영향은 무엇입니까? 차이점을 알 수 있을까요?
답변1
매뉴얼 페이지(및 다른 답변)가 주장하는 것과는 반대로 UsePAM yes
,허용하다루트가 아닌 사용자로 sshd를 실행하지만 루트가 아닌 사용자로 sshd를 실행하여 실행할 수도 있습니다.비밀번호 인증(동일한 사용자가 실행하는 경우) setuid /sbin/unix_chkpwd
프로그램을 통해.
후자는 전혀 예상치 못한 일이다.
user$ /usr/sbin/sshd -f /dev/null -p 9009 -h ~/.ssh/id_rsa
user$ /usr/sbin/sshd -f /dev/null -o UsePAM=yes -p 7007 -h ~/.ssh/id_rsa
user$ ssh -p 7007 localhost
The authenticity of host '[localhost]:7007 ([::1]:7007)' can't be established.
...
Password: <correct password>
Linux deb11 5.10.0-8-amd64 #1 SMP Debian 5.10.46-4 (2021-08-03) x86_64
...
user$ <I'm logged in!>
user$ ^D
Connection to localhost closed.
user$ ssh -p 9009 localhost
The authenticity of host '[localhost]:9009 ([::1]:9009)' can't be established.
...
user@localhost's password:
Permission denied, please try again.
user@localhost's password:
Permission denied, please try again.
user@localhost's password:
user@localhost: Permission denied (publickey,password,keyboard-interactive).
user$
답변2
이것맨페이지해석은 UsePAM
인증뿐만 아니라 세션 처리도 제공합니다. 많이있다PAM 모듈자동 키링 잠금 해제, 파일 시스템 마운트, 개인 데이터 암호 해독, 선택적으로 로그인 허용 등 다양한 기능을 제공합니다.
예전에는 UsePAM
"yes"로 설정하면 sshd에 루트 권한이 필요했습니다. 사용 사례에 따라 루트가 아닌 사용자로 실행하면 보안이나 구성에 도움이 될 수 있습니다.
어떤 상황에서는 이것이 유용할 것이라고 상상할 수 있습니다. 예를 들어 git은 ssh를 전송 프로토콜로 사용합니다. Git 서버를 설정하고 싶을 수도 있지만 PAM을 통해 Git 사용자를 관리하고 싶지는 않습니다.
답변3
이를 위해 OpenSSH의 소스를 조사했습니다.
auth-pam.c
378-382행에서 찾은 의견에 따르면 UsePAM을 사용하면 간접적으로든 직접적으로든 환경이 유출될 수 있는 것 같습니다(여기 링크):
/*
* XXX this possibly leaks env because it is not documented
* what pam_putenv() does with it. Does it copy it? Does it
* take ownweship? We don't know, so it's safest just to leak.
*/
또한 동일한 소스 코드에서 다음과 같은 흥미로운 내용을 발견했습니다.
/*
* Some silly PAM modules (e.g. pam_time) require a TTY to operate.
* sshd doesn't set the tty until too late in the auth process and
* may not even set one (for tty-less connections)
*/
또한 1351번 라인에서 PAM을 통해 비밀번호 인증이 시도되고 이 코드에는 백타이밍 공격 완화가 사용되는 것으로 보입니다.
if 절에 정의되어 있으므로 이 auth-pam.c
코드는 실행되지 않으므로 보안 설정이 허용하는 경우 no로 설정하겠습니다.
그래서 나는 그것을 "아니오"로 설정하고 그것 때문에 잠을 못 이루는 것을 멈추는 것이 낫다고 생각합니다.
다른 의견
이런 견해도 있습니다.https://askubuntu.com/questions/1259848/
설정이 제대로 설정되지 않으면 SSH 공개 키 인증이 실패할 수 있습니다. https://serverfault.com/questions/475880
또한 이 섹션 끝에 있는 결론도 읽어 보시기 바랍니다 Configuring accounts
.