Yıllık alımda %20 indirim — Hosting & VDS
Metin2 Sunucusu DDoS Saldırılarına Karşı Nasıl Korunur?
Güvenlik

Metin2 Sunucusu DDoS Saldırılarına Karşı Nasıl Korunur?

M
Mezuhost Güvenlik Ekibi
27 Ağustos 2026 10 dakika okuma 7 görüntülenme

Metin2 sunucunuzu DDoS saldırılarına karşı koruma adımları: saldırı teşhisi, çekirdek ayarları, bağlantı sınırlama, fail2ban ve IP sızıntısını kapatma.

DDoS korumasının büyük kısmı ağ seviyesinde, yani trafiğin sunucunuza ulaşmasından önce yapılır. Ama sunucunun kendi yapılandırması da saldırı karşısında ne kadar dayandığını doğrudan belirler. Aynı saldırı, ayarları sıkılaştırılmış bir sunucuda gecikme yaratırken, varsayılan ayarlarla çalışan bir sunucuyu tamamen düşürebilir.

Bu rehber tamamen sunucunun üzerinde yapılan işlere odaklanıyor: saldırıyı komut satırından teşhis etmek, çekirdek parametrelerini ayarlamak, bağlantı sınırı koymak ve gerçek IP sızıntısını kapatmak.

Neyi kapsamıyor: saldırı türleri, filtreleme mimarisi ve koruma kapasitesi gibi konular DDoS korumalı Metin2 sunucu sayfamızda; saldırının nasıl işlediği ise DDoS saldırıları nedir yazımızda anlatılıyor.

Önce Teşhis: Gerçekten Saldırı Altında mısınız?

Sunucu yavaşladığında bunun saldırı mı yoksa kendi yükünüz mü olduğunu ayırt etmeden yapılan her müdahale zaman kaybıdır. Aşağıdaki komutlar bu ayrımı birkaç saniyede yapmanızı sağlar.

Bağlantı sayısını IP'ye göre dökün

netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -rn | head -20

Çıktının başında tek bir IP'den yüzlerce bağlantı görüyorsanız hedefli bir saldırı var demektir. Normal bir Metin2 sunucusunda bir oyuncunun birkaç bağlantısı olur, yüzlercesi olmaz.

Toplam bağlantı durumuna bakın

ss -s

Burada synrecv sayısının yüksek olması SYN flood işaretidir: bağlantılar açılıyor ama tamamlanmıyor.

Ham trafiği izleyin

tcpdump -n -i any -c 200 port 13000

Oyun portuna gelen paketleri anlık görürsünüz. Aynı kaynaktan sürekli aynı boyutta paket akıyorsa bu oyuncu trafiği değildir.

Kaynak kullanımıyla karşılaştırın

top -bn1 | head -15

En ayırt edici gösterge şudur: işlemci ve bellek normalken sunucuya erişilemiyorsa sorun sunucuda değil, hattadır. Bu durumda sunucuyu yeniden başlatmak hiçbir işe yaramaz.

Çekirdek Parametrelerini Sıkılaştırın

Linux çekirdeğinin varsayılan ağ ayarları genel kullanım için dengelidir, saldırı altındaki bir oyun sunucusu için değil. Aşağıdaki değerler bağlantı taşkınlarına karşı dayanıklılığı belirgin biçimde artırır.

nano /etc/sysctl.conf
# SYN flood dayanikliligi
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_abort_on_overflow = 1

# Yarim acik baglantilar daha hizli temizlensin
net.ipv4.tcp_fin_timeout = 15
net.ipv4.tcp_keepalive_time = 300

# Baglanti takip tablosunu buyut (UDP flood sirasinda dolar)
net.netfilter.nf_conntrack_max = 262144
net.netfilter.nf_conntrack_udp_timeout = 30
net.netfilter.nf_conntrack_udp_timeout_stream = 60

# Sahte kaynak adresli paketleri reddet
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.all.accept_source_route = 0

# Dinleme kuyrugu
net.core.somaxconn = 4096
net.core.netdev_max_backlog = 16384

Ayarları uygulayın:

sysctl -p

Dikkat: nf_conntrack_max değerini belleğinize göre seçin. Her bağlantı kaydı yaklaşık 300 bayt yer kaplar; 262144 kayıt için ~80 MB gerekir. Belleği düşük bir sunucuda aşırı yüksek değer vermek, saldırıdan önce sunucuyu siz düşürürsünüz.

Bağlantı Sınırı Koyun

Tek bir IP'nin açabileceği eş zamanlı bağlantıyı sınırlamak, düşük hacimli ama yoğun bağlantılı saldırıları sunucu tarafında büyük ölçüde etkisiz kılar.

IP başına eş zamanlı bağlantı sınırı

iptables -A INPUT -p tcp --dport 13000 -m connlimit --connlimit-above 20 -j REJECT

20 rakamı sunucunuza göre ayarlanmalı. Aynı evden oynayan kardeşler ya da internet kafeler aynı IP'den gelir; sınırı çok düşük tutarsanız gerçek oyuncuları engellersiniz.

Yeni bağlantı hızını sınırlayın

iptables -A INPUT -p tcp --dport 13000 --syn -m hashlimit \
  --hashlimit-above 15/sec --hashlimit-burst 30 \
  --hashlimit-mode srcip --hashlimit-name oyun_syn -j DROP

Bu kural, saniyede 15'ten fazla yeni bağlantı açmaya çalışan kaynağı engeller. Normal bir oyuncu bu hıza asla çıkmaz.

Art arda bağlanmaya çalışanı geçici engelleyin

iptables -A INPUT -p tcp --dport 13000 --syn -m recent --name oyuncu --set
iptables -A INPUT -p tcp --dport 13000 --syn -m recent --name oyuncu \
  --update --seconds 10 --hitcount 20 -j DROP

Geçersiz paketleri baştan atın

iptables -A INPUT -m conntrack --ctstate INVALID -j DROP
iptables -A INPUT -p tcp ! --syn -m conntrack --ctstate NEW -j DROP

Kuralları kalıcı yapmayı unutmayın; aksi halde sunucu yeniden başladığında hepsi kaybolur:

iptables-save > /etc/iptables/rules.v4

UDP Tarafı: Oyun Trafiğini Engellemeden Sınırlamak

Metin2 oyun trafiğinin önemli kısmı UDP üzerinden akar ve saniyede çok sayıda küçük paket gönderir. Bu, genel amaçlı filtreler için saldırıya benzer. Bu yüzden UDP tarafında agresif kural yazmak, saldırıyı durdururken oyuncuları da dışarıda bırakma riski taşır.

Güvenli yaklaşım, mutlak bir sınır koymak yerine kaynak başına makul bir tavan belirlemektir:

iptables -A INPUT -p udp --dport 13000:14000 -m hashlimit \
  --hashlimit-above 200/sec --hashlimit-burst 400 \
  --hashlimit-mode srcip --hashlimit-name oyun_udp -j DROP

Bu değerleri canlı sunucuda deneme yapmadan uygulamayın. Önce kuralı -j LOG ile yazıp bir süre kayıt tutun; gerçek oyuncularınızın hangi hızda paket gönderdiğini görmeden sınır belirlemek, bir akşam oyuncularınızın oyuna girememesiyle sonuçlanır.

Auth Sunucusunu Bot Girişlerinden Koruyun

Hacim tabanlı olmayan ama en yorucu saldırılardan biri, sahte hesaplarla toplu giriş denemesidir. Bu, auth sunucusunu ve veritabanını hacim saldırısından daha çok yorar.

pkg install py39-fail2ban    # FreeBSD
apt install fail2ban          # Debian / Ubuntu

Metin2 auth kayıtları için basit bir filtre tanımlayın:

nano /etc/fail2ban/filter.d/metin2-auth.conf
[Definition]
failregex = .*LOGIN_FAILURE.*<HOST>.*
ignoreregex =
nano /etc/fail2ban/jail.local
[metin2-auth]
enabled  = true
filter   = metin2-auth
logpath  = /usr/home/channel1/auth/syserr
maxretry = 10
findtime = 120
bantime  = 3600
action   = iptables[name=metin2, port=11002, protocol=tcp]

Kayıt dosyanızın yolu ve hata satırının biçimi kullandığınız server files sürümüne göre değişir. Filtreyi yazmadan önce syserr içindeki gerçek başarısız giriş satırını okuyun; uydurma bir kalıp hiçbir şeyi engellemez.

Gerçek IP Sızıntısını Kapatın

Bu, teknik olarak en basit ama etkisi en büyük maddedir. Ağ seviyesindeki filtreleme yalnızca duyurulan adrese uygulanır. Sunucunuzun gerçek adresi bir yerde açıkta kalmışsa, saldırgan korumayı tamamen atlar.

En yaygın sızıntı kaynakları:

  • Eski DNS kayıtları. Alan adınızın geçmiş A kayıtları arşiv sitelerinde durur.
  • Test alt alan adları. test., dev., panel. gibi adresler çoğu zaman korumasız gerçek IP'yi gösterir.
  • Sunucudan giden e-postalar. Kayıt onay maillerinin başlıklarında sunucu IP'si görünebilir.
  • Hata sayfaları. Bazı yapılandırmalarda sunucu adresi hata çıktısında yazılır.

Sunucudan giden bağlantının hangi adresle göründüğünü kontrol edin:

curl -s ifconfig.me

Bu adres, oyunculara duyurduğunuz korumalı adresten farklı olmalı ve hiçbir yerde yayınlanmamalıdır.

Saldırı Sırasında Kanıt Toplayın

Saldırı devam ederken toplanan kayıt, bir sonraki saldırıda kural setini sizin sunucunuza göre ayarlamak için kullanılır. Sonradan toplanamaz.

tcpdump -n -i any -w /root/saldiri_$(date +%H%M).pcap -c 5000

5000 paket yakalayıp dosyaya yazar. Bu dosyayı sağlayıcınızla paylaşabilirsiniz.

netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -rn > /root/ip_dagilimi.txt

İşe Yaramayan, Sık Denenen Şeyler

  • Sunucuyu yeniden başlatmak. Saldırı hatta olduğu için yeniden başlatma yalnızca kesintiyi uzatır.
  • Panikle IP değiştirmek. Saldırgan yeni adresi kısa sürede bulur; üstelik bütün oyuncularınızın istemci güncellemesi gerekir ve ciddi oyuncu kaybı yaşarsınız.
  • Oyun portunu saldırı sırasında değiştirmek. Aynı sorun: oyuncular giremez, saldırgan yeni portu tarar.
  • Tüm ülkeleri engellemek. Saldırı çoğunlukla dağıtık kaynaklardan gelir; ülke engelleme gerçek oyuncuları da keser.
  • Güvenlik duvarını tamamen kapatmak. "Belki filtre engelliyordur" diye yapılıyor, durumu kötüleştiriyor.

Sunucu Tarafı Ayarların Sınırı

Yukarıdaki her şey, sunucunuza ulaşan trafiği yönetir. Saldırı hattınızın kapasitesini aşacak hacimde geliyorsa paketler sunucunuza varmadan hattı doldurur; o noktada hiçbir iptables kuralı işe yaramaz, çünkü kural işletilecek paket sunucuya hiç ulaşmaz.

Bu yüzden sunucu tarafı sertleştirme, ağ seviyesindeki filtrelemenin alternatifi değil tamamlayıcısıdır. İkisi birlikte çalışır: ağ filtreleme hacmi keser, sunucu ayarları kalan trafiğin sunucuyu yormasını engeller.

Kontrol Listesi

  • Bağlantı dağılımını IP'ye göre dökebiliyor musunuz?
  • sysctl ayarları uygulandı ve kalıcı mı?
  • IP başına bağlantı sınırı var mı, sınır gerçek oyuncuyu engellemiyor mu?
  • UDP kuralı önce kayıt modunda test edildi mi?
  • Auth kayıtlarına göre yazılmış bir fail2ban filtresi çalışıyor mu?
  • Gerçek IP adresiniz hiçbir yerde görünmüyor mu?
  • Kurallar yeniden başlatmadan sonra da duruyor mu?

Özet

Sunucu tarafı sertleştirme, saldırının etkisini azaltan ucuz ve kalıcı bir yatırımdır. Hiçbiri lisans ya da ek donanım gerektirmiyor; hepsi mevcut sunucunuzda birkaç saatlik işle yapılıyor.

Ağ seviyesindeki filtreleme tarafını DDoS korumalı Metin2 sunucu sayfamızda anlattık. Port ve güvenlik duvarı temelleri için Metin2 sunucu portları ve güvenlik duvarı, dosya tarafındaki açıklar için files güvenlik denetimi rehberlerimize bakabilirsiniz.

metin2 ddos güvenlik iptables sunucu yönetimi
Paylaş
M

Mezuhost Güvenlik Ekibi

Mezuhost — Teknik İçerik Ekibi

İletişim

Mezuhost ile Hizmetlerimizi Keşfedin

DDoS korumalı sunucular, yüksek performanslı VDS ve hosting çözümleri.

Güvenilir İş Ortaklarımız & Altyapı Sağlayıcılarımız

Stormwall
MikroTik
Juniper
Datacasa
Cloudflare
Dell
Ryzen
Arbor
Stormwall
MikroTik
Juniper
Datacasa
Cloudflare
Dell
Ryzen
Arbor
Stormwall
MikroTik
Juniper
Datacasa
Cloudflare
Dell
Ryzen
Arbor