페이지 목차
이 페이지에서 검색
EIS
이 페이지에 묻기
EIS · 현재 차시와 목차 본문에서만 찾아 답합니다. 답을 지어내지 않고 해당하는 대목을 그대로 보여 주며, 여기에 없으면 없다고 알려 드립니다.
생성형 AI가 아니라 이 페이지 본문을 찾아 그대로 보여 주는 방식입니다. 외부로 나가는 요청이 없습니다.
EIS · SECURITY
EIS
생성 수정
정보보안기사의 시스템·네트워크·애플리케이션 보안과 암호·관리·실기 내용을 개념의 경계와 실습으로 연결합니다.
29개 문서 · 6 · 실기 · 27 / 29
26 · 실기 ② 보안관제 · 대응과 위험분석
지도 위치 : 실기 '정보보안 실무' · README 4장의 ④ 운영 층(관제 · 대응)과 ① 목표와 체계 층(위험관리) | 출제기준: 3. 보안관제 및 대응 > 1 정보수집 및 모니터링 · 2 로그분석 및 대응 / 4. 위험분석 및 정보보호대책 수립 > 1 IT 자산 위협 분석하기 · 2 조직의 정보자산 위협 및 취약점 분석 정리하기 · 3 위험평가하기 · 4 정보보호대책 선정 및 이행계획 수립하기 | 이전: 25 실기 ① 보안특성 파악과 취약점 점검 | 다음: README 필기 연결 노트 : 02, 03, 05, 08, 09, 11, 12, 13, 14, 16, 21, 22, 23, 24 세세항목(요약) : 3.1 운영체제 · 버전별, 서비스별(FTP · 메일 · WWW · DNS · DB) 로그 정보 파악 · 모니터링 · 통제 / 보안장비(Firewall · IDS · IPS) · 네트워크 장비(Switch · Router · 무선 AP) 로그 관리 도구로 생성 수준 · 구성요소 설정 / 3.2 시스템 · 서비스 · 유무선 장비 · 보안장비 · 시간대별 보안 로그 통합 분석 · 통합 로그 정렬로 내외부 공격 시도 · 침투 여부 분석 · 비정상 접근과 변경 여부 확인 · 업무 연속성을 위한 정보와 보안 설정의 백업 · 복구 / 4.1 정보자산 현황 파악 · 서버 · 어플리케이션 · DBMS · WEB/WAS · PC 위협 식별 · 네트워크 · 보안 장비 위협 식별 · 정보보호 및 개인정보보호 법적 준거성 위험 식별 / 4.2 H/W · S/W · 정보자산(기업정보 · 고객정보)의 중요도 · 내외부 위협 · 취약점 정리 / 4.3 위험도 산정 · 목표 위험수준 결정과 초과 위험 식별 / 4.4 위험 처리 전략(감소 · 회피 · 전가 · 수용)과 대책 파악 · 우선순위 · 일정 · 예산을 포함한 이행계획
이 노트를 다 읽으면
- 리눅스 · 웹 · 방화벽 로그의 필드를 읽고 공격 시도인지, 성공했는지 근거를 들어 판정할 수 있다.
- tcpdump 출력에서 TCP 플래그를 읽어 SYN Flooding · 포트 스캔 · Land 공격 을 구별할 수 있다.
- 요구 조건을 받아 Snort 룰을 직접 쓰고 , 주어진 룰의 옵션(content · offset · depth · threshold)을 해석할 수 있다.
- 침해사고 대응 절차와 백업 방식(전체 · 차등 · 증분)을 순서와 차이로 설명할 수 있다.
- 자산 가치 · 위협 · 취약성으로 위험도를 계산 하고, 목표 위험수준(DoA)과 비교해 처리 대상을 고를 수 있다.
- SLE · ARO · ALE로 대책의 비용 대비 효과 를 계산하고, 위험 처리 전략과 이행계획을 쓸 수 있다.
0. 이 노트의 판별 축
| # | 축 | 왼쪽 (0) | 오른쪽 (1) | 이 축으로 갈리는 것 | 큰 축 (README 5장) |
|---|---|---|---|---|---|
| 1 | 시도 ↔ 성공 | 공격 요청이 남음 | 응답 · 후속 행위가 성공을 보여 줌 | 4xx/차단 로그 ↔ 200 응답 · Accepted · 셸 실행 | 이 노트의 축 |
| 2 | 알려진 패턴 ↔ 평소와 다름 | 시그니처(content) 일치 | 임계값 · 빈도 초과 | Snort content 룰 ↔ threshold 룰 | ⑦ 오용 ↔ 이상 탐지 |
| 3 | 놓침 ↔ 잘못 울림 | 미탐(False Negative) | 오탐(False Positive) | 룰이 너무 좁음 ↔ 너무 넓음 | 오탐 ↔ 미탐 (파생 축) |
| 4 | 등급 ↔ 금액 | 정성적 위험분석 | 정량적 위험분석(ALE) | 위험도 행렬 ↔ SLE × ARO | 정성적 ↔ 정량적 (파생 축) |
| 5 | 줄인다 ↔ 넘긴다 ↔ 없앤다 ↔ 받아들인다 | 감소 · 전가 | 회피 · 수용 | 대책 도입 · 보험 ↔ 업무 중단 · 잔여 위험 승인 | 위험 처리 네 가지 (파생 축) |
이 노트의 질문은 두 개입니다. "무슨 일이 일어났는가" (관제 · 로그 · 대응)와 "무엇부터 막을 것인가" (위험분석 · 대책). 앞의 25번 노트가 설정을 점검했다면, 여기서는 그 설정 아래에서 실제로 일어난 일 을 읽고, 한정된 예산으로 무엇을 먼저 고칠지 정합니다. README 6장 탑다운 7단계의 마지막 노트입니다.
1. 보안관제의 큰 그림
1.1 수집 → 정규화 → 상관분석 → 대응
[서버 로그] [웹 로그] [방화벽] [IDS/IPS] [라우터 · AP]
└────── 수집 (syslog · 에이전트) ──────┘
▼
정규화 (시간 · 필드 통일, NTP 시각 동기화)
▼
상관분석 (ESM · SIEM: 여러 장비 이벤트를 시간축으로 엮기)
▼
경보 → 분석가 판정 (오탐/정탐) → 대응 · 보고
SIEM — [통합 보안관제 솔루션]인데, [ 다양한 로그를 수집해 상관분석으로 위협을 찾는다 ]는 점에서 단말 안의 프로세스 · 파일 행위를 감시하는 EDR, 보안장비 이벤트 통합 관리에 머물던 ESM과 구별된다(앞에서 배운 ESM · SIEM (11번 노트)).
⚠️ 시각 동기화(NTP)가 없으면 상관분석이 무너집니다. 장비마다 시계가 몇 분씩 다르면 "방화벽 허용 → 웹 공격 → 계정 생성"의 순서를 재구성할 수 없습니다. 25번 노트의 NTP · Timestamp 점검 항목이 여기서 쓰입니다.
1.2 필기 노트와의 연결 지도
| 실기 주제 | 다시 쓰는 필기 노트 |
|---|---|
| 리눅스 · 윈도우 로그 종류와 명령 | 앞에서 배운 로그 파일 (02번 노트) |
| 웹 로그 공격 흔적 (SQLi · XSS · 경로 조작 · 웹셸) | 웹 공격 (13번 노트), 개발보안 (16번 노트) |
| FTP · 메일 · DNS 로그 | 12, 14번 노트 |
| 방화벽 · IDS 로그, Snort, ESM · SIEM | 네트워크 보안 솔루션 (11번 노트) |
| tcpdump · 스캔 응답 · DoS 패킷 | 스캐닝 · 스니핑 (09번 노트), DoS · DDoS (08번 노트), 분석 도구 (05번 노트) |
| 악성코드 · 루트킷 흔적 | 시스템 공격기법 (03번 노트) |
| 침해사고 대응 · 포렌식 · 백업 · BCP/DRP | 대책 구현 · 사고대응 (22번 노트) |
| 위험분석 · 위험 처리 | 정보보호 관리와 위험평가 (21번 노트) |
| 법적 준거성 위험, 접속기록 보관 | 정보통신망법 · 기반보호법 (23번 노트), 개인정보보호법 (24번 노트) |
1.3 자주 나오는 실기 유형
공개된 회차별 실기 정리(IT위키 「정보보안기사 12회」 · 「13회」 · 「14회」 · 「15회」)에서 이 노트 범위의 주제만 묶었습니다(문제 원문 아님, 복원본이라 일부 문항 누락).
| 유형 | 반복된 주제 (회차) | 이 노트 |
|---|---|---|
| Snort 룰 해석 · 작성 (실무 · 서술) | 룰 문법 분석, depth · distance · within (13회), 임계값(threshold) 기반 DDoS 탐지 (12회) | 3절 |
| 로그 파일 · 명령 이름 (단답) | utmp · wtmp · btmp (14회), last · chattr (12회), logrotate (12회) | 2.1 |
| 공격 이름 맞히기 (단답) | ARP 스푸핑, Memcached 증폭 (13회), SSDP 증폭 (15회), Land · Smurf · SYN Flooding (15회 언급) | 2.5 |
| 탐지 방식 · 오탐 (단답) | 지식기반 · 행위기반 탐지와 오탐 (13회) | 0절, 3.3 |
| 위험분석 용어 · 기법 (단답) | 위험 구성요소 (12회), 위험 전가 · 시나리오법 · 델파이법 · 베이스라인 (13회), 자산 식별 · 위험평가 절차 (14회) | 5절 |
| 연속성 · 복구 (단답) | BCP (13회), 재해복구시스템 분류 (12회) | 4.2 |
💡 경향: 위험분석은 용어 · 기법 이름 단답 이 많고, 관제는 룰 · 로그를 주고 해석시키는 실무형 이 많습니다. 실무형 16점은 두 문항 중 하나를 고르므로, 로그 해석과 Snort 룰 중 하나는 확실히 준비하세요.
2. 로그 읽기 (세부항목 3.1 · 3.2)
2.1 리눅스 로그 — 어디에 무엇이 남나
| 로그 | 기록 내용 | 형식 · 확인 명령 |
|---|---|---|
/var/log/secure (RHEL) · /var/log/auth.log (Debian) | 인증 성공 · 실패, sudo, sshd | 텍스트 · grep, tail -f |
/var/log/messages (RHEL) · /var/log/syslog (Debian) | 시스템 전반 | 텍스트 |
utmp (/var/run/utmp) | 현재 로그인 사용자 | 바이너리 · who, w |
wtmp (/var/log/wtmp) | 로그인 · 로그아웃 · 재부팅 누적 이력 | 바이너리 · last |
btmp (/var/log/btmp) | 로그인 실패 이력 | 바이너리 · lastb |
lastlog | 사용자별 마지막 로그인 | 바이너리 · lastlog |
xferlog | FTP 업로드 · 다운로드 | 텍스트 |
pacct | 사용자가 실행한 명령 | 바이너리 · lastcomm (accton으로 활성화) |
/var/log/cron | cron 작업 실행 | 텍스트 |
📝 기출 포인트 — 필기에서 wtmp · btmp · utmp와 확인 명령(who · last · lastb)이 매우 자주 반복되었고(출제분석.md S1.3: wtmp 7회, btmp 7회), 실기 14회에도 단답으로 나왔습니다(IT위키). "현재(utmp) · 누적(wtmp) · 실패(btmp)" 세 단어로 기억하세요(앞에서 배운 로그 파일 (02번 노트)). 로그 변조 방지로
chattr +a(추가만 허용), 원격 로그 서버 전송을 덧붙이면 대응 답이 됩니다.
2.2 인증 로그 — 무차별 대입과 성공 판정
Oct 19 03:12:01 web01 sshd[2345]: Failed password for root from 203.0.113.7 port 51522 ssh2
Oct 19 03:12:03 web01 sshd[2345]: Failed password for root from 203.0.113.7 port 51522 ssh2
Oct 19 03:12:06 web01 sshd[2351]: Failed password for invalid user admin from 203.0.113.7 port 51530 ssh2
... (같은 IP에서 2초 간격 약 400건)
Oct 19 03:27:40 web01 sshd[2990]: Accepted password for test from 203.0.113.7 port 52011 ssh2
Oct 19 03:28:15 web01 sudo: test : TTY=pts/1 ; PWD=/home/test ; USER=root ; COMMAND=/bin/bash
Oct 19 03:29:02 web01 useradd[3011]: new user: name=sysbak, UID=0, GID=0
🔍 읽는 포인트 : ① 같은 출발지에서 짧은 간격의 Failed password 반복, invalid user(없는 계정) 시도 → 무차별 대입 · 사전 대입 . ② Accepted password for test → 시도가 성공으로 바뀐 지점 (0절 축 1). ③ sudo ... COMMAND=/bin/bash 로 권한 상승, ④ UID=0 계정 생성 → 백도어 계정 (25번 노트의 UID 0 점검 항목). 대응: 출발지 IP 차단, test · sysbak 계정 잠금 · 삭제, root 원격 접속 차단 · 계정 잠금 임계값 설정, 키 기반 인증, 침해 범위 조사.
Windows 보안 이벤트 ID — 실기에서 표로 주어지는 경우가 있어 대표만 정리합니다.
| 이벤트 ID | 뜻 |
|---|---|
| 4624 / 4625 | 로그온 성공 / 실패 (로그온 유형 2=대화형, 3=네트워크, 10=원격 대화형(RDP)) |
| 4634 | 로그오프 |
| 4672 | 특수 권한(관리자급) 로그온 |
| 4720 / 4732 | 사용자 계정 생성 / 보안 그룹에 구성원 추가 |
| 4688 | 새 프로세스 생성 |
| 1102 | 감사 로그 삭제 — 흔적 지우기 신호 |
2.3 웹 로그 — Apache Combined 형식
203.0.113.7 - - [19/Oct/2026:03:40:11 +0900] "GET /board/view.php?id=1%27%20OR%20%271%27%3D%271 HTTP/1.1" 200 5123 "-" "sqlmap/1.7.2#stable"
| 필드 | 값 | 뜻 |
|---|---|---|
%h 클라이언트 IP | 203.0.113.7 | 출발지 (프록시 뒤라면 X-Forwarded-For 확인) |
%l %u | - - | identd · 인증 사용자 (보통 비어 있음) |
%t 시각 | [19/Oct/2026:03:40:11 +0900] | 시간대 포함 |
"%r" 요청 줄 | GET /board/view.php?id=... | 공격 문자열이 들어 있는 곳 |
%>s 상태 코드 | 200 | 성공 여부 판단의 첫 근거 |
%b 응답 크기 | 5123 | 평소보다 크면 데이터 유출 의심 |
Referer · User-Agent | - / sqlmap | 자동화 도구 흔적 |
URL 디코딩: %27=', %20=공백, %3D==, %3C=<, %3E=>, %2F=/, %2e=. → 요청은 id=1' OR '1'='1 입니다.
| 공격 | 로그에 보이는 흔적 | 성공을 시사하는 근거 |
|---|---|---|
| SQL Injection | ' OR '1'='1, UNION SELECT, --, sleep( | 200 + 응답 크기 급변, Time-based는 응답 지연 |
| XSS | <script>, %3Cscript%3E, onerror=, javascript: | 저장형은 게시글 등록(POST) 후 다른 사용자 조회 |
| 경로 조작 (Directory Traversal) | ../../../../etc/passwd, %2e%2e%2f | 200 + passwd 크기만큼의 응답 |
| 디렉터리 리스팅 | 파일명 없이 /upload/ 요청 | 200 (+ "Index of" 페이지) — 403이면 차단됨 |
| 웹셸 | POST /upload/x.php, 이후 ?cmd=id, cmd=cat%20/etc/passwd | 업로드 200 → 해당 파일 실행 요청 200 |
| 스캐너 · 자동화 | User-Agent sqlmap · Nikto · Nmap, 짧은 간격 404 다발 | 404 다발은 탐색 단계 |
198.51.100.9 - - [19/Oct/2026:04:01:02 +0900] "POST /board/upload.php HTTP/1.1" 200 312 "-" "Mozilla/5.0"
198.51.100.9 - - [19/Oct/2026:04:01:09 +0900] "GET /data/files/img_0412.php?cmd=id HTTP/1.1" 200 54 "-" "Mozilla/5.0"
198.51.100.9 - - [19/Oct/2026:04:01:20 +0900] "GET /data/files/img_0412.php?cmd=cat%20/etc/passwd HTTP/1.1" 200 2451 "-" "Mozilla/5.0"
🔍 읽는 포인트 : ① 업로드 직후 업로드 경로의 .php 파일 을 직접 호출, ② cmd= 파라미터로 OS 명령 실행, ③ 응답 크기 2451 = /etc/passwd 크기(25번 노트의 ls 예시)와 같음 → 웹셸 업로드와 명령 실행 성공 . 대응: 해당 파일 격리 · 증거 보존 후 삭제, 업로드 확장자 화이트리스트 · 실행 권한 제거 · 웹 루트 밖 저장(앞에서 배운 파일 업로드 대응 (13 · 16번 노트)), 같은 IP의 다른 요청 전수 조사.
⚠️ GET 파라미터는 로그에 남지만 POST 본문은 기본 Combined 로그에 남지 않습니다. POST 공격은 WAF 로그나 별도 설정(mod_security 감사 로그 등)으로 봐야 합니다.
2.4 방화벽 로그 — 스캔 판별
Oct 19 05:10:01 fw kernel: [FW-DROP] IN=eth0 OUT= SRC=198.51.100.23 DST=10.0.0.10 LEN=44 TTL=46 PROTO=TCP SPT=40123 DPT=21 WINDOW=1024 SYN
Oct 19 05:10:01 fw kernel: [FW-DROP] IN=eth0 OUT= SRC=198.51.100.23 DST=10.0.0.10 LEN=44 TTL=46 PROTO=TCP SPT=40123 DPT=22 WINDOW=1024 SYN
Oct 19 05:10:01 fw kernel: [FW-DROP] IN=eth0 OUT= SRC=198.51.100.23 DST=10.0.0.10 LEN=44 TTL=46 PROTO=TCP SPT=40123 DPT=23 WINDOW=1024 SYN
🔍 읽는 포인트 : 같은 SRC · 같은 SPT에서 DPT만 21, 22, 23… 으로 1초 안에 바뀌고 SYN만 있음 → TCP SYN(하프 오픈) 포트 스캔 . 반대로 DPT는 하나(예: 22)인데 SRC가 수많이 바뀌면 분산 공격 또는 스캔 봇넷입니다. iptables 로그는 -j LOG --log-prefix "[FW-DROP] " 규칙이 있어야 남습니다(앞에서 배운 iptables 점검 (25번 노트)).
2.5 tcpdump · 패킷 해석
05:20:00.100 IP 192.0.2.44.31337 > 10.0.0.10.80: Flags [S], seq 1001, win 512, length 0
05:20:00.100 IP 192.0.2.91.4021 > 10.0.0.10.80: Flags [S], seq 77, win 512, length 0
05:20:00.101 IP 10.0.0.10.80 > 192.0.2.44.31337: Flags [S.], seq 5000, ack 1002, win 64240, length 0
05:20:00.101 IP 192.0.2.17.6612 > 10.0.0.10.80: Flags [S], seq 3, win 512, length 0
... (출발지가 계속 바뀌는 [S] 수만 건, 마지막 ACK [.] 없음)
05:30:00.000 IP 10.0.0.10.139 > 10.0.0.10.139: Flags [S], seq 1, win 512, length 0
| tcpdump 플래그 | 뜻 |
|---|---|
[S] | SYN |
[S.] | SYN + ACK |
[.] | ACK |
[P.] | PSH + ACK (데이터 전송) |
[F.] | FIN + ACK |
[R] / [R.] | RST / RST + ACK |
🔍 읽는 포인트 : ① 위조된 듯 계속 바뀌는 출발지에서 [S] 만 쏟아지고 handshake의 마지막 [.] 이 없음 → SYN Flooding (대응: SYN Cookie, 백로그 확대, 임계치 차단). ② 마지막 줄은 출발지 = 목적지(IP · 포트 동일) → Land 공격 (대응: 출발지가 자기 자신인 패킷 차단). Smurf라면 ICMP Echo Reply가 여러 호스트에서 한 피해자로 몰립니다(앞에서 배운 DoS 유형 (08번 노트)).
| 스캔 유형 | 열린 포트 응답 | 닫힌 포트 응답 |
|---|---|---|
| TCP Connect / SYN 스캔 | SYN+ACK | RST+ACK |
| FIN · NULL · Xmas 스캔 | 응답 없음 | RST |
| UDP 스캔 | 응답 없음(또는 UDP 응답) | ICMP Port Unreachable (Type 3, Code 3) |
| ACK 스캔 (필터링 확인용) | RST → 필터링 안 됨 | 응답 없음 → 필터링됨 |
⚠️ FIN · NULL · Xmas는 RFC 793대로 구현된 스택에서만 위 표처럼 동작합니다. Windows는 포트 상태와 관계없이 RST를 보내 판별이 안 됩니다(앞에서 배운 스텔스 스캔 (09번 노트)).
3. Snort 룰 — 읽고 쓰기
3.1 구조
alert tcp $EXTERNAL_NET any -> $HOME_NET 80 (msg:"WEB cmd.exe access"; flow:to_server,established; content:"cmd.exe"; nocase; sid:1000001; rev:1;)
└─ 동작 └프로토콜 └출발지 IP · 포트 └방향 └목적지 IP · 포트 └──────────── 옵션 (세미콜론으로 구분) ────────────┘
| 헤더 요소 | 값 |
|---|---|
| 동작 | alert(경보+기록), log(기록), pass(무시), 인라인 모드에서 drop · reject · sdrop |
| 프로토콜 | tcp, udp, icmp, ip |
| 방향 | ->(단방향), <>(양방향) |
| 주소 · 포트 | any, $HOME_NET, ! 부정, 1:1024 범위 |
3.2 옵션 — 자주 나오는 것만
| 옵션 | 뜻 | 기억법 |
|---|---|---|
msg | 경보 메시지 (탐지에는 영향 없음) | 이름표 |
sid / rev | 룰 번호 / 개정 번호 (사용자 룰은 1,000,000 이상) | 주민번호 / 버전 |
content | 페이로드에서 찾을 문자열. 16진수는 파이프 기호 사이에 씀(예: 0d 0a) | 무엇을 |
nocase | 대소문자 무시 | |
offset / depth | 페이로드 처음부터 몇 바이트 건너뛰고 / 몇 바이트 안에서 찾나 | 절대 위치 |
distance / within | 앞 content가 끝난 곳부터 몇 바이트 뒤에서 / 몇 바이트 안에서 찾나 | 상대 위치 |
pcre | 정규표현식 | |
flow | to_server · to_client, established | 방향 · 세션 상태 |
flags | TCP 플래그 (S=SYN, F, R, P, A, U, 0=플래그 없음) | |
dsize | 페이로드 크기 | |
itype / icode | ICMP 타입 / 코드 | |
threshold | type(limit · threshold · both), track(by_src · by_dst), count N, seconds M | 몇 초에 몇 번 |
sameip | 출발지 IP = 목적지 IP | Land 탐지 |
threshold 세 가지 — limit: M초 동안 처음 N번까지만 경보. threshold: N번마다 경보. both: M초 동안 N번을 넘으면 한 번만 경보.
📝 기출 포인트 — 필기에서 Snort 룰 옵션(content · offset · depth · nocase · msg · threshold · sameip)이 해마다 나왔고(출제분석.md N3.2), 실기 12회에 threshold 해석, 13회에 depth · distance · within 해석이 나왔습니다(IT위키). offset/depth는 절대, distance/within은 상대 — 이 한 줄이 핵심입니다.
3.3 작성 예제
| 요구 조건 | 룰 |
|---|---|
외부에서 내부 웹서버로 가는 요청에 /etc/passwd 문자열(대소문자 무시)이 있으면 경보 | alert tcp any any -> $HOME_NET 80 (msg:"WEB passwd access"; flow:to_server,established; content:"/etc/passwd"; nocase; sid:1000010; rev:1;) |
| 같은 출발지에서 SSH(22)로 60초 동안 SYN이 5번 넘으면 한 번 경보 | alert tcp any any -> $HOME_NET 22 (msg:"SSH brute force"; flags:S; threshold:type both, track by_src, count 5, seconds 60; sid:1000011; rev:1;) |
| Land 공격 | alert tcp any any -> $HOME_NET any (msg:"Land attack"; flags:S; sameip; sid:1000012; rev:1;) |
| ICMP Echo Request 탐지 | alert icmp any any -> $HOME_NET any (msg:"ICMP ping"; itype:8; sid:1000013; rev:1;) |
페이로드 처음 4바이트 안에 USER, 그 뒤 10바이트 안에 root (FTP) | alert tcp any any -> $HOME_NET 21 (msg:"FTP root login"; content:"USER"; depth:4; content:"root"; distance:1; within:10; nocase; sid:1000014; rev:1;) |
🔍 읽는 포인트 : 룰을 해석하는 문제는 "누가(출발지) · 어디로(목적지 · 포트) · 무엇을(content) · 몇 번(threshold) · 무슨 이름으로(msg)" 순서로 한 문장으로 풀어 쓰면 됩니다. 룰이 너무 넓으면 오탐, 너무 좁으면 미탐 — 0절 축 3.
4. 침해사고 대응과 백업 · 복구
4.1 침해사고 대응 절차
| 단계 (KISA 침해사고 분석 절차 안내서의 7단계) | 하는 일 |
|---|---|
| ① 사고 전 준비 | 대응팀(CERT) · 연락망 · 도구 · 절차 마련 |
| ② 사고 탐지 | IDS · 관제 · 사용자 신고로 인지 |
| ③ 초기 대응 | 피해 확산 차단(격리), 초기 정보 수집, 관련자 통보 |
| ④ 대응 전략 체계화 | 사고 유형 · 영향 판단, 법적 대응 · 수사 의뢰 여부 결정 |
| ⑤ 사고 조사 | 증거 수집 · 분석(휘발성 → 비휘발성), 원인 · 범위 파악 |
| ⑥ 보고서 작성 | 경과 · 원인 · 피해 · 조치 정리 |
| ⑦ 해결 | 재발 방지 대책 적용, 시스템 복구, 교훈 반영 |
휘발성 순서 (RFC 3227): 레지스터 · 캐시 → 라우팅 테이블 · ARP 캐시 · 프로세스 · 메모리 → 임시 파일 시스템 → 디스크 → 원격 로그 → 물리 구성 · 네트워크 토폴로지 → 백업 매체. 사라지기 쉬운 것부터 수집하고, 전원을 바로 끄지 않습니다(앞에서 배운 포렌식 원칙 (22번 노트)).
⚠️ 신고 기한(시험 전 국가법령정보센터에서 확인): 정보통신망법상 침해사고는 인지 후 24시간 이내 신고, 개인정보 유출은 72시간 이내 신고 · 통지(1천 명 이상 등 요건)로 최근 필기 경향에 정리되어 있습니다(앞에서 배운 23 · 24번 노트).
4.2 백업 · 복구 (세세항목 3.2.4)
| 방식 | 백업 대상 | 복구에 필요한 것 | 백업 속도 · 용량 |
|---|---|---|---|
| 전체 (Full) | 전부 | 전체 1개 | 가장 느림 · 큼 |
| 차등 (Differential) | 마지막 전체 이후 바뀐 것 | 전체 + 마지막 차등 1개 | 날이 갈수록 커짐 |
| 증분 (Incremental) | 마지막 백업(무엇이든) 이후 바뀐 것 | 전체 + 그 뒤 증분 전부를 순서대로 | 가장 빠름 · 작음 |
예: 일요일 전체, 월~금 매일 백업, 목요일 장애 → 차등이면 일요일 전체 + 수요일 차등 , 증분이면 일요일 전체 + 월 · 화 · 수 증분 .
| 재해복구 사이트 | 대기 상태 | 복구 시간 (일반적 분류) |
|---|---|---|
| 미러 사이트 | 주 센터와 동일 · 실시간 동기화 | 즉시 |
| 핫 사이트 | 장비 · 데이터 대기, 주기적 동기화 | 수 시간 이내 |
| 웜 사이트 | 일부 장비만 | 수일 ~ 수주 |
| 콜드 사이트 | 장소 · 전원 · 통신만 | 수주 ~ 수개월 |
RTO — 복구 목표 시간 (얼마나 빨리 되살리나), RPO — 복구 목표 시점 (얼마만큼의 데이터 손실을 허용하나, 백업 주기와 직결). 앞에서 배운 BCP · DRP · BIA (22번 노트)와 함께 씁니다. 보안 설정 (방화벽 규칙 · 장비 구성 파일)도 백업 대상이라는 점이 세세항목의 포인트입니다.
5. 위험분석과 정보보호대책 (주요항목 4)
위험 — [발생 가능한 손실]인데, [ 자산 · 위협 · 취약성이 함께 있을 때만 생긴다 ]는 점에서 셋 중 하나인 위협(외부 요인)이나 취약성(내부 약점)과 구별된다. 셋 중 하나라도 0이면 위험도 0입니다.
5.1 절차 한눈에
자산 식별 · 가치평가 → 위협 분석 → 취약성 분석 → 위험도 산정 → 목표 위험수준(DoA)과 비교
→ 처리 전략(감소 · 회피 · 전가 · 수용) → 대책 선정 · 우선순위 → 이행계획(일정 · 예산 · 담당) → 잔여 위험 승인
| 단계 | 산출물 | 세세항목 |
|---|---|---|
| 자산 식별 | 자산 목록(H/W · S/W · 정보 · 서비스), 구성도 | 4.1.1, 4.2 |
| 위협 · 취약성 | 자산별 위협 시나리오, 취약점 진단 결과(25번 노트) | 4.1.2~4, 4.2 |
| 위험평가 | 위험도 표, DoA 초과 목록 | 4.3 |
| 대책 · 계획 | 위험처리 계획서, 이행계획서 | 4.4 |
⚠️ 법적 준거성 위험 (세세항목 4.1.4)도 위협입니다. 개인정보 암호화 의무 · 접속기록 보관(개인정보처리시스템 접속기록 1년 이상, 일정 요건이면 2년 이상, 점검 주기는 개정 전 "월 1회 이상", 2026.10.31부터는 내부 관리계획으로 정한 주기 — 24번 노트, 시험 전 확인) 같은 법적 의무 미이행 은 기술적 공격이 없어도 과징금 · 처벌로 이어지는 위험입니다(앞에서 배운 개인정보보호법 (24번 노트)).
5.2 정성적 계산 — 위험도 = 자산 가치 × 위협 × 취약성
자산 가치는 C · I · A 각각을 13으로 평가한 뒤 최댓값 (또는 합)을 쓰는 방식이 흔합니다. 아래 예는 최댓값, 위협 · 취약성도 13, DoA = 12 (12 이상이면 처리 대상)로 가정했습니다.
| 자산 | C | I | A | 자산 가치 | 위협 | 취약성 | 위험도 | DoA 12 이상? |
|---|---|---|---|---|---|---|---|---|
| 고객 DB 서버 | 3 | 3 | 2 | 3 | 3 | 2 | 18 | ⭕ 처리 |
| 웹 서버 | 2 | 3 | 3 | 3 | 3 | 3 | 27 | ⭕ 처리 (1순위) |
| 사내 그룹웨어 | 2 | 2 | 2 | 2 | 2 | 3 | 12 | ⭕ 처리 |
| 개발 테스트 서버 | 1 | 1 | 1 | 1 | 2 | 3 | 6 | ❌ 수용 |
| 백업 테이프 | 3 | 2 | 1 | 3 | 1 | 2 | 6 | ❌ 수용 (모니터링) |
🔍 읽는 포인트 : 위험도 순서(27 → 18 → 12)가 대책의 1차 우선순위 입니다. 조직마다 덧셈식(자산+위협+취약성)이나 다른 등급표를 쓰므로 ⚠️ 문제에 주어진 식과 DoA를 그대로 적용하고 식을 답안에 먼저 쓰세요. 백업 테이프처럼 자산 가치가 높아도 위험도가 낮으면 수용하되, 수용은 "아무것도 안 함"이 아니라 경영진이 잔여 위험을 알고 승인하는 것 입니다.
5.3 정량적 계산 — SLE · ARO · ALE
| 기호 | 뜻 | 식 |
|---|---|---|
| AV | 자산 가치 (금액) | |
| EF | 노출계수 — 한 번 사고 시 손실 비율 | 0~100% |
| SLE | 단일 예상 손실 | AV × EF |
| ARO | 연간 발생률 | 10년에 1번 = 0.1 |
| ALE | 연간 예상 손실 | SLE × ARO |
| 대책의 연간 가치 | 대책 도입의 순이익 | (도입 전 ALE − 도입 후 ALE) − 연간 대책 비용 |
예: 고객 DB 가치 5억 원, 유출 시 40% 손실 → SLE = 2억 원. 2년에 한 번 꼴(ARO 0.5) → ALE = 1억 원 . DB 암호화 + 접근통제 도입(연 3천만 원) 후 ARO가 0.1로 줄면 ALE = 2천만 원. 대책 가치 = (1억 − 0.2억) − 0.3억 = 5천만 원 > 0 → 도입 타당 .
📝 기출 포인트 — 필기에서 정량적 위험분석 · ALE · SLE(노출계수) 계산, 위험 구성요소, 위험 전가가 반복되었습니다(출제분석.md M1.2: 정량적 위험분석 7회, 위험 전가 7회). 실기에서는 식과 단위까지 쓴 계산 과정 이 부분점수입니다(앞에서 배운 위험평가 (21번 노트)).
5.4 위험 처리 전략
| 전략 | 뜻 | 예 | 헷갈리는 형제와의 경계 |
|---|---|---|---|
| 감소 (완화) | 대책으로 위협 · 취약성을 줄임 | 패치, 암호화, 접근통제 | 가장 일반적 |
| 회피 | 위험을 낳는 자산 · 업무 자체를 없앰 | 개인정보 수집 중단, 서비스 종료 | 줄이는 게 아니라 원인 제거 |
| 전가 (이전) | 손실을 제3자에게 넘김 | 사이버 보험, 외주 계약상 책임 | 위험은 남지만 비용을 남이 부담 |
| 수용 | DoA 이하이거나 대책 비용이 더 클 때 알고 받아들임 | 저가치 테스트 서버 | 경영진 승인 · 기록 필요 |
⚠️ 법적 의무는 수용할 수 없습니다. 개인정보 암호화처럼 법이 요구하는 통제는 비용이 커도 감소 대상입니다.
5.5 위험분석 접근법과 기법
| 접근법 | 특징 | 장단점 |
|---|---|---|
| 베이스라인 | 표준 체크리스트로 최소 통제 적용 | 빠르고 쌈 / 조직 특성 반영 약함 |
| 비정형 (전문가 판단) | 전문가 경험으로 평가 | 빠름 / 평가자 주관에 좌우 |
| 상세 위험분석 | 자산 · 위협 · 취약성을 정밀 분석 | 정확 / 시간 · 비용 큼 |
| 복합 | 중요 시스템은 상세, 나머지는 베이스라인 | 효율적 / 경계 설정이 관건 |
| 구분 | 기법 |
|---|---|
| 정성적 | 델파이법(전문가 집단 합의), 시나리오법(가정된 사건 전개), 순위결정법(비교 우선순위), 퍼지 행렬법 |
| 정량적 | 과거자료 분석법, 수학공식 접근법(ALE), 확률분포 추정법, 점수법 |
5.6 대책 우선순위와 이행계획
우선순위는 위험도(높은 순) → 대책 효과 → 비용 · 난이도 → 법적 의무 여부 → 빠른 적용 가능성(Quick Win) 순으로 따집니다.
| 위험 | 대책 | 우선순위 | 담당 | 일정 | 예산 | 처리 전략 | 잔여 위험 |
|---|---|---|---|---|---|---|---|
| 웹 서버 웹셸 업로드 (27) | WAF 차단 모드, 업로드 실행 권한 제거 | 1 | 웹운영팀 | 1개월 | 2천만 원 | 감소 | 낮음 |
| 고객 DB 유출 (18) | DB 암호화, DB 접근제어 | 2 | DB팀 | 3개월 | 3천만 원 | 감소 + 보험 전가 | 낮음 |
| 그룹웨어 계정 탈취 (12) | MFA 도입 | 3 | 인프라팀 | 2개월 | 1천만 원 | 감소 | 중간 → 수용 승인 |
6. 필답형 답안 쓰는 법
6.1 서술형 답안 구조
로그 분석형 — " 근거 → 판정 → 영향 → 대응 → 재발 방지 "
| 순서 | 예 (웹셸 로그) |
|---|---|
| 근거 | 04:01:02 upload.php POST 200, 04:01:09 업로드 경로의 .php에 cmd=id 200 |
| 판정 | 웹셸 업로드 후 원격 명령 실행 성공 |
| 영향 | 서버 장악, /etc/passwd 유출(기밀성), 추가 침투 거점 |
| 대응 | 출발지 차단, 웹셸 격리 · 증거 보존, 동일 IP 요청 전수 조사, 계정 · 비밀번호 변경 |
| 재발 방지 | 확장자 화이트리스트, 업로드 디렉터리 실행 금지, 웹 루트 밖 저장, WAF 룰 |
위험분석형 — " 식 → 대입 → 결과 → 판단(DoA · 대책 가치) → 전략 "
6.2 핵심어
| 주제 | 반드시 들어갈 말 |
|---|---|
| 로그 | 출발지 IP, 시각, 반복 · 빈도, 상태 코드 200(성공), 응답 크기, User-Agent, 성공/실패 구분 |
| 패킷 | 플래그(SYN · SYN/ACK · RST), handshake 미완료, 출발지 위조, 출발지 = 목적지 |
| Snort | 동작 · 프로토콜 · 방향, content · nocase, offset/depth(절대) · distance/within(상대), threshold · track · count · seconds, sid |
| 사고대응 | 격리, 증거 보존, 휘발성 우선, 무결성(해시), 보고, 재발 방지 |
| 위험분석 | 자산 · 위협 · 취약성, 위험도, DoA, 잔여 위험, 감소 · 회피 · 전가 · 수용, SLE · ARO · ALE |
6.3 부분점수 포인트
- 로그 문제는 줄 번호나 시각을 인용 해 근거를 대세요. "공격 같다"는 점수가 없습니다.
- 시도와 성공을 구분 해 쓰세요(0절 축 1). 403 · 404면 시도, 200 + 후속 행위면 성공.
- Snort 룰은 세미콜론 · 괄호 ·
sid까지. 빠지면 문법 오류로 감점될 수 있습니다. - 계산 문제는 식 → 대입 → 단위 있는 결과 순서로. 결과가 틀려도 식이 맞으면 부분점수 여지가 있습니다.
- 위험 처리 전략은 예를 하나씩 붙이세요(전가 = 보험).
7. 확인 문제
직접 만든 필답형 문제입니다.
문제 1 (단답) 리눅스에서 ① 현재 로그인 사용자, ② 로그인 · 로그아웃 누적 이력, ③ 로그인 실패 이력을 기록하는 로그 파일 이름과 각각을 보는 명령을 쓰세요.
문제 2 (서술) 다음 로그에서 공격 유형과 성공 여부를 판정하고 근거를 쓰세요.
203.0.113.50 - - [19/Oct/2026:10:00:01 +0900] "GET /download.php?file=..%2f..%2f..%2f..%2fetc%2fpasswd HTTP/1.1" 200 2451 "-" "curl/8.4.0"
문제 3 (단답) tcpdump에서 출발지와 목적지의 IP · 포트가 같은 SYN 패킷이 보입니다. 공격 이름과, 이를 탐지하는 Snort 옵션 이름을 쓰세요.
문제 4 (실무) "외부에서 내부 웹서버(192.168.10.10) 80번 포트로 가는 세션의 요청에 union select 문자열(대소문자 무시)이 있으면 'SQLi attempt'라는 메시지로 경보" 하는 Snort 룰을 쓰세요(sid 1000100).
문제 5 (단답) 다음 룰이 경보를 내는 조건을 한 문장으로 쓰세요.
alert tcp any any -> $HOME_NET 22 (msg:"SSH scan"; flags:S; threshold:type limit, track by_src, count 1, seconds 60; sid:1000101;)
문제 6 (서술) 일요일 전체 백업 후 월~토 매일 증분 백업을 합니다. 금요일 오전에 장애가 나면 무엇을 어떤 순서로 복구하나요? 차등 백업이었다면 어떻게 달라지나요?
문제 7 (계산) 자산 가치 10억 원, 노출계수 30%, 발생 빈도 4년에 1회입니다. ① SLE ② ALE를 구하고, ③ 연간 비용 4천만 원의 대책으로 ARO가 0.05가 될 때 대책의 연간 가치와 도입 여부를 쓰세요.
문제 8 (서술) 위험 처리 전략 네 가지를 쓰고, "고객 개인정보를 쓰지 않는 새 업무 방식으로 바꿔 개인정보 수집을 중단"한 것은 어느 전략인지 쓰세요.
문제 9 (단답) 조직이 받아들일 수 있는 위험의 기준선으로, 이보다 위험도가 높은 위험만 처리 대상으로 삼게 하는 값을 무엇이라 하나요?
모범답안
| # | 모범답안 | 채점 핵심어 · 해설 |
|---|---|---|
| 1 | ① utmp — who(또는 w) ② wtmp — last ③ btmp — lastb | 현재 · 누적 · 실패 |
| 2 | 경로 조작(Directory Traversal). %2f=/ 이므로 ../../../../etc/passwd 요청. 상태 코드 200, 응답 크기 2451바이트로 passwd 파일 크기와 비슷 → 성공 가능성 높음 (파일 내용 확인 필요). User-Agent curl은 자동화 도구 | 디코딩 · 200 · 크기 근거. 대응: 파일명 화이트리스트, ../ 필터, 경로 정규화 |
| 3 | Land 공격 / sameip | 대응: 출발지가 자기 IP인 패킷 차단 |
| 4 | alert tcp any any -> 192.168.10.10 80 (msg:"SQLi attempt"; flow:to_server,established; content:"union select"; nocase; sid:1000100; rev:1;) | nocase · 방향 · sid. 공백 변형(union/**/select)은 pcre 로 보완하면 가점 |
| 5 | 어떤 출발지에서 내부 22번 포트로 SYN 패킷이 오면, 출발지별로 60초에 한 번만 경보 | limit = 처음 N번까지만 |
| 6 | 증분: 일요일 전체 → 월 · 화 · 수 · 목 증분을 순서대로 전부 . 차등: 일요일 전체 → 목요일 차등 하나만 | 증분은 복구가 길고, 차등은 백업이 커짐 |
| 7 | ① SLE = 10억 × 0.3 = 3억 원 ② ARO = 0.25 → ALE = 7,500만 원 ③ 도입 후 ALE = 3억 × 0.05 = 1,500만 원. 대책 가치 = (7,500 − 1,500) − 4,000 = 2,000만 원 > 0 → 도입 | 식 · 대입 · 단위 |
| 8 | 감소 · 회피 · 전가 · 수용 / 회피 (위험을 낳는 업무 자체를 없앰) | 감소와 혼동 주의 |
| 9 | 목표 위험수준(DoA, Degree of Assurance) | 수용 가능 위험 수준이라고도 씀 |
부록 A. 스스로 확인하기
| # | 질문 | 답이 있는 곳 |
|---|---|---|
| 1 | SIEM과 EDR은 무엇으로 갈리나? 시각 동기화가 왜 필요한가? | 1.1 |
| 2 | 실기에서 관제 영역은 주로 어떤 유형으로 나오나? | 1.3 |
| 3 | utmp · wtmp · btmp · lastlog의 차이와 명령은? | 2.1 |
| 4 | 인증 로그에서 무차별 대입이 "성공"으로 바뀐 지점은 어떻게 찾나? | 2.2 |
| 5 | Combined 로그 형식의 필드 순서는? POST 본문은 남나? | 2.3 |
| 6 | 웹셸 업로드 성공의 근거 세 가지는? | 2.3 |
| 7 | SYN · FIN · UDP 스캔의 열린/닫힌 포트 응답은? | 2.5 |
| 8 | offset/depth와 distance/within의 차이는? | 3.2 |
| 9 | threshold의 limit · threshold · both는? | 3.2 |
| 10 | 침해사고 대응 7단계와 휘발성 순서는? | 4.1 |
| 11 | 증분과 차등 백업의 복구 방법 차이는? RTO와 RPO는? | 4.2 |
| 12 | 위험도 계산과 DoA 비교는 어떻게 하나? | 5.2 |
| 13 | ALE와 대책의 연간 가치 식은? | 5.3 |
| 14 | 위험 회피와 전가의 차이는? | 5.4 |
부록 B. 자주 하는 실수 · 함정
| 실수 | 바로잡기 |
|---|---|
| ❌ "wtmp는 로그인 실패를 기록" | ⭕ 실패는 btmp (lastb). wtmp는 성공 로그인 · 로그아웃 누적 |
| ❌ 공격 문자열이 보이면 "침해 성공" | ⚠️ 시도와 성공을 구분. 상태 코드 · 응답 크기 · 후속 행위로 판단 |
| ❌ "POST로 들어온 SQLi도 access 로그에 다 남는다" | ⭕ 기본 Combined 로그는 POST 본문을 남기지 않음 |
| ❌ "depth는 앞 content 기준" | ⭕ offset/depth는 페이로드 처음 기준, distance/within이 앞 content 기준 |
| ❌ "증분 백업 복구는 전체 + 마지막 증분" | ⭕ 전체 + 모든 증분을 순서대로. 마지막 하나만 쓰는 것은 차등 |
| ❌ "위험 수용 = 방치" | ⭕ 잔여 위험을 경영진이 알고 승인 하고 기록 · 모니터링 |
| ❌ "보험에 들면 위험이 사라진다" | ⭕ 전가는 손실 비용 을 넘길 뿐 사고 가능성은 그대로 |
| ❌ ARO "4년에 1회"를 4로 대입 | ⭕ 0.25 |
| ❌ 사고 즉시 서버 전원 차단 | ⚠️ 메모리 등 휘발성 증거가 사라짐. 격리 후 휘발성 정보부터 수집 |
부록 C. AI · NotebookLM 복습 프롬프트
이 노트만 근거로, Apache Combined 로그 5줄을 새로 만들어 주고 그중 공격 시도와 성공을 내가 구분하게 해 줘. 채점은 2.3의 표 기준으로.
이 노트만 근거로, Snort 룰 작성 문제 3개(요구 조건 → 룰)를 내고, 내가 쓴 룰의 문법 · 옵션 오류를 3.2 표 기준으로 지적해 줘.
이 노트만 근거로, 자산 4개짜리 위험도 계산 문제와 SLE · ALE 계산 문제를 하나씩 내고 풀이 과정을 단계별로 채점해 줘.
노트에 없는 수치(법정 기한 등)는 지어내지 말고 "노트에 없음 — 국가법령정보센터 확인"이라고 답해 줘.
LangTailor