본문 바로가기
취약점 진단/UNIX 취약점 진단

[UNIX] U-53 사용자 shell 점검

by 게으른 피글렛 2024. 10. 4.
반응형

U-53 사용자 shell 점검

항목중요도 : 하

1. 취약점 개요

▶ 점검내용 : 로그인이 불필요한 계정(adm, sys, daemon 등)에 쉘 부여 여부 점검

 점검목적 : 로그인이 불필요한 계정에 쉘 설정을 제거하여, 로그인이 필요하지 않은 계정을 통한 시스템 명령어를 실행하지 못하게 하기 위함

 보안위협

 · 로그인이 불필요한 계정은 일반적으로 OS 설치 시 기본적으로 생성되는 계정으로 쉘이 설정되어 있을 경우, 공격자는 기본 계정들을 이용하여 시스템에 명령어를 실행 할 수 있음 

 참고

※ 쉘(Shell): 대화형 사용자 인터페이스로써, 운영체제(OS) 가장 외곽계층에 존재하여 사용자의 명령어를 이해하고 실행함

2. 점검대상 및 판단 기준

  대상 : SOLARIS, LINUX, AIX, HP-UX 등

  판단기준

 · 양호 : 로그인이 필요하지 않은 계정에 /bin/false(/sbin/nologin) 쉘이 부여되어 있는 경우

 · 취약 : 로그인이 필요하지 않은 계정에 /bin/false(/sbin/nologin) 쉘이 부여되지 않은 경우

  조치방법 : 로그인이 필요하지 않은 계정에 대해 /bin/false(/sbin/nologin) 쉘 부여

3. LINUX 초기 설정값

※ 테스트한 LINUX의 버전은 AWS로 구성된 CentOS 9 입니다.

 

확인방법

아래 명령문의 뜻은 passwd 파일에서 "^()" 안에 들어간 문구로 시작하는 문장을 찾습니다 //admin은 제외합니다.

$ cat /etc/passwd | egrep "^(daemon|bin|sys|adm|listen|nobody|nobody4|noaccess|diag|operator|games|gopher)" | grep -v "admin"

 

 

확인 결과 /sbin/nologin 이 없는 문구가 없으므로 양호입니다.

[ec2-user@localhost ~]$ cat /etc/passwd | egrep "^(daemon|bin|sys|adm|listen|nobody|nobody4|noaccess|diag|operator|games|gopher)" | grep -v "admin"
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin
systemd-coredump:x:999:997:systemd Core Dumper:/:/sbin/nologin
systemd-oom:x:992:992:systemd Userspace OOM Killer:/:/usr/sbin/nologin
[ec2-user@localhost ~]$

 

 

 

 4. 조치

 

양호 조건인 문구는 아래와 같은 의미를 나타냅니다. 

 

/bin/false : 단순 로그인 실패를 나타내며 주로 사용자의 로그인 허용을 막기 위해 설정

/sbin/nologin : 로그인이 허용되지 않습니다 문구 표출, 보통 시스템 서비스 계정에 사용되며, 서비스를 수행할 수 있도록 하면서 사용자가 직접 로그인하는 것을 방지

 

조치가 필요하시다면 

1) vi 편집기를 이용하여 “/etc/passwd” 파일 열기
2) 로그인 쉘 부분인 계정 맨 마지막에 /bin/false(/sbin/nologin) 부여 및 변경

# 예시
$ sudo vi /etc/passwd
 # 수정 전
 daemon:x:2:2::/:/sbin/ksh
 # 수정 후
 daemon:x:2:2::/:/bin/false 또는, daemon:x:2:2::/:/sbin/nologin

 

 

5. 결과

 

일반적으로 로그인이 불필요한 계정은

daemon, bin, sys, adm, listen, nobody, nobody4, noaccess, diag, listen, operator, games, gopher 등 일반적으로 UID 100 이하 60000 이상의 시스템 계정 해당됩니다.

 

여기 계정에 /bin/false 또는 /sbin/nologin 문구가 있다면 양호 입니다!

 

 

 

 

Linux를 마스터하는 그날까지

화이팅!

 

반응형