[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 |
|---|