[Linux보안설정] 계정관리 ①

OS : Rocky Linux 9

 

U-01. root 계정 원격 접속 제한

root 계정으로 SSH 원격 접속을 제한한다.

# vi /etc/ssh/sshd_config

아래 내용과 같이 설정한다.

PermitRootLogin no

 

 

U-02. 패스워드 복잡도 설정

OS 계정의 암호 설정 시 암호의 복잡도를 설정한다.

# vi /etc/security/pwquality.conf

아래 내용과 같이 설정한다.

minlen = 10
dcredit = -1
lcredit = -1
ucredit = -1
ocredit = -1
maxrepeat = 3
usercheck = 1

각 항목의 의미는 다음과 같다.

minlen : 패스워드의 최소 길이 설정, 10 으로 설정하면 최소 10자리 이상 적용
dcredit : 최소 필요한 숫자의 개수, -1 로 설정하면 최소 1개 이상 적용
lcredit : 최소 필요한 소문자의 개수, -1 로 설정하면 최소 1개 이상 적용
ucredit : 최소 필요한 대문자의 개수, -1 로 설정하면 최소 1개 이상 적용
ocredit : 최소 필요한 특수문자의 개수, -1 로 설정하면 최소 1개 이상 적용
maxrepeat : 연속된 동일한 반복문자 사용 불가, 3 으로 설정하면 3번 이상 반복 금지
usercheck : 패스워드에 계정명 포함 여부 점검, 1 로 설정하면 계정명 사용 불가

 

 

U-03. 계정 잠금 임계값 설정

n번 이상 계정 로그인에 실패할 경우 계정을 일정 시간동안 잠금

 

faillock 을 사용하기 때문에 먼저 설정해준다.

# authselect select sssd --force
# authselect enable-feature with-faillock

설정 파일을 열고

# vi /etc/security/faillock.conf

아래 내용과 같이 수정한다.

dir = /var/run/faillock
audit
silent
deny = 5
unlock_time = 1800

각 항목의 의미는 다음과 같다.

dir : 로그인 실패 기록을 저장하는 데이터 경로
audit : OS에 없는 계정명으로 시도한 것을 syslog에 남김
silent : 사용자에게 안내 메세지를 출력하지 않아 계정 존재 여부를 숨길 수 있음
deny : 연속 실패 횟수가 설정한 값이 될 경우 계정을 잠금
unlock_time : 설정한 시간(초)만큼 계정을 잠금, 0으로 설정할 경우 자동 해제되지 않음

관리자가 잠금된 계정을 바로 해제하려면 다음과 같이 진행한다.

# faillock --reset --user username

 

 

U-04. 패스워드 파일 보호

passwd 파일 내 패스워드가 암호화 되어있는지 확인하고 권한 제한

/etc/passwd 파일의 두번째 필드가 x 인지 확인

# vi /etc/passwd

아래와 같이 두번째 필드가 x 여야 한다.

root:x:0:0:root:/root:/bin/bash

파일의 권한은 444 로 제한한다.

# chown root:root /etc/passwd
# chmod 444 /etc/passwd

other 에 읽기 권한이 없으면 로그인이 안된다.

 

U-05. root 이외의 UID가 '0' 금지

root 계정 외에 UID 값이 '0'인 계정이 있으면 안된다.

# vi /etc/passwd

혹은 다음 명령어로 필터해서 볼 수 있다.

# awk -F: '$3==0 {print}' /etc/passwd
awk : 파일을 한 줄씩 읽어서 조건에 맞는 줄을 출력, 수정 할 수 있는 도구
-F : 구분자를 줄 수 있는 옵션 /etc/passwd 는 : 로 구분 되어있어서 : 으로 지정
$3==0 {print} : 3번째 필드 값이 0 인 것을 출력
/etc/passwd : 파일명

이 결과가 root 행만 출력되면 된다.

 

 

U-06. root 계정 su 제한

특정 계정 외에는 su 를 제한한다.

 

su 명령어의 권한을 수정한다.

# chgrp wheel /bin/su
# chmod 4750 /bin/su

su 명령어를 허용해도 되는 계정만 wheel 그룹에 포함시킨다.

# usermod -aG wheel username

 

 

U-07. 패스워드 최소 길이 설정

U-02 에서 설정 했다.

 

 

U-08. 패스워드 최대 사용기간 설정

패스워드 변경 주기를 설정한다.

# vi /etc/login.defs

다음과 같이 수정한다.

PASS_MAX_DAYS 90

90일이 지나고 로그인하면 패스워드 변경 안내가 나온다.

 

각 계정마다 별도로 설정 가능하다.

# chage -M 90 username

해당 계정에 대해서만 패스워드 최대 사용기간을 90일로 설정한다.

 

 

U-09. 패스워드 최소 사용기간 설정

패스워드 최소 사용기간을 설정하여, 패스워드를 계속 변경하지 못하게 한다.

# vi /etc/login.defs

다음과 같이 수정한다.

PASS_MIN_DAYS 1

 

마찬가지로, 각 계정마다 별도로 설정 가능하다.

# chage -m 1 username

해당 계정에 대해서만 패스워드 최소 사용기간을 1일로 설정한다.

 

관련하여 해당 계정에 대한 chage 값을 조회할 수 있다.

# chage -l username
Last password change					: 2026-01-01
Password expires					: 2026-03-02
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

 

 

U-10. 불필요한 계정 제거

사용하지 않는 계정 검색 후 삭제한다.

lastlog 명령어를 통해 전체 계정의 마지막 로그인 시간을 확인할 수 있다.

# lastlog
Username         Port     From                                       Latest
root             pts/0                                              Tue Jan  6 23:13:31 +0900 2026
bin                                                                 **Never logged in**
daemon                                                              **Never logged in**
adm                                                                 **Never logged in**
lp                                                                  **Never logged in**
sync                                                                **Never logged in**
shutdown                                                            **Never logged in**
halt                                                                **Never logged in**
mail                                                                **Never logged in**
operator                                                            **Never logged in**
games                                                               **Never logged in**
ftp                                                                 **Never logged in**
nobody                                                              **Never logged in**
systemd-coredump                                                    **Never logged in**
dbus                                                                **Never logged in**
polkitd                                                             **Never logged in**
tss                                                                 **Never logged in**
sssd                                                                **Never logged in**
sshd                                                                **Never logged in**
chrony                                                              **Never logged in**
lieper           pts/0    10.30.12.15                               Tue Jan  6 23:13:20 +0900 2026
setroubleshoot                                                      **Never logged in**
clevis                                                              **Never logged in**
libstoragemgmt                                                      **Never logged in**
tcpdump                                                             **Never logged in**

서비스 환경에 따라 다르지만, nologin 으로 설정된 계정 중에서도

굳이 필요하지 않는 계정은 삭제한다.

# userdel ftp
# userdel lp
# userdel sync
# userdel shutdown
# userdel halt
# userdel operator
# userdel games

 

'Linux' 카테고리의 다른 글

[Linux보안설정] 계정관리 ②  (0) 2026.01.07