ModSecurity 2 je základní firewall webových aplikací (WAF) pro zabezpečení HTTP serverů Apache, který nabízí monitorování v reálném čase a filtrování na základě pravidel. ModSecurity nainstalovaný na linuxovém serveru Debian 12 nebo 11 pomáhá předcházet injekcím SQL, cross-site scriptingu (XSS) a dalším útokům. Digitalwave ModSecurity Repository zjednodušuje instalaci a zajišťuje, že používáte nejnovější stabilní verzi.
Pro zvýšení zabezpečení poskytuje sada základních pravidel OWASP (CRS) předem nakonfigurovaná pravidla zaměřená na běžné zranitelnosti. Jeho nastavení umožňuje správcům posílit obranu s minimální ruční konfigurací. Tato příručka vám ukáže, jak nainstalovat ModSecurity 2 na Debian pomocí úložiště Digitalwave a nakonfigurovat OWASP CRS pro optimální ochranu.
Aktualizujte systémové balíčky Debianu pro instalaci ModSecurity 2
Naším prvním krokem je zajistit aktualizaci našeho systému Debian. Díky tomu budou všechny stávající balíčky aktuální, zajistí se optimální výkon a minimalizuje se bezpečnostní rizika. Dosáhnete toho spuštěním následujícího příkazu:
sudo apt update && sudo apt upgrade
Po aktualizaci systému zkontrolujte, zda je nainstalován Apache. Pokud ne, použijte k instalaci následující příkaz:
sudo apt install apache2
Importujte modul PPA ModSecurity Module
Nastavení požadovaného úložiště
Dalším úkolem na našem seznamu je instalace modulu ModSecurity Apache Module. Verze dostupná ve výchozích úložištích Debianu nemusí být nejnovější a její použití může vést k okamžitým chybám. Místo toho naimportujeme úložiště třetí strany pro instalaci nejnovějšího modulu ModSecurity Module pro Apache. Toto úložiště třetí strany, spravované společností Digitalwave, je známé svými stabilními binárními soubory.
Začněte instalací sady potřebných balíčků:
sudo apt install apt-transport-https lsb-release ca-certificates curl -y
Poté přistoupíme k importu úložiště PPA modulu ModSecurity 2 GPG klíč:
curl -fsSL https://modsecurity.digitalwave.hu/archive.key | sudo gpg --dearmor | sudo tee /usr/share/keyrings/digitalwave-modsecurity.gpg > /dev/null
Po získání klíče GPG přidejte úložiště do systému:
echo "deb [signed-by=/usr/share/keyrings/digitalwave-modsecurity.gpg] http://modsecurity.digitalwave.hu/debian/ $(lsb_release -sc) main" | sudo tee -a /etc/apt/sources.list.d/digitalwave-modsecurity.list
echo "deb [signed-by=/usr/share/keyrings/digitalwave-modsecurity.gpg] http://modsecurity.digitalwave.hu/debian/ $(lsb_release -sc)-backports main" | sudo tee -a /etc/apt/sources.list.d/digitalwave-modsecurity.list
Upřednostnění nového úložiště PPA modulu Apache
S repozitářem je nyní nutné upravit politiku APT tak, aby upřednostňovala toto úložiště pro konkrétní balíčky související s ModSecurity. K tomu slouží následující příkaz:
cat << EOF | sudo tee -a /etc/apt/preferences.d/99modsecurity
Package: *nginx*
Pin: origin modsecurity.digitalwave.hu
Pin-Priority: 900
Package: *libapache2-mod-security2*
Pin: origin modsecurity.digitalwave.hu
Pin-Priority: 900
Package: *modsecurity-crs*
Pin: origin modsecurity.digitalwave.hu
Pin-Priority: 900
Package: *libmodsecurity*
Pin: origin modsecurity.digitalwave.hu
Pin-Priority: 900
EOF
Dále spusťte aktualizaci APT, aby odrážela nově importovaný zdroj:
sudo apt update
Chcete-li navíc potvrdit předvolby, můžete tuto změnu zásad potvrdit následujícím způsobem:
sudo apt-cache policy libapache2-mod-security2 modsecurity-crs libmodsecurity3
Nainstalujte modul ModSecurity 2
Nyní, když je úložiště připraveno, pokračujte v instalaci modulu libapache2-mod-security2:
sudo apt install libapache2-mod-security2
Po instalaci je nutné modul povolit. K tomu použijte následující příkaz:
sudo a2enmod security2
Restartování služby Apache
Nakonec restartujeme službu Apache, abychom se ujistili, že se všechny změny projeví a nově přidaný modul ModSecurity je správně integrován:
sudo nano /etc/apache2/mods-enabled/security2.conf
Povolte modul ModSecurity 2 na Apache HTTP
Přístup ke konfiguračnímu souboru ModSecurity
Konfigurační soubor pro Apache ModSecurity lze nalézt na /etc/apache2/mods-enabled/security2.conf. Otevřete tento soubor pomocí textového editoru nano (nebo vašeho preferovaného textového editoru) pomocí následujícího příkazu:
sudo nano /etc/apache2/mods-enabled/security2.conf
Hledejte řádek, který zní:
IncludeOptional /etc/modsecurity/*.conf
Ujistěte se, že tento řádek je bez komentáře, protože obsahuje další potřebné konfigurační soubory z adresáře /etc/modsecurity. Ve výchozím nastavení by měl být bez komentáře.
Úprava konfigurace ModSecurity 2
Musíme přejmenovat konfigurační soubor modsecurity.conf-recommended na modsecurity.conf, aby byl aktivní. To lze provést pomocí následujícího příkazu:
sudo mv /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf
Nyní otevřeme tento nově pojmenovaný konfigurační soubor:
sudo nano /etc/modsecurity/modsecurity.conf
Modul pravidel ModSecurity je v tomto souboru standardně nastaven na DetectionOnly. To znamená, že bude identifikovat a protokolovat potenciálně škodlivé chování, aniž by jej zablokoval. Chcete-li to změnit a povolit blokovací schopnosti ModSecurity, vyhledejte řádek SecRuleEngine (kolem řádku 7) a nahraďte DetectionOnly za On.
Z:
SecRuleEngine DetectionOnly
Na:
SecRuleEngine On
Úprava nastavení protokolu pro Apache
Dále v konfiguračním souboru najdete řádek SecAuditLogParts (kolem řádku 224). Výchozí nastavení pro tento řádek není zcela správné; je třeba jej upravit tak, aby zaznamenával všechny informace o transakci přesně.
Přeměna:
SecAuditLogParts ABDEFHIJZ
Na:
SecAuditLogParts ABCEFHJKZ
Po provedení těchto úprav uložte změny a ukončete editor.
Restartování Apache pro použití změn
Naším posledním krokem v tomto procesu je restartování služby Apache, aby se naše změny v konfiguraci ModSecurity projevily. To se provádí pomocí následujícího příkazu:
sudo systemctl restart apache2
Nainstalujte sadu základních pravidel OWASP pro ModSecurity2
Samotný ModSecurity váš webový server nezajistí. Vyžaduje sadu pravidel k identifikaci potenciálních hrozeb a blokování škodlivé činnosti. Sada základních pravidel OWASP (Open Web Application Security Project) (CRS) je vysoce uznávaná sada pravidel, kterou používají různé webové servery a brány firewall webových aplikací (WAF). Nasazení této sady pravidel poskytne vašemu serveru robustní ochranu proti řadě hrozeb objevujících se na internetu.
Než budeme pokračovat, je nezbytné ověřit, že máte nejnovější verzi OWASP CRS návštěvou stránky Stránka značky OWASP Release. Tento krok zajistí, že si stáhnete a nainstalujete nejaktuálnější bezpečnostní opatření pro váš server.
Vytvoření nadřazeného adresáře pro OWASP CRS
Nejprve vytvořte hlavní nadřazený adresář pro OWASP pomocí příkazu mkdir:
sudo mkdir /etc/apache2/modsec/
Stáhněte si OWASP CRS Archive na Debianu
Dále použijeme příkaz wget k načtení archivu OWASP CRS 3.3.4, což je stabilní verze v době psaní tohoto článku. Nezapomeňte, že byste měli ověřit verzi pomocí výše uvedeného odkazu.
wget https://github.com/coreruleset/coreruleset/archive/refs/tags/v3.3.4.zip
Noční sestavení může nabízet aktuálnější bezpečnostní opatření, ale může způsobit problémy kvůli stavu vývoje. Pro nové uživatele je vhodné používat stabilní verzi, aby se předešlo případným komplikacím.
Poznámka: Měli byste neustále kontrolovat aktualizace; stabilní pravidla se nemění týdně, ale každé čtvrtletí nebo pokud není vyžadována naléhavá aktualizace.
Rozbalení archivu
Po staženém archivu jej můžeme extrahovat do adresáře, který jsme vytvořili dříve:
sudo tar xvf v3.3.4.tar.gz -C /etc/apache2/modsec
Nezapomeňte změnit příkazy podle verze OWASP CRS, kterou jste si stáhli.
Konfigurace sady pravidel
OWASP CRS má vzorový konfigurační soubor, který byste měli přejmenovat a zároveň zachovat původní jako zálohu. Můžete to udělat pomocí „příkazu cp“:
sudo cp /etc/apache2/modsec/coreruleset-3.3.4/crs-setup.conf.example /etc/apache2/modsec/coreruleset-3.3.4/crs-setup.conf
Poznámka: Nezapomeňte nahradit /coreruleset-3.3.4/ přesnou verzí OWASP CRS, kterou jste si vybrali.
Povolení pravidel
Chcete-li aktivovat pravidla, otevřete soubor /etc/apache2/mods-enabled/security2.conf:
sudo apt install unzip -y
Poté vložte následující dva řádky:
Include /etc/apache2/modsec/coreruleset-3.3.4/crs-setup.conf
Include /etc/apache2/modsec/coreruleset-3.3.4/rules/*.conf
Poznámka: Znovu se ujistěte, že jste nahradili /coreruleset-3.3.4/ přesnou verzí OWASP CRS, kterou jste vybrali, protože soubor coreruleset, který si stáhnete, bude s největší pravděpodobností novější než příklad v průvodci.
Dále zakomentujte nebo odeberte následující řádek:
IncludeOptional /usr/share/modsecurity-crs/*.load
Po dokončení uložte a ukončete soubor:
Restartování Apache pro použití změn
Posledním krokem je restartování služby Apache, aby se změny projevily:
sudo systemctl restart apache2
Začínáme se sadou základních pravidel OWASP a ModSecurity 2
OWASP Core Rule Set (CRS) je komplexní nástroj s mnoha přizpůsobitelnými možnostmi. Jeho výchozí konfigurace poskytuje okamžitá vylepšení zabezpečení pro většinu serverů, aniž by to ovlivnilo skutečné návštěvníky nebo roboty optimalizace pro vyhledávače (SEO). V této části probereme několik významných aspektů CRS, ale prozkoumání konfiguračních souborů pro úplné pochopení všech dostupných možností je vždy užitečné.
Úprava konfigurace CRS
Začneme otevřením souboru crs-setup.conf, kde lze změnit většinu nastavení CRS:
sudo nano /etc/apache2/modsec/coreruleset-3.3.4/crs-setup.conf
Pochopení bodovacího systému CRS
ModSecurity funguje ve dvou různých režimech:
- Režim skórování anomálií: Doporučuje se pro většinu uživatelů, tento režim přiděluje „skóre anomálie“ pokaždé, když pravidlo odpovídá. Po zpracování příchozích i odchozích pravidel se zkontroluje skóre anomálií a v případě potřeby se spustí rušivá akce. Tato akce má často podobu chyby 403. Tento režim poskytuje přesné informace protokolu a nabízí větší flexibilitu při nastavování zásad blokování.
- Samostatný režim: V tomto režimu je akce provedena okamžitě, kdykoli dojde ke shodě pravidla. I když může snížit spotřebu zdrojů, nabízí menší flexibilitu a přináší méně informativní protokoly auditu. Proces porovnávání pravidel se zastaví, když je splněno první pravidlo a je provedena zadaná akce.
Pochopení úrovní paranoie
OWASP CRS definuje čtyři úrovně paranoie:
- Paranoia Level 1: Výchozí úroveň je vhodná pro většinu uživatelů.
- Paranoia Level 2: Pro pokročilé uživatele.
- Paranoia Level 3: Pro zkušené uživatele.
- Paranoia Úroveň 4: Doporučuje se pouze za mimořádných okolností.
Vyšší úrovně paranoie umožňují další pravidla, zvyšují bezpečnost a zvyšují pravděpodobnost blokování legitimního provozu kvůli falešným poplachům. Je zásadní zvolit si úroveň paranoie, která odpovídá vašim odborným znalostem a potřebám zabezpečení.
Testování OWASP CRS na vašem serveru
Abyste se ujistili, že OWASP CRS na vašem serveru funguje správně, použijte svůj internetový prohlížeč pro přístup na následující URL. Nezapomeňte nahradit „vasedomena.com“ svou skutečnou doménou:
https://www.yourdomain.com/index.html?exec=/bin/bash
Pokud se zobrazí chyba 403 Forbidden, OWASP CRS bude fungovat podle očekávání. Pokud ne, může dojít k chybnému kroku v procesu nastavení, který vyžaduje vaši pozornost; nejčastějším problémem může být zapomenutí změnit DetectionOnly na On nebo něco podobného.
Řešení falešných poplachů a pravidel pro vlastní vyloučení
Správa falešných poplachů pomocí ModSecurity a OWASP Core Rule Set (CRS) může být neustálým úkolem. Avšak robustní obrana, kterou tyto systémy nabízejí proti široké škále hrozeb, činí toto úsilí nezbytným. Chcete-li zpočátku minimalizovat falešné poplachy, je vhodné nastavit nízkou úroveň paranoie.
Spuštěním pravidla nastaveného na nižší úrovni paranoie po několik týdnů nebo dokonce měsíců můžete snížit pravděpodobnost obrovského počtu falešných poplachů. Tento přístup vám dává čas seznámit se s výstrahami a vhodnými reakcemi před postupným zvyšováním úrovně paranoie pro přísnější zabezpečení.
Správa falešných poplachů ve známých aplikacích v Debianu pomocí OWASP, ModSecurity 2
ModSecurity zahrnuje schopnost přidat na seznam povolených určité akce, které mohou neúmyslně spustit falešné poplachy. Například:
#SecAction \
# "id:900130,\
# phase:1,\
# nolog,\
# pass,\
# t:none,\
# setvar:tx.crs_exclusions_cpanel=1,\
# setvar:tx.crs_exclusions_dokuwiki=1,\
# setvar:tx.crs_exclusions_drupal=1,\
# setvar:tx.crs_exclusions_nextcloud=1,\
# setvar:tx.crs_exclusions_phpbb=1,\
# setvar:tx.crs_exclusions_phpmyadmin=1,\
# setvar:tx.crs_exclusions_wordpress=1,\
# setvar:tx.crs_exclusions_xenforo=1"
Chcete-li aktivovat whitelisting pro aplikace jako WordPress, phpBB a phpMyAdmin, odkomentujte příslušné řádky a ponechte hodnotu (1). Chcete-li zabránit zařazení služeb, které se nepoužívají, na seznam povolených, upravte hodnotu na (0).
Aktualizovaná konfigurace by mohla vypadat následovně:
SecAction \
"id:900130,\
phase:1,\
nolog,\
pass,\
t:none,\
setvar:tx.crs_exclusions_phpbb=1,\
setvar:tx.crs_exclusions_phpmyadmin=1,\
setvar:tx.crs_exclusions_wordpress=1"
V tomto případě byly nadbytečné volby odstraněny a byla ponechána správná syntaxe pro požadované konfigurace.
Vytváření výjimek z pravidel před implementací CRS
Chcete-li vytvořit vlastní vyloučení, začněte přejmenováním souboru „REQUEST-900-EXCLUSION-RULES-BEFORE-CRS-SAMPLE.conf“ pomocí následujícího příkazu:
sudo cp /etc/apache2/modsec/coreruleset-3.3.4/rules/REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf.example /etc/apache2/modsec/coreruleset-3.3.4/rules/REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf
Pamatujte, že každé pravidlo výjimky musí mít jedinečné 'idnumber', aby se předešlo chybám během testování služby Apache2.
Některé „REQUEST_URI“ mohou například způsobit falešné poplachy. Následující příklad ilustruje dva takové případy zahrnující maják Google PageSpeed a plugin WPMU DEV pro WordPress:
SecRule REQUEST_URI "@beginsWith /wp-load.php?wpmudev" "id:1544,phase:1,log,allow,ctl:ruleEngine=off"
SecRule REQUEST_URI "@beginsWith /ngx_pagespeed_beacon" "id:1554,phase:1,log,allow,ctl:ruleEngine=off"
Tato pravidla automaticky povolují jakoukoli adresu URL začínající zadanou cestou.
Můžete také přidat na seznam povolených konkrétní IP adresy:
SecRule REMOTE_ADDR "^195\.151\.128\.96" "id:1004,phase:1,nolog,allow,ctl:ruleEngine=off"
SecRule REMOTE_ADDR "@ipMatch 127.0.0.1/8, 195.151.0.0/24, 196.159.11.13" "phase:1,id:1313413,allow,ctl:ruleEngine=off"
V prvním pravidle je na seznam povolených jedna IP adresa, zatímco druhé pravidlo používá direktivu '@ipMatch' pro širší shodu podsítě. Chcete-li zablokovat podsíť nebo IP adresu, jednoduše nahraďte „povolit“ za „zakázat“. Tato flexibilita vám umožňuje vytvářet podrobné blacklisty a whitelisty, které lze integrovat s Fail2Ban pro vylepšenou bezpečnostní strategii.
Zakázání specifických pravidel v Debianu pomocí OWASP, ModSecurity 2
Namísto přidávání celé cesty na seznam povolených je dalším přístupem deaktivace konkrétních pravidel, která způsobují trvalé falešné poplachy. Přestože tato metoda vyžaduje více testování, nabízí dlouhodobé výhody.
Pokud například pravidla 941000 a 942999 v oblasti „/admin/“ vyvolají pro váš tým falešné poplachy, můžete najít ID pravidla ve svých protokolech ModSecurity a zakázat pouze tato konkrétní ID pomocí příkazu „RemoveByID“:
SecRule REQUEST_FILENAME "@beginsWith /admin" "id:1004,phase:1,pass,nolog,ctl:ruleRemoveById=941000-942999"
Monitorování protokolů a identifikace vzorů
Při zpracování falešných poplachů pomocí Apache, ModSecurity a OWASP je nezbytné nepřetržité monitorování protokolů. Pomáhá identifikovat vzory, které spouštějí falešné poplachy, a umožňuje vám vytvářet vlastní pravidla, která je řeší.
Pokud například určitá pravidla trvale způsobují falešné poplachy, můžete vytvořit pravidlo vyloučení, které bude tyto konkrétní instance zpracovávat. Tento přizpůsobený přístup zajišťuje efektivnější řízení falešných poplachů.
Pravidelnou kontrolou protokolů a úpravou pravidel můžete udržovat bezpečnější a efektivnější prostředí pro své aplikace.
Rotace protokolu pro ModSecurity 2
Vzhledem k dynamické povaze webových transakcí mohou protokoly ModSecurity rychle růst, takže efektivní správa protokolů je zásadní. Rotace protokolů je užitečný nástroj pro správu těchto protokolů, i když není ve výchozím nastavení v ModSecurity nakonfigurována. Tato část vás provede nastavením rotace protokolů speciálně pro ModSecurity.
Vytvoření rotačního souboru ModSecurity
Nejprve musíte vytvořit vyhrazený soubor pro rotaci protokolu ModSecurity. Chcete-li to provést, použijte následující příkaz k vytvoření a otevření nového souboru s názvem modsec:
sudo nano /etc/logrotate.d/modsec
Konfigurace rotačního souboru
Do nově vytvořeného konfiguračního souboru ModSecurity (modsec) přidejte následující:
/var/log/modsec_audit.log
{
rotate 31
daily
missingok
compress
delaycompress
notifempty
}
Tato konfigurace uchovává protokoly po dobu 31 dnů, ale počet můžete upravit tak, aby vyhovoval vašim potřebám. Například změna na 'rotovat 7' místo toho uchová záznamy za týden.
Direktiva „daily“ zajišťuje rotaci protokolů každý den, zatímco „compress“ šetří místo komprimací starých protokolů. Volba 'delaycompress' zpožďuje kompresi až do druhého cyklu rotace a 'missingok' zabraňuje chybám, pokud soubor protokolu chybí. Navíc 'notifempty' zajišťuje, že se prázdné soubory protokolu nebudou rotovat.
Tip: Denní rotace protokolů je vhodná, abyste se vyhnuli práci s příliš velkými soubory protokolů, které mohou zdlouhavě prodloužit analýzu.
Závěr
Nyní jste nainstalovali ModSecurity 2 na váš server Debian 12 nebo 11 pomocí úložiště Digitalwave a nakonfigurovali sadu základních pravidel OWASP. S těmito nástroji je váš server vybaven k blokování mnoha běžných hrozeb pro webové aplikace.
Nezapomeňte pravidelně aktualizovat CRS a sledovat případné falešně pozitivní nebo nevynechané chyby zabezpečení. Důsledné testování a úpravy jsou klíčem k udržení robustního nastavení zabezpečení.