Jak nainstalovat ModSecurity 2 s Apache na Debian 12 nebo 11

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í.

Joshua James
Následuj mě
Nejnovější příspěvky uživatele Joshua James (vidět vše)

Napsat komentář