본문 바로가기

정보보안/시스템 보안

[시스템 취약점] 파일 및 디렉터리 관리

UNIX/Linux 파일 및 디렉터리 관리

 

① root 홈, 패스 디렉터리 권한 및 PATH 설정

- root 계정의 PATH 환경변수에 '.'(현재 디렉터리 지칭)이 포함되어 있으면 root 계정으로 접속한 관리자가 의도하지 않은 현재 디렉터리에 있는 관리자 명령어가 실행될 수 있다.
- 즉, '.'이 /usr/bin, /bin, /sbin 등 관리자 명령어들이 있는 디렉터리보다 우선하여 PATH 환경변수에 있으면 현재 디렉터리에 변조된 관리자 명령어를 악의적으로 삽입하여 명령어 입력 시 변조된 명령어가 실행될 수 있다.

더보기

+ [시스템에서 사용자가 명령 실행 시 명령어를 찾는 절차]
(1) PATH 환경변수에 설정된 경로에 따라 순서대로 명령어를 찾음
(2) 명령어가 있으면 실행 권한 확인
(3) 실행 권한이 있다면, 명령어를 실행시킨 사용자 ID(UID)로 명령어 실행
(4) 실행파일에 setuid/setgid가 설정되어있다면 소유주/소유그룹 권한으로 명령어 실행

[문제상황]
(1) root 계정의 PATH 환경변수에 '.' 경로를 맨 앞에 추가
# root 계정의 PATH 환경분수에 '.' 경로를 맨 앞에 추가
#'/etc/profile 또는 root 홈디렉토리에 있는 '.bash_profile' 설정파일에서 설정

cat /root/.bash_profile

PATH =.:$PATH # root 계정의 PATH 환경분수에 '.' 경로를 맨 앞에 추가​

(2) 환경 설정 파일을 다시 로드한 후 echo 명령을 통해 PATH 경로의 맨 앞에 '.' 경로가 추가된 것을 확인한다.

. .bash_profile # 환경설정파일 로드
echo $PATH # PATH 환경변수 확인
.:/usr/lib........:..... # 구분자는 ':' 이며,'.'가 맨 앞에 있으므로 관리자 명령어 실행 시 현재 디렉터리부터 찾는다.​

(3) 변조된 명령어(ps 명령어) 실행

ls - l /root/ps # 공격자에 의해 조작된 ps명령어가 root 홈디렉터리에 위치
-rwxr-xr-x 1 root root 5209 2024-02-05 16:12

which ps # 지정한 명령어의 위치를 찾아주는 명령어
./ps # 현재 디렉터리에 공격자가 변조한 명령어 존재

ps # 명령 실행 시, 변조된 명령어 실행됨
PID		TTY		TIME		CMD
14014	pts/0	00:00:00	bash
14014	pts/1	00:00:00	ps
변조된 명령어가 실행 되었습니다.
[보안설정]
- Root 계정의 환경설정파일에서 PATH 환경변수를 확인하여 경로 맨 앞 또는 중간에 '.'이 포함되어 있으면 맨 뒤로 이동시키거나 불필요한 경우 삭제한다.
- Shell에 따라 참조되는 파일
/bin/sh /etc/profile, $HOME/.profile
/bin/bash /etc/profile, $HOME/.bash_profile
/bin/ksh /etc/profile, $HOME/.profile, $HOME/.kshrc
/bin/csh /etc/.login, $HOME/.cshrc, $HOME/.login

 

② 파일 및 디렉터리 소유자/소유그룹 설정

- 소유자나 소유그룹이 존재하지 않는 파일이나 디렉터리가 있는 이유 ->  관리소홀,삭제된 사용자 계정,그룹 소유 파일

- 소유자나 소유그룹이 존재하지 않는 파일의 UID,GID로 악의적인 사용자의 ID 를 설정하면 해당 권한을 이용해 악용될 우려가 있음

[보안설정]
(1) 소유자나 소유그룹이 존재하지 않는 파일,디렉터리 검색
find / \(-nouser -o -nogroup\) -exc ls -al {};

-rw-r--r--  1 1001 1001 4096 Nov 11 12:34 /var/tmp/orphaned_file.txt
drwxr-xr-x  2 1002 1002 4096 Nov 10 10:20 /home/old_user/unowned_directory
-rwxr-xr-x  1 1003 1003 2048 Nov 9 08:15 /usr​

(2) 해당 파일 삭제 또는 소유자,소유그룹 변경

 rm -f [파일명] #해당 파일 삭제 
 chown alice [파일명] #해당 파일의 소유자 변경
 chgrp group [파일명] #해당 파일의 소유그룹 변경

 

③ world writable 파일 점검

- World writable 파일: 모든 사용자(others) 에 대해 쓰기(w) 권한이 허용된 파일

- 비인가자에 의해 악의적으로 파일이 변경될 수 있음.

(1) world writable 파일 검색
find . -type f -perm -2 -exec ls -al {} \; # -perm 2 = -perm 002, 22 = 022

(2) 불필요할 경우 삭제
rm - f [파일명]

(3) 필요한 경우 쓰기권한 제거
chmod o-w [파일명]

 

④ 주요 파일 소유자 및 권한 설정

(1) /etc/passwd 파일
- 사용자의 계정 정보 저장파일
- (권장 설정) Root 소유의 644 이하 권한 설정
- (조치 방법) chown root /etc/passwd, chmod 644 /etc/passwd

(2) /etc/shadow 파일
- 사용자의 암호화된 패스워드정보 저장파일
- (권장 설정) Root 소유의 400 이하 권한 설정

(3) /etc/hosts 파일
- Ip 주소에 대한 호스트명(도메인명 정보 저장 파일)
- (권장 설정) Root 소유의 600 이하 권한 설정

(4) /etc/inetd.conf, /etc/xinetd.conf 파일
- Inted 및 xinetd 슈퍼 데몬 설정 파일
- (권장 설정) root 소유의 600 이하 권한 설정

(5) /etc/syslog.conf, /etc/rsyslog.conf
- syslogd 및 rsyslogd 데몬 설정 파일, 주요 서비스별 로그파일에 대한 설정 정보
- (권장 설정) root 소유 (또는 bin,sys 등의 시스템 계정) 의 640 이하 권한 설정

(6) /etc/services 파일
- 서비스 관리정보(서비스별 프로토콜 및 포트 번호 정보)
- (권장 설정) 비인가자가 서비스 운영 포트를 변경하여 정상적인 서비스를 제한하거나 허용하지 않는 포트를 등록하여 악성 서비스를 실행할 수 있으므로 Root 소유의 644 이하 권한 설정