Lafine Systems Design · 기술 문서

RoamSwitch Server Edition 기술 백서

클라우드 및 헤드리스 Linux 서버 인프라를 위한 자율 네트워크 보안 및 무결성 방어 제품군

버전 v1.1.0 대상 RoamSwitch Server Edition 1.3.2 요구 사항 systemd + nftables 발행 2026-09-07

§1개요 및 핵심 원칙

RoamSwitch Server Edition은 클라우드 공급자(AWS, GCP, Azure, 베어메탈 VPS) 및 온프레미스 데이터 센터 전반의 Linux 서버 인프라용으로 특별히 제작된 헤드리스 상주 자율 네트워크 보안 및 무결성 보호 제품군입니다.

이동성 및 Wi-Fi 경계 적응에 초점을 맞춘 클라이언트 워크스테이션 버전과 달리 Server Edition은 인바운드 기본 삭제, 중요 경로 파일 무결성 모니터링(FIM), 선점형 커널 LPE 및 권한 에스컬레이션 강화, eBPF 런타임 위협 원격 측정 등 5가지 타협할 수 없는 원칙을 기반으로 합니다. 분리 전 긴급 경고를 통한 자율적 공극 호스트 격리.

엄격한 Zero Telemetry 보장으로 구축된 이 소프트웨어에는 외부 HTTP/TLS 분석 또는 추적 라이브러리가 전혀 포함되어 있지 않습니다. 모든 관리 비밀과 토큰은 엄격한 0600 권한에 따라 암호화되어 보호됩니다.

1.1 비교: 클라이언트 에디션과 서버 에디션

차원 클라이언트 에디션(데스크탑/모바일) 서버 에디션(헤드리스/인프라)
배포 노트북, 모바일 개발자 워크스테이션 클라우드 VM, 베어메탈 노드, 컨테이너 호스트
네트워크 동작 Wi-Fi SSID/Gateway MAC 기반의 동적 프로필 전환 정적 인바운드 기본 삭제. 명시적으로 허용된 포트만 노출됩니다.
사용자 인터페이스 GTK3 데스크탑 GUI + 트레이 표시기 순수 헤드리스 CUI. CLI 명령 + 대화형 마법사
사고 알림 데스크탑 알림(libnotify) Telegram Bot, LINE Messaging API 및 Webhooks(Slack/Discord)에 직접 푸시
1차 방어 공용 Wi-Fi ARP 스푸핑, BadUSB, 랜섬웨어 문서 암호화 외부 정찰 삭제, FIM 변조 감지, 컨테이너 이스케이프, 커널 LPE(CVE-2026-53362)

1.2 핵심 아키텍처 원칙

  • Zero Telemetry: 소프트웨어는 원격 분석, 메트릭 또는 원격 분석을 외부 서버로 전송하지 않습니다. 외부 네트워크 호출은 하위 프로세스 curl 실행을 통해 사용자가 구성한 사고 경고에 대해서만 발생합니다. 기본적으로 외부 통신 라이브러리를 포함하지 않습니다. 유일한 예외로, 운영자가 cve_kernel_map_updates_enabled(기본값 false)에 명시적으로 옵트인한 경우에만 roamswitch-updater가 하루 한 번 lafine.net에서 컨테이너 격리 감사용 커널 CVE 데이터베이스를 익명으로 가져옵니다.
  • 인바운드 기본 삭제: 명시적으로 선언된 서비스 포트 또는 관리 SSH 유지 관리 포트를 대상으로 하지 않는 인바운드 패킷은 ICMP RST 패킷을 생성하지 않고 nftables 커널 수준에서 삭제됩니다.
  • Fail-Closed Autonomous Containment: 비상 Air-Gap 규칙은 데몬 재시작 및 프로세스 충돌 후에도 유지됩니다. 외부 행위자가 nftables 테이블을 플러시하려고 시도하면 데몬은 드리프트를 감지하고 몇 초 내에 격리를 복원합니다.
  • 0600 암호화 비밀 보호: /etc/roamswitch/server.conf은 생성 및 모든 업데이트 시 엄격한 0600 권한(루트로만 읽을 수 있음)을 적용합니다.

§2위협 환경 및 적대적 모델

최신 인터넷 연결 서버는 끊임없는 자동화된 스캐닝, 컨테이너 침입 벡터, 제로데이 커널 권한 상승에 직면해 있습니다.

해결된 주요 위협 벡터
  1. 자동 정찰 및 DB 노출: 의도하지 않게 노출된 내부 데이터베이스 포트를 찾는 인터넷 전체 스캐너(MySQL 3306, Redis 6379, Postgres 5432).
  2. 중요한 경로 변조 및 백도어 삽입: 핵심 인증 바이너리(/bin/login, /usr/bin/sudo, /etc/pam.d/*, /etc/shadow)를 수정하여 지속성을 구축하는 침입자.
  3. 커널 권한 에스컬레이션(CVE-2026-53362 Frag Gap): 권한 없는 공격자가 사용자 네임스페이스(unshare -U -r)를 무기화하여 커널 메모리 손상을 유발하고 루트로 에스컬레이션합니다.
  4. 컨테이너 소켓 중단: 마운트된 /var/run/docker.sock 또는 --privileged 플래그가 있는 잘못 구성된 컨테이너가 호스트 OS에서 루트 작업을 실행합니다.
  5. 프로세스 메모리 스누핑: 공격자는 개인 키 또는 자격 증명을 추출하기 위해 프로세스 전반에 걸쳐 ptrace을 연결하거나 /proc/$pid/mem을 읽습니다.

§3시스템 아키텍처

RoamSwitch Server Edition은 최소한의 메모리와 제로 CPU 오버헤드를 위해 설계된 기본 Rust 바이너리로 작동합니다.

┌─────────────────────────────────────────────────────────────┐
│  사용자 & 관리자 공간                                       │
│                                                             │
│   roamswitch (CLI)             roamswitch-mcp (AI 에이전트) │
│   · server status (30항목 진단)  · 보안 감사 도구 모음      │
│   · server config / setup      · 표준 입출력 JSON-RPC       │
│   · fim verify / update                                     │
│        │                               │                    │
└───────┼───────────────────────────────────┼─────────────────┘
         │ (CUI 명령 & 설정 반영)         │ (stdio)
┌───────▼───────────────────────────────────▼─────────────────┐
│  시스템 기반 (systemd + root 권한)                          │
│                                                             │
│   roamswitch-server-daemon                                  │
│   ├── CriticalPathFim (SHA-256 백그라운드 순회)             │
│   ├── eBPF / Falco 연동 모듈                                │
│   ├── Notifier (Telegram / LINE / Webhook 즉시 발송)        │
│   └── Air-Gap Controller (nftables 긴급 차단 규칙 전개)     │
│                                                             │
│   설정 관리: /etc/roamswitch/server.conf (권한 0600)        │
│   무결성 DB: /var/lib/roamswitch/fim_baseline.db            │
└─────────────────────────────────────────────────────────────┘

§4핵심 방어 메커니즘

4.1 경계 보안(인바운드 기본 삭제)

nftables은 인바운드 트래픽에 policy drop을 적용하여 설정된 연결, 루프백 및 명시적으로 구성된 ssh_portsallowed_ports을 허용합니다.

SSH 관리 포트를 보존하면 비상 Air-Gap 상태 중에 우발적인 운영자 잠금이 방지됩니다.

4.2 중요 경로 파일 무결성 모니터링(FIM)

150개 이상의 중요한 OS 인증 및 관리 파일(/bin/login, /usr/sbin/sshd, /etc/pam.d/* 등)을 모니터링합니다. /var/lib/roamswitch/fim_baseline.db에 대해 SHA-256 해시를 계산합니다. 패키지 관리자 후크 /etc/apt/apt.conf.d/99roamswitch-fim는 승인된 apt upgrade 작업에 따라 기준선을 자동으로 업데이트합니다.

4.3 커널 및 컨테이너 강화

Frag Gap(CVE-2026-53362) 완화: sysctl을 통해 user.max_user_namespaces = 0을 적용하여 LPE 벡터를 무력화합니다. Yama LSM 보호kernel.yama.ptrace_scope = 2을 시행하여 무단 메모리 검사를 방지합니다. 컨테이너 워크로드는 docker.sock 노출에 대해 감사됩니다.

Docker의 공개 포트(-p)는 호스트의 표준 방화벽을 우회하는 것으로 알려진 문제가 있어, protect_docker_ports=true(기본값)로 DOCKER-USER 체인에 검사 규칙을 항상 삽입하여 허용되지 않은 외부 트래픽을 차단합니다. 또한 --privileged 컨테이너 시작이나 /var/run/docker.sock 마운트(컨테이너 탈출 위험)를 docker events로 실시간 감지하여 즉시 알리는 상시 가드도 갖추고 있습니다(설정 불필요, 자동 차단 없는 알림 전용). 메일 릴레이나 공유 폴더 등 타인의 파일을 다루는 호스트에서는 선택적으로 활성화할 수 있는 File Scan Guard(내장 YARA + 옵션 ClamAV)가 정기 스캔과 자동 격리를 제공합니다.

4.4 eBPF 런타임 위협 원격 측정 및 팽창 방지 조정

최신 eBPF(CO-RE/BTF) 프로브를 활용하여 권한 상승 및 컨테이너 침입 시도를 밀리초 단위로 차단합니다. Falco의 표준 문제점(로그 팽창, 디스크 소모 및 CPU 오버헤드)을 제거하기 위해 RoamSwitch는 최적화된 프로필(/etc/falco/config.d/99-roamswitch-optimized.yaml)을 표준화합니다.

  • 심각도 필터링(priority: warning): 시끄러운 운영 원격 측정(정보/알림)을 95% 억제하여 엄격하게 조치 가능한 보안 사고를 표시합니다.
  • 커널 수준 사전 삭제(drop_failed_exit: true): 실패한 syscall 종료를 커널 프로브에서 직접 삭제하여 CPU 컨텍스트 전환을 50% 이상 줄입니다.
  • 메모리 공간 최적화(cpus_for_each_buffer: 2): 링 버퍼를 8MB에서 2MB로 압축하여 메모리 사용량을 30~50MB로 엄격하게 제한합니다.
  • 직접 UNIX 도메인 소켓 IPC: /var/run/roamswitch/events.sock으로의 직접 스트리밍은 디스크 I/O 스래싱을 완전히 제거합니다.
  • 자동 로그 용량(/etc/logrotate.d/roamswitch-falco): maxsize 50M 및 7회의 압축 주기를 사용한 일일 순환으로 디스크 용량 소진을 영구적으로 방지합니다.

4.5 분할 전 경고를 통한 비상 공극 격리

중요한 변조 시 네트워크 인터페이스를 차단하기 직전에 데몬은 Telegram, LINE 및 Webhooks에 긴급 경고를 동기식으로 발송합니다. 경고는 서버 Hostname기본 IP 주소를 자동으로 추가합니다.

긴급 경보 형식(JA/EN)
🚨 [RoamSwitch IMMINENT AIR-GAP] CRITICAL: IMMINENT AIR-GAP HOST ISOLATION (cve_2026_53362_lpe)
🚨 CRITICAL SECURITY INCIDENT DETECTED: cve_2026_53362_lpe
Host: production-node-01 (IP: 192.168.1.10)
Process: exploit_payload (PID: 4921)
ACTION: Initiating host Air-Gap network isolation (SSH preservation active).
WARNING: Outbound internet connectivity will be cut immediately after this message.
Timestamp: 2026-09-06 18:00:00

§530-체크 보안 진단 스위트

Server Edition은 30가지 전문 보안 상태 감사를 실행합니다.

# 카테고리 제목 확인 표준 및 논리
1인증 및 액세스SSH 루트 로그인 및 비밀번호 인증PermitRootLogin no 및 비밀번호 인증이 비활성화되었는지 확인합니다.
2인증 및 액세스빈 비밀번호 계정/etc/shadow에 빈 비밀번호 해시가 있는 사용자가 없는지 확인합니다.
3인증 및 액세스Sudoers 권한 위생승인되지 않은 NOPASSWD 지시어가 없는지 확인합니다.
4네트워크인바운드 기본 거부기본 인바운드 삭제 정책에 대해 nftables을 감사합니다.
5커널 및 무결성권한이 없는 사용자 네임스페이스(Frag Gap)user.max_user_namespaces = 0 보장(CVE-2026-53362)
6커널 및 무결성eBPF BTF 지원/sys/kernel/btf/vmlinux을 통해 커널 BTF 유형 정보의 유효성을 검사합니다.
7커널 및 무결성eBPF LSM 활성커널 lsm= 부팅 매개변수에서 bpf을 확인합니다.
8커널 및 무결성eBPF 런타임 보안 에이전트Falco/Tetragon 에이전트에 대한 원격 측정 링크의 유효성을 검사합니다.
9컨테이너Docker 소켓 마운트 감사/var/run/docker.sock의 컨테이너 마운트를 감지합니다.
10컨테이너Docker 권한 컨테이너고위험 --privileged 컨테이너 워크로드에 대한 감사
11무결성FIM(중요 경로 파일 무결성)150개 이상의 핵심 OS 바이너리의 SHA-256 해시 유효성을 검사합니다.
12커널 및 무결성Yama 프로세스 보호kernel.yama.ptrace_scope = 2 확인
13네트워크IP 전달 비활성화됨net.ipv4.ip_forward = 0 확인
14네트워크TCP SYN 쿠키 보호net.ipv4.tcp_syncookies = 1 확인
15네트워크역방향 경로 필터링(rp_filter)엄격한 역방향 경로 필터링(rp_filter = 1)을 확인합니다.
16커널 및 무결성코어 덤프 제한fs.suid_dumpable = 0을 통한 프로세스 메모리 누수 방지
17운영자동 보안 업데이트unattended-upgrades의 구성을 검증합니다.
18운영NTP 시간 동기화chrony 또는 systemd-timesyncd을 통해 동기화를 확인합니다.
19운영SSH 무차별 대입 보호fail2ban 또는 crowdsec을 통해 활성 모니터링을 확인합니다.
20커널 및 무결성권한 없는 eBPF 비활성화됨kernel.unprivileged_bpf_disabled = 1 확인
21네트워크ICMP 리디렉션이 무시됨accept_redirects = 0을 통한 경로 오염 방지
22네트워크ICMP 에코 브로드캐스트가 무시됨스머프 증폭기 DoS 공격 완화
23커널 및 무결성공유 메모리 강화/dev/shmnodev,nosuid 마운트 옵션이 있는지 확인합니다.
24인증 및 액세스레거시 안전하지 않은 프로토콜 없음일반 텍스트 데몬(telnet, rsh, tftp)이 없는지 확인합니다.
25커널 및 무결성SUID 프로세스 코어 덤프 제한됨SUID 바이너리 충돌 시 자격 증명 유출을 방지합니다.

§6셀프 체크(Docker 환경에서의 재현 검증)

RoamSwitch Server Edition의 여러 방어 메커니즘(인바운드 기본 차단, Critical Path FIM, guard.yaml 기반 심각도별 봉쇄, 보호 프로세스 안전장치, 세이프티 타이머, 커널 LPE 강화 등)은 공식 APT 저장소에서 설치한 실제 roamswitch-server v1.3.2 패키지(로컬 빌드가 아님)를 대상으로, 별도의 Docker 컨테이너를 외부 공격자로 동작시켜 직접 완전히 재현하고 검증할 수 있습니다. 아래는 8가지 검증 시나리오와 각각에서 관찰되어야 할 동작(판정 기준)입니다. 정확한 절차와 스크립트는 아래 6.3을 참조하세요.

# 시나리오 공격 벡터 합격 기준
PENT-S1 Nmap SYN 스텔스 스캔 포트 22, 80, 443, 3306, 8080 전반에 걸쳐 프로브 PASS(100% 스텔스)
PENT-S2 허용되지 않는 포트 검색 포트 3306 및 8080에 대한 컬 직접 연결 PASS
PENT-S3 Egress / C2 차단 목록 악성 IP 피드에 등록된 주소로의 아웃바운드 연결 시도 통과
등록된 주소만 차단됨. 등록되지 않은 호스트로의 통신에는 영향 없음(전면 차단 아님)
PENT-S4 FIM 변조 공격 /bin/login에 백도어 페이로드 삽입 PASS(즉시 감지)
PENT-S5 guard.yaml 심각도별 격리 실제 프로세스를 참조하는 Falco Critical 이벤트를 주입 통과
해당 프로세스를 네트워크에서 격리한 후 SIGKILL 전송
PENT-S6 보호 프로세스 안전장치 실제 sshd PID를 참조하는 동일한 유형의 이벤트를 주입 통과
sshd는 계속 실행됨. 오탐으로 거부 로그만 기록됨
PENT-S7 안전 타이머 Air-Gap 사고를 확인 응답 없이 방치(운영자 ACK 없음) 통과
응답이 없으면 자동 복구됨. ACK가 완료되면 emergency-restore까지 격리가 유지됨
PENT-S8 커널 LPE 조각 간격 권한이 없는 사용자로 unshare -U -r 실행 PASS(거부됨)

SSH 잠금 방지 메커니즘

호스트 전체를 격리하는 Air-Gap(on_emergency)이 작동 중일 때도, preserve_ssh_on_isolation=true(기본값) 덕분에 관리자의 SSH 세션은 차단되지 않습니다. 이는 오탐으로 서버가 완전히 격리되어 물리적/콘솔 접근 없이는 도달할 수 없게 되는 사고를 구조적으로 방지하는 설계입니다. 이 동작은 위 Docker 테스트 스위트의 PENT-S7에 해당하는 절차로 직접 확인할 수 있습니다.

검증 범위의 한계(정직한 공개)

검증할 수 없는 것

커널 강화(비특권 User Namespace 비활성화, Yama ptrace_scope 상향)는 컨테이너 내부에서 종단 간(end-to-end)으로 검증할 수 없습니다. 이러한 sysctl은 컨테이너 단위로 네임스페이스가 분리되지 않기 때문에, 특권 컨테이너(--privileged)에서의 쓰기는 검증용 샌드박스가 아니라 검증을 실행 중인 실제 머신 자체에 영향을 미치게 됩니다. 따라서 이 검증에서는 (읽기 전용 파일 시스템에 대해) sysctl 쓰기가 충돌 없이 올바르게 성능 저하 방식으로 동작하는지만 확인하며, 값이 실제로 반영되는지에 대한 확인은 본 제품이 원래 동작하도록 설계된 실제 머신 또는 VM에서 수행해야 합니다.

직접 재현하기

위의 모든 검증 결과는 공식 지원 저장소(roamswitch-support)에 공개된 Docker 테스트 스위트를 통해 공식 배포 패키지만으로 직접 100% 재현할 수 있습니다(소스 코드 접근이나 저희를 신뢰할 필요가 전혀 없습니다).

# 검증 스위트 가져오기 및 재현 실행(공식 APT 저장소에서 roamswitch-server를 자동 설치)
git clone https://github.com/lafine1211/roamswitch-support.git
cd roamswitch-support/test/docker/server
./run.sh

Target・Attacker・C2 디코이, 총 3개의 일회용 컨테이너를 Docker의 기본 브리지 네트워크 위에 구성하여 18개 항목을 자동으로 검증하고 보고서를 출력합니다. 전체 실행 결과는 RESULTS-PENTEST-SERVER-2026-09-07.md에 공개되어 있습니다(구축 과정에서 발견하고 수정한 테스트 하네스 자체의 문제도 투명성을 위해 함께 기재).

§7운영, 배포 및 수명주기

7.1 헤드리스 CUI 툴링 및 설정 마법사

CLI를 통한 완전한 원격 관리:

  • roamswitch server status: 전체 30개 검사 진단 출력(JA/EN).
  • roamswitch server setup: 포트 및 알림을 위한 대화형 터미널 마법사.
  • roamswitch server config show / set <key> <val>: Ansible/Terraform을 위한 스크립트 가능한 자동화입니다.
  • roamswitch server test-notify [all|telegram|line|webhook]: 엔드투엔드 알림 프로브.

7.2 포장

공식 Debian/Ubuntu .deb 리포지토리, RHEL/Fedora .rpm 리포지토리 및 Arch Linux AUR(roamswitch-server-bin)을 통해 배포됩니다.

§8결론

RoamSwitch Server Edition은 Linux 서버 인프라를 위한 완벽한 방어 경계를 제공합니다. 즉, Zero Telemetry 개인 정보 보호, 인바운드 기본 삭제, 중요 경로 FIM 및 사전 커널 권한 에스컬레이션 완화를 통해 최신 클라우드 노드에 통합된 자율 방어를 제공합니다.

사이버 공격자가 노리는 공격 벡터의 전 단계(초기 정찰, 침입, 권한 상승, 지속화)에 대해 다층 방어와 자율적 봉쇄(Air-Gap)를 실현하는 차세대 Linux 서버 보안 표준입니다.

이 문서는 RoamSwitch Server Edition v1.3.2(인바운드 기본 차단 / Critical Path FIM / guard.yaml 정책 엔진 / 커널 LPE 강화 / eBPF 런타임 모니터링 / Air-Gap 세이프티 타이머) 시점의 구현을 기준으로 합니다. 항목별 변경 이력은 roamswitch-support의 CHANGELOG를 참조하십시오. 최신 정보는 lafine.net/linux를 참조하십시오.