Úvod
ModSecurity je zásuvný modul pro Apache, který funguje jako firewall. Funguje prostřednictvím sad pravidel, které vám umožňují přizpůsobit a nakonfigurovat zabezpečení serveru.
ModSecurity může také monitorovat webový provoz v reálném čase a pomoci vám detekovat a reagovat na narušení. Lze jej použít s Apache, Nginx a IIF a je kompatibilní s Debianem, Ubuntu a CentOS.
Tento tutoriál vysvětluje, jak nainstalovat a nakonfigurovat ModSecurity na webových serverech Apache.
Předpoklady
- Nainstalovaný a nakonfigurovaný zásobník LAMP (Linux, Apache, MySQL, PHP)
- Přístup k uživatelskému účtu pomocí sudo nebo root privilegia
- Správce balíčků (APT nebo YUM), který je součástí výchozího nastavení
- Příkazový řádek/okno terminálu (Ctrl-Alt-T, Ctrl-Alt-F1)
- Textový editor, jako je nano
Krok 1:Aktualizujte softwarová úložiště
Otevřete okno terminálu a zadejte následující:
Na Debian / Ubuntu
sudo apt update -y
Na CentOS
sudo yum update -y
Krok 2:Instalace ModSecurity na Apache
Nainstalujte ModSecurity na Debian
1. V okně terminálu zadejte následující:
sudo apt install libapache2-modsecurity
Pokud budete vyzváni, stiskněte y
a stiskněte Enter abyste umožnili dokončení procesu.
2. Restartujte službu Apache:
sudo systemctl restart apache2
Pokud byl Apache úspěšně restartován, nebude žádný výstup.
3. Zkontrolujte verzi softwaru (měla by být 2.8.0 nebo novější):
apt-cache show libapache2-modsecurity
Nainstalujte ModSecurity na Ubuntu 18.04
1. V okně terminálu zadejte:
sudo apt install libapache2-mod-security2
Pokud budete vyzváni, stiskněte y
a stiskněte Enter abyste umožnili dokončení procesu.
2. Restartujte službu Apache:
sudo systemctl restart apache2
Pokud byl Apache úspěšně restartován, nebude žádný výstup.
3. Zkontrolujte verzi softwaru (měla by být 2.8.0 nebo novější):
apt-cache show libapache2-mod-security2
Nainstalujte ModSecurity na CentOS 7
1. Do okna terminálu zadejte následující:
sudo yum install mod_security
Pokud budete vyzváni, stiskněte y
a stiskněte Enter abyste umožnili dokončení procesu.
2. Restartujte službu Apache:
sudo systemctl restart httpd.service
3. Zkontrolujte verzi softwaru (měla by být 2.8.0 nebo novější):
yum info mod_security
Krok:3 Nakonfigurujte ModSecurity
Po instalaci je ModSecurity nastaven na protokolování událostí podle výchozích pravidel. Budete muset upravit konfigurační soubor, abyste upravili pravidla pro detekci a blokování provozu.
Výchozí konfigurační soubor je /etc/modsecurity/modsecurity.conf-recommended.
1. Zkopírujte a přejmenujte soubor:
sudo cp /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf
2. Dále změňte režim detekce ModSecurity . Nejprve přejděte do /etc/modsecurity složka:
sudo cd /etc/modsecurity
3. Otevřete konfigurační soubor v textovém editoru (budeme používat nano):
sudo nano modsecurity.conf
V horní části byste měli vidět položku označenou:
SecRuleEngine DetectionOnly
Změňte toto na následující:
SecRuleEngine On
4. Použijte CTRL+X ukončete a poté stiskněte y poté Enter pro uložení změn.
5. Přejděte ze složky /etc/modsecurity:
cd
6. Restartujte Apache:
Na Debian/Ubuntu
sudo systemctl restart apache2
Na CentOS
sudo systemctl restart httpd.service
Tím se zapne ModSecurity pomocí základních výchozích pravidel. V některých verzích Linuxu to zahrnuje sadu základních pravidel OWASP. Tato verze se však může lišit od nejnovější verze udržované vývojáři.
Krok 4:Stáhněte si nejnovější pravidla OWASP ModSecurity Rules
Nejnovější sada základních pravidel (CRS) pro ModSecurity je udržována na GitHubu.
1. Nainstalujte G to pokud již není součástí vašeho systému.
Nainstalujte Git na Debian/Ubuntu:
sudo apt install git
Nainstalujte Git na CentOS:
sudo yum install git
2. Stáhněte si kopii CRS:
git clone https://github.com/SpiderLabs/owasp-modsecurity-crs.git
Tím umístíte kopii adresáře jako podadresář vašeho aktuálního pracovního umístění.
3. Otevřete nový adresář:
cd owasp-modsecurity-crs
4. Přesuňte soubor crs-setup:
sudo mv crs-setup.conf.example /etc/modsecurity/crs-setup.conf
5. Poté přesuňte adresář rules/:
sudo mv rules/ /etc/modsecurity
Pokud při pokusu o přesunutí tohoto adresáře narazíte na chybu, zadejte:
sudo mkdir /etc/modsecurity/rules
cd rules
sudo cp *.* /etc/modsecurity/rules
6. Dále zkontrolujte security2.conf soubor, abyste ověřili, že je nastaven na načtení pravidel ModSecurity:
sudo nano /etc/apache2/mods-enabled/security2.conf
Ověřte, zda jsou následující řádky zahrnuty a nekomentovány:
IncludeOptional /etc/modsecurity/*.conf
Include /etc/modsecurity/rules/*.conf
Pokud tam nejsou, přidejte je. Neduplikujte je, jinak riskujete deaktivaci služby Apache.
7. Restartujte službu Apache:
Na Debian/Ubuntu
sudo systemctl restart apache2
Na CentOS
sudo systemctl restart httpd.service
Krok 5:Otestujte konfiguraci Apache
1. Otevřete výchozí konfigurační soubor Apache:
sudo nano /etc/apache2/sites-available/000-default.conf
2. Vyhledejte </VirtualHost>
značku dole a přidejte následující řádky:
SecRuleEngine On
SecRule ARGS:testparam "@contains test" "id:1234,deny,status:403,msg:'phoenixNAP test rule was triggered'"
msg
můžete změnit podle toho, co preferujete.
Uložte a ukončete soubor (CTRL+X
> y
> Enter ).
3. Restartujte službu Apache:
Na Debian/Ubuntu
sudo systemctl restart apache2
Na CentOS
sudo systemctl restart httpd.service
4. Poté zadejte následující příkaz:
curl localhost/index.html?testparam=test
Systém zareaguje pokusem o zobrazení výchozí webové stránky. Místo obsahu generuje chybové kódy a zprávy uvnitř značek:
5. Fungování ModSecurity můžete potvrdit vyhledáním kódu 403 v protokolech chyb Apache pomocí příkazu:
sudo tail -f /var/log/apache2/error.log
Jedna z položek ve spodní části by měla být kód chyby ModSecurity:
Otestujte ModSecurity a OWASP CRS pomocí skriptu Bash
Další metodou, kterou můžete použít k testování ModSecurity, je použití B popel skript.
1. Do terminálu zadejte následující příkaz:
curl localhost/index.html?exec=/bin/bash
Výstup zobrazuje stejné chybové zprávy jako naposledy.
2. Znovu si prohlédněte soubor Apache error.log a zjistíte, že pravidlo bylo spuštěno:
sudo tail -f /var/log/apache2/error.log
Výstup zobrazí chybovou zprávu ModSecurity související s OWASP.
Krok 6:Vytvořte pravidla ModSecurity
Níže je testovací příklad, jak můžete použít ModSecurity k blokování konkrétních klíčových slov ve formuláři PHP.
1. Vytvořte soubor PHP v adresáři html pomocí příkazu:
sudo nano /var/www//html/test.php
2. Zadejte do souboru následující kód:
<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>
Uložte soubor a ukončete.
3. Dále vytvořte nový soubor vlastních pravidel ModSecurity:
sudo nano /etc/modsecurity/modsecurity_custom_rules.conf
Přidejte následující řádky:
SecRule REQUEST_FILENAME "test.php" "id:'400001',chain,deny,log,msg:'Spam detected'"
SecRule REQUEST_METHOD "POST" chain
SecRule REQUEST_BODY "@rx (?i:(enlarge|Nigerian|gold))"
Klíčová slova na posledním řádku samozřejmě změňte na libovolná.
Uložte soubor a ukončete.
4. Znovu načtěte službu Apache:
Na Debian/Ubuntu
sudo systemctl restart apache2
Na CentOS
sudo systemctl restart httpd.service
5. Spusťte formulář ve webovém prohlížeči
localhost/test.php
6. Zadejte jedno z klíčových slov z pravidla do formuláře. V tomto příkladu:zvětšit, nigerijský, nebo zlato .
Měli byste obdržet chybovou zprávu 403 Zakázáno.
Můžete také zkontrolovat /var/log/apache2/error.log
soubor k ověření akce ModSecurity.