본문 바로가기

리눅스

[WIP] 우분투 계정 보안 조치

728x90

우분투 계정 보안 조치

우분투 환경에서 계정 보안을 강화하기 위해 수행하는 패스워드 복잡성 정책 설정과 계정 잠금(로그인 실패 임계값) 설정 방법입니다.

1. 패스워드 기본 정책 설정(/etc/login.defs)

/etc/login.defs 파일은 계정 생성 시 적용되는 기본 패스워드 정책을 정의한다.

 

기존 설정 확인

cat /etc/login.defs | egrep -v '^#' | egrep 'PASS_MIN_LEN|PASS_MAX_DAYS|PASS_MIN_DAYS|PASS_WARN_AGE'
PASS_MAX_DAYS	99999
PASS_MIN_DAYS	0
PASS_WARN_AGE	7

보안 기준에 맞게 정책 변경

sudo sed -i \
  's/PASS_MAX_DAYS\s*99999/PASS_MAX_DAYS\t90/g; \
  s/PASS_MIN_DAYS\s*0/PASS_MIN_DAYS\t1/g; \
  s/#PASS_MIN_LEN/PASS_MIN_LEN\t8/g; \
  s/PASS_WARN_AGE\s*7/PASS_WARN_AGE\t7/g;' /etc/login.defs

변경 후 설정 확인

cat /etc/login.defs | egrep -v '^#' | egrep 'PASS_MIN_LEN|PASS_MAX_DAYS|PASS_MIN_DAYS|PASS_WARN_AGE'
PASS_MAX_DAYS	90
PASS_MIN_DAYS	1
PASS_WARN_AGE	7
PASS_MIN_LEN	8
  • PASS_MAX_DAYS 패스워드 최대 사용 기간
  • PASS_MIN_DAYS 패스워드 변경 최소 간격
  • PASS_WARN_AGE 만료 전 경고 일수
  • PASS_MIN_LEN 최소 패스워드 길이

2. 계정 생성 및 정책 적용 확인

useradd -s /bin/bash devops
chage -l devops
Last password change                                    : May 03, 2023
Password expires                                        : Aug 01, 2023
Password inactive                                       : never
Account expires                                         : never
Minimum number of days between password change          : 1
Maximum number of days between password change          : 90
Number of days of warning before password expires       : 7
  • /etc/login.defs 설정이 정상 적용됨을 확인할 수 있다.

3. 패스워드 복잡성 강화(libpam-pwquality)

패키지 설치

sudo apt install -y libpam-pwquality

PAM 패스워드 정책 설정(/etc/pam.d/common-password)

  • 기존 설정 확인
cat /etc/pam.d/common-password | egrep -v '^#|^$'
password	requisite			pam_pwquality.so retry=3
password	[success=1 default=ignore]	pam_unix.so obscure use_authtok try_first_pass yescrypt
password	requisite			pam_deny.so
password	required			pam_permit.so
  • root 계정 제외 정책 적용
sudo sed -i \
's/^password\s*\[success=1 default=ignore\].*/password\t[success=1 default=ignore]\tpam_unix.so obscure use_authtok try_first_pass yescrypt nullok ignore_root/' \
/etc/pam.d/common-password
ignore_root 옵션은 root 계정을 패스워드 복잡성 정책에서 제외한다.
  • 변경 후 확인
cat /etc/pam.d/common-password | egrep -v '^#|^$'
password	requisite			pam_pwquality.so retry=3
password	[success=1 default=ignore] pam_unix.so obscure use_authtok try_first_pass yescrypt nullok ignore_root
password	requisite			pam_deny.so
password	required			pam_permit.so

4. 패스워드 품질 정책 설정(/etc/security/pwquality.conf)

cat <<EOF >> /etc/security/pwquality.conf
# password policy
minlen = 8
minclass = 3
lcredit = 1
dcredit = 1
ocredit = 1
EOF
  • minlen 최소 길이
  • minclass 문자 유형 최소 개수
  • lcredit 소문자 포함
  • dcredit 숫자 포함
  • ocredit 특수문자 포함

5. 개별 계정 패스워드 정책 관리(chage)

useradd -s /bin/bash devops2
chage -l devops2
Last password change					: May 10, 2023
Password expires					: Aug 08, 2023
Password inactive					: never
Account expires						: never
Minimum number of days between password change		: 1
Maximum number of days between password change		: 90
Number of days of warning before password expires	: 7

정책 수동 변경

sudo chage --maxdays 60 --mindays 2 --warndays 5 --inactive 0 devops2
chage -l devops2
Last password change					: May 10, 2023
Password expires					: Jul 09, 2023
Password inactive					: Jul 09, 2023
Account expires						: never
Minimum number of days between password change		: 2
Maximum number of days between password change		: 60
Number of days of warning before password expires	: 5

 

chage -d 2023-05-03 devops
chage -l devops

6. 로그인 실패 계정 잠금 설정(pam_faillock)

/etc/pam.d/common-auth 수정

cat /etc/pam.d/common-auth | egrep -v '^#|^$'
auth	[success=1 default=ignore]	pam_unix.so nullok
auth	requisite			pam_deny.so
auth	required			pam_permit.so

실패 횟수 제한 적용

sudo sed -i \
's/^auth\s*\[success=1 default=ignore\].*/auth\t[success=1 default=ignore] pam_faillock.so authfail audit deny=5 unlock_time=600/' \
/etc/pam.d/common-auth
sudo sed -i '/^auth\s*required\s*pam_permit.so$/a auth\trequisite\t\t\tpam_faillock.so' /etc/pam.d/common-auth

설정 결과

cat /etc/pam.d/common-auth | egrep -v '^#|^$'
auth	[success=1 default=ignore] pam_faillock.so authfail audit deny=5 unlock_time=600
auth	requisite			pam_deny.so
auth	required			pam_permit.so
auth	requisite			pam_faillock.so

 

/etc/login.defs : 기본 패스워드 만료 정책

pwquality : 패스워드 복잡성 강화

pam_faillock : 로그인 실패 시 계정 잠금

chage : 계정별 개별 정책 제어

 

728x90