Skip to content

UFW (Uncomplicated Firewall): Linux Firewall Yönetimi Rehberi

Published: at 08:30 PMSuggest an edit

Merhaba! Bugün Linux sistemlerde güvenlik için kritik olan UFW (Uncomplicated Firewall) konusunu ele alacağız. UFW, iptables’ın karmaşıklığını gizleyerek firewall yönetimini kolaylaştıran harika bir araç.

UFW Nedir?

UFW, Ubuntu ve diğer Debian tabanlı dağıtımlarda bulunan user-friendly firewall management tool’udur. Arkada iptables çalışır, ama UFW sayesinde karmaşık iptables kurallarını basit komutlarla yönetebilirsiniz.

Temel Kavramlar

# UFW status kontrolü
sudo ufw status

# UFW'yi aktif etme
sudo ufw enable

# UFW'yi devre dışı bırakma
sudo ufw disable

# Verbose output
sudo ufw status verbose

# Numaralı liste (kural silme için)
sudo ufw status numbered

Temel UFW Komutları

1. Port Yönetimi

# Belirli port'u aç
sudo ufw allow 22        # SSH
sudo ufw allow 80        # HTTP
sudo ufw allow 443       # HTTPS
sudo ufw allow 3000      # Development server

# Port aralığı
sudo ufw allow 6000:6007

# Specific protocol
sudo ufw allow 22/tcp
sudo ufw allow 53/udp

# Port'u kapat
sudo ufw deny 23         # Telnet'i yasakla

2. Service-based Rules

# Service name ile
sudo ufw allow ssh
sudo ufw allow http
sudo ufw allow https
sudo ufw allow ftp

# Service listesi
sudo ufw app list

# Specific app profile
sudo ufw allow 'Apache Full'
sudo ufw allow 'Nginx Full'
sudo ufw allow 'OpenSSH'

3. IP Address Rules

# Specific IP'den gelen bağlantıları izin ver
sudo ufw allow from 192.168.1.100

# IP aralığı
sudo ufw allow from 192.168.1.0/24

# Specific IP'yi yasakla
sudo ufw deny from 192.168.1.50

# Specific IP'den specific port'a
sudo ufw allow from 192.168.1.100 to any port 22

Pratik Örnekler

Web Development Setup

#!/bin/bash

echo "🔥 Web Development Firewall Setup"
echo "================================="

# UFW'yi reset et (temiz başlangıç)
sudo ufw --force reset

# Default policies
sudo ufw default deny incoming
sudo ufw default allow outgoing

# SSH (kritik - bunu kapatmayın!)
sudo ufw allow ssh

# Web server ports
sudo ufw allow http      # 80
sudo ufw allow https     # 443

# Development servers
sudo ufw allow 3000      # React dev server
sudo ufw allow 3001      # Additional dev server
sudo ufw allow 5000      # Flask default
sudo ufw allow 8000      # Django default
sudo ufw allow 8080      # Alternative HTTP

# Database connections (sadece local network)
sudo ufw allow from 192.168.1.0/24 to any port 3306    # MySQL
sudo ufw allow from 192.168.1.0/24 to any port 5432    # PostgreSQL
sudo ufw allow from 192.168.1.0/24 to any port 27017   # MongoDB

# UFW'yi aktif et
sudo ufw enable

# Status kontrolü
sudo ufw status verbose

Security Best Practices

1. Layered Security Setup

#!/bin/bash

echo "🛡️  Comprehensive Security Setup"
echo "==============================="

# 1. Default deny everything
sudo ufw --force reset
sudo ufw default deny incoming
sudo ufw default deny outgoing

# 2. Essential outgoing
sudo ufw allow out 53         # DNS
sudo ufw allow out 80         # HTTP
sudo ufw allow out 443        # HTTPS
sudo ufw allow out 123        # NTP

# 3. SSH with rate limiting
sudo ufw limit 22/tcp

# 4. Web services (sadece gerekirse)
read -p "Web server kurulu mu? (y/n): " webserver
if [[ $webserver == "y" ]]; then
    sudo ufw allow 80
    sudo ufw allow 443
fi

# 5. Development ports (sadece local network)
read -p "Development environment mu? (y/n): " dev
if [[ $dev == "y" ]]; then
    sudo ufw allow from 192.168.1.0/24 to any port 3000
    sudo ufw allow from 192.168.1.0/24 to any port 5000
    sudo ufw allow from 192.168.1.0/24 to any port 8000
fi

# 6. Database access (sadece specific IP'ler)
read -p "Database server IP (yoksa enter): " dbip
if [[ -n $dbip ]]; then
    sudo ufw allow from $dbip to any port 3306
    sudo ufw allow from $dbip to any port 5432
fi

# 7. Enable UFW
sudo ufw enable

# 8. Show final status
echo ""
echo "🔥 Final Firewall Rules:"
sudo ufw status numbered

echo ""
echo "💡 Important commands:"
echo "   Status: sudo ufw status"
echo "   Delete rule: sudo ufw delete [number]"
echo "   Logs: sudo tail -f /var/log/ufw.log"

2. Monitoring Script

#!/bin/bash

# UFW monitoring script
LOG_FILE="/var/log/ufw_monitor.log"
ALERT_THRESHOLD=10

monitor_ufw() {
    echo "$(date): UFW Monitoring başlatıldı" >> $LOG_FILE

    while true; do
        # Son 1 dakikadaki blocked connection sayısı
        blocked_count=$(grep "$(date '+%b %d %H:%M')" /var/log/ufw.log | grep "\[UFW BLOCK\]" | wc -l)

        if [ $blocked_count -gt $ALERT_THRESHOLD ]; then
            echo "$(date): ALERT - $blocked_count blocked connections in last minute" >> $LOG_FILE

            # Email alert (mail komutu kuruluysa)
            if command -v mail &> /dev/null; then
                echo "UFW Alert: $blocked_count blocked connections detected" | mail -s "UFW Security Alert" admin@example.com
            fi
        fi

        sleep 60
    done
}

# Background'da çalıştır
monitor_ufw &
echo $! > /var/run/ufw_monitor.pid

3. Backup ve Restore

# UFW rules backup
backup_ufw_rules() {
    timestamp=$(date +"%Y%m%d_%H%M%S")
    backup_dir="/etc/ufw/backup"

    sudo mkdir -p $backup_dir

    # Rules backup
    sudo cp /etc/ufw/user.rules "$backup_dir/user.rules.$timestamp"
    sudo cp /etc/ufw/user6.rules "$backup_dir/user6.rules.$timestamp"

    # Status backup
    sudo ufw status verbose > "$backup_dir/status.$timestamp"

    echo "UFW rules backed up to $backup_dir"
}

# UFW rules restore
restore_ufw_rules() {
    backup_file=$1

    if [ ! -f "$backup_file" ]; then
        echo "Backup file not found: $backup_file"
        return 1
    fi

    # UFW'yi devre dışı bırak
    sudo ufw disable

    # Rules'ları restore et
    sudo cp "$backup_file" /etc/ufw/user.rules

    # UFW'yi tekrar aktif et
    sudo ufw enable

    echo "UFW rules restored from $backup_file"
}

Common Troubleshooting

1. SSH Connection Lost

# Emergency SSH access (local console gerekli)
sudo ufw disable
sudo ufw delete allow ssh
sudo ufw allow ssh
sudo ufw enable

2. Port Already in Use

# Port'u kullanan process'i bul
sudo netstat -tlnp | grep :3000
sudo lsof -i :3000

# Process'i kapat
sudo kill -9 <PID>

# UFW kuralını kontrol et
sudo ufw status | grep 3000

3. Rule Conflicts

# Duplicate rules'ları temizle
sudo ufw status numbered

# Duplicate'i sil
sudo ufw delete <rule_number>

# Rules'ları yeniden organize et
sudo ufw --force reset
# Yeniden configure et...

Performance Monitoring

# UFW log analizi
analyze_ufw_logs() {
    echo "📊 UFW Log Analysis"
    echo "=================="

    # En çok block edilen IP'ler
    echo "Top blocked IPs:"
    grep "UFW BLOCK" /var/log/ufw.log | \
        awk '{print $12}' | \
        sort | uniq -c | \
        sort -nr | head -10

    # En çok hedeflenen portlar
    echo -e "\nTop targeted ports:"
    grep "UFW BLOCK" /var/log/ufw.log | \
        awk '{print $14}' | \
        sort | uniq -c | \
        sort -nr | head -10

    # Günlük istatistikler
    echo -e "\nDaily stats:"
    grep "UFW BLOCK" /var/log/ufw.log | \
        awk '{print $1, $2}' | \
        sort | uniq -c
}

Sonuç

UFW, Linux sistemlerde firewall yönetimi için mükemmel bir araç. Key points:

  1. Keep it simple: Gereksiz port açmayın
  2. Default deny: Her şeyi kapatıp sadece gerekeni açın
  3. Rate limiting: Brute force saldırılarına karşı koruma
  4. Monitor logs: Düzenli log kontrolü yapın
  5. Backup rules: Configuration’ları yedekleyin

Development’ta da production’da da UFW ile sistemlerinizi güvende tutabilirsiniz!

Kaynaklar



Previous Post
LINQ: C#'ın Query Süper Gücü
Next Post
FLUX.1: Black Forest Labs'ın Yeni Text-to-Image AI Modeli