UsePAM으로 만료 된 비밀번호 및 SSH 키 기반 로그인 yes


12

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 # 

당신은 제거하여이 작업을 수행 할 수있을 pam_unix.so으로부터 session의 섹션 /etc/pam.d/sshd(그리고로 대체 pam_lastlog.so거기 아니라면 있는지 확실하지 않습니다. pam_unix.so/session이 아닌지를하고있는 일이지만, 적절한 장소 같은 느낌이 든다.
패트릭

1
절대로 만료되지 않도록 사용자 계정을 설정하십시오 :)
Raza

@Raza : 감사합니다 :) 좋은 생각하지만, 해결책 :( 될 수 없다
thequestionthequestion

노력 ForcedPasswdChange No이 SSH1입니다
라자

1
ForcedPasswdChange No만료 후에는 작동하지 않는다는 것을 깨달았습니다 . 만료 된 사용자가 로그인 할 수있는 솔루션을 찾고 있습니다
Raza

답변:


10

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

  • SSH는 PAM account단계를 실행하여 계정이 존재하고 유효한지 확인합니다. 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.confman 8 pam_unix


작업 순서에 대한 좋은 설명, 감사합니다.
M_dk

3

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. 다른 인증 순서에는 영향을 미치지 않습니다 (예 : 로그인 서비스를 통해).

예를 들어, 간단히 /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

1
그냥 이것을 시도하고 작동합니다. "man 8 pam_unix"매뉴얼 페이지에 "no_pass_expiry"가 있는지 여부를 검색하여 PAM이이 옵션을 지원하는지 여부를 확인할 수 있습니다.
Tomofumi

2016 년 코드 변경 사항이 여전히 우분투 18.04에 없습니다 ... :(
ColinM

0
  • 규정 준수 이유로 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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.