Linux 시스템 보안 기초 · 20/50편
이 글은
리눅스 시스템 기초·파일 · 권한 · 사용자 관리·서비스 · 프로세스 관리시리즈를 선행 학습으로 두고, 동일한 개념을 보안관제(SOC) 관점에서 한 단계 확장합니다.
/tmp는 누구나 쓸 수 있는(world-writable) 디렉터리인데도 왜 서로의 파일을 함부로 지우지 못할까요? 그 답이 Sticky Bit입니다. 17편에서 world-writable을 다뤘으니, 이번 편은 그것을 안전하게 만드는 장치를 봅니다.
Sticky Bit(8진수 1000, 디렉터리 권한 끝에 t)가 디렉터리에 붙으면, 그 안의 파일은 파일 소유자·디렉터리 소유자·root만 삭제/이름변경할 수 있습니다. world-writable이라도 남의 파일을 지우지 못하게 막는 것이 핵심입니다.
대표 예: /tmp, /var/tmp, /dev/shm — 모두 drwxrwxrwt(1777)입니다.
Sticky 없는 world-writable /shared (rwxrwxrwx)
alice가 만든 파일 ──bob이 삭제 가능──> 데이터 파괴/교체 위험
Sticky 있는 /tmp (rwxrwxrwt)
alice가 만든 파일 ──bob 삭제 불가──> 소유자/root만 삭제
디렉터리에 w가 있으면 원래 그 안의 모든 파일을 삭제할 수 있습니다(16편). Sticky Bit는 이 규칙에 예외를 걸어 '삭제는 소유자만'으로 제한합니다. 그래서 공유 임시 디렉터리에서 사용자 간 파일 파괴·교체를 막습니다.
Sticky가 빠진 world-writable 디렉터리는 위험합니다: 공격자가 다른 사용자의 파일을 자신의 악성 파일로 교체(예: 실행 예정 스크립트 스와핑)할 수 있기 때문입니다.
# Sticky Bit 확인 (끝의 t)
ls -ld /tmp /var/tmp /dev/shm
# Sticky 없는 world-writable 디렉터리 탐지 (위험)
sudo find / -xdev -type d -perm -0002 ! -perm -1000 2>/dev/null
# Sticky Bit 부여
sudo chmod +t /shared
실습 컨테이너 실제 실행 결과입니다. (실제 캡처)
$ ls -ld /tmp
drwxrwxrwt 1 root root ... /tmp
권한 끝의 t가 Sticky Bit입니다. 만약 drwxrwxrwx(t 없음)로 보이면, 그 디렉터리는 사용자 간 파일 삭제/교체가 가능하므로 chmod +t로 보호해야 합니다.
/tmp 등 공용 임시 디렉터리는 Sticky Bit(1777).17편의 world-writable 점검과 결합해, '쓰기 가능 + Sticky 없음' 조합을 우선순위로 조사합니다.
Sticky Bit 누락은 Wazuh SCA의 CIS 점검 항목입니다. 단독으로는 저위험이지만, 임시 디렉터리에서의 파일 교체는 권한 상승 체인의 한 고리가 될 수 있어, SIEM에서는 /tmp 등에서의 의심 실행(27·32편)과 결합해 분석합니다.
[ ] /tmp 등 공용 디렉터리의 t 비트 확인
[ ] Sticky 없는 world-writable 디렉터리 탐지
[ ] 필요 디렉터리에 +t 부여
[ ] Sticky 제거 이벤트 감사
다음 편에서는 21. ACL 보안 를 다룹니다. rwx보다 세밀한 권한 제어인 ACL과, ACL로 숨긴 권한을 탐지하는 법을 봅니다.
본 실습은 격리된 테스트 VM(Rocky Linux / Ubuntu, VMware) 및 테스트 계정 환경을 기준으로 하며, 운영 서버를 대상으로 하지 않습니다. 실행 결과는 실제 캡처와 예시 출력을 명확히 구분해 표기합니다.