1. 계정관리
1 - 1. Root 계정 원격접속 제한 * KISA 다운로드 링크 포함
2. 파일 및 디렉토리 관리
2 - 1. root 홈, 패스 디렉터리 권한 및 패스 설정
2 - 3 ~ 8. /etc 하위 디렉토리 파일 소유자 및 권한 설정
2 - 9. SUID, SGID, 설정 파일 점검 (현재글)
가. SUID, SGID, 설정 파일 점검
* SUID : 특정 작업 수행을 위해 일시적으로 파일 소유자의 권한을 얻게됨.
* SGID : 특정 작업 수행을 위해 일시적으로 파일 소유 그룹의 권한을 얻게됨.
1) 파일 중 SUID나 SGID가 있는 파일 탐색
# find / -user root -type f \( -perm -04000 -o -perm -02000 \) -xdev -exec ls –al {} \; 위의 명령어를 뜯어보자.
|
아래는 실행된 결과의 마지막 부분만 가져온 것이다.
마지막 /usr/libexec/spice-gtk-x86_64/spice-client-glib-usb-acl-helper 라는 파일이 보인다.
해당 파일은 쉽게 설명하면, SPICE 프로토콜을 사용하여 USB를 가상머신에 연결할때 사용되는 파일이다.
즉, 아무 문제없다.
만일 KISA 가이드의 부록에 참고되어있지 않은 불필요한 SUID/SGID의 목록이
위의 명령어를 실행시켰을 때 존재한다면
chmod -s 파일 이름 |
위의 명령어를 사용하여 SUID와 SGID를 제거하여 해당 파일의 소유자나 그룹이 임의로 실행하는 것을 방지하자.
만약 반드시 해당 파일 및 디렉토리의 사용이 필요하다면
#/usr/bin/chgrp <group_name> <setuid_file_name> #/usr/bin/chmod 4750 <setuid_file_name> |
위와 같이 설정하여 특정 그룹에서만 사용하도록 제한하여야한다.
아래는 SUID를 이용한 악용방법에 대한 예시이다.
# mkdir /hack - 테스트할 디렉터리를 생성한다. 이름은 상관없다. # cd /hack - 생성한 디렉터리로 이동 # vi hack.c - 테스트할 파일 생성, 아래의 내용을 입력한다. |
#include main() { setuid(0); setgid(0); system("/bin/bash"); } |
# gcc -o hack hack.c - hack.c를 hack 이라는 이름으로 컴파일한다. # chmod 4755 hack - hack 파일의 권한 수정 |
테스트를 위해 유저계정으로 접속 후 만들어놨던 파일을 실행시켜 root권한을 획득하였다. 본래라면 pw 알아낸 후 입력하여 권한을 취득하여야 한다. |
위와 같은 취약한 파일 및 디렉터리는 필요하지 않다면 삭제 혹은 권한을 제거하도록하자 |
간단한 예시이지만, 위와 같이 필요 이상의 SUID, SGID가 부여되어 있다면
흔히 사용하는 more, cat 등의 명령에 root의 권한을 부여하여 일반 사용자는 볼 수 없는
/etc/shadow 파일에 접근하는 등의 악용이 가능하다.
'공부 > 리눅스' 카테고리의 다른 글
2-14. 리눅스 취약점 조치(파일 및 디렉토리 관리) - 접속 IP 및 포트 제한 (0) | 2024.01.31 |
---|---|
2-10~13. 리눅스 취약점 조치(파일 및 디렉토리 관리) - 시작 및 환경 파일 등 점검 (0) | 2024.01.31 |
2-3 ~ 8. 리눅스 취약점 조치(파일 및 디렉토리 관리) - /etc 하위 디렉토리 파일 소유자 및 권한 설정 (2) | 2024.01.30 |
2-2. 리눅스 취약점 조치(파일 및 디렉토리 관리) - 파일 및 디렉토리 소유자 설정 (0) | 2024.01.29 |
2-1. 리눅스 취약점 조치(파일 및 디렉토리 관리) - root 홈, 패스 디렉터리 권한 및 패스 설정 (2) | 2024.01.29 |