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

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

선행 학습

1. 들어가며

50편의 마지막입니다. 지금까지 배운 모든 것 — 계정·권한·프로세스·네트워크·로그·감사·탐지·대응 — 을 하나의 가상 침해사고에 적용해, Evidence → Analysis → Detection → Response 관점으로 종합 실습합니다. 단순 공격 재현이 아니라, 분석가의 시선으로 사건을 풀어냅니다.

2. 핵심 개념

가상 시나리오의 전체 공격 흐름:

① SSH Brute Force → ② 계정 탈취 → ③ 로그인 성공 → ④ sudo 권한 상승
  → ⑤ 악성 파일 생성 → ⑥ Cron 지속성 → ⑦ 외부 IP 통신 → ⑧ 로그 발생
  → ⑨ IOC 수집 → ⑩ SOC 탐지 → ⑪ 분석 → ⑫ 초동 대응

①~⑦은 공격자의 행위, ⑧~⑫는 방어자의 대응입니다. 실습의 핵심은 ⑧부터 — 남은 증거로 ①~⑦을 역추적하는 것입니다.

Attack (①~⑦)
   ↓
Evidence   ── auth.log, audit.log, ss, /proc, cron (증거 원천)
   ↓
Collection ── 초동 대응 스냅샷(48편), 증거 보존
   ↓
Analysis   ── 타임라인 재구성(46편), 인과 복원
   ↓
IOC        ── 지표 수집(47편): IP/Hash/Account/Port/Command
   ↓
Detection  ── 탐지 룰/상관분석(49편)
   ↓
Response   ── 격리·차단·제거·복구, 재발 방지

3. 동작 원리

분석의 순서는 공격의 역순입니다. 방어자는 ⑧(로그 발생)에서 출발해, 증거를 모으고(Collection), 시간축에 정렬해(Analysis) 공격 흐름 ①~⑦을 복원합니다. 그 과정에서 IOC를 뽑고(⑨), 탐지로 전환하며(⑩⑪), 대응(⑫)으로 마무리합니다.

이 실습은 반드시 격리된 테스트 VM에서 수행합니다. 사용자의 실습 인프라(Kali=공격자, Ubuntu=IDS, Rocky=서버, Suricata+ELK/Wazuh)가 이상적입니다. 공격 재현(①~⑦)은 테스트 계정·테스트 네트워크로만 하고, 운영 자산을 절대 대상으로 삼지 않습니다.

4. 명령어 실습

# === 방어자 종합 분석 스크립트 (조사용, 읽기 위주) ===
TS=$(date +%F_%H%M%S); D=/root/case_$TS; mkdir -p "$D"
# Evidence & Collection
ps -eo pid,ppid,user,euser,lstart,args > "$D/ps.txt"
sudo ss -tanp > "$D/net.txt"; sudo ls -l /proc/*/exe 2>/dev/null | grep -Ei 'deleted|/tmp|/dev/shm' > "$D/susp_exe.txt"
# Analysis (타임라인 재료)
sudo grep -E 'Failed|Accepted|Invalid' /var/log/auth.log > "$D/ssh_auth.txt"
sudo ausearch -k account_mgmt -k priv_config -k cron_persist -i 2>/dev/null > "$D/audit_key.txt"
# IOC
awk '/Accepted|Failed/{for(i=1;i<=NF;i++)if($i=="from")print $(i+1)}' "$D/ssh_auth.txt" | sort -u > "$D/ioc_ip.txt"
echo "case saved to $D"

5. 실행 결과

종합 실습 산출물과 분석 결론의 형태입니다. (예시 출력 — 사건 재구성 결과)

[사건 요약 - case_2026-09-25]
1. 침입:  203.0.113.10 → SSH brute force(실패 312) → alice 계정 탈취(14:05)
2. 상승:  alice → sudo → root (14:06)
3. 지속:  useradd hacker(14:07), cron */5 재접속, /tmp/.x 생성
4. 통신:  /tmp/.x → 203.0.113.10:4444 (C2, 14:09)

[IOC] IP 203.0.113.10 / Port 4444 / Account hacker / File /tmp/.x
[대응] ① 증거 스냅샷 보존 ② outbound 차단 ③ 계정·cron·바이너리 제거
       ④ SSH 하드닝(키인증) ⑤ IOC 전사 배포 ⑥ 원인=약한 비밀번호+password 인증

이것이 50편 시리즈가 목표한 결과물입니다 — 리눅스 이벤트를 증거로 보존하고, 분석해 타임라인을 만들고, IOC로 탐지·대응하는 전 과정. 단순히 '명령어를 안다'가 아니라 '보안관제 관점으로 사건을 해석한다'는 역량입니다.

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

  • 실습 원칙: 격리 VM, 테스트 계정·네트워크에서만 공격 재현. 운영 자산 금지.
  • 분석 원칙: 증거 보존 우선, 원본 미변경, 모든 결론은 로그 근거 제시.
  • 대응 원칙: 중첩 지속성 전제(35편) — 전수 점검 후 동시 제거, 근본 원인까지 시정.

취약점을 과장하지 않고, '가능성'과 '실제 발생'을 구분하며, IOC와 일반 이벤트를 혼동하지 않는 것이 신뢰받는 분석가의 자세입니다.

7. 탐지 방법

  • Evidence→Collection→Analysis→IOC→Detection→Response 전 과정 수행
  • 타임라인으로 공격 흐름 역추적
  • 모든 결론에 로그 근거 첨부
  • 재발 방지(하드닝·룰·IOC 배포)

8. SOC 관점 — SIEM · Wazuh · IOC

이 종합 실습은 실제 SOC 분석가의 하루를 압축한 것입니다: 알람(Detection) → 선별(Triage) → 조사(Investigation, 타임라인·IOC) → 대응(Response) → 재발 방지·룰 개선. 사용자의 실습 환경(Kali/Ubuntu/Rocky + Suricata + ELK/Wazuh)에서 이 시나리오를 처음부터 끝까지 구현해 보면, 포트폴리오로서 '리눅스 보안관제 실무 흐름을 이해하고 수행할 수 있음'을 구체적으로 증명할 수 있습니다. 50편을 관통한 흐름 — Linux 기초 → 보안 모델 → 계정·인증 → 권한 → 프로세스·지속성 → 네트워크 → 로그·감사 → IOC → 탐지 → 조사 → 대응 → SOC — 이 여기서 하나로 완성됩니다.

9. 실습 체크리스트

[ ] 격리 VM에서만 실습
[ ] 증거 보존 우선 원칙 준수
[ ] 타임라인으로 공격 역추적
[ ] IOC 수집·구조화
[ ] 대응 및 재발 방지 수행
[ ] 모든 결론에 로그 근거 첨부

10. 핵심 정리

  • 분석은 공격의 역순 — 로그에서 출발해 흐름을 복원한다.
  • Evidence→Analysis→Detection→Response가 종합 실습의 축이다.
  • 실습은 격리 VM·테스트 자산에서만 수행한다.
  • 모든 결론은 로그 근거로 뒷받침하고 과장하지 않는다.
  • 이 역량이 '명령어를 안다'를 넘어선 보안관제 실무 능력이다.

11. 다음 편

이번 편으로 50편 시리즈가 마무리됩니다. 전체 흐름을 되짚으며 SOC 실무 관점에서 복습해 보세요.


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

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

0개의 댓글