Güvenlik Başlangıç

Temel Firewall Kurulumu

UFW (Uncomplicated Firewall) kullanarak temel güvenlik duvarı kuran ve yapılandıran script. SSH, HTTP, HTTPS portlarını açar.

Yayınlanma: 20.02.2024 Güncellenme: 01.12.2024

Detaylı Bilgi

Bu script, UFW (Uncomplicated Firewall) kullanarak Linux sunucunuz için temel bir güvenlik duvarı kurar ve yapılandırır. Firewall, sunucunuzu yetkisiz erişimlere karşı koruyan ilk savunma hattıdır.

Script Ne İşe Yarar?

Bu script, güvenlik duvarı kurulum sürecini otomatikleştirir:

  • UFW aracını kurar (yoksa)
  • Varsayılan politikaları ayarlar (gelen trafik reddedilir, giden trafik izin verilir)
  • SSH portunu açar (kritik - kendinizi kilitlememek için)
  • HTTP ve HTTPS portlarını isteğe bağlı açar
  • Ek portlar ekleme imkanı sunar
  • Firewall'ı etkinleştirir

Neden Kullanmalısınız?

Firewall, sunucu güvenliğinin temelidir:

  • Yetkisiz Erişim Önleme: Açık portları kapatarak saldırı yüzeyini azaltır
  • DDoS Koruması: İstenmeyen trafiği engeller
  • Port Kontrolü: Sadece gerekli portları açar
  • Kolay Yönetim: UFW, iptables'a göre çok daha kolay kullanılır

Güvenlik Özellikleri

  • Varsayılan olarak tüm gelen trafik reddedilir
  • Sadece açıkça izin verilen portlar erişilebilir
  • SSH portu öncelikli olarak açılır (kendinizi kilitlememek için)
  • Her kural için açıklayıcı yorumlar eklenir

Nasıl Kullanılır?

Adım Adım Kullanım Kılavuzu

1. Script Dosyasını Oluşturun

nano firewall_setup.sh

Script kodunu yapıştırın ve kaydedin.

2. Scripti Çalıştırılabilir Yapın

chmod +x firewall_setup.sh

3. Root Olarak Çalıştırın

sudo ./firewall_setup.sh

4. Soruları Yanıtlayın

Script size şu soruları soracak:

  • SSH portu (varsayılan: 22)
  • HTTP (80) portunu açmak ister misiniz? (y/n)
  • HTTPS (443) portunu açmak ister misiniz? (y/n)
  • Ek portlar (virgülle ayrılmış)

5. Firewall Durumunu Kontrol Edin

sudo ufw status verbose

Manuel Kural Ekleme

# Port açma
sudo ufw allow 8080/tcp

# Port kapatma
sudo ufw delete allow 8080/tcp

# IP adresine izin verme
sudo ufw allow from 192.168.1.100

# Belirli IP'den belirli porta izin
sudo ufw allow from 192.168.1.100 to any port 3306

Firewall'ı Geçici Olarak Kapatma

sudo ufw disable

Firewall'ı Yeniden Etkinleştirme

sudo ufw enable

Gereksinimler

Gereksinimler

  • Root Yetkisi: Script root olarak çalıştırılmalı
  • Ubuntu/Debian Sistemi: UFW genellikle Ubuntu/Debian'da varsayılan kuruludur
  • İnternet Bağlantısı: UFW kurulumu için gerekli (yoksa)

UFW Kurulumu

UFW genellikle Ubuntu/Debian sistemlerde varsayılan olarak kuruludur. Eksikse:

# Ubuntu/Debian
sudo apt-get update
sudo apt-get install ufw

# CentOS/RHEL (firewalld kullanır, UFW kurulabilir)
sudo yum install epel-release
sudo yum install ufw

Önemli Notlar

  • SSH portunu açmadan firewall'ı etkinleştirmeyin - kendinizi kilitleyebilirsiniz!
  • Varsayılan SSH portu 22'dir, ancak güvenlik için değiştirilmiş olabilir
  • Firewall kuralları hemen etkinleşir

Kullanım Senaryoları

Kullanım Senaryoları

1. Yeni Sunucu Kurulumu

Yeni bir sunucu kurduğunuzda, ilk yapılacak işlerden biri firewall kurmaktır. Bu script ile hızlıca temel güvenliği sağlayabilirsiniz.

2. Production Sunucu Güvenliği

Production sunucularında sadece gerekli portları açarak saldırı yüzeyini minimize edin.

3. Web Sunucu Güvenliği

Web sunucuları için HTTP (80) ve HTTPS (443) portlarını açın, diğer tüm portları kapatın.

4. Veritabanı Sunucu Güvenliği

Veritabanı sunucularında sadece belirli IP adreslerinden erişime izin verin.

5. Çoklu Servis Yönetimi

Birden fazla servis çalıştıran sunucularda, her servis için gerekli portları açın.

Örnekler

Kullanım Örnekleri

Örnek 1: Temel Web Sunucu

sudo ./firewall_setup.sh
# SSH Port: 22
# Allow HTTP: y
# Allow HTTPS: y
# Additional ports: (boş)

Örnek 2: Özel SSH Portu

sudo ./firewall_setup.sh
# SSH Port: 2222
# Allow HTTP: y
# Allow HTTPS: y

Örnek 3: Çoklu Port

sudo ./firewall_setup.sh
# SSH Port: 22
# Allow HTTP: y
# Allow HTTPS: y
# Additional ports: 8080,3306,5432

Örnek 4: Manuel Kural Ekleme

# Belirli IP'den erişim
sudo ufw allow from 192.168.1.100

# Port aralığı
sudo ufw allow 8000:8010/tcp

# Belirli protokol
sudo ufw allow 53/udp

Kod

#!/bin/bash

# Basic Firewall Setup with UFW

if [ "$EUID" -ne 0 ]; then 
    echo "Please run as root"
    exit 1
fi

echo "Setting up firewall with UFW..."
echo ""

if ! command -v ufw &> /dev/null; then
    echo "Installing UFW..."
    apt-get update && apt-get install -y ufw
fi

echo "Resetting UFW to defaults..."
ufw --force reset

echo "Setting default policies..."
ufw default deny incoming
ufw default allow outgoing

echo "✓ Default policies set"
echo ""

read -p "SSH Port (default 22): " SSH_PORT
SSH_PORT=${SSH_PORT:-22}

echo "Allowing SSH on port $SSH_PORT..."
ufw allow $SSH_PORT/tcp comment "SSH"

read -p "Allow HTTP (80)? (y/n): " ALLOW_HTTP
if [ "$ALLOW_HTTP" = "y" ]; then
    ufw allow 80/tcp comment "HTTP"
    echo "✓ HTTP allowed"
fi

read -p "Allow HTTPS (443)? (y/n): " ALLOW_HTTPS
if [ "$ALLOW_HTTPS" = "y" ]; then
    ufw allow 443/tcp comment "HTTPS"
    echo "✓ HTTPS allowed"
fi

read -p "Any additional ports to open? (comma-separated, or press Enter to skip): " ADDITIONAL_PORTS
if [ ! -z "$ADDITIONAL_PORTS" ]; then
    IFS="," read -ra PORTS <<< "$ADDITIONAL_PORTS"
    for port in "${PORTS[@]}"; do
        ufw allow $port/tcp
        echo "✓ Port $port allowed"
    done
fi

echo ""
echo "Enabling UFW..."
ufw --force enable

echo ""
echo "======================================"
echo "FIREWALL STATUS"
echo "======================================"
ufw status verbose

echo ""
echo "======================================"
echo "FIREWALL RULES"
echo "======================================"
ufw status numbered

echo ""
echo "✓ Firewall setup completed!"
echo ""
echo "To add more rules later:"
echo "  ufw allow <port>/tcp"
echo "To remove a rule:"
echo "  ufw delete <rule number>"

Kullanım

sudo chmod +x firewall_setup.sh
sudo ./firewall_setup.sh

# Manuel kural ekleme
sudo ufw allow 8080/tcp
sudo ufw delete allow 8080/tcp

# Durumu kontrol et
sudo ufw status

Sorun Giderme

Sorun Giderme

Problem: Kendimi Kilitledim (SSH Erişimi Yok)

Çözüm: Sunucuya fiziksel erişiminiz varsa veya VPS kontrol panelinden erişebiliyorsanız:

# Firewall'ı geçici olarak kapat
sudo ufw disable

# SSH portunu aç
sudo ufw allow 22/tcp

# Firewall'ı tekrar etkinleştir
sudo ufw enable

Problem: "ufw: command not found"

Çözüm: UFW kurulu değil. Kurun:

sudo apt-get update
sudo apt-get install ufw

Problem: Port Açık Ama Erişilemiyor

Çözüm: Servisin çalıştığından ve dinlediğinden emin olun:

# Port dinleme kontrolü
sudo netstat -tulpn | grep :80

# Servis durumu
sudo systemctl status nginx

Problem: Firewall Kuralları Uygulanmıyor

Çözüm: Firewall'ın etkin olduğundan emin olun:

sudo ufw status
sudo ufw enable

Etiketler

firewall güvenlik ufw iptables port