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

[UNIX] U-45 root 계정 su 제한

by 게으른 피글렛 2024. 9. 26.
반응형

U-45 root 계정 su 제한

항목중요도 : 하

1. 취약점 개요

▶ 점검내용 : su 명령어 사용을 허용하는 사용자를 지정한 그룹이 설정되어 있는지 점검

 점검목적 : su 관련 그룹만 su 명령어 사용 권한이 부여되어 있는지 점검하여 su 그룹에 포함되지 않은 일반 사용자의 su 명령 사용을 원천적으로 차단하는지 확인하기 위함

 보안위협

 · 무분별한 사용자 변경으로 타 사용자 소유의 파일을 변경 할 수 있으며 root 계정으로 변경하는 경우 관리자 권한을 획득 할 수 있음

 참고

-

2. 점검대상 및 판단 기준

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

  판단기준

 · 양호 : su 명령어를 특정 그룹에 속한 사용자만 사용하도록 제한되어 있는 경우
           일반사용자 계정 없이 root 계정만 사용하는 경우 su 명령어 사용제한 불필요

 · 취약 : su 명령어를 모든 사용자가 사용하도록 설정되어 있는 경우

  조치방법

일반 사용자의 su 명령 사용 제한
Step 1) Group 생성(생성할 그룹 요청, 일반적으로 wheel 사용)
Step 2) su 명령어의 그룹을 su 명령어 허용할 그룹으로 변경
Step 3) su 명령어의 권한 변경(4750)
Step 4) su 명령어 사용이 필요한 계정을 새로 생성한 그룹에 추가(추가할 계정 요청)
※ LINUX의 경우, PAM(Pluggable Authentication Module)을 이용한 설정 가능

 

PAM(Pluggable Authentication Module): 사용자를 인증하고 그 사용자의 서비스에 대한 액세스를 제어하는 모듈화 된 방법을 말하며, PAM은 관리자가 응용프로그램들의 사용자 인증 방법을 선택할 수 있도록 해줌

 

3. LINUX 초기 설정값

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

 

확인방법

1) “wheel” 그룹 (su 명령어 사용 그룹) 및 그룹 내 구성원 존재 여부 확인

$ cat /etc/group

 

group 중에서도 wheel 그룹의 구성원을 확인해야합니다.

wheel 그룹 구성원이 su 명령어를 사용할 수 있는 그룹입니다. 

우선 wheel 그룹에 소속된 사용자가 없습니다. 취약입니다.

 

[ec2-user@ip-172-31-8-135 etc]$ cat /etc/group
root:x:0:
bin:x:1:
daemon:x:2:
sys:x:3:
adm:x:4:ec2-user
tty:x:5:
disk:x:6:
lp:x:7:
mem:x:8:
kmem:x:9:
wheel:x:10:
(이하 생략)

 

 

 2) 허용 그룹 (su 명령어 사용 그룹) 설정 여부 확인

$ cat /etc/pam.d/su
 # 1안
 auth required pam_wheel.so debug group=wheel 
 # 2안
 auth required pam_wheel.so use_id

 

 

위의 두개 문구 중 하나가 추가되어있을 경우 양호입니다. 

현재는 둘다 추가되어있지 않습니다.

[ec2-user@ip-172-31-8-135 etc]$ cat /etc/pam.d/su
#%PAM-1.0
auth            required        pam_env.so
auth            sufficient      pam_rootok.so
# Uncomment the following line to implicitly trust users in the "wheel" group.
#auth           sufficient      pam_wheel.so trust use_uid
# Uncomment the following line to require a user to be in the "wheel" group.
#auth           required        pam_wheel.so use_uid
auth            substack        system-auth
auth            include         postlogin
account         sufficient      pam_succeed_if.so uid = 0 use_uid quiet
account         include         system-auth
password        include         system-auth
session         include         system-auth
session         include         postlogin
session         optional        pam_xauth.so

 

취약입니다.

 

 

4. 조치

조치를 해보겠습니다.

1) wheel group 생성 (wheel 그룹이 존재하지 않는 경우) -> 저는 이미 있는것을 확인했습니다.

$ groupadd wheel

 

2) su 명령어 그룹 변경

# 그룹을 wheel 그룹으로 변경합니다.
[ec2-user@ip-172-31-8-135 bin]$ sudo chgrp wheel /usr/bin/su

# wheel 그룹으로 변경되었는지 확인합니다.
[ec2-user@ip-172-31-8-135 bin]$ ll /usr/bin/su
-rwxr-xr-x. 1 root wheel 57112 Aug 22 07:48 /usr/bin/su

 

 3) su 명령어 사용권한 변경

# 권한은 4750으로 변경합니다.
[ec2-user@ip-172-31-8-135 bin]$ sudo chmod 4750 /usr/bin/su

# 변경된 권한을 확인합니다. 권한이 755 -> 4750으로 변경되었습니다.
[ec2-user@ip-172-31-8-135 bin]$ ll /usr/bin/su
-rwsr-x---. 1 root wheel 57112 Aug 22 07:48 /usr/bin/su

※ 4750의 구성

  • 4: SUID (Set User ID) 특정 프로그램이 실행될 때 소유자의 권한으로 실행되도록 허용합니다.
  • 7: 소유자(Owner) 권한 → rwx (읽기, 쓰기, 실행)
  • 5: 그룹(Group) 권한 → r-x (읽기, 실행)
  • 0: 기타 사용자(Other) 권한 → --- (쓰기, 읽기, 실행 권한 없음)

4) wheel 그룹에 su 명령 허용 계정 등록

추가할 ID : ec2-user(시스템관리자), it-mskim(시스템운영자)

# 그룹에 사용자를 명령어로 추가하는 방법
[ec2-user@ip-172-31-8-135 ~]$ sudo usermod -G wheel ec2-user

# 파일에 직접 접속하여 수정하는 방법
[ec2-user@ip-172-31-8-135 ~]$ sudo vi /etc/group
 wheel:x:10:ec2-user,it-mskim

 

 

5) /etc/pam.d/su 에서 문구 추가

auth            required        pam_wheel.so use_id

[ec2-user@ip-172-31-8-135 etc]$ vi /etc/pam.d/su
#%PAM-1.0
auth            required        pam_env.so
auth            sufficient      pam_rootok.so
# Uncomment the following line to implicitly trust users in the "wheel" group.
#auth           sufficient      pam_wheel.so trust use_uid
# Uncomment the following line to require a user to be in the "wheel" group.
# auth           required        pam_wheel.so use_uid


# 아래 문구 추가함
auth            required        pam_wheel.so use_id
(이하 생략)

 

use_id 와 use_uid가 다릅니다.

꼭 use_id로 해주세요

(uid 기준 wheel 사용자, id 기준 wheel 사용자 이냐로 다릅니다. )

 

조치 완료입니다.

 

 

5. 결과

group에 포함되지 않은 아이디를 이용하여 su 명령어를 사용해보겠습니다.

# test1 계정으로 이동합니다.
[ec2-user@ip-172-31-8-135 ~]$ su - test1
Password:
Last failed login: Wed Sep 25 16:18:21 UTC 2024 from 126.90.221.189 on ssh:notty
There were 26 failed login attempts since the last successful login.

# test1 계정은 su 명령어 사용 불가 계정입니다.
# 여기서 it-mskim으로 접속을 시도합니다.
[test1@ip-172-31-8-135 ~]$ su - it-mskim
-bash: /usr/bin/su: Permission denied

 

접속이 거부되었습니다.

 

(※ “group” 파일 구조: 부록 참조)

 

Linux를 마스터하는 그날까지

화이팅!

 

으아 리눅스 너무 어렵다....

반응형