만료된 비밀번호 및 SSH 키를 기반으로 한 로그인에 UsePAM을 사용하는 것은

만료된 비밀번호 및 SSH 키를 기반으로 한 로그인에 UsePAM을 사용하는 것은

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

비밀번호 만료 프롬프트를 발생시키는 작업 순서는 다음과 같습니다.

  • accountSSH는 계정이 존재하고 유효한지 확인하는 PAM 단계를 실행합니다 . 이 account단계에서는 비밀번호가 만료되었음을 알리고 SSH에 알려줍니다.
  • SSH는 키 기반 인증을 수행합니다. 이를 위해 PAM이 필요하지 않으므로 해당 단계를 실행하지 않습니다 auth. 그런 다음 SSH 로그인 세션을 설정하고 PAM session단계를 실행합니다.
  • 다음으로 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을 다음과 같이 구성할 수 있습니다.

  1. SSH 키를 사용하여 SSH를 통해 인증하는 경우 경고가 계속 표시되지만 만료된 비밀번호를 변경할 필요는 없습니다.
  2. pam_unix.so의 로그인/비밀번호를 사용하여 SSH를 통해 인증하는 경우 만료된 비밀번호를 변경해야 합니다.
  3. 다른 인증 시퀀스(예: 로그인 서비스를 통한)에는 영향을 미치지 않습니다.

예를 들어, 위 작업을 수행하도록 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

관련 정보