021. Linux 서버 보안 — /etc 디렉터리 변경 관리

changseop lee·5일 전

시스템 보안 · 취약점 › A. Linux 서버 보안 설정 · 21/50편 (전체 021/450)
학습 단계: 2단계 · 설정 및 점검
실습 표기: 이 글의 명령어·출력·로그는 로컬 VMware 테스트 VM(Rocky Linux 9 / Ubuntu 22.04) 기준의 「실습 예시」이며, IP·계정·호스트명은 가상의 값입니다.

선행 학습

1. 개념

/etc는 계정, 인증, 서비스, 네트워크, 스케줄 설정이 모두 모인 곳입니다. 침해 후 지속성·권한 상승 흔적의 대부분이 이 디렉터리 변경으로 나타납니다.

변경 관리는 세 질문에 답하는 구조입니다.

① 무엇이 바뀌었나?      → 기준선 diff / FIM (해시·권한·소유자)
② 누가·언제 바꿨나?     → auditd (auid, 시각, 실행 프로그램)
③ 정상적인 변경인가?    → 패키지 소속(rpm -qf / dpkg -S) + 변경관리 기록

2. 왜 중요한가

  • /etc 파일은 패키지 업데이트에서도 수시로 바뀌므로 "바뀌었다"만으로는 판단할 수 없습니다. 패키지 변경과 사람에 의한 변경을 구분해야 합니다.
  • 어떤 패키지에도 속하지 않는 신규 파일(예: /etc/cron.d/의 낯선 파일)은 관리자가 만들었거나 침입자가 만든 것입니다. 둘 중 무엇인지 확인하는 것이 핵심 분석입니다.
  • 이력이 남아 있으면 사고 후 원래 값으로 정확히 복구할 수 있습니다.

3. 핵심 명령어 / 설정

도구용도비고
rpm -qf 파일 / dpkg -S 파일파일의 패키지 소속미소속이면 "not owned"
rpm -V 패키지패키지 설치 이후 변경 여부025편에서 상세
find /etc -newer 기준파일 -type f특정 시점 이후 변경 파일빠른 1차 범위 확인
etckeeper/etc를 git으로 이력 관리Rocky는 EPEL, Ubuntu는 기본 저장소
Wazuh FIM(syscheck)해시·권한·소유자 변경 탐지기본 12시간 주기, realtime 옵션

4. 실습 (실습 예시)

# 1) 최근 24시간 내 변경된 /etc 파일
sudo find /etc -xdev -type f -mtime -1 -printf '%TY-%Tm-%Td %TH:%TM %u %p\n' | sort

# 2) 패키지에 속하지 않은 파일 찾기 (Rocky 예시, 시간이 걸림)
sudo find /etc/cron.d /etc/sudoers.d /etc/profile.d /etc/systemd/system -type f \
  -exec sh -c 'rpm -qf "$1" >/dev/null 2>&1 || echo "NOT-OWNED $1"' _ {} \;
# Ubuntu: dpkg -S "$1" 로 대체

# 3) etckeeper로 이력 관리 (Ubuntu 예시)
sudo apt install -y etckeeper
sudo etckeeper vcs log --oneline | head
sudo etckeeper vcs diff

etckeeper는 패키지 설치 전후에 자동 커밋하므로, 패키지가 만든 변경과 사람이 만든 변경이 커밋 단위로 분리되어 보입니다.

5. 정상 상태

$ sudo etckeeper vcs log --oneline | head -3
a1c3f02 committing changes in /etc made by "apt install nginx"
9be1d44 daily autocommit
4f20aa1 sshd: PermitRootLogin no (CHG-2026-0915)

변경마다 패키지 명령 또는 변경관리 번호가 붙어 있어 설명 가능한 상태입니다.

6. 이상 상태

$ sudo find /etc/cron.d /etc/sudoers.d ... (생략)
NOT-OWNED /etc/cron.d/0hourly-sync
NOT-OWNED /etc/sudoers.d/99-sysupdate
$ sudo etckeeper vcs diff --stat
 cron.d/0hourly-sync     | 1 +
 sudoers.d/99-sysupdate  | 1 +
  • 정상 파일 0hourly(cronie 패키지 소속)와 이름이 비슷한 0hourly-sync가 패키지 미소속
  • 커밋되지 않은 변경(uncommitted)으로 남아 있음 → 일일 자동 커밋 이전의 최근 변경

7. 로그 분석 (분석 방법)

/etc 변경을 FIM과 auditd로 동시에 보면 "무엇"과 "누가"가 연결됩니다(가상의 예시 로그).

** Alert 1759712500.10231: - ossec,syscheck,syscheck_entry_added,
2026 Oct 01 02:15:00 (rocky9-web01) any->syscheck
Rule: 554 (level 5) -> 'File added to the system.'
File '/etc/cron.d/0hourly-sync' added
Mode: realtime

type=SYSCALL msg=audit(1759712500.002:960): syscall=257 success=yes auid=1002 uid=0 comm="cp" exe="/usr/bin/cp" key="cron_change"
type=PATH msg=audit(1759712500.002:960): item=1 name="/etc/cron.d/0hourly-sync" nametype=CREATE
출처알려주는 것
Wazuh 554파일 추가 사실, 해시, 감지 방식(realtime)
auditd생성 프로그램(cp), 사용자(auid=1002), 정확한 시각

FIM의 Mode: scheduled라면 변경 시각이 아니라 스캔 시각이므로, 정확한 시간은 auditd로 확인해야 합니다.

8. SOC 관제 포인트

  • /etc 전체를 FIM으로 보되, 핵심 하위 디렉터리(cron*, sudoers.d, ssh, systemd/system, profile.d, pam.d)는 realtime으로 설정합니다.
  • 패키지 미소속 신규 파일은 우선 분석 대상입니다.
  • dnf/apt 로그 시간과 겹치는 변경은 정상 가능성을 먼저 검토합니다.

9. 탐지 규칙

<!-- agent ossec.conf: 핵심 디렉터리 실시간 FIM -->
<syscheck>
  <directories realtime="yes" check_all="yes" report_changes="yes">/etc/ssh,/etc/sudoers.d,/etc/cron.d,/etc/pam.d,/etc/profile.d,/etc/systemd/system</directories>
</syscheck>

report_changes="yes"는 텍스트 파일의 변경 내용(diff) 을 Alert에 포함합니다. 비밀번호 등 민감정보가 들어갈 수 있는 파일은 <nodiff>로 제외합니다.

10. 대응 방법

  1. 초기 확인 — 변경 파일 목록과 패키지 소속 여부, 변경 시각을 확인합니다.
  2. 범위 확인 — 같은 시각 다른 /etc 하위 디렉터리와 다른 서버의 동일 파일을 확인합니다.
  3. 증거 확보 — 변경 파일 사본, etckeeper diff, FIM/audit 로그를 보존합니다.
  4. 차단/조치 — 비인가 파일을 격리하고 etckeeper 이력 또는 패키지 기본값으로 복원합니다.
  5. 재발 방지 — 핵심 디렉터리 realtime FIM과 etckeeper 커밋 규칙(변경관리 번호 기재)을 적용합니다.

11. 핵심 정리

질문확인 수단
무엇이 바뀌었나기준선 diff, Wazuh FIM(550/553/554)
누가·언제auditd(auid, comm, 시각)
정상인가rpm -qf/dpkg -S + 변경관리 기록
이력·복구etckeeper(git)
면접 포인트"패키지 미소속 신규 파일이 1순위 분석 대상"

12. 다음 편 예고

다음 편 022. Linux 서버 보안 — 커널 보안 파라미터(sysctl) 하드닝 에서는 커널 동작을 조정하는 보안 관련 sysctl 파라미터를 점검합니다.


이전 편: 020. Linux 서버 보안 — /var/tmp·/dev/shm 보안 점검
📚 시리즈 전체 보기: 시스템 보안 · 취약점

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

0개의 댓글