ROAMSWITCH SERVER 1.1.0+ · 최종 업데이트: 2026-09-18

RoamSwitch Server Edition 운영 매뉴얼

Cloud VPS(AWS, GCP, Azure, Linode, DigitalOcean), 베어메탈 데이터 센터 및 컨테이너 호스트에 대한 공식 설치, 배포 및 운영 참조입니다.

1. 개요 및 요구사항

RoamSwitch Server Edition은 공용 인터넷에 노출되는 Linux 서버용으로 설계된 헤드리스(GUI 종속성 없음) 자율 방어 및 무결성 모니터링 제품군입니다.

Wi-Fi 상태에 따라 프로필을 동적으로 전환하는 클라이언트 버전과 달리 서버 버전은 인바운드 기본 삭제, 중요 경로 파일 무결성 모니터링(FIM), 예방적 커널 LPE 완화(Frag Gap), eBPF 런타임 위협 감지, SSH 잠금 방지 및 자동화된 다중 채널 긴급 경고(Telegram/LINE/Webhook)을 시행합니다.

제로 텔레메트리 아키텍처
RoamSwitch는 제로 진단 원격 측정, 호스트 IP 메타데이터, 파일 해시 또는 시스템 로그를 외부 서버로 전송합니다. 데몬 바이너리에는 외부 네트워크 라이브러리가 없으므로 완전한 온프레미스 기밀성을 보장합니다.

시스템 요구사항

2. 설치 절차

공식 서명된 저장소를 사용하면 표준 시스템 패키지 관리자를 통해 자동 종속성 해결 및 원활한 업데이트가 보장됩니다.

2.1 APT(우분투/데비안/라즈베리파이 OS)

# 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 [arch=amd64,arm64 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-server

2.2 DNF / RPM (페도라 / RHEL / AlmaLinux / 록키 리눅스)

# 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-server

2.3 오픈수세(zypper)

sudo rpm --import https://lafine.net/rpm/RPM-GPG-KEY-roamswitch
sudo zypper addrepo https://lafine.net/rpm/opensuse/roamswitch.repo
sudo zypper refresh && sudo zypper install roamswitch-server
패키지 상호 배제(충돌)
Client Edition(roamswitch) 및 Server Edition(roamswitch-server)은 상호 패키지 충돌을 선언합니다. 헤드리스 서버 환경에서는 항상 roamswitch-server를 선택하십시오.

3. 초기 설정 및 서비스 확인

3.1 서비스 현황

설치 후 roamswitch-server.service은(는) 즉시 시작되고 시스템 부팅 시 활성화됩니다.

sudo systemctl status roamswitch-server.service

3.2 대화형 설정 마법사

아래 명령으로 대화형 설정 마법사를 실행하여 포트, 유지보수 소스 IP, 알림 채널, 격리 조치를 대화식으로 구성합니다(각 기본값을 적용하려면 Enter를 누르세요).

sudo roamswitch server setup
  1. 포트: SSH 유지보수 포트(기본값 22)와 공개 서비스 포트(기본값 80,443)를 각각 쉼표로 구분하여 입력합니다.
  2. 유지보수 소스 IP: SSH 배스천 또는 모니터링 IP/CIDR(예: 203.0.113.50/32)을 지정합니다. 비워 두면 모든 IP에서 SSH를 허용합니다.
  3. 알림 채널: Telegram 봇, LINE Messaging API 및/또는 범용 Webhook(Slack / Discord / Teams)을 각각 활성화합니다.
  4. 중대한 eBPF 이벤트에 대한 대응: isolate(호스트 격리), freeze(프로세스 정지), alert_only(알림만) 중에서 선택합니다. 저장 후 테스트 알림 전송 및 서비스 재시작 여부를 확인합니다.
  5. 커널 CVE 데이터 자동 업데이트(기본값 n): 컨테이너 격리 감사에 사용되는 커널 CVE 데이터베이스를 lafine.net에서 하루 한 번 익명으로(쿼리 문자열·쿠키·식별 헤더 없이) 가져올지 선택합니다. 비활성화 상태로 두어도 감사 자체는 내장된 기준선으로 동작합니다. Server Edition의 제로 네트워크 코드 정책에서 유일한 예외이며 기본값은 비활성화(옵트인)입니다.
  6. File Scan Guard 설정: 메일 중계·공유 폴더·업로드 대상의 바이러스 스캔(§13)을 활성화할지와 대상 디렉터리를 설정합니다. 선택 기능이며 기본값은 비활성화입니다.
  7. Resource Guard 설정: 네트워크에 공개된 서비스의 지속적인 RSS 증가(메모리 누수/DoS)나 크래시 루프를 탐지하는 리소스 고갈 가드의 활성화를 설정합니다.
  8. 상시 가동 핵심 보호 기능 안내 표시: 인바운드 기본 거부, FIM, eBPF 연동 등 마법사를 거치지 않고 항상 활성화되는 핵심 방어 기능 목록이 표시됩니다(입력 항목 없음).
  9. 조사 에이전트 연계(investigation) 설정: eBPF 중대 이벤트나 크리티컬 패스 FIM·의존성 락파일 변조 탐지(모두 통지 전용 판정 시)에 대해, 외부 AI 에이전트 CLI(Claude Code / agy / Codex CLI / OpenCode, 또는 사용자 지정 명령)에 1차 조사를 자동으로 위임할지 설정합니다(§10.1). 기본값은 비활성화입니다.
Telegram Chat ID 관련 참고 사항
슈퍼그룹의 Chat ID는 -100으로 시작하는 음수입니다(예: -1001234567890). curl -s "https://api.telegram.org/bot<token>/getUpdates" 응답의 "chat":{"id":...} 필드에서 올바른 값을 확인할 수 있습니다.

3.3 30개 항목 서버 보안 감사

sudo roamswitch status --server

방화벽 규칙, Frag Gap 완화, Yama LSM 제한, 권한 및 Docker 포트 노출에 대한 즉각적인 30회 검사 감사를 수행하여 0~100의 보안 점수 및 등급(S~C)을 생성합니다.

4. 방화벽 및 포트 규칙

설정 파일 /etc/roamswitch/server.conf는 민감한 정보를 보호하기 위해 권한 0600(root만 읽기/쓰기 가능)이 강제됩니다. 형식은 플랫한 key=value이며, [network]와 같은 섹션 헤더 줄은 무시됩니다.

# --- 방화벽 ---
ssh_ports=22                     # SSH 관리용 포트(긴급 격리 시에도 유지)
allowed_ports=80,443             # 공개 서비스 포트
whitelist_ips=203.0.113.10/32    # 유지보수 소스 IP / CIDR(비우면 전체 허용, 이전 이름 admin_source_ips 가능)
protect_docker_ports=true        # DOCKER-USER 보호(컨테이너의 방화벽 우회 차단)
preserve_ssh_on_isolation=true   # 긴급 격리 시에도 SSH 관리 경로 유지(false로 설정 시 완전 차단)

# --- eBPF 런타임 가드 ---
action_on_critical=isolate       # isolate | freeze(SIGSTOP+네트워크 차단) | alert_only
ebpf_socket_path=/run/roamswitch/events.sock

# --- Egress / C2 차단 & DNS 싱크홀 ---
egress_ip_blocklist_enabled=true # 기본값 true. 피드가 없으면 무해(아무것도 차단하지 않음)
dns_sinkhole_enabled=false       # 기본값 false(사내 DNS/split-horizon 환경을 깨지 않기 위해)
dns_sinkhole_provider=quad9      # quad9 | cloudflare | adguard | cleanbrowsing

# --- 컨테이너 격리 CVE 데이터(옵트인) ---
cve_kernel_map_updates_enabled=false # 기본값 false. 유일한 외부 통신 예외(1일 1회·익명)

# --- 알림 ---
telegram_enabled=false
telegram_bot_token=
telegram_chat_id=
line_enabled=false
webhook_enabled=false
webhook_url=

# --- 시스템 ---
language=ja
fim_check_interval_secs=300      # 이전 이름 scan_interval 가능

설정을 직접 편집한 경우 서비스를 재시작해야 반영됩니다(roamswitch-server는 reload를 지원하지 않음):

sudo roamswitch server restart

4.1 심각도별 정책(guard.yaml, 선택 사항)

action_on_critical만으로는 세밀한 제어가 부족한 경우 /etc/roamswitch/guard.yaml을 생성합니다(배포 템플릿은 /etc/roamswitch/guard.yaml.example). 파일이 없으면 server.confaction_on_critical로부터 동등한 정책이 자동으로 합성되므로 기존 운영에는 영향이 없습니다.

policies:
  on_warning:
    action: log_and_notify
  on_critical:
    server_action: isolate_process
    kill_process: true
    fallback_to_host_isolation_after_retries: 3   # 동일 프로세스가 재발하면 호스트 격리로 자동 승격
  on_emergency:
    action: isolate_host_all
    kill_process: true

server_safeguards:
  maintenance_ssh_ports: [22]
  safety_timer_secs: 300   # 호스트 격리 후 이 초 이내에 ack가 없으면 자동 복구(0이면 비활성화)

안전 타이머: 호스트 격리(Air-Gap)가 발동되면 관리자는 원인을 조사한 후 아래 명령으로 확인 응답(ack)합니다. safety_timer_secs 시간 내에 응답이 없으면, 오탐으로 인해 서버가 무기한 네트워크에서 차단된 채로 남지 않도록 RoamSwitch가 자동으로 격리를 해제합니다.

sudo roamswitch server ack

4.2 Egress/C2 차단 및 DNS 싱크홀

egress_ip_blocklist_enabled=true(기본값)이면 알려진 악성 IP로의 아웃바운드 연결을 nftables로 차단합니다. /var/lib/roamswitch/threatfeed/malicious_ips.txt(업데이트 메커니즘이 관리)의 피드를 우선 사용하며, 없으면 패키지에 포함된 빈 시드(/usr/share/roamswitch/threatfeed/)로 대체되므로, 피드가 실제로 채워지기 전까지는 기본값 true여도 아무것도 차단하지 않습니다.

dns_sinkhole_enabled=true로 설정하면 필터링 DNS 리졸버(Quad9 / Cloudflare / AdGuard / CleanBrowsing)로 강제 전환되어 알려진 악성 도메인 해석을 차단합니다. 사내 DNS나 split-horizon 구성을 깨뜨릴 수 있어 기본값은 false입니다.

4.3 착신 포트 스캔 탐지 가드

짧은 시간 안에 다수의 서로 다른 포트에 접속한 송신 IP를, nftables 로그 규칙과 journald의 대조로 탐지합니다(기본 활성화). 확도가 높은 스캔 발신지는 일정 시간 자동으로 차단할 수 있습니다. RoamSwitch Sensor(§10.1과는 별개 기능. 페어링된 Sensor에 의한 전체 포트 감사 프로브는 오탐 대책으로 제외됩니다)와 병용할 경우, Sensor 측 IP는 자동으로 제외됩니다.

# --- 착신 포트 스캔 탐지(기본 활성화) ---
port_scan_detect_enabled=true              # false로 비활성화
port_scan_detect_min_distinct_ports=15     # 이 수 이상의 서로 다른 포트로의 접속을 스캔으로 판정
port_scan_detect_window_secs=300           # 판정 집계 윈도우(초)
port_scan_block_enabled=true               # 탐지된 스캔 발신 IP의 자동 차단
port_scan_block_duration_secs=600          # 자동 차단의 지속 시간(초)

탐지 이력은 roamswitch port-scan 명령으로 확인할 수 있습니다.

5. SSH 잠금 방지 안전 장치

잘못된 방화벽 구성으로 인한 우발적인 잠금은 용납할 수 없는 운영상의 재앙입니다. RoamSwitch Server Edition에는 다계층 보호 기능이 통합되어 있습니다.

6. 컨테이너 보호(Docker/Podman)

Docker의 기본 동작은 표준 호스트 방화벽을 우회하여 컨테이너 포트(예: -p 8080:8080)를 인터넷에 직접 노출하는 사용자 지정 iptables 규칙을 만듭니다.

protect_docker_ports=true(기본값)일 때 RoamSwitch는 DOCKER-USER 체인 맨 앞에 검사 규칙을 삽입하여 컨테이너로 향하는 트래픽도 allowed_portswhitelist_ips 정책을 따르도록 합니다. 이를 통해 개발용 데이터베이스 컨테이너 등이 의도치 않게 외부에 노출되는 것을 확실히 방지합니다.

또한 docker events를 감시하는 실시간 가드가 --privileged로 시작된 컨테이너나 /var/run/docker.sock이 마운트된 컨테이너(컨테이너 탈출 위험)를 시작 직후 감지하여 알립니다. 별도 설정이 필요 없고 항상 활성화되어 있으며, 탐지는 알림만 수행합니다(자동 차단 없음).

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

SHA-256 해시를 사용하여 150개 이상의 필수 바이너리(/bin/login, /usr/bin/sudo, /usr/sbin/sshd), 인증 구성(/etc/shadow, /etc/pam.d/) 및 시스템 장치를 모니터링합니다.

7.1 수동 해시 검증

sudo roamswitch fim verify

7.2 이벤트 기반 탐지(즉시)

감시 대상 파일은 fanotify(FAN_CLASS_NOTIF, 쓰기 완료 이벤트)로 개별 감시되므로, 다음 주기 스캔을 기다리지 않고 변조가 발생한 순간 해시를 재확인합니다. 주기 스캔(기본값 fim_check_interval_secs=300초 간격)은 이벤트를 놓쳤을 경우의 백스톱으로 함께 유지됩니다.

7.3 OS 업데이트 시 자동 기준선 동기화

Debian/Ubuntu에서는 패키지 설치 시 /etc/apt/apt.conf.d/99roamswitch-fimDPkg::Post-Invoke 훅이 자동으로 구성됩니다. Fedora/RHEL/Rocky/AlmaLinux/openSUSE에서는 /var/lib/rpm을 감시하는 systemd.path 유닛(roamswitch-fim-update.path)이 동일한 역할을 합니다.

Debian/Ubuntu에서 /etc/apt/apt.conf.d/99roamswitch-fimDPkg::Post-Invoke 후크를 연결합니다. sudo apt upgrade를 통한 합법적인 패키지 업데이트는 FIM 기준을 자동으로 새로 고쳐 잘못된 긍정 경고를 제거합니다.

sudo roamswitch fim update

8. eBPF 런타임 가드 및 Falco 통합

커널 공간 eBPF 이벤트(Falco/Tetragon)에 연결하여 Frag Gap 커널 권한 에스컬레이션, 컨테이너 이스케이프 및 무단 역쉘을 탐지합니다.

8.1 안티 블로트 아키텍처

기존 보안 에이전트는 심각한 syslog 폭발과 디스크 마모로 어려움을 겪고 있습니다. RoamSwitch는 전용 UNIX 도메인 소켓(/run/roamswitch/events.sock)을 통해 Falco에 직접 연결됩니다.

8.2 자율 격리

심각한 공격이 감지되면 RoamSwitch는 즉시 SIGSTOP을 발행하여 문제가 되는 프로세스 PID를 동결하고 nftables Air-Gap 격리를 적용합니다.

9. 긴급알림(텔레그램/LINE/웹훅)

포트 이상, FIM 변조 또는 eBPF 억제 이벤트가 발생할 경우 외부 알림 채널에 즉각적인 경고를 전달합니다.

[notifications]
language = ja
# Telegram: 봇 토큰과 Chat ID
telegram_bot_token = "123456789:ABCdefGHIjklMNOpqrSTUvwxYZ"
telegram_chat_id = "-1001234567890"

# LINE: Messaging API 채널 액세스 토큰과 사용자 ID
line_channel_access_token = "YOUR_LINE_ACCESS_TOKEN"
line_user_id = "U1234567890abcdef1234567890abcdef"

# 범용 Webhook(Slack, Discord, Teams, 자체 모니터링 시스템)
webhook_url = "https://hooks.slack.com/services/T00/B00/XXXXX"

이러한 외부 통지 채널을 설정하지 않아도, 발송된 알림은 최근 1주일간 로컬에 보관됩니다. roamswitch notifications로 확인할 수 있습니다.

10. AI 에이전트/MCP 통합(모델 컨텍스트 프로토콜)

RoamSwitch Server Edition에는 roamswitch-mcp이 포함되어 있어 AI 에이전트(Claude, Gemini, Cursor)가 인프라 상태 및 상태를 모니터링할 수 있습니다.

읽기 전용 안전 보장
즉각적인 주입 공격으로 인해 인프라가 손상되는 것을 방지하기 위해 MCP 인터페이스는 엄격하게 읽기 전용입니다. AI 에이전트는 MCP를 통해 포트를 열거나 격리를 제거하거나 보안 구성을 변경할 수 없습니다. 교정을 위해서는 인증된 로컬 TTY 셸 액세스가 필요합니다.

구성 예(`claude_desktop_config.json`)

{
  "mcpServers": {
    "roamswitch": {
      "command": "/usr/bin/roamswitch-mcp",
      "args": []
    }
  }
}

10.1 조사 에이전트 연계(investigation, 1차 자동 조사의 AI 에이전트 위임)

§10의 roamswitch-mcp가 「사람의 AI 클라이언트로부터의 조회」를 위한 것이라면, investigation 연계는 데몬 자신이 탐지 이벤트를 계기로 외부 AI 에이전트 CLI를 자율적으로 기동하는 별도의 메커니즘입니다. 대상은 통지 전용으로 판정된(자동 격리·정지에 이르지 않은) eBPF 중대 이벤트, 그리고 크리티컬 패스 FIM·의존성 락파일 변조 탐지입니다. 활성화하면 데몬은 먼저 로컬 휴리스틱에 의한 1차 판정 리포트(오탐 가능성·근거·다음 조사 단계)를 생성한 뒤, 이를 첨부하여 설정된 AI 에이전트 CLI를 서브프로세스로 기동해 추가 조사와 요약을 위임합니다. 기본값은 비활성화입니다.

# /etc/roamswitch/guard.yaml에 추가(server.conf와는 별도 파일)
investigation:
  enabled: true
  command: "claude"                 # "claude" | "agy" | "codex" | "opencode" | 임의의 사용자 지정 명령
  args: ["-p"]                      # 프롬프트는 자동으로 마지막 인수로 추가됩니다
  timeout_secs: 180

같은 내용을 sudo roamswitch server setup의 대화형 마법사(§3.2 마지막 단계)에서도 설정할 수 있습니다. 도구는 Claude Code(claude -p) / agy(agy -p --dangerously-skip-permissions) / Codex CLI(codex exec) / OpenCode(opencode run) 프리셋 또는 임의의 사용자 지정 명령 중에서 선택합니다. 재실행 시 저장된 설정에서 해당 프리셋이 자동 선택됩니다.

프롬프트 인젝션에 대한 주의
investigation 연계는 탐지 이벤트의 세부 정보(프로세스 이름·파일 경로 등, 공격자가 부분적으로 제어할 수 있는 문자열을 포함할 수 있음)를 AI 에이전트에 전달하는 프롬프트의 일부로 넘깁니다. 특히 --dangerously-skip-permissions 등 권한 확인을 생략하는 모드로 도구를 실행하는 설정은, 악의적인 입력에 의해 에이전트가 의도하지 않은 동작을 수행할 위험을 높입니다. 마법사는 agy 선택 시 이 주의사항을 표시합니다. 신뢰할 수 없는 로그 입력 경로가 있는 환경에서는 권한 확인을 생략하지 않는 도구 설정을 권장합니다.

네트워크가 차단된 동안(Air-Gap 발동 시 등, isolate_host_all에 해당하는 상태)에는 investigation 연계가 호출되지 않습니다.

11. CLI 명령 치트 시트

명령 권한 설명
sudo roamswitch status --server root 30개 항목의 서버 상태 점수 표시 및 분석 내역 확인
sudo roamswitch ports root 열린 청취 포트 및 바인딩된 프로세스를 감사합니다.
sudo roamswitch fim verify root 중요한 경로 시스템 파일의 SHA-256 무결성 확인
roamswitch notifications 사용자 최근 1주일간의 알림 기록(발송된 모든 경고)을 표시
sudo roamswitch server setup root 대화형 초기 구성 마법사 실행
sudo roamswitch fim update root FIM SHA-256 기준 데이터베이스 새로 고침
sudo roamswitch server config set <key> <value> root 설정 키를 하나 변경하고 저장합니다(목록은 §4 참조)
sudo roamswitch airgap enable / disable root Air-Gap 긴급 차단을 수동으로 실행/해제
sudo roamswitch emergency-restore 루트 eBPF·방화벽 긴급 격리를 모두 해제하고 초기 기준선으로 복원
roamswitch port-scan 일반 착신 포트 스캔 탐지 가드(§4.3)의 탐지 이력(송신 IP, 자동 차단 여부·지속 시간)을 표시
roamswitch sensor [key|list|pair|unpair|request-audit|results] 일반/root RoamSwitch Sensor와의 페어링 코드 방식 상호 신뢰. pair --addr <IP> --code <코드>로 페어링, request-audit로 능동적 취약점 감사를 요청(결과는 results로 취득). sensor_pairing_enabled: true(기본 OFF)가 필요합니다. 자세한 내용은 Sensor 운영 매뉴얼을 참조하십시오

12. 문제 해결 및 FAQ

Q1. RoamSwitch가 예기치 않게 SSH 세션 연결을 끊습니까?

아닙니다. RoamSwitch는 기존 ESTABLISHED/RELATED 연결 상태와 ssh_ports(기본값 22)를 무조건 허용합니다. 심각한 공격으로 Air-Gap 긴급 격리가 발동되더라도 preserve_ssh_on_isolation=true(기본값)에 의해 관리 세션은 유지됩니다.

Q2. 실수로 잠긴 경우 어떻게 다시 액세스할 수 있나요?

클라우드 제공업체의 웹 관리 콘솔(VNC/시리얼 콘솔)로 로그인한 뒤 sudo roamswitch emergency-restore로 긴급 격리를 해제하거나, sudo systemctl stop roamswitch-server로 서비스를 중지하세요.

Q3. 새로 추가된 웹 서비스(예: Nginx)에 대한 포트를 어떻게 노출합니까?

sudo roamswitch server config set allowed_ports 80,443,3000을 실행하거나(또는 /etc/roamswitch/server.conf를 직접 편집) sudo roamswitch server restart를 실행하세요.

13. File Scan Guard(메일 릴레이·공유 폴더·업로드 대상 보호)

메일 릴레이, Samba/NFS 공유, 파일 업로드 대상 등 다른 사람에게 전달할 파일을 저장하는 디렉터리가 있는 경우에만 관련 있는 선택적 기능입니다. 내장 YARA 엔진은 외부 의존성 없이 clamav_scan_dirs를 상시 스캔하며, clamav_enabled=true로 설정하면 ClamAV의 2차 검사도 추가됩니다. 확인된 위협은 자동으로 /var/lib/roamswitch/quarantine에 격리되고 운영자에게 알림이 전송됩니다.

# --- File Scan Guard(ClamAV, 옵트인) ---
# 내장 YARA 엔진은 항상 clamav_scan_dirs를 무조건 스캔합니다.
clamav_enabled=false             # true로 설정하면 clamdscan을 통한 추가 검사 활성화
clamav_scan_dirs=                # 스캔 대상 절대 경로(쉼표로 구분)
clamav_scan_interval_secs=86400  # 스캔 간격(초, 최소 3600)
clamav_freshclam_interval_secs=7200  # 시그니처 DB 자동 업데이트 간격(초, 최소 1800)

대화형 마법사 sudo roamswitch server setup에서도 설정할 수 있으며, get_file_scan_guard_status MCP 도구로 설정 및 격리 상태를 확인할 수 있습니다.

14. Log Audit(로그 패턴 이상 탐지 및 알림)

journalctl을 주기적으로 스캔하여 로그 메시지를 템플릿화하고, 신규 패턴(이전에 없던 로그 형태)과 빈도 이상(통계적 급증, Z-score > 3.0)을 탐지합니다. 추가 데몬이나 외부 의존성이 필요 없는 경량 방식이므로 기본적으로 활성화되어 있습니다. 탐지 시 File Scan Guard 및 FIM과 동일한 알림 채널(Telegram / LINE / Webhook)로 통지됩니다. 로그에 포함될 수 있는 API 키나 토큰은 알림 본문에 포함되기 전에 자동으로 마스킹됩니다.

# --- Log Audit (기본적으로 활성화) ---
log_audit_enabled=true           # false로 비활성화
log_audit_interval_secs=1800     # 스캔 간격(초, 최소 300)

대화형 마법사 sudo roamswitch server setup에서도 설정할 수 있으며, roamswitch audit-logs CLI 명령 또는 audit_security_logs MCP 도구로 최신 탐지 결과를 확인할 수 있습니다.

← 서버 버전 화이트페이퍼 Linux 버전 설치 페이지로 →