작업 환경

  • VMware Workstation Pro (17.6.2 ver)
  • Server 
    • Rocky_Linux(8.10 ver) : NAT
U-05 (상) 2. 파일 및 디렉토리 관리 > 2.1 root홈, 패스 디렉터리 권한 및 패스 설정
취약점 개요
점검 내용 root 계정의 PATH 환경변수에 "."이(마침표) 포함되어 있는지 점검
점검 목적 비인가자가 불법적으로 생성한 디렉터리 및 명령어를
우선으로 실행되지 않도록 설정하기 위해 환경변수 점검이 필요함
 보안 위협 root 계정의 PATH(환경변수)에 정상적인 관리자 명령어(예 : ls, mv, cp등)의 디렉터리 경로보다
현재 디렉터리를 짖칭하는 "." 표시가 우선하면 현재 디렉터리에 변조된 명령어를 삽입하여
관리자 명령어 입력 시 악의적인 기능이 실행될 수 있음
판단 기준

양호 : PATH 환경변수에 "." 이 맨 앞이나 중간에 포함되지 않은 경우
취약 : PATH 환경변수에 "." 이 맨 앞이나 중간에 포함되어 않은 경우

 

 잘못된 PATH 확인

echo "$PATH" | tr ':' '\n'

PATH가 줄마다 하나씩 출력되어 확인이 용이

echo "$PATH" ❘ tr ':' '\n' 결과

 

 

LINUX

  • Step 1) #echo $PATH 의 출력결과 확인
    • PATH 변수 내에 "." or "::" 이 맨 앞에 존재하는 경우 아래의 보안설정방법에 따라 설정을 변경

echo $PATH 결과

  • Step 2) 루트 계정의 "/etc/profile" 과 "~/.profile" 파일을 아래와 같이 수정
    • (수정 전) PATH=.:$PATH:$HOME/bin
    • (수정 후) PATH=$PATH:$HOME/bin:.

 


PATH 란?

"어디서 명령을 찾을지"를 지정하는 환경 변수

  • 사용자가 ls, cat, vi 같은 명령어를 입력시, 리눅스가 어떤 경로에 있는 실행파일인지 찾음
  • 이때 확인하는 경로 목록이 PATH에 저장되어 있음

echo $PATH 결과

위의 이러한 결과는 리눅스가 명령어를 왼쪽부터(/usr/local/bin) 오른쪽 순서로 검색하겠다는 뜻

■  HOME 란?

"사용자의 홈 디렉토리 경로"를 저장한 환경 변수

  • 로그인한 사용자의 개인 디렉토리 경로가 저장되어 있음

root의 홈 디렉토리 경로
sun 의 홈 디렉토리 경로

 

■  bin 란?

"실행파일들"이 들어있는 디렉토리

  • binary의 줄임말
  • 리눅스에서는 /bin, /usr/bin, 사용자의 $HOME/bin 같은 곳에 실행파일을 둔다
  • $HOME/bin 은 개인이 만든 명령어나 스크립트를 넣는 디렉토리로 자주 사용된다.

■  : 이란 ?

"경로를 나누는 구분자"

  • PATH=/usr/local/bin:/usr/bin:/bin 는 총 3개의 경로를 의미
  • PATH=:/usr/bin 는 PATH=.:/usr/bin 와 같은 의미

 

■  . 이란 ?

"현재 디렉토리"

  • 터미널에서 /home/sun/scripts 에 있다면, .은 그 위치를 의미
  • 명령어를 검색할 때 . 이 포함되어 있다면, 지금 있는 디렉토리에서 실행파일을 먼저 찾음

 

정리

PATH=.:$PATH:$HOME/bin

 

명령어를 찾는 순서

1. 현재 디렉토리 .

2. 원래 있던 PATH 경로들

3. 사용자 홈 디렉토리 안의 bin 폴더

 

PATH=::$PATH:$HOME/bin

 

명령어를 찾는 순서

1. 현재 디렉토리(2번)

2. 원래 있던 PATH 경로들

3. 사용자의 홈 디렉토리 안의 bin 폴더

 

 보안상 문제

1. 현재 디렉토리 . 이 가장 앞에 있으므로, 현재 경로에 ls 같은 가짜 실행파일을 넣으면, 그것이 먼저 실행된다.

    → "." , "::"을 PATH 맨 뒤로 옮겨서 보안 위험을 줄일 수 있다.

    → PATH=:$PATH:$HOME/bin:.