[ 클라우드 ] CSAP -CCE 취약점 가이드--( XE-06. 로그인이 불필요한 계정 shell 제한 )
진단항목
XE-06. 로그인이 불필요한 계정 shell 제한
취약도
중
항목설명
접근이 거의 필요하지 않은 사용자들에게는 쉘을 제한함으로써 비인가적인 시스템 사용을 방지하여 침해의 가능성을 줄일 수 있다.
진단기준
양호
시스템 계정 중 로그인이 불필요한 계정에 대해 shell이 제한되어 있는 경우
취약
시스템 계정 중 로그인이 불필요한 계정에 대해 shell이 제한되어 있지 않은 경우
진단방법
<XenServer>
▪ /etc/passwd 파일의 계정 별 shell 확인
# cat /etc/passwd
(예시) nobody:x:65534:65534:nobody:/nonexistent:/bin/sh
※ 실행 쉘이 불필요한 계정 및 로그인이 필요하지 않은 계정에 nologin shell 부여
(dea daemon, bin, sys, listen, adm, nobody, nobody4, noaccess, diag, operator, games, gopher등 일반적으로 UID100 이하 60000 이상의 시스템 계정들)
/etc/passwd 파일은 리눅스 시스템에서 사용자 계정 정보를 저장하는 파일이다. 각 행은 한 명의 사용자 계정에 대한 정보를 나타내며, 7개의 필드로 구성된다.
예시
nobody:x:65534:65534:nobody:/nonexistent:/bin/sh
필드 설명
- 계정 이름: 사용자 계정의 이름
- 비밀번호: 사용자 계정의 암호입니다. 보안을 위해 암호는 암호화되어 저장된다.
- 사용자 ID(UID): 사용자 계정의 고유 식별자
- 그룹 ID(GID): 사용자 계정이 속한 그룹의 고유 식별자
- 로그인 이름: 사용자 계정이 로그인할 때 사용하는 이름
- 홈 디렉토리: 사용자 계정의 홈 디렉토리
- 쉘: 사용자가 로그인할 때 실행되는 기본 쉘
해석
위의 예시에서 nobody는 계정 이름, x는 암호, 65534는 UID, 65534는 GID, nobody는 로그인 이름, /nonexistent는 홈 디렉토리, /bin/sh는 쉘을 의미한다.
따라서, nobody 계정은 UID 65534, GID 65534를 가진 계정으로, 로그인할 때 /bin/sh 쉘을 사용한다. /nonexistent는 홈 디렉토리가 존재하지 않음을 의미한다.
추가 설명
- x로 표시된 암호는 암호화되어 저장되고 암호를 확인하려면 /etc/shadow 파일을 확인해야 한다.
- UID는 사용자 계정의 고유 식별자이다. UID가 동일하면 동일한 권한을 가진 사용자 계정이다.
- GID는 사용자 계정이 속한 그룹의 고유 식별자이다. GID가 동일하면 동일한 그룹에 속한 사용자 계정
- 로그인 이름은 사용자 계정이 로그인할 때 사용하는 이름
- 홈 디렉토리는 사용자 계정의 개인 디렉토리
- 쉘은 사용자가 로그인할 때 실행되는 기본 쉘
참고
- /etc/passwd 파일의 내용은 cat /etc/passwd 명령어로 확인할 수 있다.
- chsh 명령어를 사용하여 사용자의 쉘을 변경할 수 있다.
조치방법
<XenServer>
▪ 로그인이 필요 없는 계정의 shell 설정 변경
1) # vi /etc/passwd를 실행하여 아래와 같은 설정으로 변경 (단위:주)
예) daemon 계정이 로그인 하지 못하도록 설정
# vi /etc/passed
daemon:x:1:1::/:/sbin/ksh (수정 전) daemon:x:1:1::/:/bin/false (수정 후)
->/bin/false는 아무 것도 하지 않는 쉘
# 현재 쉘 확인
$ echo $SHELL
/bin/bash
# 쉘 변경
$ chsh -s /bin/false
Changing shell for user. Password: Shell changed.
# 변경된 쉘 확인
$ echo $SHELL
/bin/false
# 로그인 시도
$ su
su: Authentication failure
