ModSecurity, bir güvenlik duvarı gibi çalışan Apache için bir eklenti modülüdür. Sunucu güvenliğinizi özelleştirmenize ve yapılandırmanıza izin veren kural kümeleri aracılığıyla çalışır.
ModSecurity ayrıca web trafiğini gerçek zamanlı olarak izleyebilir ve izinsiz girişleri tespit edip müdahale etmenize yardımcı olabilir. Apache, Nginx ve IIF ile kullanılabilir ve Debian, Ubuntu ve CentOS ile uyumludur.
Bu öğretici açıklıyor ModSecurity’nin Apache web sunucularına nasıl kurulacağı ve yapılandırılacağı.
Önkoşullar
- LAMP yığını (Linux, Apache, MySQL, PHP) kuruldu ve yapılandırıldı
- ile bir kullanıcı hesabına erişim sudo veya kök ayrıcalıklar
- Varsayılan olarak dahil edilen bir paket yöneticisi (APT veya YUM)
- Bir komut satırı/terminal penceresi (Ctrl-Alt-T, Ctrl-Alt-F1)
- gibi bir metin editörü nano
1. Adım: Yazılım Depolarını Güncelleyin
Bir terminal penceresi açın ve aşağıdakileri girin:
Debian / Ubuntu’da
sudo apt update -y
CentOS’ta
sudo yum update -y
2. Adım: Apache’de ModSecurity Kurulumu
ModSecurity’yi Debian’a yükleyin
1. Bir terminal penceresinde aşağıdakileri girin:
sudo apt install libapache2-modsecurity
İstenirse, basın y
ve vur Girmek işlemin tamamlanmasına izin vermek için.
2. Apache hizmetini yeniden başlatın:
sudo systemctl restart apache2
Apache başarıyla yeniden başlatılırsa çıktı olmayacaktır.
3. Yazılım sürümünü kontrol edin (2.8.0 veya üstü olmalıdır):
apt-cache show libapache2-modsecurity
Not: Ubuntu, ModSecurity paketi için biraz farklı bir sözdizimine sahiptir.
ModSecurity’yi Ubuntu 18.04’e kurun
1. Bir terminal penceresinde şunu girin:
sudo apt install libapache2-mod-security2
İstenirse, basın y
ve vur Girmek işlemin tamamlanmasına izin vermek için.
2. Apache hizmetini yeniden başlatın:
sudo systemctl restart apache2
Apache başarıyla yeniden başlatılırsa çıktı olmayacaktır.
3. Yazılım sürümünü kontrol edin (2.8.0 veya üstü olmalıdır):
apt-cache show libapache2-mod-security2
ModSecurity’yi CentOS 7’ye kurun
1. Aşağıdakileri bir terminal penceresine girin:
sudo yum install mod_security
İstenirse, basın y
ve vur Girmek işlemin tamamlanmasına izin vermek için.
2. Apache hizmetini yeniden başlatın:
sudo systemctl restart httpd.service
3. Yazılım sürümünü kontrol edin (2.8.0 veya üstü olmalıdır):
yum info mod_security
Adım: 3 ModSecurity’yi Yapılandırın
Kurulumun ardından ModSecurity, olayları varsayılan kurallara göre günlüğe kaydedecek şekilde ayarlanır. Trafiği algılama ve engelleme kurallarını ayarlamak için yapılandırma dosyasını düzenlemeniz gerekir.
Varsayılan yapılandırma dosyası /etc/modsecurity/modsecurity.conf-recommended.
1. Dosyayı kopyalayın ve yeniden adlandırın:
sudo cp /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf
2. Ardından, ModSecurity algılama modu. İlk olarak, /etc/modgüvenliği dosya:
sudo cd /etc/modsecurity
3. Yapılandırma dosyasını bir metin düzenleyicide açın (nano kullanacağız):
sudo nano modsecurity.conf
En üste yakın bir yerde şu etiketli bir giriş görmelisiniz:
SecRuleEngine DetectionOnly
Bunu aşağıdaki gibi okumak için değiştirin:
SecRuleEngine On
4. Kullanım CTRL+X çıkmak için, ardından düğmesine basın. y Daha sonra Girmek Değişiklikleri kaydetmek için.
5. /etc/modsecurity klasöründen uzaklaşın:
cd
6. Apache’yi yeniden başlatın:
Debian/Ubuntu’da
sudo systemctl restart apache2
CentOS’ta
sudo systemctl restart httpd.service
Bu, temel varsayılan kuralları kullanarak ModSecurity’yi açacaktır. Linux’un bazı sürümlerinde bu, OWASP Temel Kural Kümesi. Ancak bu, geliştiriciler tarafından sağlanan en son sürümden farklı olabilir.
4. Adım: Son OWASP ModGüvenlik Kurallarını İndirin
ModSecurity için en son Çekirdek Kural Kümesi (CRS) GitHub’da tutulur.
1. Kur GBT zaten sisteminize dahil değilse.
Git’i Debian/Ubuntu’ya kurun:
sudo apt install git
Git’i CentOS’a yükleyin:
sudo yum install git
2. CRS’nin bir kopyasını indirin:
git clone https://github.com/SpiderLabs/owasp-modsecurity-crs.git
Bu, dizinin bir kopyasını geçerli çalışma konumunuzun bir alt dizini olarak yerleştirir.
3. Yeni bir dizin açın:
cd owasp-modsecurity-crs
4. crs-setup dosyasını taşıyın:
sudo mv crs-setup.conf.example /etc/modsecurity/crs-setup.conf
5. Sonra kuralları/ dizini taşıyın:
sudo mv rules/ /etc/modsecurity
Bu dizini taşımaya çalışırken bir hatayla karşılaşırsanız şunu girin:
sudo mkdir /etc/modsecurity/rules
cd rules
sudo cp *.* /etc/modsecurity/rules
6. Ardından, güvenlik2.conf ModSecurity kurallarını yüklemek üzere ayarlandığını doğrulamak için dosya:
sudo nano /etc/apache2/mods-enabled/security2.conf
Aşağıdaki satırların dahil edildiğini ve yorum yapılmadığını doğrulayın:
IncludeOptional /etc/modsecurity/*.conf
Include /etc/modsecurity/rules/*.conf
Orada değillerse, onları ekleyin. Bunları çoğaltmayın, aksi takdirde Apache hizmetinizi devre dışı bırakma riskini alırsınız.
7. Apache hizmetini yeniden başlatın:
Debian/Ubuntu’da
sudo systemctl restart apache2
CentOS’ta
sudo systemctl restart httpd.service
Adım 5: Apache Yapılandırmasını Test Edin
1. Varsayılan Apache yapılandırma dosyasını açın:
sudo nano /etc/apache2/sites-available/000-default.conf
2. </VirtualHost>
etiketleyin ve aşağıdaki satırları ekleyin:
SecRuleEngine On
SecRule ARGS:testparam "@contains test" "id:1234,deny,status:403,msg:'phoenixNAP test rule was triggered'"
değiştirebilirsiniz msg
tercih ettiğin şeye.
Dosyayı kaydedin ve çıkın (CTRL+X
> y
> Gir).
3. Apache hizmetini yeniden başlatın:
Debian/Ubuntu’da
sudo systemctl restart apache2
CentOS’ta
sudo systemctl restart httpd.service
4. Ardından aşağıdaki komutu girin:
curl localhost/index.html?testparam=test
Sistem, varsayılan web sayfasını görüntülemeye çalışarak yanıt verir. İçerik yerine, etiketlerin içinde hata kodları ve mesajlar üretir:
5. Aşağıdaki komutla Apache hata günlüklerinde 403 kodunu arayarak ModSecurity’nin çalıştığını doğrulayabilirsiniz:
sudo tail -f /var/log/apache2/error.log
Alttaki girişlerden biri ModSecurity hata kodu olmalıdır:
Bash Komut Dosyası ile ModSecurity ve OWASP CRS’yi Test Edin
ModSecurity’yi test etmek için kullanabileceğiniz başka bir yöntem de Bkül senaryo.
1. Terminalde şu komutu girin:
curl localhost/index.html?exec=/bin/bash
Çıktı, son kez aynı hata mesajlarını gösterir.
2. Apache error.log dosyasını tekrar görüntüleyin ve kuralın devreye girdiğini göreceksiniz:
sudo tail -f /var/log/apache2/error.log
Çıktı, OWASP ile ilgili ModSecurity hata mesajını görüntüler.
6. Adım: ModSecurity Kuralları Oluşturun
Aşağıda, bir PHP formundaki belirli anahtar kelimeleri engellemek için ModSecurity’yi nasıl kullanabileceğinize dair bir test örneği bulunmaktadır.
1. Aşağıdaki komutu kullanarak html dizini içinde bir PHP dosyası oluşturun:
sudo nano /var/www//html/test.php
2. Aşağıdaki kodu dosyaya girin:
<html>
<body>
<?php
if(isset($_POST['data']))
echo $_POST['data'];
else
{
?>
<form method="post" action="">
Enter text here:<textarea name="data"></textarea>
<input type="submit"/>
</form>
<?php
}
?>
</body>
</html>
Dosyayı kaydet ve çık.
3. Ardından, yeni bir ModSecurity özel kurallar dosyası oluşturun:
sudo nano /etc/modsecurity/modsecurity_custom_rules.conf
Aşağıdaki satırları ekleyin:
SecRule REQUEST_FILENAME "test.php" "id:'400001',chain,deny,log,msg:'Spam detected'"
SecRule REQUEST_METHOD "POST" chain
SecRule REQUEST_BODY "CanerXD (?i:(enlarge|Nigerian|gold))"
Tabii ki, son satırdaki anahtar kelimeleri istediğiniz gibi değiştirin.
Dosyayı kaydet ve çık.
4. Apache hizmetini yeniden yükleyin:
Debian/Ubuntu’da
sudo systemctl restart apache2
CentOS’ta
sudo systemctl restart httpd.service
5. Formu bir web tarayıcısında başlatın
localhost/test.php
6. Kuraldaki anahtar sözcüklerden birini forma yazın. Bu örnekte: Nijeryalı, veya altın.
403 Forbidden hata mesajı almalısınız.
Ayrıca kontrol edebilirsiniz /var/log/apache2/error.log
ModSecurity’nin eylemini doğrulamak için dosya.
Not: Bu custom_rules dosyasını şuraya eklememize gerek yok: güvenlik2.conf dosya, çünkü bir joker karakter (Dahil Etİsteğe Bağlı /etc/modsecurity/*.conf). Bir kişi belirtmiş olsaydık .conf dosyasıbu custom_rules dosyasını şuraya eklememiz gerekir: güvenlik2.conf dosya.
Çözüm
Şimdi sağlam bir anlayışa sahip olmalısınız Apache’de ModSecurity’nin nasıl kurulacağı, kurulacağı ve yapılandırılacağı. Bu kılavuzdaki adımları uygulamadan önce LAMP yığınını doğru şekilde kurduğunuzdan emin olun.