15.8 네트워크 위협 방어 및 완화 (Mitigation)
보안의 가장 무서운 적은 고도로 복잡한 암호 해독 수학을 사용하는 지능형 해커 집단만이 아니다. 오히려 무식하게 물리적 힘의 논리(Brute-Force)로 우주 방어선을 찢고 들어오는 네트워크 인프라 파괴 전술, 즉 자원 고갈 공격(DDoS, Distributed Denial of Service)과 악성 좀비 노드(Zombie Node)의 인해전술 스캐닝(Scanning)이 분산 시스템의 아킬레스건을 타격하는 가장 치명적이고 흔한 위협 모델이다.
아키텍트가 구축한 서버가 암호화를 푸느라 CPU 점유율 100%를 찍고 폭주 상태로 크래시(Crash)되거나, 해커가 1년 전의 데이터를 계속 무단으로 다시 쏘아 로봇 시스템의 제어 상태를 과거로 되돌려버리는 물리적 공격들에 직면해야 한다. 이 장에서는 라우터(Router Daemon)가 압도적이고 불법적인 트래픽 해일을 만났을 때 시스템을 어떻게 우아하게 마비시키지 않고 좀비들을 네트워크 허공에서 도륙해 낼 것인가에 대한 네트워크 위협 방어 및 완화(Threat Mitigation) 런북(Runbook)을 완성한다.
1. DoS/DDoS 공격 방어를 위한 트래픽 속도 제한(Rate Limiting)과 스로틀링
인증서가 탈취되어 인가된 계정을 일시적으로 확보한 악성 해커가, 합법적인 Put 패킷을 1초에 1,000만 번 핑으로 융단 폭격 쏜다고 가정하자. 완벽히 설계된 ACL(접근 제어)도 통과하고 TLS 터널도 무사히 통과한 논리적으로 합법적인 트래픽이지만, 백엔드 스토리지 DB와 구독 중인 에지 로봇들은 그 초당 인서트(Insert) 압력에 버퍼가 터져 분쇄되어버린다.
1.0.1 인그레스(Ingress) 트래픽 스로틀링(Throttling) 방어 런북
Zenoh의 통신 계층에서 대역폭을 물리적으로 잘라서 옥죄어야 한다. 방어 연산을 전위 프록시(Proxy)에 무작정 외주 주지 말고 라우터 코어 본체에서 하드웨어적으로 썰어버리는 인프라 튜닝이 필수적이다.
1) 소켓 버퍼(Socket Buffer) 풀 최소화 및 QoS 블로킹 브레이크
메모리를 무한정 열어주어 좀비 패킷을 버퍼링하는 것은 OOM(Out-Of-Memory) 죽음의 길이다. 라우터가 수용할 수 있는 수신/송신 메모리 한계량을 극단적으로 낮춰, 넘치는 해일 파도를 라우터 밖(OS Kernel/TCP 덤프)으로 밀어내 떨궈버려야 한다.
// zenohd.json5 환경 스펙 튜닝 파일
transport: {
link: {
tls: {
// 1. 읽기/쓰기 큐 버퍼를 최소한의 생존 바이트 공간(64KB)으로 고립시켜 옥죈다.
// 버퍼가 차는 즉시 OS 레벨에서 TCP Window 윈도우 스톨이 유발되어 해커의 송출을 물리적으로 차단 압박한다!
rx_buffer_size: 65536,
tx_buffer_size: 65536
}
},
// 2. 백프레셔(Backpressure) 시스템 강제 가동
multicast: {
// 내부 데몬 큐가 한도 슬롯에 꽉 차면 메모리를 늘리지 말고 무조건 오래된 패킷 혹은 넘치는 새 패킷을 즉시 파기(Drop)하라!
queue_length: 1000
}
}
2) 에지 퍼블리셔(Publisher) 단의 흐름 제어(Flow Control) 역방향 타격
해커의 맹점은 네트워크 이그레스 혼잡 회피 메커니즘을 강제로 끄고 패킷을 융단 폭격 스니핑한다는 점이다. 라우터가 “잠깐만! 내 수신 큐가 이미 100% 꽉 찼어!” 라고 백프레셔 레이블(QoS 핑)을 역으로 던지면, 그 즉시 해당 출발지 IP의 전송 채널(Pipe Socket) 전체에 강제 휴식 스톨(TCP Stall)을 먹여 백엔드 디스크 연산이 숨통을 트고 따라갈 숨구멍 시간(Latency Buffer)을 강제 확보해야 한다.
2. 메시지 타임스탬프와 Nonce를 활용한 재생 공격(Replay Attack) 스니핑 방어
지상 중앙 관제탑이 비상 상황에서 “드론 엔진 정지(Emergency STOP)” 명령을 무선으로 내렸다. 해커는 이 명령이 강력한 TLS 암호화로 감싸져 있어 내용은 해독해 볼 수 없지만, 암호화된 Payload 통뼈 바이너리 덩어리 자체를 스니핑 덤프로 복사해서 저장해 두는 스니핑 밀행 취약성은 막을 수 없다.
다음 날, 드론이 상공을 잘 날아가고 있을 때 해커가 훔쳐둔 그 암호화된 통뼈를 그대로 Zenoh 통신망에 다시 투척 스로잉한다(Replay). 로봇은 뜬금없이 암호 복호화를 거친 뒤 “어? 어제 서버 관리자가 TLS 무결성 서명한 진짜 정지 명령이네?” 하고 엔진을 끄고 즉각 추락 폭파하게 된다.
2.0.1 시간 고정(Time-Locked) 일회용 패킷 사살 전술
서명된 합법 암호 메시지가 재활용되어 두 번 소비(Double-Spending)되는 것을 시스템적으로 거세하고 원천 차단해야 한다.
1) 타임스탬프(Event-Time) 와 Nonce(1회용 난수 캡슐) 의 구조적 결합
- 발신자 (중앙 관제탑 컨트롤러): 명령을 내릴 때, 애플리케이션 페이로드(Payload) 내부 헤더 텍스처에 현재 시간(NTP 시간표 기준, 1 밀리초 단위 절대 시간) 과 절대로 반복 재사용되지 않는 거대 랜덤 문자열(Nonce UUID) 을 한 몸으로 박아 넣고 “합쳐서 통으로” 묶어 전자 서명(Sign) 혹은 TLS 전송을 실시 파핑한다.
- 수신자 (에지 로봇 단말 / 수비 라우터): 패킷을 받아 복호화를 뜯었을 때, 본문 명령을 실행하기 이전에 무조건
NTP 생존 시간 한계 (Time-to-Live, TTL 윈도우 컷)알고리즘 룰을 적용 판별한다. - “이 명령서 배 안에 찍힌 각인 타임스탬프가 내 현재 단말 생존 시간보다 5초 이상 오래된 과거 유물인가? 해커가 어제 훔쳐 만든 걸 오늘 다시 덤핑 가져온 쓰레기네? 즉시 오퍼레이션 기각 및 폐기(Silent Drop)!”
- “만일 최근 5초 안에 들어온 시간 갭이라면 안심할 수 있는가? 아니, 내 인메모리 맵(HashMap 캐시) 을 다시 뒤져본다. 이 특수한 난수 Nonce 값을 가진 명령을 방금 0.1초 전에 내 코어가 수신해 실행한 흔적 적이 있는가? 똑같은 패킷을 지연 복제해서 또 던져 수신시켰네? 역시 기각!”
E2E(End-to-End) 암호화를 달성할 때, 암호문 캡슐 안에 반드시 절대 시간 정보 틱과 난수를 심장처럼 박아라. 데이터를 수식으로 암호화만 하고 흐르는 시간에 묶어두어 소멸시키지 않으면, 그 아카이브 데이터는 영원히 당신 인프라를 타격할 불사의 좀비 무기(Zombie Weapon) 로 재활용되어 영원히 당신을 저주할 것이다.
3. 스푸핑(Spoofing) 및 중간자 공격(MitM) 원천 매핑 차단 아키텍처 결속
자율 기동 중인 로봇이 접속하려는 타겟 클라우드 메인 라우터의 고정 IP 주소(10.0.0.5) 를 해커가 로컬 내부 공장 네트워크망의 ARP(Address Resolution Protocol) 스푸핑 독성 패킷 타격을 통해 강제로 자기 악성 컴퓨터 포트(10.0.0.99) 로 속여 낚아채어 우회 포워딩시켰다. 에지 로봇은 지금 화면도 모르게 해커가 띄운 가짜 가상 라우터 프로그램에 모든 회사 기밀 센서 데이터를 곧이곧대로 밀어 넣어 송출해주고 있다.
3.0.1 파단할 수 없는 X.509 화이트리스팅 서명 방어 전술
단말기나 서버를 속이는 이 기만적인 위장 전술을 물리적으로 막아내는 것은 고립된 IP 주소나 로컬 환경 설정 텍스트 파일이 아니다. 오직 무결성 증명 체계(Certificate Authority) 사슬뿐이다.
1) Server Certificate 앵커 검증의 절대 원칙
로봇(에지 클라이언트 서브) 이 전방의 라우터 포트에 TLS 소켓 접속을 시도할 때, 가장 먼저 라우터가 핸드셰이크 단계에서 보내온 증명서 인증서(Certificate)를 뜯어 해부해야 한다.
설령 ARP 스니핑으로 IP 주소가 속았더라도, 해커가 띄운 가짜 수신 서버가 제시한 인증서 도장은 해커 자신이 팠거나 허가받지 않은 사제 도장이 찍혀있을 것이다. (우리 회사의 사내 Root CA 최상위 기관이 보안 락을 걸고 비밀리에 전자 도장을 찍어 발급해 준 진짜 보증 인증서가 아니다.) 결국 로봇 클라이언트 단말의 TLS 통신 라이브러리는 발급자 서명이 어긋난 것을 확인하는 즉시 기겁하며 TCP 연결 소켓 라인을 스스로 자르고 부러뜨리며 단절해 버린다.
2) 서브젝트 대안 네임 SAN (Subject Alternative Name) 대조 검사의 잔혹함
만약 해커 집단이 어떻게든 우리 회사의 인증서 발급 권한을 하나 훔쳐내서(예: 일반 직원의 개인용 작업 인증서) 그 인증서를 라우터의 신분증인 양 속여서 교묘히 시스템 행세를 통신 개시한다면 어찌 방어하는가?
- 로봇 단말 에이전트는 인증서 최상위 발급 기관 도장만 대충 보고 믿지 않고, 그 발급받은 인증서 종이 안에 텍스트로 또박또박 각인 적힌 물리적 타겟 노드 호스트 이름 (SAN) 을 검시관처럼 교차 2중 검사 대조한다.
- “내가 목적지 연결하려 한 메인 허브 서버의 이름은
CN=main-central-cloud-router여야 하는데, 이 신분증 권한 배열을 까보니 이건 말단 노무 직원 아이디인CN=worker-operator-03로 발급된 사번 인증서 이구먼? 감히 라우터 행세를 해? 이건 100% 스푸핑(Identity Spoofing 위장)이다!” - 라우터 및 클라이언트의 연결 설정 단계 런타임 맵에서 타겟 연결 주소(
tls/10.0.0.5:7447) 뿐만 아니라, 그 해당 목적 서버가 반드시 나에게 제시 증거 해야 하는 명백한 호스트 네임 서명 텍스트 검증(Host Name Verification Checking) 규약을 데몬 구동 라이브러리 레벨 파드에서 하드코딩 지시하라. 이것만이 중간에서 가로채는 신분 위장 패킷 유출망을 끊어내는 자비 없는 물리적 끊임점이며 파이프 수단이다.