ISMS 등 보안 인증 심사를 진행하다보면 서버의 계정 정책에 대한 설정을 수행할 때가 있다. 리눅스 기반 서버의 계정 정책 설정은 CentOS 6/7 이후로는 대부분 PAM 으로 설정한다. 비밀번호 복잡도 설정, 계정 잠금 설정, 로그인 재시도 설정 등 계정에 관련된 대부분의 설정을 수행할 수 있다.


(Linux) 동일한 비밀번호 재사용 제한 (ISMS-P 2.5.4 비밀번호 관리)

pam_pwhistory 모듈을 활용하여 지난 비밀번호를 기억할지 여부를 설정할 수 있다.

<aside> 💡 pam_pwhistory: PAM module to remember last passwords

</aside>

/etc/pam.d/system-auth, /etc/pam.d/password-auth 에 아래와 같이 설정할 수 있다.

해당 모듈이 설정되면 /etc/security/opasswd 내 비밀번호가 기억된다.

password requisite pam_pwhistory.so debug use_authtok remember=2

Scripts

Amazon Linux 2 OS 를 기준으로 해당 설정을 적용하는 자동화 스크립트 단, 스크립트의 멱등성은 보장되지 않는다.

originName=system-auth
backupName=system-auth_20200101-01

mv /etc/pam.d/${originName} /etc/pam.d/${backupName}
# pam_pwquality.so 문자열을 찾은 후 그 다음행에 내용 추가
sed -e 's,\\(\\.*pam_pwquality.so.*\\),\\1\\npassword requisite pam_pwhistory.so debug use_authtok remember=2,g' /etc/pam.d/${backupName} > /etc/pam.d/${originName}

originName=password-auth
backupName=password-auth_20200101-01

mv /etc/pam.d/${originName} /etc/pam.d/${backupName}
sed -e 's,\\(\\.*pam_pwquality.so.*\\),\\1\\npassword requisite pam_pwhistory.so debug use_authtok remember=2,g' /etc/pam.d/${backupName} > /etc/pam.d/${originName}

# system-auth 와 password-auth 정책은 동일하게 유지한다.
diff system-auth password-auth

Test