솔솔

[Linux] PAM으로 리눅스 비밀번호 정책 설정하기 본문

나의보물들/Linux

[Linux] PAM으로 리눅스 비밀번호 정책 설정하기

솔솔하네 2024. 9. 20. 14:34
반응형

🍀 PAM란?


리눅스 시스템에서 PAM (Pluggable Authentication Modules)이란 Linux 시스템에서 사용하는 “착탈형 인증 모듈”로 응용 프로그램(서비스)에 대한 사용자의 사용 권한을 제어하는 모듈

Linux 시스템 관리자가 사용자를 인증하는
방법을 구성할 수 있도록 하는 라이브러리 모음입니다 . 이는 애플리케이션 코드를 변경하는 대신 구성 파일을 사용하여 보안 애플리케이션에 대한 인증 방법을 전환하는 유연하고 중앙 집중화된 방법을 제공 - Wikipedia

 

🍀 사용자의 인증을 담당하는 모듈을 사용하여 비밀번호를 8자리 이상으로 규제하기


방법 ①

1. login.defs 설정 파일 수정

username@servername:/etc/pam.d$ sudo vi /etc/login.defs

/etc/pam.d 경로로 들어가면 다양한 설정 파일 확인 가능

 

2.  아래 코드 추가

  • PASS_MIN_LEN : 비밀번호 최소 길이
PASS_MIN_LEN 8

 

방법 ②

1. common-password 설정 파일 수정

username@servername:/etc/pam.d$ sudo vi /etc/pam.d/common-password

 

2. 아래 코드 추가

password requisite pam_pwquality.so minlen=8
password sufficient pam



🧨 방법 트러블 슈팅

   아래와 같이 비밀번호 변경 시 Module is unknown

username@servername:/etc/pam.d$ passwd username
Changing password for username.
Current password:
passwd: Module is unknown
passwd: password unchanged

 

1. 로그  확인

  → 몇 가지 모듈을 찾지 못해 나오는 에러로 판단

username@servername:/etc/pam.d$ cat /var/log/auth.log
...
Sep 20 15:08:42 servername sudo: PAM adding faulty module: pam_pwquality.so
Sep 20 15:08:42 servername sudo: PAM unable to dlopen(pam): /lib/security/pam: cannot open shared object file: No such file or directory
Sep 20 15:08:42 servername sudo: PAM adding faulty module: pam
Sep 20 15:08:42 servername sudo: username : TTY=pts/1 ; PWD=/etc/pam.d ; USER=root ; COMMAND=/usr/bin/apt-get install libpam-pwdfile libpam-modules
Sep 20 15:08:42 servername sudo: pam_unix(sudo:session): session opened for user root(uid=0) by username(uid=1000)
Sep 20 15:08:51 servername sudo: pam_unix(sudo:session): session closed for user root
Sep 20 15:08:57 servername passwd[1649]: PAM unable to dlopen(pam_pwquality.so): /lib/security/pam_pwquality.so: cannot open shared object file: No such file or directory
Sep 20 15:08:57 servername passwd[1649]: PAM adding faulty module: pam_pwquality.so
Sep 20 15:08:57 servername passwd[1649]: PAM unable to dlopen(pam): /lib/security/pam: cannot open shared object file: No such file or directory
Sep 20 15:08:57 servername passwd[1649]: PAM adding faulty module: pam

 

2. 모듈 설치

  • libpam-cracklib  : 사용자가 비밀번호를 설정할 때, 비밀번호의 복잡성과 강도를 검사하는 PAM 모듈
  • libpam-pwquality : 밀번호 품질을 보장하는 PAM 모듈, 비밀번호의 복잡성 규칙(최소 길이, 문자 조합, 이전 비밀번호와의 유사성 등)을 설정할 수 있으며, 비밀번호 설정 시 추가적인 제약을 제공
sudo apt-get install libpam-cracklib
sudo apt-get install libpam-pwquality

 

3. 테스트

 비밀번호 1234입력 시 The password is shorter than 8 characters 나옴

username@servername:/etc/pam.d$ passwd username
Changing password for username.
Current password:
New password: 1234 입력
BAD PASSWORD: The password is shorter than 8 characters
New password:

 

 

🍀 테스트


1. 비밀번호 변경 시 새로운 비밀번호를  1234로 입력 시 아래와 같이 나옴 (비밀번호 4자리 입력)

   You must choose a longer password.

username@servername:/etc/pam.d$ passwd username
Changing password for username.
Current password:
New password: 1234 입력
Retype new password: 1234 입력
You must choose a longer password.

 

2. 비밀번호 변경 시 새로운 비밀번호를  12345678로 입력 시 아래와 같이 나옴 (비밀번호 8자리 입력)

   password updated successfully

username@servername:/etc/pam.d$ passwd username
Changing password for username.
Current password:
New password: 12345678 입력
Retype new password:  12345678 입력
passwd: password updated successfully