CWP Sunucu Güvenliği: Apache ile IP Tabanlı Bot Saldırılarını Engelleme

Eğer bir CWP (Control Web Panel) sunucusu yönetiyorsanız, cwpsrv erişim loglarınızın (access_log) sürekli 127.0.0.1 istekleriyle dolduğunu fark etmişsinizdir. Kötü niyetli botlar; .env, .git veya /wp-json/ gibi zafiyet arayan dosyaları sürekli tarar.

Bir bot, alan adınız yerine doğrudan sunucunuzun IP adresine istek attığında, Apache (CWP’nin varsayılan yönlendirmelerine bağlı olarak) bu isteği genellikle kendi içindeki CWP paneline iletir. İstek sunucunun kendi içinden (localhost) geldiği için loglara 127.0.0.1 olarak yazılır. Bu durum, log dosyalarınızın okunamaz hale gelmesine ve gerçek tehditlerin gözden kaçmasına neden olur.

Belirli kelimeleri (kara liste) engellemeye çalışmak sonu olmayan bir çabadır. En sağlam ve kesin çözüm, doğrudan IP adresine yapılan tüm istekleri Apache seviyesinde engellemektir.

İşte bu botları etkisiz hale getirecek ve CWP loglarınızı temizleyecek o adım adım Apache “Catch-All” (Yakalayıcı) rehberi:

1. Adım: Apache Yapılandırmanızın Yedeğini Alın

Sistem yönetiminin altın kuralı olarak, yapısal değişiklikler yapmadan önce her zaman bir yedek alın. Terminalinize şu komutu yapıştırın:

bash

cp /usr/local/apache/conf/httpd.conf /root/httpd.conf.bak

2. Adım: Özel Bir Catch-All Yapılandırma Dosyası Oluşturun

Apache, /usr/local/apache/conf.d/ dizinindeki yapılandırma dosyalarını alfabetik olarak okur. Oluşturacağımız kuralın diğer kurallar tarafından ezilmemesini garanti altına almak için başına zz- ekleyerek yeni bir dosya oluşturacağız.

bash

nano /usr/local/apache/conf.d/zz-catchall-ip.conf

3. Adım: IP Engelleme Kurallarını Ekleyin

Açılan boş dosyanın içine aşağıdaki yapılandırma bloğunu yapıştırın.

(Önemli Not: Aşağıdaki kodda yer alan 198.0.0.0 IP adresini, sunucunuzu canlıya alırken kendi gerçek sunucu IP adresinizle değiştirmeyi unutmayın).

apache

# --- 80 (HTTP) Portu Üzerinden Doğrudan IP Erişimini Engelle ---
<VirtualHost *:80>
    ServerName 198.0.0.0
    RewriteEngine On
    
    # Eğer Host başlığı IP adresiyle eşleşiyorsa VEYA boşsa, 403 Forbidden döndür
    RewriteCond %{HTTP_HOST} ^198\.0\.0\.0$ [NC,OR]
    RewriteCond %{HTTP_HOST} ^$
    RewriteRule ^ - [F,L]
</VirtualHost>

# --- 443 (HTTPS) Portu Üzerinden Doğrudan IP Erişimini Engelle ---
<VirtualHost *:443>
    ServerName 198.0.0.0
    SSLEngine on
    # CWP'nin varsayılan self-signed sertifikası kullanılıyor. Özel sertifikanız varsa yolları güncelleyin.
    SSLCertificateFile /etc/pki/tls/certs/hostname.crt
    SSLCertificateKeyFile /etc/pki/tls/private/hostname.key
    
    RewriteEngine On
    
    # Eğer Host başlığı IP adresiyle eşleşiyorsa VEYA boşsa, 403 Forbidden döndür
    RewriteCond %{HTTP_HOST} ^198\.0\.0\.0$ [NC,OR]
    RewriteCond %{HTTP_HOST} ^$
    RewriteRule ^ - [F,L]
</VirtualHost>

Bu neden işe yarar? Meşru ziyaretçiler ve arama motoru botları sitenize alan adınız üzerinden (örn: https://alanadiniz.com) erişir. Ancak zararlı bot tarayıcıları sıklıkla doğrudan IP adresini hedef alır (örn: http://198.0.0.0/.env) veya geçersiz Host başlıkları gönderir. Bu yapılandırma Apache’ye şunu söyler: “Eğer istek geçerli bir alan adına yapılmıyorsa, isteği anında 403 Forbidden hatası ile reddet.”

4. Adım: Yapılandırmayı Kontrol Edin ve Apache’yi Yeniden Başlatın

Yeniden başlatmadan önce, web sunucunuzu yanlışlıkla devre dışı bırakmamak için sözdizimi hatalarını kontrol edin:

bash

httpd -t

Eğer çıktıda Syntax OK (Sözdizimi Tamam) yazıyorsa, değişiklikleri güvenle uygulamak için Apache’yi yeniden başlatın:

bash

systemctl restart httpd

5. Adım: Test Edin ve Logları İzleyin

curl kullanarak bir bot isteğini simüle ederek kuralın çalışıp çalışmadığını test edin:

bash

curl -I http://198.0.0.0/.env

Çıktı olarak HTTP/1.1 403 Forbidden yanıtı almalısınız.

Son olarak, CWP loglarınızı gerçek zamanlı izleyin:

bash

tail -f /usr/local/cwpsrv/logs/access_log

127.0.0.1 kaynaklı bot çöplüğünün tamamen kaybolduğunu fark edeceksiniz. CWP loglarınız artık yalnızca gerçek yönetici girişlerini ve gerçek trafiği gösterecek.

💡 Bu Kural RustDesk veya Diğer Servisleri Etkiler mi?

Hayır. Bu yapılandırma yalnızca Apache’nin HTTP (Port 80) ve HTTPS (Port 443) trafiğini işleme şeklini etkiler. RustDesk (kendi özel portlarını kullanır), MySQL (3306) veya özel SSH servisleri gibi hizmetler kendi bağımsız portlarında çalışmaya devam eder ve Apache’nin web kurallarından kesinlikle etkilenmez.

Sonuç

Güvenlikte sadece belirli kelimeleri engellemeye dayalı bir yaklaşım yeterli değildir. Apache seviyesinde katı IP tabanlı reddetme kuralları uygulayarak, otomatik gürültünün %99’unu ortadan kaldırabilir, doğrudan IP’ye yönelik istismar girişimlerini durdurabilir ve CWP sunucu loglarınızı tertemiz tutabilirsiniz.

Yukarı Çık