ModSecurity 2 s OWASP CRS poskytuje robustní bezpečnostní vrstvu pro servery Apache a zvyšuje jejich obranu proti různým webovým hrozbám. Funguje jako firewall webové aplikace, přesně identifikuje a blokuje škodlivý provoz. Využití sady základních pravidel OWASP poskytuje komplexní sadu pravidel pro detekci a zmírnění rozšířených zranitelností webových aplikací.
Zde je to, co odlišuje ModSecurity 2 s OWASP CRS na serverech Ubuntu:
- Monitorování v reálném čase: Nepřetržitý dohled nad provozem HTTP, zjišťování potenciálních hrozeb, jakmile se objeví.
- Přizpůsobitelná sada pravidel: Flexibilita přizpůsobení OWASP CRS tak, aby vyhovovala specifickým bezpečnostním potřebám, a zlepšuje cílené obranné mechanismy.
- Pokročilé možnosti protokolování: Podrobné protokolování poskytuje přehled o vzorcích provozu a pomáhá analyzovat potenciální bezpečnostní hrozby.
- Všestranná kompatibilita: Bezproblémová integrace s Apache zajišťuje širokou použitelnost v různých serverových prostředích.
- Preventivní bezpečnostní opatření: Proaktivní blokování podezřelých aktivit snižuje riziko úspěšných útoků.
- Optimalizace výkonu: Navrženo tak, aby minimalizovalo dopad na výkon serveru a zajistilo efektivní bezpečnostní operace.
- Komunitou podporované aktualizace: Profitujte z přístupu založeného na komunitě, dostávejte pravidelné aktualizace a nová pravidla pro boj s nově vznikajícími hrozbami.
- Transparentní zabezpečení: Umožňuje důkladnou kontrolu a úpravu pravidel a poskytuje přehled o procesu zabezpečení.
Přechodem k technickému návodu získáte praktické poznatky o nasazení ModSecurity 2 s OWASP CRS, což zajistí, že váš server Apache bude posílen proti různým bezpečnostním výzvám.
Nainstalujte Apache HTTP
Začněte aktualizací systému, abyste se ujistili, že všechny existující balíčky jsou aktuální, pomocí následujícího příkazu:
sudo apt update && sudo apt upgrade
Po aktualizaci systému nainstalujte Apache, pokud již není nainstalován na vašem serveru Ubuntu:
sudo apt install apache2
Nainstalujte modul ModSecurity Apache Module
Dále musíte importovat úložiště třetí strany, abyste mohli nainstalovat nejnovější model Modescurity pro Apache. Verze obsažená ve výchozích úložištích Ubuntu nebude fungovat a při použití výchozí verze budete okamžitě čelit chybám. Toto úložiště třetí strany je dobře zmíněno na GitHubu a poskytuje binární soubory po dlouhou dobu.
Poznámka: Více informací naleznete na oficiální stránky Digitalwave.
Nejprve nainstalujte do systému následující balíčky:
sudo apt install apt-transport-https lsb-release ca-certificates curl -y
Dále importujte klíč GPG pro následující úložiště:
curl -fsSL https://modsecurity.digitalwave.hu/archive.key | sudo gpg --dearmor | sudo tee /usr/share/keyrings/digitalwave-modsecurity.gpg > /dev/null
Nyní importujte úložiště pomocí následujícího příkazu:
echo "deb [signed-by=/usr/share/keyrings/digitalwave-modsecurity.gpg] http://modsecurity.digitalwave.hu/ubuntu/ $(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/ubuntu/ $(lsb_release -sc)-backports main" | sudo tee -a /etc/apt/sources.list.d/digitalwave-modsecurity.list
Nyní musíte nastavit Zásady APT, aby se toto úložiště použilo jako první pro zmíněné balíčky, které budete instalovat. Zkopírujte a vložte tento příkaz, který to provede automaticky:
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
Volitelně to můžete potvrdit následujícím příkazem:
sudo apt-cache policy nginx-extras libapache2-mod-security2 modsecurity-crs libmodsecurity3
Spusťte aktualizaci APT, aby odrážela nově importovaný zdroj:
sudo apt update
Nyní nainstalujte model libapache2-mod-security2:
sudo apt install libapache2-mod-security2
Po dokončení instalace povolte modul následujícím příkazem:
sudo a2enmod security2
Nezapomeňte restartovat službu Apache2, abyste použili nový modul a změny.
sudo systemctl restart apache2
Povolit modul ModSecurity pro Apache
Konfigurační soubor Apache ModSecurity lze nalézt na adrese /etc/apache2/mods-enabled/security2.conf
.
sudo nano /etc/apache2/mods-enabled/security2.conf
Najděte následující řádek:
IncludeOptional /etc/modsecurity/*.conf
Ujistěte se, že tento řádek je bez komentáře; tak by to mělo být standardně.
Chcete-li pokračovat, přejmenujte modsecurity.conf-recommended
konfigurační soubor:
sudo mv /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf
Otevři modsecurity.conf
soubor s vaším preferovaným textovým editorem v Ubuntu:
sudo nano /etc/modsecurity/modsecurity.conf
Ve výchozím nastavení má konfigurace ModSecurity modul pravidel nastaven na „DetectionOnly“, který detekuje škodlivé chování, ale neblokuje ho ani nezakazuje. Chcete-li povolit ModSecurity, změňte řádek na řádku 7 na „On“:
SecRuleEngine DetectionOnly
Aktualizujte jej na:
SecRuleEngine On
Dále najděte SecAuditLogParts
řádek na řádku 224:
# Log everything we know about a transaction.
SecAuditLogParts ABDEFHIJZ
Toto nastavení je nesprávné a je třeba jej změnit. Upravte jej následovně:
SecAuditLogParts ABCEFHJKZ
Uložte soubor (CTRL+O) a ukončete (CTRL+X). Nakonec restartujte službu Apache a použijte změny:
sudo systemctl restart apache2
Nainstalujte sadu základních pravidel OWASP pro ModSecurity s Apache
ModSecurity sám o sobě nechrání váš webový server; musíte zavést pravidla. Sada základních pravidel OWASP (CRS) patří mezi nejuznávanější a nejpoužívanější sady pravidel. Webové servery a další brány firewall webových aplikací (WAF) tato pravidla běžně používají.
Poznámka: Vždy zkontrolujte Stránka značky OWASP Release pro nejnovější verzi, protože níže uvedený příklad může být zastaralý.
Nejprve vytvořte hlavní nadřazený adresář pro OWASP:
sudo mkdir /etc/apache2/modsec/
Dále použijte wget
příkaz ke stažení archivu OWASP CRS 3.3.4, nejnovější stabilní verze, při zápisu. Podívejte se na výše uvedený odkaz a podívejte se na aktuální vydání základní sady pravidel.
wget https://github.com/coreruleset/coreruleset/archive/refs/tags/v3.3.4.tar.gz
Pokud dáváte přednost používání nočního sestavení, buďte připraveni rekompilovat a často kontrolovat aktualizace CoreRuleSet GitHub. Noční sestavení může nabídnout větší zabezpečení, ale může potenciálně způsobit problémy. Pro začínající uživatele se držte stabilní verze a vyhněte se nočnímu sestavení.
Nyní rozbalte archiv:
sudo tar xvf v3.3.4.tar.gz -C /etc/apache2/modsec
Poznámka: Nezapomeňte upravit příkazy, pokud jste si stáhli jinou verzi OWASP CRS.
OWASP CRS obsahuje vzorový konfigurační soubor, který byste měli přejmenovat. Použijte cp
příkaz k vytvoření kopie při zachování originálu jako zálohy.
sudo cp /etc/apache2/modsec/coreruleset-3.3.4/crs-setup.conf.example /etc/apache2/modsec/coreruleset-3.3.4/crs-setup.conf
Nezapomeňte vyměnit /coreruleset-3.3.4/
s přesnou verzí OWASP CRS, kterou jste si vybrali.
Chcete-li povolit pravidla, otevřete /etc/apache2/mods-enabled/security2.conf
soubor:
sudo nano /etc/apache2/mods-enabled/security2.conf
Přidejte do souboru 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
Nezapomeňte vyměnit /coreruleset-3.3.4/
s přesnou verzí OWASP CRS, kterou jste si vybrali.
Zakomentujte nebo odstraňte následující řádek:
IncludeOptional /usr/share/modsecurity-crs/*.load
Uložte soubor (CTRL+O) a ukončete (CTRL+X).
Chcete-li použít změny, restartujte službu Apache:
sudo systemctl restart apache2
Pochopení OWASP CRS s Modsecurity na Apache
OWASP CRS nabízí četné možnosti a jeho výchozí nastavení poskytuje okamžitou ochranu pro většinu serverů, aniž by to mělo negativní dopad na legitimní návštěvníky nebo SEO roboty. Tato část pokryje některé klíčové oblasti, ale doporučuje se důkladně prozkoumat konfigurační soubory, abyste porozuměli všem dostupným možnostem.
Začněte otevřením svého crs-setup.conf
soubor:
sudo nano /etc/apache2/modsec/coreruleset-3.3.4/crs-setup.conf
Zde můžete upravit většinu nastavení OWASP CRS.
OWASP CRS Scoring s Modsecurity na Apache
ModSecurity funguje ve dvou režimech:
- Režim hodnocení anomálií (doporučeno): V tomto režimu každé odpovídající pravidlo zvyšuje „skóre anomálie“. Skóre anomálií je zkontrolováno po zpracování příchozích a odchozích pravidel a pravidla vyhodnocení blokování použijí rušivou akci (ve výchozím nastavení vrací chybu 403). Tento režim nabízí přesnější informace protokolu a větší flexibilitu při nastavování zásad blokování.
- Samostatný režim: V tomto režimu pravidla aplikují akci okamžitě. Může snížit spotřebu zdrojů, ale nabízí menší flexibilitu v zásadách blokování a méně informativní protokoly auditu. První pravidlo, které se shoduje, provede zadanou akci, což často způsobí zastavení hodnocení po prvním shodě pravidla.
Úrovně paranoie
Existují čtyři úrovně paranoie:
- Paranoia úroveň 1: Výchozí úroveň, doporučená pro většinu uživatelů.
- Paranoia úroveň 2: Pouze pro pokročilé uživatele.
- Paranoia úroveň 3: Pouze pro zkušené uživatele.
- Paranoia úroveň 4: Nedoporučuje se kromě výjimečných okolností.
Vyšší úrovně paranoie umožňují další pravidla pro zvýšení bezpečnosti, ale také zvyšují pravděpodobnost blokování legitimního provozu kvůli falešným poplachům. Vyberte si vhodnou úroveň na základě vašich zkušeností a požadavků na zabezpečení.
Otestujte OWASP CRS na svém serveru
Abyste si ověřili, že OWASP CRS na vašem serveru funguje, otevřete svůj internetový prohlížeč a zadejte následující URL, kde „vasedomena.com“ nahraďte svou skutečnou doménou:
https://www.yourdomain.com/index.html?exec=/bin/bash
Pokud se zobrazí chyba 403 Forbidden, OWASP CRS funguje správně. Pokud ne, možná jste vynechali krok v procesu nastavení.
Nejčastějším problémem je zapomenutí na změnu DetectionOnly
na On
, jak bylo uvedeno dříve v tutoriálu.
Oprava falešných poplachů a vyloučení vlastních pravidel
Řešení falešných poplachů může být nepřetržitý proces, ale ochrana nabízená ModSecurity a OWASP CRS stojí za námahu. Za prvé, je nejlepší udržovat nízkou úroveň paranoie, aby se minimalizoval počet falešně pozitivních výsledků.
Užitečným přístupem je spuštění nastaveného pravidla na několik týdnů nebo měsíců s minimem falešně pozitivních výsledků, než se zvýší úroveň paranoie. Tímto způsobem nebudete zahlceni mnoha falešně pozitivními výsledky najednou.
Vyjma falešně pozitivních známých aplikací
ModSecurity může ve výchozím nastavení přidat na seznam povolených běžných akcí, které vedou k falešným poplachům. Zde je pří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 povolit whitelisting pro aplikace jako WordPress, phpBB a phpMyAdmin, odkomentujte řádky a ponechte hodnotu (1). U ostatních služeb, které nepoužíváte, změňte hodnotu na (0), aby nebyly na seznamu povolených.
Zde je příklad upravené konfigurace:
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říkladu byly odstraněny nepotřebné možnosti a byla použita správná syntaxe.
S výjimkou pravidel před CRS
Chcete-li vytvořit vlastní vyloučení, nejprve změňte název souboru REQUEST-900-EXCLUSION-RULES-BEFORE-CRS-SAMPLE.conf
soubor pomocí cp
příkaz:
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 vyloučení musí mít jedinečné id:<rule number>
jinak se při testování služby Apache2 setkáte s chybami.
Například některé REQUEST_URI
s může vyvolat falešné poplachy. Následující příklad ukazuje dva takové případy s majákem Google PageSpeed a pluginem 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 povolí jakoukoli adresu URL, která začíná zadanou cestou.
IP adresy můžete také přidat na seznam povolených několika různými způsoby:
SecRule REMOTE_ADDR "^195\.151\.128\.96" "id:1004,phase:1,nolog,allow,ctl:ruleEngine=off"
nebo
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"
The @ipMatch
direktivu lze použít pro rozsáhlejší párování podsítí. Chcete-li zakázat podsíť nebo IP adresu, změňte „povolit“ na „zakázat“. S určitou odborností můžete vytvářet černé a bílé listiny a dokonce je integrovat s Fail2Ban. Možnosti jsou téměř neomezené.
Dalším přístupem je deaktivace konkrétních pravidel, která spouštějí falešné poplachy, namísto zařazení celé cesty na seznam povolených. Tato metoda vyžaduje více času a testování. Pokud například pravidla 941000 a 942999 ve vaší oblasti /admin/ trvale spouštějí falešné zákazy a blokování pro váš tým, vyhledejte ID pravidla ve svých protokolech ModSecurity a deaktivujte pouze toto ID pomocí RemoveByID
:
SecRule REQUEST_FILENAME "@beginsWith /admin" "id:1004,phase:1,pass,nolog,ctl:ruleRemoveById=941000-942999"
Pokud jde o falešné poplachy s Apache, ModSecurity a OWASP, je nezbytné sledovat protokoly a identifikovat vzory, které by mohly naznačovat falešné poplachy. Po identifikaci můžete vytvořit vlastní pravidla, která je řeší. Pokud například najdete konkrétní pravidla, která trvale spouštějí falešné poplachy, můžete pro tyto případy vytvořit pravidlo vyloučení.
Nastavte rotaci protokolu pro ModSecurity na Ubuntu
Protokoly ModSecurity mohou přerůstat, takže nastavení rotace protokolů je nezbytné pro jejich efektivní správu. Rotace protokolu není ve výchozím nastavení nakonfigurována, takže musíte vytvořit soubor rotace protokolu pro ModSecurity.
Nejprve vytvořte a otevřete nový soubor rotace ModSecurity s názvem modsec
:
sudo nano /etc/logrotate.d/modsec
Přidejte do souboru následující kód:
/var/log/modsec_audit.log
{
rotate 31
daily
missingok
compress
delaycompress
notifempty
}
Tato konfigurace bude uchovávat protokoly po dobu 31 dnů. Pokud dáváte přednost ukládání protokolů na kratší dobu, změňte nastavení 31
na požadovaný počet dní (např. 7
za týdenní protokoly). Doporučuje se denně střídat protokoly ModSecurity, protože kontrola velkých souborů protokolů pokrývajících celý týden může být docela náročná.
Nastavením rotace protokolů můžete efektivně spravovat své protokoly ModSecurity a zajistit, že starší protokoly budou komprimovány a případně odstraněny, což usnadňuje analýzu a odstraňování problémů, které mohou nastat.
Závěr
V této příručce jsme se zabývali instalací ModSecurity OWASP CRS s Apache na Ubuntu Linux LTS, čímž se zvýší zabezpečení webu vašeho serveru. Udržujte své sady pravidel aktualizované pro průběžnou ochranu, upravujte nastavení tak, aby vyhovovala vašim potřebám, a pravidelně kontrolujte protokoly, abyste získali lepší přehled o obraně. Upřednostňujte zabezpečení svého serveru a zároveň zajistěte hladké toky legitimního provozu. Zůstaňte bdělí a v bezpečí.