Canlı · saatlik sync · açık kaynak (MIT)

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.

Domain
~450K
IPv4
~14K
URL
~7K
TAXII koleksiyon
Use Case

Ş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.

Canlı feed URL'leri #feeds

Engelleme cihazlarına doğrudan verebileceğiniz public URL'ler. Saatlik tazelenir, Fastly CDN üzerinden servis edilir.

Domain listesi~450.000 kayıt
https://bilsectr.github.io/sgb-api-bridge/domain-list.txt
IPv4 listesi~14.000 kayıt
https://bilsectr.github.io/sgb-api-bridge/ip-list.txt
URL listesi~7.000 kayıt
https://bilsectr.github.io/sgb-api-bridge/url-list.txt
IPv6 listesitekil adresler
https://bilsectr.github.io/sgb-api-bridge/ip6-list.txt
IPv6 subnetCIDR blokları
https://bilsectr.github.io/sgb-api-bridge/ip6net-list.txt
İstatistik / sağlıkJSON
stats.json
Format: Her dosya satır başına tek bir kayıt içerir. Yorum satırı, header veya BOM yoktur — FortiGate 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 ListsSGB-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
İpucu: SSL deep-inspection yokken HTTPS URL'leri SNI üzerinden yakalanır. Tam yol için deep-inspection + kurumsal CA dağıtımı gerekir. Yalnız DNS+IP bile pratikte çoğunluğu keser.

Sophos XG/SFOS, harici URL'den otomatik tazelenen FQDN/IP Host Group objeleri destekler.

1. IP host group

  1. System → Hosts and Services → IP Host Group → Add
  2. Name: SGB-IP · Type: IP List (URL) · URL: https://bilsectr.github.io/sgb-api-bridge/ip-list.txt
  3. Refresh: 60 dk

2. FQDN host group

  1. 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.

İpucu: Küçük modellerde (XGS 87/107) ~500K FQDN host group bellek tüketir; domain'i sadece Web Policy'de (URL group) uygulayın, Firewall Rule'da IP listesini kullanı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 → CategoriesSGB-URL → Site Access=block, Credential Submission=block.

Auth: Private mirror kullanıyorsanız Client Authentication + Certificate Profile gerekir. Public GitHub Pages için ek yok.

pfSense + pfBlockerNG:

  1. Firewall → pfBlockerNG → IPv4 → Add → URL=.../ip-list.txt · Action=Deny Both
  2. DNSBL → DNSBL Groups → Add → URL=.../domain-list.txt
  3. 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.

TAXII 2.1 discovery: 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İçerikUC prefix
sgb-phishingPhishing (PH)UC-PH-*
sgb-botnet-ccBotnet C&C (BC)UC-BC-*
sgb-apt-ccAPT C&C (AC)UC-AC-*
sgb-exploit-kitExploit Kit (EK)UC-EK-*
sgb-malware-downloadMalware Download (MF)UC-MF-*
sgb-miningCryptomining (MM)UC-MM-*
sgb-mobile-ccMobile C&C (MC)UC-MC-*
sgb-otherDiğer (OT)UC-OT-*

Ürün bazlı rehberler

Use Case kütüphanesi

📚
20 vendor-agnostik use case

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"
Severity: Vendor-agnostik formul — 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.

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.

01

Çek

GitHub Actions saatte bir SGB API'sini baştan sona sayfalar. Yeni IOC'ler SQLite'a düşer.

02

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).

03

Sun

GitHub Pages CDN üzerinden txt feed, Cloudflare Worker üzerinden TAXII. Self-host için Docker / K8s imajı.

MekanizmaSıklıkSü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
Geçmiş veri zaten repo'da. Repo'yu klonlayan/fork eden herkes docs/*-list.txt + state/seen_ids.json dosyalarını dolu alır; release asset olarak yayınlanan sgb.db ile SQLite tamamlanır.

Mimari

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

Beş dakikada bağla.

Bir URL kopyala, firewall'una yapıştır. Saatlik sync devralır — geri kalanı bizden.

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.