Foruma hoş geldin 👋, Ziyaretçi

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

iptables ile Ping (ICMP) İsteklerini Engelleme veya Sınırlama ve Ping of Death Saldırısına Karşı Koruma

websterx

Üye
Katılım
14 Mart 2026
Mesajlar
20
Merhaba arkadaşlar, bugün sizlere sunucu güvenliğinin temel taşlarından biri olan iptables ile ICMP (ping) trafiğini nasıl yöneteceğinizi anlatacağım. Ping, ağ sorunlarını gidermek için vazgeçilmez bir araç olsa da, kontrolsüz bırakıldığında basit bir rahatsızlık kaynağından, ciddi bir "Ping of Death" saldırısına kadar risk oluşturabilir. Bu rehberde, ping'i tamamen engellemek, sınırlamak ve olası kötü niyetli kullanımlara karşı nasıl korunacağınızı adım adım göstereceğim.

🔍 Ping (ICMP) Nedir ve Neden Kontrol Edilmeli?

Ping, bir ağdaki cihazın erişilebilirliğini ve yanıt süresini test etmek için kullanılan bir protokoldür (ICMP). Ancak, sürekli ve yüksek hacimli ping istekleri (ICMP flood), sunucu kaynaklarınızı tüketerek hizmet dışı bırakma (DDoS) girişimlerine yol açabilir. Daha tehlikelisi, tarihte "Ping of Death" olarak bilinen, boyutu manipüle edilmiş paketlerle sistemin çökmesine neden olan saldırı türüdür. Bu nedenle, özellikle üretim sunucularında ICMP trafiğini filtrelemek güvenlik best practice'lerinden biridir.

⚙️ Adım 1: Mevcut Kuralları Kontrol Etme

İşlemlere başlamadan önce, mevcut iptables kurallarınızı gözden geçirmeniz her zaman faydalıdır. Hangi zincirlerde ne gibi kurallar olduğunu görmek için aşağıdaki komutu kullanabilirsiniz.

Bash:
sudo iptables -L -n -v

🛡️ Adım 2: Ping (ICMP Echo Request) İsteklerini Tamamen Engelleme

Eğer sunucunuzun ping'e yanıt vermesini istemiyorsanız (ki bu genelde önerilir), gelen ICMP echo request paketlerini DROP edebilirsiniz. Bu kuralı, genellikle trafiğin ilk karşılandığı `INPUT` zincirine ekliyoruz.

Bash:
sudo iptables -A INPUT -p icmp --icmp-type echo-request -j DROP

Bu kuraldan sonra, dışarıdan sunucunuza ping atıldığında "Request timed out" benzeri bir hata alınacak ve sunucunuz yanıt vermeyecektir.

⚠️ Dikkat Edilmesi Gerekenler

Ping'i tamamen engellemeden önce, ağ izleme veya uptime kontrolü yapan bir servis (örneğin, UptimeRobot) kullanıyorsanız, bu servisin IP adreslerine izin vermek için bir kural eklemeniz gerekebilir. Aksi takdirde sunucunuz "erişilemez" olarak işaretlenebilir.

📊 Adım 3: Ping İsteklerini Sınırlandırma (Rate Limiting)

Ping'i tamamen kapatmak yerine, daha esnek ve güvenli bir yöntem olan sınırlandırmayı tercih edebilirsiniz. Bu sayede normal kullanım için izin verirken, flood saldırılarını engelleyebilirsiniz. `limit` ve `limit-burst` modüllerini kullanacağız.

Bash:
sudo iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s --limit-burst 5 -j ACCEPT
sudo iptables -A INPUT -p icmp --icmp-type echo-request -j DROP

Bu kurallar ne yapar?
İlk kural: Saniyede maksimum 1 ping paketine izin verir. Başlangıç patlaması (burst) limiti ise 5'tir. Yani anlık olarak ilk 5 paket kabul edilir, ardından saniyede 1'e düşer.
İkinci kural: Limitin üzerindeki TÜM ping paketlerini düşürür.

Bu, saldırganlar için çok etkili bir hafifletme yöntemidir.

🛠️ Adım 4: Ping of Death (PoD) Saldırısına Karşı Koruma

Modern işletim sistemleri ve çekirdekler, bu eski saldırıya karşı genelde dayanıklıdır. Yine de, iptables ile ek bir önlem almak isterseniz, paket boyutunu kontrol eden bir kural ekleyebilirsiniz. Ping of Death, normalden çok büyük (fragmanlara ayrılmış) ICMP paketleri göndererek çalışırdı. Aşağıdaki kural, 1024 bayttan büyük ICMP paketlerini engeller.

Bash:
sudo iptables -A INPUT -p icmp --icmp-type echo-request -m length --length :1024 -j ACCEPT
sudo iptables -A INPUT -p icmp --icmp-type echo-request -j DROP

Ancak unutmayın, en iyi koruma çekirdek parametrelerini güncellemektir. /etc/sysctl.conf dosyasına aşağıdaki satırları ekleyip `sysctl -p` komutunu çalıştırarak daha kapsamlı koruma sağlayabilirsiniz.

Bash:
# ICMP saldırı koruması
net.ipv4.icmp_echo_ignore_all = 0 # Eğer 1 yaparsanız TÜM pingleri çekirdek seviyesinde engellersiniz.
net.ipv4.icmp_echo_ignore_broadcasts = 1 # Broadcast pingleri engeller (SMURF saldırısı koruması)
net.ipv4.icmp_ignore_bogus_error_responses = 1 # Sahte hata yanıtlarını yok sayar

💾 Adım 5: Kuralları Kalıcı Yapma

iptables kuralları geçicidir, sunucu yeniden başlatıldığında silinir. Debian/Ubuntu tabanlı sistemlerde `iptables-persistent` paketi ile, CentOS/RHEL tabanlı sistemlerde ise servisi kaydederek kurallarınızı kalıcı hale getirebilirsiniz.

Debian/Ubuntu için:
Bash:
sudo apt-get install iptables-persistent -y
# Kurulum sırasında mevcut kuralları kaydetmek isteyip istemediğiniz sorulur.
# Sonradan kaydetmek için:
sudo netfilter-persistent save

🔧 Son Test ve Kontrol

Tüm kuralları ekledikten sonra, lütfen kendi sunucunuzdan ve mümkünse farklı bir IP adresinden (örneğin, VPN kullanarak) ping testi yapın. Beklediğiniz gibi çalıştığından emin olun. Kurallarınızı tekrar listelemek için `sudo iptables -L INPUT -n -v` komutunu kullanabilirsiniz.

Umarım bu rehber, sunucu güvenliğinizi bir adım öteye taşımanıza yardımcı olur. Ben genelde kritik sunucularda ping'i tamamen kapatıyor, ancak izleme yapılan sunucularda sıkı bir rate limiting uyguluyorum. Siz bu konfigürasyonu kendi sunucularınızda nasıl yapıyorsunuz? Farklı bir yönteminiz veya eklemek istediğiniz bir ipucu var mı? Aşağıya yorumlarınızı bekliyorum. Sorularınız için çekinmeden yazın, yardımcı olmaya çalışayım.
 

Tema özelleştirme sistemi

Bu menüden forum temasının bazı alanlarını kendinize özel olarak düzenleye bilirsiniz.

Zevkine göre renk kombinasyonunu belirle

Tam ekran yada dar ekran

Temanızın gövde büyüklüğünü sevkiniz, ihtiyacınıza göre dar yada geniş olarak kulana bilirsiniz.

Geri