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