폐쇄망 현장 — 방산·국방 도메인 · 인터넷이 없는 곳에서 조사하기 · 실습
폐쇄망에서 조사하고 반출용 요약 만들기
목표
인터넷이 없고 패키지 설치도 안 되는 파드 안에서 장애 원인을 찾아내고, 그 결과를 망 밖으로 내보낼 수 있는 형태로 만들어 반출 신청서까지 씁니다.
왜 중요한가
이 파드는 폐쇄망을 흉내 내는 것이 아니라 실제로 폐쇄망입니다. curl 은 밖으로 못 나가고 pip install 은 실패합니다. 그래서 여기서 배우는 것은 요령이 아니라 순서입니다 — 가진 것의 목록을 먼저 만들고, 없다는 사실을 종료 코드로 못박고, 서로 다른 두 기록을 시간축에 놓아 원인을 좁힙니다. 그리고 밖으로 내보낼 것은 원본을 지워서가 아니라 빈 파일에서 골라 담아 만듭니다. 지워서 만들면 반드시 하나가 남고, 남은 하나는 아무리 다시 읽어도 안 보입니다.
단계
1. python3 로 /root/airgap/app.log(600줄)와 /root/airgap/change.log(4줄)를 만듭니다. 시드가 고정된 생성 스크립트를 그대로 쓰세요.
2. curl 과 pip3 install 을 실제로 돌려 종료 코드를 확인하고, 쓸 수 있는 도구 8개 이상을 세어 /root/airgap/offline.txt 에 적습니다.
3. /root/airgap/triage.txt 에 전체 줄 수, ERROR 줄 수, 첫 오류 시각, 가장 많은 err 코드, 형상 변경 시각(17:42) 이전의 오류 수를 적습니다.
4. /root/airgap/cause.txt 에 사건 직전 변경의 식별자·항목·이전 값·이후 값, 변경과 첫 오류의 간격(분), 오류 줄에서 옮긴 근거를 적습니다.
5. /root/airgap/sensitive.txt 에 계정·사번·호스트명·내부 IP·연락처·작업자 식별자의 고유 개수를 적습니다.
6. /root/airgap/release/summary.txt 에 반출용 요약을 씁니다. 8줄 이상 40줄 이하로, 판단에 필요한 사실만 담습니다.
7. /root/airgap/forbidden.txt 에 원본에서 뽑은 금지 토큰 목록을 만들고, 요약본을 대조한 결과를 /root/airgap/release/selfcheck.txt 에 적습니다.
8. /root/airgap/release/request.md 에 여섯 절짜리 반출 신청서를 쓰고, /root/airgap/release/summary.sha256 으로 무결성을 붙입니다.
참고
- 로그에서 종류별로 뽑을 때는
grep -oE와sort -u가 기본입니다. - 대조는
grep -oFf 목록파일 대상파일로 합니다.-F를 빼면 목록의 점이 아무 글자나 되어 엉뚱한 곳이 걸립니다. - 흔한 실수 1: 요약본을 원본에서 지워 나가며 만드는 것. 반드시 하나가 남습니다.
- 흔한 실수 2: 금지 토큰 목록을 반출 디렉터리에 같이 두는 것. 그 파일이 가장 위험한 파일입니다.
- 흔한 실수 3: 요약을 고친 뒤 해시를 다시 뜨지 않는 것. 심사받은 파일과 나가는 파일이 달라집니다.
단계 8개
- 조사 대상을 망 안에서 만들기
- 폐쇄망이라는 사실을 증거로 못박기
- 사건 구간 확정하기
- 두 로그를 시간으로 이어 원인 지목하기
- 반출 심사 대상을 종류별로 세기
- 반출용 요약 만들기
- 금지 토큰 목록으로 자기 검증하기
- 반출 신청서와 무결성 붙이기