Temel Firewall Kurulumu
UFW (Uncomplicated Firewall) kullanarak temel güvenlik duvarı kuran ve yapılandıran script. SSH, HTTP, HTTPS portlarını açar.
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