Ana içeriğe geç
Kategoriye Dön

Firewall Yapılandırma: iptables ve ufw Rehberi

Linux sunucunuzda iptables ve ufw ile firewall yapılandırma, SSH/HTTP/HTTPS port kuralları oluşturma, kuralları kalıcı hale getirme ve test etme rehberi.

Okuma süresi: 12 dk Sunucu Yönetimi
firewalliptablesufwgüvenlikportlinuxsunucu

İçindekiler

Firewall Yapılandırma: iptables ve ufw Rehberi

Firewall (güvenlik duvarı), sunucunuza gelen ve giden ağ trafiğini denetleyen temel güvenlik bileşenidir. Linux sistemlerde iki popüler araç öne çıkar: düşük seviyeli ve güçlü iptables ile kullanıcı dostu ufw (Uncomplicated Firewall). Bu rehberde her ikisini de ele alacağız.

REXE sunucularında ağ seviyesinde Path Panel firewall'u aktiftir. Sunucu içi firewall, ek bir güvenlik katmanı sağlar. Her iki katmanı birlikte kullanmanız önerilir.

iptables Temelleri

iptables, Linux çekirdeğinin netfilter altyapısını yöneten komut satırı aracıdır. Paket filtreleme, NAT ve port yönlendirme gibi işlemleri gerçekleştirir.

Mevcut Kuralları Görüntüleme

hljs bash
# Tüm kuralları listele
sudo iptables -L -n -v

# Satır numaralarıyla listele
sudo iptables -L -n -v --line-numbers

# NAT tablosunu görüntüle
sudo iptables -t nat -L -n -v

Temel iptables Kavramları

KavramAçıklama
ChainKural zinciri: INPUT, OUTPUT, FORWARD
TableKural tablosu: filter, nat, mangle
TargetKural eylemi: ACCEPT, DROP, REJECT
MatchEşleşme kriteri: port, protokol, IP

Temel Kurallar Oluşturma

hljs bash
# Loopback arayüzüne izin ver
sudo iptables -A INPUT -i lo -j ACCEPT

# Mevcut bağlantılara izin ver
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# SSH portuna izin ver (port 22)
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT

# HTTP portuna izin ver (port 80)
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT

# HTTPS portuna izin ver (port 443)
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT

# Diğer tüm gelen trafiği engelle
sudo iptables -A INPUT -j DROP

DROP kuralını eklemeden önce SSH portuna izin verdiğinizden emin olun. Aksi takdirde sunucuya erişiminizi kaybedebilirsiniz.

Kural Silme

hljs bash
# Kural numarasıyla sil
sudo iptables -D INPUT 3

# Kural içeriğiyle sil
sudo iptables -D INPUT -p tcp --dport 80 -j ACCEPT

# Tüm kuralları temizle
sudo iptables -F

Belirli IP'ye İzin Verme / Engelleme

hljs bash
# Belirli IP'ye SSH izni ver
sudo iptables -A INPUT -s 192.168.1.100 -p tcp --dport 22 -j ACCEPT

# Belirli IP'yi tamamen engelle
sudo iptables -A INPUT -s 10.0.0.5 -j DROP

# IP aralığını engelle
sudo iptables -A INPUT -s 192.168.1.0/24 -j DROP

iptables Kurallarını Kalıcı Hale Getirme

iptables kuralları varsayılan olarak sunucu yeniden başlatıldığında kaybolur. Kalıcı hale getirmek için:

Debian/Ubuntu

hljs bash
# iptables-persistent kur
sudo apt install iptables-persistent -y

# Mevcut kuralları kaydet
sudo netfilter-persistent save

# Kuralları yükle
sudo netfilter-persistent reload

RHEL/CentOS/AlmaLinux

hljs bash
# iptables-services kur
sudo yum install iptables-services -y

# Servisi etkinleştir
sudo systemctl enable iptables
sudo systemctl start iptables

# Kuralları kaydet
sudo service iptables save

ufw ile Firewall Yönetimi

ufw, iptables'ın karmaşıklığını gizleyen kullanıcı dostu bir araçtır. Ubuntu ve Debian sistemlerde varsayılan olarak gelir.

ufw Kurulum ve Etkinleştirme

hljs bash
# ufw kur (genellikle zaten kurulu)
sudo apt install ufw -y

# Durumu kontrol et
sudo ufw status verbose

# Varsayılan politikaları ayarla
sudo ufw default deny incoming
sudo ufw default allow outgoing

ufw'yu etkinleştirmeden önce SSH portuna izin vermeyi unutmayın!

Temel ufw Kuralları

hljs bash
# SSH'a izin ver
sudo ufw allow ssh
# veya port numarasıyla:
sudo ufw allow 22/tcp

# HTTP ve HTTPS'e izin ver
sudo ufw allow http
sudo ufw allow https
# veya:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

# Özel port açma
sudo ufw allow 8080/tcp

# ufw'yu etkinleştir
sudo ufw enable

ufw Kural Yönetimi

hljs bash
# Kuralları numaralı listele
sudo ufw status numbered

# Kural sil (numara ile)
sudo ufw delete 3

# Kural sil (içerik ile)
sudo ufw delete allow 8080/tcp

# Belirli IP'ye izin ver
sudo ufw allow from 192.168.1.100

# Belirli IP'yi engelle
sudo ufw deny from 10.0.0.5

# ufw'yu devre dışı bırak
sudo ufw disable

# Tüm kuralları sıfırla
sudo ufw reset

Uygulama Profilleri

ufw, yaygın uygulamalar için hazır profiller sunar:

hljs bash
# Mevcut profilleri listele
sudo ufw app list

# Nginx profilini etkinleştir
sudo ufw allow 'Nginx Full'

# OpenSSH profilini etkinleştir
sudo ufw allow 'OpenSSH'

Firewall Kurallarını Test Etme

nmap ile Port Tarama

hljs bash
# Başka bir makineden sunucunuzu tarayın
nmap -sT -p 22,80,443 SUNUCU_IP

# Tüm portları tara
nmap -sT SUNUCU_IP

netstat / ss ile Dinlenen Portları Kontrol

hljs bash
# Dinlenen TCP portlarını listele
sudo ss -tlnp

# Tüm bağlantıları listele
sudo ss -tunap

# netstat ile (eski sistemler)
sudo netstat -tlnp

Bağlantı Testi

hljs bash
# Belirli porta bağlantı testi
telnet SUNUCU_IP 80

# nc ile test
nc -zv SUNUCU_IP 443

# curl ile HTTP testi
curl -I http://SUNUCU_IP

Güvenlik Önerileri

Firewall yapılandırmasında en az ayrıcalık ilkesini uygulayın: yalnızca ihtiyaç duyulan portları açın.

  1. SSH portunu değiştirin: Varsayılan 22 yerine yüksek bir port kullanın
  2. Rate limiting uygulayın: Brute-force saldırılarına karşı
  3. Fail2Ban kurun: Başarısız giriş denemelerini otomatik engelleyin
  4. Düzenli denetim yapın: iptables -L veya ufw status ile kuralları kontrol edin
  5. Yedek alın: Kuralları dosyaya kaydedin
hljs bash
# iptables kurallarını dosyaya kaydet
sudo iptables-save > /etc/iptables/rules.v4

# Dosyadan yükle
sudo iptables-restore < /etc/iptables/rules.v4

Sonuç

iptables güç ve esneklik sunarken, ufw hız ve kullanım kolaylığı sağlar. Yeni başlayanlar için ufw, ileri düzey yapılandırmalar için iptables tercih edilebilir. Her iki araç da REXE sunucularınızda Path Panel firewall'uyla birlikte kullanılabilir. Firewall yapılandırmanızı düzenli olarak gözden geçirmeyi ve gereksiz açık portları kapatmayı unutmayın.