Profile picture

[리눅스 보안취약점 관리] world writable 파일 점검

JaehyoJJAng2023년 05월 15일

점검항목 설명

시스템 파일과 같은 중요한 파일에 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 파일 자체가 상당히 많기 때문에 잘 확인바람

Loading script...