Celil Uyanikoglu

Linux Güvenlik Duvarı: iptables ve ufw Rehberi

Celil Uyanikoglu Celil Uyanikoglu · 28 Nis 2026 · 6 dk okuma

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