Ekran Kartlı Sunucu Satışları Başladı. İncele
VDS ve Dedicated Sunucu

Sunucu Güvenlik Duvarı Yapılandırması: UFW, iptables ve Windows Firewall

Sunucunuzu koruyun: UFW ve iptables kuralları, Windows Firewall port açma, Fail2Ban kurulumu ve güvenli port yönetimi.

  • 9 dk okuma
  • Güncelleme:
  • Yayın:
  • Batihost Teknik Ekibi

Kısaca Özet

  • Doğru güvenlik duvarı yaklaşımı tek cümledir: gelen trafiğin tamamını reddet, yalnızca ihtiyaç duyduğun portları aç.
  • Ubuntu ve Debian’da UFW, AlmaLinux ve Rocky’de firewalld, Windows Server’da Windows Defender Güvenlik Duvarı kullanılır; üçü de altta paket filtreleme yapar.
  • Veritabanı portlarını (3306, 5432, 6379) asla internete açmayın. Uzaktan erişim gerekiyorsa SSH tüneli kullanın.
  • Fail2Ban, başarısız giriş denemesi yapan IP adreslerini otomatik engeller ve her sunucuda kurulu olmalıdır.

Sunucu güvenlik duvarı yapılandırması tek bir ilkeye dayanır: gelen trafiğin tamamını reddedin, yalnızca hizmet verdiğiniz portları açın. Bu yaklaşımı uyguladığınızda sunucunuzdaki bir servis yanlışlıkla dışa açık kalsa bile dışarıdan erişilemez. Ubuntu ve Debian’da bu işi UFW, AlmaLinux ve Rocky’de firewalld, Windows Server’da Windows Defender Güvenlik Duvarı yapar.

Bu rehber üç işletim sistemi için de çalışan kurallar veriyor, Fail2Ban ile otomatik engellemeyi anlatıyor ve kuralların gerçekten çalıştığını nasıl doğrulayacağınızı gösteriyor. Sunucunuzu yeni kurduysanız VDS ilk ayarlar sayfasındaki diğer güvenlik adımlarını da tamamlayın.

Güvenlik Duvarı Nasıl Çalışır?#

Güvenlik duvarı, sunucunuza gelen ve giden her ağ paketini önceden tanımlanmış kurallara göre değerlendirir. Karar üç değerden çıkar: kaynak adres, hedef port ve protokol. Modern güvenlik duvarları durum bilgisi tutar (stateful): sizin başlattığınız bir bağlantının cevap paketleri otomatik olarak kabul edilir, çünkü bunlar mevcut bir oturumun parçasıdır.

Bu ayrım önemlidir. Giden trafiğe izin verip gelen trafiği reddettiğinizde sunucunuz internete çıkabilir, paket indirebilir, güncelleme alabilir; ama dışarıdan kimse ona bağlantı başlatamaz. Sunucu güvenliğinin temeli budur.

BilgiGüvenlik duvarı, çalışan bir servisi durdurmaz; yalnızca ona ulaşılmasını engeller. Sunucuda gereksiz servisler çalışıyorsa önce onları kapatın. sudo ss -tulpn komutu hangi sürecin hangi portu dinlediğini tek bakışta gösterir.

Hangi Portlar Açılmalı?#

PortProtokolServisİnternete açık olmalı mı?
22TCPSSHEvet, tercihen IP kısıtlamalı
80 / 443TCPHTTP / HTTPSEvet, web sunucusu varsa
3389TCPRDPEvet ama mutlaka kısıtlı
25565TCPMinecraft JavaEvet, oyun sunucusu varsa
19132UDPMinecraft BedrockEvet, Bedrock sunucusu varsa
30120TCP + UDPFiveMEvet, FiveM sunucusu varsa
22003 / 22005 / 22126UDP / TCP / UDPMTA:SAEvet, MTA sunucusu varsa
3306TCPMySQL / MariaDBHayır, SSH tüneli kullanın
5432TCPPostgreSQLHayır
6379TCPRedisKesinlikle hayır
27017TCPMongoDBHayır
Yaygın servis portları ve dışa açıklık önerileri
UyarıVeritabanı ve önbellek portlarını internete açmayın. Kimlik doğrulaması olmayan bir Redis ya da MongoDB örneği, açıldıktan dakikalar sonra otomatik tarayıcılar tarafından bulunur ve verisi silinip fidye notu bırakılır. Bu, teorik bir risk değil sürekli yaşanan bir olaydır.

UFW ile Yapılandırma (Ubuntu, Debian)#

UFW, iptables üzerine kurulmuş sade bir arayüzdür ve günlük işlerin tamamını karşılar.

Temel kurulum#

# Kurulum (Ubuntu'da genellikle hazır gelir)
sudo apt update && sudo apt install -y ufw

# Varsayılan politikalar: gelen kapalı, giden açık
sudo ufw default deny incoming
sudo ufw default allow outgoing

# SSH'ı AÇMADAN etkinleştirmeyin!
sudo ufw allow 22/tcp comment 'SSH'

# Etkinleştir
sudo ufw enable

# Durumu kontrol et
sudo ufw status verbose
sudo ufw status numbered

Servis portlarını açma#

# Web sunucusu
sudo ufw allow 80/tcp comment 'HTTP'
sudo ufw allow 443/tcp comment 'HTTPS'
sudo ufw allow 'Nginx Full'          # uygulama profili ile

# Minecraft Java ve Bedrock
sudo ufw allow 25565/tcp comment 'Minecraft Java'
sudo ufw allow 19132/udp comment 'Minecraft Bedrock'

# Port aralığı
sudo ufw allow 27015:27020/udp comment 'Oyun port araligi'

# Belirli bir IP'ye özel izin (yönetim erişimi)
sudo ufw allow from 198.51.100.25 to any port 22 proto tcp comment 'Ofis SSH'

# Bir IP'yi tamamen engelle
sudo ufw deny from 192.0.2.66

Kural silme ve sıfırlama#

# Numaralı listeden sil
sudo ufw status numbered
sudo ufw delete 3

# Kuralı yazarak sil
sudo ufw delete allow 25565/tcp

# Her şeyi sıfırla (dikkatli kullanın)
sudo ufw reset

Minecraft sunucusu için port açmanın ayrıntılı anlatımını UFW ile Minecraft portu açma sayfasında bulabilirsiniz.

firewalld ile Yapılandırma (AlmaLinux, Rocky Linux)#

Red Hat tabanlı dağıtımlarda varsayılan araç firewalld’dir. Bölge (zone) kavramıyla çalışır ve kalıcı kurallar için --permanent parametresi gerekir.

# Durum ve aktif bölge
sudo firewall-cmd --state
sudo firewall-cmd --get-active-zones
sudo firewall-cmd --list-all

# Port açma (kalıcı)
sudo firewall-cmd --permanent --add-port=25565/tcp
sudo firewall-cmd --permanent --add-port=19132/udp
sudo firewall-cmd --permanent --add-service=https

# Değişiklikleri uygula
sudo firewall-cmd --reload

# Belirli bir kaynağa izin (zengin kural)
sudo firewall-cmd --permanent --add-rich-rule=\
'rule family="ipv4" source address="198.51.100.25" port port="22" protocol="tcp" accept'
sudo firewall-cmd --reload
Dikkatfirewalld’de --permanent olmadan verilen kurallar yalnızca çalışan yapılandırmaya uygulanır ve sunucu yeniden başladığında kaybolur. Kalıcı kural ekledikten sonra --reload komutunu çalıştırmayı unutmayın, aksi hâlde kural etkin olmaz.

iptables ve nftables ile İleri Kurallar#

UFW ve firewalld çoğu ihtiyacı karşılar. Doğrudan iptables yazmanız gereken durumlar oran sınırlama, bağlantı sayısı kısıtlama ve özel zincir mantığıdır.

# Mevcut kuralları listele
sudo iptables -L -n -v --line-numbers

# Aynı IP'den saniyede en fazla 10 yeni SSH bağlantısı
sudo iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW \
  -m limit --limit 10/minute --limit-burst 20 -j ACCEPT

# Tek IP'den eşzamanlı bağlantı sayısını sınırla
sudo iptables -A INPUT -p tcp --dport 25565 -m connlimit \
  --connlimit-above 5 --connlimit-mask 32 -j REJECT

# Geçersiz paketleri düşür
sudo iptables -A INPUT -m conntrack --ctstate INVALID -j DROP

# ICMP flood'u sınırla
sudo iptables -A INPUT -p icmp --icmp-type echo-request \
  -m limit --limit 1/second -j ACCEPT

iptables kuralları yeniden başlatmada kaybolur. Kalıcı hâle getirmek için:

sudo apt install -y iptables-persistent
sudo netfilter-persistent save
sudo netfilter-persistent reload

Yeni sistemlerde nftables tercih edilir; kural sözdizimi farklıdır ama mantık aynıdır. UFW ile birlikte doğrudan iptables kuralı yazarken dikkatli olun: iki araç aynı tabloları yönetir ve çakışan kurallar beklenmedik davranışa yol açar.

Windows Defender Güvenlik Duvarı#

Windows Server’da güvenlik duvarını PowerShell ile yönetmek, grafik arayüzden çok daha hızlıdır.

# Güvenlik duvarı profillerinin durumu
Get-NetFirewallProfile | Select-Object Name,Enabled,DefaultInboundAction

# Tüm profillerde gelen trafiği varsayılan olarak engelle
Set-NetFirewallProfile -Profile Domain,Public,Private `
  -Enabled True -DefaultInboundAction Block -DefaultOutboundAction Allow

# Port açma
New-NetFirewallRule -DisplayName "Minecraft Java" -Direction Inbound `
  -Protocol TCP -LocalPort 25565 -Action Allow

New-NetFirewallRule -DisplayName "Minecraft Bedrock" -Direction Inbound `
  -Protocol UDP -LocalPort 19132 -Action Allow

# Belirli IP'ye özel RDP izni
New-NetFirewallRule -DisplayName "RDP-Ofis" -Direction Inbound `
  -Protocol TCP -LocalPort 3389 -RemoteAddress 198.51.100.25 -Action Allow

# Kuralları listele ve sil
Get-NetFirewallRule -DisplayName "*Minecraft*" | Select-Object DisplayName,Enabled,Direction
Remove-NetFirewallRule -DisplayName "Minecraft Java"

Grafik arayüzü tercih ederseniz Başlat menüsüne wf.msc yazın; Gelen Kurallar bölümünden Yeni Kural sihirbazıyla aynı işi yapabilirsiniz. Adım adım ekran anlatımı Windows Güvenlik Duvarında port açma sayfasında. RDP erişimini sıkılaştırmak için Uzak Masaüstü rehberindeki güvenlik bölümüne bakın.

Fail2Ban ile Otomatik Engelleme#

Güvenlik duvarı statik kurallar uygular; Fail2Ban ise davranışa göre dinamik kural ekler. Log dosyalarını izler, belirlenen sürede çok sayıda başarısız deneme yapan IP’yi geçici olarak engeller.

sudo apt install -y fail2ban
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local
[DEFAULT]
bantime  = 1h
findtime = 10m
maxretry = 5
ignoreip = 127.0.0.1/8 198.51.100.25

[sshd]
enabled = true
port    = 2222
logpath = %(sshd_log)s
maxretry = 4

[nginx-http-auth]
enabled = true

[nginx-limit-req]
enabled = true
maxretry = 10
findtime = 60
sudo systemctl enable --now fail2ban

# Durum ve engellenen IP listesi
sudo fail2ban-client status
sudo fail2ban-client status sshd

# Elle engelleme ve engel kaldırma
sudo fail2ban-client set sshd banip 192.0.2.66
sudo fail2ban-client set sshd unbanip 192.0.2.66
Kaynaklar ve araçlar
  • Fail2Ban resmî deposuAçık kaynak LinuxKaynak kod / belgeÜcretsiz
    İndir
  • PuTTY (kural yazmak için SSH istemcisi) Windows.msiÜcretsiz
    İndir

Fail2Ban’ı dağıtımınızın paket deposundan kurmanız yeterlidir; kaynak kod bağlantısı belge ve kural örnekleri içindir.

Kuralların Çalıştığını Doğrulama#

Kural yazmak yetmez; beklediğiniz gibi davrandığını ölçün. Üç ayrı kontrol yapın:

# 1) Sunucu içinde: hangi servis hangi portu dinliyor?
sudo ss -tulpn

# 2) Güvenlik duvarı ne diyor?
sudo ufw status numbered
sudo iptables -L INPUT -n -v --line-numbers

# 3) Dışarıdan gerçekten erişilebiliyor mu?
# (başka bir makineden çalıştırın)
nc -zv 203.0.113.10 25565
nmap -Pn -p 22,80,443,25565 203.0.113.10
# Windows'tan dışarıdan test
Test-NetConnection 203.0.113.10 -Port 25565

Servis dinliyor ama dışarıdan erişilemiyorsa sorun güvenlik duvarındadır. Servis zaten dinlemiyorsa güvenlik duvarını kurcalamanın anlamı yoktur; önce uygulamayı çalıştırın. Oyun sunucularında bu ayrımı yapmak, Connection Refused hatasının kaynağını bulmanın en hızlı yoludur.

Oran Sınırlama ve Kötüye Kullanımı Azaltma#

Güvenlik duvarı hacimsel bir DDoS saldırısını durduramaz ama uygulama seviyesindeki kötüye kullanımı ciddi biçimde azaltabilir:

# UFW'nin yerleşik oran sınırlaması (30 saniyede 6 bağlantı üstünü engeller)
sudo ufw limit 22/tcp comment 'SSH oran sinirli'

# Belirli bir ülkeye ya da ağa toplu engel (örnek blok)
sudo ufw deny from 192.0.2.0/24

# Aynı IP'den çok sayıda eşzamanlı oyun bağlantısını sınırla
sudo iptables -A INPUT -p tcp --dport 25565 -m connlimit \
  --connlimit-above 3 --connlimit-mask 32 -j REJECT

Gerçek koruma sağlayıcının ağ katmanındaki filtrelemesidir. Saldırı türleri, filtreleme teknolojileri ve saldırı anında yapılacaklar için DDoS saldırısı nedir ve nasıl korunulur sayfasına, oyun sunucularına özel önlemler için Minecraft DDoS koruması sayfasına bakın.

Sık Yapılan Hatalar#

SSH portunu açmadan güvenlik duvarını etkinleştirmek#

En yaygın hata budur ve sonucu anında bağlantı kaybıdır. UFW bu durumda uyarı gösterir; uyarıyı okumadan onaylamayın. Kural yazarken her zaman ikinci bir oturum açık tutun.

“Şimdilik kapatayım, sonra açarım” demek#

Bir sorunu ayıklarken güvenlik duvarını kapatmak yaygın bir alışkanlıktır ama açmayı unutmak da öyle. Kapatmak yerine geçici bir izin kuralı ekleyin ve işiniz bitince silin.

Tüm trafiğe açık kural yazmak#

ufw allow from any to any gibi geniş kurallar güvenlik duvarını anlamsız kılar. Kuralı her zaman en dar kapsamda yazın: belirli port, belirli protokol, mümkünse belirli kaynak.

Kuralları belgelememek#

Altı ay sonra 7788 portunun neden açık olduğunu hatırlamazsınız. UFW’de comment parametresini, firewalld’de zengin kural açıklamalarını kullanın.

IPv6’yı unutmak#

Sunucunuzun IPv6 adresi varsa kurallar iki adres ailesi için de geçerli olmalı. UFW bunu varsayılan olarak yapar; doğrudan iptables kullanıyorsanız ip6tables tarafını da yapılandırın.

Örnek Senaryo: Oyun Sunucusu İçin Tam Yapılandırma#

#!/bin/bash
# Minecraft + web paneli çalışan bir sunucu için temel güvenlik duvarı

sudo ufw --force reset
sudo ufw default deny incoming
sudo ufw default allow outgoing

# Yönetim erişimi: yalnızca kendi IP'nizden
sudo ufw allow from 198.51.100.25 to any port 2222 proto tcp comment 'SSH yonetim'

# Oyun trafiği: herkese açık
sudo ufw allow 25565/tcp comment 'Minecraft Java'
sudo ufw allow 19132/udp comment 'Minecraft Bedrock'

# Web paneli: HTTPS üzerinden
sudo ufw allow 443/tcp comment 'Panel HTTPS'

# Oran sınırlaması
sudo ufw limit 2222/tcp

sudo ufw --force enable
sudo ufw status verbose
İpucuBu betiği çalıştırmadan önce 198.51.100.25 yerine kendi IP adresinizi yazdığınızdan emin olun. Kendi IP’nizi curl -4 ifconfig.me komutuyla öğrenebilirsiniz. Sabit IP’niz yoksa SSH kuralını IP kısıtlamasız bırakıp oran sınırlaması ve Fail2Ban ile koruyun.

Özetle#

Sunucu güvenlik duvarının doğru yapılandırması üç adımdan oluşur: gelen trafiği varsayılan olarak reddedin, yalnızca hizmet verdiğiniz portları açın ve yönetim portlarını mümkün olduğunca dar kapsamda tanımlayın. Ubuntu ve Debian’da UFW, AlmaLinux ve Rocky’de firewalld, Windows Server’da PowerShell komutları bu işi hızlıca yapar.

Veritabanı ve önbellek portlarını asla internete açmayın; uzaktan erişim gerekiyorsa SSH tüneli kullanın. Fail2Ban’ı her sunucuya kurun, kuralları yazdıktan sonra hem içeriden hem dışarıdan test edin ve her kurala neden eklendiğini açıklayan bir yorum bırakın. Sunucunun geri kalan sıkılaştırması için VDS ilk ayarlar kontrol listesini, saldırı senaryoları için DDoS korunma rehberini tamamlayın.

Sıkça Sorulan Sorular#

Sunucuda hangi portlar açık olmalı?

Yalnızca hizmet verdiğiniz portlar: SSH (22 veya değiştirdiğiniz port), web sunucusu için 80 ve 443, oyun sunucunuz için ilgili port. Veritabanı, önbellek ve yönetim panellerinin portları internete kapalı kalmalı; bunlara SSH tüneli üzerinden erişin. Açık her port bir saldırı yüzeyidir.

UFW ile port nasıl açılır?

sudo ufw allow 25565/tcp komutu yeterlidir. Kuralı belirli bir IP ile sınırlamak için sudo ufw allow from 198.51.100.25 to any port 22 proto tcp biçimini kullanın. Kuralları uyguladıktan sonra sudo ufw status numbered ile listeyi doğrulayın; silmek için sudo ufw delete NUMARA.

UFW mi iptables mı kullanmalıyım?

UFW zaten iptables/nftables üzerine kurulmuş bir arayüzdür; günlük işlerin tamamı UFW ile yapılabilir ve hata yapma olasılığı çok daha düşüktür. Doğrudan iptables yazmak yalnızca oran sınırlama, NAT veya karmaşık zincir mantığı gerektiğinde anlamlıdır.

Fail2Ban ne yapar, gerekli mi?

Log dosyalarını izleyip belirli sürede çok sayıda başarısız giriş yapan IP adreslerini geçici olarak engeller. SSH anahtar tabanlı girişe geçmiş olsanız bile kurmaya değer: tarama trafiğini azaltır, log dosyalarını temiz tutar ve web uygulaması giriş sayfalarını da koruyabilir.

Güvenlik duvarı kuralı yazdım ama bağlantım koptu, ne yapmalıyım?

Sağlayıcının panelindeki sanal konsoldan sunucuya erişip kuralı geri alın. Bu durumu önlemek için kural yazmadan önce ikinci bir SSH oturumu açık tutun ve UFW’yi etkinleştirmeden önce mutlaka SSH portuna izin verin.

Güvenlik duvarı DDoS saldırısını engeller mi?

Sunucu içindeki güvenlik duvarı, uygulama seviyesindeki bazı kötüye kullanımları sınırlayabilir ama hacimsel bir saldırıyı durduramaz. Trafik zaten sunucunuzun ağ bağlantısına ulaşmıştır. Gerçek koruma sağlayıcının ağında yapılan filtrelemedir; ayrıntılar DDoS korunma sayfasında.

Windows Server’da port nasıl açılır?

PowerShell’de tek satır yeterlidir: New-NetFirewallRule -DisplayName "Ad" -Direction Inbound -Protocol TCP -LocalPort 25565 -Action Allow. Grafik arayüzden yapmak isterseniz wf.msc ile Gelişmiş Güvenlik Duvarı’nı açıp Gelen Kurallar bölümünden yeni kural oluşturun.

Kuralların çalıştığını nasıl doğrularım?

Sunucu içinden sudo ss -tulpn ile hangi servisin hangi portu dinlediğini görün. Dışarıdan erişimi test etmek için başka bir makineden nc -zv sunucu-ip 25565 veya Windows’ta Test-NetConnection sunucu-ip -Port 25565 komutunu çalıştırın. İki test farklı sonuç veriyorsa sorun güvenlik duvarındadır.

VDS ve Dedicated Sunucu — Tüm Rehberler#

  1. VDS Nedir ve Ne İşe Yarar?
  2. VDS ve VPS Arasındaki Farklar
  3. VDS mi Dedicated Sunucu mu Seçmelisiniz?
  4. VDS Aldıktan Sonra Yapılması Gereken İlk Ayarlar
  5. Windows Sunucuya Uzak Masaüstü (RDP) Bağlantısı
  6. SSH ile Sunucuya Bağlanma Rehberi
  7. Ubuntu Server Kurulumu ve İlk Yapılandırma
  8. Sunucu Güvenlik Duvarı Yapılandırması: UFW, iptables ve Windows Firewall

Bu rehber Batihost teknik ekibi tarafından hazırlanmış ve tarihinde güncellenmiştir. Eksik veya hatalı bulduğunuz bir bilgi varsa bize bildirin.

Başa dön