Pardus 25'te nftables ile Güvenlik Duvarı Yönetimi
Bölüm 1 — nftables'e Giriş ve Netfilter Mimarisi
Eskiden Linux sistemlerinde iptables, ip6tables, ebtables ve arptables gibi birbirinden bağımsız araçlar kullanılıyordu. Bu araçlar uzun yıllar boyunca güvenlik duvarı yönetiminde standart olsa da, artan ağ hızları, IPv6'nın yaygınlaşması ve daha karmaşık güvenlik politikaları nedeniyle yönetimi zorlaştı.
Bu sorunları çözmek amacıyla Linux çekirdeğinde Netfilter altyapısı geliştirilmiş ve bunun modern kullanıcı alanı (user space) aracı olarak nftables ortaya çıkmıştır.
Pardus 25, Debian tabanlı yapısı sayesinde nftables'i varsayılan ve önerilen güvenlik duvarı çözümü olarak destekler.
Firewall Nedir?
Firewall, ağ trafiğini inceleyen ve belirlenen güvenlik kurallarına göre;
izin veren,
engelleyen,
kaydeden,
yönlendiren
bir güvenlik mekanizmasıdır.
En basit haliyle şöyle düşünülebilir:
İnternet│Zararlı Trafik│+----------------+| Firewall |+----------------+│ │Kabul Reddet│Pardus Sunucusu
Firewall yalnızca paketleri engellemez.
Aynı zamanda;
bağlantıları takip eder,
saldırıları tespit eder,
NAT işlemleri yapar,
log oluşturur,
hız sınırlaması uygular,
brute force saldırılarını azaltabilir.
Neden Firewall Kullanılır?
Bir Linux sunucusunun internete doğrudan açık olduğunu düşünelim.
22 SSH80 HTTP443 HTTPS3306 MySQL5432 PostgreSQL
Firewall kullanılmıyorsa;
herkes SSH denemesi yapabilir
port taraması yapılabilir
brute force saldırıları uygulanabilir
exploit denemeleri gerçekleştirilebilir
servisler gereksiz yere görünür olur
Firewall sayesinde yalnızca gerekli portlar açılır.
Örneğin;
22 → sadece yönetim ağı80 → herkese açık443 → herkese açık3306 → sadece uygulama sunucusu5432 → yalnızca localhost
Bu yaklaşım, saldırı yüzeyini (attack surface) önemli ölçüde azaltır.
Linux'ta Paket Yolculuğu
Bir paket sisteme ulaştığında doğrudan uygulamaya gitmez.
Önce Linux çekirdeğindeki Netfilter tarafından değerlendirilir.
Ethernet Kartı│Linux Kernel│Netfilter Hook│nftables Kuralları┌────────┴─────────┐DROP ACCEPT│Program
İşte nftables bu aşamada devreye girer.
Netfilter Nedir?
Netfilter, Linux çekirdeği içerisinde çalışan paket filtreleme altyapısıdır.
nftables ise Netfilter'i yöneten kullanıcı alanı uygulamasıdır.
Basitçe;
nft komutu↓nftables↓Netfilter↓Linux Kernel↓Network Stack
şeklinde çalışır.
Yani nft komutu doğrudan ağ kartıyla değil, Netfilter aracılığıyla çekirdekle iletişim kurar.
Eski Sistem: iptables
Yıllarca kullanılan yapı aşağıdaki gibiydi:
iptablesip6tablesarptablesebtables
Her biri farklı protokoller için ayrı kurallara sahipti.
Örneğin;
IPv4 için:
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
IPv6 için ise tamamen farklı bir komut kullanılırdı:
ip6tables -A INPUT -p tcp --dport 22 -j ACCEPT
Bu durum yönetimi zorlaştırıyordu.
nftables Neden Geliştirildi?
Modern veri merkezlerinde;
IPv4
IPv6
Bridge
VLAN
NAT
Container
VPN
aynı anda kullanılmaktadır.
iptables mimarisi bu karmaşık yapıları yönetmekte yetersiz kalmaya başlamıştır.
Bu nedenle nftables geliştirilmiştir.
nftables'in Avantajları
Tek Komut
Eskiden:
iptablesip6tablesebtablesarptables
Bugün:
nft
tek komut yeterlidir.
Daha Az Kod
iptables:
iptables -A INPUT -s 192.168.1.15 -p tcp --dport 22 -j ACCEPT
nftables:
nft add rule inet filter input ip saddr 192.168.1.15 tcp dport 22 accept
İlk bakışta benzer görünse de nftables;
kümeler (sets),
eşlemeler (maps),
ifadeler (expressions),
zincirleme kurallar
sayesinde büyük yapılandırmalarda çok daha az ve okunabilir kural gerektirir.
Daha Hızlı
iptables kuralları sıralı olarak değerlendirilir.
Rule1↓Rule2↓Rule3↓Rule4↓Rule5000
Paket her seferinde baştan sona ilerleyebilir.
nftables ise optimize edilmiş veri yapıları kullanır.
Özellikle:
hash tabloları,
interval kümeleri,
set yapıları
sayesinde binlerce kural daha verimli işlenebilir.
Atomic Güncelleme
iptables'da yeni bir kural eklenirken kısa süreli tutarsızlık oluşabilir.
nftables tüm kural kümesini bellekte hazırlar ve tek seferde uygular.
Bu özellik;
servis kesintisini azaltır,
yarış durumlarını (race conditions) önler,
kurumsal ortamlarda daha güvenli değişiklik yönetimi sağlar.
nftables'in Temel Bileşenleri
nftables üç temel yapıdan oluşur.
Table↓Chain↓Rule
Örneğin;
Table│├── INPUT Chain│ ││ ├── SSH izin ver│ ├── HTTP izin ver│ └── diğerlerini engelle│├── OUTPUT Chain│└── FORWARD Chain
Bu hiyerarşi, kuralların düzenli ve yönetilebilir olmasını sağlar.
Paket İşleme Akışı
Bir TCP paketi sunucuya ulaştığında izlediği yol özetle şöyledir:
Internet│▼+-----------+| Ağ Kartı |+-----------+│▼+-----------+| Netfilter |+-----------+│▼+-----------+| PREROUTING |+-----------+│▼Yönlendirme Kararı│ ││ └────────► FORWARD│▼INPUT│▼Uygulama (SSH, Nginx, Apache vb.)
Bu akış, ilerleyen bölümlerde ayrıntılı olarak ele alacağımız hook mekanizmasının temelini oluşturur.
Siber Güvenlik Açısından nftables
Modern tehdit ortamında bir güvenlik duvarı yalnızca port açıp kapatan bir araç değildir. Doğru yapılandırılmış nftables ile:
Gereksiz servisler dış dünyadan tamamen gizlenebilir.
SSH erişimi yalnızca belirli IP adresleri veya yönetim ağlarıyla sınırlandırılabilir.
Bağlantı durumları izlenerek yalnızca beklenen yanıt trafiğine izin verilebilir (stateful firewall).
Port taramaları ve kaba kuvvet (brute force) girişimleri hız sınırlama ve dinamik kümeler kullanılarak azaltılabilir.
NAT ve yönlendirme kuralları tek bir yapı içinde yönetilebilir.
Günlükleme (logging) sayesinde olay müdahalesi ve adli analiz için değerli kayıtlar oluşturulabilir.
IPv4 ve IPv6 için tek bir kurallar kümesiyle tutarlı güvenlik politikaları uygulanabilir.
Kurumsal ortamlarda en önemli ilke "varsayılan olarak reddet (default deny)" yaklaşımıdır. Bu yaklaşımda yalnızca ihtiyaç duyulan trafiğe izin verilir, diğer tüm paketler engellenir. Bu sayede saldırı yüzeyi önemli ölçüde küçülür.
Bölüm Özeti
Bu bölümde:
Güvenlik duvarının temel işlevlerini,
Linux çekirdeğindeki Netfilter mimarisini,
nftables'in neden geliştirildiğini,
iptables ile temel farklarını,
Table, Chain ve Rule kavramlarını,
Paket işleme sürecinin genel yapısını,
nftables'in siber güvenlik açısından sağladığı avantajları
öğrendik.
Bölüm 2 — Pardus 25'te nftables Kurulumu, Yapılandırması ve İlk Güvenlik Politikaları
Bölümün Hedefleri
Bu bölümün sonunda;
nftables'in Pardus 25'te nasıl çalıştığını,
servis yapısını,
yapılandırma dosyalarını,
nftkomutunun ayrıntılı kullanımını,kuralların nasıl oluşturulduğunu,
kuralların kalıcı hale getirilmesini,
güvenli test yöntemlerini,
iptables ile birlikte kullanım sırasında dikkat edilmesi gereken noktaları
öğrenmiş olacaksınız.
Pardus 25'te nftables Mimarisi
Pardus 25 (Debian tabanlı) sistemlerde firewall mimarisi aşağıdaki şekilde çalışır.
Yönetici│nft komutu│libnftables│Netlink API│Linux Kernel (Netfilter)│Ağ Kartı (NIC)
Burada önemli olan nokta şudur:
nft komutu hiçbir zaman doğrudan firewall değildir.
Firewall;
Linux çekirdeğinde çalışan Netfilter'dır.
nft ise yalnızca onu yönetir.
Paketlerin Çekirdeğe Yolculuğu
Bir paket geldiğinde aşağıdaki sırayı takip eder.
Internet│Ethernet Kartı│Linux Network Stack│Netfilter Hook│nftables Rule Set┌──────────┴─────────┐ACCEPT DROP│Uygulamaya İlet
Bu nedenle;
Firewall kapalı değildir.
Firewall her zaman çalışır.
Sadece içinde kural olmayabilir.
nftables Paketinin Kontrolü
Kurulu olup olmadığını kontrol edelim.
dpkg -l | grep nftables
veya
which nft
çıktı örneği
/usr/sbin/nft
Versiyonu öğrenelim.
nft --version
Örneğin
nftables v1.1.x
Servis Durumu
nftables servisini inceleyelim.
systemctl status nftables
örnek çıktı
Loaded: loadedActive: active (exited)
Buradaki
active (exited)
bir hata değildir.
Çünkü nftables;
arka planda sürekli çalışan bir daemon değildir.
Servis yalnızca boot sırasında kuralları yükler.
Kurallar ise Linux çekirdeğinde yaşamaya devam eder.
Bu durum yeni başlayanların en çok karıştırdığı konulardan biridir.
Servisi Etkinleştirmek
Boot sırasında otomatik başlaması için
sudo systemctl enable nftables
hemen başlatmak için
sudo systemctl start nftables
kontrol
systemctl is-enabled nftables
çıktı
enabled
Yapılandırma Dosyası
Ana yapılandırma dosyası
/etc/nftables.conf
kontrol edelim
ls -l /etc/nftables.conf
örnek
-rw-r--r-- root root
içeriği
cat /etc/nftables.conf
Varsayılan Yapı
Genellikle şöyle görünür.
#!/usr/sbin/nft -fflush ruleset
Henüz herhangi bir firewall kuralı yoktur.
flush ruleset Ne Demektir?
Bu satır oldukça önemlidir.
flush ruleset
anlamı
Mevcut bütün firewall kurallarını sil.
Ardından dosyanın geri kalanındaki kuralları yükle.
Bu sayede
eski kurallar
↓
silinir
↓
yenileri yüklenir.
Kurumsal sistemlerde oldukça güvenlidir.
Mevcut Kuralları Görüntüleme
En temel komut
sudo nft list ruleset
örnek
table inet filter {}
Henüz hiçbir kural yok.
Daha Ayrıntılı Görünüm
sudo nft list tables
çıktı
table inet filter
Chain'leri görelim.
sudo nft list chains
nft Komut Yapısı
Genel sözdizimi
nft↓Object↓Operation↓Parameters
örnek
sudo nft add table inet filter
Burada
add↓table↓inet↓filter
her biri ayrı anlam taşır.
Table Oluşturmak
İlk firewall tablomuzu oluşturalım.
sudo nft add table inet filter
kontrol
sudo nft list tables
çıktı
table inet filter
inet Family Nedir?
nftables birçok ağ ailesini destekler.
| Family | Açıklama |
|---|---|
| ip | IPv4 |
| ip6 | IPv6 |
| inet | IPv4 + IPv6 |
| arp | ARP |
| bridge | Bridge |
| netdev | Ağ kartı seviyesi |
Modern sistemlerde
inet
kullanılması önerilir.
Böylece tek kural hem IPv4 hem IPv6 için geçerli olur.
Chain Oluşturmak
Firewall kuralları doğrudan table içine yazılmaz.
Önce chain oluşturulur.
sudo nft add chain inet filter input \'{ type filter hook input priority 0; policy accept; }'
Burada;
type filter
paket filtreleme yapacağımızı söyler.
hook input
gelen paketler.
priority 0
işlenme sırası.
policy accept
varsayılan davranış.
Chain'i Görüntülemek
sudo nft list chain inet filter input
çıktı
table inet filter {chain input {type filter hook input priority filter;policy accept;}}
İlk Kuralımız
SSH izin verelim.
sudo nft add rule inet filter input tcp dport 22 accept
kontrol
sudo nft list ruleset
çıktı
table inet filter {chain input {tcp dport 22 accept}}
HTTP Açmak
sudo nft add rule inet filter input tcp dport 80 accept
HTTPS
sudo nft add rule inet filter input tcp dport 443 accept
Artık
22
80
443
izinlidir.
ICMP Açmak
Ping'e izin vermek için
sudo nft add rule inet filter input icmp type echo-request accept
IPv6 için
sudo nft add rule inet filter input icmpv6 type echo-request accept
Kuralları Numaralandırarak Görmek
sudo nft -a list ruleset
örnek
handle 15handle 16handle 17
Bu handle numaraları;
kural silerken kullanılacaktır.
Kural Silmek
Örneğin
handle 17
ise
sudo nft delete rule inet filter input handle 17
Tüm Kuralları Temizlemek
Sadece test ortamında kullanılmalıdır.
sudo nft flush ruleset
kontrol
sudo nft list ruleset
çıktı
(empty)
Yapılandırmayı Dosyadan Yüklemek
Kuralları uygulamak için
sudo nft -f /etc/nftables.conf
Buradaki
-f
anlamı
File
yani dosyadan oku.
Yapılandırmayı Doğrulamak
Dosyayı yüklemeden önce sözdizimini kontrol etmek iyi bir alışkanlıktır.
sudo nft -c -f /etc/nftables.conf
Burada:
-c(check) yalnızca sözdizimini doğrular.Kurallar çekirdeğe uygulanmaz.
Yazım hataları varsa güvenle tespit edebilirsiniz.
Örnek başarılı çıktı:
/etc/nftables.conf: OK
Yapılandırmayı Kalıcı Hale Getirmek
Geçici olarak eklenen kurallar yeniden başlatma sonrasında kaybolur.
Mevcut kuralları yapılandırma dosyasına kaydetmek için:
sudo nft list ruleset | sudo tee /etc/nftables.conf
Daha sonra:
sudo systemctl restart nftables
veya sistemi yeniden başlatabilirsiniz.
Not: Kuralları doğrudan
/etc/nftables.confdosyasında yönetmek, özellikle kurumsal ortamlarda sürüm kontrolü (Git) ve değişiklik takibi açısından daha sağlıklı bir yöntemdir.
Uzak Sunucularda Çalışırken Dikkat!
SSH ile bağlı olduğunuz bir sunucuda varsayılan politikayı drop yapıp SSH izni vermeyi unutursanız, kendi bağlantınızı kesebilirsiniz.
Güvenli çalışma sırası:
Loopback (
lo) arayüzüne izin verin.Mevcut SSH bağlantılarını koruyan established, related kuralını ekleyin.
SSH (22/TCP) erişimine izin verin.
Gerekli diğer servisleri açın.
En son varsayılan politikayı
dropolarak değiştirin.
Bu sıralama, uzaktan yönetilen sunucularda kilitlenme riskini büyük ölçüde azaltır.
Siber Güvenlik Perspektifi
nftables yapılandırırken en sık yapılan hatalar şunlardır:
Her şeyi kabul eden (
policy accept) bir yapı bırakmakGereksiz portları açık tutmak
IPv4 kurallarını yazıp IPv6'yı unutmak
Günlükleme (logging) yapmamak
Yapılandırma dosyasını test etmeden yüklemek
SSH erişimini sınırlandırmamak
Değişikliklerden önce mevcut kural kümesini yedeklememek
Profesyonel sistem yöneticileri her değişiklikten önce mevcut yapılandırmayı dışa aktarır:
sudo nft list ruleset > nftables-backup.nft
Bu dosya gerektiğinde birkaç saniye içinde geri yüklenebilir:
sudo nft -f nftables-backup.nft
Bölüm Özeti
Bu bölümde:
Pardus 25'te nftables servis yapısını,
/etc/nftables.confdosyasını,nftkomutunun temel sözdizimini,Table ve Chain oluşturmayı,
İlk kuralları eklemeyi ve silmeyi,
Kuralları doğrulamayı ve kalıcı hale getirmeyi,
Uzak sunucularda güvenli değişiklik yapma yöntemlerini
öğrendik.
Bölüm 3 — Table, Chain, Hook ve Priority Mimarisi (Netfilter'in Kalbi)
Bölümün Hedefleri
Bu bölümün sonunda;
Netfilter Hook mimarisini,
Paketlerin Linux çekirdeğinde nasıl işlendiğini,
Table kavramını,
Chain türlerini,
Base Chain ve Regular Chain farklarını,
Hook noktalarını,
Priority (öncelik) mantığını,
Paket yaşam döngüsünü,
nftables'in çekirdek içinde nasıl çalıştığını
ayrıntılı olarak öğrenmiş olacaksınız.
Neden Hook Mantığını Öğrenmeliyiz?
Çoğu sistem yöneticisi aşağıdaki gibi kurallar yazmayı bilir:
nft add rule inet filter input tcp dport 22 accept
Ancak bu kuralın çekirdeğin tam olarak hangi aşamasında çalıştığını bilmez.
Bu bilgi eksik olduğunda:
NAT kuralları çalışmayabilir.
Port yönlendirme başarısız olabilir.
VPN trafiği beklenmedik şekilde engellenebilir.
Docker veya Podman ağlarıyla çakışmalar yaşanabilir.
Gereksiz performans kayıpları oluşabilir.
Profesyonel bir sistem yöneticisi için yalnızca kural yazmak yeterli değildir; kuralın ne zaman ve nerede çalıştığını da bilmek gerekir.
Linux Ağ Yığını (Network Stack)
Bir ağ paketi fiziksel ağ kartına ulaştığında doğrudan uygulamaya gitmez.
Aşağıdaki aşamalardan geçer:
İnternet
│
▼
Ethernet / Wi-Fi Kartı
│
▼
Linux Ağ Sürücüsü (Driver)
│
▼
Linux Network Stack
│
▼
Netfilter Hook
│
nftables Kuralları
│
Routing (Yönlendirme)
│
Uygulama veya İleri Yönlendirme
İşte nftables kuralları Netfilter Hook adı verilen noktalarda değerlendirilir.
Netfilter Hook Nedir?
Hook, Linux çekirdeğinin ağ trafiğini işlemek için belirlediği kontrol noktasıdır.
Bir paketin yolculuğu sırasında çekirdek belirli noktalarda durur ve şöyle der:
"Bu paket hakkında karar vermek isteyen bir firewall var mı?"
İşte nftables burada devreye girer.
Beş Temel Hook
Linux çekirdeğinde en önemli beş hook vardır.
İnternet
│
▼
PREROUTING
│
┌──────────┴──────────┐
│ │
▼ ▼
INPUT FORWARD
│ │
▼ ▼
Yerel Süreç Başka Sisteme
│ Yönlendirilecek
▼
OUTPUT
│
▼
POSTROUTING
│
▼
Ağ Kartı
Bu diyagramı anlamak, nftables'in büyük kısmını anlamak demektir.
PREROUTING
Paket sisteme ulaştığı anda çalışan ilk hook'tur.
İnternet
↓
Ethernet
↓
PREROUTING
Henüz;
hedef belirlenmemiştir,
uygulama seçilmemiştir,
yönlendirme yapılmamıştır.
Burada genellikle:
DNAT
Port Forwarding
Paket işaretleme (mark)
QoS hazırlıkları
yapılır.
Örnek
Kullanıcı;
203.0.113.10:8080
adresine bağlanıyor.
Firewall bu paketi şu adrese çevirebilir:
192.168.1.25:80
Bu işlem PREROUTING aşamasında gerçekleşir.
INPUT Hook
Paket bu makinenin kendisine geliyorsa INPUT çalışır.
SSH
↓
Sunucu
↓
INPUT
↓
sshd
Örneğin;
SSH
Apache
Nginx
Samba
PostgreSQL
servisleri burada değerlendirilir.
INPUT İçin Örnek
tcp dport 22 accept
Bu kural yalnızca bu sunucunun SSH servisini etkiler.
Başka makinelere yönlendirilen paketlerle ilgisi yoktur.
FORWARD Hook
Firewall aynı zamanda router ise,
paket başka bir makineye gönderiliyorsa
FORWARD çalışır.
Örneğin;
İnternet
↓
Firewall
↓
192.168.10.15
Firewall yalnızca geçiş yapıyorsa
INPUT kullanılmaz.
FORWARD kullanılır.
Nerelerde Kullanılır?
Router
Gateway
VPN Sunucusu
Docker Host
Kubernetes
Sanallaştırma Sunucuları
Güvenlik Duvarı Cihazları
OUTPUT Hook
Bu kez paket sunucunun kendisinden çıkmaktadır.
Örneğin;
apt update
↓
OUTPUT
↓
İnternet
veya
curl
↓
OUTPUT
↓
Web Sunucusu
Sunucunun dışarı gönderdiği trafik burada filtrelenebilir.
Güvenlik Açısından Önemi
Bir sunucu ele geçirildiğinde,
zararlı yazılım dışarı bağlantı kurmak isteyebilir.
OUTPUT zinciriyle:
sadece DNS
sadece HTTP
sadece HTTPS
izin verilebilir.
Böylece veri sızdırma (Data Exfiltration) önemli ölçüde zorlaştırılır.
POSTROUTING
Paket artık çıkış yapacaktır.
Son kontrol noktasıdır.
OUTPUT
↓
POSTROUTING
↓
Ethernet
↓
İnternet
Burada çoğunlukla:
SNAT
Masquerade
Trafik işaretleme
işlemleri yapılır.
Hook Özeti
| Hook | Çalışma Zamanı | Kullanım Amacı |
|---|---|---|
| PREROUTING | Paket sisteme girerken | DNAT, Port Forwarding |
| INPUT | Yerel uygulamaya giderken | Firewall |
| FORWARD | Başka makineye giderken | Router |
| OUTPUT | Yerel süreçten çıkarken | Çıkış filtreleme |
| POSTROUTING | Ağ kartından çıkmadan önce | SNAT, Masquerade |
Table Nedir?
Table;
aynı amaca hizmet eden chain'lerin bulunduğu mantıksal konteynerdir.
Örneğin
table inet filter
içinde
INPUT
OUTPUT
FORWARD
bulunabilir.
Birden fazla table olabilir.
filter
nat
mangle
security
Ancak nftables'de isimler tamamen yöneticinin tercihine bağlıdır.
Örneğin;
table inet webserver
oluşturabilirsiniz.
Chain Nedir?
Chain,
kuralların bulunduğu listedir.
Örneğin
INPUT
↓
SSH
↓
HTTP
↓
HTTPS
↓
DROP
Bir paket yukarıdan aşağıya doğru değerlendirilir.
Base Chain
Base Chain,
çekirdeğin hook noktalarına bağlı zincirdir.
Örneğin
add chain inet filter input \
{ type filter hook input priority 0; }
Buradaki
hook input
ifadesi nedeniyle
çekirdek bu zinciri otomatik çalıştırır.
Regular Chain
Regular Chain ise
hook içermez.
Kendiliğinden çalışmaz.
Örneğin
add chain inet filter ssh_rules
Bu chain'e
INPUT içerisinden
jump ssh_rules
komutuyla geçilir.
Avantajı
Kurallar bölünmüş olur.
Örneğin
INPUT
↓
jump ssh
↓
jump web
↓
jump vpn
↓
jump mail
Böylece binlerce kural yerine modüler ve okunabilir bir yapı elde edilir.
Priority Nedir?
Aynı hook üzerinde birden fazla chain olabilir.
Hangisi önce çalışacak?
Bunu Priority belirler.
Priority -300
↓
Priority -150
↓
Priority 0
↓
Priority 50
↓
Priority 100
Küçük sayı önce çalışır.
Örnek
priority -100
priority 0
önce hangisi?
Elbette
-100
Filtreleme Sırası
Packet
↓
Chain A priority -100
↓
Chain B priority 0
↓
Chain C priority 50
Verdict (Karar)
Bir kural sonunda mutlaka bir karar üretir.
Başlıca kararlar şunlardır:
| Verdict | Açıklama |
|---|---|
| accept | Pakete izin ver |
| drop | Paketi sessizce yok et |
| reject | Paketi reddet ve karşı tarafa hata bildir |
| jump | Başka chain'e git |
| goto | Zinciri değiştir, geri dönme |
| continue | Sonraki kuralla devam et |
| return | Çağıran chain'e geri dön |
jump ve goto Arasındaki Fark
Bu iki kavram sıkça karıştırılır.
INPUT
│
├── jump ssh_rules
│ │
│ └── return
│
└── Sonraki kurallar
jump kullanıldığında return ile geri dönülür ve INPUT zincirindeki sonraki kurallar çalışmaya devam eder.
goto ise çağrıyı kalıcı olarak başka zincire aktarır; geri dönüş yapılmaz. Büyük kural kümelerinde akışı dikkatli tasarlamak gerekir.
Kurumsal Ortamlarda Önerilen Yapı
table inet filter
│
├── input
│ ├── jump loopback
│ ├── jump established
│ ├── jump ssh
│ ├── jump web
│ ├── jump monitoring
│ └── drop
│
├── output
│
├── forward
│
├── ssh
├── web
├── monitoring
└── loopback
Bu yapı;
okunabilirliği artırır,
bakım maliyetini azaltır,
ekip çalışmasını kolaylaştırır,
değişikliklerin daha güvenli yapılmasını sağlar.
Siber Güvenlik Perspektifi
Hook mimarisini anlamadan yazılan kurallar çoğu zaman beklenen sonucu vermez. Örneğin:
DNAT kuralını
INPUTzincirine yazmak yerinePREROUTINGaşamasında tanımlamak gerekir.İnternetten gelen saldırıları filtrelemek için
INPUT, ağ geçidi olarak çalışan bir sunucuda ise çoğu zamanFORWARDzinciri hedeflenmelidir.Sunucudan dışarı çıkan trafiği denetlemek için
OUTPUTzincirinin ihmal edilmesi, kötü amaçlı yazılımların komuta-kontrol (C2) sunucularına erişmesini kolaylaştırabilir.NAT işlemlerinin yanlış hook'ta yapılması bağlantı sorunlarına yol açabilir.
Kuralları yalnızca doğru yazmak değil, doğru hook'ta uygulamak güvenli ve kararlı bir firewall tasarımının temelidir.
Bölüm Özeti
Bu bölümde;
Netfilter Hook mimarisini,
PREROUTING, INPUT, FORWARD, OUTPUT ve POSTROUTING aşamalarını,
Table ve Chain kavramlarını,
Base Chain ile Regular Chain farklarını,
Priority mekanizmasını,
jump,gotove diğer verdict türlerini,Kurumsal ortamlarda önerilen zincir organizasyonunu
ayrıntılı olarak öğrendik.
Pardus 25'te nftables ile Güvenlik Duvarı Yönetimi
Bölüm 4 — Stateful Firewall ve Connection Tracking (Conntrack) Mimarisi
Bu bölüm, modern Linux güvenlik duvarlarının en önemli konularından biridir. Günümüzde kurumsal ağlarda kullanılan güvenlik duvarlarının neredeyse tamamı durum tabanlı (stateful) çalışır. nftables'in en büyük gücü de Linux çekirdeğinin Connection Tracking (conntrack) altyapısıyla bütünleşik çalışmasıdır.
Bölümün Hedefleri
Bu bölümün sonunda;
Stateless ve Stateful Firewall arasındaki farkı,
Connection Tracking (conntrack) mekanizmasını,
ct stateifadelerini,new,established,related,invaliddurumlarını,Conntrack tablosunun nasıl çalıştığını,
Performans etkilerini,
Güvenli SSH erişim kurallarını,
Siber saldırılar karşısında conntrack kullanımını,
Gerçek sistemlerde en iyi uygulamaları
öğreneceksiniz.
Firewall'lar İkiye Ayrılır
1. Stateless Firewall
En eski firewall mantığıdır.
Her paket birbirinden bağımsız değerlendirilir.
Firewall şu soruyu sorar:
"Bu paketin portu nedir?"
Başka hiçbir şeyle ilgilenmez.
Örneğin:
TCP 80
↓
İzin ver
Paket daha önce gelmiş mi?
Bağlantının devamı mı?
Yanıt paketi mi?
Firewall bunu bilmez.
Stateless Firewall Sorunu
Bir kullanıcı web sunucusuna bağlanıyor.
İstemci
↓
HTTP GET
↓
Sunucu
Sunucu cevap veriyor.
Sunucu
↓
HTTP Response
↓
İstemci
Stateless firewall ikinci paketi tanımadığı için onu tekrar baştan değerlendirir.
Bu hem:
yavaştır,
hem de güvenliği azaltabilir.
Stateful Firewall
Stateful firewall bağlantının tamamını takip eder.
Artık yalnızca paket değil,
bağlantı (connection) önemlidir.
Firewall şöyle düşünür:
Bu paket
mevcut bağlantının devamı mı?
Eğer cevap evetse,
yeniden tüm kuralları incelemek zorunda kalmaz.
Gerçek Hayattan Örnek
Bir otelin resepsiyonunu düşünelim.
Stateless sistem:
Her girişte tekrar kimlik sorar.
Stateful sistem:
Bir kez kayıt olursunuz.
Sonra oda kartınız sizi tanımlar.
İşte conntrack tam olarak bunu yapar.
Connection Tracking (Conntrack) Nedir?
Linux çekirdeği;
aktif bağlantıları bellekte tutar.
Bu listeye
Connection Tracking Table
adı verilir.
Bağlantı Geldi
↓
Conntrack
↓
Tabloya Kaydet
↓
Sonraki Paketlerde
Tekrar Kontrol Et
Conntrack Tablosu
Örneğin;
192.168.1.20
↓
Google
↓
HTTPS
Bağlantısı oluştu.
Tabloda şu kayıt oluşur.
Kaynak IP
192.168.1.20
Hedef IP
142.250.x.x
Port
443
Durum
ESTABLISHED
Artık aynı bağlantının devamı olan paketler tekrar analiz edilmez.
Conntrack Nerede Çalışır?
Paket
│
▼
Linux Network Stack
│
▼
Conntrack
│
▼
nftables Rule
│
ACCEPT veya DROP
Conntrack,
Netfilter ile birlikte Linux çekirdeğinde çalışır.
Conntrack'in Avantajları
Daha hızlıdır.
Güvenlidir.
NAT işlemlerini kolaylaştırır.
VPN bağlantılarını takip eder.
FTP gibi karmaşık protokolleri yönetebilir.
Bağlantı tabanlı güvenlik sağlar.
ct State Nedir?
nftables içinde
ct state
ifadesi
Connection Tracking bilgisini okur.
Örneğin;
ct state established accept
anlamı
Mevcut bağlantının devamıysa izin ver.
En Önemli Durumlar
NEW
Bağlantı ilk kez geliyor.
İstemci
↓
İlk SYN Paketi
↓
NEW
Henüz bağlantı kurulmamıştır.
Örnek
ct state new
ESTABLISHED
Bağlantı kurulmuş.
Artık veri aktarılıyor.
SYN
↓
SYN ACK
↓
ACK
↓
ESTABLISHED
Artık bütün veri paketleri
ESTABLISHED durumundadır.
Örnek
ct state established
RELATED
Bu durum yeni başlayanların en zorlandığı konudur.
Bağlantı yeni değildir.
Ama mevcut bağlantıyla ilişkilidir.
Örneğin
FTP
Kontrol bağlantısı
↓
Veri bağlantısı
Bu veri bağlantısı
RELATED olur.
Başka örnek
ICMP
Destination Unreachable
paketi.
Bu paket
ilgili bağlantıyla bağlantılıdır.
Örnek
ct state related
INVALID
Conntrack paketi anlamlandıramamıştır.
Sebepleri
bozuk paket
eksik TCP oturumu
saldırı
timeout
hatalı checksum
olabilir.
INVALID paketler çoğunlukla
engellenmelidir.
ct state invalid drop
Dört Durum Birlikte
En çok kullanılan kural
ct state established,related accept
Bu,
profesyonel firewall'ların
ilk kurallarından biridir.
Neden İlk Kural Budur?
SSH ile sunucuya bağlandınız.
İlk paket
NEW
olur.
Bağlantı kurulduktan sonra
binlerce paket
ESTABLISHED
olacaktır.
Firewall bunları tekrar tekrar incelemek yerine
tek satırla geçirir.
Örnek INPUT Zinciri
ct state invalid drop
ct state established,related accept
tcp dport 22 accept
tcp dport 80 accept
tcp dport 443 accept
Bu sıralama önemlidir.
Yanlış Sıralama
tcp dport 22 accept
tcp dport 80 accept
tcp dport 443 accept
ct state established accept
Bu yapı gereksiz işlem oluşturur.
Doğru Sıralama
ct state invalid drop
ct state established,related accept
iif lo accept
tcp dport 22 accept
tcp dport 80 accept
tcp dport 443 accept
drop
İlk olarak geçersiz paketler elenir, ardından mevcut bağlantılar hızlıca kabul edilir. Böylece yalnızca yeni bağlantılar ayrıntılı kurallardan geçer.
Loopback Trafiği
Yerel sistem süreçleri birbirleriyle lo (loopback) arayüzü üzerinden haberleşir.
Bu nedenle çoğu sistemde aşağıdaki kural en başlarda yer alır:
iif lo accept
Bu kural olmadan bazı yerel servisler beklenmedik şekilde çalışmayabilir.
Gerçek SSH Senaryosu
SSH bağlantısı şu şekilde ilerler:
Kullanıcı
↓
SYN
↓
NEW
↓
ACCEPT
↓
SYN ACK
↓
ESTABLISHED
↓
Terminal Trafiği
↓
ESTABLISHED
↓
ESTABLISHED
↓
ESTABLISHED
Bağlantı kurulduktan sonra tüm terminal trafiği ESTABLISHED olarak değerlendirilir ve çok daha hızlı işlenir.
Conntrack Tablosunu Görüntüleme
Bağlantıları incelemek için conntrack aracı kullanılabilir. Öncelikle paket kurulu olmalıdır:
sudo apt install conntrack
Mevcut bağlantıları listelemek:
sudo conntrack -L
Örnek çıktı:
tcp 6 431999 ESTABLISHED src=192.168.1.20 dst=142.250.190.78 sport=52984 dport=443
Belirli Bağlantıları Filtreleme
Sadece SSH bağlantılarını görmek:
sudo conntrack -L -p tcp --dport 22
Sadece HTTPS oturumlarını görmek:
sudo conntrack -L -p tcp --dport 443
Bu komutlar özellikle yoğun sunucularda olay analizi yaparken oldukça faydalıdır.
Conntrack İstatistikleri
Çekirdeğin conntrack kullanımını görmek için:
cat /proc/sys/net/netfilter/nf_conntrack_count
Mevcut aktif bağlantı sayısını gösterir.
Maksimum bağlantı kapasitesi:
cat /proc/sys/net/netfilter/nf_conntrack_max
Örnek:
262144
Bu sistem aynı anda yaklaşık 262 bin bağlantıyı takip edebilir.
Conntrack ve NAT İlişkisi
NAT işlemleri conntrack olmadan düşünülemez.
Örneğin:
192.168.1.25
↓
203.0.113.5
↓
İnternet
Geri dönen paketin hangi istemciye ait olduğunu conntrack bilir.
Bu nedenle:
SNAT
DNAT
Masquerade
Port Forwarding
işlemlerinin tamamı conntrack bilgilerini kullanır.
Performans Açısından Değerlendirme
Durum tabanlı filtreleme ilk bakışta ek yük oluşturuyor gibi görünse de pratikte çoğu senaryoda performansı artırır.
Avantajları:
Mevcut bağlantılar tekrar ayrıntılı filtrelenmez.
Kural zincirlerinde gereksiz dolaşım azalır.
NAT işlemleri doğru eşleştirilir.
Büyük kural kümelerinde işlem maliyeti düşer.
Dikkat edilmesi gereken nokta ise conntrack tablosunun dolmamasıdır. Yoğun DDoS saldırılarında tablo kapasitesi aşılırsa yeni bağlantılar kurulamayabilir.
Siber Güvenlik Perspektifi
Connection Tracking yalnızca performans için değil, güvenlik için de kritik öneme sahiptir.
Kurumsal firewall'larda yaygın olarak kullanılan ilk kurallar şunlardır:
ct state invalid drop
ct state established,related accept
iif lo accept
Bu üç kural sayesinde:
Bozuk ve şüpheli paketler erken aşamada engellenir.
Mevcut oturumlar kesintisiz çalışır.
Yerel servisler güvenli şekilde haberleşir.
Ayrıca yalnızca NEW durumundaki SSH bağlantılarına izin vererek kaba kuvvet saldırılarının analizini kolaylaştırabilir ve daha sonraki bölümlerde göreceğimiz hız sınırlama (rate limiting) kurallarıyla bunları birleştirebilirsiniz.
En Sık Yapılan Hatalar
| Hata | Sonuç |
|---|---|
ct state established,related accept kuralını yazmamak | Performans düşer, bazı yanıt paketleri engellenebilir |
invalid paketleri filtrelememek | Şüpheli veya bozuk trafik sisteme ulaşabilir |
Loopback (iif lo) kuralını unutmak | Yerel servisler sorun yaşayabilir |
Varsayılan politikayı drop yapıp gerekli kuralları eklememek | Uzak bağlantılar kesilebilir |
| Conntrack tablosunu izlememek | Yoğun trafik altında yeni bağlantılar başarısız olabilir |
Bölüm Özeti
Bu bölümde:
Stateless ve Stateful Firewall farkını,
Linux Connection Tracking altyapısını,
ct statekullanımını,new,established,relatedveinvaliddurumlarını,Conntrack tablosunun çalışma mantığını,
NAT ile ilişkisini,
Performans ve güvenlik açısından en iyi uygulamaları
ayrıntılı olarak öğrendik.
Pardus 25'te nftables ile Güvenlik Duvarı Yönetimi
Bölüm 5 — Profesyonel Firewall Kuralları Yazma ve Paket Eşleştirme (Packet Matching)
Bu bölümde nftables'in gerçek gücünü keşfedeceğiz. Artık yalnızca port açıp kapatmayacağız; IP adresleri, ağlar, protokoller, arayüzler, bağlantı durumları, zaman damgaları ve daha birçok kritere göre profesyonel güvenlik politikaları oluşturacağız.
Bölümün Hedefleri
Bu bölümün sonunda;
Paket eşleştirme (Packet Matching) mantığını,
Kaynak ve hedef IP filtrelemeyi,
TCP, UDP ve ICMP filtrelemeyi,
Port bazlı kuralları,
Arayüz (Interface) filtrelemeyi,
MAC adresi filtrelemeyi,
Yorum (comment) eklemeyi,
Sayaç (counter) kullanımını,
Günlükleme (log) ile birlikte kural yazmayı,
En iyi uygulamaları
öğrenmiş olacaksınız.
Paket Eşleştirme (Packet Matching) Nedir?
Firewall'a gelen her paket onlarca farklı özelliğe sahiptir.
Örneğin;
Kaynak IP
192.168.1.25
Hedef IP
10.0.0.5
Protokol
TCP
Kaynak Port
50124
Hedef Port
443
Interface
eth0
MAC Adresi
00:11:22:33:44:55
Connection State
ESTABLISHED
nftables bu alanların tamamını okuyabilir.
Sonra;
Eşleşiyor mu?
↓
EVET
↓
Kuralı Uygula
Bir Firewall Kuralı Nasıl Çalışır?
Örneğin;
tcp dport 22 accept
Firewall şu sırayı izler.
Paket Geldi
↓
TCP mi?
↓
Port 22 mi?
↓
EVET
↓
ACCEPT
Paket Başlığı (Packet Header)
Bir TCP paketi aşağıdaki bilgileri içerir.
+----------------------+
Kaynak IP
Hedef IP
TTL
Protocol
Checksum
+----------------------+
TCP Header
Kaynak Port
Hedef Port
Flags
Window
+----------------------+
nftables bu alanların tamamını değerlendirebilir.
Kaynak IP Filtreleme
Belirli IP adresine izin vermek:
sudo nft add rule inet filter input ip saddr 192.168.1.25 accept
Anlamı:
Kaynak IP
↓
192.168.1.25
↓
İzin Ver
Hedef IP Filtreleme
Sunucunun belirli IP adresine gelen trafiği filtrelemek mümkündür.
sudo nft add rule inet filter input ip daddr 192.168.1.100 accept
Ağ (Subnet) Filtreleme
Tek IP yerine bütün ağı kabul edebiliriz.
sudo nft add rule inet filter input ip saddr 192.168.10.0/24 accept
Anlamı
192.168.10.1
↓
192.168.10.255
↓
Hepsi Kabul
Birden Fazla Ağ
sudo nft add rule inet filter input ip saddr \
{192.168.1.0/24,10.10.0.0/16} accept
Bu yöntem, uzun uzun ayrı ayrı kural yazmaktan daha verimlidir.
IPv6 Filtreleme
sudo nft add rule inet filter input ip6 saddr 2001:db8::/32 accept
TCP Filtreleme
sudo nft add rule inet filter input tcp accept
Artık yalnızca TCP paketleri eşleşecektir.
UDP Filtreleme
sudo nft add rule inet filter input udp accept
ICMP Filtreleme
Ping isteklerine izin vermek:
sudo nft add rule inet filter input icmp type echo-request accept
Ping cevapları:
sudo nft add rule inet filter input icmp type echo-reply accept
ICMPv6
IPv6 için farklı protokol kullanılır.
sudo nft add rule inet filter input icmpv6 accept
IPv6 ağlarında özellikle Neighbor Discovery Protocol (NDP) için ICMPv6 kritik öneme sahiptir. ICMPv6'yı tamamen engellemek, IPv6 iletişimini bozabilir.
Port Filtreleme
SSH
tcp dport 22 accept
HTTP
tcp dport 80 accept
HTTPS
tcp dport 443 accept
DNS
udp dport 53 accept
Birden Fazla Port
tcp dport {22,80,443} accept
Bu yöntem üç ayrı kural yerine tek bir kural kullanır.
Port Aralığı
tcp dport 10000-10100 accept
Kaynak Port
Çoğu zaman hedef port filtrelenir.
Ancak gerekirse:
tcp sport 443 accept
şeklinde kaynak port da kontrol edilebilir.
Interface Filtreleme
Gelen Arayüz
iif "eth0" accept
Yalnızca eth0 üzerinden gelen paketler eşleşir.
Giden Arayüz
oif "eth1" accept
Loopback
iif lo accept
Bu kural hemen her Linux sisteminde bulunmalıdır.
MAC Adresi Filtreleme
Yerel ağlarda belirli istemcileri MAC adresine göre filtrelemek mümkündür.
ether saddr 08:00:27:11:22:33 accept
Not: MAC adresleri yalnızca aynı yerel ağ (Layer 2) içinde anlamlıdır. İnternet üzerinden gelen paketlerde MAC adresi değiştiği için bu yöntem uzaktaki istemcileri tanımlamak için kullanılamaz.
TCP Bayrakları (TCP Flags)
SYN paketlerini yakalamak:
tcp flags syn accept
Yalnızca yeni TCP bağlantılarının başlangıcında SYN bayrağı bulunur.
SYN Flood koruma kurallarını ilerleyen bölümlerde bu özellik üzerine kuracağız.
Arayüz ve IP Birlikte
iif eth0 ip saddr 192.168.1.0/24 accept
Anlamı
eth0
+
192.168.1.0/24
↓
Kabul
Birden fazla koşul aynı kural içinde kullanılabilir.
Connection Tracking ile Birlikte
ct state established,related accept
ve
tcp dport 22 accept
birlikte kullanılabilir.
Profesyonel firewall'lar çoğunlukla çoklu eşleştirme yapar.
Counter Kullanımı
Bir kuralın kaç kez çalıştığını görmek için:
counter
Örneğin:
tcp dport 22 counter accept
Kuralları sayaçlarla birlikte görüntülemek:
sudo nft list ruleset
Örnek:
counter packets 253 bytes 18932
Bu bilgi özellikle performans analizi ve saldırı tespiti için çok değerlidir.
Comment Kullanımı
Kuralların ne amaçla yazıldığını belgelemek için açıklama eklenebilir.
tcp dport 22 accept comment "SSH Yönetim Erişimi"
Kurumsal ortamlarda yüzlerce kural bulunduğundan, açıklamalar bakım ve denetim süreçlerini büyük ölçüde kolaylaştırır.
Log ile Birlikte Kullanım
tcp dport 22 log prefix "SSH Attempt: " accept
Böylece hem günlük kaydı oluşturulur hem de bağlantıya izin verilir.
Daha ayrıntılı log yönetimini ilerleyen bölümlerde inceleyeceğiz.
Birden Fazla Koşul
Aşağıdaki örnek yalnızca yönetim ağından gelen SSH bağlantılarına izin verir:
ip saddr 192.168.1.0/24 tcp dport 22 ct state new accept
Firewall şu sırayla değerlendirir:
Kaynak Ağ Doğru mu?
↓
TCP mi?
↓
Port 22 mi?
↓
Yeni Bağlantı mı?
↓
ACCEPT
Güvenli SSH Kuralı
Kurumsal sunucular için önerilen örnek:
ct state established,related accept
iif lo accept
ip saddr 192.168.10.0/24 tcp dport 22 ct state new accept
ct state invalid drop
counter drop
Bu yapı;
yalnızca yönetim ağına izin verir,
mevcut oturumları korur,
geçersiz paketleri engeller,
reddedilen paketleri sayar.
Kural Sıralamasının Önemi
Yanlış sıralama:
DROP
↓
SSH
↓
HTTP
Bu durumda SSH ve HTTP kurallarına hiçbir zaman ulaşılamaz.
Doğru sıralama:
INVALID
↓
ESTABLISHED
↓
LOOPBACK
↓
SSH
↓
HTTP
↓
HTTPS
↓
DROP
Firewall kuralları ilk eşleşmede (first match) sonlanacak şekilde tasarlanmalıdır.
Gerçek Kurumsal Senaryo
Bir kurumun aşağıdaki güvenlik politikası olsun:
Yönetim ağı:
192.168.10.0/24Web sunucusu herkese açık
SSH yalnızca sistem yöneticileri için
MySQL dış ağdan erişilemez
Yerel süreçler serbest
Kurallar şu mantıkla oluşturulabilir:
ct state invalid drop
ct state established,related accept
iif lo accept
ip saddr 192.168.10.0/24 tcp dport 22 accept
tcp dport {80,443} accept
tcp dport 3306 drop
counter drop
Bu yapı hem okunabilir hem de genişletilebilir.
Performans İpuçları
Profesyonel firewall tasarımında şu ilkeler önerilir:
En sık eşleşen kuralları üst sıralara yerleştirin.
established,relatedkuralını her zaman başlarda kullanın.Gereksiz tekrar eden kurallardan kaçının.
Aynı işlemi yapan kuralları kümeler (sets) ile birleştirin.
Sayaç (
counter) kullanımını kritik kurallarla sınırlandırarak yoğun sistemlerde ek yükü azaltın.
Siber Güvenlik Perspektifi
Firewall yalnızca "izin ver" veya "engelle" mantığıyla kullanılmamalıdır.
İyi tasarlanmış kurallar sayesinde:
Yönetim servisleri yalnızca güvenilir ağlardan erişilebilir.
Veritabanı servisleri dış dünyaya tamamen kapatılabilir.
Yanlış yapılandırmalar daha kolay tespit edilir.
Günlükleme ve sayaçlar sayesinde saldırılar erken fark edilir.
Kurallar açıklamalarla belgelenerek denetim süreçleri kolaylaştırılır.
Kurumsal ortamlarda okunabilirlik ve sürdürülebilirlik, yalnızca güvenlik kadar önemlidir.
Bölüm Özeti
Bu bölümde;
Paket eşleştirme mantığını,
IP, ağ ve port filtrelemeyi,
TCP, UDP ve ICMP kurallarını,
Arayüz ve MAC adresi filtrelemeyi,
countervecommentkullanımını,Çoklu koşullarla profesyonel kurallar yazmayı,
Kural sıralamasının önemini,
Kurumsal firewall tasarım ilkelerini
ayrıntılı olarak öğrendik.
Pardus 25'te nftables ile Güvenlik Duvarı Yönetimi
Bölüm 6 — Sets, Maps ve Verdict Maps ile Yüksek Performanslı Kural Yönetimi
Bu bölüm nftables'in iptables'a göre en büyük avantajını anlatmaktadır. Büyük ölçekli kurumlarda binlerce IP adresi, yüzlerce port ve onlarca ağ bloğunu tek tek kurallarla yönetmek hem performans kaybına hem de bakım zorluklarına neden olur. nftables'in Sets, Maps ve Verdict Maps yapıları bu sorunu çözer.
Bölümün Hedefleri
Bu bölümün sonunda;
Set kavramını,
Anonymous Set ve Named Set farkını,
Interval Set kullanımını,
Timeout özellikli dinamik kümeleri,
Map ve Verdict Map yapılarını,
Büyük IP kara listelerini yönetmeyi,
Beyaz liste (Whitelist) oluşturmayı,
Tehdit istihbaratı (Threat Intelligence) beslemelerini kullanmayı,
Performans avantajlarını
öğreneceksiniz.
Büyük Firewall'ların En Büyük Sorunu
Bir kurumun;
120 şubesi
800 sunucusu
4500 istemcisi
olsun.
Sadece SSH erişimi için izin verilen IP listesi:
192.168.1.10
192.168.1.11
192.168.1.12
192.168.1.13
...
192.168.1.300
iptables yaklaşımı:
Rule 1
Rule 2
Rule 3
Rule 4
...
Rule 300
Bu hem okunabilirliği azaltır hem de her paketin uzun bir kural listesinden geçmesine neden olabilir.
nftables Çözümü
nftables bunu tek satırda yapabilir.
SET
↓
Yüzlerce IP
↓
Tek Kural
Bu nedenle büyük veri merkezlerinde nftables çok daha ölçeklenebilir bir çözüm sunar.
Set Nedir?
Set, aynı türdeki verilerin tutulduğu bir koleksiyondur.
Örneğin:
IP Adresleri
↓
Set
veya
Portlar
↓
Set
ya da
MAC Adresleri
↓
Set
Anonymous Set
En basit kullanım şeklidir.
sudo nft add rule inet filter input tcp dport {22,80,443} accept
Burada:
{22,80,443}
bir Anonymous Set'tir.
Geçici olarak oluşturulur.
İsmi yoktur.
Anonymous Set Avantajı
Bunun yerine üç ayrı kural yazabilirdik.
22
↓
80
↓
443
Tek satır daha hızlıdır.
Named Set
Kurumsal sistemlerde önerilen yöntem budur.
Önce set oluşturulur.
sudo nft add set inet filter trusted_hosts \
'{ type ipv4_addr; }'
Artık elimizde
trusted_hosts
isimli bir küme vardır.
Set'e Eleman Eklemek
sudo nft add element inet filter trusted_hosts \
{192.168.1.10}
Birden fazla IP
sudo nft add element inet filter trusted_hosts \
{192.168.1.10,192.168.1.11,192.168.1.12}
Set Kullanımı
sudo nft add rule inet filter input \
ip saddr @trusted_hosts accept
Artık
trusted_hosts
içindeki bütün IP'ler
SSH erişebilir.
Kurumsal Avantaj
Yarın yeni sistem yöneticisi geldi.
iptables
↓
Yeni kural ekle
↓
Firewall yeniden düzenlenir.
nftables
↓
Sadece sete yeni IP eklenir.
Firewall kuralları değişmez.
Set İçeriğini Görüntülemek
sudo nft list set inet filter trusted_hosts
örnek çıktı
elements = {
192.168.1.10,
192.168.1.11,
192.168.1.12
}
Set'ten Eleman Silmek
sudo nft delete element inet filter trusted_hosts \
{192.168.1.11}
Interval Set
En güçlü özelliklerden biridir.
Tek tek IP yerine
IP aralıkları saklanabilir.
sudo nft add set inet filter office \
'{ type ipv4_addr; flags interval; }'
Eleman ekleyelim.
sudo nft add element inet filter office \
{192.168.10.0/24}
veya
sudo nft add element inet filter office \
{10.10.0.0-10.10.255.255}
Bu milyonlarca IP'yi birkaç satırda temsil edebilir.
Port Set
Sadece IP değil,
portlar da tutulabilir.
sudo nft add set inet filter webports \
'{ type inet_service; }'
Ekleyelim.
sudo nft add element inet filter webports \
{80,443,8080}
Kural
tcp dport @webports accept
MAC Address Set
type ether_addr
ile
MAC adresleri de tutulabilir.
AA:BB:CC:DD:EE:FF
gibi.
Bu özellikle aynı yerel ağdaki cihazları gruplamak için faydalıdır.
Timeout Destekli Set
Dinamik engelleme için kullanılabilir.
sudo nft add set inet filter blacklist \
'{ type ipv4_addr; timeout 1h; }'
Bir IP ekleyelim.
sudo nft add element inet filter blacklist \
{203.0.113.25 timeout 30m}
30 dakika sonra
otomatik silinir.
Neden Önemli?
Brute Force
↓
IP Kara Listeye Al
↓
30 dakika bekle
↓
Otomatik kaldır
Bu yapı, manuel müdahaleye gerek kalmadan geçici engellemeler oluşturur.
Map Nedir?
Map,
bir değeri başka bir değere dönüştürür.
80
↓
HTTP
443
↓
HTTPS
veya
IP
↓
Port
Map tanımlayalım.
sudo nft add map inet filter service_map \
'{ type inet_service : verdict; }'
Burada:
Anahtar türü:
inet_service(port)Değer türü:
verdict(karar)
Verdict Map
Verdict Map, eşleşen değere göre farklı kararlar verebilir.
Örneğin:
22
↓
accept
23
↓
drop
25
↓
accept
3306
↓
drop
Tek bir kural içinde farklı davranışlar tanımlanabilir.
Verdict Map Kullanımı
tcp dport vmap {
22 : accept,
80 : accept,
443 : accept,
23 : drop,
3306 : drop
}
Bu yapı, uzun if-else benzeri kural dizilerinin yerini alır.
Gerçek Kurumsal Senaryo
Bir üniversitede:
Öğretim üyeleri
Öğrenciler
Sunucular
Misafir ağı
farklı IP bloklarında olsun.
10.1.0.0/16
↓
Akademik Personel
10.2.0.0/16
↓
Öğrenciler
10.3.0.0/16
↓
Sunucular
10.4.0.0/16
↓
Misafir
Bunlar ayrı setlerde tutulabilir.
faculty
students
servers
guests
Kurallar ise sadece bu setleri referans alır.
Bu yaklaşım hem okunabilirliği artırır hem de yönetimi kolaylaştırır.
Threat Intelligence Entegrasyonu
Birçok kurum, zararlı IP listelerini düzenli olarak günceller.
Örneğin:
threat-feed.txt
içeriğinde:
203.0.113.15
198.51.100.20
192.0.2.45
bulunabilir.
Bir betik (script) bu IP'leri belirli aralıklarla blacklist setine ekleyebilir.
Firewall kurallarını değiştirmeden yalnızca set güncellenir.
Bu yöntem:
Tehdit istihbaratı (Threat Intelligence)
IOC (Indicator of Compromise)
CERT uyarıları
Kurumsal kara listeler
ile entegrasyon için idealdir.
Performans Analizi
Geleneksel Yaklaşım
IP1
↓
IP2
↓
IP3
↓
IP4
↓
...
↓
IP1000
Her paket sırayla kontrol edilir.
Set Kullanımı
Hash Lookup
↓
IP bulundu mu?
↓
Evet
↓
ACCEPT
Hash tabanlı arama sayesinde büyük kümelerde arama süresi önemli ölçüde azalır.
Siber Güvenlik Perspektifi
Modern saldırılar tek bir IP adresinden gelmez.
Örneğin:
Botnet'ler
Dağıtık kaba kuvvet (Distributed Brute Force)
Tarama altyapıları
Tehdit aktörlerinin dinamik IP havuzları
sürekli değişen adresler kullanır.
Bu nedenle:
Kara listeler (
blacklist)Beyaz listeler (
whitelist)Dinamik timeout setleri
Threat Intelligence beslemeleri
günümüz firewall mimarisinin vazgeçilmez bileşenleridir.
Kuralları değiştirmek yerine yalnızca kümelerin güncellenmesi, hem hata riskini azaltır hem de değişikliklerin daha güvenli uygulanmasını sağlar.
En Sık Yapılan Hatalar
| Hata | Sonuç |
|---|---|
| Her IP için ayrı kural yazmak | Performans ve yönetilebilirlik azalır |
| Named Set yerine sürekli Anonymous Set kullanmak | Bakım zorlaşır |
| Dinamik kara listelerde timeout kullanmamak | Eski engellemeler kalıcı hale gelir |
| Büyük ağ bloklarını yanlış tanımlamak | Yetkisiz erişim oluşabilir |
| Threat Intelligence beslemelerini doğrulamadan uygulamak | Meşru istemciler yanlışlıkla engellenebilir |
Bölüm Özeti
Bu bölümde;
Sets kavramını,
Anonymous ve Named Set farklarını,
Interval Set kullanımını,
Timeout özellikli dinamik kümeleri,
Port ve MAC adresi kümelerini,
Maps ve Verdict Maps yapılarını,
Kurumsal ağlarda set kullanımını,
Threat Intelligence entegrasyonunu,
Performans avantajlarını
ayrıntılı olarak öğrendik.
Pardus 25'te nftables ile Güvenlik Duvarı Yönetimi
Bölüm 7 — NAT (Network Address Translation) ve Port Yönlendirme (Port Forwarding)
Bu bölüm, yönlendirici (router), internet ağ geçidi (gateway), sanallaştırma sunucuları, Docker/Podman hostları ve VPN sunucuları yöneten sistem yöneticileri için en önemli bölümlerden biridir. NAT, yalnızca adres çevirme değil, aynı zamanda güvenlik, ağ tasarımı ve kaynak yönetimi açısından da kritik bir teknolojidir.
Bölümün Hedefleri
Bu bölümün sonunda;
NAT'ın çalışma mantığını,
SNAT, DNAT ve Masquerade arasındaki farkları,
Port Forwarding yapılandırmasını,
Hairpin NAT (NAT Loopback),
Çoklu WAN senaryolarını,
Docker ve Podman ile NAT ilişkisini,
VPN sunucularında NAT kullanımını,
NAT ile Connection Tracking ilişkisini,
Kurumsal ağ senaryolarını
ayrıntılı olarak öğrenmiş olacaksınız.
NAT Nedir?
Network Address Translation (NAT), ağ paketlerinin kaynak (Source) veya hedef (Destination) IP adreslerini Linux çekirdeği tarafından değiştirme işlemidir.
En basit haliyle:
Önce
192.168.1.25
↓
Sonra
203.0.113.10
İnternette görülen IP ile yerel ağdaki gerçek IP farklı olabilir.
NAT Neden Kullanılır?
Örneğin bir okul laboratuvarını düşünelim.
Akıllı Tahta 1
192.168.10.10
Akıllı Tahta 2
192.168.10.11
Öğretmen Bilgisayarı
192.168.10.20
Pardus Sunucusu
192.168.10.100
Bu cihazların tamamı internete çıkacaktır.
Ancak servis sağlayıcı yalnızca bir adet genel IP vermektedir.
Örneğin:
203.0.113.50
İşte NAT burada devreye girer.
NAT Olmadan
192.168.10.20
↓
İnternet
İnternet yönlendiricileri özel IP adreslerini yönlendirmez.
Bu nedenle bağlantı başarısız olur.
NAT ile
192.168.10.20
↓
203.0.113.50
↓
İnternet
Sunucu özel IP'yi genel IP'ye çevirir.
NAT Türleri
Linux'ta temel olarak üç NAT yöntemi kullanılır.
| NAT Türü | Amaç |
|---|---|
| SNAT | Kaynak IP değiştirme |
| DNAT | Hedef IP değiştirme |
| Masquerade | Dinamik SNAT |
SNAT (Source NAT)
Kaynak IP değiştirilir.
192.168.1.20
↓
203.0.113.5
Paket internete çıkarken kaynak adres değiştirilir.
SNAT Akışı
İstemci
192.168.1.20
↓
Firewall
↓
203.0.113.5
↓
İnternet
nftables'de SNAT
Önce NAT tablosu oluşturulur.
sudo nft add table ip nat
POSTROUTING zinciri:
sudo nft add chain ip nat postrouting \
'{ type nat hook postrouting priority srcnat; }'
Kural:
sudo nft add rule ip nat postrouting \
ip saddr 192.168.1.0/24 snat to 203.0.113.5
Artık bu ağdan çıkan tüm paketler belirtilen genel IP ile internete çıkar.
Masquerade Nedir?
Masquerade, SNAT'ın dinamik IP kullanan sürümüdür.
Örneğin:
PPPoE
DSL
Fiber
Mobil İnternet
DHCP
ile alınan IP adresleri sürekli değişebilir.
SNAT kullanırsanız:
203.0.113.5
değiştiğinde kurallar bozulur.
Masquerade ise çıkış arayüzünün güncel IP adresini otomatik kullanır.
Masquerade Kuralı
sudo nft add rule ip nat postrouting \
oif "eth0" masquerade
Burada:
eth0
üzerindeki güncel IP otomatik seçilir.
SNAT ve Masquerade Karşılaştırması
| Özellik | SNAT | Masquerade |
|---|---|---|
| Sabit IP | ✔ | ✔ |
| Dinamik IP | ✘ | ✔ |
| Performans | Daha yüksek | Bir miktar daha düşük |
| Veri Merkezi | ✔ | Genellikle kullanılmaz |
| Ev/Okul İnterneti | Kullanılabilir | En uygun seçim |
En iyi uygulama: Statik genel IP'ye sahip kurumsal sunucularda SNAT, DHCP veya PPPoE kullanan ortamlarda Masquerade tercih edilir.
DNAT (Destination NAT)
Bu kez hedef adres değiştirilir.
İnternet
↓
203.0.113.5
↓
192.168.1.100
Yani dışarıdan gelen trafik iç ağdaki başka bir sunucuya yönlendirilir.
DNAT Akışı
İnternet
↓
Firewall
↓
Web Sunucusu
PREROUTING Zinciri
DNAT her zaman yönlendirme kararı verilmeden önce uygulanmalıdır.
Bu nedenle:
PREROUTING
hook'u kullanılır.
NAT Zinciri
sudo nft add chain ip nat prerouting \
'{ type nat hook prerouting priority dstnat; }'
Web Sunucusuna Yönlendirme
sudo nft add rule ip nat prerouting \
tcp dport 80 dnat to 192.168.1.100
Artık internetten gelen:
203.0.113.5:80
istekleri
192.168.1.100:80
sunucusuna aktarılır.
Port Forwarding
Dışarıdaki port ile içerideki port farklı olabilir.
8080
↓
80
Kural:
sudo nft add rule ip nat prerouting \
tcp dport 8080 dnat to 192.168.1.100:80
SSH Port Yönlendirme
2222
↓
22
Kural:
sudo nft add rule ip nat prerouting \
tcp dport 2222 dnat to 192.168.1.50:22
Bu yöntem, standart portu değiştirmek yerine yönlendirme amacıyla kullanılabilir. Ancak tek başına bir güvenlik önlemi değildir; SSH erişimi yine IP kısıtlamaları, anahtar tabanlı kimlik doğrulama ve hız sınırlama ile korunmalıdır.
Hairpin NAT (NAT Loopback)
Yerel ağdaki bir istemci, sunucuya genel IP adresi üzerinden erişmek isterse Hairpin NAT gerekir.
192.168.1.20
↓
203.0.113.5
↓
192.168.1.100
Hairpin NAT yapılandırılmazsa bağlantı başarısız olabilir.
Bu özellik özellikle:
Yerel DNS kullanılmayan ortamlarda
Web sunucularında
Reverse Proxy senaryolarında
önem kazanır.
NAT ve Conntrack
NAT işlemleri Connection Tracking ile birlikte çalışır.
İlk paket:
NEW
olarak değerlendirilir ve eşleştirme tablosuna kaydedilir.
Dönüş paketi geldiğinde:
ESTABLISHED
durumu sayesinde doğru istemciye geri yönlendirilir.
Bu nedenle NAT, conntrack olmadan düşünülemez.
NAT Tablosu ve Filtre Tablosu
Yeni başlayanların sık yaptığı bir hata:
filter
↓
DNAT
DNAT kurallarını filter tablosunda yazmaya çalışmaktır.
Doğru yapı:
table ip nat
↓
PREROUTING
↓
DNAT
POSTROUTING
↓
SNAT
Filtreleme (accept, drop) ise filter tablosunda yapılmalıdır.
NAT Sonrası Filtreleme
Port yönlendirme yaptığınızda yalnızca NAT kuralı yeterli değildir.
Örneğin:
203.0.113.5:80
↓
192.168.1.100
DNAT uygulanmış olsa bile, hedef sunucuya iletilecek paketlerin FORWARD zincirinde de kabul edilmesi gerekir.
Örnek:
sudo nft add rule inet filter forward \
ip daddr 192.168.1.100 tcp dport 80 ct state new,established accept
Ve dönüş trafiği için:
sudo nft add rule inet filter forward \
ct state established,related accept
Gerçek Kurumsal Senaryo
Bir okul ağı düşünelim:
İnternet
│
Genel IP
203.0.113.10
│
Pardus Gateway
│
──────────────────────────
192.168.10.10 Moodle
192.168.10.20 Nextcloud
192.168.10.30 Samba
192.168.10.40 Git Sunucusu
İstenen politika:
| Dış Port | İç Sunucu |
|---|---|
| 80 | Moodle |
| 443 | Moodle |
| 8443 | Nextcloud |
| 2222 | Git Sunucusu (SSH) |
Her servis için ayrı DNAT kuralı tanımlanır ve FORWARD zincirinde yalnızca gerekli trafiğe izin verilir.
Docker ve Podman
Docker ve Podman varsayılan ağlarında NAT kullanırlar.
Örneğin:
Container
172.17.0.5
↓
Masquerade
↓
eth0
↓
İnternet
Bu nedenle:
Docker'ın otomatik oluşturduğu kuralları
Kendi yazdığınız nftables kurallarıyla
çakıştırmamaya dikkat etmelisiniz.
Özellikle üretim ortamlarında container ağ politikalarını planlarken hangi yazılımın NAT kurallarını yönettiği net olarak belirlenmelidir.
VPN Sunucularında NAT
VPN istemcileri çoğunlukla özel IP adresleri kullanır.
Örneğin:
10.8.0.0/24
Bu istemcilerin internete çıkabilmesi için çoğu senaryoda Masquerade gerekir.
Örnek:
sudo nft add rule ip nat postrouting \
ip saddr 10.8.0.0/24 oif "eth0" masquerade
Performans İpuçları
Gereksiz NAT kurallarından kaçının.
Statik IP ortamlarında Masquerade yerine SNAT tercih edin.
DNAT kurallarını mümkün olduğunca spesifik yazın (IP + port).
NAT ve filtreleme kurallarını farklı tablolarda yönetin.
Port yönlendirmesi yapılan servisler için yalnızca gerekli
FORWARDkurallarını ekleyin.
Siber Güvenlik Perspektifi
NAT, bir güvenlik mekanizması değildir.
Sık yapılan yanlış inanışlardan biri:
"İç ağ NAT arkasında olduğu için güvende."
Gerçekte:
NAT yalnızca adres çevirir.
Erişim kontrolünü filter tablosundaki kurallar sağlar.
Yanlış yapılandırılmış DNAT kuralları, iç ağdaki kritik sunucuları doğrudan internete açabilir.
Port yönlendirmesi yapılan her servis ayrıca güncellenmeli, izlenmeli ve erişim kurallarıyla korunmalıdır.
Kurumsal ortamlarda "en az ayrıcalık" ilkesi gereği yalnızca gerçekten gerekli portlar yönlendirilmelidir.
En Sık Yapılan Hatalar
| Hata | Sonuç |
|---|---|
DNAT kuralını filter tablosunda yazmak | Kural çalışmaz |
DNAT yapıp FORWARD zincirini unutmak | Trafik hedefe ulaşamaz |
| Masquerade'i statik IP ortamında gereksiz kullanmak | Küçük de olsa performans kaybı |
| Tüm portları iç ağa yönlendirmek | Büyük güvenlik riski |
| Hairpin NAT ihtiyacını göz ardı etmek | Yerel kullanıcılar genel IP ile erişemez |
Bölüm Özeti
Bu bölümde:
NAT'ın çalışma mantığını,
SNAT, DNAT ve Masquerade farklarını,
Port Forwarding yapılandırmasını,
Hairpin NAT kullanımını,
NAT ile Connection Tracking ilişkisini,
Docker, Podman ve VPN senaryolarını,
Kurumsal ağ geçitlerinde doğru NAT tasarımını,
NAT'ın güvenlik açısından doğru konumunu
ayrıntılı olarak öğrendik.
Pardus 25'te nftables ile Güvenlik Duvarı Yönetimi
Bölüm 8 — Logging, Monitoring ve Debugging (Günlükleme, İzleme ve Hata Ayıklama)
Firewall yalnızca paketleri engellemek için değildir. Aynı zamanda sistem yöneticisine neler olduğunu gösterebilmelidir. Bir paketin neden engellendiğini, hangi IP adresinden geldiğini, hangi kuralla eşleştiğini veya bir saldırının ne zaman başladığını göremiyorsanız, güvenlik duvarınız yalnızca "engel koyan" bir mekanizma olur. Gerçek kurumsal ortamlarda ise firewall aynı zamanda bir gözlem ve olay müdahale (Incident Response) aracıdır.
Bölümün Hedefleri
Bu bölümün sonunda;
nftables logging mimarisini,
logifadesini,Log seviyelerini (severity),
journalctlile log analizini,nft monitorkullanımını,Rule Counter (Sayaçlar),
nftraceile paket takibini,Gerçek zamanlı izleme yöntemlerini,
Performans ve log optimizasyonunu,
SIEM sistemleri ile entegrasyonu
öğreneceksiniz.
Firewall Logları Neden Önemlidir?
Bir güvenlik yöneticisinin en önemli sorularından bazıları şunlardır:
Sunucuya kim bağlanmaya çalıştı?
Hangi IP adresleri sürekli SSH denemesi yapıyor?
Hangi servis hedef alınıyor?
Firewall hangi paketleri engelledi?
Hangi kural en çok çalışıyor?
Bir saldırı ne zaman başladı?
Bu soruların cevabı log kayıtlarında bulunur.
Firewall Log Akışı
Paket
│
▼
nftables Rule
│
LOG oluştur
│
▼
Linux Kernel Log
│
▼
systemd-journald
│
▼
journalctl
Burada dikkat edilmesi gereken nokta:
nftables kendi log dosyasını oluşturmaz.
Loglar Linux çekirdeği üzerinden sistem günlüklerine gönderilir.
İlk Log Kuralı
SSH bağlantı denemelerini kaydedelim.
sudo nft add rule inet filter input \
tcp dport 22 \
log \
accept
Artık her SSH bağlantısı kayıt altına alınacaktır.
Prefix Kullanımı
Loglara açıklama eklemek oldukça önemlidir.
sudo nft add rule inet filter input \
tcp dport 22 \
log prefix "SSH Attempt: " \
accept
Örnek log:
SSH Attempt:
SRC=203.0.113.25
DST=192.168.1.10
PROTO=TCP
DPT=22
Kurumsal ortamlarda prefix kullanmak analiz süresini önemli ölçüde azaltır.
DROP Logları
En sık kullanılan senaryolardan biri:
sudo nft add rule inet filter input \
log prefix "DROP: " \
drop
Artık reddedilen tüm paketler kaydedilir.
Ancak Dikkat!
Şu kural:
log drop
Yoğun saldırı altında milyonlarca log üretebilir.
Sonuç:
Disk dolar.
SSD ömrü azalır.
journald aşırı yüklenir.
CPU kullanımı artabilir.
Bu nedenle her paketi kaydetmek yerine yalnızca anlamlı olayları loglamak daha doğru bir yaklaşımdır.
Log Seviyeleri
Linux log sistemi farklı önem derecelerini destekler.
emerg
alert
crit
err
warning
notice
info
debug
Örneğin:
log level warning
veya
log level info
Log Flags
Ek bilgi almak için çeşitli bayraklar kullanılabilir.
Örneğin:
log flags tcp sequence
veya
log flags ip options
veya
log flags all
Bu bilgiler özellikle adli analizlerde (forensics) faydalıdır.
journalctl Kullanımı
Firewall loglarını görmek:
journalctl -k
Buradaki:
-k
Kernel loglarını gösterir.
Gerçek Zamanlı İzleme
journalctl -kf
Bu komut, yeni logları anlık olarak ekrana getirir.
Firewall kurallarını test ederken en çok kullanılan yöntemlerden biridir.
Prefix ile Filtreleme
Örneğin:
SSH Attempt:
kullanıyorsak:
journalctl -k | grep "SSH Attempt"
yalnızca SSH loglarını görüntüler.
Zaman Aralığına Göre
Son bir saatteki loglar:
journalctl --since "1 hour ago"
Belirli tarih:
journalctl --since "2026-07-08 09:00"
Belirli aralık:
journalctl \
--since "09:00" \
--until "11:00"
Bu özellik olay müdahalesi sırasında büyük kolaylık sağlar.
Counter (Sayaçlar)
Her kuralın kaç kez çalıştığını görmek mümkündür.
tcp dport 22 counter accept
Daha sonra:
sudo nft list ruleset
Örnek çıktı:
counter packets 254
bytes 19824
Counter Neden Önemlidir?
Bir kuralın:
0 packet
olması
o kuralın hiç çalışmadığını gösterir.
Bu durum:
yanlış sıralama,
yanlış IP,
yanlış port,
gereksiz kural
olduğunu gösterebilir.
nft Monitor
Gerçek zamanlı firewall değişikliklerini görmek için:
sudo nft monitor
Örneğin başka bir terminalde:
sudo nft add rule ...
çalıştırırsanız,
anında görüntülenir.
Rule Monitor
Yalnızca kuralları izlemek:
sudo nft monitor rules
Table Monitor
sudo nft monitor tables
Element Monitor
Dinamik setleri izlemek:
sudo nft monitor elements
Bu özellik özellikle timeout kullanılan kara listelerinde oldukça faydalıdır.
Trace (nftrace)
Bir paketin hangi kurallardan geçtiğini görebiliriz.
Önce ilgili paket için izleme etkinleştirilir:
sudo nft add rule inet filter input \
tcp dport 22 \
meta nftrace set 1
Daha sonra:
sudo nft monitor trace
Örnek çıktı:
trace id ...
packet ...
rule ...
accept
Artık paketin hangi zincirlerde dolaştığını adım adım görebilirsiniz.
Debug İçin Harika Bir Araç
Bir paket neden DROP oluyor?
Tahmin etmeye gerek yok.
nftrace bunu gösterir.
INPUT
↓
Rule 1
↓
Rule 2
↓
Rule 3
↓
DROP
Böylece hatalı kuralları hızlıca tespit edebilirsiniz.
Rule Handle
Kuralları handle numarasıyla görelim.
sudo nft -a list ruleset
Örnek:
handle 17
handle 18
handle 19
Bu numaralar hem hata ayıklama hem de belirli kuralları silmek için kullanılır.
Sayaçları Sıfırlamak
Test ortamlarında sayaçları temizlemek faydalı olabilir.
sudo nft reset counters
Ardından yeni testler daha doğru ölçülebilir.
Gerçek Kurumsal Senaryo
Bir web sunucusunda:
SSH brute force
HTTP taraması
Port taraması
olduğunu düşünelim.
Kurallar:
ct state invalid \
log prefix "INVALID " \
drop
tcp dport 22 \
log prefix "SSH " \
accept
tcp dport 80 \
counter \
accept
counter \
drop
Böylece:
Geçersiz paketler loglanır.
SSH denemeleri izlenir.
HTTP trafiği sayaçlarla ölçülür.
Diğer tüm reddedilen paketler sayılır.
SIEM Entegrasyonu
Kurumsal yapılarda loglar yalnızca sunucuda tutulmaz.
Genellikle:
Firewall
↓
journald
↓
rsyslog
↓
Syslog Sunucusu
↓
SIEM
Örneğin:
Wazuh
Graylog
ELK Stack
Splunk
QRadar
gibi platformlara aktarılır.
Bu sayede:
Korelasyon kuralları oluşturulabilir.
Alarm üretilebilir.
Anormal davranışlar otomatik tespit edilebilir.
Performans Açısından Logging
Yanlış:
Her paketi logla
Doğru:
Yeni SSH bağlantılarını logla.
INVALID paketleri logla.
DROP edilen kritik trafiği logla.
Brute Force denemelerini logla.
Normal HTTP trafiğini loglama.
Bu yaklaşım hem disk kullanımını azaltır hem de olay analizini kolaylaştırır.
Siber Güvenlik Perspektifi
Firewall logları, güvenlik operasyon merkezlerinin (SOC) en önemli veri kaynaklarından biridir.
Loglar sayesinde:
Brute force saldırıları tespit edilir.
Port taramaları belirlenebilir.
Zararlı IP adresleri kara listeye alınabilir.
Olay zaman çizelgesi (timeline) oluşturulabilir.
Dijital adli analiz için kanıt niteliğinde kayıtlar elde edilir.
Ancak logların güvenilirliği de korunmalıdır. Günlüklerin merkezi bir sunucuya aktarılması, yetkisiz değişikliklere karşı korunması ve düzenli olarak arşivlenmesi kurumsal güvenlik politikalarının önemli bir parçasıdır.
En Sık Yapılan Hatalar
| Hata | Sonuç |
|---|---|
| Her paketi loglamak | Disk ve CPU yükü artar |
| Prefix kullanmamak | Analiz zorlaşır |
| Sayaçları hiç kontrol etmemek | Etkisiz kurallar fark edilmez |
journalctl -kf ile test yapmamak | Sorunların teşhisi gecikir |
nftrace kullanmamak | Paketin neden engellendiği anlaşılmaz |
| Logları merkezi sisteme aktarmamak | Olay analizi zorlaşır |
Laboratuvar Uygulaması
Senaryo
Bir Pardus 25 sunucusunda:
SSH erişimleri kayıt altına alınacak.
Geçersiz paketler loglanacak.
HTTP trafiği sayılacak.
Tüm reddedilen paketler izlenecek.
Örnek kurallar
ct state invalid log prefix "INVALID: " drop
ct state established,related accept
iif lo accept
tcp dport 22 ct state new \
log prefix "SSH LOGIN: " \
accept
tcp dport {80,443} counter accept
counter log prefix "DROP: " drop
Test
Başka bir bilgisayardan:
ssh kullanıcı@sunucu
veya:
curl http://sunucu
Aynı anda sunucuda:
journalctl -kf
ve
sudo nft list ruleset
komutlarını çalıştırarak logları ve sayaçları gözlemleyebilirsiniz.
Bölüm Özeti
Bu bölümde;
nftables logging mimarisini,
logifadesini,Prefix ve log seviyelerini,
journalctlile analiz yapmayı,nft monitorvenftracekullanımını,Sayaçlarla kural etkinliğini ölçmeyi,
SIEM entegrasyonunu,
Performans odaklı günlükleme stratejilerini
ayrıntılı olarak öğrendik.
Pardus 25'te nftables ile Güvenlik Duvarı Yönetimi
Bölüm 9 — Rate Limiting, Anti-Brute Force, Port Tarama ve DDoS Saldırılarına Karşı Koruma
Bu bölüm, internete açık Pardus 25 sunucuları için en kritik güvenlik bölümlerinden biridir. İnternete bağlanan her SSH, web, e-posta veya VPN sunucusu, kısa süre içinde otomatik tarama botlarının ve kaba kuvvet (Brute Force) saldırılarının hedefi hâline gelir. nftables; bağlantı hızı sınırlama (Rate Limiting), dinamik kümeler (Dynamic Sets), zaman aşımı (Timeout), bağlantı sayısı kontrolü ve Connection Tracking altyapısı ile bu saldırılara karşı etkili koruma sağlayabilir.
Önemli Not: nftables, temel ve orta ölçekli ağ saldırılarını azaltmada güçlüdür. Ancak çok büyük hacimli dağıtık hizmet engelleme (DDoS) saldırılarında tek başına yeterli olmayabilir. Böyle durumlarda ağ servis sağlayıcısı, yük dengeleyiciler ve özel DDoS koruma çözümleriyle birlikte kullanılmalıdır.
Bölümün Hedefleri
Bu bölümün sonunda;
Rate Limiting mantığını,
SSH Brute Force saldırılarını engellemeyi,
Dinamik IP kara listeleri oluşturmayı,
Timeout kullanan güvenlik politikalarını,
SYN Flood saldırılarına karşı korumayı,
ICMP Flood saldırılarını sınırlandırmayı,
Port taramalarını yavaşlatmayı,
Web sunucularını korumayı,
Gerçek kurumsal senaryoları
öğreneceksiniz.
İnternete Açık Bir Sunucuya Neler Olur?
Sunucu internete bağlandıktan birkaç dakika sonra otomatik taramalar başlar.
Örneğin:
203.0.113.21
↓
SSH Denemesi
↓
Başarısız
↓
Tekrar
↓
Tekrar
↓
Tekrar
Bir süre sonra farklı IP'lerden yeni denemeler gelir.
Gerçek Dünya
Bir VPS veya fiziksel sunucu internete açıldığında genellikle aşağıdaki portlar taranır.
22 SSH
23 Telnet
80 HTTP
443 HTTPS
3389 RDP
3306 MySQL
5432 PostgreSQL
Bu taramaların büyük kısmı otomatik botlar tarafından gerçekleştirilir.
Brute Force Nedir?
Bir saldırganın çok sayıda kullanıcı adı ve parola denemesi yapmasıdır.
Örneğin:
root
123456
↓
Başarısız
↓
root
password
↓
Başarısız
↓
root
admin
↓
Başarısız
Bu işlem dakikada binlerce kez tekrarlanabilir.
Rate Limiting Nedir?
Bir istemcinin belirli süre içinde oluşturabileceği bağlantı sayısını sınırlandırır.
Örneğin:
Dakikada
5 SSH
↓
İzin Ver
6. bağlantı
↓
DROP
Basit Rate Limit
SSH için:
sudo nft add rule inet filter input \
tcp dport 22 \
ct state new \
limit rate 5/minute \
accept
Anlamı:
Dakikada en fazla 5 yeni SSH bağlantısı kabul edilir.
Daha fazlası bu kuralla eşleşmez.
Not: Bu kural tek başına "her IP için 5 bağlantı" anlamına gelmez. Toplam akışı sınırlar. IP bazlı sınırlandırma için dinamik kümeler kullanılmalıdır.
Burst Nedir?
Kısa süreli yoğunluğu tolere eder.
limit rate 10/minute burst 5
Anlamı:
Normal
10 bağlantı
+
İlk anda
5 ek bağlantı
↓
Toplam
15
Bu özellik, kullanıcıların kısa süreli yoğun bağlantılarında yanlış engellemeleri azaltır.
ICMP Flood Koruması
Ping saldırılarını azaltmak için:
icmp type echo-request \
limit rate 10/second \
accept
Saniyede yalnızca 10 ping isteği kabul edilir.
Web Sunucusu
HTTP için:
tcp dport 80 \
limit rate 100/second \
accept
HTTPS:
tcp dport 443 \
limit rate 100/second \
accept
Bu kurallar yoğun fakat normal kullanıcı trafiğini engellemeden aşırı bağlantıları sınırlamaya yardımcı olur.
Dynamic Set
Şimdi gerçek güvenlik başlıyor.
Önce set oluşturalım.
sudo nft add set inet filter ssh_blacklist \
'{ type ipv4_addr; timeout 30m; }'
Bu kümedeki IP'ler
30 dakika sonra
otomatik silinecektir.
Kara Listeyi Kullanmak
İlk kural
ip saddr @ssh_blacklist drop
Artık listedeki bütün IP'ler
engellenmektedir.
Şüpheli IP Eklemek
Örneğin
203.0.113.20
adresini ekleyelim.
sudo nft add element inet filter ssh_blacklist \
{203.0.113.20}
30 dakika sonra
otomatik silinir.
Dinamik Kara Liste
Yeni SSH bağlantıları sırasında belirli bir eşiği aşan IP'ler otomatik olarak kümeye eklenebilir.
Kavramsal akış:
SSH
↓
Çok Fazla Deneme
↓
Set'e Ekle
↓
30 Dakika Engelle
↓
Otomatik Sil
Bu yöntem, uzun süreli manuel kara listeler yerine daha esnek bir savunma sağlar.
Connection Limit
Aynı IP'nin aynı anda çok sayıda bağlantı açmasını sınırlandırabiliriz.
Örnek:
ct count over 10 drop
Bu kural, belirli bağlamlarda aynı istemcinin aşırı bağlantı açmasını engellemek için kullanılabilir. Kullanım şekli senaryoya göre değişebilir ve laboratuvar ortamında test edilmelidir.
TCP SYN Flood
TCP bağlantısı şu şekilde başlar:
SYN
↓
SYN ACK
↓
ACK
Saldırgan:
SYN
SYN
SYN
SYN
SYN
gönderip
ACK göndermez.
Sunucu yarım açık bağlantılarla meşgul olur.
SYN Paketlerini Sınırlandırmak
tcp flags syn \
limit rate 20/second \
accept
Bu kural yalnızca yeni TCP bağlantılarının başlangıç paketlerini sınırlar.
INVALID Paketler
Her zaman ilk sıralarda olmalıdır.
ct state invalid drop
Established
Her zaman üst sıralarda bulunmalıdır.
ct state established,related accept
SSH Koruma Sırası
Önerilen yapı:
INVALID
↓
ESTABLISHED
↓
LOOPBACK
↓
BLACKLIST
↓
RATE LIMIT
↓
SSH
↓
DROP
Bu sıra hem performans hem de güvenlik açısından uygundur.
Port Taraması (Port Scan)
Bir saldırgan:
22
23
25
53
80
110
139
443
445
3306
gibi çok sayıda porta kısa sürede istek gönderebilir.
Amaç:
hangi servislerin açık olduğunu öğrenmektir.
Port Scan'i Zorlaştırmak
Yeni bağlantıları sınırlandırabiliriz.
ct state new \
limit rate 30/minute \
accept
Bu yaklaşım hızlı taramaların etkisini azaltır.
Not: Port taramalarını tamamen engellemek mümkün değildir. Ancak hızlarını düşürmek ve günlükleyerek tespit etmek mümkündür.
SSH Brute Force Koruması
Örnek politika:
ct state invalid drop
ct state established,related accept
iif lo accept
ip saddr @ssh_blacklist drop
tcp dport 22 \
ct state new \
limit rate 5/minute \
accept
counter log prefix "SSH DROP: " drop
Bu yapı:
Geçersiz paketleri engeller.
Mevcut bağlantıları korur.
Kara listedeki IP'leri reddeder.
SSH bağlantı hızını sınırlar.
Reddedilen denemeleri kaydeder.
Web Sunucusu Koruması
ct state established,related accept
tcp dport {80,443} \
limit rate 200/second \
accept
Yoğun ama normal web trafiği için uygun bir başlangıç politikasıdır.
Yönetim Ağı Kısıtlaması
SSH yalnızca yönetim ağına açık olsun.
ip saddr 192.168.10.0/24 \
tcp dport 22 \
accept
Bu, kaba kuvvet saldırılarının büyük bölümünü daha başlamadan engeller.
Gerçek Kurumsal Senaryo
Bir okul sunucusu:
Moodle
Samba
Nextcloud
SSH
servisleri sunuyor.
Politika:
| Servis | Koruma |
|---|---|
| SSH | Sadece yönetim ağı + rate limit |
| HTTP | Rate limit |
| HTTPS | Rate limit |
| Samba | Sadece yerel ağ |
| Diğer tüm trafik | Drop + Log |
Bu yaklaşım, "en az ayrıcalık" ilkesine uygundur.
Log ile Birlikte
Şüpheli SSH denemelerini kaydedelim.
tcp dport 22 \
log prefix "SSH ATTACK: " \
limit rate 5/minute \
accept
Ardından:
journalctl -k | grep SSH
ile analiz edilebilir.
Fail2ban ve nftables
Birçok kurum Fail2ban ile nftables'i birlikte kullanır.
Çalışma mantığı:
SSH Logları
↓
Fail2ban
↓
Şüpheli IP
↓
nftables Set
↓
DROP
Bu entegrasyon sayesinde başarısız oturum açma denemeleri otomatik analiz edilir ve saldırgan IP'ler belirli sürelerle engellenebilir.
Performans Açısından
En hızlı kurallar:
ct state established
iif lo
set lookup
En maliyetli işlemler:
Her paketi loglamak
Çok fazla ayrı kural yazmak
Gereksiz karmaşık ifadeler
Yanlış sıralanmış zincirler
Bu nedenle sık eşleşen kurallar her zaman üst sıralarda yer almalıdır.
Siber Güvenlik Perspektifi
Firewall'un amacı yalnızca saldırıları engellemek değildir.
İyi tasarlanmış bir nftables politikası:
Brute Force saldırılarını yavaşlatır.
Port taramalarını tespit eder.
Bot trafiğini filtreler.
Loglar sayesinde olay müdahalesini kolaylaştırır.
Dinamik kara listeler ile saldırganların tekrar deneme süresini uzatır.
Ancak unutulmamalıdır ki:
SSH için anahtar tabanlı kimlik doğrulama,
Çok faktörlü kimlik doğrulama (MFA),
Güçlü parola politikaları,
Düzenli güvenlik güncellemeleri
gibi önlemler firewall'u tamamlayan güvenlik katmanlarıdır.
En Sık Yapılan Hatalar
| Hata | Sonuç |
|---|---|
| Rate limit değerlerini çok düşük belirlemek | Meşru kullanıcılar da engellenebilir |
| Kara listeleri hiç temizlememek | Gereksiz engellemeler oluşur |
| Her paketi loglamak | Disk ve CPU yükü artar |
| SSH'yi tüm internete açmak | Brute force riski artar |
| Rate limiting'i tek güvenlik önlemi sanmak | Gelişmiş saldırılar yine başarılı olabilir |
Laboratuvar Uygulaması
Senaryo
Bir Pardus 25 sunucusunda:
SSH yalnızca dakikada 5 yeni bağlantı kabul edecek.
Ping istekleri saniyede 10 ile sınırlandırılacak.
Kara listedeki IP'ler 30 dakika engellenecek.
Reddedilen SSH denemeleri loglanacak.
Örnek kurallar
ct state invalid drop
ct state established,related accept
iif lo accept
ip saddr @ssh_blacklist drop
icmp type echo-request limit rate 10/second accept
tcp dport 22 ct state new \
limit rate 5/minute \
log prefix "SSH: " \
accept
counter drop
Bu yapı küçük ve orta ölçekli sunucular için iyi bir başlangıç güvenlik politikasıdır.
Bölüm Özeti
Bu bölümde:
Rate Limiting mekanizmasını,
SSH Brute Force korumasını,
Dinamik kara listeleri,
Timeout kullanan setleri,
SYN Flood ve ICMP Flood azaltma yöntemlerini,
Port taramalarını yavaşlatmayı,
Fail2ban ile entegrasyonu,
Kurumsal güvenlik politikalarını
ayrıntılı olarak öğrendik.
Pardus 25'te nftables ile Güvenlik Duvarı Yönetimi
Bölüm 10 — IPv6 Güvenliği ve Dual Stack Firewall Tasarımı
IPv6 artık geleceğin değil, bugünün ağ teknolojisidir. Birçok sistem yöneticisi IPv4 güvenliğine önem verirken IPv6'yı devre dışı bırakmayı veya tamamen görmezden gelmeyi tercih etmektedir. Ancak modern Linux çekirdeğinde IPv6 çoğu zaman varsayılan olarak etkindir ve yanlış yapılandırılmış bir IPv6 firewall politikası, IPv4 tarafı güvenli olsa bile sistemi savunmasız bırakabilir.
Önemli Not: IPv6 güvenliği, IPv4 kurallarının birebir kopyalanması değildir. Özellikle ICMPv6, Neighbor Discovery Protocol (NDP) ve Router Advertisement (RA) gibi protokoller IPv6'nın çalışması için gereklidir. Bunların tamamını engellemek ağın çalışmasını bozabilir.
Bölümün Hedefleri
Bu bölümün sonunda;
IPv6'nın temel mimarisini,
IPv4 ve IPv6 firewall farklarını,
ICMPv6'nın önemini,
Neighbor Discovery (NDP),
Router Advertisement (RA),
SLAAC ve DHCPv6,
IPv6 filtreleme kurallarını,
IPv6'ya özgü saldırıları,
Dual Stack firewall tasarımını,
Kurumsal IPv6 güvenlik politikalarını
öğreneceksiniz.
IPv4 ve IPv6 Arasındaki Temel Fark
IPv4 adresi:
192.168.1.25
IPv6 adresi:
2001:db8:abcd:100::25
IPv6'nın en önemli özellikleri:
Çok daha geniş adres alanı (128 bit)
NAT'a ihtiyaç duymayan mimari
Yerleşik multicast desteği
Neighbor Discovery (NDP)
SLAAC (Stateless Address Autoconfiguration)
Daha sade paket başlığı
Dual Stack Nedir?
Kurumsal ağların büyük bölümü halen hem IPv4 hem de IPv6'yı birlikte kullanmaktadır.
Sunucu
│
┌─────────┴─────────┐
│ │
IPv4 IPv6
192.168.10.20 2001:db8:100::20
Bu yapıya Dual Stack denir.
En sık yapılan hata: Yalnızca IPv4 için firewall kuralları yazıp IPv6'yı tamamen açık bırakmaktır.
nftables ve inet Tablosu
nftables'in en büyük avantajlarından biri inet ailesidir.
Örneğin:
sudo nft add table inet filter
Bu tablo:
IPv4
IPv6
trafiğini aynı zincir içinde yönetebilir.
Bu sayede iki farklı firewall politikası yazmaya gerek kalmaz.
IPv6 Paket Akışı
İstemci
↓
IPv6 Paket
↓
INPUT
↓
Firewall
↓
Accept / Drop
İşleyiş IPv4'e benzer olsa da kullanılan protokoller farklıdır.
ICMPv6 Neden Çok Önemlidir?
IPv4'te birçok yönetici:
Ping
↓
Engelle
şeklinde düşünür.
IPv6'da bu yaklaşım doğru değildir.
Çünkü ICMPv6 yalnızca ping değildir.
Aynı zamanda:
Neighbor Discovery
Path MTU Discovery
Router Discovery
Address Resolution
gibi temel işlevleri de sağlar.
ICMPv6 Tamamen Engellenirse
IPv6 Ağ
↓
Komşu Bulunamaz
↓
İletişim Kesilir
Bu nedenle ICMPv6 için seçici kurallar yazılmalıdır.
Neighbor Discovery (NDP)
IPv4'te:
ARP
kullanılır.
IPv6'da ise:
Neighbor Solicitation
Neighbor Advertisement
mesajları kullanılır.
Firewall bunlara izin vermelidir.
Gerekli ICMPv6 Türleri
Çoğu kurumsal ağ için aşağıdaki mesajlara izin verilmelidir:
| Tür | Amaç |
|---|---|
| echo-request | Ping isteği (isteğe bağlı) |
| echo-reply | Ping cevabı |
| destination-unreachable | Ulaşılamayan hedef |
| packet-too-big | MTU keşfi |
| time-exceeded | Süre aşımı |
| neighbor-solicitation | Komşu sorgulama |
| neighbor-advertisement | Komşu cevabı |
| router-solicitation | Yönlendirici sorgulama |
| router-advertisement | Yönlendirici duyurusu (ihtiyaca göre) |
ICMPv6 Kuralı
Temel örnek:
sudo nft add rule inet filter input \
icmpv6 type {
echo-request,
echo-reply,
destination-unreachable,
packet-too-big,
time-exceeded,
neighbor-solicitation,
neighbor-advertisement
} accept
Kurumsal ortamlarda Router Advertisement mesajlarının kabul edilip edilmeyeceği ağ tasarımına göre belirlenmelidir.
SLAAC Nedir?
IPv6 istemcileri IP adresini otomatik alabilir.
Router Advertisement
↓
İstemci
↓
IPv6 Adresi Oluştur
Bu yapıya:
SLAAC
denir.
DHCPv6
IPv4'te olduğu gibi DHCP sunucusu kullanılabilir.
DHCPv6
↓
IPv6 Adresi
↓
DNS
↓
Gateway
Bazı ağlarda SLAAC ve DHCPv6 birlikte kullanılabilir.
Router Advertisement (RA)
Yönlendiriciler belirli aralıklarla RA paketleri gönderir.
Router
↓
RA
↓
İstemciler
Yanlış RA paketleri ağ trafiğini farklı bir yönlendiriciye aktarabilir.
Bu durum Rogue Router Advertisement saldırısı olarak bilinir.
Rogue RA Saldırısı
Saldırgan:
Sahte Router
↓
Router Advertisement
↓
İstemciler
↓
Trafik Saldırgana Gider
Sonuç:
Man-in-the-Middle
Trafik dinleme
Hizmet kesintisi
oluşabilir.
Bu nedenle istemci ağlarında RA filtreleme veya anahtar (switch) seviyesinde RA Guard gibi mekanizmalar değerlendirilebilir.
IPv6 Firewall Kuralları
Her zamanki gibi:
ct state established,related accept
Loopback:
iif lo accept
ICMPv6:
icmpv6 accept
ve ardından servis kuralları.
SSH
tcp dport 22 accept
Bu kural hem IPv4 hem IPv6 için çalışabilir.
IPv6 Adres Filtreleme
ip6 saddr 2001:db8:100::/64 accept
Yalnızca belirtilen IPv6 ağından gelen bağlantılar kabul edilir.
IPv6 Set Kullanımı
sudo nft add set inet filter trusted_ipv6 \
'{ type ipv6_addr; }'
Eleman ekleme:
sudo nft add element inet filter trusted_ipv6 \
{2001:db8:100::10}
Kullanım:
ip6 saddr @trusted_ipv6 accept
Bu yöntem büyük IPv6 ağlarının yönetimini kolaylaştırır.
IPv6 ve NAT
IPv6 tasarımında NAT zorunlu değildir.
İstemci
↓
Gerçek IPv6
↓
İnternet
Bu nedenle güvenlik:
Firewall
ACL
Segmentasyon
ile sağlanmalıdır.
"NAT güvenlik sağlar" yaklaşımı IPv6 için geçerli değildir.
IPv6 Rate Limit
ICMP Flood azaltmak için:
icmpv6 type echo-request \
limit rate 10/second \
accept
IPv6 Loglama
icmpv6 \
log prefix "IPv6 ICMP: " \
accept
veya
tcp dport 22 \
log prefix "IPv6 SSH: " \
accept
Gerçek Kurumsal Senaryo
Bir üniversite ağı:
IPv4
192.168.10.0/24
IPv6
2001:db8:100::/64
Politika:
| Servis | IPv4 | IPv6 |
|---|---|---|
| SSH | Yönetim ağı | Yönetim ağı |
| HTTP | Açık | Açık |
| HTTPS | Açık | Açık |
| Samba | Yerel ağ | Yerel ağ |
| MySQL | Kapalı | Kapalı |
Firewall kuralları inet tablosunda tek bir politika altında yönetilebilir.
Güvenli Dual Stack Politikası
Önerilen sıralama:
INVALID
↓
ESTABLISHED
↓
LOOPBACK
↓
ICMPv6
↓
SSH
↓
HTTP
↓
HTTPS
↓
DROP
Bu yapı hem IPv4 hem de IPv6 trafiği için tutarlı bir güvenlik politikası oluşturur.
Siber Güvenlik Perspektifi
IPv6'nın etkin olduğu ancak firewall kurallarının yalnızca IPv4 için yazıldığı sistemler, saldırganlar için kolay hedef olabilir.
Kurumsal ortamlarda:
IPv6 gerçekten kullanılmıyorsa kontrollü şekilde devre dışı bırakılması değerlendirilebilir.
Kullanılıyorsa IPv4 ile aynı güvenlik standartları uygulanmalıdır.
ICMPv6 tamamen engellenmemeli, gerekli türlere seçici olarak izin verilmelidir.
Rogue RA ve NDP tabanlı saldırılara karşı ağ altyapısı da korunmalıdır.
Firewall, anahtar güvenliği ve izleme mekanizmaları birlikte düşünülmelidir.
En Sık Yapılan Hatalar
| Hata | Sonuç |
|---|---|
| Sadece IPv4 firewall yazmak | IPv6 üzerinden yetkisiz erişim |
| ICMPv6'yı tamamen engellemek | IPv6 iletişiminin bozulması |
| IPv6 adreslerini loglamamak | Olay analizinin zorlaşması |
| Dual Stack'te farklı güvenlik politikaları uygulamak | Tutarsız güvenlik seviyesi |
| Router Advertisement mesajlarını kontrol etmemek | Rogue RA saldırıları |
Laboratuvar Uygulaması
Senaryo
Bir Pardus 25 sunucusunda:
IPv4 ve IPv6 birlikte kullanılacak.
SSH yalnızca yönetim ağlarından erişilebilir olacak.
HTTP ve HTTPS herkese açık olacak.
Gerekli ICMPv6 mesajlarına izin verilecek.
Diğer tüm yeni bağlantılar reddedilecek.
Örnek kurallar
ct state invalid drop
ct state established,related accept
iif lo accept
icmpv6 type {
echo-request,
echo-reply,
destination-unreachable,
packet-too-big,
neighbor-solicitation,
neighbor-advertisement
} accept
ip saddr 192.168.10.0/24 tcp dport 22 accept
ip6 saddr 2001:db8:100::/64 tcp dport 22 accept
tcp dport {80,443} accept
counter drop
Bu yapı, Dual Stack çalışan bir Pardus 25 sunucusu için güvenli ve genişletilebilir bir temel politika sağlar.
Bölüm Özeti
Bu bölümde:
IPv6 mimarisini,
IPv4 ve IPv6 arasındaki güvenlik farklarını,
ICMPv6'nın kritik rolünü,
Neighbor Discovery ve Router Advertisement mekanizmalarını,
Dual Stack firewall tasarımını,
IPv6 filtreleme kurallarını,
IPv6'ya özgü saldırıları,
Kurumsal IPv6 güvenlik yaklaşımlarını
ayrıntılı olarak öğrendik.
Pardus 25'te nftables ile Güvenlik Duvarı Yönetimi
Bölüm 11 — Kurumsal nftables Mimarisi, En İyi Uygulamalar (Best Practices) ve Yönetim Standartları
Bu bölüm profesyonel sistem yöneticileri, siber güvenlik uzmanları ve SOC ekipleri için hazırlanmıştır. Küçük sistemlerde birkaç firewall kuralı yeterli olabilir. Ancak yüzlerce sunucunun bulunduğu kurumsal yapılarda firewall yönetimi; planlama, standartlaştırma, sürüm kontrolü, otomasyon ve değişiklik yönetimi (Change Management) gerektirir. Başarılı bir firewall mimarisi yalnızca doğru kurallardan değil, doğru yönetim süreçlerinden de oluşur.
Bölümün Hedefleri
Bu bölümün sonunda;
Kurumsal firewall mimarisi tasarlamayı,
Modüler nftables yapılarını,
includekullanımını,/etc/nftables.confdosyasının profesyonel organizasyonunu,Değişiklik yönetimini (Change Management),
Yedekleme ve geri dönüş stratejilerini,
Ansible ile otomasyonu,
Sanallaştırma ve konteyner ortamlarında nftables kullanımını,
Yüksek erişilebilirlik (High Availability),
Güvenlik standartlarını
öğreneceksiniz.
Küçük Sistem ile Kurumsal Sistem Arasındaki Fark
Küçük Ofis
Tek Sunucu
↓
20 Firewall Kuralı
↓
Tek nftables.conf
Yönetmesi kolaydır.
Kurumsal Veri Merkezi
200 Sunucu
↓
10.000+
Firewall Kuralı
↓
Merkezi Yönetim
Artık tek dosya yeterli değildir.
Kurumsal Firewall Tasarım İlkeleri
Profesyonel firewall'larda temel ilkeler:
En az ayrıcalık (Least Privilege)
Varsayılan engelle (Default Deny)
Açık dokümantasyon
Modüler yapı
Sürüm kontrolü
Düzenli gözden geçirme
Otomasyon
Merkezi loglama
Sürekli denetim
Tek Dosya Kullanmanın Sorunları
Büyük bir yapı:
/etc/nftables.conf
↓
5000 satır
olursa;
okunması zorlaşır,
hata yapma ihtimali artar,
ekip çalışması zorlaşır,
değişiklik takibi güçleşir.
Modüler Yapı
Profesyonel yaklaşım:
/etc/nftables/
├── main.nft
├── tables/
├── chains/
├── rules/
├── sets/
├── nat/
├── logging/
├── ipv6/
└── services/
Her konu kendi dosyasında tutulur.
include Kullanımı
Ana dosya:
include "/etc/nftables/tables/*.nft"
include "/etc/nftables/chains/*.nft"
include "/etc/nftables/rules/*.nft"
Artık tüm yapı otomatik yüklenir.
Örnek Dosya Yapısı
rules/
ssh.nft
web.nft
smtp.nft
dns.nft
vpn.nft
SSH değişirse
yalnızca
ssh.nft
güncellenir.
Servislere Göre Ayrım
Örneğin;
services/
ssh.nft
apache.nft
nginx.nft
mysql.nft
postgresql.nft
Bu yöntem bakım kolaylığı sağlar.
Ağ Segmentlerine Göre Ayrım
network/
dmz.nft
internal.nft
guest.nft
vpn.nft
Kurumsal ağlarda yaygın kullanılan yöntemlerden biridir.
Ortak Set Dosyaları
sets/
blacklist.nft
whitelist.nft
management.nft
servers.nft
Firewall kuralları
yalnızca
setleri kullanır.
Açıklama (Comment)
Her önemli kural açıklanmalıdır.
Örneğin:
tcp dport 22 \
accept \
comment "SSH Yönetim Ağı"
Büyük ekiplerde yorum satırları bakım süresini önemli ölçüde azaltır.
İsimlendirme Standardı
Önerilen yapı:
fw_input
fw_output
fw_forward
trusted_admins
blocked_hosts
web_servers
Anlaşılır isimler tercih edilmelidir.
Sürüm Kontrolü
Firewall dosyaları mutlaka Git gibi bir sürüm kontrol sistemi ile yönetilmelidir.
Örnek yapı:
Firewall
↓
Git
↓
Commit
↓
Review
↓
Production
Böylece:
Kim değiştirdi?
Ne değişti?
Ne zaman değişti?
soruları kolayca cevaplanabilir.
Değişiklik Yönetimi (Change Management)
Kurumsal ortamlarda önerilen süreç:
Talep
↓
Risk Analizi
↓
Test
↓
Onay
↓
Canlı Ortam
↓
İzleme
↓
Dokümantasyon
Firewall kuralları doğrudan üretim ortamında değiştirilmemelidir.
Test Ortamı
Her zaman önce:
Development
↓
Test
↓
Production
sırası izlenmelidir.
nft -c Kullanımı
Kuralları uygulamadan önce sözdizimini kontrol edin.
sudo nft -c -f /etc/nftables.conf
Bu komut:
Dosyayı çalıştırmaz.
Sadece hata olup olmadığını kontrol eder.
Atomik Güncelleme
nftables'in önemli avantajlarından biri:
Eski Kurallar
↓
Yeni Kurallar
↓
Tek Seferde Değiştir
Kurallar atomik olarak yüklenir.
Yarı uygulanmış bir yapı oluşmaz.
Yedekleme
Her değişiklikten önce:
sudo nft list ruleset > backup.nft
Geri Dönüş
sudo nft -f backup.nft
Bu nedenle her değişiklik öncesinde yedek alınmalıdır.
Ansible ile Yönetim
Kurumsal yapılarda yüzlerce sunucu olabilir.
Ansible
↓
Firewall Dosyası
↓
100 Sunucu
Tek komutla güncellenebilir.
Puppet / Salt / Chef
Benzer şekilde;
Puppet
SaltStack
Chef
ile de merkezi firewall yönetimi yapılabilir.
Sanallaştırma Ortamları
Örneğin:
KVM
↓
Bridge
↓
VM1
VM2
VM3
Firewall
host üzerinde
çalışabilir.
Docker
Docker
çoğu zaman
kendi firewall kurallarını oluşturur.
Docker
↓
nftables
↓
Bridge
Kuralların çakışmamasına dikkat edilmelidir.
Podman
Podman da benzer şekilde nftables altyapısını kullanabilir.
Kurumsal sistemlerde container ağlarının güvenlik politikaları ayrıca planlanmalıdır.
Kubernetes
Kubernetes ortamlarında:
CNI eklentileri
kube-proxy
Ağ politikaları (Network Policies)
nftables ile etkileşime girebilir.
Firewall tasarlanırken kümenin ağ mimarisi göz önünde bulundurulmalıdır.
High Availability
Firewall tek noktadan oluşmamalıdır.
Firewall A
↓
Firewall B
↓
VRRP
↓
Sanal IP
Bir cihaz arızalandığında
diğeri devreye girer.
Linux ortamlarında bu senaryolarda sıklıkla Keepalived (VRRP) gibi çözümler kullanılır.
Merkezi Loglama
Firewall
↓
journald
↓
rsyslog
↓
SIEM
Örneğin:
Wazuh
Graylog
ELK Stack
Splunk
ile analiz yapılabilir.
Performans İlkeleri
En sık kullanılan kurallar
üstte olmalıdır.
INVALID
↓
ESTABLISHED
↓
LOOPBACK
↓
SET LOOKUP
↓
SSH
↓
HTTP
↓
DROP
Bu sıralama gereksiz işlem yükünü azaltır.
Düzenli Denetim
Ayda en az bir kez:
Kullanılmayan kurallar
Gereksiz portlar
Eski whitelist kayıtları
Süresi dolmuş geçici izinler
Dinamik setler
gözden geçirilmelidir.
Dokümantasyon
Her firewall için:
Amaç
Ağ diyagramı
Açık portlar
Yönetim ağı
Acil durum prosedürü
Geri dönüş planı
hazırlanmalıdır.
Gerçek Kurumsal Mimari
İnternet
│
Border Firewall
│
┌───────┴────────┐
│ │
DMZ İç Ağ
│ │
Web / Mail Sunucuları Kullanıcılar
│ │
İç Firewall Yönetim Ağı
│ │
Veritabanı Sunucuları
Her ağ segmenti için farklı nftables kuralları uygulanmalıdır.
Güvenlik Kontrol Listesi
Her yeni sunucu devreye alınmadan önce:
Varsayılan politika
dropmı?Loopback açık mı?
ct state established,relatedtanımlı mı?ct state invalid dropmevcut mu?SSH yalnızca yönetim ağına açık mı?
Gereksiz servisler kapalı mı?
Loglama etkin mi?
Sayaçlar (
counter) kullanılıyor mu?IPv6 kuralları tanımlandı mı?
Yapılandırma
nft -cile doğrulandı mı?Kurallar yedeklendi mi?
Değişiklik dokümante edildi mi?
Siber Güvenlik Perspektifi
Kurumsal firewall yönetimi yalnızca teknik bir konu değildir; aynı zamanda yönetişim (governance), risk yönetimi ve denetim süreçlerinin de bir parçasıdır.
Başarılı bir nftables mimarisi:
En az ayrıcalık ilkesini uygular.
Güvenlik politikalarını standartlaştırır.
İnsan hatasını azaltır.
Değişiklikleri izlenebilir hâle getirir.
Olay müdahalesini hızlandırır.
Denetimlerde kanıt sunmayı kolaylaştırır.
Firewall'un etkinliği, yalnızca yazılan kurallarla değil; bu kuralların nasıl yönetildiği, test edildiği ve sürdürüldüğü ile ölçülmelidir.
En Sık Yapılan Hatalar
| Hata | Sonuç |
|---|---|
| Tüm kuralları tek dosyada tutmak | Yönetim zorlaşır |
| Sürüm kontrolü kullanmamak | Geri dönüş imkânı azalır |
| Test etmeden canlıya almak | Servis kesintisi riski |
| Yedek almamak | Kurtarma süresi uzar |
| Dokümantasyon hazırlamamak | Bilgi kaybı ve bakım zorluğu |
| IPv6 kurallarını ihmal etmek | Güvenlik açığı oluşabilir |
Bölüm Özeti
Bu bölümde:
Kurumsal nftables mimarisini,
Modüler yapı ve
includekullanımını,Dosya organizasyonunu,
Değişiklik yönetimini,
Yedekleme ve geri dönüş stratejilerini,
Otomasyon araçlarını,
Sanallaştırma ve konteyner ortamlarını,
Yüksek erişilebilirlik yaklaşımlarını,
Güvenlik standartlarını
ayrıntılı olarak öğrendik.
Pardus 25'te nftables ile Güvenlik Duvarı Yönetimi
Bölüm 12 — Gerçek Kurumsal Güvenlik Duvarı Projesi (Production Ready Firewall)
Bu bölüm, kitabın zirve noktasıdır. Önceki bölümlerde öğrendiğimiz tüm kavramları tek bir profesyonel projede birleştireceğiz. Amacımız yalnızca çalışan bir firewall oluşturmak değil; güvenli, sürdürülebilir, yönetilebilir ve kurumsal standartlara uygun bir güvenlik mimarisi tasarlamaktır.
Bu bölümde hazırlanacak yapı;
✅ Pardus 25 Sunucuları
✅ Okul Ağları (MEB ETAP)
✅ Üniversiteler
✅ Kamu Kurumları
✅ KOBİ'ler
✅ Veri Merkezleri
✅ Sanallaştırma Sunucuları (KVM/Proxmox)
✅ Docker / Podman Sunucuları
için örnek alınabilecek profesyonel bir referans mimari olacaktır.
Bölümün Hedefleri
Bu bölümün sonunda;
Kurumsal firewall mimarisi oluşturmayı,
Ağ segmentlerini ayırmayı,
NAT ve Port Forwarding yapılandırmayı,
IPv4 ve IPv6 (Dual Stack) desteği sağlamayı,
Güvenli SSH erişimi oluşturmayı,
DMZ tasarlamayı,
Merkezi loglama yapısını kurmayı,
Dinamik kara listeler kullanmayı,
Fail2ban entegrasyonunu planlamayı,
Felaket kurtarma (Disaster Recovery) yaklaşımını uygulamayı
öğreneceksiniz.
Senaryo
Bir eğitim kurumunun veri merkezi düşünelim.
Ağ Topolojisi
İnternet
│
ISP Modem / Router
│
WAN : 203.0.113.10
│
┌─────────────────┐
│ Pardus 25 Gateway│
│ nftables │
└─────────────────┘
│
┌────────────┬────────────┬────────────┐
│ │ │
Yönetim DMZ İç Ağ
192.168.1.0/24 192.168.10.0/24 192.168.20.0/24
│ │ │
Admin PC Web Sunucu Kullanıcılar
Moodle
Nextcloud
Ağ Segmentleri
| Ağ | Amaç |
|---|---|
| WAN | İnternet |
| Management | Sistem yöneticileri |
| DMZ | İnternete açık sunucular |
| Internal | Kullanıcı bilgisayarları |
| Server | Veritabanı ve dosya sunucuları |
| VPN | Uzaktan erişim kullanıcıları |
Her segment için farklı güvenlik politikası uygulanacaktır.
Varsayılan Güvenlik Politikası
Temel ilke:
Her şeyi engelle
↓
Sadece gerekli olanlara izin ver
Bu yaklaşım Default Deny olarak adlandırılır.
Dosya Yapısı
/etc/nftables/
main.nft
tables/
chains/
sets/
rules/
nat/
logging/
ipv6/
services/
Ana Yapı
main.nft
↓
include tables
↓
include sets
↓
include chains
↓
include services
↓
include logging
INPUT Politikası
Sıralama:
INVALID
↓
ESTABLISHED
↓
LOOPBACK
↓
MANAGEMENT
↓
SSH
↓
HTTP
↓
HTTPS
↓
ICMP
↓
DROP
FORWARD Politikası
VPN
↓
DMZ
↓
Internal
↓
Internet
↓
DROP
OUTPUT Politikası
DNS
NTP
HTTP
HTTPS
↓
Accept
Sunucunun dış dünyaya yalnızca ihtiyaç duyduğu bağlantıları kurmasına izin verilir.
SSH Güvenliği
Kurallar:
Yönetim ağı dışından erişim yok.
Rate Limit.
Fail2ban.
Loglama.
Anahtar tabanlı kimlik doğrulama.
Root ile doğrudan oturum açma kapalı.
Firewall tarafında yalnızca yönetim ağına izin verilmesi önerilir.
DMZ
DMZ'de bulunan sunucular:
Moodle
Nextcloud
Reverse Proxy
Mail Gateway
DMZ
↓
İç ağa
↓
Doğrudan erişemez.
Bu ayrım, bir DMZ sunucusu ele geçirilse bile iç ağın korunmasına yardımcı olur.
NAT
İç ağ:
192.168.20.0/24
↓
Masquerade
↓
İnternet
DMZ servisleri için yalnızca gerekli portlar dış dünyaya yönlendirilir.
Port Forwarding
| Dış Port | İç Sunucu |
|---|---|
| 80 | Reverse Proxy |
| 443 | Reverse Proxy |
| 25 | Mail Gateway |
| 1194 | VPN |
| 51820 | WireGuard |
Veritabanı servisleri doğrudan internete açılmaz.
IPv6
IPv6 etkinse;
Dual Stack kuralları yazılır.
Gerekli ICMPv6 mesajlarına izin verilir.
IPv4 ve IPv6 güvenlik politikaları eşit seviyede uygulanır.
Loglama
Loglanacak olaylar:
Başarısız SSH denemeleri
Geçersiz paketler (
INVALID)Kara listeye alınan IP'ler
Port tarama belirtileri
Kritik servis erişimleri
Loglar merkezi syslog/SIEM altyapısına gönderilir.
Fail2ban Entegrasyonu
Çalışma mantığı:
SSH Logları
↓
Fail2ban
↓
Şüpheli IP
↓
nftables Dynamic Set
↓
DROP
Geçici engelleme süreleri güvenlik politikasına göre belirlenebilir.
Dinamik Kara Liste
SSH
↓
10 başarısız deneme
↓
1 Saat Engelle
↓
Otomatik Sil
Dinamik setler sayesinde manuel müdahale ihtiyacı azalır.
Yedekleme
Her değişiklikten önce:
sudo nft list ruleset > firewall-backup.nft
Haftalık otomatik yedekleme önerilir.
Güncelleme Süreci
Geliştirme
↓
Test
↓
Onay
↓
Üretim
↓
İzleme
Canlı sistemde doğrudan değişiklik yapılmamalıdır.
Yüksek Erişilebilirlik (HA)
İnternet
│
┌──────────┴──────────┐
│ │
Firewall A Firewall B
│ │
Keepalived (VRRP)
│
Sanal IP
Firewall A devre dışı kalırsa Firewall B hizmet vermeye devam eder.
Performans
Kurallar şu sırada değerlendirilmelidir:
INVALID
↓
ESTABLISHED
↓
LOOPBACK
↓
SET
↓
MANAGEMENT
↓
SERVICES
↓
LOG
↓
DROP
Bu sıralama paket işleme süresini azaltır.
İzleme
Düzenli olarak kontrol edilmelidir:
journalctlnft monitornft list rulesetSayaçlar (
counter)Dinamik setler
Disk kullanımı
CPU kullanımı
Acil Durum Planı
Firewall değişikliği sonrası erişim kaybedildiğinde:
Konsol veya KVM erişimi kullanın.
Son yedeği geri yükleyin.
Kuralları
nft -cile doğrulayın.Tekrar uygulayın.
Olayı dokümante edin.
Güvenlik Kontrol Listesi
Ağ
✅ Gereksiz portlar kapalı
✅ Segmentasyon uygulanmış
✅ DMZ ayrılmış
✅ Yönetim ağı izole edilmiş
Firewall
✅ Default Drop
✅ Established/Related
✅ Invalid Drop
✅ Loopback açık
✅ IPv6 kuralları tanımlı
Servisler
✅ SSH yalnızca yönetim ağına açık
✅ HTTP/HTTPS gerekli sunuculara yönlendiriliyor
✅ Veritabanı internete kapalı
Günlükleme
✅ SSH logları
✅ DROP logları
✅ INVALID logları
✅ Merkezi log sunucusu
Güvenlik
✅ Fail2ban
✅ Güçlü SSH yapılandırması
✅ Düzenli güncelleme
✅ Yedekleme
Kurumsal Güvenlik İlkeleri
Bir firewall;
yalnızca paket filtreleyen bir sistem değildir.
kurumun ilk savunma hattıdır.
güvenlik politikasının teknik uygulamasıdır.
olay müdahalesinin veri kaynağıdır.
denetim süreçlerinin önemli bir bileşenidir.
Başarılı bir firewall yönetimi için:
Düzenli bakım yapılmalı,
Kurallar sade tutulmalı,
Gereksiz izinler kaldırılmalı,
Loglar analiz edilmeli,
Güvenlik testleri düzenli uygulanmalıdır.
Kitabın Genel Özeti
Bu eğitim boyunca aşağıdaki konuları ayrıntılı olarak ele aldık:
nftables mimarisi ve temel kavramlar
Tablolar, zincirler ve hook mekanizması
Temel filtreleme kuralları
Connection Tracking (Conntrack)
Setler, map yapıları ve performans optimizasyonu
Kalıcı yapılandırma ve servis yönetimi
NAT, Masquerade ve Port Forwarding
Loglama, izleme ve hata ayıklama
Rate Limiting, Brute Force ve Port Tarama koruması
IPv6 güvenliği ve Dual Stack
Kurumsal mimari ve en iyi uygulamalar
Üretim ortamına uygun profesyonel firewall tasarımı
Sonuç
nftables, Linux çekirdeğinin modern paket filtreleme altyapısı olarak iptables'ın yerini almış; daha performanslı, daha okunabilir ve daha esnek bir güvenlik duvarı çözümü sunmaktadır. Pardus 25 üzerinde doğru planlanmış bir nftables mimarisi ile;
yüksek performans,
güçlü erişim kontrolü,
gelişmiş loglama,
kolay yönetim,
IPv4/IPv6 desteği,
otomasyon,
kurumsal ölçeklenebilirlik
aynı anda sağlanabilir.
Güvenlik duvarı hiçbir zaman tek başına yeterli değildir. Güçlü bir güvenlik mimarisi; güncel sistemler, sağlam kimlik doğrulama, ağ segmentasyonu, merkezi loglama, düzenli denetim ve kullanıcı farkındalığı ile birlikte anlam kazanır.
Harika bir fikir. Bu konu için tek bir laboratuvar yeterli olmaz. Ben bunu başlangıç → orta → ileri → uzman seviyelerinde ilerleyen 25 uygulamalı laboratuvar şeklinde hazırlardım. Böylece okuyucu her bölüm sonunda gerçek bir senaryo üzerinde çalışabilir.
EK BÖLÜM
Laboratuvar Senaryoları (25 Uygulamalı Çalışma)
Amaç
Bu laboratuvarların amacı;
nftables komutlarını uygulamalı öğrenmek
Gerçek firewall senaryoları oluşturmak
Siber saldırıları analiz etmek
Güvenli firewall politikaları geliştirmek
Kurumsal sistemlerde kullanılan yöntemleri uygulamak
Laboratuvar Ortamı
Önerilen Sanal Makine Yapısı
INTERNET
|
10.10.10.1 Router
|
-----------------------------
| |
Pardus 25 Firewall Kali Linux
10.10.10.10 10.10.10.20
|
-------------------------------
| | |
Ubuntu Windows Rocky Linux
Server Client Server
10.10.10.30 10.10.10.40 10.10.10.50
Kullanılacak İşletim Sistemleri
Pardus 25
Kali Linux
Ubuntu Server
Debian
Rocky Linux
Windows 11
Kullanılacak Araçlar
Firewall
nft
journalctl
systemctl
Ağ Analizi
tcpdump
Wireshark
ss
ip
Test
curl
nc
nmap
hping3
ping
Saldırı
Hydra
Medusa
Nmap NSE
Netcat
Scapy
Seviye 1
Temel Laboratuvarlar
LAB-1
nftables Kurulumu
Amaç
Firewall servisini kurmak.
Görevler
nftables kur
servisi başlat
enable et
ruleset görüntüle
Beklenen Sonuç
sudo systemctl status nftables
ACTIVE olmalıdır.
LAB-2
İlk Firewall Kuralı
Amaç
SSH erişimine izin vermek.
Görev
INPUT zinciri oluştur.
SSH aç.
HTTP kapalı olsun.
Test
ssh user@server
Başarılı olmalı.
LAB-3
Ping Yönetimi
Görev
Ping açık.
Diğer ICMP türleri kapalı.
Test
ping server
LAB-4
Loopback Koruması
Loopback kapatıldığında
hangi servisler bozuluyor?
Gözlemle.
Sonra düzelt.
LAB-5
Default Drop
Amaç
Her şeyi engelle.
Sadece SSH açık olsun.
Test
Kali'den
curl
başarısız olmalı.
SSH başarılı olmalı.
Seviye 2
Orta Düzey Laboratuvarlar
LAB-6
HTTP Sunucusu Koruma
Apache kur.
80 aç.
443 kapalı.
Test
Tarayıcıdan bağlan.
LAB-7
HTTPS
443 aç.
Let's Encrypt kullan.
Firewall'u güncelle.
LAB-8
Connection Tracking
Görev
Established
Related
Invalid
kuralları oluştur.
tcpdump ile incele.
LAB-9
SSH Güvenliği
Yalnızca
192.168.1.0/24
erişebilsin.
Diğer ağlardan erişim engellensin.
LAB-10
Counter
Her HTTP isteğini say.
100 istek gönder.
Sayaçları incele.
Seviye 3
NAT Laboratuvarları
LAB-11
Masquerade
İç ağ
↓
İnternet
çıkışı sağla.
Test
Ubuntu Server
↓
Google DNS
ping 8.8.8.8
LAB-12
Port Forwarding
80
↓
Ubuntu Server
Apache
Test
Tarayıcıdan aç.
LAB-13
SSH Port Forward
2222
↓
22
Test
ssh -p 2222
LAB-14
Hairpin NAT
Yerel ağdan
Genel IP
üzerinden
Web Sunucusuna eriş.
LAB-15
Çoklu NAT
İki farklı WAN bağlantısı oluştur.
Hangi trafik hangi WAN'dan çıkıyor?
Analiz et.
Seviye 4
Güvenlik Laboratuvarları
LAB-16
Brute Force
Hydra kullan.
SSH saldırısı gerçekleştir.
Firewall loglarını incele.
Rate Limit uygula.
Tekrar test et.
LAB-17
Port Scan
Nmap
nmap -Pn server
Firewall loglarını incele.
LAB-18
SYN Flood
hping3 ile
SYN Flood oluştur.
Firewall nasıl davranıyor?
LAB-19
ICMP Flood
ping -f
Rate limit çalışıyor mu?
LAB-20
Dynamic Set
Saldırgan IP
↓
Blacklist
↓
30 dakika engelle
↓
Otomatik sil
Seviye 5
Uzman Laboratuvarları
LAB-21
IPv6 Firewall
IPv6 ağı oluştur.
SSH aç.
HTTP aç.
ICMPv6 çalışıyor mu?
LAB-22
Docker
Docker kur.
Container oluştur.
Firewall kurallarını incele.
Docker'ın oluşturduğu kuralları analiz et.
LAB-23
WireGuard VPN
WireGuard kur.
VPN istemcisi bağla.
Firewall politikası oluştur.
LAB-24
SIEM
Wazuh veya Graylog kur.
Firewall loglarını gönder.
Dashboard oluştur.
En çok saldırı yapan IP'leri listele.
LAB-25
Gerçek Kurumsal Proje
Bir okul ağı tasarla.
İçinde;
Öğretmen VLAN
Öğrenci VLAN
Misafir VLAN
Sunucu VLAN
DMZ
VPN
IPv6
NAT
Port Forwarding
SSH Güvenliği
Fail2ban
Dynamic Sets
Merkezi Loglama
bulunsun.
Firewall'u sıfırdan yaz.
Tüm laboratuvar boyunca öğrendiğin teknikleri kullan.
Bonus Laboratuvarlar
BONUS-1
Firewall Performans Testi
100.000 paket üret.
CPU kullanımını ölç.
BONUS-2
Firewall Failover
Keepalived kur.
Ana firewall'u kapat.
Yedek devralıyor mu?
BONUS-3
Ansible ile 50 Sunucuyu Yönet
Tek komutla
50 Pardus sunucusunun firewall'unu güncelle.
BONUS-4
iptables → nftables Geçişi
Eski iptables kurallarını
nftables'e taşı.
BONUS-5
Olay Müdahalesi (Incident Response)
Bir saldırı senaryosu oluştur:
SSH brute force
Port taraması
Web uygulamasına yetkisiz erişim denemeleri
ICMP flood
Ardından:
journalctlvenft monitorile olayları inceleyin.Saldırgan IP'leri tespit edin.
Dinamik
setkullanarak IP'leri geçici olarak engelleyin.Gerekirse Fail2ban entegrasyonunu doğrulayın.
Olay raporu hazırlayın (zaman çizelgesi, etkilenen servisler, alınan önlemler).
Sonuç
Bu 25 temel + 5 bonus laboratuvar, kitabın teorik anlatımını uygulamayla pekiştirir. Baştan sona tamamlayan bir okuyucu:
nftables'i güvenle yönetebilir,
gerçek saldırıları analiz edebilir,
kurumsal firewall politikaları geliştirebilir,
Pardus 25 sistemlerinde üretim ortamına uygun güvenlik duvarı yapılandırmaları oluşturabilir.
Bu laboratuvarlar, eğitim kurumlarında ders materyali, kurum içi teknik eğitim veya sertifikasyon hazırlığı için de kullanılabilecek kapsamlı bir uygulama seti sunar.
EK BÖLÜM
Gerçek Siber Saldırı Simülasyonları ve Firewall Analizi
(Pardus 25 + nftables Uygulamalı Güvenlik Laboratuvarı)
Giriş
Bu bölümde, kontrollü bir laboratuvar ortamında gerçekleştirilebilecek gerçekçi siber saldırı senaryoları üzerinden nftables güvenlik duvarının davranışı incelenecektir.
Amaç saldırı gerçekleştirmeyi öğretmek değil; saldırıları tespit etmeyi, analiz etmeyi ve uygun firewall politikalarıyla etkilerini azaltmayı öğrenmektir.
Her laboratuvar aşağıdaki bölümlerden oluşmaktadır:
Senaryo
Amaç
Laboratuvar Topolojisi
Saldırı Simülasyonu
Firewall Analizi
Beklenen Loglar
Olay Müdahalesi (Incident Response)
İyileştirme Önerileri
Etik Uyarı: Bu laboratuvarlar yalnızca size ait veya açıkça yetkilendirildiğiniz sistemlerde uygulanmalıdır.
Laboratuvar Ortamı
Internet (Simülasyon)
|
Kali Linux
192.168.100.20
|
-------------------
| |
Pardus 25 Firewall Ubuntu Server
192.168.100.10 192.168.100.30
SENARYO 1
SSH Brute Force Saldırısı
Amaç
SSH servisine yönelik yoğun parola denemelerinin firewall tarafından nasıl algılandığını incelemek.
Hedef Sistem
Ubuntu Server
SSH Portu
22/TCP
Normal Trafik
SSH
↓
Kimlik Doğrulama
↓
Başarılı
Saldırı Akışı
Kali
↓
SSH
↓
1000 parola denemesi
↓
Firewall
↓
Ubuntu
Firewall'da İzlenecek Noktalar
Rate Limiting
Counter
Log
Dynamic Set
Fail2ban entegrasyonu
Beklenen journalctl Çıktısı
SSH ATTACK:
SRC=192.168.100.20
PROTO=TCP
DPT=22
Olay Müdahalesi
Kaynak IP belirlenir.
Loglar doğrulanır.
Aynı IP'nin tekrar eden denemeleri incelenir.
IP geçici olarak kara listeye alınır.
SSH anahtar tabanlı kimlik doğrulama gözden geçirilir.
SENARYO 2
Port Taraması (Reconnaissance)
Amaç
Bir saldırganın sistemde hangi servislerin açık olduğunu öğrenmeye çalışmasını analiz etmek.
Saldırı Akışı
Kali
↓
22
↓
80
↓
443
↓
3306
↓
5432
↓
8080
Firewall Davranışı
Açık portlar
Kapalı portlar
DROP edilen paketler
Sayaç artışı
Log kayıtları
Analiz
İncelenecek sorular:
Aynı IP kaç porta erişmeye çalıştı?
İstekler hangi zaman aralığında geldi?
Olağan dışı bağlantı hızı var mı?
SENARYO 3
SYN Flood
Amaç
TCP bağlantı kuyruğunun nasıl etkilendiğini gözlemlemek.
Normal TCP
SYN
↓
SYN ACK
↓
ACK
Saldırı
SYN
SYN
SYN
SYN
SYN
ACK gönderilmez.
Firewall Analizi
İncelenecekler:
Yeni bağlantı sayısı
ct state
Rate limit
CPU yükü
Paket sayaçları
SENARYO 4
ICMP Flood
Amaç
Yoğun ping trafiğinin firewall üzerindeki etkisini gözlemlemek.
Analiz
İzlenecek değerler
Ping sayısı
Rate limit
CPU
Ağ kullanımı
Log yoğunluğu
SENARYO 5
HTTP Enumeration
Amaç
Web sunucusuna yönelik yoğun bilgi toplama girişimlerini incelemek.
Tipik İstekler
/
↓
/robots.txt
↓
/admin
↓
/backup
↓
/login
↓
/phpinfo.php
Firewall Analizi
Aynı IP'nin istek sıklığı
HTTP bağlantı sayısı
Log kayıtları
Rate limiting davranışı
SENARYO 6
Web Dizini Taraması
Amaç
Yaygın dizin ve dosya isimlerinin yoğun şekilde denenmesini gözlemlemek.
Beklenen Davranış
Firewall:
Bağlantı sayısını kaydeder.
Aşırı yeni bağlantıları sınırlar.
Gerekirse dinamik kümeye ekleme yapılmasını sağlar.
SENARYO 7
DNS Servisine Yetkisiz Erişim
Amaç
DNS sunucusuna dış ağdan yapılan yetkisiz erişim denemelerini analiz etmek.
Kontrol Edilecekler
UDP 53
TCP 53
Log kayıtları
DROP sayaçları
SENARYO 8
SMB Servisi Taraması
Hedef
Dosya paylaşım sunucusu
Kontrol
139/TCP
445/TCP
Firewall yalnızca yerel ağdan erişime izin vermelidir.
SENARYO 9
Veritabanı Sunucusuna Doğrudan Erişim
Amaç
İnternetten gelen MySQL/PostgreSQL bağlantı denemelerini incelemek.
Açık Olmaması Gereken Portlar
3306
5432
6379
27017
Bu portlara gelen yeni bağlantılar kaydedilip reddedilmelidir.
SENARYO 10
Rogue IPv6 Router Advertisement
Amaç
IPv6 ağlarında sahte yönlendirici duyurularının etkisini anlamak.
İncelenecekler
Router Advertisement
Neighbor Discovery
IPv6 logları
ICMPv6 trafiği
SENARYO 11
VPN Servisine Yetkisiz Erişim
İncelenecekler
WireGuard
OpenVPN
IPsec
Firewall:
Yönetim ağı
VPN istemcileri
Yetkisiz IP'ler
arasında ayrım yapmalıdır.
SENARYO 12
Docker Container Kaçış Denemesi
Analiz
Bridge ağı
NAT
Container IP'leri
Host erişimleri
SENARYO 13
Log Analizi
İncelenecek araçlar
journalctl
nft monitor
nft list ruleset
Counter
nftrace
SENARYO 14
Fail2ban Entegrasyonu
Akış
Başarısız SSH
↓
Fail2ban
↓
Dynamic Set
↓
DROP
İncelenecekler
Yasaklanan IP
Engelleme süresi
Log kayıtları
SENARYO 15
Tam Ölçekli Siber Saldırı
Aşama 1
Keşif
Port Scan
Aşama 2
SSH Denemeleri
Aşama 3
HTTP Taraması
Aşama 4
Yoğun ICMP
Aşama 5
Yoğun TCP
Firewall Analizi
Her aşamada;
Hangi kurallar çalıştı?
Hangi sayaç arttı?
Hangi log oluştu?
Hangi IP engellendi?
Hangi servis etkilendi?
tek tek analiz edilir.
Olay Müdahale Kontrol Listesi
Bir saldırı tespit edildiğinde aşağıdaki adımlar izlenebilir:
Olayın başlangıç zamanı belirlenir.
Kaynak IP adresleri tespit edilir.
Hedef servis belirlenir.
Firewall logları incelenir.
Dinamik set ve kara listeler kontrol edilir.
Gerekirse geçici erişim engellemesi uygulanır.
Etkilenen sistemlerde ek inceleme yapılır.
Olay raporu hazırlanır.
Olay Raporu Şablonu
| Alan | Açıklama |
|---|---|
| Olay Tarihi | |
| Olay Saati | |
| Kaynak IP | |
| Hedef Sunucu | |
| Hedef Servis | |
| Tespit Yöntemi | |
| Firewall Logları | |
| Alınan Önlemler | |
| Sonuç | |
| İyileştirme Önerileri |
Bölüm Özeti
Bu bölümde;
SSH kaba kuvvet saldırıları,
Port taramaları,
SYN Flood ve ICMP Flood,
HTTP bilgi toplama girişimleri,
SMB ve veritabanı servislerine yönelik yetkisiz erişim denemeleri,
IPv6 Router Advertisement tehditleri,
VPN ve konteyner ağlarına yönelik senaryolar,
Firewall log analizi,
Olay müdahalesi ve raporlama süreçleri
uygulamalı olarak ele alındı.
Bu laboratuvarlar, Pardus 25 üzerinde çalışan nftables güvenlik duvarının gerçek dünyadaki tehditlere karşı nasıl yapılandırılacağını ve güvenlik olaylarının nasıl analiz edileceğini öğrenmek için kapsamlı bir uygulama rehberi niteliğindedir.
Bence bu kitabı profesyonel seviyeye taşıyacak en önemli eklerden biri bu olacaktır. Özellikle Pardus 25, nftables, MITRE ATT&CK, SOC ve Blue Team bakış açısını bir araya getiren Türkçe kaynak sayısı oldukça az.
Aşağıdaki bölüm, kitabın sonuna "Ek Bölüm: Blue Team Laboratuvarları" olarak eklenebilir.
EK BÖLÜM
MITRE ATT&CK Tabanlı Blue Team Laboratuvarları
Pardus 25 + nftables + SOC Analizi
Amaç
Bu laboratuvarlarda amaç saldırı yapmak değildir.
Amaç;
saldırıyı tanımak,
firewall üzerinde görmek,
logları analiz etmek,
IOC (Indicator of Compromise) çıkarmak,
olay müdahalesi yapmak,
firewall kurallarını geliştirmektir.
Her laboratuvar aşağıdaki yapıda hazırlanacaktır.
MITRE ATT&CK Tekniği
↓
Senaryo
↓
Saldırı Belirtileri
↓
Firewall Analizi
↓
SOC Analizi
↓
IOC
↓
Müdahale
↓
İyileştirme
LAB BT-01
Active Scanning
MITRE
T1595
Amaç
Saldırgan
ağdaki açık servisleri keşfetmeye çalışıyor.
22
80
443
3306
5432
8080
Firewall
DROP
LOG
COUNTER
incele.
SOC
Kaynak IP
Tarama süresi
Taranan port sayısı
raporla.
LAB BT-02
Network Service Discovery
MITRE
T1046
İncelenecek
SYN paketleri
FIN Scan
NULL Scan
Xmas Scan
Firewall
hangi paketleri
nasıl görüyor?
LAB BT-03
SSH Brute Force
MITRE
T1110
İncele
Log
Rate Limit
Dynamic Set
Fail2ban
IOC
100 başarısız oturum
↓
1 IP
LAB BT-04
Password Spraying
MITRE
T1110.003
Bu kez
aynı parola
100 kullanıcı.
Firewall
görebiliyor mu?
SOC
nasıl anlayabilir?
LAB BT-05
Valid Accounts
MITRE
T1078
Bu saldırıda
parola doğrudur.
Firewall
neden durduramaz?
Bunun cevabı
kitabın en önemli güvenlik derslerinden biridir.
Firewall
↓
Kimlik doğrulama yapmaz.
LAB BT-06
Web Enumeration
MITRE
T1595.002
/admin
/login
/phpmyadmin
/config
/backup
Firewall
Rate Limit
Log
Counter
analizi.
LAB BT-07
Exploit Public Facing Application
MITRE
T1190
Firewall
tek başına yeterli mi?
Hayır.
Neden?
WAF gerekir mi?
Reverse Proxy gerekir mi?
LAB BT-08
Data Exfiltration
MITRE
T1041
Sunucu
çok büyük veri göndermeye başladı.
Firewall
Output Chain
nasıl izlenebilir?
LAB BT-09
Command and Control
MITRE
T1071
Sunucu
şüpheli IP'lere
HTTPS bağlantısı açıyor.
Output Chain
inceleniyor.
LAB BT-10
Lateral Movement
MITRE
T1021
Bir istemci
başka sunuculara
SSH deniyor.
Firewall
segmentasyonu
çalışıyor mu?
LAB BT-11
SMB Yayılımı
MITRE
T1021.002
Samba
yalnızca
Server VLAN
erişebilsin.
LAB BT-12
Rogue DHCP
MITRE
T1557
Firewall
neden çözemez?
Switch
DHCP Snooping
gerekir.
LAB BT-13
Rogue Router Advertisement
MITRE
T1557
IPv6
RA
inceleniyor.
LAB BT-14
DNS Tunneling
MITRE
T1071.004
Firewall
UDP 53
trafiğini
nasıl analiz eder?
LAB BT-15
ICMP Tunneling
MITRE
T1095
Ping
ile
veri kaçırılıyor.
Firewall
Rate Limit
yeterli mi?
LAB BT-16
Reverse Shell
MITRE
T1059
Sunucu
beklenmeyen
TCP bağlantısı açıyor.
Output Chain
inceleniyor.
LAB BT-17
Botnet Trafiği
MITRE
T1584
Bir makine
100 farklı IP
ile konuşuyor.
IOC üret.
LAB BT-18
DDoS
MITRE
T1498
Firewall
CPU
Counter
Log
incele.
LAB BT-19
Container Escape
MITRE
T1611
Docker
Host
Firewall
analizi.
LAB BT-20
Insider Threat
MITRE
T1078
İç ağdaki kullanıcı
yasaklı sunucuya erişmeye çalışıyor.
Firewall
↓
Log
↓
SOC Alarmı
Her Laboratuvarda Bulunacak Bölümler
1 Senaryo
2 MITRE Tekniği
3 Ağ Topolojisi
4 Kullanılan Sistemler
5 Firewall Yapısı
6 Beklenen Trafik
7 Şüpheli Trafik
8 IOC
9 Firewall Analizi
10 journalctl Analizi
11 nft Monitor
12 Counter
13 Log Analizi
14 Olay Müdahalesi
15 İyileştirme
16 SOC Alarmı
17 Raporlama
SOC Analisti İçin Kontrol Listesi
Her olay sonunda analist şu soruları cevaplamalıdır:
| Soru | Açıklama |
|---|---|
| İlk anormal aktivite ne zaman başladı? | Olay zaman çizelgesi |
| Kaynak IP adresleri hangileri? | İç ve dış istemciler |
| Hangi servis hedef alındı? | SSH, HTTP, SMB vb. |
| Hangi nftables kuralı eşleşti? | İlgili zincir ve kural |
| Loglarda tekrar eden desen var mı? | Brute force, tarama, flood |
| Hangi IOC'ler elde edildi? | IP, port, zaman, kullanıcı, protokol |
| Etki alanı nedir? | Tek sunucu mu, tüm ağ mı? |
| Hangi karşı önlemler uygulandı? | Rate limit, set, engelleme |
| Olay tamamen sona erdi mi? | Doğrulama ve izleme |
MITRE ATT&CK Eşleştirme Tablosu
| Laboratuvar | MITRE Tekniği | Ana Amaç |
|---|---|---|
| BT-01 | T1595 | Active Scanning |
| BT-02 | T1046 | Network Service Discovery |
| BT-03 | T1110 | Brute Force |
| BT-04 | T1110.003 | Password Spraying |
| BT-05 | T1078 | Valid Accounts |
| BT-06 | T1595.002 | Web Enumeration |
| BT-07 | T1190 | Public-Facing Application Exploitation |
| BT-08 | T1041 | Data Exfiltration |
| BT-09 | T1071 | Command and Control |
| BT-10 | T1021 | Remote Services |
| BT-11 | T1021.002 | SMB/Windows Admin Shares |
| BT-12 | T1557 | Rogue DHCP / Adversary-in-the-Middle (ilişkili senaryo) |
| BT-13 | T1557 | Rogue Router Advertisement (ilişkili senaryo) |
| BT-14 | T1071.004 | DNS Protocol |
| BT-15 | T1095 | Non-Application Layer Protocol |
| BT-16 | T1059 | Command and Scripting Interpreter |
| BT-17 | T1584 | Botnet Altyapısı Senaryosu |
| BT-18 | T1498 | Network Denial of Service |
| BT-19 | T1611 | Escape to Host |
| BT-20 | T1078 | Insider Threat / Valid Accounts |
Not: MITRE ATT&CK zaman içinde güncellenebilir. Kitabın yayımlanmasından önce teknik kimliklerinin güncel ATT&CK sürümüyle doğrulanması önerilir.
Kitabı Profesyonel Seviyeye Taşıyacak Son Üç Ek Bölüm
Bu iki ekten sonra kitabı gerçekten referans eser seviyesine çıkaracak üç bölüm daha öneririm:
Pardus 25 Sunucularını Güvenlik Açısından Sıkılaştırma (Hardening) Kontrol Rehberi
CIS Benchmark, SSH, sysctl, AppArmor, systemd, auditd, çekirdek (kernel) ayarları ve nftables'i tek bir güvenlik standardında birleştiren kapsamlı bir rehber.Gerçek Bir SOC'da nftables Log Analizi ve Olay Müdahalesi
Wazuh, Graylog veya ELK Stack üzerinde dashboard oluşturma, korelasyon kuralları, uyarı üretimi ve adli analiz süreçleri.100 Senaryoluk nftables Komut ve Çözüm Rehberi (Cheat Sheet + Cookbook)
Günlük yönetimde en sık karşılaşılan problemlere yönelik kısa, uygulanabilir çözümler. Örneğin:Belirli bir IP'yi 1 saat engelleme
Belirli ülke IP bloklarını filtreleme
SSH'yi sadece VPN kullanıcılarına açma
Docker ile çakışan kuralları yönetme
IPv6 ICMPv6 kurallarını güvenli şekilde yapılandırma
Dinamik set temizleme ve izleme
NAT ve port yönlendirme sorunlarını giderme
Bu eklerle birlikte eseriniz, eğitim makalesi olmanın ötesine geçerek sistem yöneticileri, siber güvenlik uzmanları ve eğitim kurumları tarafından başvuru kaynağı olarak kullanılabilecek kapsamlı bir nftables ve Pardus 25 güvenlik el kitabı niteliğine ulaşacaktır.
Bu kesinlikle eklenmesi gereken bir bölüm. Özellikle Pardus 25 kullanan kurumlar (MEB okulları, kamu kurumları, üniversiteler ve KOBİ'ler) için VPN artık isteğe bağlı değil, temel bir güvenlik bileşenidir. Üstelik WireGuard ve OpenVPN'i sadece kurmak yeterli değildir; bunların nftables ile güvenli şekilde entegre edilmesi gerekir.
Ben bu bölümü yalnızca VPN kurulumu olarak değil, "VPN Güvenlik Mimarisi ve Firewall Politikaları" olarak hazırlardım.
EK BÖLÜM
WireGuard ve OpenVPN Güvenlik Politikaları
Pardus 25 + nftables ile Güvenli VPN Altyapısı
Bölümün Hedefleri
Bu bölümün sonunda;
VPN güvenlik mimarisini
WireGuard ve OpenVPN farklarını
VPN'e özel nftables kurallarını
VPN kullanıcı segmentasyonunu
VPN istemci izolasyonunu
Split Tunnel ve Full Tunnel yapılarını
MFA (Çok Faktörlü Kimlik Doğrulama) entegrasyonunu
VPN log analizi ve olay müdahalesini
Gerçek kurumsal VPN senaryolarını
öğreneceksiniz.
VPN Neden Gereklidir?
İnternete doğrudan SSH, RDP veya yönetim arayüzlerini açmak ciddi bir güvenlik riskidir.
İnternet
│
SSH 22 Açık ❌
│
Sunucu
Daha güvenli yaklaşım:
İnternet
│
WireGuard VPN
│
Kimliği Doğrulanmış
VPN Kullanıcısı
│
SSH Sunucusu
Temel ilke: Yönetim servisleri yalnızca VPN üzerinden erişilebilir olmalıdır.
WireGuard ve OpenVPN Karşılaştırması
| Özellik | WireGuard | OpenVPN |
|---|---|---|
| Performans | Çok yüksek | Orta |
| Kod tabanı | Küçük (~4.000 satır kernel modülü) | Çok büyük |
| Protokol | UDP | UDP/TCP |
| Şifreleme | Modern ve sabit algoritmalar | Esnek yapı |
| Yapılandırma | Basit | Daha ayrıntılı |
| Performans | Çok iyi | İyi |
| Mobil destek | Çok iyi | Çok iyi |
| Kurumsal kullanım | Yaygın | Çok yaygın |
Kurumsal VPN Mimarisi
İnternet
│
203.0.113.10
│
Pardus 25 Gateway
nftables + WireGuard
│
┌───────────────┼───────────────┐
│ │ │
Yönetim Ağı Sunucu Ağı DMZ
192.168.1.0/24 192.168.10.0/24 192.168.20.0/24
│
VPN İstemcileri
10.100.0.0/24
Güvenlik İlkesi 1
Yönetim Erişimi Sadece VPN'den
Yanlış yaklaşım:
İnternet
│
SSH (22)
│
Sunucu
Doğru yaklaşım:
İnternet
│
WireGuard
│
10.100.0.0/24
│
SSH
Örnek nftables kuralı:
ip saddr 10.100.0.0/24 tcp dport 22 accept
tcp dport 22 drop
Güvenlik İlkesi 2
VPN Kullanıcılarını Segmentlere Ayırma
Her VPN kullanıcısı aynı yetkilere sahip olmamalıdır.
| Kullanıcı Grubu | Yetki |
|---|---|
| Sistem Yöneticisi | Tüm sunucular |
| Ağ Yöneticisi | Ağ cihazları |
| Yazılım Ekibi | Uygulama sunucuları |
| Destek Personeli | Belirli istemciler |
| Misafir | Sadece internet |
Güvenlik İlkesi 3
Least Privilege
VPN bağlantısı kuruldu diye tüm ağa erişim verilmemelidir.
Örnek:
VPN Kullanıcısı
↓
Web Sunucusu
✓
↓
Veritabanı
✗
Split Tunnel
Yalnızca kurumsal trafik VPN üzerinden geçer.
İnternet Trafiği ─────────► ISP
Kurumsal Trafik ─────────► VPN
Avantajları:
Daha az bant genişliği kullanımı
Daha düşük gecikme
Dezavantajı:
Kullanıcının yerel ağı güvenli değilse risk oluşturabilir.
Full Tunnel
Tüm trafik VPN üzerinden geçer.
İstemci
↓
VPN
↓
İnternet
Avantajları:
Merkezi güvenlik denetimi
Web filtreleme
Loglama
DLP uygulanabilir
VPN İstemci İzolasyonu
Varsayılan olarak VPN istemcilerinin birbirine erişmesi önerilmez.
VPN Client 1 ✗ VPN Client 2
Bu, istemciler arası yatay hareket (Lateral Movement) riskini azaltır.
Çok Faktörlü Kimlik Doğrulama (MFA)
Parola veya anahtar tek başına yeterli değildir.
Önerilen ikinci faktörler:
TOTP (Authenticator uygulamaları)
Donanım anahtarı (FIDO2/U2F)
Akıllı kart
Sertifika tabanlı doğrulama
VPN Loglama
İzlenmesi gereken olaylar:
Başarılı bağlantılar
Başarısız kimlik doğrulamalar
Uzun süre açık oturumlar
Aynı kullanıcıyla eşzamanlı bağlantılar
Olağan dışı veri transferi
Bu loglar merkezi SIEM altyapısına gönderilmelidir.
nftables ile VPN Koruması
Korunması gereken servisler:
WireGuard UDP portu (varsayılan 51820)
OpenVPN UDP/TCP portu (kuruluma göre değişebilir)
SSH
Yönetim panelleri
Kurallar:
ct state established,related acceptct state invalid dropVPN portuna yalnızca gerekli protokollere izin
Yönetim servislerine yalnızca VPN ağından erişim
Rate Limiting
VPN uç noktasına yönelik yoğun istekleri sınırlamak için yeni bağlantılara hız sınırı uygulanabilir.
Örnek politika:
Aynı IP'den saniyede belirli sayıda yeni bağlantıya izin ver.
Aşan bağlantıları logla ve reddet.
Dinamik Kara Liste
Tekrarlayan başarısız bağlantılar tespit edildiğinde:
Başarısız Denemeler
↓
Dinamik Set
↓
Geçici Engelleme
↓
Süre Dolunca Otomatik Çıkış
Bu mekanizma Fail2ban ile birlikte kullanılabilir.
VPN Sunucusu İçin Güvenlik Kontrol Listesi
SSH yalnızca VPN ağından erişilebilir.
Root ile doğrudan giriş kapalı.
Anahtar tabanlı kimlik doğrulama etkin.
MFA uygulanıyor.
Gereksiz portlar kapalı.
IPv6 politikaları tanımlı.
Loglar merkezi sisteme aktarılıyor.
Dinamik kara liste kullanılıyor.
Düzenli yedek alınıyor.
Yapılandırmalar sürüm kontrolünde tutuluyor.
Gerçek Kurumsal Senaryo
Bir okul veya kurumun yapısı:
Yönetim Ağı: 192.168.1.0/24
Sunucu Ağı: 192.168.10.0/24
Öğrenci Ağı: 192.168.20.0/24
VPN Ağı: 10.100.0.0/24
Politika:
Sistem yöneticileri VPN üzerinden tüm sunuculara SSH ile erişebilir.
Destek personeli yalnızca belirli istemcilere erişebilir.
Öğrenci ağına VPN üzerinden erişim yoktur.
Veritabanı sunucuları yalnızca uygulama sunucularından bağlantı kabul eder.
Tüm VPN bağlantıları loglanır ve SIEM'e gönderilir.
En Sık Yapılan Hatalar
| Hata | Sonuç |
|---|---|
| SSH'yi internete açık bırakmak | Brute force ve parola denemeleri |
| VPN kullanıcılarına tüm ağı açmak | Yetki aşımı ve yatay hareket |
| MFA kullanmamak | Hesap ele geçirilme riski |
| VPN istemcilerini izole etmemek | Bir istemcinin ele geçirilmesi diğerlerini etkileyebilir |
| VPN loglarını izlememek | Olayların geç fark edilmesi |
| IPv6 VPN trafiğini göz ardı etmek | Güvenlik politikalarının atlatılması |
Bölüm Özeti
Bu bölümde WireGuard ve OpenVPN'in yalnızca kurulumu değil, kurumsal ölçekte güvenli kullanımı ele alındı. nftables ile doğru tasarlanmış bir VPN güvenlik politikası sayesinde:
Yönetim servisleri internete açılmadan güvenle erişilebilir.
Ağ segmentasyonu korunur.
Yetkisiz erişim riski azaltılır.
Olaylar merkezi olarak izlenebilir.
Kurumun uzaktan erişim altyapısı güvenlik ilkeleriyle uyumlu hâle gelir.
Not: Kitabın uygulamalı değerini artırmak için bu teorik bölümün ardından "WireGuard Laboratuvarı (10 Senaryo)" ve "OpenVPN Laboratuvarı (10 Senaryo)" eklenmesi çok faydalı olacaktır. Bu laboratuvarlarda kurulum, istemci yapılandırması, nftables entegrasyonu, hata analizi ve saldırı simülasyonları adım adım uygulanabilir.
Kesinlikle eklenmeli. Hatta ben bunu kitapta ayrı iki ek bölüm olarak hazırlardım. Böylece okuyucu yalnızca VPN kurmayı değil, kurumsal ölçekte güvenli VPN altyapısı kurmayı, test etmeyi ve saldırılara karşı analiz yapmayı öğrenir.
EK BÖLÜM A
WireGuard Laboratuvarı (10 Uygulamalı Senaryo)
Pardus 25 + nftables + WireGuard
Amaç: WireGuard VPN'in sıfırdan kurulması, nftables ile güvenli şekilde entegre edilmesi, kurumsal güvenlik politikalarının uygulanması ve saldırı senaryolarının analiz edilmesi.
Laboratuvar Topolojisi
İnternet
│
203.0.113.10
│
Pardus 25 VPN Gateway
nftables + WireGuard Server
LAN: 192.168.10.1
VPN: 10.100.0.1
│
┌───────────────────┴───────────────────┐
│ │
Ubuntu Server Windows 11
192.168.10.20 192.168.10.30
VPN İstemcileri
Laptop (10.100.0.2)
Telefon (10.100.0.3)
LAB WG-01
WireGuard Kurulumu
Amaç
WireGuard sunucusunu kurmak.
Yapılacaklar
WireGuard paketlerini kur.
Anahtar çifti oluştur.
Sunucu yapılandırmasını hazırla.
Servisi başlat.
Bağlantıyı doğrula.
Kontrol
Servis çalışıyor mu?
VPN arayüzü (
wg0) oluştu mu?IP adresi atandı mı?
LAB WG-02
İlk VPN Bağlantısı
Amaç
Bir istemciyi VPN'e bağlamak.
Testler
Sunucuya ping.
SSH bağlantısı.
DNS çözümlemesi.
Trafik şifreleniyor mu?
LAB WG-03
nftables Entegrasyonu
Amaç
VPN arayüzü için güvenlik politikaları oluşturmak.
Yapılacaklar
wg0arayüzünü tanımla.Yalnızca VPN ağından SSH erişimine izin ver.
Yönetim portlarını internete kapat.
Beklenen Sonuç
VPN istemcisi SSH ile bağlanabilir.
İnternetten doğrudan SSH erişimi engellenir.
LAB WG-04
Split Tunnel
Amaç
Yalnızca kurumsal ağ trafiğini VPN üzerinden geçirmek.
Test
İnternet trafiği doğrudan ISS üzerinden çıkar.
Kurumsal IP'lere erişim VPN üzerinden gerçekleşir.
LAB WG-05
Full Tunnel
Amaç
Tüm istemci trafiğini VPN üzerinden geçirmek.
Test
İnternet erişimi VPN üzerinden sağlanır.
Kaynak IP'nin VPN sunucusu olduğu doğrulanır.
LAB WG-06
Kullanıcı Segmentasyonu
Amaç
Farklı kullanıcı gruplarına farklı erişim hakları vermek.
Örnek
| Kullanıcı | Erişim |
|---|---|
| Sistem Yöneticisi | Tüm sunucular |
| Destek | İstemciler |
| Yazılım | Web sunucuları |
| Misafir | Sadece internet |
Test
Her kullanıcı yalnızca yetkili olduğu kaynaklara erişebilmelidir.
LAB WG-07
VPN Güvenlik Testi
Amaç
Yanlış yapılandırmaları tespit etmek.
Kontrol Listesi
SSH internete açık mı?
Yönetim paneli korunuyor mu?
Gereksiz portlar açık mı?
IPv6 kuralları tanımlı mı?
LAB WG-08
Brute Force Analizi
Senaryo
VPN uç noktasına yoğun bağlantı denemeleri.
İnceleme
journalctlnft monitorSayaçlar
Rate limit
Fail2ban
LAB WG-09
Fail2ban Entegrasyonu
Amaç
Şüpheli istemcileri otomatik engellemek.
Akış
Başarısız Bağlantı
↓
Fail2ban
↓
Dynamic Set
↓
DROP
Kontrol
IP engellendi mi?
Süre sonunda kaldırıldı mı?
LAB WG-10
Kurumsal WireGuard Projesi
Senaryo
Bir kurum için VPN altyapısı kurun.
Gereksinimler:
Yönetim ağı
Sunucu ağı
Öğrenci ağı
DMZ
Split Tunnel
IPv6
nftables
Merkezi loglama
Dinamik kara liste
Fail2ban
Yedekleme
Teslim
Ağ diyagramı
WireGuard yapılandırması
nftables kuralları
Güvenlik raporu
EK BÖLÜM B
OpenVPN Laboratuvarı (10 Uygulamalı Senaryo)
Pardus 25 + nftables + OpenVPN
Amaç: OpenVPN altyapısını sertifika tabanlı güvenli kimlik doğrulama ile kurmak ve nftables politikalarıyla kurumsal seviyede korumak.
Laboratuvar Topolojisi
WireGuard laboratuvarındaki yapı kullanılabilir.
LAB OVPN-01
OpenVPN Kurulumu
Yapılacaklar
OpenVPN kurulumu
PKI altyapısı
CA oluşturma
Sunucu sertifikası
İstemci sertifikası
Servisi başlatma
LAB OVPN-02
İlk VPN Bağlantısı
Test
Sertifika doğrulaması
IP ataması
Ping
SSH
LAB OVPN-03
Sertifika Yönetimi
Amaç
Yeni kullanıcı oluşturma
Sertifika iptali (CRL)
Süresi dolan sertifikaların yönetimi
Test
İptal edilen sertifika ile bağlantı kurulamaz.
LAB OVPN-04
nftables Entegrasyonu
Amaç
VPN istemcilerini filtrelemek.
Politika
SSH yalnızca VPN ağına açık.
Yönetim servisleri korunuyor.
Gereksiz portlar kapalı.
LAB OVPN-05
Kullanıcı Grupları
Örnek
| Grup | Yetki |
|---|---|
| Admin | Tüm ağ |
| Destek | İstemciler |
| Yazılım | Web sunucuları |
| Misafir | İnternet |
LAB OVPN-06
Full Tunnel / Split Tunnel
Karşılaştırma
Bant genişliği
Güvenlik
Performans
Kullanıcı deneyimi
LAB OVPN-07
TLS Güvenliği
İnceleme
TLS sürümü
Şifreleme algoritmaları
Sertifika zinciri
Güvenli yapılandırma
LAB OVPN-08
Saldırı Analizi
Senaryo
Yetkisiz bağlantı denemesi
Geçersiz sertifika
Port taraması
Brute force
İnceleme
Loglar
Firewall
Fail2ban
LAB OVPN-09
SIEM Entegrasyonu
Amaç
OpenVPN loglarını merkezi sisteme göndermek.
Analiz
Başarılı bağlantılar
Başarısız denemeler
Olağan dışı oturum süreleri
Aynı kullanıcıyla çoklu bağlantılar
LAB OVPN-10
Kurumsal OpenVPN Projesi
Senaryo
Bir üniversite için uzaktan erişim altyapısı hazırlayın.
Gereksinimler:
PKI
MFA
Split Tunnel
IPv6
nftables
Merkezi loglama
SIEM
Sertifika iptali
Fail2ban
Yedekleme
Teslim
Ağ diyagramı
PKI yapısı
OpenVPN yapılandırması
nftables kuralları
Risk analizi
Güvenlik raporu
Her Laboratuvar İçin Standart Şablon
Her senaryo aşağıdaki bölümleri içermelidir:
| Bölüm | Açıklama |
|---|---|
| Amaç | Laboratuvarın hedefi |
| Ön Koşullar | Gerekli sistemler ve yazılımlar |
| Ağ Topolojisi | Diyagram ve IP planı |
| Yapılandırma | Adım adım kurulum |
| Test Senaryosu | Beklenen davranış |
| Doğrulama | wg, systemctl, journalctl, nft, ip, ss çıktıları |
| Güvenlik Analizi | Olası riskler |
| Olay Müdahalesi | Sorun çözme adımları |
| En İyi Uygulamalar | Kurumsal öneriler |
| Sonuç | Laboratuvar özeti |
Bence bu kitap için en değerli ek bölümlerden biri "Komut Referansı (Cheat Sheet)" olacaktır. Ancak bunu klasik bir komut listesi yerine "Sistem Yöneticileri ve Siber Güvenlik Uzmanları İçin nftables Cookbook" formatında hazırlamak çok daha faydalı olur.
Bu bölüm yaklaşık 100-150 sayfa olabilir ve günlük hayatta en çok ihtiyaç duyulan işlemleri tek sayfada çözen bir başvuru kaynağı niteliği taşır.
EK BÖLÜM
nftables Komut Referansı (Cheat Sheet)
Pardus 25 Sistem Yöneticileri ve Siber Güvenlik Uzmanları İçin Hızlı Başvuru Rehberi
İçindekiler
Temel Komutlar
Servis Yönetimi
Kuralları Görüntüleme
Tablo Yönetimi
Zincir (Chain) Yönetimi
Kural Yönetimi
Set Yönetimi
Map Yönetimi
Connection Tracking
NAT
Port Forwarding
Masquerade
IPv6
Loglama
Rate Limiting
Dynamic Set
Sayaçlar (Counters)
Performans
Hata Ayıklama
Acil Durum Kurtarma
1. Servis Yönetimi
Servisi başlat
sudo systemctl start nftables
Servisi durdur
sudo systemctl stop nftables
Yeniden başlat
sudo systemctl restart nftables
Durumu göster
sudo systemctl status nftables
Otomatik başlat
sudo systemctl enable nftables
2. Ruleset
Kuralları göster
sudo nft list ruleset
Kuralları dosyaya kaydet
sudo nft list ruleset > backup.nft
Dosyadan yükle
sudo nft -f backup.nft
3. Tablo İşlemleri
Tablo oluştur
sudo nft add table inet filter
Tablo sil
sudo nft delete table inet filter
Tabloları listele
sudo nft list tables
4. Chain İşlemleri
Chain oluştur
sudo nft add chain inet filter input \
'{ type filter hook input priority 0; policy drop; }'
Chain sil
sudo nft delete chain inet filter input
5. INPUT Kuralları
SSH
tcp dport 22 accept
HTTP
tcp dport 80 accept
HTTPS
tcp dport 443 accept
DNS
udp dport 53 accept
6. Loopback
iif lo accept
7. Connection Tracking
Established
ct state established accept
Established + Related
ct state established,related accept
Invalid
ct state invalid drop
New
ct state new
8. IP Filtreleme
Tek IP
ip saddr 192.168.1.10 accept
Alt ağ
ip saddr 192.168.1.0/24 accept
Hariç tut
ip saddr != 192.168.1.0/24 drop
9. IPv6
ip6 saddr 2001:db8::/64 accept
10. Port Filtreleme
Bir port
tcp dport 22 accept
Birden fazla
tcp dport {22,80,443} accept
Port aralığı
tcp dport 1000-2000 accept
11. NAT
Masquerade
masquerade
SNAT
snat to 203.0.113.10
DNAT
dnat to 192.168.1.20
12. Port Forwarding
80
↓
192.168.1.20
tcp dport 80 dnat to 192.168.1.20
13. Logging
log
Prefix
log prefix "SSH:"
Level
log level info
14. Counter
counter
Paket
counter packets
15. Rate Limit
SSH
limit rate 5/minute
ICMP
limit rate 10/second
16. Reject
reject
ICMP
reject with icmp type port-unreachable
17. Drop
drop
18. Accept
accept
19. Dynamic Set
Set oluştur
sudo nft add set inet filter blacklist \
'{ type ipv4_addr; timeout 1h; }'
IP ekle
sudo nft add element inet filter blacklist \
{192.168.1.100}
Göster
sudo nft list set inet filter blacklist
20. Interface
iif eth0
Çıkış
oif eth1
21. Protocol
TCP
ip protocol tcp
UDP
ip protocol udp
ICMP
ip protocol icmp
22. Monitor
Gerçek zamanlı
sudo nft monitor
Trace
sudo nft monitor trace
23. Syntax Kontrolü
sudo nft -c -f /etc/nftables.conf
24. Performans
Sayaç
counter
Set
@trusted
Map
vmap
25. Acil Durum
Firewall'u temizle
sudo nft flush ruleset
Yedeği yükle
sudo nft -f backup.nft
26. Günlük İnceleme
journalctl -u nftables
Son 100 kayıt
journalctl -u nftables -n 100
Canlı takip
journalctl -fu nftables
27. En Çok Kullanılan 20 Komut
| Komut | Açıklama |
|---|---|
nft list ruleset | Tüm kuralları göster |
nft list tables | Tabloları listele |
nft monitor | Gerçek zamanlı izleme |
nft -c -f file | Sözdizimi kontrolü |
nft flush ruleset | Tüm kuralları temizle |
systemctl restart nftables | Servisi yeniden başlat |
journalctl -u nftables | Logları göster |
ss -tuln | Açık portlar |
ip addr | IP bilgisi |
ip route | Yönlendirme tablosu |
tcpdump -i eth0 | Trafik analizi |
conntrack -L | Bağlantı tablosu |
nft list set | Setleri görüntüle |
nft list chain | Zinciri göster |
nft list table | Tabloyu göster |
nft reset counters | Sayaçları sıfırla |
nft monitor trace | Paket izleme |
systemctl status nftables | Servis durumu |
ping | Ağ testi |
curl | HTTP testi |
28. Hata Giderme Akışı
Bağlantı Sorunu
│
▼
Servis Çalışıyor mu?
│
▼
Port Açık mı?
│
▼
nftables Kuralı Var mı?
│
▼
Log Oluşuyor mu?
│
▼
Counter Artıyor mu?
│
▼
tcpdump ile Trafik Görülüyor mu?
│
▼
Routing Doğru mu?
│
▼
Sorun Giderildi
29. Günlük Yönetimde En Sık Kullanılan Senaryolar
Bu bölümün en değerli kısmı, kısa ve doğrudan uygulanabilir çözümlerden oluşan bir Cookbook olacaktır. Örneğin:
SSH'yi yalnızca VPN ağına açma
Belirli bir IP'yi 1 saat engelleme
Aynı IP'den gelen SSH denemelerini sınırlandırma
HTTP ve HTTPS dışındaki tüm portları kapatma
ICMP Echo Request'leri hız sınırlama
Belirli bir ülke IP bloğunu engelleme
Kara listeyi dinamik olarak güncelleme
Docker ile oluşan kuralları görüntüleme
WireGuard istemcilerine erişim kısıtlama
OpenVPN istemcilerini farklı ağ segmentlerine yönlendirme
IPv6 için güvenli ICMPv6 kuralları oluşturma
NAT ve Port Forwarding sorunlarını teşhis etme
nft monitor traceile paketin hangi kurala takıldığını bulmaconntracktablosunu temizleme ve analiz etmeFail2ban ile dinamik
setentegrasyonu
Yorumlar