Linux 시스템 보안 기초 · 24/50편
이 글은
리눅스 시스템 기초·파일 · 권한 · 사용자 관리·서비스 · 프로세스 관리시리즈를 선행 학습으로 두고, 동일한 개념을 보안관제(SOC) 관점에서 한 단계 확장합니다.
권한(rwx)이 '무엇을 할 수 있나'라면, 소유권은 '누구의 것인가'입니다. 소유권이 잘못되면 권한이 아무리 엄격해도 무의미해집니다 — 소유자는 언제든 권한을 바꿀 수 있으니까요. 이번 편은 소유권 이상을 보안 관점에서 봅니다.
점검해야 할 소유권 이상 유형:
위험한 웹 디렉터리 소유권
/var/www/html 소유자 = www-data (웹서버 실행 계정)
│ 웹서버가 쓰기 가능
▼
웹셸 업로드 → 소스 자기수정/추가 → 지속성
안전한 구성
/var/www/html 소유자 = deploy(배포계정), 웹서버는 읽기만
소유자는 자기 파일의 권한을 자유롭게 바꿀 수 있습니다(chmod). 따라서 소유권이 공격자/서비스 계정에게 넘어가면, 엄격한 권한도 즉시 무력화됩니다. 특히 웹의 경우, 웹서버 실행 계정(www-data/nginx)이 소스 디렉터리를 소유하면 웹셸이 자신을 복제·은닉하기 쉬워집니다.
orphan 파일(소유 UID가 passwd에 없음)은 삭제된 계정의 잔재이거나, 다른 시스템에서 tar로 옮겨진 악성 파일일 수 있어 조사 가치가 높습니다.
# orphan 파일 (소유 사용자/그룹이 존재하지 않음)
sudo find / -xdev \( -nouser -o -nogroup \) 2>/dev/null | head
# 웹 루트를 웹서버 계정이 쓸 수 있는지
sudo find /var/www -user www-data -writable -type f 2>/dev/null | head
# 특정 서비스 계정이 소유한 파일 범위
sudo find / -xdev -user svc_web 2>/dev/null | head
orphan 파일 점검 형식입니다. (예시 출력 — 삭제된 계정 UID 1099의 잔재 가정)
$ sudo find / -xdev \( -nouser -o -nogroup \) 2>/dev/null
/opt/app/tmp/cache.bin
/home/olduser/.bash_history
이 파일들의 소유 UID가 /etc/passwd에 없다는 뜻입니다. 정상적으로 계정을 지운 잔재일 수도, 외부에서 이식된 파일일 수도 있으므로 생성 시각·내용을 함께 확인합니다.
소유권과 권한은 항상 함께 봐야 정확한 접근통제 상태가 나옵니다.
chown 실행 감사(권한 이양 순간 포착)웹셸 사고 분석에서 소유권은 핵심 단서입니다. 웹서버 계정 소유 + 최근 생성 + 실행 가능한 스크립트 조합은 웹셸의 전형입니다. Wazuh FIM으로 웹 루트 변경을 감시하고, 새로 생성된 www-data 소유 스크립트를 알람으로 올립니다. orphan 파일과 이상 소유권은 침해 범위 산정(50편)에 활용합니다.
[ ] orphan 파일 스캔
[ ] 웹서버 계정의 소스 쓰기 가능 여부 점검
[ ] 서비스 계정 소유 파일 범위 확인
[ ] chown 감사 설정
다음 편에서는 25. 중요 파일 권한 점검 를 다룹니다. Part 3를 마무리하며, 반드시 점검해야 할 핵심 시스템 파일들을 한 번에 정리합니다.
본 실습은 격리된 테스트 VM(Rocky Linux / Ubuntu, VMware) 및 테스트 계정 환경을 기준으로 하며, 운영 서버를 대상으로 하지 않습니다. 실행 결과는 실제 캡처와 예시 출력을 명확히 구분해 표기합니다.