SLES 11 머신이 있습니다. 사용자는 SSH 및 pubkey를 통해 로그인합니다 (혼합, 일부 사용자는 비밀번호를 사용하고 일부는 ssh 키를 사용함)
sshd_config에는 다음이 있습니다.
UsePAM yes
PasswordAuthentication yes
PubkeyAuthentication yes
문제 : pubkey 로그인을 사용하는 사용자의 비밀번호가 만료되면 비밀번호를 변경하라는 메시지가 표시됩니다.
질문 : 유효한 SSH 키가 있고 비밀번호가 만료 된 경우 사용자가 로그인 할 수 있도록 PAM 또는 sshd 구성을 어떻게 설정할 수 있습니까? – “비밀번호 변경”팝업 이 나타나지 않습니다.
업데이트 # 1 : 해결책 : “UsePAM no”
SERVER:~ # cat /etc/pam.d/sshd
#%PAM-1.0
auth requisite pam_nologin.so
auth include common-auth
account requisite pam_nologin.so
account include common-account
password include common-password
session required pam_loginuid.so
session include common-session
SERVER:~ #
업데이트 # 2 : 해결책은 없습니다 : 사용자 암호가 만료되지 않도록 설정하십시오.
업데이트 # 3 :
SERVER:/etc/pam.d # cat common-account
#%PAM-1.0
...
account required pam_unix2.so
account required pam_tally.so
SERVER:/etc/pam.d #
답변
만료 된 비밀번호 프롬프트를 발생시키는 조작 순서는 다음과 같습니다.
- SSH는 PAM
account
단계를 실행하여 계정이 존재하고 유효한지 확인합니다.account
무대 사항은 암호가 만료 및 SSH의 노하우를 할 수 있습니다 것을. - SSH는 키 기반 인증을 수행합니다. 이를 위해 PAM이 필요하지 않으므로
auth
스테이지를 실행하지 않습니다 . 그런 다음 SSH 로그인 세션을 설정하고 PAMsession
스테이지를 실행합니다 . - 다음으로 SSH는 PAM이 암호가 만료되었다고 알리고 경고 메시지를 인쇄 한 다음 PAM에게 사용자에게 암호를 변경하도록 요청합니다. 그런 다음 SSH 연결이 끊어집니다.
이 모든 것이 SSH가 수행하는 것이며이 동작을 구성하는 SSH 옵션이 표시되지 않습니다. 따라서 SSH 및 / 또는 PAM의 사용자 정의 버전을 구축하지 않으려는 경우 PAM이 만료 된 비밀번호를 SSH에보고하지 못하도록하는 유일한 방법입니다. 이 작업을 수행 하면 사용자가 비밀번호로 SSH를 통해 로그인하더라도 SSH를 통한 만료 된 비밀번호 확인을 완전히 사용 하지 않습니다 . SSH가 아닌 다른 로그인 방법은 여전히 암호 만료를 확인합니다.
현재 pam.d/sshd
파일에 account include common-account
항목이 있습니다. 에 common-account
대한 참조가 포함 된 파일이 있다고 가정 합니다 pam_unix.so
. 만료 된 비밀번호를 확인하는 줄입니다.
common-account
다른 로그인 방법에 사용되기 때문에 파일 자체 를 만지고 싶지 않을 것입니다 . 대신 파일 include
에서 를 제거하려고 pam.d/sshd
합니다. common-account
게다가 다른 기능이 있다면 pam_unix.so
, 직접 그 기능을 사용 하고 싶을 것입니다 pam.d/sshd
.
마지막으로, 이것은 시스템 보안에 대한 수정이며, 좋은 조언을한다고 맹목적으로 신뢰해서는 안됩니다. 익숙하지 않은 경우 PAM의 작동 방식을 읽으십시오. 일부 시작 장소는 , 및 man 7 PAM
일 수 있습니다 .man 5 pam.conf
man 8 pam_unix
답변
no_pass_expiry라는 pam_unix.so (2016 년 2 월경)에 옵션이 추가되었습니다 ( 여기에서 소스 코드 변경 또는 맨 페이지 변경 ). 기본적으로 pam_unix 이외의 것이 인증에 사용 된 경우 (예 : sshd가 인증을 수행 한 경우) 만료 된 비밀번호를 무시하도록 pam_unix에 지시합니다.
결과적으로 해당 옵션이 포함 된 pam_unix.so 버전이 있으면 PAM을 다음과 같이 구성 할 수 있습니다.
- SSH 키를 사용하여 SSH를 통해 인증 한 경우 여전히 경고가 있지만 만료 된 비밀번호를 변경할 필요는 없습니다.
- pam_unix.so를 통한 로그인 / 암호가 ssh를 통한 인증에 사용 된 경우 만료 된 비밀번호의 비밀번호 변경 필요
- 다른 인증 순서에는 영향을 미치지 않습니다 (예 : 로그인 서비스를 통해).
예를 들어, 간단히 /etc/pam.d/sshd를 업데이트하고 pam_unix.so no_pass_expiry를 계정 및 비밀번호 유형 모두에 추가하여 위와 같이 RHEL 7 서버를 구성했습니다.
account required pam_nologin.so
account sufficient pam_unix.so no_pass_expiry
account include password-auth
password sufficient pam_unix.so no_pass_expiry
password include password-auth
답변
- 규정 준수 이유로 PAM 또는 sshd_config를 변경하지 않을 수 있습니다.
- sshd_config에서 PasswordAuthentication no 를 사용하고있을 수 있습니다.
- 임의의 비밀번호가있을 수 있습니다.
- CIS 준수를 구현했을 수도 있습니다.
- 여전히 사용자에게 프롬프트가 표시됩니다
그런 다음 root는 비밀번호 변경 날짜를 조정할 수 있습니다.
for user in `grep ":x:[0-9]\{4\}" /etc/passwd|cut -d: -f1`; do chage -d today $user; done