가이드 › TrapWatch
다른 언어 English · 日本語 · 한국어 · 简体中文
TrapWatch
SNMP 트랩 수신과, 이 컴퓨터 안에서 도는 이상 탐지 — 0.1.5
이 판에서 바뀐 것
- Linux:
.deb에 데스크톱 없는 서버용 헤드리스 모드가 들어갑니다 — 같은 화면을 브라우저로 보고, systemd 유닛도 함께 설치됩니다. 5장을 보세요. - 체험이 끝나면 이제 실제로 수신이 멈춥니다(전에는 계속 받고 있었습니다). 메인 화면이 그렇다고 알려 주고, 키를 넣으면 바로 다시 받습니다.
- 데이터 폴더를 지워도 30일 체험이 다시 시작되지 않습니다. 체험 시작 시각을 데이터 폴더 밖에도 기록하고, 가장 이른 기록을 따릅니다. 확인은 이 컴퓨터 안에서만 합니다.
- 맞지 않는 키가 저장돼 있어도 체험이 남아 있으면 수신을 멈추지 않습니다. settings.json 은 이제 TrapWatch 를 돌리는 계정만 읽을 수 있습니다.
- Windows 설치본은 Authenticode 서명과 타임스탬프가 들어가 있습니다.
1. 설치
설치할 기계에 맞는 것을 고르세요. 아래는 전부 최신판이고, 이전 판은 릴리즈 노트에 있습니다.
- Windows installer TrapWatch-0.1.5-x64.exe
- Linux · AppImage TrapWatch-0.1.5-x86_64.AppImage
- Linux · Debian/Ubuntu TrapWatch-0.1.5-amd64.deb
- macOS · Apple silicon TrapWatch-0.1.5-arm64.dmg
- macOS · Intel TrapWatch-0.1.5-x64.dmg
받은 파일을 확인하세요. 게시된 체크섬은 여기 있습니다: TrapWatch-SHA256SUMS.txt
macOS·Linux:
shasum -a 256 TrapWatch-0.1.5-x64.exe
Windows:
Get-FileHash -Algorithm SHA256 TrapWatch-0.1.5-amd64.deb
macOS 판은 Apple 공증을 받아 경고 없이 열립니다. Windows 설치본은 Authenticode 서명과 타임스탬프가 붙어 있습니다. 인증서가 새것이라 평판이 쌓일 때까지 SmartScreen 경고가 뜰 수 있습니다. 뜨면 추가 정보 → 실행을 고르세요.
2. 첫 실행
- TrapWatch 는 기본으로 UDP 1162 포트를 받습니다. 표준 트랩 포트는 162 지만 1024 미만이라 관리자 권한이 필요합니다. 1162 는 일반 사용자로 시작합니다.
- 트랩을 보낼 장비 — 스위치, 라우터, 방화벽, UPS — 의 SNMP 트랩 목적지를 이 컴퓨터의 IP 와 1162 포트로 설정합니다. 포트를 바꿀 수 없는 장비가 있으면 Settings → Receiving 에서 162 로 바꾸고 대신 권한을 주십시오.
- 트랩은 도착하는 대로 표시됩니다. 장비 목록을 먼저 만들 필요가 없습니다 — 포트에 닿는 것은 모두 받으므로, 몰랐던 장비도 말을 거는 순간 나타납니다.
- 아무것도 안 오면 대개 방화벽입니다(아래 항목). 실제로 받고 있는 포트는 화면 위쪽에 늘 떠 있고, 열지 못했으면 빨간 글씨로 이유를 말합니다.
모든 설치는 유료판 30일 체험으로 시작합니다. 미리 요구하는 것이 없습니다 — 카드도, 계정도, 메일 주소도.
3. 운영
커뮤니티 문자열
Settings → Receiving 에서 비워 두면 커뮤니티를 확인하지 않고 포트에 닿는 트랩을 모두 받습니다. 채워 넣으면 맞지 않는 트랩을 조용히 버리지 않고 거절로 셉니다 — “아무것도 안 온다”와 “전부 거절하고 있다”를 화면에서 구분할 수 있습니다. SNMP v1·v2c 에서 커뮤니티 문자열은 평문으로 흐릅니다. 보안 장치가 아니라 걸러내는 수단으로 보십시오.
SNMP 판
v1 과 v2c 입니다. v3 트랩은 받지 않습니다 — v3 는 장비마다 엔진 ID 와 자격 증명을 요구하는데, 그것이 바로 이 제품이 일부러 두지 않는 장비 목록입니다.
이상 탐지
앱 안에서, 이 컴퓨터 위에서 돕니다. 아무것도 올리지 않고 모델을 내려받지도 않습니다. 알려 주는 것은 셋입니다. 오르내림을 반복하는 링크(트랩 개수가 아니라 방향이 바뀐 횟수를 셉니다), 그 장비 자신의 이력에 비해 지나치게 많이 오는 트랩, 그리고 처음 보는 장비나 트랩 OID. 기준이 설 때까지는 아무 말도 하지 않습니다 — 30분쯤입니다. 처음 켠 날은 모든 것이 새것이고, 아무 때나 울리는 경보는 무시하는 법만 가르치기 때문입니다.
알림 규칙
규칙은 “찾을 줄 아는 것”을, 탐지는 “모르는 것”을 맡습니다. 규칙은 보낸 주소, 트랩 이름이나 OID, 최소 심각도로 걸립니다. 반복 억제는 규칙과 장비의 조합으로 걸리므로, 시끄러운 장비 하나가 다른 장비의 같은 사건을 묻지 않습니다.
모르는 트랩
벤더 고유 트랩은 받은 그대로 OID 로 보여 줍니다. 모르는 트랩에 설명을 지어 붙이지 않습니다 — 그럴듯한 추측은 사람을 엉뚱한 곳으로 보냅니다.
보관
트랩은 이 컴퓨터에 하루 한 파일로 쌓이고, 요금제를 이유로 지우지 않습니다. Settings → Retention 은 이던이 정하는 값입니다. 0 은 전부 보관한다는 뜻입니다. CSV 로 내보낼 수 있습니다.
언어
Settings → Interface language. 영어·일본어·한국어·중국어 간체를 켜 둔 채로 바꿀 수 있습니다. 장비가 보낸 것 — 주소, 트랩 OID, 인터페이스 이름 — 은 절대 번역하지 않습니다.
데이터가 있는 곳
TrapWatch 가 기록하는 것은 전부 그것이 도는 컴퓨터 안에 남습니다. 저희에게도, 분석 업체에도, 광고망에도 가지 않습니다.
라이선스 키
키는 결제 뒤 메일로 갑니다. 이 컴퓨터에서만 검증하므로 TrapWatch 는 라이선스 서버에 접속하지 않습니다 — 바깥으로 나갈 수 없는 망에서도 활성화됩니다. 30일 체험이 끝나도 이미 받아 둔 트랩은 계속 읽힙니다. 새 트랩을 받는 것만 멈춥니다. 멈춰 있는 동안은 알림도 Central 보고도 나가지 않고, 키를 넣으면 바로 다시 받습니다.
4. 방화벽
- Windows — 처음 물어볼 때 Defender 방화벽에서 개인 네트워크의 UDP 1162 를 허용합니다. 창을 닫았으면 Windows 보안 → 방화벽 및 네트워크 보호 → 앱 허용 에서 추가합니다. Windows Server 에서는 손으로 넣는 일이 많습니다:
New-NetFirewallRule -DisplayName "TrapWatch" -Direction Inbound -Protocol UDP -LocalPort 1162 -Action Allow - Linux — 들어오는 UDP 1162 를 엽니다. ufw 라면
sudo ufw allow 1162/udp. root 로 돌리지 않고 162 를 쓰려면sudo setcap 'cap_net_bind_service=+ep' /path/to/trapwatch - macOS — macOS 가 물으면 들어오는 연결을 허용합니다. 나가는 설정은 필요 없습니다.
5. 데스크톱 없는 서버에서 실행 (헤드리스)
데스크톱 앱은 그래픽 세션이 있어야 합니다. 그래픽 세션이 없는 리눅스 서버에서는 뜨지 않고 Missing X server or $DISPLAY 를 찍습니다. 이런 경우를 위해 리눅스 .deb 에는 헤드리스 모드도 들어 있습니다. 트랩을 똑같이 받고, 해독하고, 저장하고, 알리며, 같은 화면을 창 대신 브라우저로 보여 줍니다. AppImage 에는 들어 있지 않습니다.
포그라운드로 먼저 돌려 보기
.deb 를 설치하고(필요한 라이브러리는 apt 가 함께 설치합니다) 앱 옆에 설치된 래퍼를 실행합니다:
sudo apt install ./TrapWatch-*-amd64.deb
/opt/TrapWatch/trapwatch-headless
웹 화면 주소가 1회용 토큰과 함께 찍힙니다 — http://127.0.0.1:8162/?token=…. 한 번 열면 쿠키가 기억하므로 그다음부터는 http://127.0.0.1:8162/ 이면 됩니다. 주소를 잃어버리면 trapwatch-headless --show-url 이 다시 찍어 줍니다. 같은 기계에서 시험 트랩을 보내 보세요(snmptrap 은 net-snmp 도구에 있습니다: apt-get install snmp 또는 dnf install net-snmp-utils):
snmptrap -v 2c -c public 127.0.0.1:1162 '' 1.3.6.1.6.3.1.1.5.3 \
1.3.6.1.2.1.2.2.1.1.1 i 1 1.3.6.1.2.1.2.2.1.2.1 s "eth0"
인터페이스 1 의 linkDown 이며, eth0 의 “Link down” 으로 뜹니다.
내 컴퓨터에서 화면 열기
웹 화면은 127.0.0.1 에서만 듣습니다. SSH 터널을 연 뒤 토큰 주소를 내 브라우저에서 엽니다:
ssh -L 8162:127.0.0.1:8162 user@server
또는 HTTPS 리버스 프록시(nginx, Caddy)를 앞에 둡니다. 평문 HTTP 포트를 믿을 수 없는 망에 열지 마세요: 트랩 내용, 커뮤니티 문자열, Central 토큰이 그 포트를 지나갑니다.
서비스로 돌리기
래퍼 옆에 systemd 유닛이 설치되어 있습니다. 서비스 사용자를 만들고 유닛을 복사한 뒤 시작합니다:
sudo useradd --system --home /var/lib/trapwatch --create-home --shell /usr/sbin/nologin trapwatch
sudo cp /opt/TrapWatch/trapwatch-headless.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable --now trapwatch-headless
토큰이 붙은 웹 화면 주소는 저널에 찍힙니다: sudo journalctl -u trapwatch-headless.
162 포트
TrapWatch 는 기본으로 UDP 1162 를 듣고, 이 포트는 어느 사용자나 열 수 있습니다. 162 로만 보낼 수 있는 장비가 있다면 Settings 에서 포트를 162 로 바꾸고, /etc/systemd/system/trapwatch-headless.service 의 AmbientCapabilities=CAP_NET_BIND_SERVICE 줄 주석을 푼 뒤 서비스를 다시 시작합니다:
sudo systemctl daemon-reload
sudo systemctl restart trapwatch-headless
포트를 열지 못하면 그 이유가 저널과 화면 맨 위에 함께 나옵니다.
데이터가 있는 곳
서비스로 돌면 /var/lib/trapwatch/TrapWatch 에 트랩·설정·라이선스·화면 토큰이 있습니다. 손으로 실행하면 그 사용자의 데스크톱 앱과 같은 폴더(~/.config/TrapWatch)를 쓰므로, 한쪽에서 활성화한 라이선스가 다른 쪽에서도 유효합니다. 서비스는 자기 사용자로 돌기 때문에 라이선스 키는 그 웹 화면에서 한 번 넣습니다.
서버에는 키링이 없으므로 라이선스 키·알림 규칙·Central 토큰은 서비스 사용자만 읽을 수 있는 파일(권한 0600)로 저장되고, 커뮤니티 문자열이 든 settings.json 도 0600 으로 씁니다. 알릴 데스크톱이 없으니, 데스크톱 알림을 띄울 규칙은 대신 저널에 한 줄을 남깁니다. MeshWatch Central 은 데스크톱과 똑같이 동작하며, 서버에서는 이것이 알림 통로입니다.
자세한 내용은 래퍼 옆의 README-headless.txt 에 있고, 옵션은 trapwatch-headless --help 로 봅니다.
6. MeshWatch Central 에 연결
선택 사항입니다. Central 은 여러 제품의 알림을 하나의 받은함으로 모으고 장비 단위로 묶어 줍니다. Central 로 가는 것은 심각도·보낸 주소·한 줄 요약뿐입니다. varbind 는 보내지 않습니다 — 장비가 거기에 무엇이든 담을 수 있습니다 — 커뮤니티 문자열도 보내지 않습니다. 사실상 비밀번호이기 때문입니다.
Central 1.3.4 이상이 필요합니다. 그보다 옛 Central 의 Agents 에는 TrapWatch 가 없어 토큰을 발급할 수 없습니다.
- Central 의 Agents 를 열고 TrapWatch 를 고른 뒤 라벨을 입력하고 Issue token 을 누릅니다. 라벨은 어디서 가져오는 값이 아니라 설치본을 구분하려고 직접 짓는 이름입니다. 토큰은 한 번만 보여줍니다.
- TrapWatch 의 MeshWatch Central 설정을 열고 Central 주소를
http://<central-server>:8443형태로, 토큰과 함께 넣습니다. Central 이 같은 기계에서 돌지 않는 한localhost가 아니라 서버의 주소를 씁니다. - 알림을 Central 로 보내는 항목에 체크하고 저장한 뒤 Test connection 을 누릅니다. 성공이 떠야 합니다.
그 뒤로 발생하는 알림이 Central 에 뜹니다. 지난 알림은 소급되지 않습니다. 전체 절차는 MeshWatch Central 가이드.
7. 문제 해결
아무것도 안 들어온다
대개 방화벽입니다(4장). 그래도 안 되면 장비가 이 컴퓨터의 현재 로컬 IP 를 가리키는지 확인하세요. DHCP 임대로 주소가 바뀌었을 수 있습니다.
Central 연결 시험이 실패한다
bad-token 은 토큰이 틀렸거나 폐기된 것입니다 — 새로 발급하세요. unreachable 은 주소가 틀렸거나 방화벽에 막힌 것입니다. Central 서버에서 8443 포트가 열려 있어야 합니다. 리버스 프록시를 두지 않았다면 https:// 가 아니라 http:// 입니다. 현재 판에서는 이 결과가 문장으로 표시됩니다 — Central 이 거부한 토큰은 폐기되었거나 다른 Central 이 발급했을 수 있다고 설명합니다. 코드 자체는 메시지에 마우스를 올리면 보입니다.
리눅스 서버에서 Missing X server or $DISPLAY 가 뜬다
데스크톱 앱이 화면을 찾는 것이지 설치가 잘못된 것이 아닙니다. 데스크톱 세션에서 실행하거나, 데스크톱이 없는 서버라면 헤드리스 모드를 쓰세요 — 5장.
모든 제품에 공통인 문제
업그레이드 후 빈 창, Ubuntu 24.04 에서 실행 안 됨, 키링 없는 Linux 에서 자격증명이 평문 저장, 알림 메일 미배달 — 제품을 가리지 않는 문제라 지원 페이지에 모아 두었습니다.
그래도 안 되면
판 번호와 기대했던 동작을 적어 support@meshwatch.app 로 보내 주세요. 평일 기준 2영업일 안에 첫 답을 드립니다.