Linux'ta güvenlik duvarı (firewall) ağ trafiğini kontrol ederek sistemi korur. Hangi bağlantıların kabul edileceğini, hangilerinin reddedileceğini belirler. Güvenlik Duvarı Temelleri
Linux çekirdeği Netfilter alt sistemini içerir. Tüm güvenlik duvarı araçları bu alt sistemi kullanır. Netfilter, ağ paketlerini inceler ve kurallara göre işlem yapar:
ACCEPT: Paketi kabul et DROP: Paketi sessizce at REJECT: Paketi reddet ve gönderene bildir
ufw (Uncomplicated Firewall)
ufw, adından da anlaşılacağı gibi kullanımı kolay bir güvenlik duvarı aracıdır. iptables'ın karmaşıklığını gizleyerek basit komutlarla firewall yönetimi sağlar. Ubuntu'da varsayılan olarak gelir.
Kurulum ve Etkinleştirme
sudo apt install ufw sudo ufw enable
Durumu kontrol:
sudo ufw status sudo ufw status verbose
Temel Kurallar
Port açma:
sudo ufw allow 22 sudo ufw allow 80/tcp sudo ufw allow 443/tcp
Port kapatma:
sudo ufw deny 3306
Servis adıyla:
sudo ufw allow ssh sudo ufw allow http sudo ufw allow https
IP Bazlı Kurallar
Belirli IP'den izin:
sudo ufw allow from 192.168.1.100
Belirli IP ve port:
sudo ufw allow from 192.168.1.100 to any port 22
Alt ağdan izin:
sudo ufw allow from 192.168.1.0/24
Kural Silme
Numarayla silme:
sudo ufw status numbered sudo ufw delete 2
Kuralı belirterek:
sudo ufw delete allow 80
Varsayılan Politikalar
sudo ufw default deny incoming sudo ufw default allow outgoing
Gelen trafiği varsayılan olarak engelle, giden trafiğe izin ver.
Uygulama Profilleri
Kullanılabilir profiller:
sudo ufw app list
Profil detayları:
sudo ufw app info 'Nginx Full'
Profil ile izin:
sudo ufw allow 'Nginx Full'
Gelişmiş Kurallar
Rate limiting (brute force koruması):
sudo ufw limit ssh
30 saniyede 6'dan fazla bağlantı denemesini engeller.
Log aktifleştirme:
sudo ufw logging on sudo ufw logging medium
Loglar /var/log/ufw.log dosyasında.
ufw Sıfırlama
Tüm kuralları kaldır:
sudo ufw reset
iptables
iptables, Linux'un geleneksel güvenlik duvarı aracıdır. Daha karmaşık ama daha güçlüdür. Doğrudan Netfilter ile çalışır.
Not: Modern sistemlerde nftables önerilir, ancak iptables hala yaygın kullanılır.
Tablo ve Zincir Yapısı
iptables tablolardan ve zincirlerden oluşur:
Tablolar:
- filter: Paket filtreleme (varsayılan)
- nat: Adres dönüşümü
- mangle: Paket değiştirme
Zincirler (filter tablosunda):
- INPUT: Gelen paketler
- OUTPUT: Giden paketler
- FORWARD: Yönlendirilen paketler
Mevcut Kuralları Görme
sudo iptables -L sudo iptables -L -n -v
-n: Sayısal gösterim
Temel Kurallar
SSH izni:
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
HTTP ve HTTPS:
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
Localhost izni:
sudo iptables -A INPUT -i lo -j ACCEPT
Kurulu bağlantılara izin:
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
Varsayılan DROP:
sudo iptables -P INPUT DROP sudo iptables -P FORWARD DROP sudo iptables -P OUTPUT ACCEPT
IP Bazlı Kurallar
Belirli IP'yi engelle:
sudo iptables -A INPUT -s 10.0.0.5 -j DROP
Alt ağa izin:
sudo iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT
Kural Silme
Numarayla:
sudo iptables -L INPUT --line-numbers sudo iptables -D INPUT 3
Kuralı belirterek:
sudo iptables -D INPUT -p tcp --dport 80 -j ACCEPT
Tüm kuralları temizle:
sudo iptables -F
Kuralları Kaydetme
iptables kuralları yeniden başlatmada kaybolur. Kalıcı yapmak için:
Debian/Ubuntu:
sudo apt install iptables-persistent sudo netfilter-persistent save
CentOS/RHEL:
sudo service iptables save
NAT ve Port Yönlendirme
IP forwarding etkinleştir:
echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward
Port yönlendirme:
sudo iptables -t nat -A PREROUTING -p tcp --dport 8080 -j REDIRECT --to-port 80
Masquerade (NAT):
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
nftables
nftables, iptables'ın modern halefidir. Debian 10 ve sonrasında varsayılandır. Daha basit sözdizimi, daha iyi performans sunar.
Kurulum
sudo apt install nftables sudo systemctl enable nftables
Temel Sözdizimi
Tablo oluştur:
sudo nft add table inet filter
Zincir oluştur:
sudo nft add chain inet filter input { type filter hook input priority 0 \; policy drop \; }
Kural ekle:
sudo nft add rule inet filter input tcp dport 22 accept sudo nft add rule inet filter input tcp dport {80, 443} accept
Kuralları Listele
sudo nft list ruleset
Örnek Yapılandırma
/etc/nftables.conf dosyası:
#!/usr/sbin/nft -f
flush ruleset
table inet filter { chain input { type filter hook input priority 0; policy drop;
iif lo accept ct state established,related accept
tcp dport 22 accept tcp dport {80, 443} accept
# ICMP (ping) ip protocol icmp accept ip6 nexthdr icmpv6 accept }
chain forward { type filter hook forward priority 0; policy drop; }
chain output { type filter hook output priority 0; policy accept; } }
Yapılandırmayı uygula:
sudo nft -f /etc/nftables.conf
Sunucu Güvenlik Duvarı Örneği
Web sunucusu için tipik ufw yapılandırması:
# Varsayılanları ayarla sudo ufw default deny incoming sudo ufw default allow outgoing
# SSH (IP kısıtlamalı) sudo ufw allow from 192.168.1.0/24 to any port 22
# Web sudo ufw allow 80/tcp sudo ufw allow 443/tcp
# Brute force koruması sudo ufw limit ssh
# Etkinleştir sudo ufw enable
Veritabanı sunucusu (sadece iç ağ):
sudo ufw allow from 10.0.0.0/8 to any port 3306 sudo ufw allow from 10.0.0.0/8 to any port 5432
Sorun Giderme
Bağlantı sorunlarında:
# Kuralları kontrol sudo ufw status verbose sudo iptables -L -n -v
# Logları incele tail -f /var/log/ufw.log journalctl -f | grep -i firewall
# Geçici olarak devre dışı bırak (test) sudo ufw disable
İpuçları
SSH'yi her zaman açık tutun: Uzaktan bağlıyken firewall'u etkinleştirmeden önce SSH kuralını ekleyin.
Sıralama önemli: iptables kuralları sırayla işlenir. Genel kurallar sonda olmalı.
Test edin: Değişikliklerden sonra bağlantıları test edin.
Yedekleyin: Kural değişikliği öncesi mevcut kuralları yedekleyin.
iptables-save > rules-backup.txt
Düzenli gözden geçirin: Kuralları periyodik olarak kontrol edin, gereksizleri kaldırın.
Hangi Aracı Kullanmalı?
ufw: Basit senaryolar, hızlı kurulum, yeni başlayanlar için ideal. iptables: Legacy sistemler, karmaşık kurallar, detaylı kontrol. nftables: Modern sistemler, yeni kurulumlar için önerilen.
0 Yorum
Yorum Yaz