점검항목 설명
시스템 파일과 같은 중요한 파일에 world writable 설정이 되어 있을 경우 악의적인 사용자가 해당 파일을 마음대로 수정/삭제/추가 할 수 있게 되어 시스템 무단 접근 및 시스템 장애를 유발할 수 있기 때문에 파일을 정기적으로 점검하여 world writable 파일을 이용한 접근 및 악의적인 코드 실행을 방지해야 함
💥 world writable 파일
파일의 내용을 소유자나 그룹 외 모든 사용자에 대해 쓰기가 허용된 파일을 의미 (/u+w)
점검 기준
상태 | 내용 |
---|---|
양호 | 시스템 중요파일 world writable 파일이 존재하지 않음 (존재 시 설정 이유 확인) |
취약 | 시스템 중요 파일에 world writable 파일이 존재 함 (이유를 확인하지 않은 경우) |
점검 방법
홈 디렉토리의 world writable 파일 존재 여부 확인
$ find [각 계정의 홈디렉토리] -perm /u+w -type f -exec sh -c "ls -alL {}" \;
또는
$ find [각 계정의 홈디렉토리] -perm -2 -type f | xargs -I / ls -alh /
대응 방안
- world writable 파일 존재 여부 확인하고 불필요한 경우 제거
- 각 계정의 홈 디렉토리 world writable 파일 관리하여 운영
$ rm -rf <world-writable 파일명>
점검 스크립트 작성
- world-writable 파일을 찾고 파일 목록을 world-writable-list.txt 파일로 만드는 쉘 스크립트를 작성해보자
find-world-writable.sh
#!/bin/bash
CF='world-writable.txt'
exec 3>> "${CF}"
echo "1. world writable 파일 점검" >&3
find /home/vagrant -perm /u+w -type f -exec sh -c "ls -alL {}" \; | awk '{print $3,$9}' | column -t >&3
echo "생성된 world-writable.txt 및 보고서 파일 참조" >&3
echo "이 또한 서버 환경마다 다르기 때문에 수동적인 체크 필요" >&3
echo "다만 기본적으로 시스템에 설치되는 world writable 파일 자체가 상당히 많기 때문에 잘 확인바람" >&3
echo >&3
$ bash world-writable.sh
$ cat world-writable.txt
1. world writable 파일 점검
vagrant /home/vagrant/.bash_logout
vagrant /home/vagrant/.bash_profile
vagrant /home/vagrant/.bashrc
vagrant /home/vagrant/.ssh/authorized_keys
root /home/vagrant/calico.yaml
생성된 world-writable.txt 및 보고서 파일 참조
이 또한 서버 환경마다 다르기 때문에 수동적인 체크 필요
다만 기본적으로 시스템에 설치되는 world writable 파일 자체가 상당히 많기 때문에 잘 확인바람