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

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

선행 학습

1. 들어가며

/etc/passwd는 '누가 이 시스템의 사용자인가'를 담은 명부입니다. 선행 시리즈에서 각 필드의 의미는 다뤘으니, 이번 편은 그 지식을 바탕으로 비정상 계정을 탐지하는 실무 기법에 집중합니다.

2. 핵심 개념

한 줄의 구조를 다시 봅니다.

username : x : UID : GID : comment : home : shell
   1       2    3     4      5        6       7

보안 분석에서 중요한 필드는 3(UID), 7(shell), 6(home) 입니다. 2번 필드 x는 실제 비밀번호가 /etc/shadow에 있다는 표식인데, 여기에 해시가 직접 들어 있으면 그 자체가 심각한 이상입니다.

점검 포인트
  ├─ 필드3(UID)  == 0 이 root 외에 있는가?
  ├─ 필드7(shell) 서비스 계정인데 /bin/bash 인가?
  ├─ 필드2       'x'가 아니라 해시가 박혀 있는가?
  └─ 전체        예상 밖의 최근 추가 계정이 있는가?

3. 동작 원리

/etc/passwd는 모든 사용자가 읽을 수 있습니다(0644). 그래서 정보 수집(enumeration)의 1차 대상이며, 공격자가 계정을 추가할 때도 이 파일을 직접 편집하는 경우가 많습니다. useradd를 쓰면 로그가 남지만, 파일을 직접 편집하면 로그가 안 남을 수 있어 파일 변경 감사가 중요합니다.

4. 명령어 실습

# 서비스 계정인데 인터랙티브 쉘을 가진 계정 (의심)
awk -F: '$3<1000 && $7 ~ /bash|sh|zsh/ {print $1, $3, $7}' /etc/passwd

# 2번 필드가 x가 아닌 계정 (해시 직박입 등 이상)
awk -F: '$2!="x" && $2!="*" && $2!="!" {print $1, $2}' /etc/passwd

# 최근 변경 시각 확인
stat -c '%n  %y' /etc/passwd

5. 실행 결과

실습 환경에서 서비스 계정 점검 결과입니다. (실제 캡처)

$ awk -F: '$3<1000 && $7 ~ /bash|sh|zsh/ {print $1, $3, $7}' /etc/passwd
(출력 없음)

$ awk -F: '$3<1000 && $7 !~ /nologin|false/ {print $1,$3,$7}' /etc/passwd | tail -3
sync 4 /bin/sync

출력이 없다는 것은 '서비스 계정 중 대화형 쉘을 가진 것이 없다'는 정상 신호입니다. 만약 svc_web 996 /bin/bash 같은 줄이 나오면, 서비스 계정이 로그인 가능하게 바뀐 것이므로 침해 의심입니다.

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

  • 정상: 서비스 계정은 nologin/false 쉘, 2번 필드는 x.
  • 악용 징후:
    • 시스템 계정에 /bin/bash 부여 (백도어 로그인)
    • comment/home 필드에 어색한 값(공격자가 급조한 계정)
    • 2번 필드에 해시 직박입 (shadow 우회 시도)

/etc/passwd는 08편의 /etc/shadow와 항상 함께 봐야 전체 그림이 나옵니다.

7. 탐지 방법

  • 대화형 쉘을 가진 시스템 계정 탐지(위 awk)
  • 파일 변경 감사: auditd -w /etc/passwd -p wa -k identity(44편)
  • 무결성 기준선: 최초 sha256sum /etc/passwd 저장 후 주기 비교

8. SOC 관점 — SIEM · Wazuh · IOC

Wazuh의 FIM(File Integrity Monitoring)은 /etc/passwd 변경을 실시간 감지해 '무엇이 추가/삭제되었는지' diff까지 보여줍니다. SIEM에서는 이 변경 이벤트를 SSH 로그인·sudo 이벤트와 상관분석해 '침입 후 계정 생성' 시나리오를 탐지합니다. 탐지된 의심 계정명은 그대로 IOC로 등록합니다.

9. 실습 체크리스트

[ ] 시스템 계정의 쉘이 nologin인지 점검
[ ] 2번 필드가 x/*/!인지 확인
[ ] passwd 최근 변경 시각 확인
[ ] 무결성 기준선(해시) 저장

10. 핵심 정리

  • /etc/passwd 분석의 핵심 필드는 UID·shell·password 표식이다.
  • 서비스 계정의 대화형 쉘은 대표적 백도어 지표다.
  • 파일 직접 편집은 useradd 로그를 남기지 않으므로 파일 감사가 필요하다.
  • passwd와 shadow는 항상 함께 분석한다.
  • FIM으로 변경을 실시간 감지하고 계정명을 IOC로 관리한다.

11. 다음 편

다음 편에서는 07. /etc/shadow 보안 분석 를 다룹니다. 실제 비밀번호 해시가 저장된 /etc/shadow를, 해시 알고리즘과 계정 잠금 관점에서 봅니다.


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

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

0개의 댓글