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

OS : Rocky Linux 9

 

 

U-11. 관리자 그룹에 최소한의 계정 포함

root 그룹에 다른 계정이 속해있지 않은지 확인

# cat /etc/group | grep root

root 만 조회된다면 정상

 

 

U-12. 계정이 존재하지 않는 GID 금지

그룹에 계정이 하나도 없는 그룹은 삭제

# cat /etc/group

에서 그룹에 계정이 없는 그룹은 삭제

계정이 없는 그룹만 보면된다.

 

명령어로 조회하고 싶으면 다음과 같이 awk를 활용해서 조회한다.

# awk -F: 'BEGIN{while(("getent passwd"|getline p)>0){split(p,a,":");pc[a[4]]++}close("getent passwd")} {c=pc[$3]; if($4!=""){n=split($4,m,","); c+=n} if(c==0) print $1":"$3}' < <(getent group)

/etc/passwd 의 4번째 필드인 GID를 검색하고,

/etc/group 의 보조그룹 계정 개수를 카운팀 하여 아예 없는 그룹들만 조회한다.

 

만약 시스템그룹(GID<1000)은 제외하고 조회하려면 다음과 같이 조회한다.

# awk -F: 'BEGIN{while(("getent passwd"|getline p)>0){split(p,a,":");pc[a[4]]++}close("getent passwd")} {gid=$3+0; if(gid<1000) next; c=pc[gid]; if($4!=""){n=split($4,m,","); c+=n} if(c==0) print $1":"gid}' < <(getent group)

 

 

U-13. 동일한 UID 금지

UID가 같은 값으로 설정된 계정이 있는지 조회 후 있다면 UID 수정

 

# getent passwd | awk -F: '{print $3 ":" $0}' | sort -t: -k1,1n | awk -F: '{uid=$1; line=$0; cnt[uid]++; lines[uid]=lines[uid] line "\n"} END{for(uid in cnt) if(cnt[uid]>1){printf "UID %s (%d개)\n%s\n", uid, cnt[uid], lines[uid]}}' | sort -V

같은 UID를 갖는 계정이 있다면 /etc/passwd 의 행이 나온다.

 

 

U-14. 사용자 Shell 점검

로그인이 필요하지 않은 계정에 로그인 가능한 권한이 있는지 점검

# cat /etc/passwd

로그인이 필요하지 않은 계정은  Shell 부분을 /bin/false 또는 /sbin/nologin 으로 교체한다.

 

예를들어 apache 설치 및 apache httpd 실행을 위한 계정인 apache 는

Shell 에 로그인해서 사용할 필요가 없고, 로그인이 되면 보안에 취약하기 때문에 nologin 으로 설정한다.

apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin

 

 

U-15. Session Timeout 설정

계정이 로그인 된 상태에서 아무 행동이 없으면 자동 로그아웃 하도록 설정

# vi /etc/profile

에 다음 내용을 추가한다.

TMOUT=600
export TMOUT

 

이렇게 설정을 해도 현업에서 보면 대부분의 개발자들이

# export TMOUT=0

명령을 하고 사용한다...

명령어를 제한할 수 있는 솔루션이 있다면 TMOUT 문구를 차단하고 사용한다.

 

 

'Linux' 카테고리의 다른 글

[Linux보안설정] 파일 및 디렉터리 관리 ①  (0) 2026.01.09
[Linux보안설정] 계정관리 ①  (0) 2026.01.07