Takip et

ModSecurity’yi Apache ile Ubuntu 14.04 ve Debian 8 Üzerinde Kurulum Rehberi

ModSecurity’yi Apache ile Ubuntu 14.04 ve Debian 8 Üzerinde Kurulum Rehberi İnternet dünyasının sürekli gelişen tehdit ortamında, web uygulam

ModSecurity’yi Apache ile Ubuntu 14.04 ve Debian 8 Üzerinde Kurulum Rehberi

İnternet dünyasının sürekli gelişen tehdit ortamında, web uygulamalarının güvenliği her zamankinden daha kritik hale gelmiştir. SQL enjeksiyonları, siteler arası betik çalıştırma (XSS), uzaktan dosya dahil etme (RFI) gibi saldırılar, web uygulamalarının en savunmasız noktalarını hedef alır. Bu tür saldırılara karşı kapsamlı bir koruma sağlamak için Web Uygulama Güvenlik Duvarları (WAF) vazgeçilmez bir araç haline gelmiştir. ModSecurity, açık kaynaklı ve güçlü bir WAF çözümüdür ve Apache, Nginx gibi popüler web sunucularıyla entegre edilebilir. Bu makalede, ModSecurity’yi Apache web sunucusu ile Ubuntu 14.04 ve Debian 8 işletim sistemleri üzerinde adım adım nasıl kuracağınızı ve yapılandıracağınızı detaylı bir şekilde açıklayacağız. Bu rehber, sistem yöneticileri ve web geliştiricileri için tasarlanmış olup, ModSecurity’nin temelden ileri seviyeye kadar kullanımını kapsayacaktır.

Giriş: ModSecurity Nedir ve Neden Önemlidir?

ModSecurity, web uygulamalarını çeşitli saldırı türlerinden korumak için tasarlanmış, ücretsiz ve açık kaynaklı bir Web Uygulama Güvenlik Duvarı (WAF) motorudur. Apache HTTP Sunucusu için bir modül olarak başlayıp daha sonra Nginx ve IIS gibi diğer web sunucularını da destekleyecek şekilde genişlemiştir. ModSecurity, gelen HTTP isteklerini ve giden HTTP yanıtlarını gerçek zamanlı olarak izleyerek, kötü amaçlı kalıpları veya şüpheli davranışları tespit etmek için bir dizi kuralı uygular. Bu kurallar, OWASP Top 10 gibi bilinen güvenlik açıklarını hedef alan saldırıları (örneğin, SQL enjeksiyonu, XSS, RFI, LFI, uzaktan kod çalıştırma ve oturum sabitleme) engellemek üzere tasarlanmıştır.

ModSecurity’nin önemi, sadece bilinen güvenlik açıklarına karşı koruma sağlamakla kalmayıp, aynı zamanda henüz keşfedilmemiş (sıfır gün) güvenlik açıklarına karşı da bir savunma katmanı oluşturabilmesinden gelir. Uygulama katmanında çalıştığı için, ağ katmanı güvenlik duvarlarının ve IDS/IPS sistemlerinin ötesinde daha derinlemesine bir analiz ve koruma sunar. Web uygulamalarının kendilerini değiştirmeden veya kod seviyesinde güvenlik yamaları uygulamadan önce ekstra bir koruma katmanı eklemek isteyen kuruluşlar için ModSecurity ideal bir çözümdür. Ayrıca, saldırı girişimlerinin detaylı loglarını tutarak güvenlik analizi ve adli bilişim çalışmalarına da önemli katkı sağlar.

Ön Gereksinimler

ModSecurity kurulumuna başlamadan önce aşağıdaki ön gereksinimlerin karşılandığından emin olunuz:

* İşletim Sistemi: Ubuntu 14.04 (Trusty Tahr) veya Debian 8 (Jessie) kurulu bir sunucu. Bu rehber, bu sürümlerin paket yönetimi ve servis komutlarına odaklanacaktır.
* Kullanıcı Ayrıcalıkları: root kullanıcısı erişimi veya sudo ayrıcalıklarına sahip bir kullanıcı.
* Apache Web Sunucusu: Sunucunuzda Apache2 web sunucusunun kurulu ve çalışır durumda olması gerekmektedir. Eğer kurulu değilse, sonraki bölümde hızlı bir kurulum rehberi bulabilirsiniz.
* Temel Linux Bilgisi: Komut satırı kullanımı, dosya düzenleme (nano veya vi gibi editörlerle) ve servis yönetimi hakkında temel bilgi.
* İnternet Bağlantısı: Paket indirme ve güncelleme işlemleri için aktif bir internet bağlantısı.

Apache Kurulumu (Eğer Kurulu Değilse)

Eğer sunucunuzda Apache web sunucusu kurulu değilse, aşağıdaki adımları izleyerek kurabilirsiniz. Zaten kuruluysa, bu bölümü atlayabilirsiniz.

1. Paket Listesini Güncelleme:
İlk olarak, sisteminizin paket listesini güncelleyerek en son yazılım bilgilerine sahip olduğundan emin olun:

sudo apt-get update

2. Apache2 Kurulumu:
Apache2 paketini kurmak için aşağıdaki komutu kullanın:

sudo apt-get install apache2 -y

-y bayrağı, kurulum sırasında çıkan onay sorularına otomatik olarak “evet” yanıtı vermeyi sağlar.
3. Apache Servisini Başlatma ve Etkinleştirme:
Kurulum tamamlandıktan sonra Apache servisi otomatik olarak başlamalıdır. Ancak, emin olmak için servisi başlatabilir ve sistem başlangıcında otomatik olarak başlaması için etkinleştirebilirsiniz:

sudo service apache2 start
    sudo update-rc.d apache2 defaults

Ubuntu 14.04 ve Debian 8, systemd yerine Upstart veya SysVinit kullandığı için service komutu veya update-rc.d tercih edilir.
4. Güvenlik Duvarı Ayarları (Opsiyonel):
Eğer sunucunuzda bir güvenlik duvarı (örn. UFW) etkinse, web trafiğine izin vermek için 80 (HTTP) ve 443 (HTTPS) portlarını açmanız gerekebilir.

sudo ufw allow 'Apache Full'
    sudo ufw enable

Bu komutlar UFW için geçerlidir. Eğer başka bir güvenlik duvarı kullanıyorsanız, ilgili komutları kullanmalısınız.
5. Kurulumu Test Etme:
Web tarayıcınızdan sunucunuzun IP adresine gidin (örn. http://your_server_ip). Eğer “It works!” veya Apache’nin varsayılan hoş geldiniz sayfasını görüyorsanız, Apache başarıyla kurulmuş ve çalışıyor demektir.

ModSecurity Kurulumu

Apache web sunucusu hazır olduğuna göre, ModSecurity modülünü kurmaya geçebiliriz.

1. ModSecurity Paketini Kurma:
Ubuntu 14.04 ve Debian 8 için ModSecurity, Apache modülü olarak libapache2-mod-security2 paketi içinde bulunur. Bu paketi kurmak için aşağıdaki komutu kullanın:

sudo apt-get install libapache2-mod-security2 -y

Bu komut, ModSecurity modülünü ve gerekli tüm bağımlılıklarını kuracaktır.
2. Modülün Etkinleştirilmesi:
Kurulumdan sonra, ModSecurity modülünün Apache tarafından etkinleştirilmesi gerekir. Apache’nin a2enmod aracı bu işlemi kolayca yapar:

sudo a2enmod security2

Bu komut, security2.load ve security2.conf dosyalarını mods-enabled dizinine sembolik olarak bağlayacaktır.
3. Apache’yi Yeniden Başlatma:
Modülün yüklenmesi ve yapılandırma değişikliklerinin etkili olması için Apache servisini yeniden başlatmanız gerekir:

sudo service apache2 restart

Herhangi bir hata mesajı alıp almadığınızı kontrol edin. Eğer hata varsa, genellikle yapılandırma dosyasında bir sorun vardır.

ModSecurity Yapılandırması

ModSecurity modülü kurulduktan ve etkinleştirildikten sonra, sıra temel yapılandırma ayarlarına gelir. ModSecurity’nin varsayılan yapılandırma dosyaları, genellikle /etc/modsecurity/ dizininde bulunur.

1. Varsayılan Yapılandırma Dosyasını Kopyalama:
ModSecurity paketi, örnek bir yapılandırma dosyası olan modsecurity.conf-recommended ile birlikte gelir. Bu dosyayı ana yapılandırma dosyası olarak kullanmak üzere kopyalamamız gerekir:

sudo cp /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf

2. Temel modsecurity.conf Ayarları:
Şimdi yeni kopyaladığımız modsecurity.conf dosyasını düzenleyerek ModSecurity’nin davranışını belirleyeceğiz. Bir metin düzenleyici ile dosyayı açın:

sudo nano /etc/modsecurity/modsecurity.conf

Aşağıdaki önemli yönergeleri bulup gerektiği gibi ayarlayın:

* SecRuleEngine: Bu yönerge, ModSecurity’nin kural motorunun durumunu kontrol eder. Üç olası değeri vardır:
* DetectionOnly: ModSecurity kuralları tetiklendiğinde sadece log kaydı tutar, herhangi bir engelleme yapmaz. Bu, ModSecurity’yi ilk kurarken yanlış pozitifleri tespit etmek için önerilen bir başlangıç modudur.
* On: ModSecurity kuralları tetiklendiğinde hem log kaydı tutar hem de engelleme yapar. Üretim ortamında kullanılması gereken mod budur.
* Off: ModSecurity devre dışıdır.
Başlangıç için DetectionOnly olarak ayarlamanız önerilir:

SecRuleEngine DetectionOnly

* SecRequestBodyAccess: ModSecurity’nin HTTP istek gövdelerine (POST verileri gibi) erişip erişemeyeceğini belirler. Saldırıların çoğu istek gövdesinde gerçekleştiği için bu ayarın On olması önemlidir:

SecRequestBodyAccess On

* SecResponseBodyAccess: ModSecurity’nin HTTP yanıt gövdelerine (web sunucusundan istemciye giden veriler) erişip erişemeyeceğini belirler. Hassas bilgilerin sızmasını veya XSS saldırılarını engellemek için bu ayar On olabilir. Ancak, performans üzerindeki potansiyel etkisi nedeniyle dikkatli kullanılmalıdır:

SecResponseBodyAccess Off

Eğer XSS veya bilgi sızıntısı koruması için yanıt gövdelerini de denetlemek isterseniz On yapabilirsiniz.
* SecAuditEngine: Denetim loglarının nasıl tutulacağını belirler.
* Off: Denetim logları tutulmaz.
* On: Tüm işlemleri loglar.
* RelevantOnly: Yalnızca kuralların tetiklendiği veya bir hatanın oluştuğu işlemleri loglar. Genellikle RelevantOnly önerilir.

SecAuditEngine RelevantOnly

* SecAuditLogParts: Denetim logunda hangi bölümlerin yer alacağını belirler.
* A: Denetim günlüğünün başlığı (zaman, IP adresleri, vb.)
* B: İstek başlıkları
* C: İstek gövdesi
* D: Yanıt başlıkları
* E: Yanıt gövdesi
* F: Denetim logu dipnotları
* H: Denetim logu ayrıntıları (kural tetiklenmeleri vb.)
* I: Dosya yükleme bilgileri
* J: JSON formatında loglama (ModSecurity 3.x ve üzeri için daha yaygın)
* K: Tüm kuralları ve skorları gösterir (Anomaly Scoring kullanılıyorsa)
* Z: Denetim logu sonlandırıcısı
Genellikle ABIFHZ veya ABCEFHIZ tercih edilir:

SecAuditLogParts ABIFHZ

* SecAuditLog: Denetim log dosyasının yolunu belirtir:

SecAuditLog /var/log/apache2/modsec_audit.log

Bu log dosyası, ModSecurity’nin tetiklediği kurallar ve engellenen istekler hakkında detaylı bilgi içerir.
* SecDebugLog ve SecDebugLogLevel: Hata ayıklama logları için kullanılır. Üretim ortamında SecDebugLogLevel 0 olarak ayarlanması önerilir, aksi takdirde performans düşüşüne neden olabilir:

SecDebugLog /var/log/apache2/modsec_debug.log
        SecDebugLogLevel 0

* SecRequestBodyLimit ve SecResponseBodyLimit: İstek ve yanıt gövdelerinin maksimum boyutunu belirler. Varsayılan değerler yeterli olmayabilir, uygulamanızın ihtiyaçlarına göre artırabilirsiniz:

SecRequestBodyLimit 131072    # 128 KB
        SecResponseBodyLimit 1048576  # 1 MB

* SecPcreMatchLimit ve SecPcreMatchLimitRecursion: Regex eşleştirme motorunun performansını etkileyen değerlerdir. Yüksek değerler, karmaşık regex’lerin işlenmesine olanak tanır ancak CPU tüketimini artırabilir. Genellikle varsayılan değerler yeterlidir, ancak performans sorunları yaşarsanız bu değerleri artırmanız gerekebilir:

SecPcreMatchLimit 250000
        SecPcreMatchLimitRecursion 250000

Değişiklikleri kaydettikten sonra dosyayı kapatın.

3. Apache Yapılandırmasında ModSecurity’yi Dahil Etme:
ModSecurity modülü kurulduğunda, Apache genellikle /etc/apache2/mods-enabled/security2.conf adında bir yapılandırma dosyası oluşturur. Bu dosya, ModSecurity’nin genel ayarlarını ve kural dosyalarını içerebilir. modsecurity.conf dosyasını dahil ettiğinizden ve daha sonra kural setlerini dahil etmek için bu dosyayı kullanacağınızdan emin olun.
/etc/apache2/mods-enabled/security2.conf dosyasını açın:

sudo nano /etc/apache2/mods-enabled/security2.conf

Bu dosyanın içinde aşağıdaki gibi bir yapılandırma bloğu olmalıdır:


        # ModSecurity temel yapılandırma dosyasını dahil et
        IncludeOptional /etc/modsecurity/modsecurity.conf

        # Buraya CRS kuralları dahil edilecek
        # IncludeOptional /etc/modsecurity/crs/*.conf
        # IncludeOptional /etc/modsecurity/crs/rules/*.conf
    

IncludeOptional yönergesi, belirtilen dosya veya dizin glob kalıbına uyan dosyaları dahil eder. Dosya yoksa hata vermez.

Apache’yi yeniden başlatarak değişiklikleri uygulayın:

sudo service apache2 restart

OWASP ModSecurity Core Rule Set (CRS) Kurulumu ve Yapılandırması

ModSecurity motoru tek başına bir koruma sağlamaz; saldırıları tespit etmek ve engellemek için kurallara ihtiyacı vardır. OWASP ModSecurity Core Rule Set (CRS), ModSecurity için en popüler ve kapsamlı kural setidir. OWASP Top 10 gibi bilinen birçok güvenlik açığına karşı koruma sağlar.

1. OWASP CRS’i İndirme:
OWASP CRS’i GitHub deposundan indirebilirsiniz. Ubuntu 14.04 ve Debian 8 gibi eski sistemlerde, CRS’in 3.0.x serisi daha uyumlu olabilir. Bu rehberde 3.0.2 sürümünü kullanacağız. Daha yeni sürümler için CRS’in kendi GitHub sayfasını kontrol edebilirsiniz.

cd /usr/local/src
    sudo wget https://github.com/OWASP/crs/archive/v3.0.2.tar.gz
    sudo tar -xvzf v3.0.2.tar.gz
    sudo mv crs-3.0.2 /etc/modsecurity/crs

Bu komutlar, CRS’i indirir, açar ve /etc/modsecurity/crs dizinine taşır.

2. CRS Yapılandırması:
CRS, kendi temel yapılandırma dosyası olan crs-setup.conf.example ile gelir. Bu dosyayı kopyalayarak ve düzenleyerek CRS’in davranışını ayarlayabilirsiniz.

cd /etc/modsecurity/crs
    sudo cp crs-setup.conf.example crs-setup.conf
    sudo nano crs-setup.conf

Bu dosyada dikkat etmeniz gereken bazı önemli ayarlar:

* SecDefaultAction: Kurallar tetiklendiğinde varsayılan olarak ne yapılacağını belirler. Genellikle deny,status:403,log,auditlog olarak ayarlanır, bu da isteği engeller, 403 HTTP durumu döndürür ve log kaydı tutar. Ancak, SecRuleEngine DetectionOnly olarak ayarlandığında bu yönerge sadece loglama yapar, engelleme yapmaz.
* SecMarker: ModSecurity kural setleri için benzersiz işaretleyiciler tanımlar. Genellikle olduğu gibi bırakılır.
* Paranoia Level: CRS’in hassasiyetini belirler. 1’den 4’e kadar değer alabilir.
* PL1: En düşük hassasiyet, en az yanlış pozitif.
* PL4: En yüksek hassasiyet, en çok yanlış pozitif olasılığı.
Üretim ortamlarında başlangıç için PL1 veya PL2 önerilir.

# SecAction "id:900000,\
        #    phase:1,\
        #    nolog,\
        #    pass,\
        #    ctl:ruleEngine=On,\
        #    ctl:auditEngine=On,\
        #    ctl:auditLogParts=+E,\
        #    ctl:requestBodyAccess=On,\
        #    ctl:responseBodyAccess=On,\
        #    setvar:tx.crs_setup_version=3.0.2,\
        #    setvar:tx.paranoia_level=1"
        # Yukarıdaki satırları uncomment edip paranoia_level'ı ayarlayabilirsiniz.

Dosyadaki SecAction satırlarını bulup, başındaki # işaretlerini kaldırarak ve setvar:tx.paranoia_level=1 (veya istediğiniz seviye) olarak ayarlayarak etkinleştirebilirsiniz.

3. Kural Dosyalarını Apache’ye Dahil Etme:
CRS kurallarını Apache’nin ModSecurity yapılandırmasına dahil etmek için /etc/apache2/mods-enabled/security2.conf dosyasını tekrar düzenlememiz gerekir.

sudo nano /etc/apache2/mods-enabled/security2.conf

IncludeOptional /etc/modsecurity/modsecurity.conf satırından sonra aşağıdaki satırları ekleyin:


        IncludeOptional /etc/modsecurity/modsecurity.conf
        # OWASP CRS yapılandırma dosyasını dahil et
        IncludeOptional /etc/modsecurity/crs/crs-setup.conf
        # OWASP CRS kural dosyalarını dahil et
        IncludeOptional /etc/modsecurity/crs/rules/*.conf
    

Önemli: Dahil etme sırası çok önemlidir. modsecurity.conf önce, ardından crs-setup.conf ve en son CRS kural dosyaları gelmelidir. Bu sıralama, ayarların doğru şekilde uygulanmasını sağlar.

Değişiklikleri kaydettikten sonra Apache’yi yeniden başlatın:

sudo service apache2 restart

Bu noktada, Apache’nin hatasız bir şekilde başlaması gerekmektedir. Eğer bir hata alırsanız, genellikle yapılandırma dosyalarınızdan birinde bir sözdizimi hatası vardır. sudo apachectl configtest komutu, yapılandırma dosyalarınızdaki sözdizimi hatalarını kontrol etmenize yardımcı olabilir.

Kurulumun Test Edilmesi

ModSecurity ve OWASP CRS’i başarıyla kurup yapılandırdıktan sonra, sistemin doğru çalıştığından emin olmak için testler yapmalıyız.

1. Apache Loglarını Kontrol Etme:
Apache’nin hata loglarını ve ModSecurity’nin denetim loglarını izleyerek herhangi bir hata veya kural tetiklenmesi olup olmadığını kontrol edin:

tail -f /var/log/apache2/error.log
    tail -f /var/log/apache2/modsec_audit.log

Bu komutlar, log dosyalarına yeni eklenen satırları gerçek zamanlı olarak gösterir.
2. Basit Saldırı Testleri:
ModSecurity’nin DetectionOnly modunda çalıştığını varsayarak, tarayıcınızdan veya curl ile basit saldırı denemeleri yapın. Bu denemeler engellenmeyecek, ancak ModSecurity denetim logunda kaydedilecektir.

* SQL Enjeksiyonu Denemesi:
Tarayıcınızdan sunucunuzun IP adresine aşağıdaki gibi bir URL ile erişmeye çalışın:
http://your_server_ip/?id=1%27OR%271%27=%271
(Buradaki %27 tek tırnak işaretinin URL kodlamasıdır.)
modsec_audit.log dosyasını kontrol ettiğinizde, SQL enjeksiyonu kuralının tetiklendiğini gösteren bir kayıt görmelisiniz (örn. [id "942100"]).

* XSS (Cross-Site Scripting) Denemesi:
Tarayıcınızdan aşağıdaki gibi bir URL ile erişmeye çalışın:
http://your_server_ip/?param=
modsec_audit.log dosyasında XSS kuralının tetiklendiğini gösteren bir kayıt görmelisiniz (örn. [id "941100"]).

* Yerel Dosya Dahil Etme (LFI) Denemesi:
http://your_server_ip/?file=../../../../etc/passwd
modsec_audit.log dosyasında LFI kuralının tetiklendiğini gösteren bir kayıt görmelisiniz.

Eğer bu testlerde ilgili kural tetiklenmelerini modsec_audit.log dosyasında görüyorsanız, ModSecurity ve CRS başarıyla çalışıyor demektir.

3. SecRuleEngine On Moduna Geçiş:
Testleriniz başarılıysa ve yanlış pozitifler (meşru trafiğin hatalı bir şekilde saldırı olarak algılanması) yaşamadığınızdan emin olduktan sonra, modsecurity.conf dosyasını düzenleyerek SecRuleEngine değerini On olarak değiştirebilirsiniz:

sudo nano /etc/modsecurity/modsecurity.conf

SecRuleEngine DetectionOnly satırını bulun ve SecRuleEngine On olarak değiştirin.
Dosyayı kaydedip Apache’yi yeniden başlatın:

sudo service apache2 restart

Şimdi aynı saldırı testlerini tekrarladığınızda, tarayıcınızda 403 Forbidden hatası görmelisiniz, bu da ModSecurity’nin saldırıları aktif olarak engellediği anlamına gelir. Log dosyalarını kontrol ederek engelleme kayıtlarını da görebilirsiniz.

ModSecurity’nin Yönetimi ve Ayarlanması

ModSecurity’yi üretim ortamında çalıştırmak, sürekli izleme ve ince ayar gerektirir. Özellikle yanlış pozitifler, ModSecurity’nin kullanımında karşılaşılan en yaygın zorluklardan biridir.

1. Yanlış Pozitiflerin (False Positives) Yönetimi:
ModSecurity’nin agresif kural setleri, bazen meşru kullanıcı isteklerini de kötü amaçlı olarak algılayabilir. Bu durum, web uygulamanızın belirli işlevlerinin çalışmamasına neden olabilir. Yanlış pozitifleri yönetmek için aşağıdaki yöntemleri kullanabilirsiniz:

* Logları İnceleme: Yanlış pozitif bir durumla karşılaştığınızda, modsec_audit.log dosyasını inceleyerek hangi ModSecurity kuralının tetiklendiğini belirleyin. [id "XXXXXX"] şeklindeki kısım kuralın kimliğini gösterir.
* Kuralı Devre Dışı Bırakma (SecRuleRemoveById): Eğer belirli bir kuralın uygulamanız için sürekli yanlış pozitiflere neden olduğunu tespit ederseniz, o kuralı devre dışı bırakabilirsiniz. Bu, genellikle /etc/apache2/mods-enabled/security2.conf dosyasına veya ilgili VirtualHost yapılandırmasına eklenir.

# SQLi Generic Detection kuralını devre dışı bırakma örneği
        SecRuleRemoveById 942100

Birden fazla kuralı devre dışı bırakmak için virgülle ayırabilirsiniz:

SecRuleRemoveById 942100,941100,931130

UYARI: Bir kuralı devre dışı bırakmak, ilgili güvenlik açığına karşı korumayı ortadan kaldırır. Bu nedenle, sadece kesinlikle gerekli olduğunda ve riskleri anladığınızda yapılmalıdır.
* Belirli Bir URL veya Konum İçin Kuralı Devre Dışı Bırakma: Eğer yanlış pozitif sadece uygulamanızın belirli bir bölümünde (örn. bir yönetici paneli veya dosya yükleme sayfası) meydana geliyorsa, kuralı sadece o konum için devre dışı bırakabilirsiniz:


            SecRuleEngine Off
            # Veya sadece belirli kuralları devre dışı bırakın
            # SecRuleRemoveById 920130 920140
        

* Kuralın Kapsamını Daraltma (SecRuleUpdateTargetById): Daha hassas bir yaklaşım, kuralı tamamen devre dışı bırakmak yerine, kuralın hangi istek parametreleri üzerinde çalıştığını değiştirmektir.

# Kural 942100'ün sadece arg_names üzerinde çalışmasını sağla
        SecRuleUpdateTargetById 942100 "!ARGS:user_input"

Bu, kuralın user_input adlı argüman dışındaki tüm argümanlar üzerinde çalışmasını sağlar.

2. Performans Optimizasyonu:
ModSecurity, özellikle karmaşık kural setleri ve yüksek trafikli sitelerde CPU ve bellek tüketimini artırabilir. Performansı optimize etmek için:

* Gereksiz Kuralları Devre Dışı Bırakma: Uygulamanızın kullanmadığı veya uygulamanızın mimarisine uygun olmayan (örn. XML veya JSON işlemeyen bir uygulama için XML/JSON kuralları) kural setlerini veya bireysel kuralları devre dışı bırakın.
* SecResponseBodyAccess Off: Eğer yanıt gövdelerini denetlemek kritik değilse, bu ayarı Off konumunda tutun. Yanıt gövdelerinin denetlenmesi, özellikle büyük yanıtlar için önemli bir performans yükü getirebilir.
* Log Seviyesini Düşürme: SecDebugLogLevel 0 olarak ayarlanmış olduğundan emin olun. SecAuditEngine‘i de RelevantOnly olarak ayarlayarak sadece önemli olayların loglanmasını sağlayın.
* SecPcreMatchLimit ve SecPcreMatchLimitRecursion Ayarları: Bu değerleri çok yüksek ayarlamak CPU kullanımını artırabilir. Varsayılan değerlerle başlayıp, performans sorunları yaşarsanız ve loglarda regex eşleştirme ile ilgili hatalar görüyorsanız artırmayı düşünün.
* Apache Yapılandırması: ModSecurity’yi sadece belirli VirtualHost’lar veya blokları içinde etkinleştirerek, gereksiz yerlerde çalışmasını engelleyebilirsiniz.

3. Güncellemeler:
* OWASP CRS Güncellemesi: Güvenlik tehditleri sürekli geliştiği için OWASP CRS’i düzenli olarak güncellemek önemlidir. GitHub deposunu takip ederek yeni sürümleri indirin ve kuralları güncelleyin. Güncelleme yaparken, eski crs dizinini yedekleyip yeni sürümü kurduktan sonra özel yapılandırmalarınızı (crs-setup.conf veya devre dışı bıraktığınız kurallar) yeni sürüme taşımanız gerekebilir.
* ModSecurity Modülü Güncellemesi: libapache2-mod-security2 paketini sisteminizin paket yöneticisi ile düzenli olarak güncelleyin (sudo apt-get update && sudo apt-get upgrade).

Sık Karşılaşılan Sorunlar ve Çözümleri

ModSecurity kurulumu ve yapılandırması sırasında veya sonrasında bazı yaygın sorunlarla karşılaşabilirsiniz.

1. Apache Başlamıyor veya Hata Veriyor:
* Sorun: Apache servisi yeniden başlatılamıyor ve hata loglarında “Syntax error” veya “Invalid command” gibi mesajlar görünüyor.
* Çözüm: Bu genellikle ModSecurity veya CRS yapılandırma dosyalarınızdaki bir sözdizimi hatasından kaynaklanır. sudo apachectl configtest komutunu çalıştırarak yapılandırma dosyalarınızdaki hataları kontrol edin. Hata mesajında belirtilen dosya ve satırı kontrol edin.
2. ModSecurity Çalışmıyor veya Kuralları Tetiklemiyor:
* Sorun: Saldırı testleri yapmanıza rağmen modsec_audit.log dosyasında herhangi bir kural tetiklenmesi görünmüyor.
* Çözüm:
* /etc/modsecurity/modsecurity.conf dosyasında SecRuleEngine On veya SecRuleEngine DetectionOnly olarak ayarlandığından emin olun.
* ModSecurity modülünün Apache tarafından etkinleştirildiğinden emin olun (sudo a2enmod security2).
CRS kurallarının /etc/apache2/mods-enabled/security2.conf dosyasında doğru sırada ve doğru yollarla dahil edildiğinden emin olun (IncludeOptional /etc/modsecurity/crs/crs-setup.conf ve IncludeOptional /etc/modsecurity/crs/rules/.conf).
* Apache’yi yeniden başlattığınızdan emin olun.
3. Yanlış Pozitifler (Meşru İsteklerin Engellenmesi):
* Sorun: Uygulamanızın belirli bir özelliği veya meşru bir kullanıcı isteği 403 Forbidden hatası ile engelleniyor.
* Çözüm: modsec_audit.log dosyasını dikkatlice inceleyerek hangi kuralın tetiklendiğini belirleyin. Ardından, yukarıda “Yanlış Pozitiflerin Yönetimi” bölümünde açıklandığı gibi, SecRuleRemoveById veya SecRuleUpdateTargetById yönergelerini kullanarak ilgili kuralı devre dışı bırakın veya kapsamını daraltın.
4. Performans Sorunları (Yüksek CPU Kullanımı):
* Sorun: ModSecurity etkinleştirildikten sonra sunucunuzun CPU kullanımı önemli ölçüde artıyor.
* Çözüm:
* SecRuleEngine‘i DetectionOnly moduna alarak hangi kuralların en çok tetiklendiğini ve performansı etkilediğini loglardan belirleyin.
* SecDebugLogLevel 0 olarak ayarlandığından emin olun.
* SecResponseBodyAccess Off olarak ayarlandığından emin olun.
* Gereksiz CRS kural setlerini veya bireysel kuralları devre dışı bırakmayı düşünün.
* SecPcreMatchLimit ve SecPcreMatchLimitRecursion değerlerini kontrol edin. Çok yüksek değerler performansı olumsuz etkileyebilir.

Gelişmiş Konular

Bu rehber temel kurulum ve yapılandırmaya odaklanmış olsa da, ModSecurity daha birçok gelişmiş özelliği destekler:

* Anomaly Scoring: Kuralların her biri için bir “skor” belirleyerek, tek bir kuralın engelleme yapması yerine, belirli bir eşiği aşan toplam skorlara göre engelleme yapma yeteneği. Bu, yanlış pozitifleri azaltmada ve daha esnek bir güvenlik politikası oluşturmada yardımcı olabilir.
* Persistent Storage: IP kara listeleri, oturum bilgileri gibi verileri sunucu yeniden başlatmaları arasında veya birden fazla Apache worker arasında paylaşmak için kullanılır.
* ModSecurity ile Nginx Kullanımı: ModSecurity, Nginx ile de kullanılabilir, ancak Apache’deki modül entegrasyonundan farklı olarak genellikle Nginx’in ters proxy olarak kullanıldığı ve ModSecurity’nin ayrı bir web sunucusu (örn. Apache) üzerinde çalıştığı bir mimari gerektirir.
* SSL/TLS (HTTPS) Trafiği Denetimi: ModSecurity, Apache’nin SSL/TLS modülü ile entegre olduğunda şifreli HTTPS trafiğini de denetleyebilir. Bu, trafiğin şifresinin çözülmesini ve ModSecurity tarafından incelenmesini sağlar.

Sonuç

ModSecurity, web uygulamalarınızı bilinen ve sıfır gün saldırılarına karşı korumak için güçlü ve esnek bir Web Uygulama Güvenlik Duvarı (WAF) çözümüdür. Bu rehberde, ModSecurity’yi Apache web sunucusu ile Ubuntu 14.04 ve Debian 8 işletim sistemleri üzerinde nasıl kuracağınızı, temel yapılandırmayı nasıl yapacağınızı ve OWASP Core Rule Set’i (CRS) nasıl entegre edeceğinizi adım adım gösterdik. Ayrıca, kurulumu test etme, yanlış pozitifleri yönetme, performansı optimize etme ve sık karşılaşılan sorunlara çözüm bulma konularına da değindik.

ModSecurity’nin etkin bir şekilde çalışması, doğru yapılandırma, düzenli izleme ve kural setlerinin güncel tutulmasına bağlıdır. Her web uygulaması farklı olduğu için, ModSecurity’yi kendi ortamınıza göre ince ayar yapmanız ve sürekli olarak test etmeniz önemlidir. Unutmayın ki hiçbir güvenlik çözümü %100 koruma sağlamaz, ancak ModSecurity gibi bir WAF çözümü, web uygulamanızın güvenlik duruşunu önemli ölçüde güçlendiren kritik bir savunma katmanı ekler. Bu sayede, potansiyel saldırıların önüne geçerek veri ihlallerini ve hizmet kesintilerini minimuma indirebilirsiniz.

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.