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 #
답변1
비밀번호 만료 프롬프트를 발생시키는 작업 순서는 다음과 같습니다.
account
SSH는 계정이 존재하고 유효한지 확인하는 PAM 단계를 실행합니다 . 이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
.
답변2
no_pass_expiry라는 옵션이 pam_unix.so에 추가되었습니다(2016년 2월경).여기에서 수정된 소스 코드또는매뉴얼 페이지는 여기에 있습니다). 기본적으로 인증을 위해 pam_unix 이외의 다른 것을 사용하는 경우(예: sshd가 인증을 수행하는 경우) pam_unix는 만료된 비밀번호를 무시하도록 지시합니다.
따라서 이 옵션을 포함하는 pam_unix.so 버전이 있는 경우 PAM을 다음과 같이 구성할 수 있습니다.
- SSH 키를 사용하여 SSH를 통해 인증하는 경우 경고가 계속 표시되지만 만료된 비밀번호를 변경할 필요는 없습니다.
- pam_unix.so의 로그인/비밀번호를 사용하여 SSH를 통해 인증하는 경우 만료된 비밀번호를 변경해야 합니다.
- 다른 인증 시퀀스(예: 로그인 서비스를 통한)에는 영향을 미치지 않습니다.
예를 들어, 위 작업을 수행하도록 RHEL 7 서버를 구성했습니다. /etc/pam.d/sshd를 업데이트하고 계정 및 비밀번호 유형에 pam_unix.so no_pass_expiry를 추가하면 됩니다.
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
답변3
- 규정 준수상의 이유로 PAM 또는 sshd_config를 변경하지 않을 수도 있습니다.
- 당신은 사용하고있을 수 있습니다비밀번호 확인 여부sshd_config에서
- 임의의 비밀번호가 있을 수 있습니다.
- CIS 준수를 구현했을 수도 있습니다.
- 사용자는 계속해서 메시지를 받게 됩니다.
그런 다음 루트는 비밀번호 변경 날짜를 조정할 수 있습니다.
for user in `grep ":x:[0-9]\{4\}" /etc/passwd|cut -d: -f1`; do chage -d today $user; done