RoamSwitch Sensor 운영 매뉴얼
LAN에 설치하는 것만으로 동일 세그먼트의 신규 기기 출현·스푸핑을 탐지하고, RoamSwitch가 설치된 단말(Mac / Linux Client / Server Edition)에 대해서는 능동적인 취약점 감사를 수행하는 네트워크 센서의 도입·운영 가이드입니다. apt / dnf 패키지로 배포 중입니다.
1. 개요 & 포지셔닝
RoamSwitch(Mac / Linux Client / Server Edition)는 모두 호스트에 상주하는 에이전트 형태입니다. 여기에는 구조적인 사각지대가 두 가지 있습니다.
- 단일 호스트의 자가 진단에는 원리적인 사각지대가 있습니다: "외부에서는 닫혀 있지만 같은 LAN 상의 다른 단말에서는 훤히 보이는" 횡적 이동(lateral movement) 위험은, 호스트 스스로가 자신만을 보고 있어서는 탐지할 수 없습니다.
- RoamSwitch를 설치할 수 없는 기기가 있습니다: IoT 기기(네트워크 카메라, 스마트 플러그, 복합기), 방문자·BYOD 단말, 네트워크 장비 자체, 임베디드 기기 등.
RoamSwitch Sensor는 LAN에 설치하는 전용 노드로서 이 두 가지 사각지대를 메우는 것을 목표로 하는 제품입니다. 현재 실제로 구현·동작 확인이 된 것은 동일 LAN 상의 RoamSwitch 설치 단말에 대한 능동적인 취약점 감사와, Sensor 자신의 ARP 테이블을 기점으로 한 신규 기기 출현·스푸핑의 수동적 탐지의 2가지뿐입니다(§6에서 설명하는 대로, LAN상의 모든 기기를 능동적으로 스캔하여 가시화하는 기능이 아닙니다). EDR이 아니라 경량 NDR(Network Detection & Response)과 자체 개발한 실증형 취약점 스캐너를 결합한 제품으로 설계하고 있습니다.
자기 방어 기능은 구현하지 않습니다(의도적인 설계 결정). Sensor 자체에 대한 공격 대책이 필요한 경우, 동일 머신에 RoamSwitch for Linux의 Server Edition을 별도로 설치할 것을 권장합니다. 두 프로세스는 완전히 독립적으로 공존할 수 있습니다.
2. 현재 동작 확인 환경
- 지원 OS: Debian 12 (bookworm) 이상 / Ubuntu 22.04 이상(apt), Fedora / RHEL 계열(dnf).
x86_64(amd64)만 지원하며,arm64는 아직 지원하지 않습니다. - 예상 하드웨어(향후 계획): 실제 운용 시에는 팬리스 N100/N150 계열 미니PC 등, 상시 가동에 적합한 저전력 기기를 상정하고 있지만, 현시점에서는 이를 전제로 한 전용 빌드·제공은 하지 않습니다.
- 네트워크 배치: 감시 대상 LAN 세그먼트에 물리적 또는 논리적으로 연결되어 있어야 합니다(
roamswitch-sensor.service는 호스트 네트워크에서 상주합니다 — ARP 테이블을 직접 관측해야 하기 때문입니다). 또한 단말 측의 페어링・감사 요청을 받기 위해 고정 IP 주소(정적 할당 또는 DHCP 서버 측 주소 예약)로 운용하는 것이 필수입니다. TCP50543포트에서 대기합니다. - 리소스 사용량: 상주 메모리는 수십 MB 정도이며, 유휴 시 CPU 부하는 매우 가볍습니다.
- 선택 사항:
nmap(NSE 보완 진단에 사용됩니다. 설치되어 있지 않아도 다른 기능은 정상적으로 동작합니다).
3. 설치 & 시작
공식 서명된 패키지 저장소에서 roamswitch-sensor 패키지를 설치합니다. 설치 후 roamswitch-sensor.service(systemd)가 자동으로 활성화·시작됩니다.
3.1 APT(Ubuntu / Debian)
# 1. 저장소 서명 키 등록
curl -fsSL https://lafine.net/apt/roamswitch-archive-keyring.asc \
| sudo gpg --dearmor -o /usr/share/keyrings/roamswitch-archive-keyring.gpg
# 2. 저장소 추가
echo "deb [signed-by=/usr/share/keyrings/roamswitch-archive-keyring.gpg] https://lafine.net/apt stable main" \
| sudo tee /etc/apt/sources.list.d/roamswitch.list
# 3. 설치
sudo apt update && sudo apt install roamswitch-sensor
3.2 DNF / RPM(Fedora / RHEL)
# 1. GPG 키 가져오기
sudo rpm --import https://lafine.net/rpm/RPM-GPG-KEY-roamswitch
# 2. 저장소 설정 파일 추가
sudo curl -fsSL -o /etc/yum.repos.d/roamswitch.repo https://lafine.net/rpm/fedora/roamswitch.repo
# 3. 설치
sudo dnf install roamswitch-sensor
3.3 시작 확인
systemctl status roamswitch-sensor.service
sudo roamswitch-sensor status
3.4 CLI / TUI 실행
CLI(roamswitch-sensor)와 대화형 TUI(roamswitch-sensor-tui)는 설치 후 바로 실행할 수 있습니다.
sudo roamswitch-sensor status
sudo roamswitch-sensor-tui
ROAMSWITCH_SENSOR_PASSIVE_CAPTURE_IFACE 환경 변수(systemctl edit roamswitch-sensor.service로 설정)에 대상 인터페이스 이름을 지정하면, 해당 인터페이스상의 Ethernet/IPv4 헤더를 관측하여 신규 기기 출현이나 알려진 악성 IP와의 통신을 탐지합니다(§6.1 참조). 기본값은 비활성화입니다.4. 페어링(페어링 코드 방식)
Sensor는 초기 상태에서 아무것도 신뢰하지 않습니다. 페어링은 Sensor 운영자가 발급하는 1회용 페어링 코드를 사용해 이루어집니다. 「Sensor가 이 단말에 대해 능동적인 취약점 감사를 실행해도 된다」는 신뢰 관계는, 단 한 번의 페어링 조작으로 양방향에 동시에 성립합니다(한쪽 방향만의 신뢰라는 상태는 존재하지 않습니다).
전제 조건: Sensor는 고정 IP 주소(정적 할당 또는 DHCP 서버 측 주소 예약)로 운용해 주십시오. 단말은 페어링 시점에 확인한 Sensor의 IP 주소로 이후에도 직접 접속하므로(mDNS 등을 통한 자동 탐색은 수행하지 않습니다), Sensor 측 IP가 바뀌면 재페어링이 필요합니다. 엔드포인트 측은 동적 IP를 유지해도 무방합니다.
4.1 페어링 코드 발급(Sensor 측)
# Sensor 측에서 실행(TUI에서는 c 키)
sudo roamswitch-sensor issue-code
8자리(대문자 영숫자, 오독하기 쉬운 0/O/1/I/L은 제외)의 1회용 코드가 발급됩니다. 발급 후 10분이 지나면 실효되는 1회 한정 코드이므로, 구두나 채팅 등 임의의 아웃오브밴드 수단으로 단말 측 운영자에게 신속히 전달해 주십시오.
4.2 코드를 사용한 페어링(엔드포인트 측)
# 엔드포인트 측 (roamswitch-linux)
sudo roamswitch sensor pair --addr <Sensor 고정 IP 주소> --code <페어링 코드>
Mac판에서는 메뉴 바의 「🔍 RoamSwitch Sensor 페어링…」에서 Sensor의 IP 주소와 페어링 코드를 입력해 GUI로 동일한 작업을 수행할 수 있습니다.
페어링이 성립하면 이후의 능동적 취약점 감사・감사 결과 취득은 모두 Ed25519 서명으로 인증됩니다. 코드를 알고 있는 단말 측과, 그 코드를 발급한 Sensor 측 양쪽 모두 이 시점부터 서로를 신뢰합니다.
issue-code로 새 코드를 발급받으십시오.4.3 수동 페어링(공개 키를 직접 파악하고 있는 경우)
Sensor 운영자가 단말의 공개 키와 주소를 이미 파악하고 있는 경우, 페어링 코드 교환 없이 Sensor 측에서 직접 등록할 수도 있습니다(일반적으로는 4.2의 코드 방식을 사용해 단말 측에서 페어링하도록 하는 편이 간편합니다). 자신의 공개 키와 주소는 다음 명령으로 확인할 수 있습니다.
# 엔드포인트 측에서 자신의 공개 키/주소 확인
sudo roamswitch sensor key
# Sensor 측에서 자신의 공개 키/주소/MAC 주소 확인
sudo roamswitch-sensor status
# Sensor 측
sudo roamswitch-sensor pair <전체 공개 키> --addr <IP 주소> --confirm
5. 능동적 취약점 감사
페어링된 엔드포인트에 대해, Sensor가 비파괴적인 실증형 취약점 진단을 실행합니다. 파괴적인 작업(데이터 쓰기·삭제, 서비스 중지)은 일절 수행하지 않습니다.
sudo roamswitch-sensor scan <공개 키 또는 그 앞부분>
감사는 4단계로 구성되어 있습니다.
- 전체 포트 스캔: 대상 호스트에서 열려 있는 TCP 포트를 남김없이 탐지합니다.
- 기존 시그니처 진단: Redis / dockerd / Memcached / MongoDB / Elasticsearch / CouchDB / Jenkins / VNC의 인증 없는 노출 확인, SMTP 오픈 릴레이 진단(
MAIL FROM/RCPT TO만 전송하고DATA는 전송하지 않는 안전한 방식), 개발 서버의 CORS 설정 오류·경로 순회·오픈 리다이렉트 진단 등, 알려진 취약점 패턴에 대한 비파괴적인 실증 확인을 수행합니다. - 범용 배너 취득: 위 시그니처로 커버되지 않는 열린 포트에 대해, 연결만으로 배너 문자열을 취득합니다(데이터 전송은 하지 않습니다).
- nmap NSE 보완 진단:
nmap --script safe를 통한 광범위한 프로토콜 대응 보완 진단입니다. 호스트에nmap이 설치되어 있으면 자동으로 실행됩니다(설치되어 있지 않으면 아무 동작도 하지 않습니다).
감사 결과는 매번 /var/lib/roamswitch-sensor/scan_history.json에 기록되며(탐지 여부와 관계없이, 그 시점에 문제가 없었다는 것도 기록의 가치가 있기 때문입니다), CLI 또는 TUI에서 열람할 수 있습니다.
roamswitch-sensor history
sudo roamswitch-sensor report <공개 키 또는 그 앞부분> --out /tmp/report.md
5.1 클라이언트 측에서의 감사 요청(pull 방식)
페어링된 단말 측에서 Sensor에 능동적 취약점 감사를 능동적으로 요청할 수도 있습니다. Mac판은 메뉴 바의 「Sensor에 감사 요청」, Linux판은 다음 명령을 사용합니다.
sudo roamswitch sensor request-audit
Sensor가 감사를 실행한 후, 단말 측은 요청 5분 후부터 5분 간격으로 최대 5회까지 결과를 가지러 갑니다(최종 확인은 최대 25분 후). 취득한 결과는 단말 측에도 로컬로 저장됩니다.
roamswitch sensor results
Mac판에서는 설정 화면의 「감사 결과」 목록, 또는 MCP 도구 get_sensor_audit_results를 통해 AI 에이전트가 대응 계획을 세울 때의 입력으로도 사용할 수 있습니다. Sensor 측에서 페어링이 해제된 경우 등, 결과 제공이 명시적으로 거부되는 경우도 있습니다(§10 Q6 참조).
6. 수동적 ARP 모니터링 & LAN 가시화
Sensor 자신이 보유한 ARP 테이블(/proc/net/arp에 해당)을 정기적으로 스냅샷하여, 이전과의 차이에서 「지금까지 본 적 없는 신규 IP/MAC의 출현」과 「기존 IP에 대한 MAC 주소 변경(게이트웨이 스푸핑 등의 징후)」 2가지 이벤트를 탐지합니다. 능동적인 패킷 송신은 하지 않으며, Sensor가 과거에 어떤 형태로든 통신한 기기만이 대상이 됩니다(LAN상의 모든 기기를 능동적으로 발견·열거하는 기능이 아닙니다). 기기의 종류(IoT 기기 여부 등)를 판별하는 기능은 없으며, 단순히 IP/MAC 변화만을 탐지합니다.
roamswitch-sensor arp-events
탐지된 이벤트는 TUI의 「ARP Events」 탭에서도 목록으로 확인할 수 있습니다. 「신규 기기 출현」과 「기존 IP의 MAC 주소 변경(스푸핑 의심)」 두 종류를 구분하여 표시합니다.
6.1 수동적 LAN 가시화 확장(옵트인)
위의 ARP 모니터링은 「Sensor 자신이 과거에 통신한 기기」만을 대상으로 하지만, ROAMSWITCH_SENSOR_PASSIVE_CAPTURE_IFACE 환경 변수로 대상 인터페이스를 지정하면, 해당 인터페이스상의 Ethernet/IPv4 헤더를 관측(페이로드는 보지 않음)하여 다음을 탐지합니다.
- 신규 기기의 수동 관측: ARP 모니터링으로는 커버할 수 없는, Sensor 자신이 직접 통신하지 않은 기기의 출현. 브로드캐스트·멀티캐스트 트래픽으로부터 학습합니다.
- 알려진 악성 IP와의 통신 탐지: 목적지 IP가 로컬 위협 피드(RoamSwitch 본체의 Egress Guard와 동일한 형식)에 일치하는 통신을 탐지합니다(탐지만 하며 차단은 하지 않습니다).
sudo systemctl edit roamswitch-sensor.service
# [Service]
# Environment=ROAMSWITCH_SENSOR_PASSIVE_CAPTURE_IFACE=eth0
sudo systemctl restart roamswitch-sensor.service
roamswitch-sensor passive-events
7. CLI 명령어 빠른 참조
| 명령어 | 기능 개요 |
|---|---|
roamswitch-sensor status |
Sensor 자신의 공개 키·IP 주소·MAC 주소, 페어링 수·ARP 이벤트 수·보류 중인 감사 요청 수를 표시 |
roamswitch-sensor issue-code |
1회용 페어링 코드를 발급(10분간 유효) |
roamswitch-sensor list |
페어링된 단말의 목록을 표시 |
roamswitch-sensor pair <public-key> [--addr <IP>] [--name <name>] --confirm |
공개 키와 주소를 직접 지정해 단말을 수동으로 페어링(일반적으로는 issue-code를 사용해 단말 측에서 자동으로 페어링하게 하는 편이 간편합니다) |
roamswitch-sensor unpair <public-key> |
페어링 해제 |
roamswitch-sensor scan <public-key> |
페어링된 단말에 능동적 취약점 감사를 실행 |
roamswitch-sensor history [public-key] |
감사 이력을 표시(공개 키를 생략하면 전체 단말) |
roamswitch-sensor report <public-key> [--out <file>] |
가장 최근 감사 결과를 Markdown 리포트로 출력 |
roamswitch-sensor arp-events |
탐지된 ARP 이벤트(신규 기기·스푸핑 의심)를 표시 |
roamswitch-sensor config [show | set <키> <값>] |
설정 표시·변경(정기 감사·알림·보존 기간·컬렉터, 데몬 재시작 불필요) |
roamswitch-sensor diff [공개 키] |
이전 감사와의 차이 표시(신규 발견·해소·새로 열린 포트·도달 불가 의심) |
roamswitch-sensor export <scans|inventory|audit-log|all> … |
감사 증적을 CSV / JSON / 인쇄용 HTML로 내보내기 |
roamswitch-sensor audit-log [verify] |
작업·승인 로그 표시. verify로 해시 체인 변조 감지 |
roamswitch-sensor notify-test |
설정한 알림 대상(Webhook / syslog)에 테스트 알림을 보내 연결 확인 |
CLI는 일본어 / 영어에만 대응합니다(LANG 환경 변수를 따릅니다).
8. TUI 조작 가이드
대화형 TUI(roamswitch-sensor-tui)는 10개 언어를 지원합니다. Tab 키(역방향은 Shift+Tab)로 6개 탭을 전환합니다: 신뢰됨(각 단말의 최신 감사 상태) / 네트워크 장치(LAN의 모든 기기와 메모) / ARP 이벤트 / 감사 기록 / 변경(이전 감사 이후의 변화 — 신규 발견은 빨강, 해소는 초록, 도달 불가 의심은 노랑) / 작업 로그(누가 언제 무엇을 승인·실행했는지, 상단에 해시 체인 검증 결과 표시).
| 키 | 동작 |
|---|---|
Tab | 탭 전환 |
↑↓ / j k | 항목 선택 |
c | 페어링 코드 발급(10분간 유효). 화면에는 엔드포인트에서 실행할 명령 sudo roamswitch sensor pair --addr <이 Sensor의 IP> --code <코드>가 실제 값이 채워진 상태로 표시됩니다 |
u | 페어링 해제 |
s | 선택 중인 단말에 능동적 취약점 감사를 실행 |
n | (네트워크 구성 탭) 선택한 기기에 이름·용도·위치 등의 메모를 등록(메모가 있는 기기는 '파악됨'으로 취급) |
r | 지금 LAN 기기를 다시 스캔(ARP 스윕, 기본적으로 1시간마다 자동 실행) |
e | 감사 증적 내보내기(감사 결과·기기 대장·작업 로그의 CSV, HTML 보고서, JSON). 소유자만 읽을 수 있는 새 파일로 /tmp에 생성되며, 내보낸 사실도 작업 로그에 기록됩니다 |
Enter | 선택한 행의 상세 표시(감사 이력·변경·ARP 이벤트·기기·작업 로그) |
w | (상세 표시 중) 내용을 파일로 내보내기 |
L | 표시 언어 선택 |
q | 종료 |
9. 신뢰 모델 & 보안 설계
- TOFU(Trust On First Use): 페어링 코드 자체는 암호학적인 소유 증명이 아니라, Sensor 운영자가 발급한 코드를 아웃오브밴드(구두・채팅 등)로 전달받은 운영자 자신의 판단에 의한 확인입니다. Bluetooth 페어링의 명시적인 상호 확인 모델과 유사한 설계입니다. 페어링이 성립한 시점에 교환된 공개 키로, 이후 프로브・요청의 정당성을 검증합니다.
- 파괴적인 조작 없이도, 파괴적인 조작을 허용하는 구멍은 발견할 수 있는 설계: 능동적 취약점 감사는 모두 비파괴적입니다(데이터 쓰기·삭제, 서비스 중지를 일절 수행하지 않습니다). 다만 「인증 없이 쓰기 가능」「오픈 릴레이로 동작」과 같이, 악용될 경우 파괴적인 조작을 허용해 버리는 설정 결함 자체는 탐지합니다.
- 오탐 대책(자체 감사 제외): 페어링된 Sensor 자신에 의한 전체 포트 감사를, 착신 포트 스캔 탐지 가드(RoamSwitch 본체 측 기능)가 정찰 행위로 오인하지 않도록, 송신 IP 대조에 의한 제외 처리가 내장되어 있습니다(IP는 어디까지나 자동 차단을 회피하기 위한 대조에만 사용하며, 신뢰 판정 자체에는 사용하지 않습니다).
- 설정하지 않으면 아무것도 전송되지 않습니다: 발견한 기기 정보·감사 결과·ARP 이벤트는 기본적으로 Sensor 자체의 로컬 저장소에만 저장되며 Lafine이나 제3자 서버로는 전송되지 않습니다. §11의 알림(Webhook·syslog)과 중앙 컬렉터 전송은 운영자가 전송 대상을 설정한 경우에만, 자사 조직의 대상으로 이루어집니다.
10. 문제 해결 & FAQ
Q1. 페어링 코드를 입력해도 거부됩니다.
다음 3가지 원인을 생각할 수 있습니다: (1) 발급 후 10분이 지나 실효됨(Sensor 측 운영자에게 issue-code로 재발급을 요청하십시오), (2) 코드 입력 실수(오독하기 쉬운 0/O/1/I/L은 발급 시점에 제외되므로 코드에 포함될 수 없습니다), (3) --addr에 지정한 IP 주소가 Sensor의 현재 고정 IP 주소와 일치하지 않음.
Q2. NSE 보완 진단 결과가 비어 있습니다.
다음 두 가지 중 하나가 원인입니다: (1) 컨테이너에 nmap이 설치되어 있지 않음, (2) 실행은 되었지만 대상 포트에 해당하는 안전한 스크립트의 출력이 실제로 없었음. nmap NSE 보완 진단은 호스트에 nmap이 설치되어 있으면 자동으로 실행됩니다.
Q3. 감사가 완료될 때까지 얼마나 걸립니까?
전체 포트 스캔만이라면 수십 초 정도지만, 호스트에 nmap이 설치되어 있으면 NSE 보완 진단이 자동으로 더해지므로 대상의 열린 포트 수에 따라 최대 2분 정도 걸릴 수 있습니다. TUI에서는 실행 중인 경과 초가 계속 표시되므로 진행 상황을 확인하며 기다리실 수 있습니다.
Q4. 페어링했는데도 감사를 실행할 수 없습니다.
다음과 같은 원인을 생각할 수 있습니다: (1) 엔드포인트 측에서 sensor_pairing_enabled: true가 설정되어 있지 않음(기본값 OFF), (2) 페어링 후 Sensor의 고정 IP 주소가 바뀌어, 단말 측이 보유한 오래된 주소로는 접속할 수 없게 됨(재페어링이 필요합니다), (3) Sensor 측에서 unpair로 페어링이 해제됨. roamswitch sensor list(단말 측)와 roamswitch-sensor list(Sensor 측) 양쪽에서 상대가 등록되어 있는지 확인해 주십시오.
Q5. Sensor 자체는 RoamSwitch 본체(Client/Server Edition)와 함께 사용할 수 있습니까?
네. Sensor는 자기 방어 기능이 없는 설계이므로, 동일 머신에 RoamSwitch for Linux Server Edition을 함께 설치할 것을 권장합니다. 두 프로세스는 완전히 독립된 프로세스·데이터 저장소로 동작하며 충돌하지 않습니다.
Q6. roamswitch sensor results가 「페어링이 해제되었습니다」라고 표시됩니다.
Sensor 측에서 이 단말의 페어링이 unpair로 해제되었습니다. Sensor 운영자에게 새 페어링 코드를 발급받아, roamswitch sensor pair --addr <IP> --code <코드>로 다시 페어링해 주십시오.
11. 조직 규모 감사 운영 기능 (옵트인)
대규모 조직의 보안 담당자가 감사 증적과 변화 파악을 위해 사용하는 기능 모음입니다. 모두 초기 상태에서는 꺼져 있으며, Lafine이나 제3자에게는 아무것도 전송되지 않습니다. 알림·집계 대상은 모두 운영자가 설정한 자사 조직의 것입니다. 설정은 sudo roamswitch-sensor config set <키> <값>으로 하며(데몬 재시작 불필요, 변경 내용은 작업 로그에 기록됨) config show로 현재 값을 확인할 수 있습니다.
11.1 정기 감사와 이전 감사와의 차이
schedule.enabled를 true로 설정하면 페어링된 모든 단말을 자동으로 정기 감사합니다(기본 24시간마다: schedule.interval_hours, 실행 가능한 시간대: schedule.window_start_hour / window_end_hour — 현지 시각, 자정을 넘길 수 있음, 동시 실행 수: schedule.max_parallel). 감사할 때마다 이전 결과와 비교하며, 신규 발견(회귀)·해소·새로 열린 포트를 roamswitch-sensor diff로 확인할 수 있습니다. 이전에 열려 있던 포트가 모두 보이지 않게 된 경우는 '해소'가 아니라 도달 불가 의심으로 처리합니다(꺼진 기기와 모든 포트를 닫은 기기는 밖에서 구별할 수 없기 때문입니다).
무인 감사에서도 '동의한 단말만 감사한다'는 보장은 깨지지 않습니다. 단말의 IP는 DHCP에 의해 다른 기기에 할당될 수 있으므로, 단말이 마지막으로 인증(페어링 또는 서명된 감사 요청)한 시점의 MAC 주소를 저장하고, 정기 감사 전후에 같은 MAC이 그 IP에서 응답하는지 nmap의 실제 ARP 요청으로 확인합니다. 일치하지 않으면 감사하지 않고(또는 결과를 폐기하고) 알립니다. 수동 scan도 다른 기기로 넘어갔다는 증거가 있으면 거부합니다. 이 확인에는 nmap이 필요하며, 이 기능이 도입되기 전에 페어링한 단말은 다시 페어링하거나 서명된 감사 요청을 보낼 때까지 정기 감사 대상이 되지 않습니다. 같은 L2 세그먼트의 단말만 대상입니다.
11.2 알림 (Webhook·syslog)
회귀·신규 기기·ARP 스푸핑·의심스러운 통신 등을 notify.webhook_urls(Slack·Discord·Teams 등의 Incoming Webhook 또는 범용 JSON 수신 지점)와 notify.syslog.host / port / protocol(RFC 5424, UDP 또는 TCP)로 보냅니다. notify.min_severity(info / medium / high / critical)와 notify.cooldown_minutes(같은 이벤트의 재전송 간격)로 좁힐 수 있습니다. roamswitch-sensor notify-test로 전송 대상별 연결을 확인할 수 있습니다.
11.3 감사 증적 내보내기
roamswitch-sensor export <scans|inventory|audit-log|all> --format csv|json|html [--out 파일] [--endpoint 공개 키 앞부분] [--since 날짜]. html은 단일 파일로, 브라우저에서 열어 'PDF로 저장'하면 제출용 PDF가 됩니다. CSV는 스프레드시트 수식 주입에 대한 대책이 적용되어 있습니다. 기기 대장(inventory)에는 각 기기가 RoamSwitch 관리 하에 있는지(페어링됨) 나타내는 열이 붙습니다. 출력 파일은 소유자만 읽을 수 있으며(0600), 내보낸 사실 자체도 작업 로그에 기록됩니다.
11.4 작업·승인 로그 (변조 감지)
페어링·해제·감사 시작과 완료·설정 변경·거부된 접근을 실행자(UID / 단말 공개 키 / 접속 IP)와 함께 기록합니다. 각 행이 직전 행의 SHA-256을 포함하는 해시 체인이므로 편집이나 삭제는 roamswitch-sensor audit-log verify로 감지할 수 있습니다(이상이 있으면 종료 코드 2). 목록은 roamswitch-sensor audit-log [--limit N]. Webhook URL에는 토큰이 포함되기 쉬우므로 설정 변경 로그에는 값을 남기지 않습니다. 체인만으로는 끝부분 삭제를 감지할 수 없으므로 컬렉터(§11.6)에도 선두(일련번호와 해시)를 보냅니다.
11.5 보존 기간
retention.scan_history_days·retention.audit_log_days·retention.inventory_stale_days에 일수를 설정하면 오래된 감사 이력·작업 로그·오랫동안 보이지 않는 기기를 자동으로 삭제합니다(0 = 기간으로는 삭제하지 않음, 기본값). 메모를 등록한 기기는 대장에서 삭제되지 않습니다.
11.6 여러 Sensor 집계 (중앙 컬렉터, 선택 사항)
여러 거점에서 여러 Sensor를 운영하는 경우, 별도 호스트에서 roamswitch-sensor-collector(패키지에 포함, 기본 비활성)를 실행해 각 Sensor의 서명된 요약을 수집합니다.
# On the collector host (a separate host from the Sensor is recommended)
sudo systemctl enable --now roamswitch-sensor-collector # listens on 127.0.0.1:8443 by default
sudo roamswitch-sensor-collector token # read token for the dashboard
sudo roamswitch-sensor-collector enroll <Sensor public key> --name Tokyo --site Tokyo
# On each Sensor
sudo roamswitch-sensor config set collector.url https://collector.example.org:8443
sudo roamswitch-sensor config set collector.enabled true
- 등록(
enroll)한 Sensor의 Ed25519 서명이 있는 요청만 받아들입니다. 타임스탬프로 재전송도 거부합니다. - LAN 밖에 공개할 때는 TLS가 필요합니다.
/etc/default/roamswitch-sensor-collector의COLLECTOR_ARGS에--bind 0.0.0.0:8443 --tls-cert … --tls-key …를 지정하거나, TLS를 종단하는 리버스 프록시 뒤에서--allow-plain-http를 지정하세요. TLS 없이 127.0.0.1 이외에서 대기하려 하면 시작을 거부합니다. - 대시보드는 토큰으로 보호되며 거점별 필터, 심각도별 이벤트, CSV 내보내기를 제공합니다. 응답이 없는 Sensor와 감사 로그의 절단·되감기·분기가 감지된 Sensor를 강조 표시합니다(조사 후
clear-anomaly <공개 키>로 해제).