Trenutno stanje: PHP2Shell. Dvije kritične PHP ranjivosti (CVSS 9.2) omogućuju zlonamjerni kod bez prijave. Zakrpe od 21. 10. 2026.Što sada učiniti →

Primijeniti ModSecurity i OWASP Core Rule Set

Vlastiti Web Application Firewall s ModSecurityjem i OWASP Core Rule Setom besplatan je i moćan, ali ne ide sam od sebe. Evo kako odabrati engine, krenuti bez ispada i uskladiti pravila.

Stanje 5 min čitanjaOjačavanje i konfiguracija

Ukratko: ModSecurity je Web Application Firewall koji radi u web-poslužitelju; OWASP Core Rule Set (CRS) uz njega donosi slobodno dostupna pravila protiv uobičajenih vrsta napada. Za Apache CRS projekt preporučuje ModSecurity v2, za Nginx dolaze u obzir v3 konektor ili Coraza. Počnite u načinu blokiranja s vrlo visokim pragovima anomalija, postupno ih snižavajte, a lažne uzbune rješavajte ciljanim iznimkama. PHP ažuriranje to ne zamjenjuje.

Vlastiti WAF kao dodatni sloj

Od PHP2Shella mnoge tvrtke pitaju trebaju li Web Application Firewall. Tko svoje web-stranice isporučuje preko Cloudflarea, prema Cloudflareu ima automatski aktivna zaštitna pravila od 21. listopada 2026. Tko to ne čini ili ne želi promet voditi preko treće strane, WAF može pokretati izravno na vlastitom poslužitelju.

Najpoznatija kombinacija za to je ModSecurity s OWASP Core Rule Setom. Oboje je otvorenog koda i besplatno. CRS je zbirka općih pravila prepoznavanja, primjerice protiv SQL injectiona, cross-site scriptinga ili ubacivanja datoteka. Projekt svoj cilj sam opisuje kao opće prepoznavanje napada s što manje lažnih uzbuna, kao jedan gradivni element među više njih.

Time je imenovana i granica. WAF provjerava zahtjeve i odgovore, ne popravlja ranjivost u PHP interpreteru. Zašto trebate oboje, opisuje članak WAF ili ažuriranje: zašto trebate oboje.

Koji engine odgovara Vašem web-poslužitelju

Skup pravila treba engine koji ga izvršava. Prema CRS dokumentaciji postoje tri kompatibilne opcije:

Engine Web-poslužitelj Svrstavanje prema CRS projektu
ModSecurity v2 Apache (modul) referentna implementacija, preporučena za Apache
ModSecurity v3 (libModSecurity) ponajprije Nginx putem konektora samo je Nginx konektor doista upotrebljiv u produkciji; ne prolazi 2 do 4 posto CRS testova
Coraza proxyji i integracije temeljeni na Go-u u cijelosti prolazi CRS v4 testni paket

Za pozadinu: ModSecurity je dugo razvijao Trustwave. Trustwave je 2021. najavio prekid razvoja 2024. Dana 25. siječnja 2024. projekt je prešao u OWASP Foundation. Kod novih instalacija provjerite koju verziju isporučuje Vaša distribucija i koliko je aktualna.

Kako radi Core Rule Set

CRS u zadanoj postavci ne blokira već pri prvoj sumnjivoj neobičnosti. Radi s bodovima anomalije: svako aktivirano pravilo zbraja bodove prema težini, a tek kad zbroj premaši prag, zahtjev se odbija.

  1. Težine: kritično 5 bodova, pogreška 4, upozorenje 3, napomena 2.
  2. Prag za zahtjeve: tx.inbound_anomaly_score_threshold, zadano 5.
  3. Prag za odgovore: tx.outbound_anomaly_score_threshold, zadano 4.
  4. Razine paranoje 1 do 4 u crs-setup.conf: razina 1 osnovna je zaštita za svaki poslužitelj na internetu, razina 2 prema projektu odgovara aplikacijama sa stvarnim korisničkim podacima poput web-shopova, razine 3 i 4 donose znatno više lažnih uzbuna.

Viša razina paranoje prepoznaje više, ali izaziva i više lažnih uzbuna. Za većinu tvrtkinih web-stranica razina 1 je početak, a razina 2 kasniji cilj.

Uvesti ModSecurity s OWASP CRS bez paralize web-stranice

CRS projekt za nove instalacije preporučuje da se način blokiranja uključi od početka, ali s vrlo visokim pragovima, do 10000, te da se zatim postupno snižavaju. Tako skupljate iskustvo sa stvarnim pristupima bez isključivanja korisnika. Pragove postavljate u crs-setup.conf:

# crs-setup.conf: početna faza s vrlo visokim pragovima
SecAction \
    "id:900110,\
    phase:1,\
    pass,\
    t:none,\
    nolog,\
    setvar:tx.inbound_anomaly_score_threshold=10000,\
    setvar:tx.outbound_anomaly_score_threshold=10000"

Uključivanje pod Apacheom slijedi redoslijed koji CRS dokumentacija propisuje za dodatke. Putovi se razlikuju po distribuciji:

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

Zatim analizirajte audit zapisnik određen u SecAuditLog. Kako sustavno pretraživati zapisnike, opisuje vodič Analizirati zapisnike web-poslužitelja nakon napada. Pragove snižavajte po stupnjevima, primjerice kroz nekoliko tjedana, dok ne stignete do zadane vrijednosti.

Ciljano postupati s lažnim uzbunama

Lažne uzbune su normalne, osobito u CMS backendima s uređivačima koji spremaju HTML. Najlošija reakcija je isključiti WAF. Bolja su dva alata.

Prvo, dodaci: CRS projekt održava dodatke s pravilima iznimaka za raširene aplikacije, primjerice za WordPress. Kopiraju se u mapu dodataka i učitavaju putem gore prikazanih Include redaka. Službeni popis projekt vodi u svom direktoriju dodataka.

Drugo, vlastite, usko zahvaćene iznimke. Umjesto da pravilo isključite posvuda, uklonite ga samo za putanju na kojoj smeta:

# Vlastita iznimka, učitati PRIJE CRS pravila (npr. u datoteci *-before.conf)
SecRule REQUEST_URI "@beginsWith /admin/editor/speichern" \
    "id:1000010,\
    phase:1,\
    pass,\
    nolog,\
    ctl:ruleRemoveById=941100"

ID pravila preuzmite iz audit zapisnika lažne uzbune. Svaku iznimku dokumentirajte s razlogom i datumom kako bi se kasnije mogla preispitati.

Savjet

Nakon svake izmjene pragova ili iznimaka testirajte kritične putove svoje aplikacije: prijavu, narudžbu, plaćanje, kontaktni obrazac i redakciju. WAF koji blokira narudžbe brzo se ponovno isključi.

Za Apache poslužitelje isplati se WAF obraditi zajedno s ostalom konfiguracijom; osnove su u članku Sigurno konfigurirati Apache za PHP. Kako Cloudflare pravila svrstati usporedno, pokazuje članak Cloudflareova zaštitna pravila protiv PHP2Shella. Prijelazne mjere na samom poslužitelju nalaze se na stranici Hitne mjere ako još ne možete zakrpati.

Zaključak: WAF traži njegu

ModSecurity s OWASP Core Rule Setom daje Vam snažan Web Application Firewall bez licencnih troškova i bez ovisnosti o vanjskoj usluzi. Cijena je rad: engine prilagoditi web-poslužitelju, početi s visokim pragovima, analizirati lažne uzbune, održavati iznimke i držati pravila aktualnima.

Tko taj trud ne može uložiti, često je bolje poslužen dobro konfiguriranim cloud WAF-om. Tko ga uloži, dobiva sloj koji presreće mnoge standardne napade i u audit zapisnicima daje vrijedne naznake. U svakom slučaju ne zamjenjuje ažuriranje: protiv PHP2Shella štite samo PHP 8.5.12, 8.4.27, 8.3.36, 8.2.35 ili potvrđeni backport, nakon čega slijedi ponovno pokretanje svih PHP procesa.

Kako PHP SOS konkretno pomaže?

  • Odabrati engine: provjeravamo web-poslužitelj, distribuciju i postojeće pakete te preporučujemo prikladnu kombinaciju.
  • Uvesti: instaliramo CRS s visokim početnim pragovima, uključujemo prikladne dodatke i postavljamo zapisivanje.
  • Uskladiti: kroz nekoliko tjedana analiziramo lažne uzbune, izrađujemo ciljane iznimke i snižavamo pragove.
  • Svrstati: u sklopu WAF-a i virtualnog zakrpanja povezujemo WAF s prijelaznim mjerama i putem do redovite zakrpe.

Česta pitanja

Štiti li OWASP CRS od PHP2Shella?

Na to se ne biste smjeli oslanjati. Core Rule Set prepoznaje opće obrasce napada i nije skrojen za određenu ranjivost. Cloudflare uz to upozorava da kod PHP2Shella pravila samo na temelju podataka zahtjeva nisu dovoljna. PHP ažuriranje ostaje obvezno.

Koji engine odabrati za Nginx?

Prema CRS projektu kod ModSecurityja v3 samo je Nginx konektor doista upotrebljiv u produkciji, a v3 ne prolazi mali dio CRS testova. Alternativa je Coraza, koja prema navodima projekta u cijelosti prolazi CRS v4 testni paket. Za Apache projekt preporučuje ModSecurity v2.

Održava li se ModSecurity još?

Prema CRS dokumentaciji Trustwave je najavio da će razvoj prekinuti 2024. Dana 25. siječnja 2024. projekt je predan OWASP Foundation i od tada se tamo nastavlja.

Kako spriječiti da WAF paralizira moj shop?

Počnite s vrlo visokim pragovima anomalija, kako preporučuje CRS projekt, i snižavajte ih postupno. Pritom analizirajte zapisnike i izradite ciljane iznimke za svoju aplikaciju umjesto da pravila paušalno isključujete.

Izvori

Hitni kontakt

Svaki sat se računa. Pišite nam odmah.

Ukratko opišite sustav, verziju PHP-a i opažanje. Javit ćemo Vam se, razjasniti situaciju i raditi na daljinu dok incident nije zaključen i dokumentiran.

Hitna pomoć