Linux Password 강제 변경 방법 및 복잡성 정책
이번 포스트에선 Linux에서 Password 특정 계정의 패스워드를 강제로 변경시키는 방법과 복잡성 설정에 대해 작성하겠습니다.
Password의 복잡성 설정 원리
(RedHat 계열) 먼저 User에 대한 Password 복잡성은 /etc/pam.d/system-auth 및 /etc/pam.d/password-auth 파일에서 인증절차에 관련된 모듈을 Load하는 내용이 있으며, 전반적으로 pam 모듈을 통해 제어하도록 되어있습니다.
해당 파일 내용에서 각 필드별 의미와 required, sufficient, optional 와 같은 중간 필드에선 조건에 관련된 심화적인 내용이 있지만, 이 포스트에서 다루지 않겠습니다.
/etc/pam.d 아래에 있는 파일들은 수정한 이후부터 즉시 적용되며 중간 필드에선 조건문으로 동작하기에 잘못 수정하면 로그인이 불가능한 현상이 발생할 수 있으므로 꼭 수정 전에 Backup 파일을 생성 후 수정하는 것을 추천합니다.
password 복잡성에 관련된 모듈은 pam_cracklib.so (RHEL 6버전이하) / pam_pwquality.so (RHEL 7버전 이상) 입니다.
(RHEL 6 버전이하는 현재 EOS 되어있으므로 pam_cracklib.so 는 사용 X)
pam_pwquality.so 모듈을 사용할 때 /etc/pam.d/system-auth, /etc/pam.d/password-auth 파일에서 모듈을 읽어들이는 구문옆에 옵션으로 필요한 복잡성 규칙을 넣어 조건을 완성 시켜도되지만, 기본적으로 /etc/security/pwquality.conf 에서 설정하는 것이 관리자 측면에서 더 용이합니다.
(시스템 구축 후 진행하는 보안취약점 조치에서 오래된 보안취약점 스캔 스크립트들은 system-auth 파일과 password-auth 파일만 체크하는게 대부분이기 때문에 각자 운영환경에서 맞춰서 설정하면 될 것 같다..)
복잡성 이외에 로그인 실패 시 Failure Count가 증가하여 계정 잠금이 가능한 tally2 모듈이나 faillock 모듈도 있지만 해당 내용은 생략하겠습니다.
/etc/security/pwquality.conf 파일 설정법
- /etc/security/pwquality.conf
minlen = 8 // 최소 패스워드 길이
dcredit = 1 // 패스워드에 숫자문자가 가질 수 있는 값 지정.
ucredit = 1 // 패스워드에 영문 대문자가 가질 수 있는 값 지정.
lcredit = 1 // 패스워드에 영문 소문자가 가질 수 있는 값 지정.
ocredit = 1 // 패스워드에 특수문자가 가질 수 있는 값 지정.
defok = 10 // 기존 패스워드와 비교, 기본 값 10
* 각 항목에서 -1 값을 주면 반드시 해당하는 문자를 포함시켜야 한다.
(dcredit=-1 이라면 패스워드에 숫자가 1개 이상 포함되어야함)
Linux Password 강제 변경 (# passwd / # chpasswd)
서론이 길었지만, 위의 내용을 알아야 왜 강제 변경을 하려 하는지 이해가 된다고 생각합니다.
먼저 root 계정으로 로그인 한 경우 현재 서버에 password 정책이 어떻게 설정 되어있던간에 아래와 같이 경고 문구만 발생하고 무조건적으로 변경됩니다.
따라서 일반적인 시스템이라면 그냥 root 계정으로 # passwd Command 를 이용해 변경해버리면 됩니다.
하지만 금융권 및 보안을 중요시 생각하는 기업의 서버들에서 (주로 폐쇄망) 별도 보안솔루션 및 자체 보안프로그램이 있기에 (RedCastle과 같은 root 상위에서 제어정책을 적용하는 솔루션들 ...)
root 계정이나 root권한을 가지고있는 ($ su - 및 $ sudo -i 가능한) 계정을 통해서 # passwd 명령을 사용해도 패스워드가 변경되지 않는 경우가 있습니다.
해당 경우에는 아래와 같이 # passwd 명령에 --stdin 옵션을 사용하면 강제로 설정 할 수 있습니다.
# echo '변경할 비밀번호' | passwd --stdin 계정명
passwd 명령의 옵션 중 --stdin 이라는 Standard Input 옵션을 활용해 Password를 밀어 넣을 수 있습니다.
그러나 터미널에서 명령줄에 Password를 평문으로 입력하기 때문에 history에 남기에 운영 정책상 보안위배에 해당하거나 악용될 가능성이 있습니다.
추가적으로 배치작업 형식으로 사용하는 # chpasswd 명령이 있습니다.
(해당 방식도 보안솔루션을 무시하고 비밀번호를 밀어넣음)
# chpasswd 명령은 기본 형식에서부터 Password를 Standard Input 평문형태로 포함하여 실행하는 명령이라 보안적으로 위험하기에 잘 사용하지 않습니다.
# echo '계정명:비밀번호' | chpasswd (root 권한이 없으면 실행 불가)
배치형식으로 사용하는 방법
'OS > RHEL | CentOS' 카테고리의 다른 글
Swap 영역 생성/확장 (Standard Partition / LVM) (0) | 2022.07.05 |
---|---|
Swap 영역에 대해 (Swap 메모리) (0) | 2022.07.04 |
RHEL (Red Hat Enterprise Linux) EOS (End Of Service) 날짜 (0) | 2022.06.17 |
CentOS EOL(End Of Life) 날짜 및 Rocky Linux (0) | 2022.06.17 |
ANSI코드를 이용한 Bash Prompt 색상 변경 방법 (0) | 2022.06.15 |
댓글