Kötü Amaçlı IP Engelleme Neden İlk Adım Olmalı?
Her gün web sunucularına binlerce şüpheli istek ulaşır; port taramalarından wp-login.php giriş denemelerine, SSH ve MySQL üzerindeki brute-force saldırılarına kadar. Sunucu loglarınızı incelediyseniz, muhtemelen tekrarlayan bir desen görmüşsünüzdür: belirli bir IP, kısa aralıklarla onlarca veya yüzlerce istek gönderir. Böyle bir durumda, IP engelleme, saldırganın erişimini kesmenin en hızlı ve en etkili yoludur.
Bu makalede üç engelleme seviyesini ele alıyoruz: kontrol paneli seviyesi (paylaşımlı kullanıcılar için uygun), .htaccess dosyası seviyesi (Apache üzerindeki siteler için) ve sunucu güvenlik duvarı seviyesi (VPS veya dedicated sunucu üzerinde tam kontrole sahip olanlar için). Her yöntemin kendi avantajları ve sınırlamaları vardır ve doğru seçim, hosting türünüze ve erişim seviyenize bağlıdır.
Birinci Seviye: Kontrol Panelinde IP Engelleme
Paylaşımlı hosting kullanıyorsanız, bakmanız gereken ilk yer kontrol panelidir. Her iki yaygın kontrol paneli (cPanel ve DirectAdmin) bu iş için yerleşik araçlara sahiptir.
cPanel'de Engelleme
cPanel'de, Security bölümünden IP Blocker aracını bulun. Bu araç çok basit çalışır:
IP Blockerbölümüne girin.- "IP Address or Domain" alanına ilgili adresi girin.
185.220.101.34gibi tam bir IP veya185.220.101.gibi bir aralık girebilirsiniz. - Add düğmesine tıklayın.
Önemli not: Yalnızca bir IP girerseniz, tam olarak o IP engellenir. İlk üç okteti girerseniz (ör. 185.220.101.), 254 IP'yi içerebilen tüm C sınıfı alt ağı engellenir. Bu, kötü amaçlı bir aralığı tamamen engellemek için kullanışlıdır, ancak aynı aralıkta olabilecek normal kullanıcıları da kaybetmemeye dikkat edin.
DirectAdmin'de Engelleme
DirectAdmin'de yol biraz farklıdır:
- Ana menüden Extra Features bölümüne gidin.
- IP Blocking seçeneğini seçin.
- IP veya aralığı girin ve Add düğmesine tıklayın.
DirectAdmin, engellenen kullanıcılar için özel bir hata mesajı tanımlamanıza da olanak tanır. Bu mesaj genellikle 403 Forbidden olarak görüntülenir.
İkinci Seviye: htaccess ile IP Engelleme
Siteniz Apache veya LiteSpeed üzerinde çalışıyorsa, .htaccess dosyası erişim kontrolü için güçlü bir araçtır. Bu yöntem kontrol panelinden bağımsız çalışır ve root erişimine sahip sanal sunucularda (VPS) çalışan siteler için de kullanışlıdır.
Temel Sözdizimi
Belirli bir IP'yi engellemek için, sitenin kök dizinindeki .htaccess dosyasının sonuna aşağıdaki kodu ekleyin:
<RequireAll>
Require all granted
Require not ip 185.220.101.34
</RequireAll>
Birden fazla IP'yi engellemek istiyorsanız, birden fazla Require not ip satırı ekleyebilirsiniz:
<RequireAll>
Require all granted
Require not ip 185.220.101.34
Require not ip 203.0.113.7
Require not ip 198.51.100.0/24
</RequireAll>
198.51.100.0/24 ifadesinin tam bir aralığı engellediğini unutmayın. Bu sözdizimi Apache 2.4 ve üzeri sürümlerde desteklenir.
Eski Yöntem (Apache 2.2 ile Uyumlu)
Sunucunuz hâlâ Apache 2.2 kullanıyorsa (önerilmez), sözdizimi farklıdır:
Order Allow,Deny
Allow from all
Deny from 185.220.101.34
Deny from 203.0.113.7
Bu yöntem Apache 2.4'te de çalışır ancak kullanımdan kaldırılmıştır. Mümkünse yeni sözdizimini kullanın.
User-Agent'e Göre Engelleme
Bazen saldırgan, belirli bir User-Agent'e sahip özel bir araç kullanır. Bu araçları da engelleyebilirsiniz:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} (nikto|sqlmap|masscan) [NC]
RewriteRule .* - [F,L]
</IfModule>
Bu kod, nikto ve sqlmap gibi bilinen güvenlik tarama araçlarını engeller. Ancak dikkatli olun: bazı arama motorlarının da kendi User-Agent'leri vardır ve yanlışlıkla onları engellememelisiniz.
.htaccess dosyasına engelleme kodu koymak yalnızca o alan adı için geçerlidir. Bir hosting hesabında birden fazla alan adınız varsa, kodu her alan adının .htaccess dosyasına ayrı ayrı koymanız gerekir. Ayrıca siteniz nginx kullanıyorsa, .htaccess dosyası hiç çalışmaz ve güvenlik duvarı yöntemini kullanmanız gerekir.
Üçüncü Seviye: Sunucu Güvenlik Duvarında IP Engelleme
Dedicated sunucu veya VPS'niz varsa, en iyi engelleme seviyesi güvenlik duvarıdır. Bu yöntem, isteği web sunucusuna ulaşmadan durdurur ve CPU ile bellek üzerinde ekstra yük oluşturmaz.
iptables Kullanımı (Klasik Yöntem)
iptables ile bir IP'yi engellemek için:
iptables -A INPUT -s 185.220.101.34 -j DROP
Tam bir aralığı engellemek için:
iptables -A INPUT -s 198.51.100.0/24 -j DROP
Kuralları kaydetmek için (yeniden başlatmadan sonra kalıcı olması için):
iptables-save > /etc/iptables/rules.v4
Bir kuralı silmek için önce satır numarasını bulun:
iptables -L INPUT --line-numbers
Ardından ilgili kuralı silin:
iptables -D INPUT 3
UFW Kullanımı (Daha Basit Yöntem)
Ubuntu veya Debian kullanıyorsanız, ufw iptables için daha basit bir arayüzdür:
ufw deny from 185.220.101.34
Aralık engellemek için:
ufw deny from 198.51.100.0/24
Aktif kuralları görüntülemek için:
ufw status numbered
2 numaralı kuralı silmek için:
ufw delete 2
Otomatik Engelleme için fail2ban Kullanımı
Manuel engelleme iyidir, ancak saldırılar sürekliyse, fail2ban aracı kural dışı IP'leri otomatik olarak tespit edip engelleyebilir. Bu araç SSH, Apache, Nginx ve diğer birçok hizmetin loglarını izler.
Temel kurulum ve yapılandırma:
apt install fail2ban # Debian/Ubuntu'da
yum install fail2ban # CentOS/RHEL'de
Ardından yerel bir yapılandırma dosyası oluşturun:
nano /etc/fail2ban/jail.local
Ve aşağıdaki içeriği ekleyin:
[sshd]
enabled = true
port = ssh
maxretry = 3
bantime = 3600
[apache-auth]
enabled = true
port = http,https
maxretry = 5
bantime = 3600
Bu ayarlar sırasıyla: 3 başarısız SSH denemesinden sonra IP 1 saatliğine engellenir ve Apache'nin korumalı bölümüne 5 başarısız giriş denemesinden sonra aynı ceza uygulanır.
ufw allow from YOUR_IP kullanın.
Hangi Yöntemi Seçmeliyiz?
IP engelleme yöntemi seçimi durumunuza bağlıdır:
- Paylaşımlı hosting: Kontrol panelini kullanın. Basittir ve derin teknik bilgi gerektirmez.
- Apache ile VPS üzerindeki site: Site için
.htaccessve sunucu içinufwkombinasyonu en iyi sonucu verir. - Yüksek trafikli sunucu: Kesinlikle güvenlik duvarı kullanın. Web sunucusu seviyesinde engelleme kaynak tüketir.
- Sürekli saldırılar:
fail2bankurun, böylece her gün manuel olarak IP engellemek zorunda kalmazsınız.
Özet ve Son Notlar
Kötü amaçlı IP engelleme, her site yöneticisi için gerekli bir beceridir. Bu makalede incelediğimiz üç yöntemle, en basitinden (kontrol paneli) en gelişmişine (güvenlik duvarı) kadar tüm seviyeleri kapsayabilirsiniz. Unutmayın:
- Engellemeden önce logları inceleyin ve IP'nin gerçekten kötü amaçlı olduğundan emin olun.
- Büyük aralıkları engellerken dikkatli olun; gerçek kullanıcıları da kaybedebilirsiniz.
- Her değişiklikten sonra güvenlik duvarı kurallarını test edin ve sitenizin normal kullanıcılar tarafından erişilebilir olduğundan emin olun.
- Uzun vadeli koruma için manuel engelleme ile fail2ban gibi otomatik araçların bir kombinasyonunu kullanın.
Sunucunuz ağır saldırılar altındaysa ve güvenlik yönetimi manuel olarak zorlaştıysa, ServerNet gibi bazı hosting sağlayıcılarının sunduğu yönetilen sunucu ve güvenlik duvarı hizmetlerinden yararlanabilirsiniz; böylece teknik ekip altyapınızın güvenliğini 7/24 izleyebilir. Ancak her durumda, bu teknikleri bilmek, acil durumlarda hızlı tepki vermenize yardımcı olacaktır.