Tehditleri sessizce dışarıda tutar.
SGB API Bridge Siber Güvenlik Başkanlığı (eski USOM) tehdit beslemesini tek kaynaktan iki ayrı görevle akıtır: firewall'larda düz metin feed, SIEM/TIP/XDR'larda TAXII 2.1 servisi. Özel script yok, push servisi yok, kimlik doğrulama yok. URL'yi kopyala, cihazına yapıştır — gerisini saatlik sync halleder.
Şu cihaz ve platformlarla konuşur
İki yol, tek kaynak #two-paths
İhtiyacınıza göre seçin. İkisini birden de yapabilirsiniz — aynı SGB API'sinden farklı artifact'lar üretiriz, biri firewall'unuza, diğeri SIEM'inize gider.
Firewall'da blok
URL'yi cihaza ver, saatte bir kendi çekip yükler. Manuel "indir + yükle" döngüsü yok. Düz metin formatı.
SIEM'de korelasyon + alarm
Tek URL ver, ürünün built-in TAXII 2.1 client'ı koleksiyonları çeksin — özel pack, script veya artifact yok. TAXII 2.1 · STIX 2.1 indicator.
Canlı feed URL'leri #feeds
Engelleme cihazlarına doğrudan verebileceğiniz public URL'ler. Saatlik tazelenir, Fastly CDN üzerinden servis edilir.
system external-resource,
Palo Alto external-list, pfBlockerNG için doğrudan tüketilebilir.
SIEM/XDR tarafı için aynı veri TAXII 2.1 üzerinden servis edilir
(aşağıda).
Engelleme — firewall / proxy entegrasyonu #engelle
Cihazınızı seçin. Tüm örneklerde varsayılan base URL
https://bilsectr.github.io/sgb-api-bridge/'dir; kendi fork / Docker /
Kubernetes sunucunuzu kullanıyorsanız sadece host kısmını değiştirin.
FortiGate system external-resource özelliği listeleri yerel olarak destekler;
her refresh-rate dakikasında URL'yi kendi çekip belleğine yükler.
Adım 1 — External Threat Feed (CLI)
config system external-resource
edit "SGB-Domain"
set type domain
set resource "https://bilsectr.github.io/sgb-api-bridge/domain-list.txt"
set refresh-rate 60
set status enable
next
edit "SGB-IP"
set type address
set resource "https://bilsectr.github.io/sgb-api-bridge/ip-list.txt"
set refresh-rate 60
set status enable
next
edit "SGB-URL"
set category 192
set type category
set resource "https://bilsectr.github.io/sgb-api-bridge/url-list.txt"
set refresh-rate 60
set status enable
next
end
GUI: Security Fabric → External Connectors → Create New → Threat Feeds.
Adım 2 — Doğrulama
diagnose sys external-resource entry-list
diagnose sys external-resource refresh SGB-Domain
Adım 3a — IP feed → Firewall Policy
Policy & Objects → Addresses → Create New → Address: Type=External Block List,
External Block List=SGB-IP, Name=SGB-IP-Blocklist. Sonra yeni bir
Firewall Policy: Destination=SGB-IP-Blocklist · Action=DENY, allow kurallarının üstüne.
Adım 3b — Domain feed → DNS Filter
Security Profiles → DNS Filter → Create New: Domain Filter altında
Use External Domain Block Lists → SGB-Domain → Action=Block.
İlgili policy'ye inspect modunda bağlayın.
Adım 3c — Domain feed → Web Filter
DNS Filter DoH/DoT'ta devre dışı; aynı domain'i Web Filter'a da bağlamak ikinci savunma katmanı.
Security Profiles → Web Filter → Static URL Filter → External Resource=SGB-Domain.
Adım 4 — Loglarda doğrulama
# GUI: Log & Report → Forward Traffic → Action=Deny filtresi
diagnose debug flow filter daddr <test-ip>
diagnose debug flow trace start 10
diagnose debug enable
Sophos XG/SFOS, harici URL'den otomatik tazelenen FQDN/IP Host Group objeleri destekler.
1. IP host group
- System → Hosts and Services → IP Host Group → Add
- Name:
SGB-IP· Type: IP List (URL) · URL:https://bilsectr.github.io/sgb-api-bridge/ip-list.txt - Refresh: 60 dk
2. FQDN host group
- Name:
SGB-Domain· External list URL:.../domain-list.txt
3. Firewall rule
Source=LAN/Any · Destination=SGB-IP, SGB-Domain · Action=Drop. Allow kurallarının üstüne taşıyın.
Palo Alto PAN-OS External Dynamic List (EDL) ile IP/Domain/URL feed tipi destekler.
1. EDL oluştur (CLI)
configure
set external-list SGB-IP type ip url \
https://bilsectr.github.io/sgb-api-bridge/ip-list.txt recurring hourly
set external-list SGB-Domain type domain url \
https://bilsectr.github.io/sgb-api-bridge/domain-list.txt recurring hourly
set external-list SGB-URL type url url \
https://bilsectr.github.io/sgb-api-bridge/url-list.txt recurring hourly
commit
2. Doğrula
request system external-list refresh type ip name SGB-IP
request system external-list show type ip name SGB-IP
3a. IP EDL → Security Policy
Destination=SGB-IP · Action=Deny · Log at session end. Allow kurallarının üstüne.
3b. Domain EDL → Anti-Spyware (DNS Sinkhole)
Anti-Spyware Profile → DNS Policies → External Dynamic Lists → SGB-Domain → Action=sinkhole.
3c. URL EDL → URL Filtering
URL Filtering Profile → Categories → SGB-URL → Site Access=block, Credential Submission=block.
pfSense + pfBlockerNG:
- Firewall → pfBlockerNG → IPv4 → Add → URL=
.../ip-list.txt· Action=Deny Both - DNSBL → DNSBL Groups → Add → URL=
.../domain-list.txt - Update sekmesinde Force Reload
# Web UI: Group Management → Adlists → Add
https://bilsectr.github.io/sgb-api-bridge/domain-list.txt
# Sonra gravity tazele:
pihole -g
# /etc/squid/squid.conf
acl sgb_blacklist dstdomain "/etc/squid/sgb-domain-list.txt"
http_access deny sgb_blacklist
# crontab -e (saatlik)
17 * * * * curl -sf https://bilsectr.github.io/sgb-api-bridge/domain-list.txt \
-o /etc/squid/sgb-domain-list.txt && systemctl reload squid
/system script add name=sgb-sync source={
/tool fetch url="https://bilsectr.github.io/sgb-api-bridge/ip-list.txt" \
mode=https dst-path=sgb-ip.txt
/ip firewall address-list remove [find list=SGB]
:local data [/file get sgb-ip.txt contents]
:foreach line in=[:toarray $data] do={
:if ([:len $line] > 0) do={
/ip firewall address-list add list=SGB address=$line
}
}
}
/system scheduler add name=sgb-hourly interval=1h on-event=sgb-sync
Sonra /ip firewall filter'da dst-address-list=SGB ile drop kuralı.
SIEM / İzleme — TAXII 2.1 servisi #siem
Tek public TAXII 2.1 endpoint. Tüm modern SIEM/TIP/XDR ürünleri kendi built-in TAXII client'ı ile bu URL'yi doğrudan çeker — özel script, push servisi veya artifact build'i yoktur. Anonim, kimlik doğrulama yok. Saatte bir tazelenir.
https://sgb-taxii.bilsec.tr/taxii2/API root:
https://sgb-taxii.bilsec.tr/api/Detaylı kurulum ve koleksiyon listesi: setup-taxii.md.
Koleksiyonlar (connectiontype bazında)
8 koleksiyon, use case kütüphanesi ile birebir eşleşir.
| Koleksiyon | İçerik | UC prefix |
|---|---|---|
sgb-phishing | Phishing (PH) | UC-PH-* |
sgb-botnet-cc | Botnet C&C (BC) | UC-BC-* |
sgb-apt-cc | APT C&C (AC) | UC-AC-* |
sgb-exploit-kit | Exploit Kit (EK) | UC-EK-* |
sgb-malware-download | Malware Download (MF) | UC-MF-* |
sgb-mining | Cryptomining (MM) | UC-MM-* |
sgb-mobile-cc | Mobile C&C (MC) | UC-MC-* |
sgb-other | Diğer (OT) | UC-OT-* |
Ürün bazlı rehberler
IBM QRadar
Admin → Threat Intelligence → Add TAXII Feed. Koleksiyon başına bir feed; built-in indicator match rule'lar.
Kurulum →Splunk
Enterprise Security TI Manager veya taxii2:// modular input. Lookup'a otomatik yazılır.
Microsoft Sentinel
Data connectors → Threat Intelligence - TAXII. Koleksiyon başına connector, saatlik polling.
Kurulum →MISP
Sync Actions → Servers → Add TAXII server. MISP 2.4.160+ native TAXII 2.1 client.
Kurulum →OpenCTI
Tek connector tüm koleksiyonları çeker; added_after ile incremental.
Diğer ürünler
Cortex XSOAR built-in TAXII 2 Feed; XDR/EDR'lar için TAXII client + text slice alternatifleri.
Ürün matrisi →Use Case kütüphanesi
PH · BC · AC · EK · MF · MM · MC · OT + cross-category
Her use case: MITRE mapping + data sources + detection logic + TAXII koleksiyon eşleşmesi + severity formülü + false positive notları. Yeni use case eklemek için tek şablon.
Kütüphaneye git →Hızlı doğrulama (curl)
# Discovery
curl -sH 'Accept: application/taxii+json;version=2.1' \
https://sgb-taxii.bilsec.tr/taxii2/
# Saatlik incremental — son 1 saatte degisen phishing indicator'lar
SINCE=$(date -u -d '1 hour ago' +%Y-%m-%dT%H:%M:%S.000Z)
curl -s "https://sgb-taxii.bilsec.tr/api/collections/sgb-phishing/objects/?added_after=$SINCE"
connectiontype × criticality_level → 1-10. APT C&C eşleşmesi
her zaman 10 (P1), Mining 3 (policy). Tüm UC dosyaları bu formülü kullanır.
Dağıtım seçenekleri #deploy
Projeyi kullanmanın üç yolu vardır. İhtiyacınıza göre seçin — hepsi aynı çıktıyı (txt feed + TAXII 2.1) üretir, sadece kim host eder ve nereden servis edilir farkı vardır.
1) GitHub Pages
Bu sayfa zaten bu modelde. URL'leri firewall'a verin. Fork edebilirsiniz.
Kurulum rehberi →2) Docker
Tek konteyner: nginx + sync + TAXII 2.1 ağacı. Kendi ortamınızda
txt feed ve /taxii2/ servis edersiniz.
3) Kubernetes
CronJob + Deployment + Service + PVC. Helm/kustomize ile mevcut cluster'a entegre.
Kurulum rehberi →Docker — hızlı başlangıç (firewall feed + TAXII servisi birlikte)
docker run -d \
--name sgb-api-bridge \
-p 8080:80 \
-v sgb-api-bridge-data:/data \
--restart unless-stopped \
ghcr.io/bilsectr/sgb-api-bridge:latest
# Endpoint'ler:
# http://<sunucu>:8080/domain-list.txt (firewall icin)
# http://<sunucu>:8080/ip-list.txt
# http://<sunucu>:8080/taxii2/ (TAXII 2.1 discovery)
# http://<sunucu>:8080/api/collections/sgb-phishing/objects/ (SIEM TAXII client)
Nasıl çalışır? #how
Saatlik tam sync + her sync sonrası TAXII rebuild + edge servis.
Çek
GitHub Actions saatte bir SGB API'sini baştan sona sayfalar. Yeni IOC'ler SQLite'a düşer.
Dönüştür
Aynı veri iki formata üretilir: düz metin .txt feed ve statik TAXII 2.1 ağacı (STIX 2.1 indicator'lar).
Sun
GitHub Pages CDN üzerinden txt feed, Cloudflare Worker üzerinden TAXII. Self-host için Docker / K8s imajı.
| Mekanizma | Sıklık | Süre | Üretir |
|---|---|---|---|
| Hourly sync | Saatte 1, otomatik (GitHub Actions) | ~10 dk | SGB API'sini sayfalayarak SQLite'a yazar; docs/*-list.txt dosyalarını yeniler |
| TAXII rebuild | Her sync sonrası | ~30 sn | Statik TAXII 2.1 ağacı (docs/taxii/) — discovery + 8 koleksiyon × manifest/objects sayfaları |
| Cloudflare Worker servis | Sürekli | edge | sgb-taxii.bilsec.tr üzerinden TAXII envelope ve cursor pagination'ı serve eder |
docs/*-list.txt + state/seen_ids.json dosyalarını dolu alır;
release asset olarak yayınlanan sgb.db ile SQLite tamamlanır.
Mimari
- GitHub Actions (hourly) →
sync.py --mode full→ SQLite + txt feed - SGB API: siberguvenlik.gov.tr/api/address/index (newest-first, monoton ID)
- Aynı pipeline:
build_taxii.py→docs/taxii/(statik TAXII 2.1 ağacı) - Yayın: GitHub Pages (txt feed + TAXII ağacı) + Cloudflare Worker (
sgb-taxii.bilsec.tr) + Docker / K8s imajı (nginx ile self-host)
CLI ile lokal çalıştırma
pip install requests
python scripts/sync.py --mode full # SGB API'sini bastan sona cek (saatlik aksiyonun yaptigi sey)
python scripts/sync.py --mode loop # docker icin: belirli araliklarla full sync tetikler
python scripts/build_taxii.py # docs/taxii/ statik TAXII agacini uret
Sorumluluk reddi & lisans
Bu proje Siber Güvenlik Başkanlığı ile resmi bir bağlantısı olmayan, kâr amacı gütmeyen, açık kaynak bir araçtır. Üretim sistemlerinde "as-is" kullanılır; veri doğruluğundan SGB sorumludur. Kaynak kod MIT lisansı altındadır.