---
title: "WAF ehk veebirakenduse tulemüür"
canonical_url: "https://www.zone.ee/blogi/waf-web-application-firewall-veebirakenduse-tulemuur/"
post_type: "post"
published: "2019-08-21T13:23:28+00:00"
modified: "2025-02-26T20:03:25+00:00"
author: "Peeter Marvet"
featured_image: "https://www.zone.ee/static/sites/2/2019/08/CRS-fragment-for-preview.jpg"
taxonomies:
  category:
    - name: "Tehniline"
      url: "https://www.zone.ee/blogi/category/tehniline/"
  post_tag:
    - name: "tulemüür"
      url: "https://www.zone.ee/blogi/tag/tulemuur/"
    - name: "Turvalisus"
      url: "https://www.zone.ee/blogi/tag/turvalisus/"
    - name: "WAF"
      url: "https://www.zone.ee/blogi/tag/waf/"
  skills:
    - name: "Edasijõudnule"
      url: "https://www.zone.ee/blogi/skill/edasijoudnule/"
    - name: "Spetsialistile"
      url: "https://www.zone.ee/blogi/skill/spetsialistile/"
---

# WAF ehk veebirakenduse tulemüür

Näiteks võiks kujutada ette olukorda, kus sisestades kommunaalteenuste ettevõtte näitude teatamise lehel aadressi lahtrisse `' OR 1=1;--` kuvatakse kõigi klientide aadressid ja eelmised näidud… sest täpselt selline näeb välja andmebaasi- ehk [SQL-süst](https://akit.cyber.ee/term/1407-sql-injection). Või siis tehakse WordPressi pihta päring, mis lisab õigusi mitte kontrolliva plugina seadistuste kaudu lehele külastajaid kuhugi edasi suunava Javascripti koodi.

Sellised koodi-vead on ka põhjus, miks tuleb kõike avalikus internetis kättesaadavat praktiliselt igapäevaselt uuendada: iga paigatud turvaprobleem toob hiljemalt 24 tunni jooksul kaasa skannerite laine, mis otsivad haavatavaid veebe.

Lisaks aga on haavatavused, mis ei pruugi veel paika omada – sest arendaja pole probleemist teadlik, ei ole jõudnud seda paigata… või on paigatud, aga uuemas versioonis ja veebi ülemviimine sellele osutub töömahukaks.

### ![](https://www.zone.ee/static/sites/2/2019/08/CRS3-movie-poster-small-214x300.jpg)
Veebirakenduse tulemüür

Sellistel puhkudel võib abi olla **veebirakenduse tulemüürist** ehk **WAF**ist (*web application firewall*), mis proovib kahtlased päringud tuvastada ja blokeerida. Zone Virtuaalserverites on kasutusel [ModSecurity](https://modsecurity.org/) ning nüüd saab mugavalt aktiveerida ka [OWASP ModSecurity Core Rule Set (CRS)](https://modsecurity.org/crs/) tulemüürireegleid:

![](https://www.zone.ee/static/sites/2/2019/08/waf-waf.png)

Valida saab **logimise** või **blokeerimise ja logimise** vahel. Kui on plaan ja võimekus logisid analüüsida, siis tasub loomulikult alustada logimisest ning vältida ausate kasutajate häirimist vale-positiivsete tuvastustega… Aga lihtsam on lülitada blokeerimine sisse ning funktsionaalsused läbi testida.

> Igal juhul soovitame kontrollida, et sisse oleksid lülitatud ka [reaalajas serverisse jõudvad logid](https://www.zone.ee/blogi/2018/04/05/uus-arendajasobralikum-veebilogide-haldamise-kord/).

Umbes 10 minutiga jõuab seadistus Virtuaalserverisse ja kui seejärel proovida näiteks WP otsingusse sisestada `' OR 1=1;--` peaks tulemuseks olema Error403:

![](https://www.zone.ee/static/sites/2/2019/08/error403.png)

Selle tulemusel tekkiavad `/logs/apache.ssl.error.log` faili järgmised read (loetavuse huvides natuke puhastatud):

```
[2019-08-21 09:17:19.367098] [client 217.146.xx.x] ModSecurity: Warning. detected SQLi using libinjection with fingerprint 's&1;c' [file "REQUEST-942-APPLICATION-ATTACK-SQLI.conf"] [line "64"] [id "942100"] [data "Matched Data: s&1;c found within ARGS:s: ' OR 1=1;--"] [severity "CRITICAL"] [uri "/"] [unique_id "XVzh78ean2NKORtLccJqvgAAAAM"]

[2019-08-21 09:17:19.367352] [client 217.146.xx.x] ModSecurity: Access denied with code 403 (phase 2). Inbound Anomaly Score Exceeded (Total Inbound Score: 5 - SQLI=5,XSS=0,RFI=0,LFI=0,RCE=0,PHPI=0,HTTP=0,SESS=0)
```

Logist on näha nii põhjus (SQLi ehk andmebaasisüst), reegli number (942100), selle trigerdanud andmed ja lisaks ka reeglit sisaldanud [OWASP CRS faili nimi](https://github.com/SpiderLabs/owasp-modsecurity-crs/blob/v3.0/master/rules/REQUEST-942-APPLICATION-ATTACK-SQLI.conf).

![](https://www.zone.ee/static/sites/2/2019/08/or-1-1-278x300.jpg)99,99% juhtudest on selline päring seotud turvanõrkuse otsimise või ärakasutamisega, aga vähemalt teoorias võib SQL-friikidele mõeldud poes olla müügil sellenimeline t-särk – samuti võiks tulemüür takistada selle blogipostituse salvestamist.

Lahenduseks on reeglite valikuline väljalülitamine. Selleks saab Virtuaalserveri halduses pea- või alamdomeeni seadetes lisada **Apache direktiivide** ploki, mille sisuks on loetelu reeglitest:

![](https://www.zone.ee/static/sites/2/2019/08/remove-by-id.png)

Vajadusel saab ühele reale sobitada ka rohkem reegleid (tühikuga eraldatuna) või numbrivahemiku (jutumärkides), hea mõte on lisada juurde #-märgiga algav kommentaari-rida ning ümbritseda blokk `IfModule` tingimusega:

```
<IfModule mod_security2.c>
  # Keelame särgiotsingut takistavad reeglid:
  SecRuleRemoveById 942100 942140 "942160-942170"
</IfModule>
```

### Kuidas tuvastada vale-positiivseid?

Kasutaja kaebuse peale logides tuhnimine on vaevarikas töö – pealegi ei ole kuvatav veateade ilus ega informatiivne. Mina olen testimiseks kasutanud vealehte, mida kuvatakse päringu blokeerimisel ning mis saadab juhul, kui kasutaja brauseris on JavaScript olemas, teate e-postile ja/või Slacki kanalisse.

> Keerulisemate rünnete puhul võib toimuda ka JavaScripti interpreteerimine, lisaks ei piira see lahendus teavituste hulka ehk seda saab kasutada siht-aadressi teavitustega ülekoormamiseks.

Vealehe koodi leiab <https://github.com/zone-eu/waf-handler>, seadistamis-juhised sealtsamast.

Tulemuseks sellised teavitused:

![](https://www.zone.ee/static/sites/2/2019/08/waf-slack-waf.png)

### Kas WAF on hõbekuul, mis lahendab kõik veebirakenduste turvaprobleemid?

Kindlasti mitte – [Clarified Security](https://www.clarifiedsecurity.com/)‘s [veebirakenduste turvalist arendust](https://www.clarifiedsecurity.com/web-application-security-training/) õpetav, [läbistustestimise](https://akit.cyber.ee/term/727-penetration-testing) ja [punase tiimi ehk ründaja rollis](https://akit.cyber.ee/term/1169-red-team) veebe lammutav [Elar Lang](https://www.clarifiedsecurity.com/elar-lang/) palus kindlasti lisada:

> WAF on kasulik “teise liini kaitsemeetmena” ja raskendab ründe läbi viimist ning hoiab heal juhul eemal teadaolevatele turvaaukudele keskendnud skänneritega “skriptijõnglased” AGA:
>
> **WAF ei tee korda programmikoodis olevaid turvaauke, need vajavad ikkagi parandamist.**

Olles olnud Elari punase veebitiimi tubli töö sihtmärk [Locked Shields küberõppusel](https://www.zone.ee/blogi/2017/05/04/locked-shields-2017-sinine-seestvaade/) võin vaid nõustuda – tänu WAFile võib mõni teine veeb osutuda lihtsamini rünnatavaks, aga see ei muuda sind kuulikindlaks.
