Watchtower
Kapalı ağ kurumsal ortamlar için CLI öncelikli UEBA platformu.
Watchtower kurum içi kullanıcı ve varlık davranışını izler, temel çizgileri (baseline) öğrenir, aday anomalileri deterministik motorlarla skorlar ve çalışma moduna göre açıklanabilir alarmlar ya da sessiz bulgular açar.
Logların dosya sunucularından, kimlik sistemlerinden, Elasticsearch/Wazuh’tan, uygulama denetim izlerinden veya ürünle birlikte gelen `server-stack/` kapalı laboratuvar replay ortamından gelebildiği özel LAN kurulumları için tasarlanmıştır.
İşleyiş
connectors -> raw events -> normalization -> candidate events -> policy / baseline / feedback / correlation / severity -> LangGraph mode routing -> silent finding | alert case | controlled learning updateNe yapar
- Birden fazla kaynaktan salt-okunur güvenlik ve iş telemetrisini alır.
- Ham kayıtları birleşik bir olay şemasına normalize eder.
- 81 özellikli Watchtower taksonomisine bağlı aday davranış olaylarını çıkarır.
- Kullanıcı, departman, rol, varlık ve zaman penceresi temel çizgilerini öğrenir.
- Deterministik politika, temel çizgi, geri bildirim, korelasyon ve önem derecesi motorlarını uygular.
- Sonuçları learn, run ve hybrid modları üzerinden yönlendirir.
- Alarm kayıtları, sessiz bulgular, geri bildirim kuralları, denetim kayıtları ve raporlar oluşturur.
- LLM sağlayıcılarını yalnızca açıklama ve taslak görevleri için kullanır, hiçbir zaman nihai karar için değil.
Tavizsiz kurallar
Watchtower bilinçli olarak muhafazakârdır:
- Bir şeyin alarm olup olmadığına LLM’ler karar vermez.
- LangGraph akışı orkestre eder; skorlama matematiğinin sahibi değildir.
- Yönetici geri bildirimi doğrudan kalıcı bir kurala dönüşmez.
- Geri bildirim
pending_rule -> approve -> stableyolunu izler. - Politika kuralı davranışı sessizce normalize edilmez.
- Bağlayıcılar salt-okunurdur; Watchtower gözlemler, açıklar ve alarm üretir.
- Otomatik müdahale, engelleme, süreç sonlandırma, host karantinası veya kullanıcı kilitleme yoktur.
Çalışma modları
| Mod | Alarm | Öğrenme | Kullanım |
|---|---|---|---|
| learn | Dış alarm yok | Evet | Şirketi sessizce temel çizgiye oturtmak |
| run | Evet | Hayır | Onaylı kural ve temel çizgilerle üretim izleme |
| hybrid | Evet | Kontrollü | Onaylı sapmayı izlerken izlemeye devam etmek |
Temel yetenekler
| Alan | Durum |
|---|---|
| Özellik taksonomisi | 81/81 özellik sınıflandırıldı ve doğrulandı |
| Server-stack senaryoları | 83/83 senaryo kapsandı |
| Bağlayıcılar | server-stack, JSONL dosya, Elasticsearch, Wazuh uyumlu |
| Depolama | SQLite migration’ları, repository’ler, denetim kayıtları |
| Temel çizgi | 45 günlük varsayılan öğrenme penceresi, güven, anlık görüntüler |
| Geri bildirim | bekleyen kural, onay, kapsamlı kalıcı kural, süre sonu |
| Karar | deterministik politika/temel çizgi/geri bildirim/korelasyon/önem derecesi |
| Graph | LangGraph mod yönlendirmesi, denetim, interrupt/resume |
| LLM | OpenAI, Anthropic, Gemini, Ollama, özel OpenAI uyumlu |
| CLI | bootstrap, modlar, ingest, alarmlar, kurallar, sorgu, health, backup |
| Üretim | Docker, backup/restore, saklama, migration’lar, health check’ler |
Depo yapısı
watchtower-demo/
watchtower/ # product package
tests/ # unit, integration, graph, LLM, E2E, production tests
docs/ # install and operations docs
scripts/ # install, upgrade, soak, taxonomy tooling
reports/watchtower/ # product evidence reports
server-stack/ # closed-network lab used as test targetserver-stack/ ürün kodu değildir. Watchtower davranışını 81 özellik ve 83 senaryoya karşı kanıtlamak için kullanılan replay ve kanıt laboratuvarıdır.
Hızlı başlangıç
Bare metal
python3 -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
cp .env.example .env
./scripts/fresh_install.sh
wt status
wt healthDocker
cp .env.example .env
docker compose config
docker compose build
docker compose run --rm watchtower wt bootstrap -u admin -e admin@corp.local
docker compose up -d
docker compose exec watchtower wt health --jsonTemel CLI
wt bootstrap -u admin -e admin@corp.local
wt status
wt modes get
wt modes set learn
wt modes set run
wt modes set hybrid
wt sources register -t file_jsonl -n "AD JSONL" -c '{"file_path":"/data/ad.jsonl"}'
wt sources list
wt sources health
wt ingest once --source <source-id>
wt alerts list
wt alerts show <alert-id>
wt alerts ack <alert-id>
wt alerts close <alert-id> --outcome true_positive
wt alerts suppress <alert-id> --duration 7d
wt findings silent --last 7d
wt rules pending
wt rules approve <pending-rule-id>
wt rules reject <pending-rule-id> --comment "too broad"
wt query "critical backend alerts in the last 24 hours"LLM sağlayıcıları
LLM sağlayıcıları isteğe bağlıdır. Her sağlayıcı kapalı olsa da Watchtower çalışmaya devam eder.
Desteklenen adaptörler:
- OpenAI
- Anthropic
- Gemini
- Ollama / OpenAI uyumlu yerel uç nokta
- Özel OpenAI uyumlu uç nokta
Sağlayıcı sırası şu komutlarla yapılandırılır:
wt providers list
wt providers set-chain gemini,ollama
wt providers clear-chainSağlayıcı sırları .env içinde durur ve asla commit edilmemelidir. LLM çıktısı şema ile doğrulanır ve açıklama, eşleme, özet ve taslak görevleriyle sınırlıdır.
Testler ve kanıt
Ürün test paketinin tamamını çalıştırma:
pytest tests/ -qÜretim geçitlerini çalıştırma:
pytest tests/production tests/load -v
docker compose config
./scripts/fresh_install.sh
./scripts/upgrade.shKapalı laboratuvar doğrulamasını çalıştırma:
cd server-stack
make test-all
make test-real-allGüncel kabul kanıtı:
| Geçit | Kanıt |
|---|---|
| Ürün test paketi | 454 passed |
| Özellik taksonomisi | 81/81 |
| Server-stack senaryoları | 83/83 |
| E2E özeti | reports/watchtower/e2e_summary.json |
| Üretim hazırlığı | reports/watchtower/production_readiness.json |
| Nihai kabul | reports/watchtower/final_acceptance_report.md |
Operasyon
Health
wt health
wt health --jsonMigration’lar
wt migrate status
wt migrate upgradeBackup ve restore
wt backup create
wt backup list
wt backup restore /backups/watchtower-YYYYMMDDTHHMMSS.db --yesSaklama
wt retention apply --dry-run
wt retention applySoak
./scripts/soak_short.sh
SOAK_HOURS=24 ./scripts/soak_24h.shÜretim notları
- Operasyonel alarmlamadan önce güven oluşturmak için önce learn modunu çalıştırın.
- Gerçek bir şirket geçişinden önce üretilen taksonomi sınıflandırmalarını gözden geçirin.
.envdosyasını git dışında tutun; commit edilen tek şablon.env.example’dır.- Açıklamalar için en az bir LLM sağlayıcısı yapılandırın veya fail-open notlarına güvenin.
- İlk kapalı ağ kurulumundan önce belgelenen 24 saatlik soak testini çalıştırın.
- Graph checkpoint’i varsayılan olarak kalıcı SQLite kullanır (
WATCHTOWER_GRAPH_CHECKPOINT_PATH); yalnızca geliştirme/testte süreç içi MemorySaver içinWATCHTOWER_GRAPH_CHECKPOINT_USE_MEMORY=trueayarlayın; uzun süre uçuşta kalan insan onayı iş akışlarına güvenmeden önce bu eklenmelidir.