Aktuálna situácia: PHP2Shell. Dve kritické zraniteľnosti PHP (CVSS 9.2) umožňujú spustenie škodlivého kódu bez prihlásenia. Záplaty od 21. 10. 2026.Čo treba urobiť teraz →

Nasadenie ModSecurity a OWASP Core Rule Set

Vlastná Web Application Firewall s ModSecurity a OWASP Core Rule Set je bezplatná a výkonná, nie je však samoobslužná. Takto vyberiete engine, začnete bez výpadkov a pravidlá doladíte.

Stav 5 min čítaniaHardening a konfigurácia

Stručne: ModSecurity je Web Application Firewall, ktorá beží vo webovom serveri; OWASP Core Rule Set (CRS) k nej dodáva voľne dostupné pravidlá proti rozšíreným druhom útokov. Pre Apache projekt CRS odporúča ModSecurity v2, pre Nginx prichádza do úvahy konektor v3 alebo Coraza. Začnite v blokovacom režime s veľmi vysokými prahmi anomálií, postupne ich znižujte a falošné poplachy riešte cielenými výnimkami. Aktualizáciu PHP to nenahrádza.

Vlastná WAF ako dodatočná vrstva

Od PHP2Shell sa mnohé firmy pýtajú, či potrebujú Web Application Firewall. Kto doručuje svoje weby cez Cloudflare, má podľa Cloudflare od 21. októbra 2026 automaticky aktívne ochranné pravidlá. Kto to nerobí alebo nechce smerovať prenos údajov cez tretiu stranu, môže prevádzkovať WAF priamo na vlastnom serveri.

Najznámejšou kombináciou na to je ModSecurity s OWASP Core Rule Set. Oboje je s otvoreným zdrojovým kódom a bezplatné. CRS je zbierka všeobecných pravidiel rozpoznávania, napríklad proti SQL injection, cross-site scriptingu alebo votkávaniu súborov. Projekt sám opisuje svoj cieľ ako všeobecné rozpoznávanie útokov s čo najmenším počtom falošných poplachov, ako jeden stavebný prvok z viacerých.

Tým je pomenovaná aj hranica. WAF kontroluje požiadavky a odpovede, neopravuje zraniteľnosť v interpreteri PHP. Prečo potrebujete oboje, opisuje WAF alebo aktualizácia: prečo potrebujete oboje.

Ktorý engine sa hodí k vášmu webovému serveru

Pravidlá potrebujú engine, ktorý ich vykonáva. Podľa dokumentácie CRS existujú tri kompatibilné možnosti:

Engine Webový server Zaradenie podľa projektu CRS
ModSecurity v2 Apache (modul) referenčná implementácia, odporúčaná pre Apache
ModSecurity v3 (libModSecurity) predovšetkým Nginx cez konektor skutočne produkčne použiteľný je len konektor Nginx; nezvláda 2 až 4 percentá testov CRS
Coraza proxy a integrácie na báze Go úplne zvláda testovaciu sadu CRS v4

K pozadiu: ModSecurity dlho vyvíjal Trustwave. Trustwave v roku 2021 oznámil ukončenie vývoja v roku 2024. Dňa 25. januára 2024 prešiel projekt na OWASP Foundation. Pri nových inštaláciách skontrolujte, akú verziu vaša distribúcia dodáva a aká je aktuálna.

Ako pracuje Core Rule Set

CRS v štandardnom nastavení neblokuje pri prvej podozrivej nápadnosti. Pracuje s bodmi anomálií: každé spustené pravidlo pripočíta body podľa svojej závažnosti a až keď súčet prekročí prah, požiadavka sa odmietne.

  1. Stupne závažnosti: kritická 5 bodov, chyba 4, upozornenie 3, poznámka 2.
  2. Prah pre požiadavky: tx.inbound_anomaly_score_threshold, štandard 5.
  3. Prah pre odpovede: tx.outbound_anomaly_score_threshold, štandard 4.
  4. Úroveň paranoje 1 až 4 v crs-setup.conf: úroveň 1 je základné zabezpečenie pre každý server v internete, úroveň 2 sa podľa projektu hodí pre aplikácie so skutočnými údajmi používateľov, ako sú e-shopy, úrovne 3 a 4 prinášajú výrazne viac falošných poplachov.

Vyššia úroveň paranoje rozpozná viac, spôsobuje však aj viac falošných poplachov. Pre väčšinu firemných webov je úroveň 1 začiatkom, úroveň 2 neskorším cieľom.

Nasadenie ModSecurity s OWASP CRS bez ochromenia webu

Projekt CRS odporúča pri nových inštaláciách zapnúť blokovací režim hneď od začiatku, ale s veľmi vysokými prahmi, až do 10000, a tie potom postupne znižovať. Tak získate skúsenosti so skutočnými prístupmi bez vylúčenia používateľov. Prahy nastavíte v crs-setup.conf:

# crs-setup.conf: úvodná fáza s veľmi vysokými prahmi
SecAction \
    "id:900110,\
    phase:1,\
    pass,\
    t:none,\
    nolog,\
    setvar:tx.inbound_anomaly_score_threshold=10000,\
    setvar:tx.outbound_anomaly_score_threshold=10000"

Zapojenie pod Apache sleduje poradie, ktoré dokumentácia CRS predpisuje pre pluginy. Cesty sa podľa distribúcie líšia:

<IfModule security2_module>
    SecRuleEngine On
    Include /etc/modsecurity/crs/crs-setup.conf
    Include /etc/modsecurity/crs/plugins/*-config.conf
    Include /etc/modsecurity/crs/plugins/*-before.conf
    Include /etc/modsecurity/crs/rules/*.conf
    Include /etc/modsecurity/crs/plugins/*-after.conf
</IfModule>

Potom vyhodnocujte auditný protokol, ktorý je určený v SecAuditLog. Ako protokoly systematicky prehľadávať, opisuje Vyhodnotenie protokolov webového servera po útoku. Prahy znižujte po stupňoch, napríklad počas niekoľkých týždňov, kým nedosiahnete štandardnú hodnotu.

Cielene riešiť falošné poplachy

Falošné poplachy sú normálne, najmä v backendoch CMS s editormi, ktoré ukladajú HTML. Najhoršou reakciou je WAF vypnúť. Lepšie sú dva nástroje.

Po prvé pluginy: projekt CRS udržiava pluginy s pravidlami výnimiek pre rozšírené aplikácie, napríklad pre WordPress. Kopírujú sa do priečinka pluginov a načítavajú cez vyššie uvedené riadky Include. Oficiálny zoznam vedie projekt vo svojom adresári pluginov.

Po druhé vlastné, úzko vymedzené výnimky. Namiesto vypnutia pravidla všade ho vyberiete len pre cestu, na ktorej prekáža:

# Vlastná výnimka, načítať PRED pravidlami CRS (napr. v súbore *-before.conf)
SecRule REQUEST_URI "@beginsWith /admin/editor/speichern" \
    "id:1000010,\
    phase:1,\
    pass,\
    nolog,\
    ctl:ruleRemoveById=941100"

ID pravidla nájdete v auditnom protokole falošného poplachu. Každú výnimku zdokumentujte s dôvodom a dátumom, aby sa dala neskôr preskúmať.

Tip

Po každej zmene prahov alebo výnimiek otestujte kritické cesty svojej aplikácie: prihlásenie, objednávku, platbu, kontaktný formulár a redakciu. WAF, ktorá blokuje objednávky, sa rýchlo opäť vypne.

Pri serveroch Apache sa oplatí pustiť sa do WAF spolu so zvyšnou konfiguráciou; základy sú pri Bezpečná konfigurácia Apache pre PHP. Ako zaradiť pravidlá Cloudflare v porovnaní, ukazuje Ochranné pravidlá Cloudflare proti PHP2Shell. Prechodné opatrenia na samotnom serveri sú pri Okamžité opatrenia, ak ešte nemôžete záplatovať.

Záver: WAF potrebuje starostlivosť

ModSecurity s OWASP Core Rule Set vám dáva výkonný Web Application Firewall bez licenčných nákladov a bez závislosti od externej služby. Cenou je práca: vybrať engine zodpovedajúci webovému serveru, začať s vysokými prahmi, vyhodnocovať falošné poplachy, udržiavať výnimky a pravidlá udržiavať aktuálne.

Kto túto námahu zvládnuť nedokáže, je s dobre nakonfigurovanou cloudovou WAF často na tom lepšie. Kto ju zvládne, získa vrstvu, ktorá zachytí mnohé štandardné útoky a v auditných protokoloch poskytuje cenné náznaky. V žiadnom prípade nenahrádza aktualizáciu: proti PHP2Shell chránia len PHP 8.5.12, 8.4.27, 8.3.36, 8.2.35 alebo potvrdený backport, nasledovaný reštartom všetkých procesov PHP.

Ako konkrétne pomáha PHP SOS?

  • Vybrať engine: preveríme webový server, distribúciu a dostupné balíky a odporúčame vhodnú kombináciu.
  • Zaviesť: nainštalujeme CRS s vysokými štartovacími prahmi, zapojíme vhodné pluginy a zriadime zapisovanie do protokolu.
  • Doladiť: počas niekoľkých týždňov vyhodnocujeme falošné poplachy, vytvárame cielené výnimky a znižujeme prahy.
  • Zaradiť: v rámci WAF a virtuálneho záplatovania spájame WAF s prechodnými opatreniami a cestou k riadnej záplate.

Časté otázky

Chráni OWASP CRS pred PHP2Shell?

Nemali by ste to predpokladať. Core Rule Set rozpoznáva všeobecné vzory útokov a nie je zameraný na konkrétnu zraniteľnosť. Cloudflare navyše upozorňuje, že pravidlá len na základe údajov požiadavky pri PHP2Shell nestačia. Aktualizácia PHP ostáva povinná.

Ktorý engine mám použiť pre Nginx?

Podľa projektu CRS je pri ModSecurity v3 skutočne produkčne použiteľný len konektor Nginx a v3 nezvláda malú časť testov CRS. Alternatívou je Coraza, ktorá podľa údajov projektu úplne zvláda testovaciu sadu CRS v4. Pre Apache projekt odporúča ModSecurity v2.

Je ModSecurity ešte udržiavaný?

Podľa dokumentácie CRS Trustwave oznámil ukončenie vývoja v roku 2024. Dňa 25. januára 2024 bol projekt odovzdaný OWASP Foundation a odvtedy sa tam ďalej vedie.

Ako zabránim tomu, aby WAF ochromila môj e-shop?

Začnite s veľmi vysokými prahmi anomálií, ako odporúča projekt CRS, a znižujte ich postupne. Pritom vyhodnocujte protokoly a pre svoju aplikáciu vytvorte cielené výnimky, namiesto plošného vypínania pravidiel.

Zdroje

Okamžitý kontakt

Každá hodina sa počíta. Napíšte nám hneď.

Stručne opíšte systém, verziu PHP a svoje pozorovanie. Ozveme sa, vyjasníme situáciu a budeme pracovať na diaľku, kým nebude incident uzavretý a zdokumentovaný.

Okamžitá pomoc