본문 바로가기
취약점 점검/리눅스 서버

U-05) root 홈, 패스 디렉터리 권한 및 패스 설정

by _Jay_ 2022. 8. 12.
반응형

 

 

지난번까지는 리눅스 서버의 계정 관리 부분에 대한 점검 항목을 알아봤다면, 오늘부터는 파일 및 디렉토리 관리 부분을 다뤄보도록 하겠습니다. 그전까지는 설정 파일에 특정 옵션이나 값이 정상적으로 있는지를 보는 항목들이었죠.

 

이번 항목부터는 설정 파일의 권한이나 소유자가 잘 설정되어 있는지 확인하는 내용들이 많은데요. 이번 글에서 설명드릴 내용은 "root 홈, 패스 디렉터리 권한 및 패스 설정"으로 비인가자가 환경 변수 조작을 통해서 악의적인 기능을 실행시키지 못하도록 점검하는 항목입니다.

 

 

해당 점검 항목을 보시기 전에 먼저 PATH 환경변수라는 것이 무엇인지 알아야할텐데요. 가끔 윈도우에 파이썬이나 자바 JDK를 설치하고 커맨드 창에서 해당 프로그램을 실행하면, 실행파일이 어디있는지 찾지 못해서 에러가 발생하는 경우가 있으셨을 겁니다.

 

그럴 때마다 시스템의 환경변수 편집 창에서 PATH 변수에 프로그램 위치를 추가해서 해결하셨을텐데, 여기서 PATH 환경변수실행파일의 위치를 찾아주는 경로에 대한 변수라고 생각하시면 됩니다. 리눅스에서도 윈도우와 마찬가지로 이와 같은 설정파일이 /etc/profile에 존재하시는 것을 볼 수 있습니다.

 

root@kali:~# which ls
/usr/bin/ls
root@kali:~# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

 

일반적으로 리눅스에서 많이 사용하는 ls라는 명령어는 /usr/bin 디렉토리 밑에 실행파일이 존재합니다. 만약 /etc/profile의 환경변수에 /usr/bin 경로가 추가되어 있지 않는다면 ls 실행파일의 위치를 찾지 못해 명령어를 실행할 수 없겠죠.

 

여기서 "echo $PATH" 명령어로 PATH 환경변수를 확인할 수 있는데, 콜론을 기준으로 여러 경로가 출력되는 것을 볼 수 있습니다. 그래서 리눅스 명령어를 입력할 때 PATH 환경변수에 있는 디렉토리에 해당 실행파일이 있는지 순차적으로 디렉토리를 검색해서 해당 파일이 있다면 실행시키죠.

​그런데 해커가 root 계정으로 홈 디렉토리에 관리자의 행위를 모니터링 하기 위한 악성코드를 ls라는 이름으로 생성했다고 생각해보겠습니다. 이때 현재 디렉토리를 의미하는 '.'를 PATH 환경변수의 맨 앞에 추가하게 되면, 관리자가 root로 접속하여 홈 디렉토리에서 ls를 입력했을 때 /usr/bin 디렉토리의 ls가 아닌 현재 디렉토리에 있는 ls를 실행하게 되겠죠.

 

물론 현재 디렉토리가 아닌 악성코드가 존재하는 특정 디렉토리 위치를 추가하여 실행할 수도 있기에 PATH 환경변수에 "."만 확인하기 보다, 일반적인 경로가 아닌 디렉토리를 전체적으로 확인해야 합니다.

 

root@kali:~# echo $PATH | grep -E ".:|:.:|::" | wc -l
0

 

점검 방법은 일단 주통기 점검 가이드에 나와있는 방법에 따라 진단 스크립트에 들어갈 명령어를 구성했는데, 간단히 설명하면 PATH 환경변수에 현재 디렉토리가 처음이나 중간에 포함되어 있는지 확인합니다. "::" 또한 현재 디렉토리를 의미하기 때문에 3가지 경로를 확인하도록 했는데요.

 

실행 결과가 1이라면 PATH 환경변수에 현재 디렉토리가 포함되어 있기 때문에 취약하다고 보시면 되겠죠. 이에 대한 조치 방법은 /etc/profile이나 쉘에 따라 참조되는 환경 설정파일에서 PATH 환경변수의 경로 중 현재 디렉토리를 맨 마지막에 위치시키거나 삭제해주시면 됩니다.

 

그런데 사실 해커가 꼭 현재 디렉토리에 악성 파일을 넣어 놓지는 않기 때문에, 현재 디렉토리 경로만 검사하는 것은 어느 정도 한계가 존재합니다. 일단 가이드에 나와있는 대로 설명은 드렸지만, PATH 환경 변수를 출력해서 보기에 의심스러운 경로가 있다면 담당자에게 이야기 해보는 등 유연하게 대응하는 것도 좋을 것 같습니다. 그럼 오늘은 여기까지 말씀드리고 다음 글에서 뵙도록 하죠. 감사합니다.

 

 

반응형

댓글