Güvenlik duvarı politikaları ve ACL'ler
1) Hedefler ve ilkeler
Firewall/ACL veri düzlemi kontrolüdür: kim, nerede, ne zaman ve hangi protokol üzerinde gider. Temel prensipler:- En az ayrıcalık: sadece gerekli olana izin ver (açıkça izin ver, örtülü inkar).
- Segmentasyon: ortamların izolasyonu (prod/stage/dev), kiracılar, kritik konturlar (PCI/KMS/DB).
- Çıkış kontrolü: giden trafik FQDN/IP listeleri ve özel uç noktalarla sınırlıdır.
- Identity-aware (L7): Kararlar sadece IP tarafından değil, kimliği doğrulanmış varlık (SPIFFE/OIDC) tarafından verilir.
- Kod Olarak Altyapı: kod olarak kurallar, inceleme/CI/CD, denetim değişiklikleri.
2) Taksonomi: nerede ve neyi filtrelediğimiz
2. 1 Katmanlar ve durum
L3/L4 durumsuz: klasik ACL'ler (CIDR, protokol, port).
L3/L4 durum bilgisi: güvenlik grupları/NSG, monitör bağlantıları.
L7-aware: proxy/WAF/mesh RBAC (yöntemler, yollar, JWT-iddiaları, SNI).
Satır içi vs bant dışı: Satır içi güvenlik duvarı trafiği yönlendirir; Bant dışı - analiz/uyarı.
2. 2 Konturlar
Çevre: kenar/WAF/Anti-DDoS.
Çekirdek: transit hub/ меж -VPC/VNet.
İş yükü: SG/NSG на VM/ENI/POD.
Uygulama düzeyi: Elçi/Istio/NGINX politikası, hizmet-hizmet mTLS.
3) Bulut modelleri
AWS
Güvenlik Grubu (SG): durum bilgisi на ENI/instance/LB.
Ağ ACL (NACL): alt ağlarda durumsuz, kural sırası, çift yönlü girişler.
AWS Ağ Güvenlik Duvarı/GWLB: L7 İnceleme/IDS.
Öneri: "SG - temel kontrol, NACL - kaba taneli eskrim/inkar listesi".
Azure
NSG (stateful), ASG (uygulama grupları etikete göre), Azure FW for L7/IDS, Private Endpoints.
Öneri: NSG sabnet + NIC, ASG üzerinden servis etiketleri.
GCP
VPC Güvenlik Duvarı Kuralları (durum bilgisi), Hiyerarşik FW (kuruluş/klasör), Bulut Zırhı (L7), Özel Servis Bağlantısı.
Öneri: org düzeyinde korkuluklar + proje izin verir.
4) Kural Tasarımı: Desenler
4. 1 Temel kümeler
Tüm çıkışları reddet - FQDN/IP aracılığıyla izin verilen: toplu iş depoları, artifact kayıtları, üçüncü taraf API'leri (özel/sabit çıkışlar aracılığıyla).
Doğu-Batı minimum: hizmetler yalnızca gerekli bağımlılıklarla iletişim kurar.
Yönetici erişimi: MFA ile bastion/JIT üzerinden, kayıt oturumları.
4. 2 Etiketler ve gruplar
IP yerine etiket/etiket kullanın: 'env', 'service', 'tier', 'tenant', 'pci = true'.
Etiket değiştirildiğinde politikayı güncelleyin - IP ızgaralarının elle düzenlenmesi yok.
4. 3 Yaşam döngüsü
Önermek - Değerlendirmek (evreleme) - Zorlamak (prod), kuru çalıştırma/hit günlükleri ile.
Yaşlanma: Her kural için TTL/sahibi, kullanılmayan otomatik kontrol.
5) Kubernetes ve servis ağı
5. 1 NetworkPolicy (L3/L4)
Asgari "ihtiyaç dışında her şeyi yasaklayın".
yaml apiVersion: networking. k8s. io/v1 kind: NetworkPolicy metadata: { name: deny-all, namespace: core }
spec:
podSelector: {}
policyTypes: ["Ingress","Egress"]
kind: NetworkPolicy metadata: { name: api-egress }
spec:
podSelector: { matchLabels: { app: api } }
egress:
- to:
- namespaceSelector: { matchLabels: { ns: db } }
ports: [{ protocol: TCP, port: 5432 }]
- to:
- ipBlock: { cidr: 10. 100. 0. 0/16 } # Private endpoints ports: [{ protocol: TCP, port: 443 }]
5. 2 L7 RBAC в örgü (Istio/Elçi)
mTLS + JWT yetkilendirme/talepler/kapsamlar/yollar.
yaml apiVersion: security. istio. io/v1 kind: AuthorizationPolicy metadata: { name: api-rbac }
spec:
selector: { matchLabels: { app: api } }
rules:
- from:
- source:
principals: ["spiffe://svc. payments"]
to:
- operation: { methods: ["POST"], paths: ["/v1/payouts"] }
when:
- key: request. headers[x-tenant]
values: ["eu-1","eu-2"]
6) Çıkış kontrolü ve özel çevreler
PaaS/registers/repositories üzerinden PrivateLink/Private Service Connect'i tercih edin.
Çıkışın geri kalanı, allowlist FQDN ve sabit IP ile NAT/proxy aracılığıyla (üçüncü taraf allowlist için).
Podların/VM'nin internete doğrudan erişimini engellemek; Sadece çıkış kapısı aracılığıyla istisnalar.
7) DNS ve SNI-farkında kurallar
Split-horizon: İç bölgeler dışarıdan çözülmez.
Giden HTTPS için FQDN/SNI destekli FW/Proxy (SNI izin verir).
Belirli satıcı alanlarına sabitlemeyi düzeltin; IP'lerindeki değişiklikleri izleyin.
8) Günlükler, denetim, gözlemlenebilirlik
Akış günlüklerini etkinleştir (VPC/VNet/NSG/NACL), SIEM'e gönder.
Günlüklerdeki 'trace _ id' aracılığıyla uygulamalarla korelasyon kurun.
Metrikler: hit/miss kuralları, top-talkers, drop-rates, trafik asimetrisi, çıkış sızıntıları.
Raporlar: "Kullanılmayan kurallar",'en geniş izinler ".
9) Kod olarak yönetim (IaC) ve kontroller
Terraform/CloudFormation + şablonlara göre modüler politikalar.
Kod Olarak Politika (OPA/Gatekeeper/Conftest): Hayır '0. 0. 0. 0/0 ', gereksinim' açıklama/sahibi/tl ', prod/dev karıştırma yasağı.
CI: Tiftik, statik analiz, ulaşılabilirlik analizörü, plan görünümü, zorunlu akran değerlendirmesi.
10) Ulaşılabilirlik testi ve kaos
Farklı alt ağlardan/AZ/bölgelerden sentetik örnekler: TCP/443, veritabanı/brokerlerin belirli portları.
DR yollarını kontrol etmek için geçici inkar: devre dışı bırakma - bağımlılık yeniden denemeleri/devreyi/geri dönüşü tetiklemelidir.
MTU/MSS: Perimetrelerde (özellikle IPsec/NAT-T) parçalanma olmadığından emin olun.
11) Performans ve güvenilirlik
Merkezi bir darboğazdan kaçının: Satır içi FW ölçeği (GWLB/ölçek kümeleri).
Hub'lar arasında dağıtım için ECMP/AS-path/BGP.
TLS inceleme profilleri: nokta (pahalı) içerir, anahtar baskılarını ayrı olarak saklar, uyumluluğa uygundur.
12) Yapılandırma örnekleri (referanslar, kısaltılmış)
12. 1 AWS SG: API - Postgres + S3 PrivateLink
hcl resource "aws_security_group" "api" {
name = "sg-api"
description = "Ingress from ALB, egress to DB and PrivateLink"
vpc_id = var. vpc_id
ingress { from_port=8080 to_port=8080 protocol="tcp" security_groups=[aws_security_group. alb. id] }
egress { from_port=5432 to_port=5432 protocol="tcp" security_groups=[aws_security_group. db. id] }
egress { from_port=443 to_port=443 protocol="tcp" prefix_list_ids=[aws_vpc_endpoint. s3. prefix_list_id] }
tags = { owner="team-api", env=var. env, ttl="2026-01-01" }
}
12. 2 Azure NSG: varsayılan olarak reddet + bastion'a izin ver
bash az network nsg rule create -g rg -n allow-bastion --nsg-name nsg-app \
--priority 100 --direction Inbound --access Allow --protocol Tcp \
--source-address-prefixes 10. 0. 0. 10 --source-port-ranges "" \
--destination-port-ranges 22 --destination-address-prefixes 10. 1. 0. 0/16
12. 3 GCP hiyerarşik güvenlik duvarı: org-korkuluk
yaml direction: INGRESS priority: 1000 action: deny enableLogging: true match:
layer4Configs: [{ ipProtocol: "all" }]
srcIpRanges: ["0. 0. 0. 0/0"]
targetResources: ["organizations/123456"]
12. 4 Elçi RBAC (L7 izin verir)
yaml
- name: envoy. filters. http. rbac typed_config:
rules:
action: ALLOW policies:
payments-post:
permissions: [{ url_path: { path: "/v1/payouts", ignore_case: true } }]
principals: [{ authenticated: { principal_name: { exact: "spiffe://svc. payments" } } }]
13) Antipatterns
`0. 0. 0. 0/0 'inGiriş/çıkış "geçici olarak" sonsuza kadar kalır.
Kod ve revizyon olmadan "kar taneleri" (konsolda manuel düzenlemeler).
Prod/stage/dev için ortak SG/NSG; Kritik ve kritik olmayan alt ağları karıştırma.
Çıkış kontrolü ve özel uç nokta eksikliği - dışarı anahtarları/sırları sızdırıyor.
DNS/SNI'yi göz ardı etme: tedarikçinin IP'sine izin verdi - yarın değişti ve tüm aralık açıldı.
Akış günlükleri ve runbook'lar yok - aşamalı imkansız.
14) iGaming/Finansın Özellikleri (PCI/Düzenleyici)
Ayrı bir VRF/segmentinde PCI CDE, internet yok; PSP/günlüklere erişim - mTLS ve HMAC ile özel bağlantı/proxy aracılığıyla.
Veri ikameti: PII/ödeme etkinlikleri - ülke/bölge içinde; Bölgeler arası - sadece kümeler/anonim.
KMS/Vault/HSM: bireysel alt ağlar/SG, yalnızca kısa sertifikalara sahip mTLS istemcileri.
WORM denetimi: Değişmeyen depolama (Nesne Kilidi), saklama ≥ düzenleme minimumunda FW/akış günlükleri.
Ortaklar (PSP/KYC): FQDN allowlist, statik çıkış IP, sağlayıcı tarafından SLA izleme.
15) Prod Hazırlık Kontrol Listesi
- Birleşik segmentasyon modeli (hub-and-spoke, VRF), kesişme olmadan CIDR.
- Varsayılan на çıkışını reddet; PaaS/depolamaya özel uç noktalar.
- İş yükü için SG/NSG durum bilgisi, NACL/rota filtreleri - alt ağlarda/hub'larda.
[K8s]: NetworkPolicy "deny-all", mesh mTLS + L7 RBAC.
- IP yerine etiketler/gruplar; Her kural için sahip/TTL/açıklama.
- IaC + Kod Olarak Politika; Ulaşılabilirlik simülasyonu ile CI; zorunlu akran denetimi.
- Akış günlükleri etkin; Panolar üst konuşmacılar, düşürme oranları; "Çıkış sızıntısı" uyarısı.
- Yönetici erişimi için Bastion/JIT; MFA; Oturum açma.
- Runbook've: bir kural nasıl eklenir/kaldırılır, bir olayda nasıl çalışılır; "Ölü" kuralların düzenli revizyonları.
- PCI/Finans için: CDE yalıtımı, WORM denetimi, PSP/KYC için FQDN-allow, statik çıkış IP.
16) TL; DR
Katmanlara göre koruma oluşturun: İş yüklerinde SG/NSG durum bilgisi, alt ağlarda NACL/rota filtreleri, mesh/proxy'de L7 RBAC, çevrede WAF/kenar. Varsayılan olarak - reddet-by-default, sadece kontrollü noktalar veya özel uç noktalar üzerinden çık. Kuralları kod olarak tanımlayın, bunları politikalar ve ulaşılabilirlik simülatörleri ile kontrol edin, akış günlükleri toplayın. IGaming/Finans için PSP/KYC'ye PCI segmentasyonu, WORM denetimi ve sıkı FQDN-allow ekleyin.