UID(User Identifier, 사용자 식별자)와 GID(Group Identifier, 그룹 식별자)는 리눅스 및 유닉스 기반 시스템에서 사용자와 그룹을 식별하는 데 중요한 역할을 합니다. 이들은 각각 사용자와 사용자 그룹에 할당되는 고유한 숫자입니다. UID와 GID는 시스템의 보안을 강화하는 핵심적인 구성 요소로 올바르게 구성된 UID와 GID는 사용자와 프로세스 간에 적절한 권한을 부여하여 불필요한 정보 노출 및 시스템 공격을 방지합니다. 사용자와 그룹 관리를 위한 리눅스 명령어 및 관련 파일들 총정리 글 참고.
점검 내용
- “/etc/passwd” 파일에서 root(UID=0) 계정과 동일한 UID(User Identification)를 가진 계정이 존재하는지 점검
- “/etc/passwd” 파일에서 UID가 동일한 사용자 계정 존재 여부 점검
점검 목적
- root 계정과 동일한 UID가 존재하는지 점검하여 root권한이 일반 사용자 계정이나 비인가자의 접근 위협에 안전하게 보호되고 있는지 확인하기 위함
- UID가 동일한 사용자 계정을 점검함으로써 타 사용자 계정 소유의 파일 및 디렉터리로의 악의적 접근 예방 및 침해사고 시 명확한 감사추적을 목적으로 함
보안 위협
- root 계정과 동일 UID가 설정되어 있는 일반사용자 계정도 root 권한을 부여받아 관리자가 실행 할 수 있는 모든 작업이 가능함(서비스 시작, 중지, 재부팅, root 권한 파일 편집 등)
- root와 동일한 UID를 사용하므로 사용자 감사 추적 시 어려움이 발생함
- 중복된 UID가 존재할 경우 시스템은 동일한 사용자로 인식하여 소유자의 권한이 중복되어 불필요한 권한이 부여되며 시스템 로그를 이용한 감사 추적 시 사용자가 구분되지 않음 (권한 할당은 그룹 권한을 이용하여 운영)
점검 대상
- Linux : Rocky 9
판단 기준
- 양호 :
– root 계정과 동일한 UID(0)를 갖는 계정이 존재하지 않는 경우
– 동일한 UID로 설정된 사용자 계정이 존재하지 않는 경우 - 취약 :
– root 계정과 동일한 UID(0)를 갖는 계정이 존재하는 경우
– 동일한 UID로 설정된 사용자 계정이 존재하는 경우
조치 방법
- UID가 0인 계정 존재 시 변경할 UID를 확인 후 다른 UID로 변경 및 불필요 시 삭제, 계정이 사용 중이면 명령어로 조치가 안 되므로 “/etc/passwd” 파일 설정 변경
- UID가 “0”인 사용자 확인
[root@rocky9u2 ~]# awk -F: '$3 == 0 {print}' /etc/passwdroot:x:0:0:root:/root:/bin/bash
- root 이외의 사용자가 UID = 0인 경우는 `usermod` 명령어로 UID 변경.
“/etc/login.defs” 파일의 UID_MIN와 UID_MAX 사이의 값으로 <변경할 UID값> 지정usermod –u <변경할 UID값> <user_name>
- UID가 “0”인 사용자 확인
- 동일한 UID로 설정된 사용자 계정의 UID를 서로 다른 값으로 변경
- 동일한 UID를 가진 사용자 계정 확인
awk -F: '{print $3}' /etc/passwd | sort | uniq -d
- 동일한 UID가 존재하는 경우는 `usermod` 명령어로 UID 변경.
“/etc/login.defs” 파일의 UID_MIN와 UID_MAX 사이의 값으로 <변경할 UID값> 지정usermod –u <변경할 UID값> <user_name>
- 동일한 권한이 필요할 경우, 그룹 권한으로 운영
“Oracle Database 11gR2 설치하기” 글을 참고하세요groupadd -g <GID 지정> <group_name> usermod -G <GID 지정> <user_name> chown [-R] :<GID 지정> [파일 | 디렉토리] chmod [-R] g=<필요한 권한 설정> [파일 | 디렉토리]
- 동일한 UID를 가진 사용자 계정 확인
◁ 계정 잠금 임계값 설정 | | | 패스워드 유효기간 점검 ▷ |
---|