폐쇄망 현장 — 방산·국방 도메인 · 바꿀 수 없는 구성과 넘겨주는 일 · 실습
고정 형상의 취약점 대응과 인수인계
목표
인증받은 구성에서 올릴 수 없는 취약점을 판정하고 완화 근거를 문서로 남긴 뒤, 야간 작업 로그의 감사 위반을 찾아내고, 다음 사람이 인터넷 없이 읽고 따라할 수 있는 인수인계 꾸러미를 완성합니다.
왜 중요한가
인증받은 구성은 최신 패치를 적용하는 순간 인증받은 그 구성이 아니게 되고, 재인증에는 몇 달이 걸립니다. 그래서 여기서는 취약점 대응이 업데이트가 아니라 완화 조치와 문서화로 끝나는 일이 흔합니다. 완화는 버전 번호가 그대로라 밖에서 보면 아무것도 안 한 것과 구별되지 않기 때문에, 판단했다는 사실을 남기는 것 자체가 일이 됩니다. 감사 추적도 같은 성질입니다 — 사고 뒤에 찾는 것이 아니라 작업 전에 남게 만들어 두는 것이고, 남기지 않은 것은 아무리 잘 찾아도 나오지 않습니다.
단계
1. python3 로 /root/handover/ 에 baseline.json(구성 10건), advisories.json(공지 8건), worklog.csv(작업 14건), window.txt 를 만듭니다.
2. /root/handover/impact.csv 에 공지별 영향 여부를 판정해 적습니다. 버전은 마침표로 끊어 숫자로 비교하세요.
3. /root/handover/mitigation.md 에 영향 항목의 조치 구분·근거·재평가 시점을 표로 씁니다.
4. /root/handover/freeze.txt 에 인증 번호, 형상 목록의 SHA-256, 고정·변경가능 구성 수, 고정인데 영향받는 구성 수를 적습니다.
5. /root/handover/audit-noapproval.csv 에 승인 기록 없이 실행된 작업을 원본 줄 그대로 뽑습니다.
6. /root/handover/audit-selfapproved.csv 에 실행자와 승인자가 같은 작업을 뽑습니다.
7. /root/handover/audit-window.csv 에 작업 창 밖 작업을 뽑고, /root/handover/audit-summary.txt 에 세 건수와 중복을 지운 실제 위반 작업 수를 적습니다.
8. /root/handover/runbook.md 에 일곱 절짜리 인수인계 절차서를 씁니다.
9. /root/handover/HANDOVER.sha256 과 /root/handover/index.md 로 꾸러미를 닫습니다.
참고
- JSON 은
jq로, 버전 비교와 표 만들기는python3로 하는 편이 안전합니다. - ISO 8601 시각은 자리수가 고정이라 문자열 비교가 곧 시간 비교입니다.
awk에서 그대로 부등호를 쓸 수 있습니다. - 흔한 실수 1: 버전을 문자열로 비교하는 것.
16.2가16.10보다 커 보입니다. - 흔한 실수 2: 세 위반 건수를 단순히 더해 위반 작업 수로 보고하는 것. 없는 사고를 만들어 보고하게 됩니다.
- 흔한 실수 3: 산출물을 고친 뒤
HANDOVER.sha256을 다시 뜨지 않는 것. 매니페스트는 마지막에 뜹니다.
단계 9개
- 형상·공지·작업 로그 만들기
- 형상과 공지를 대조해 영향 판정하기
- 완화 조치와 근거 표 쓰기
- 형상 목록 동결하기
- 승인 없이 실행된 작업 찾기
- 2인 통제가 깨진 작업 찾기
- 작업 창 밖 작업과 실제 위반 수 세기
- 인수인계 절차서 쓰기
- 인수인계 꾸러미 묶기