5. 자료를 밖으로 보내지 않기
정말 안 나가는지 눈으로 보기
이 차시를 마치면
세 가지를 관찰하고, 각 관찰이 확인하지 못하는 것까지 함께 말합니다.
이 차시는 증명하지 않습니다. 관찰합니다. 그 차이가 이 차시의 핵심입니다.
먼저 범위를 정합니다
"자료가 밖으로 나가지 않는다" 를 완전히 증명하려면 망 자체가 차단된 환경에서 확인해야 합니다. 이 교재는 그 수준을 주장하지 않습니다.
대신 세 가지를 관찰하고, 각 관찰이 확인하는 것과 확인하지 못하는 것을 함께 적습니다.
4번 트랙 6차시에서 배운 태도를 그대로 적용하는 것입니다. "검증했다" 는 말을 들으면 무엇을 확인했고 무엇을 확인하지 않았는지 되묻는 습관입니다.
실행
python3 webapp/verify/local/observe_network.py
관찰 1 — 서버가 어느 주소에 열려 있는가
lsof -nP -iTCP:1234 -sTCP:LISTEN
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
LM\x20Stu 954 gemma 78u IPv4 0xbc8be00e81badfc9 0t0 TCP 127.0.0.1:1234 (LISTEN)
| 확인되는 것 | 확인되지 않는 것 |
|---|---|
127.0.0.1 즉 loopback 에만 열려 있습니다. 같은 네트워크의 다른 기기가 이 서버에 접속할 수 없습니다 |
이 프로세스가 스스로 밖으로 요청을 보내는지는 별개입니다. 들어오는 문을 잠갔다고 나가는 문이 잠긴 것은 아닙니다 |
주소가 0.0.0.0 이나 특정 사설 IP 로 나오면 다른 기기가 접속할 수 있다는 뜻입니다. 앞 차시에서 본 대로 이 서버에는 인증이 없으므로, 그 상태는 위험합니다. 분석
관찰 2 — 추론 중에 외부 연결이 생기는가
추론 요청 전후로 이 프로세스의 외부 연결 목록을 비교합니다.
요청 전 외부 연결: 없음
추론 성공. 응답 5자
요청 후 외부 연결: 없음
→ 추론 전후로 이 프로세스의 외부 연결이 관찰되지 않았습니다.
| 확인되는 것 | 확인되지 않는 것 |
|---|---|
| 추론을 하는 동안 이 프로세스가 지속 연결을 유지하지 않았습니다 | 두 번의 관찰 사이에 생겼다 사라진 짧은 연결 · 다른 프로세스의 전송 · 업데이트 확인이나 텔레메트리 |
이 관찰의 한계가 분명합니다. 스냅숏 두 장을 비교한 것이라 그 사이의 일은 보이지 않습니다. 더 정확히 보려면 패킷 수준 관찰이 필요합니다.
관찰 3 — 모델 가중치가 어디에 있는가
You have 3 models, taking up 25.80 GB of disk space.
google/gemma-4-31b-qat (1 variant) 31B gemma4 18.85 GB Local
google/gemma-4-e4b (1 variant) 4B gemma4 6.86 GB Local
text-embedding-nomic-embed-text-v1.5 Nomic BERT 84.11 MB Local
| 확인되는 것 | 확인되지 않는 것 |
|---|---|
| 모델 파일이 이 기기에 있습니다. 추론에 외부 호출이 필요하지 않은 구조입니다 | 파일이 있다는 것과 실행 중 외부를 부르지 않는다는 것은 별개입니다. 관찰 2 와 함께 봐야 합니다 |
세 관찰을 합치면
각각은 부분만 보여 줍니다. 합쳐야 그림이 됩니다.
관찰 1: 밖에서 들어올 수 없다 (들어오는 방향)
관찰 2: 나가는 연결이 안 보인다 (나가는 방향, 스냅숏)
관찰 3: 필요한 것이 안에 다 있다 (구조적 필요성)
셋이 함께 성립하면 "자료가 이 기기를 벗어날 이유가 없고, 벗어나는 흔적도 보이지 않는다" 고 말할 수 있습니다.
"벗어나지 않는다" 가 아닙니다. 그것은 이 방법으로 말할 수 없습니다. 분석
비유
사무실 문을 잠그고, 창문 밖을 두 번 내다봤는데 아무도 없었고, 필요한 서류가 다 안에 있다는 것을 확인한 상태입니다.
합리적인 확인이지만 "아무도 나가지 않았다" 의 증명은 아닙니다. 그러려면 출입 기록을 계속 남기는 장치가 있어야 합니다.
더 강한 확인이 필요하다면
| 수준 | 방법 | 이 교재에서 |
|---|---|---|
| 관찰 | 바인딩 주소, 연결 스냅숏, 파일 위치 | 여기까지 합니다 |
| 계측 | 패킷 수준 기록. 실행 내내 무엇이 오갔는지 | 다루지 않습니다 확인 필요 |
| 차단 | 방화벽·망분리로 애초에 나갈 수 없게 | 범위 밖. 조직 환경에 따라 다릅니다 |
완전한 차단은 망 수준에서 해야 합니다. 프로그램 설정으로 하는 것이 아닙니다.
이 차시가 남기는 것
기술보다 태도입니다. 확인한 범위를 정확히 말하는 것입니다.
"로컬로 돌리니까 안전합니다" 는 문장은 검증되지 않은 주장입니다. "서버가 loopback 에만 열려 있고, 추론 중 외부 연결이 관찰되지 않았으며, 모델이 로컬에 있습니다. 다만 패킷 수준 확인은 하지 않았습니다" 가 확인된 서술입니다.
길지만 이쪽이 맞습니다.