İçeriğe Atla
Mustafa Erbay
Teknoloji · 9 dk okuma · görüntülenme Read in English

Zero-Trust Mimarisi: 3 Pratik Kurulum Adımı

Zero-Trust mimarisi, geleneksel ağ güvenliğine karşı daha sağlam bir yaklaşım sunar. Kendi deneyimlerimden yola çıkarak bu modelin 3 pratik adımını anlatıyorum.

100%

Zero-Trust mimarisi, “asla güvenme, her zaman doğrula” prensibi üzerine kurulu bir güvenlik yaklaşımıdır. Geleneksel perimeter tabanlı güvenlik anlayışının aksine, ağın içinde veya dışında olsanız da her erişim isteğini şüpheli kabul eder. Ben, 20 yıla yakın tecrübemde, sadece dışarıdan gelen tehditlerin değil, içeriden kaynaklanan zafiyetlerin de ne kadar büyük riskler taşıdığını defalarca gördüm. Birçok kez, güvenli sandığımız iç ağda bile kötü niyetli bir aktörün veya yanlış yapılandırılmış bir servisin ne kadar hızla yayılabileceğine şahit oldum.

Bu yazıda, Zero-Trust mimarisini kendi sistemlerime veya müşteri projelerine entegre ederken attığım üç pratik adımı ve bu süreçte edindiğim tecrübeleri aktaracağım. Bu adımlar, teorik bir çerçeveden ziyade, sahada gerçekten işe yarayan, elle tutulur uygulamalardır. Amacım, bu karmaşık görünen konuyu daha somut ve uygulanabilir hale getirmek.

1. Kimlik Doğrulama ve Yetkilendirmeyi Güçlendirme (IAM)

Zero-Trust’ın temelinde, her kullanıcının ve cihazın kimliğini sürekli olarak doğrulamak yatar. Eski sistemlerde, bir kullanıcı içeri girdiğinde ona tam yetki verilmesi sıkça karşılaşılan bir durumdu. Ancak bu, bir hesap ele geçirildiğinde tüm ağın riske atılması anlamına geliyor. Ben bu hatayı, eski bir Active Directory entegrasyonunda gördüm; bir servis hesabı sızdığında, neredeyse tüm üretim ortamına erişim sağlanmıştı.

Bu yüzden, ilk adım her zaman Identity and Access Management (IAM) altyapısını güçlendirmek olmuştur. Çok faktörlü kimlik doğrulama (MFA) ve rol tabanlı erişim kontrolü (RBAC) burada kritik. Kendi yan ürünlerimin backend’inde veya bir üretim ERP’sinde, OpenID Connect (OIDC) ve OAuth2 gibi standartları kullanarak kimlik doğrulama süreçlerini merkezileştirdim. Bu sayede, her uygulamanın kendi kimlik doğrulama mekanizmasını yazmak yerine, merkezi bir Identity Provider (IdP) ile konuşmasını sağlıyorum.

RBAC tarafında ise, her kullanıcının sadece görevi için gerekli olan en az yetkiye sahip olmasını sağlamak esastır. Örneğin, bir üretim operatörünün sadece kendi vardiyasındaki üretim emirlerini görebilmesi ve tamamlayabilmesi, muhasebe departmanının ise sadece finansal raporlara erişebilmesi gibi. Benim deneyimimde, bu ayrımı yaparken “iş akışını” çok iyi anlamak gerekiyor. Yazılım mimarisi çoğu zaman yazılım değil, organizasyonel akıştır derken bunu kastediyorum. Aksi takdirde, çok sıkı bir RBAC yazsanız bile, kullanıcılar işlerini yapamadıkları için sürekli “bypass” yolları ararlar.

# FastAPI uygulamasında basit bir RBAC kontrolü örneği
from fastapi import Depends, HTTPException, status
from typing import Set

# Gerçek bir uygulamada bu, bir IdP'den gelen JWT token'ından okunur
def get_current_user_roles() -> Set[str]:
    # Bu kısım, JWT token'ını parse edip kullanıcının rollerini döner
    # Örneğin, {"admin", "operator"}
    return {"operator"} # Demo amaçlı varsayılan rol

def role_required(required_roles: Set[str]):
    def role_checker(user_roles: Set[str] = Depends(get_current_user_roles)):
        if not required_roles.intersection(user_roles):
            raise HTTPException(
                status_code=status.HTTP_403_FORBIDDEN,
                detail="Bu işleme erişim yetkiniz yok."
            )
        return True
    return role_checker

# Kullanım örneği
@app.get("/production-orders", dependencies=[Depends(role_required({"operator", "manager"}))])
async def get_production_orders():
    return {"message": "Üretim emirleri listeleniyor."}

Bu tarz kod parçacıkları, benim geliştirdiğim üretim ERP’sinde her gün kullanılıyor. get_current_user_roles fonksiyonu, JWT token’ının içindeki roles claim’ini okur ve buna göre yetkilendirme yapar. Eğer bir kullanıcı, gerekli rollere sahip değilse, 403 Forbidden hatası alır. Bu, sadece uygulama seviyesinde değil, aynı zamanda API Gateway katmanında da uygulanabilir.

2. Mikro-Segmentasyon ile Ağı Parçalara Ayırmak

Geleneksel ağlarda “güvenli bölge” (LAN) ve “güvensiz bölge” (WAN) ayrımı vardı. İç ağa giren bir cihazın her yere erişebileceği varsayılıyordu. Bu, bir ihlal durumunda saldırganın “lateral movement” (yatay hareket) yaparak tüm sisteme yayılmasına olanak tanır. Ben bu sorunu, VLAN tagging karmasası yüzünden defalarca yaşadım. Hatalı bir VLAN yapılandırması yüzünden bir muhasebe departmanı bilgisayarının, üretim hattındaki PLC’lere erişebildiğini gördüm; bu, bir kabus senaryosuydu.

Zero-Trust’ta ise ağ, mümkün olduğunca küçük, izole parçalara ayrılır. Her bir parça kendi içinde güvenlik duvarı kurallarıyla korunur. Bu, mikro-segmentasyon olarak adlandırılır. Benim yaklaşımımda, ilk olarak ağdaki tüm kaynakları (sunucular, veritabanları, IoT cihazları, kullanıcı cihazları) gruplara ayırırım. Sonra, bu gruplar arasındaki minimum iletişime izin veren güvenlik duvarı politikaları tanımlarım.

Örneğin, bir üretim ERP’sinde:

  • Veritabanı sunucuları: Sadece uygulama sunucularından gelen TCP 5432 (PostgreSQL) trafiğine izin verir.
  • Uygulama sunucuları: Sadece web sunucularından ve belirli yönetim IP’lerinden gelen trafiğe izin verir, ayrıca veritabanı sunucularına bağlanabilir.
  • Web sunucuları: Sadece dışarıdan gelen HTTP/HTTPS trafiğine ve uygulama sunucularına giden trafiğe izin verir.
  • Operatör ekranları: Sadece üretim hattı uygulamalarına ve belirli yönetim sunucularına erişebilir.

Bu segmentasyonu hem ağ katmanında (VLAN’lar, ACL’ler) hem de host katmanında (iptables, firewalld) uygularım.

# PostgreSQL sunucusunda sadece belirli bir uygulama sunucusu IP'sinden gelen
# trafiğe izin veren basit bir iptables kuralı
# Bu kuralı eklemeden önce mevcut kuralları dikkatlice kontrol etmek lazım!
sudo iptables -A INPUT -p tcp --dport 5432 -s 192.168.1.100 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 5432 -j DROP

Bu örnekte, 192.168.1.100 IP adresindeki uygulama sunucusu dışında kimse PostgreSQL portuna erişemez. Bu, en temel mikro-segmentasyon adımlarından biridir. Karmaşık senaryolarda NFTables veya donanımsal ağ cihazlarının ACL’leri kullanılır. İlke olarak, her uygulamayı kendi sanal ağı içinde izole edip yalnızca belirli API’ler üzerinden iletişim kurmasına izin vermek hedeflenir. Bu, çok sayıda sanal makinenin olduğu büyük ortamlarda yönlendirme/segment yönetimini karmaşıklaştırabilir; ancak doğru dizayn edildiğinde güvenlik açısından büyük kazanç sağlar.

3. Sürekli Doğrulama ve Cihaz Güvenliğini Sağlama (Device Posture)

Zero-Trust sadece “kimsin?” sorusuna değil, aynı zamanda “nereden geliyorsun ve durumun ne?” sorusuna da odaklanır. Bir cihaz ağa erişmeden önce veya erişim sırasında sürekli olarak güvenlik duruşu (device posture) kontrol edilmelidir. Bu, cihazın güncel bir işletim sistemine sahip olup olmadığı, antivirüs yazılımının çalışıp çalışmadığı, belirli güvenlik yamalarının yüklü olup olmadığı gibi kontrolleri içerir.

Benim pratiğimde, bu adım genellikle bir ZTNA (Zero-Trust Network Access) çözümü veya özel olarak geliştirilmiş bir ajan aracılığıyla gerçekleşir. Örneğin, bir kullanıcının laptop’u şirketin ağına bağlanmaya çalıştığında, cihazın disk şifrelemesinin açık olup olmadığı, en son güvenlik güncellemesinin 30 günden eski olup olmadığı kontrol edilir. Eğer bu koşullar sağlanmazsa, cihaza sadece yama sunucularına veya karantina ağına erişim izni verilir.

Kendi yan ürünümün yönetim arayüzüne erişim için benzer bir mekanizma kullanıyorum. Eğer cihazım belirli bir güvenlik politikasını karşılamıyorsa (örneğin, VPN bağlı değilse veya belirli bir IP aralığından gelmiyorsa), erişim engellenir.

# Linux sunucularında dosya bütünlüğünü izlemek için auditd kullanımı
# /etc/audit/rules.d/audit.rules dosyasına eklenir
# Bu kural, /etc/passwd dosyasındaki her değişikliği loglar
-w /etc/passwd -p wa -k identity_changes

# auditd servisini yeniden başlat
sudo systemctl restart auditd

# Logları görüntüle (örneğin, passwd dosyasında bir değişiklik sonrası)
# sudo journalctl -u auditd | grep identity_changes

Bu örnekteki auditd kullanımı, cihaz üzerindeki kritik dosyaların bütünlüğünü sürekli olarak izlememi sağlıyor. Eğer passwd dosyasında izinsiz bir değişiklik olursa, hemen bir alarm tetiklenir. Bu, cihazın güvenli duruşunu korumak için attığım pratik adımlardan sadece biri. Daha karmaşık senaryolarda, kurumsal EDR çözümleri bu kontrolleri çok daha detaylı bir şekilde yapar. Benzer şekilde, fail2ban kullanarak sunucularımdaki başarısız giriş denemelerini sürekli izliyor ve belirli paternleri yakaladığımda IP adreslerini otomatik olarak yasaklıyorum. Fail2ban ile sunucu güvenliği artırma

Zero-Trust’ın Zorlukları ve Benim Yaklaşımım

Zero-Trust mimarisine geçiş, özellikle büyük ve karmaşık kurumsal yapılar için ciddi zorluklar barındırıyor. En büyük zorluklardan biri, mevcut legacy sistemlerle entegrasyon. Birçok eski uygulama, Zero-Trust prensiplerine uygun tasarlanmadığı için, bunları adapte etmek bazen uygulamanın yeniden yazılması kadar zor olabiliyor. Örneğin, modern kimlik doğrulamayı (OIDC/OAuth2) hiç tanımayan eski bir uygulamayı merkezi bir IdP’ye bağlamak, kimi zaman uygulamanın önüne bir kimlik doğrulama katmanı (proxy/gateway) koymayı gerektirir ve ciddi bir efor doğurabilir.

Bir diğer zorluk ise kullanıcı deneyimi (UX). Sürekli kimlik doğrulama ve sıkı erişim kontrolleri, kullanıcılar için başlangıçta rahatsız edici olabilir. “Yine mi şifre soruyor?”, “Bu uygulamaya neden erişemiyorum?” gibi şikayetler kaçınılmaz. Benim bu konudaki yaklaşımım, geçişi aşamalı yapmak ve kullanıcılara neden bu değişikliklerin yapıldığını net bir şekilde anlatmaktır. Ben genellikle, en kritik ve hassas verilere sahip sistemlerden başlayarak Zero-Trust prensiplerini uyguluyorum.

Ayrıca, Zero-Trust’ın maliyet boyutu da var. Yeni araçlar, ek lisanslar ve eğitim, başlangıçta önemli bir yatırım gerektirebilir. Benim için bu yatırımın karşılığı, potansiyel bir siber saldırının yaratacağı maliyet ve itibar kaybının çok altında kalıyor. Pratikte, olası bir veri ihlalinin maliyeti çoğu zaman Zero-Trust altyapısına yapılan yatırımın kat kat üzerinde çıkar; bu yatırım riskin büyük bir kısmını ortadan kaldırır.

Gerçek Dünya Uygulamaları ve Beklentilerim

Zero-Trust mimarisi, artık sadece büyük kurumsal şirketlerin değil, KOBİ’lerin ve hatta kendi küçük projelerimin bile gündemine girmesi gereken bir konu. Özellikle uzaktan çalışmanın yaygınlaşması ve bulut tabanlı hizmetlerin artmasıyla birlikte, geleneksel ağ sınırları bulanıklaştı. Artık herkesin ofis ağına bağlı olduğu bir dünya yok.

Benim kendi sistemlerimde (VPS üzerinde çalışan yan ürünlerimin backend’i gibi) Zero-Trust prensiplerini uygularken, genellikle daha hafif ve açık kaynaklı araçları tercih ediyorum. Örneğin, Nginx ile JWT tabanlı erişim kontrolü, fail2ban ile sürekli izleme ve iptables ile mikro-segmentasyon gibi. Daha büyük ve yüksek trafikli ortamlarda ise ölçek büyüdükçe daha kapsamlı ZTNA çözümleri ve SIEM entegrasyonları devreye girer.

Önümüzdeki dönemde, AI’ın Zero-Trust mimarisindeki rolünün daha da artacağını düşünüyorum. Anomali tespiti, davranış analizi ve otomatik politika güncellemeleri gibi alanlarda AI, Zero-Trust’ı daha akıllı ve proaktif hale getirecek. Örneğin, bir kullanıcının normalde erişmediği bir kaynağa gece 03:00’te erişmeye çalışması durumunda, AI bu davranışı anomali olarak tespit edip erişimi otomatik olarak engelleyebilir veya ek bir kimlik doğrulama isteği gönderebilir. Kendi AI uygulama mimarimde, Gemini Flash veya Groq gibi modelleri kullanarak benzer anomali tespit algoritmaları üzerinde çalışıyorum.

Zero-Trust, bir ürün değil, bir felsefe ve sürekli evrilen bir süreçtir. Tek seferlik bir kurulumla bitmiyor; sürekli izleme, politika güncelleme ve adaptasyon gerektiriyor. Benim için bu, bir güvenlik mimarı olarak en heyecan verici ve zorlayıcı alanlardan biri olmaya devam edecek. Gelecekte, daha çok şirketin bu yaklaşıma yöneldiğini ve siber güvenlik olaylarının etkisinin bu sayede azaldığını göreceğimize inanıyorum.

Paylaş:

Bu yazı faydalı oldu mu?

Yükleniyor...

Bu yazı nasıldı?

Sıkça Sorulanlar

Bu makale ile ilgili okurların sorduğu yaygın sorular.

Zero-Trust mimarisi kurulumunda hangi araçları kullanmalıyım?
Ben, Zero-Trust mimarisi kurulumunda OpenID Connect (OIDC) ve OAuth2 gibi standartları kullanarak kimlik doğrulama süreçlerini güçlendirmeyi tercih ediyorum. Ayrıca, çok faktörlü kimlik doğrulama (MFA) ve rol tabanlı erişim kontrolü (RBAC) gibi araçları da kullanıyorum.
Zero-Trust mimarisi kurulumunda en büyük avantaj ve dezavantaj nedir?
Benim deneyimime göre, Zero-Trust mimarisi kurulumunun en büyük avantajı, ağın içinde veya dışında olsanız da her erişim isteğini şüpheli kabul ederek güvenliği sağlamak. Dezavantajı ise, kurulum işleminin zaman alıcı ve karmaşık olması olabilir.
Zero-Trust mimarisi kurulumunda hata yaparsam ne yapmalıyım?
Ben, Zero-Trust mimarisi kurulumunda hata yaptığım zaman, öncelikle hata nedenini belirlemeye çalışıyorum. Ardından, ilgili araçları ve sistemleri güncelleyerek veya yapılandırarak hatayı düzeltiyorum. Ayrıca, düzenli olarak güvenlik testleri ve denetimleri yapıyorum.
Zero-Trust mimarisi kurulumunda en çok yapılan hata nedir?
Benim deneyimime göre, Zero-Trust mimarisi kurulumunda en çok yapılan hata, kimlik doğrulama ve yetkilendirmenin yeterli şekilde yapılmaması. Örneğin, bazı sistemlerde, bir kullanıcı içeri girdiğinde ona tam yetki verilmesi sıkça karşılaşılan bir durumdu. Ancak bu, bir hesap ele geçirildiğinde tüm ağın riske atılması anlamına geliyor.
ME

Mustafa Erbay

Sistem Mimarisi · Network Uzmanı · Altyapı, Güvenlik ve Yazılım

2006'dan bu yana sistem mimarisi, network, sunucu altyapıları, büyük yapıların kurulumu, yazılım ve sistem güvenliği ekseninde çalışıyorum. Bu blogda sahada karşılığı olan teknik deneyimlerimi paylaşıyorum.

Kişisel Notlar

Bu notlar sadece sizde saklanır. Tarayıcınızda yerel olarak tutulur.

Hazır 0 karakter

Yorumlar

Sunucu Taraflı AI Moderasyon

Yorumlar sunucuda yapay zeka ile denetlenir ve kalıcı olarak saklanır.

?
0/2000

Sunucu taraflı AI denetim

✉️ Ücretsiz · Spam yok · İstediğin an çık

Yeni yazılardan haberdar olun

Yeni içerikler ve teknik notlar e-postanıza gelsin.

  • 📌
    Haftanın en iyisi Sadece okumaya değer tek yazı
  • 🔧
    Alet çantası Bu hafta kullandığım araçlar
  • 🧠
    Perde arkası Blog'a girmeyen notlar

Spam yapmıyoruz. İstediğiniz zaman ayrılabilirsiniz. · Sadece Umami (self-hosted, Google yok) ile takip.

Okuma İstatistikleriniz

0

Yazı Okundu

0dk

Okuma Süresi

0

Gün Serisi

-

Favori Kategori

İlgili Yazılar