본문 바로가기

정보보안기사 실기

정보보안기사 _ 8일차 _ Unix/Linux 서버 취약점 _ 파일 및 디렉터리 관리

1. root 홈, 패스 디렉터리 권한 및 패스 설정

   root 계정의 PATH 환경변수에 "."(현재 디렉터리 지칭)이 포함되어 있으면 root계정으로 접속한 관리자가 의도하지 않은 현재 디렉터리에 위치하고 있는 명령어가 실행될 수 있다..고?? 즉, "."이 /usr/bin, /bin, /sbin 등 명령어들이 위치하고 있는 디렉터리보다 우선하여 위치하고 있을 경우, root 계정으로 접속한 관리자가 특정 명령을 실행하면, 불법적으로 현재 디렉터리에 위치시킨 파일을 실행하여 예기치 않은 결과를 가져올 수 있다.

환경변수가 순서대로 실행되나보다

 

 실습(Linux)

   root 의 $PATH 경로의 맨 앞에 "." 추가

   vi .bash_profile 열어서 수정하면 됨

   PATH=.:$PATH 이렇게 하고나서 echo $PATH 라고 하면 그 값들이 나오고 . 이 맨 앞이다

  * 환경변수 설정 이유 : 명령 등이 속해 있는 디렉터리를 환경 변수 $PATH에 등록함으로써 사용하고자 하는 명령 등을 전체 경로를 적거나 혹은 해당 디렉터리에 들어가 실행하는 번거로움을 없애 작업 생산성을 높이기 위함입니다.
출처: https://wnw1005.tistory.com/264 [씨실과 날실 - IT]

 

근데 . 있다고 홈에서 시작된다니 참 무슨말이여

무튼 저렇게 되면 루트 홈 디렉터리에 공격자에 의해 조작된 프로그램이 위치하고

(원래는 /bin 이나 /sbin에 있어야 하는데 같은 이름의 프로그램을 홈에 만들어놓는거지)

그러면 악성코드가 실행됨. 심지어 원래 입력한 명령어는 그대로 작동시키면서 백그라운드로 작동할 수 있는거

 

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

 소유자/소유그룹이 존재하지 않는 파일 및 디렉터리는 현재 없는 사용자의 소유였거나 관리 소홀로 생긴 파일

 사용하지 않는 디렉터리 파일로 인해 시스템 자원 낭비가 되고 중요파일/디렉터리인 경우 관리가 안되는 문제있음

 찾는 방법은 사용자를 userdel 로 삭제 하고 나면 algisa1 kiwi 이런 사용자 명이나 그룹명이 UID GID로만 표기됨

 그래서 나는 숫자만 있는 애들을 찾기로 생각했는데 그거말고 다른 방법이 있네

 find . \(-nouser -o -nogroup) \) -exec ls -al {} \;

 find 현재 디렉터리에서 사용자나 그룹이 없는 파일들을 찾아서 ls -al로 표시해라

 명령어 뭐게?

 

3. world writable 파일 점검

 모든 사용자에게 쓰기 권한이 부여되어있는 파일이 world writable 파일임

 모든 사용자가 접근 및 수정할 수 있는 권한으로 설정된 파일이 존재할 경우 일반 사용자의 실수 또는 악의적으로 주요 파일 정보를 변경할 수 있기 때문에 시스템 장애나 추가적인 공격에 활용될 수 있는 문제 있음

  find /TEST -perm -2 -exec ls -al {} \; (others 에 쓰기권한이 부여된 파일 및 디렉터리 검색)

  find /TEST -perm -0002 exec ls -al {} \; (이건 무슨 뜻일까? 모든 사용자가 기록할 수 있는 파일?)

 

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

  /etc/passwd : root 소유 644 이하

  /etc/shadow : root 소유 400 이하

  /etc/hosts : IP와 호스트 이름을 매핑하는데 사용하는 파일 / root 소유 600 이하

  /etc/(x)inetd.conf : root 소유 / 644이하

  /etc/services : root 소유 / 644 이하