Linux 시스템 보안 기초 · 21/50편

이 글은 리눅스 시스템 기초 · 파일 · 권한 · 사용자 관리 · 서비스 · 프로세스 관리 시리즈를 선행 학습으로 두고, 동일한 개념을 보안관제(SOC) 관점에서 한 단계 확장합니다.

선행 학습

1. 들어가며

기본 rwx는 소유자·그룹·기타 딱 세 주체만 구분합니다. '특정 사용자 한 명에게만 읽기 허용' 같은 세밀한 제어는 ACL(Access Control List) 로 합니다. 문제는, ACL로 부여된 권한은 ls -l에 잘 드러나지 않아 '숨은 권한'이 될 수 있다는 점입니다.

2. 핵심 개념

ACL은 파일마다 '추가 접근 규칙 목록'을 붙입니다.

  • getfacl: ACL 조회
  • setfacl -m u:bob:rw file: bob에게 rw 부여
  • mask: ACL로 부여 가능한 최대 권한 상한

핵심: ACL이 걸린 파일은 ls -l의 권한 끝에 + 가 붙습니다. 이 +를 놓치면 실제 접근 가능자를 오판합니다.

ls -l 로 본 권한:  -rw-r-----+   ← 끝의 '+' 가 ACL 존재 표시
                            │
                            ▼
getfacl 로 실제 규칙 확인:
  user::rw-
  user:bob:rw-   ← rwx엔 안 보이던 'bob의 쓰기 권한'
  group::r--
  mask::rw-

3. 동작 원리

커널의 권한 검사는 ACL이 있으면 기본 rwx 대신 ACL 항목을 참조합니다. mask는 그룹·명명 사용자 항목의 유효 권한 상한을 정합니다(mask가 r--면 u:bob:rw여도 실제로는 r--만 유효).

보안 관점의 핵심: 공격자가 setfacl로 자신에게 은밀히 권한을 부여하면, 소유자·그룹은 그대로라 ls -l만 보는 관리자는 눈치채기 어렵습니다. 그래서 + 표시와 getfacl 점검이 중요합니다.

4. 명령어 실습

# ACL이 걸린 파일 찾기 (권한 끝 + 표시)
ls -l /path | grep '+'

# 특정 파일의 ACL 전체 규칙 확인
getfacl secret.txt

# 재귀적으로 명명 사용자 ACL 탐지
sudo getfacl -R -s /etc /home 2>/dev/null | grep -E '^# file|^user:[^:]'

5. 실행 결과

실습 환경에서 setfacl로 bob에게 권한을 준 뒤 getfacl 실제 결과입니다. (실제 캡처)

$ getfacl secret.txt
# file: secret.txt
# owner: root
# group: root
user::rw-
user:bob:rw-
group::r--
mask::rw-
other::r--

user:bob:rw- 라인이 ACL로 추가된 권한입니다. ls -l에는 root root만 보이지만 실제로는 bob도 쓸 수 있습니다. 이런 '숨은 쓰기 권한'이 민감 파일에 있으면 곧 조사 대상입니다.

6. 보안 관점 — 정상 사용 vs 악용

  • 정상: 협업을 위해 의도적으로 부여한, 문서화된 ACL.
  • 악용 징후:
    • 민감 파일에 명명 사용자 ACL이 은밀히 추가됨
    • mask가 과도하게 열림
    • ls -l상 권한은 엄격한데 +로 실제 접근자가 늘어남

ACL은 정당한 도구지만, 공격자에게는 '눈에 안 띄는 권한 부여' 수단이 됩니다.

7. 탐지 방법

  • ls -l의 + 표시 스캔 후 getfacl 정밀 확인
  • 민감 경로의 명명 사용자 ACL 기준선 비교
  • setfacl 실행 감사(auditd execve)

8. SOC 관점 — SIEM · Wazuh · IOC

ACL 변경은 rwx 변경보다 탐지가 어려워, auditd로 setfacl 실행과 setxattr syscall을 감사하는 것이 효과적입니다. Wazuh FIM은 확장 속성(xattr) 변경까지 감지하도록 설정할 수 있어, 민감 파일의 은밀한 ACL 부여를 잡아냅니다. 발견 시 부여 대상 사용자를 조사 포인트로 삼습니다.

9. 실습 체크리스트

[ ] ls -l의 + 표시로 ACL 파일 식별
[ ] getfacl로 명명 사용자 권한 확인
[ ] mask 상한 점검
[ ] setfacl/setxattr 감사 설정

10. 핵심 정리

  • ACL은 rwx보다 세밀한 사용자별 권한을 부여한다.
  • ACL이 걸린 파일은 ls -l 권한 끝에 +가 붙는다.
  • mask는 명명 항목의 유효 권한 상한이다.
  • 은밀한 ACL 부여는 눈에 띄지 않는 권한 상승 수단이다.
  • setfacl/setxattr 감사로 ACL 변경을 탐지한다.

11. 다음 편

다음 편에서는 22. Linux Capabilities 이해 를 다룹니다. root의 전체 권한을 잘게 쪼갠 Linux Capabilities의 개념을 봅니다.


본 실습은 격리된 테스트 VM(Rocky Linux / Ubuntu, VMware) 및 테스트 계정 환경을 기준으로 하며, 운영 서버를 대상으로 하지 않습니다. 실행 결과는 실제 캡처와 예시 출력을 명확히 구분해 표기합니다.

profile
코드에 숨겨진 위협을 읽고 AI로 보안의 미래를 설계합니다. 프론트엔드 개발 경험을 자산 삼아 더 견고하고 지능적인 보안 운영 시스템을 구축해 나가는 과정을 기록합니다

0개의 댓글