Linux 시스템 보안 기초 · 50/50편
이 글은
리눅스 시스템 기초·파일 · 권한 · 사용자 관리·서비스 · 프로세스 관리시리즈를 선행 학습으로 두고, 동일한 개념을 보안관제(SOC) 관점에서 한 단계 확장합니다.
50편의 마지막입니다. 지금까지 배운 모든 것 — 계정·권한·프로세스·네트워크·로그·감사·탐지·대응 — 을 하나의 가상 침해사고에 적용해, Evidence → Analysis → Detection → Response 관점으로 종합 실습합니다. 단순 공격 재현이 아니라, 분석가의 시선으로 사건을 풀어냅니다.
가상 시나리오의 전체 공격 흐름:
① 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 ── 격리·차단·제거·복구, 재발 방지
분석의 순서는 공격의 역순입니다. 방어자는 ⑧(로그 발생)에서 출발해, 증거를 모으고(Collection), 시간축에 정렬해(Analysis) 공격 흐름 ①~⑦을 복원합니다. 그 과정에서 IOC를 뽑고(⑨), 탐지로 전환하며(⑩⑪), 대응(⑫)으로 마무리합니다.
이 실습은 반드시 격리된 테스트 VM에서 수행합니다. 사용자의 실습 인프라(Kali=공격자, Ubuntu=IDS, Rocky=서버, Suricata+ELK/Wazuh)가 이상적입니다. 공격 재현(①~⑦)은 테스트 계정·테스트 네트워크로만 하고, 운영 자산을 절대 대상으로 삼지 않습니다.
# === 방어자 종합 분석 스크립트 (조사용, 읽기 위주) ===
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"
종합 실습 산출물과 분석 결론의 형태입니다. (예시 출력 — 사건 재구성 결과)
[사건 요약 - 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로 탐지·대응하는 전 과정. 단순히 '명령어를 안다'가 아니라 '보안관제 관점으로 사건을 해석한다'는 역량입니다.
취약점을 과장하지 않고, '가능성'과 '실제 발생'을 구분하며, IOC와 일반 이벤트를 혼동하지 않는 것이 신뢰받는 분석가의 자세입니다.
이 종합 실습은 실제 SOC 분석가의 하루를 압축한 것입니다: 알람(Detection) → 선별(Triage) → 조사(Investigation, 타임라인·IOC) → 대응(Response) → 재발 방지·룰 개선. 사용자의 실습 환경(Kali/Ubuntu/Rocky + Suricata + ELK/Wazuh)에서 이 시나리오를 처음부터 끝까지 구현해 보면, 포트폴리오로서 '리눅스 보안관제 실무 흐름을 이해하고 수행할 수 있음'을 구체적으로 증명할 수 있습니다. 50편을 관통한 흐름 — Linux 기초 → 보안 모델 → 계정·인증 → 권한 → 프로세스·지속성 → 네트워크 → 로그·감사 → IOC → 탐지 → 조사 → 대응 → SOC — 이 여기서 하나로 완성됩니다.
[ ] 격리 VM에서만 실습
[ ] 증거 보존 우선 원칙 준수
[ ] 타임라인으로 공격 역추적
[ ] IOC 수집·구조화
[ ] 대응 및 재발 방지 수행
[ ] 모든 결론에 로그 근거 첨부
이번 편으로 50편 시리즈가 마무리됩니다. 전체 흐름을 되짚으며 SOC 실무 관점에서 복습해 보세요.
본 실습은 격리된 테스트 VM(Rocky Linux / Ubuntu, VMware) 및 테스트 계정 환경을 기준으로 하며, 운영 서버를 대상으로 하지 않습니다. 실행 결과는 실제 캡처와 예시 출력을 명확히 구분해 표기합니다.