• Ei tuloksia

Apache-verkkopalvelimen tietoturvallisuus

N/A
N/A
Info
Lataa
Protected

Academic year: 2022

Jaa "Apache-verkkopalvelimen tietoturvallisuus"

Copied!
41
0
0

Kokoteksti

(1)

Jani Päivärinta

APACHE-VERKKOPALVELIMEN TIETOTURVALLISUUS

Parhaat käytännöt Apache-verkkopalvelimen ylläpitäjille

Tekniikka 2019

(2)

Tietotekniikka TIIVISTELMÄ

Tekijä Jani Päivärinta

Opinnäytetyön nimi Apache-verkkopalvelimen tietoturvallisuus

Vuosi 2019

Kieli suomi

Sivumäärä 37

Ohjaaja Jukka Matila

Tämän opinnäytetyön tarkoitus on kehittää parhaat käytännöt Apache-verkkopal- velimen tietoturvallisuuden koventamiseksi erityisesti Apache-verkkopalvelimen ylläpitäjille.

Opinnäytetyössä syvennytään Apache-verkkopalvelimen tietoturvallisuus-ominai- suuksiin, verkkopalvelimen kovennuksen parhaisiin käytäntöihin sekä palvelimen tietoturvallisuuteen yleisesti verkkopalvelimen turvallisuuteen keskittyneestä näkö- kulmasta.

Verkkopalvelimet ovat keskeisiä tekijöitä maailmanlaajuisesti verkottuneessa maa- ilmassa ja sen päällä toteutetaan useita erilaisia verkkopalveluja, kuten verkkosi- vuja, sisällönhallintaohjelmistoja, web-applikaatioita ja muita verkkopalveluja.

Tämä asettaa Apache-verkkopalvelimelle tietoturvallisuusvaatimuksia koska WWW-palvelimen tietoturvallisuus vaikuttaa sen päällä olevien sisältöjen tietotur- vallisuuteen aivan niin kuin käyttöjärjestelmän tietoturvallisuus vaikuttaa niissä käytettävien ohjelmistojen tietoturvallisuuteen.

Opinnäytetyö pyrkii löytämään parhaat käytännöt suureen, keskisuureen tai pienen yrityksen, yhteisön tai yksityishenkilön Apache-verkkopalvelimen tietoturvalliseen toteuttamiseen ja tällä tavalla lisäämään sekä palvelun tuottajien, että palvelun käyt- täjien tietoturvallisuutta kokonaisuudessaan.

Avainsanat tietotekniikka, palvelinohjelmisto, apache, tietoturvallisuus

(3)

TIIVISTELMÄ

1 JOHDANTO ... 7

1.1 Opinnäytetyön aihe ja valintaperusteet... 7

1.2 Opinnäytetyön rajaaminen ... 7

1.3 Muu kehitystyö ja tarpeellisuusvaatimus... 8

1.4 Keskeiset käsitteet ... 9

1.4.1 Apache-verkkopalvelin ... 9

1.4.2 HTTP-protokolla ... 9

1.4.3 Tietotekninen tietoturvallisuus ... 9

1.4.4 Kovennus ... 10

1.4.5 Vähimpien oikeuksien periaate... 10

2 TIETOTEORIA ... 12

2.1 Apache WWW-palvelin... 12

2.2 SSL/TLS eli Secure Socket Layer/Transport Layer Security ... 12

2.3 Palvelinvarmenne ... 12

2.4 PKI-järjestelmä ... 13

2.5 HTTPS-protokolla ... 13

2.6 Apachen lisämoduulit ... 13

2.6.1 Mod_ssl ja Mod_gnutls ... 14

2.6.2 Mod_evasive ... 14

2.6.3 Mod_security ... 14

2.6.4 Mod_geoip ... 14

2.6.5 Mod_header ... 14

2.6.6 Mod_php ... 14

2.6.7 Mod_access ... 15

2.7 Apache WWW-palvelimen yleisimmät tietoturvallisuusuhat ... 15

2.7.1 Palvelintietojen paljastuminen ... 15

2.7.2 Hakemistolistauksen jääminen päälle ... 16

2.7.3 FileETagin jääminen päälle ... 16

(4)

2.7.5 HTTP-pyyntöjen rajoittamatta jättäminen... 18

2.7.6 Clickjacking-hyökkäyksen estämättä jättäminen ... 18

2.7.7 SSI-hyökkäyksen estämättä jättäminen ... 18

2.7.8 XSS-suojauksen jättäminen pois päältä ... 18

2.7.9 Vanhentuneiden SSL/TLS-versioiden käyttö ... 19

2.7.10 Mod Securityn pois jättäminen ... 19

3 KEHITYSTYÖ ... 20

3.1 Apache WWW-palvelimen asennus ... 20

3.2 SSL/TLS:n käyttöönotonperustoimet ... 20

3.3 Ulkopuolisen palvelinvarmenteen asentaminen ... 21

3.4 HTTPS-yhteyden käyttöönotto ... 22

3.5 Lisämoduulien käyttöönotto ... 22

3.5.1 Mod_gnutls -lisämoduulin käyttöönotto ... 22

3.5.2 Mod_evasive -lisämoduulin käyttöönotto ... 23

3.5.3 Mod_security -lisämoduulin käyttöönotto ... 23

3.5.4 Mod_geoip -lisämoduulin käyttöönotto ... 23

3.5.5 Mod_php -lisämoduulin käyttöönotto ... 24

3.6 Apache WWW-palvelimen tietoturvallisuusuhkien korjaaminen ... 25

3.6.1 Palvelintietojen paljastumisen estäminen ... 25

3.6.2 Hakemistolistauksen estäminen ... 25

3.6.3 FileETagin poisottaminen käytöstä... 26

3.6.4 Hakemistojen ja tiedoston käyttöoikeuksien asettaminen ... 26

3.6.5 HTTP-pyyntöjen rajoittaminen ... 26

3.6.6 Clickjacking-hyökkäyksen estäminen ... 27

3.6.7 SSI-hyökkäyksen estäminen ... 27

3.6.8 XSS-suojauksen päälle laittaminen... 27

3.6.9 SSL/TLS-kovennus ... 28

4 TULOSTEN TARKASTELU ... 29

4.1 Porttien 80 ja 443 testaaminen ... 29

4.2 SSL/TLS-palvelinvarmenteiden testaaminen ... 29

4.3 IP-perusteisen geoblokkauksen testaaminen ... 30

(5)

4.5 Hakemistolistauksen testaaminen ... 32

4.6 FileETagin testaaminen ... 34

4.7 Hakemistojen ja tiedostojen käyttöoikeuksien testaaminen ... 35

4.8 HTTP-pyyntöjen rajoitusten testaaminen ... 36

4.9 Clickjacking-hyökkäyksen estämisen testaaminen ... 36

4.10 XSS-suojauksen testaaminen ... 37

5 JOHTOPÄÄTÖKSET ... 39

5.1 Suhde käyttöjärjestelmiin ja web-applikaatioihin ... 39

5.2 Suhde muihin tietoturvallisuuskäytäntöihin ... 39

5.3 Yhteenveto ... 39

LÄHTEET ... 40

(6)

Kuva 1. Palvelintietojen paljastuminen ... 15

Kuva 2. Hakemistolistaus on päällä ... 16

Kuva 3. FileETag on jäänyt päälle ... 17

Kuva 4. Tiedoston ja hakemiston täydet käyttöoikeudet ... 17

Kuva 5. HTTP-pyyntöjen tarkistus nmap-ohjelmistolla ... 18

Kuva 6. Vanhetuneita SSL/TLS-versioita ... 19

Kuva 7. Porttiskannaus kovennettuun WWW-palvelimeen ... 29

Kuva 8. Porttiskannaus ei-kovennettuun WWW-palvelimeen ... 29

Kuva 9. SSLscan kovennettuun WWW-palvelimeen ... 29

Kuva 10. SSLscan ei-kovennettuun WWW-palvelimeen ... 30

Kuva 11. Firefox-selain ei pysty kytkeytymään ulkomaisesta VPN-palvelimesta Suomessa sijaitsevalle palvelimelle, jossa Geoblokkaus on päällä ... 30

Kuva 12. Firefox-selain kytkeytyy suomen IP-osoitteesta Suomessa sijaitsevalle palvelimelle ... 31

Kuva 13. HTTP-pyyntö virheilmoituksen saamiseksi ... 31

Kuva 14. HTTP-pyyntö ei-kovennettuun palvelimeen ... 32

Kuva 15. Hakemistolistauksen testaaminen kovennettuun WWW-palvelimeen . 32 Kuva 16. Hakemistolistauksen testaaminen ei-kovennettuun WWW-palvelimeen ... 33

Kuva 17. HTTP-pyyntö GET-metodilla, kun FileETag ei ole päällä ... 34

Kuva 18. HTTP-pyyntö GET-metodilla, kun FileETag on päällä ... 35

Kuva 19. Hakemistojen ja tiedostojen käyttöoikeudet kovennetussa WWW- palvelimessa... 35

Kuva 20. Hakemistojen ja tiedostojen käyttöoikeudet ei-kovennetussa WWW- palvelimessa... 35

Kuva 21. HTTP-pyyntöjen rajoitukset ovat käytössä ... 36

Kuva 22. HTTP-pyyntöjen rajoitukset eivät ole käytössä ... 36

Kuva 23. HTTP-pyyntö suojatulle WWW-palvelimelle ... 36

Kuva 24. HTTP-pyyntö suojaamattomalle WWW-palvelimelle ... 37

Kuva 25. HTTP-pyyntö kun XSS-suojaus on päällä ... 37

Kuva 26. HTTP-pyyntö kun XSS-suojaus ei ole päällä ... 38

(7)

1 JOHDANTO

1.1 Opinnäytetyön aihe ja valintaperusteet

Tämän opinnäytetyön aihe on Apache-verkkopalvelimen tietoturvallisuus. Aihe on valittu sen takia, koska tietoturvallisuus on tällä hetkellä maailmanlaajuisesti ajan- kohtainen aihe, mutta myös kysymys hyvin monelle verkkopalvelimen ylläpitäjälle.

Valtiot, yritykset, yhteisöt, mutta myös yksityishenkilöt ovat keskittyneet yhä enemmissä määrin erilaisiin tietoturvallisuusuhkiin ja niiden torjuntaan. Aihe on jatkuvasti esillä sekä ulkomaiden että Suomen mediassa, lainsäädännön valmiste- lussa ja usein myös poliitikkojen puheenvuoroissa. Apache-verkkopalvelin on yksi pieni osa tätä paljon suurempaa tietoturvallisuuden maailmanlaajuista kokonaisku- vaa.

Useat yritysten, yhteisöjen ja yksityishenkilöiden verkkopalvelut toimivat Apachen tai jonkin muun verkkopalvelimen päällä, mikä asettaa varsinaiselle verkkopalveli- melle erilaisia tietoturvallisuusvaatimuksia. Tässä opinnäytetyössä syvennytään Apache-verkkopalvelimen tietoturvallisuuteen.

1.2 Opinnäytetyön rajaaminen

Apache-verkkopalvelin toimii pääsääntöinen Linux- tai Windows-käyttöjärjestel- män päällä. Tämän lisäksi Apache-verkkopalvelimen päällä toimii yritysten, yhtei- söjen tai yksityishenkilöiden verkkosivuja, sisällönhallintajärjestelmiä, web-appli- kaatioita ja muita verkkopalvelimella toteutettavia palveluja, kuten rajapintoja, pil- vipalveluita jne.

Tämä opinnäytetyö keskittyy ainoastaan Apache-verkkopalvelimen tietoturvalli- suuteen. Opinnäytetyössä ei käsitellä erilaisia käyttöjärjestelmiä ja niiden tieturval- lisuusominaisuuksia eikä opinnäytetyössä myöskään käsitellä Apache-verkkopal- velimella toimivia erilaisia sisältöjä, vaan jokainen verkkosivu, sisällönhallintajär- jestelmä, web-applikaatio tai verkkopalvelimella toteutettu muu palvelu edellyttää myös niiden omia tietoturvallisuusominaisuuksia Apache-verkkopalvelimen tieto- turvallisuusominaisuuksien lisäksi.

(8)

Apache-verkkopalvelimen tietoturvallisuus antaa kuitenkin tietoturvallisesta näkö- kulmasta katsottuna tukevan ponnistuspohjan erilaisille verkkopalveluiden toteu- tuksille, aivan niin kuin erinomaisesti toteutettu käyttöjärjestelmän tietoturvallisuus antaa tukevan ponnistuspohjan Apachen tai muun verkkopalvelimen tietoturvalli- selle toiminnalle.

1.3 Muu kehitystyö ja tarpeellisuusvaatimus

Apache on hyvin yleinen verkkopalvelin maailmalla. Noin 44 % maailman verkko- sivuista on toteutettu Apache-verkkopalvelimen avulla (W3Techs – Web Techno- logy Surveys, 2019). Muita maailmalla olevia verkkopalvelinohjelmistoja ovat mm. Microsoftin IIS, Lightspeed, Nginx ja Googlen omat palvelimet.

Internet on myös täynnä erilaisia Apache-verkkopalvelimien koventamiseen kes- kittyneitä sivustoja ja yksittäisiä ohjeita, kuten ”13 Apache-verkkopalvelimen tur- vallisuus- ja kovennusesimerkkiä” (TecMint, 2019) tai ”Turvallisuusesimerkkejä”

(Apache HTTP Server Project, 2019).

Ne eivät kuitenkaan vastaa kokonaisvaltaisesti Apache-verkkopalvelimen tietotur- vallisuusominaisuuksiin vaan antavat pikemminkin hajanaisen kuvan Apache-verk- kopalvelimen tietoturvallisuusominaisuuksista. Myöskään useat hosting-palvelujen tarjoajat eivät välttämättä ole edellä mainittuja ohjeita lukeneet tai soveltaneet niitä omiin Apache-verkkopalvelimiin. Palvelinpalvelua ostavalle kuluttajalle tai yrityk- selle tämä näkyy mm. Apache-verkkopalvelimen hankkimista käyttöön, mutta il- man tietoturvallisuuteen keskittyneitä ominaisuuksia.

Turvallisuustietoisten Apache-verkkopalvelimen ylläpitäjien vastuulle jää kerätä useista eri lähteistä hajanaista kokonaiskuvaa verkkopalvelimen tieturvallisuuden varmistamiseksi, koska monikaan verkkopalvelimen palveluntuottaja ei välttämättä ole kiinnittänyt siihen mitään huomiota. Tämän opinnäytetyön tarkoitus on kerätä tuo hajanainen tieto yhdeksi parhaaksi käytännöt kokonaisuudeksi, josta syntyy kat- tava ohjekokoelma.

(9)

1.4 Keskeiset käsitteet

1.4.1 Apache-verkkopalvelin

Apache-verkkopalvelimella tarkoitetaan tässä opinnäytetyössä Apache Software Foundationin avoimeen lähdekoodiin perustuvaa HTTP-palvelinohjelmaa (Apache HTTP Server Project, 2019).

Opinnäytetyön kirjoitushetkellä Apache-verkkopalvelimen vakaa versio on 17.

tammikuuta 2019 julkaistu 2.4.38-versio (Apache HTTP Server Project, 2019).

Apache-verkkopalvelin on alustariippumaton WWW-palvelin, joka vastaanottaa erilaisia HTTP-kutsuja TCP/IP-verkosta. Verkkopalvelimen päällä voidaan pyörit- tää niin verkkosivustoja, sisällönhallinto-ohjelmistoja, erilaisia web-applikaatioita kuin muitakin verkkopalveluja.

1.4.2 HTTP-protokolla

HTTP-protokolla määritellään tarkasti IETF:n (Internet Engineering Task Force) RFC 2616 -dokumentissa (IEFT, 1999).

HTTP-protokolla on applikaatiotason protokolla ja yksi koko maailmanlaajuisen internetin tietoliikenteen peruspilareista yhdessä TCP/IP-tietoliikenneprotokollan kanssa. Se mahdollistaa palvelimen ja käyttäjän välisen viestinnän.

1.4.3 Tietotekninen tietoturvallisuus

Tietoteknisellä tietoturvallisuudella tarkoitetaan tässä opinnäytetyössä tietotekni- siin järjestelmiin liittyvää tietoturvallisuutta.

Tietoturvallisuudella tarkoitetaan tässä opinnäytetyössä yleisesti ottaen kaikenlai- sen tiedon luottamuksellisuuden ja eheyden ylläpitämistä mihin lukeutuvat niin pa- periset kuin muissakin muodoissa olevat tietoaineistot.

Tietotekniseen tietoturvallisuuteen liittyy useita alakäsitteitä, kuten tietoturvauhat, joilla voidaan tarkoittaa valtiotason erittäin salaisen tiedon paljastumista tai ihan

(10)

vain yksityisen henkilön jonkin asiakirjan vahingossa tapahtuvaa roskakoriin lait- tamista omassa tietoteknisessä laitteessa.

Tietoteknisessä tietoturvallisuudessa muita merkittäviä alakäsitteitä ovat mm. tie- don eheys, tiedon hävittäminen, tiedon tuhoaminen, tiedon käyttö (luvallinen tai luvaton), käyttäjäoikeuksien rajoittaminen, vähimpien oikeuksien periaate, virus, haittaohjelma, virustorjunta, haavoittuvuus, roskaposti, salasana, salaus, tietomurto jne. Kaikki sisältyvät osaltaan tietoteknisen tietoturvallisuuden alakäsitteistöön.

1.4.4 Kovennus

Kovennuksella (engl. hardening tai security hardening) tarkoitetaan tietoteknii- kassa laitteen, järjestelmän tai ohjelmiston tietoturvallisuusominaisuuksien tiuken- tamista, mutta sillä voidaan myös tarkoittaa tietoturvallisuuspolitiikan, -strategian, -organisaation, käytäntöjen tai varsinaisiin käyttäjiin kohdistuvia toimia.

Erilaisia kovennustoimia voivat olla tietoteknisessä laitteessa koko laitesuunnittelu, järjestelmätasolla esimerkiksi ainoastaan pidemmän salasanan käyttö tai esimer- kiksi ohjelmistotasolla, ohjelmistohaavoittuvuuden löytäminen ja korjaaminen.

Yleisesti ottaen kovennusta käytetään kaikista toimista, joilla pyritään parantamaan laitteen, järjestelmän tai ohjelmiston tietoturvallisuutta jollakin tapaa. Silloin kun kovennus kohdistuu esim. tietoteknisen laitteen, järjestelmän tai ohjelmiston käyt- töön, voidaan puhua käyttöoikeuksien rajaamisesta, jossa sovellettavaksi tulee esim. vähimpien oikeuksien periaate.

1.4.5 Vähimpien oikeuksien periaate

Vähimpien oikeuksien periaatteella tarkoitetaan tietoturvallisuudessa käsitettä, jonka mukaan kaikenlainen tietoteknisen järjestelmän käyttö tulee rajata mahdolli- simman pieniin käyttöoikeuksiin (Gegick and Barnum, 2005).

Mitä pienempi määrä henkilöitä ja ajallisesti mitä lyhyemmällä ajanjaksolla he pää- sevät käyttämään jotain tiettyä järjestelmän ominaisuutta, sitä pienempi todennä- köisyys on virheistä tai tarkoituksellisesta haitanteosta aiheutuva riski.

(11)

Pienemmässä yrityksessä saattaa olla vain yksi verkkopalvelimen ylläpitäjä, jolloin virheen tai tarkoituksellisen haitanteon mahdollisuus on mahdollisimman vähäinen järjestelmään verrattuna, jossa jokaisella käyttäjällä olisi täydet käyttöoikeudet verkkopalvelimen ylläpitoon.

Tässä opinnäytetyössä keskitytään siihen, miten Apache-verkkopalvelin voidaan koventaa loppukäyttäjille valmiiksi, mikä minimoi mahdollisuuden aiheuttaa hait- taa verkkopalvelimelle.

(12)

2 TIETOTEORIA

Apache-verkkopalvelin oli kauan aikaa yksi suosituimmista WWW-palvelimista maailmanlaajuisesti, kunnes Microsoftin IIS ohitti sen (Netcracft, 2019).

2.1 Apache WWW-palvelin

Apache on Apache Software Foundationin vuonna 1995 julkaisema avoimeen läh- dekoodin perustuva WWW-palvelin Unix- ja Windows-pohjaisille käyttöjärjestel- mille (Apache HTTP Server Project, 2019).

Sen uusin versio on opinnäytetyön kirjoitushetkellä 2.4.38, joka edellyttää toimiak- seen TLS 1.3-versioita OpenSSL 1.1.1-version kanssa (Apache HTTP Server Pro- ject, 2019).

2.2 SSL/TLS eli Secure Socket Layer/Transport Layer Security

TLS (engl. Transport Layer Security, entinen SSL eli Secure Sockets Layer) on tie- toliikenteessä käytettävä salausprotokolla (IETF, 2008), jonka avulla voidaan suo- jata tietoliikennettä TCP/IP-verkoissa.

Apache WWW-palvelimessa TLS suojaa verkkosivustojen tietoliikenteen siirtoa käyttäjän ja palvelimen välillä, mikäli TLS on kytketty erikseen palvelimen asetuk- sista päälle. TLS-suojaus ei nimittäin ole automaattisessa Apache WWW-palveli- messa asennuksen jälkeen päällä, vaan se täytyy erikseen asettaa päälle. Tähän tar- vitaan myös varmenteita.

2.3 Palvelinvarmenne

SSL/TLS käyttää ns. X.509-palvelinvarmenteita, joiden avulla erilaiset verkkopal- velut tavallaan näyttävät toisilleen olevansa luotettavia verkkosivustoja ja/tai -pal- veluita (IETF, 2008).

Käytännössä näitä luotettavuuden tunnistamiseen käytettäviä varmenteita (engl.

Certificate) myöntävät erilaiset tahot, joilla on oikeus palvelinvarmenteiden myön- tämiseen (engl. Certificate Authority, CA).

(13)

2.4 PKI-järjestelmä

Varmenteiden myöntäminen perustuu PKI-järjestelmään. PKI eli Public Key Inf- rastructure on X.509-standardiin perustuva avainten hallintajärjestelmä (Housley, R., Polk, W., Ford, W. and D. Solo, 2002).

Käytännössä PKI-järjestelmä perustuu siihen, että jokin luotettava taho eli varmen- taja digitaalisesti allekirjoittaa palvelinvarmenteen, jonka jälkeen varmennetta voi- daan julkisesti jakaa ja tällöin loppukäyttäjä voi varmistua, että hän on tekemisissä luotettavan WWW-palvelimen kanssa (Housley ym., 2002).

Palvelinvarmenteita voi luoda itse paikallisesti, niitä on olemassa ilmaiseksi muu- taman kuukauden ajanjaksoiksi, yleensä 3 kuukautta (mm. Let’s Encrypt, Comodo) sekä niitä on mahdollista ostaa palvelinvarmenteita myöntäviltä tahoilta, joista suu- rimpia ovat IdenTrust, Comodo ja DigiCert (W3Techs, 2019).

2.5 HTTPS-protokolla

HTTPS-protokolla (engl. Hypertext Tranfer Protocol Secure) perustuu HTTP-pro- tokollan ja SSL/TLS-protokollan yhdistelmään. Sitä käytetään suojatussa tietolii- kenteessä palvelimen ja käyttäjän välillä (IETF, 2000).

Useimmissa verkkoselaimissa protokollan käyttö näkyy verkko-osoitteesta sillä, että se alkaa https://-alulla http://-alun sijaan. Myös useissa verkkoselaimissa verkko-osoiterivillä näkyy lukon kuvake, joka ilmoittaa, että HTTPS-protokolla on käytössä.

2.6 Apachen lisämoduulit

Apachen lisämoduulit mahdollistavat Apache WWW-palvelimen toiminnallisuu- den laajentamisen (Apache HTTP Server Project, 2019). Tietoturvallisuuden kan- nalta keskeisiä lisämoduuleja ovat:

(14)

2.6.1 Mod_ssl ja Mod_gnutls

Mod_ssl mahdollistaa SSL/TLS-protokollan käyttämisen Apache WWW-palveli- mella. Mod_gnutls mahdollistaa TLS-protokollan käyttämisen Apache WWW-pal- velimella käyttäen GnuTLS-kirjastoa.

2.6.2 Mod_evasive

Mod_evasive mahdollistaa suojautumisen sekä palvelunestohyökkäystä (DoS) tai hajautettua palvelunestohyökkäystä (DDoS) vastaan.

2.6.3 Mod_security

Mod_security mahdollistaa web-applikaatioiden palomuurin.

2.6.4 Mod_geoip

Mod_geoip mahdollistaa ns. geoblokkauksen eli tietyltä maantieteelliseltä alueelta tulevan liikenteen estämisen WWW-palvelimelle tai vaihtoehtoisesti vain tietyltä maantieteelliseltä alueelta tulevan liikenteen sallimisen WWW-palvelimelle.

2.6.5 Mod_header

Mod_header on välttämätön lisäosa, joka mahdollistaa HSTS-turvallisuuskäytän- nön (engl. HTTP Strict Transport Security) eli se kertoo verkkoselaimelle, että sen tulisi käyttää ainoastaan HTTPS-yhteyttä.

Lisäksi mod_header mahdollistaa X-Robots-Tagin eli sillä voi kertoa hakukoneille, miten WWW-palvelinta tulisi luetteloida/indeksoida.

2.6.6 Mod_php

Mod_php mahdollistaa PHP:n käytön Apache WWW-palvelimella. Useat tunnetut web-applikaatiot on kirjoitettu juuri PHP:tä käyttäen. Esimerkkeinä annettakoon yleisesti oppilaitoksissa käytössä oleva Moodle verkko-oppimisympäristö.

Mod_php tuo myös uusia tietoturvauhkia palvelimen päällä toimiville applikaati- oille, erityisesti mikäli display_errors ei ole kytketty PHP:n asetuksista pois päältä.

(15)

2.6.7 Mod_access

Mod_access mahdollistaa käyttäjähallinnan perustuen käyttäjien HTTP-pyyntöi- hin. Sitä käytetään mm. <Directory>, <Files> ja <Location> osien kanssa sekä .htaccess -tiedoston kanssa.

2.7 Apache WWW-palvelimen yleisimmät tietoturvallisuusuhat Yleisimpiä Apache WWW-palvelimen tietoturvallisuusuhkia ovat:

2.7.1 Palvelintietojen paljastuminen

Ilman tietoturvallisuuskovennusta Apache WWW-palvelin paljastaa Apachen ver- sion ja joissakin tapauksissa myös käyttöjärjestelmän (Kuva 1).

Kuva 1. Palvelintietojen paljastuminen

Palvelintietoja voidaan saada tietoon myös muilla tavoilla, kuten kysymällä palve- limen ylläpitäjältä tai vaihtoehtoisesti siihen soveltuvilla ohjelmistoilla, yksi tälläi- sista ohjelmistoista on nmap-verkkoskanneri, jonka avulla voidaan selvittää tietoja palvelimesta, sen avoimista porteista, palvelimen versioista, käytetystä käyttöjär- jestelmästä jne.

Palvelintietojen paljastuminen antaa lisää informaatioita ja tätä kautta mahdolli- suuksia erilaisten hyökkäysten toteuttamiselle.

(16)

2.7.2 Hakemistolistauksen jääminen päälle

Hakemistolistauksen päälle jääminen (Kuva 2) Apachessa näyttää palvelimen kan- sion sisällön ulkopuoliselle.

Kuva 2. Hakemistolistaus on päällä

Hakemistolistauksen päälle jääminen on hyvin yleinen tietoturvahaavoittuvuus verkkopalvelimilla. Apache-palvelimessa hakemistolistaus on oletusarvoisesti päällä ja se täytyy erikseen kytkeä pois päältä.

2.7.3 FileETagin jääminen päälle

ETageja käytetään yleisesti ottaen välimuistitarkoituksiin, jolloin palvelin laskee yksittäisen ETagin jokaiselle tiedostolle jonka se jakaa.

Tämän jälkeen käyttäjän selain voi kysyä palvelimelta, että onko tämä tiedosto edelleen saatavissa tällä yksittäisellä ETagilla. Jos on, niin palvelin vastaa HTTP- statuksella 304, kertoen käyttäjän selaimelle, että käytä paikallisesti välimuistissa

(17)

olevaa tiedostoa tai vaihtoehtoisesti se jakaa uudestaan saman tiedoston HTTP-sta- tuksella 200.

FileETagin rakenteeseen sisältyvät INODE, MTime ja Size. Näistä INODE-osaa voidaan käyttää edelleen hyökkäykseen Network File Systemin (NFS) kautta, joka käyttää näitä INODEja tiedostojen käsittelyssä.

FileETagin päällä oleminen voi tällöin paljastaa hyökkääjälle arkaluontoista infor- maatiota Apache WWW-palvelimesta (Kuva 3).

Kuva 3. FileETag on jäänyt päälle

2.7.4 Virheelliset hakemistojen ja tiedostojen käyttöoikeudet

Virheelliset hakemistojen ja tiedostojen käyttöoikeudet (Kuva 4) voivat mahdollis- taa hyökkääjälle aukon palvelimelle, kuten pääsyn sellaisiin hakemistoihin tai tie- dostoihin, joihin hänellä ei pitäisi olla pääsyä.

Kuva 4. Tiedoston ja hakemiston täydet käyttöoikeudet

Hyvin yleinen tietoturvahaavoittuvuus on jonkin asetustiedoston käyttöoikeuksien jääminen päälle, jolloin hyökkääjä voi esim. tiedustella palvelimella käytettävän tietokantapalvelimen käyttäjätunnuksia ja salasanoja lukemalla asetustiedostoja.

(18)

2.7.5 HTTP-pyyntöjen rajoittamatta jättäminen

HTTP-pyyntöjen rajoittamatta jättäminen (Kuva 5) voi aiheuttaa tietoturvallisuus- uhan palvelimelle.

Kuva 5. HTTP-pyyntöjen tarkistus nmap-ohjelmistolla

Hyväksyttyjen HTTP-pyyntöjen tarkistus voidaan tehdä mm. nmap-ohjelmistolla.

2.7.6 Clickjacking-hyökkäyksen estämättä jättäminen

Clickjacking-hyökkäys on tunnettu web-applikaatioiden haavoittuvuus, joka voi- daan estää Apache WWW-palvelimessa.

Clickjacking-hyökkäys on tekniikka, mikä liittyy selainten haavoittuvuuteen ja sen avulla käyttäjä voidaan saada klikkaamaan jotain sellaista minkä käyttäjä havaitsee harmittomaksi esim. harmittoman painikkeen painaminen web-sivustolla suorittaa- kin käyttäjän tietämättä upotettua koodia tai jonkin hänelle vahingollisen skriptin.

2.7.7 SSI-hyökkäyksen estämättä jättäminen

SSI-hyökkäys tai SSI-injektio mahdollistaa web-applikaatioon kohdistuvan hyök- käyksen ujuttamalla scriptiä HTML-sivuille tai ajamalla koodia etänä.

Pahimmissa tapauksissa SSI-injektio mahdollistaa käyttöjärjestelmäkomentojen ajamista palvelimella etänä.

2.7.8 XSS-suojauksen jättäminen pois päältä

XSS (engl. Cross Site Scripting) mahdollistaa hyökkääjän injektoida scriptiä.

XSS-hyökkäyksessä koodia (esim. JavaScript) ujutetaan HTML-dokumenttien se- kaan. Yksi suojautumistapa on esim. Entity-koodaus.

(19)

2.7.9 Vanhentuneiden SSL/TLS-versioiden käyttö

Vanhat SSL/TLS-versiot (Kuva 6) omaavat useita tietoturvallisuushaavoittuvuuk- sia.

Kuva 6. Vanhetuneita SSL/TLS-versioita

Opinnäytetyön kirjoittamishetkellä TLS 1.3-versio on jo julkaistu, mutta se ei ole vielä yleisesti käytössä. TLS 1.2-versio on yleisesti käytössä ja myöskin suositel- tava SSL/TLS-versio.

2.7.10 Mod Securityn pois jättäminen

Mod_security (kutsumanimi myös Modsec) on avoimeen lähdekoodiin perustuva web-applikaatiopalomuuri Apache WWW-palvelimelle (WAF eli Web Application Firewall).

Mod_security mahdollistaa turvallisuusasetukset, jotka tunnetaan myös nimellä

”SecRules”. Yleisimmin mod_securitya käytetään OWASP ModSecurity Core Rule Setillä eli CRS:llä.

Nämä turvallisuussäännöt mahdollistavat ajantasaisen palvelimen monitoroinnin, lokit sekä HTTP-pyyntöjen suodattamisen käyttäjän määrittelemien sääntöjen mu- kaan.

(20)

3 KEHITYSTYÖ

Tässä opinnäytetyössä käytetään Apache WWW-palvelimen käyttöjärjestelmänä Debian 9 versiota, joka on Unixin kaltainen Linux-käyttöjärjestelmä. Debianin ke- hitystyöstä vastaa The Debian Project.

3.1 Apache WWW-palvelimen asennus

Apache WWW-palvelimen asentaminen Linuxissa tapahtuu komennolla:

sudo apt-get install apache2

Joka asentaa Apache WWW-palvelimen Debian Linuxin /etc/apache2/ -kansioon.

3.2 SSL/TLS:n käyttöönotonperustoimet

Ennen kuin otamme SSL/TLS:n käyttöön Apache WWW-palvelimella varmis- tamme, että sen config-tiedosto /etc/apache2/ports.conf kuuntelee porttia 443:

Listen 443

Seuraavaksi editoimme tiedostoa /etc/apache2/sites-available/default-ssl.conf ko- mennolla:

sudo nano default-ssl.conf

ja lisäämme default-ssl.conf-tiedostoon seuraavaa tai varmistamme, että alla olevat rivit ovat siellä:

SSLEngine on

SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem SSLCertficateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key

Tämän jälkeen otamme SSL/TLS:n käyttöön ja käynnistämme WWW-palvelimen uudestaan komennoilla:

sudo service apache2 restart

(21)

3.3 Ulkopuolisen palvelinvarmenteen asentaminen

Edellä olevassa kohdassa olemme ottaneet käyttöön Apache WWW-palvelimen mukana tulleen palvelinvarmenteen. Tässä osassa käydään läpi ulkopuolisen palve- linvarmenteen asentamisen.

Käytetään Let’s Encrypt palvelinvarmennetta, jonka kuka tahansa voi saada il- maiseksi käyttöönsä 3 kuukauden ajaksi.

Varmentajalla täytyy olla pääsy Apache WWW-palvelimelle, mikä edellyttää port- tien 80 ja 443 avaamista palomuurista sekä tietoliikenteen reitittämistä varsinaiseen Apache WWW-palvelimeen.

WWW-palvelimen ulkopuoliselle näkyvät tiedostot sijaitsevat kansiossa /var/www/html esiasennettuna.

Let’s Encrypt-palvelinvarmenteen asennus alkaa Certbotin asennuksella komen- nolla:

sudo apt-get install certbot

Certbotin avulla palvelinvarmenteen asennus onnistuu helposti. Se tapahtuu ko- mennolla:

sudo certbot certonly –manual –cert-name verkkotunnuksesi.fi

Certbot esittää muutaman kysymyksen ja pyytää käyttäjää lisäämään tiedoston /var/www/html/.well-known/acme-challenge -kansioon. Tällä tavalla varmenteen myöntäjä varmistuu, että palvelinvarmennetta hakevalla on käyttöoikeudet hake- maansa verkkotunnukseen ja sen palvelimeen.

Seuraavaksi kopioidaan certbotin muodostamat tiedostot fullchain.pem kansioon /etc/ssl/certs/ ja privkey.pem kansioon /etc/ssl/private/

Tämän jälkeen avataan uudestaan SSL/TLS-config-tiedosto kansiosta /etc/apache2/sites-available/ komennolla:

sudo nano default-ssl.conf

(22)

ja muutetaan seuraavat rivit ja käynnistetään WWW-palvelin uudestaan:

SSLCertificateFile /etc/ssl/certs/fullchain.pem SSLCertficateKeyFile /etc/ssl/private/privkey.key

3.4 HTTPS-yhteyden käyttöönotto

Ulkopuolinen palvelinvarmenne on nyt käytössä ja voimme todentaa sen mene- mällä osoitteeseen https://verkkotunnuksesi.fi

Lisäksi voimme poistaa suojaamattoman porttiin 80 tulevan HTTP-liikenteen, joko estämällä porttiin 80 tulevan tietoliikenteen palomuurista tai vaihtoehtoisesti lisää- mällä ”#” -merkin /etc/apache2/ports.conf -tiedostoon riville:

#Listen 80

ja käynnistämällä Apache WWW-palvelimen uudestaan komennolla:

sudo service apache2 restart

3.5 Lisämoduulien käyttöönotto

Apache WWW-palvelimen lisämoduulien käyttöönotto alkaa niiden asentamisella komennolla:

sudo apt-get install libapache2-mod-evasive libapache2-mod-security2 libapache2-mod- php7.0 libapache2-mod-geoip libapache2-mod-gnutls

Apachen lisämoduulit mod_ssl, mod_header ja mod_access ovat jo valmiiksi tulleet käyttöön perusasennuksen yhteydessä.

3.5.1 Mod_gnutls -lisämoduulin käyttöönotto

Mod_gnutls:n käyttöönotto tapahtuu muokkaamalla /etc/apache2/ports.conf -tie- dostoa komennolla:

sudo nano ports.conf

ja varmistamalla, että tiedostosta löytyy seuraavat rivit:

(23)

<IfModule mod_gnutls.c>

Listen 443

</IfModule>

ja käynnistämällä Apache WWW-palvelin uudestaan komennoilla:

sudo a2enmod gnutls && sudo service apache2 restart

3.5.2 Mod_evasive -lisämoduulin käyttöönotto

Mod_evasiven config-tiedosto löytyy kansiosta /etc/apache2/mods-available/ ni- mellä evasive.conf. Avataan tiedosto komennolla:

sudo nano evansive.conf

ja lisätään palvelunestohyökkäyksestä ilmoittava sähköpostirivi:

DOSEmailNotify omasähköpostiosoite@verkkotunnuksesi.fi

Muita muutoksia ei tarvitse tehdä.

3.5.3 Mod_security -lisämoduulin käyttöönotto

Mod_securityn config-tiedosto löytyy kansiosta /etc/apache2/mods-available/ ni- mellä security2.conf. Koska meillä ei ole tällä hetkellä WWW-palvelimella erik- seen web-applikaatioita, meidän ei tarvitse koskea tähän config-tiedostoon.

3.5.4 Mod_geoip -lisämoduulin käyttöönotto

Voimme käyttää mod_geoip -lisämoduulia jokaisen erikseen luotavan sivuston yh- teydessä. Tällä hetkellä meillä on jo valmiiksi default-ssl.conf-tiedosto kansiossa /etc/apache2/sites-available/

Muokkaamme tiedostoa komennolla:

(24)

sudo nano defaul-ssl.conf

ja lisäämme tiedostoon seuraavat rivit:

GeoIPEnable On

SetEnvIf GEOIP_COUNTRY_CODE FI AllowCountry Deny from all

Allow from env=AllowCountry

Tämä mahdollistaa sen, että ainoastaan Suomesta tulevat IP-osoitteet sallitaan, kun taas muualta maailmalta tulevat IP-osoitteet estetään.

3.5.5 Mod_php -lisämoduulin käyttöönotto

Mod_php:n config-tiedosto löytyy kansiosta /etc/php/7.0/apache2/ nimellä php.ini.

Muokataan config-tiedostoa komennolla:

sudo nano php.ini

ja varmistetaan, että config-tiedostosta löytyy seuraavat rivit:

display_errors = off // estää virheiden näkymisen ulkopuolisille register_globals = off // estää config-muuttujien ylikirjoituksen

(25)

3.6 Apache WWW-palvelimen tietoturvallisuusuhkien korjaaminen

Tässä osassa korjaamme Apache WWW-palvelimen yleisimmät tieturvallisuus- uhat.

3.6.1 Palvelintietojen paljastumisen estäminen

Palvelintietojen paljastumisen estäminen voidaan tehdä muokkaamalla config-tie- dostoa /etc/apache2/apache2.conf komennolla:

sudo nano apache2.conf

Sekä lisäämällä seuraavat rivit config-tiedostoon:

ServerSignature Off ServerTokens Prod

Tämä estää Apache WWW-palvelinta paljastamasta versiotietojaan ulkopuolisille.

3.6.2 Hakemistolistauksen estäminen

Hakemistolistaus voidaan estää monella tavalla. Yksi tapahtuu muokkaamalla /etc/apache2/sites-available/default-ssl.conf tiedostoa komennolla:

sudo nano default-ssl.conf

ja lisäämällä tiedostoon rivit:

<Directory>

Options None

</Directory>

Options-parametrit: None (Ei hakemistolistausta) ja Indexes (Hakemistolistaus päällä).

(26)

3.6.3 FileETagin poisottaminen käytöstä

FileETagin poisottaminen käytöstä tapahtuu muokkaamalla config-tiedostoa /etc/apache2/apache2.conf komennolla:

sudo nano apache2.conf

sekä lisäämällä tiedostoon rivin:

FileETag None

3.6.4 Hakemistojen ja tiedoston käyttöoikeuksien asettaminen Hakemiston ja käyttöoikeuksien asettaminen tapahtuu komennoilla:

sudo chown -r www-data:www-data kansio

sudo chmod 755 kansio tai sudo chmod 644 tiedosto

Käyttäjäksi on valittu www-data, koska se on oletusarvoinen Apache-verkkopalve- limen käyttäjä, eikä root mikä mahdollistaisi verkkopalvelimelle pääsyn koko käyt- töjärjestelmään.

Kansio-oikeudet 755 on valittu, koska se on yleinen oletusarvo kansioille ja tie- dosto-oikeudet 644 on valittu, koska se on yleinen oletusarvo tiedostoille, pois lu- kien asetustiedostot, joiden käyttöoikeudet ovat yleensä 600, 444 tai 400 riippuen asetustiedostosta.

3.6.5 HTTP-pyyntöjen rajoittaminen

HTTP-pyyntöjen rajoittaminen tapahtuu muokkaamalla /etc/apache2/sites- available/default-ssl.conf-tiedostoa komennolla:

sudo nano default-ssl.conf

sekä lisäämällä tiedostoon seuraavat rivit:

<LimitExcept GET>

(27)

Deny from all

</LimitExcept>

3.6.6 Clickjacking-hyökkäyksen estäminen

Clickjacking-hyökkäys voidaan estää muokkaamalla config-tiedostoa /etc/apache2/apache2.conf komennolla:

sudo nano apache2.conf

sekä lisäämällä config-tiedostoon rivin:

Header always append X-Frame-Options SAMEORIGIN

3.6.7 SSI-hyökkäyksen estäminen

SSI-hyökkäys voidaan estää muokkaamalla /etc/apache2/sites-available/defaul- ssl.conf-tiedostoa komennolla:

sudo nano defaul-ssl.conf

sekä lisäämällä tiedostoon rivit:

<Directory /var/www/html>

Options -Indexes -Includes Order allow, deny

Allow from all

</Directory>

3.6.8 XSS-suojauksen päälle laittaminen

XSS-hyökkäys voidaan estää muokkaamalla config-tiedostoa /etc/apache2/apache2.conf komennolla:

sudo nano apache2.conf

sekä lisäämällä tiedostoon rivin:

(28)

Header set X-XSS-Protection ”1; mode=block”

3.6.9 SSL/TLS-kovennus

Vanhat SSL 2 ja 3 versiot voidaan ottaa pois käytöstä muokkaamalla config-tiedos- toa /etc/apache2/sites-available/default-ssl.conf komennolla:

sudo nano default-ssl.conf

sekä lisäämällä config-tiedostoon seuraavan rivin:

SSLProtocol -ALL +TLSv1.2

Tämän lisäksi SSL/TLS-suojausta voidaan parantaa kiristämällä hyväksyttyjä sa- lausalgoritmejä lisäämällä config-tiedostoon rivin:

SSLCipherSuite ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256- SHA384:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-

SHA256:!aNULL:!MD5

(29)

4 TULOSTEN TARKASTELU

Opinäytetyön tässä osassa tarkastelemme ja analysoimme Apache WWW-palveli- men kovennuksen tuloksia.

4.1 Porttien 80 ja 443 testaaminen

Testaamme kovennetun WWW-palvelimen portit käyttämällä nmap ohjelmistoa, jonka tulos (Kuva 7) on seuraava (Vain suojattu HTTPS-yhteys sallittu):

Kuva 7. Porttiskannaus kovennettuun WWW-palvelimeen

Vertailutuloksena esitämme porttiskannauksen ei-kovennettuun WWW-palveli- meen, jonka tulos (Kuva 8) on seuraava (Vain ei-suojattu HTTP-yhteys sallittu):

Kuva 8. Porttiskannaus ei-kovennettuun WWW-palvelimeen

Erot kovennetun ja ei-kovennetun WWW-palvelimen välillä ovat selkeät. Koven- nettu WWW-palvelin hyväksyy ainoastaan HTTPS-yhteydet porttiin 443 kun ei- kovennettu WWW-palvelin hyväksyy ainoastaan HTTP-yhteydet porttiin 80.

4.2 SSL/TLS-palvelinvarmenteiden testaaminen

Käytämme palvelinvarmenteiden testaamiseen sslscan nimistä ohjelmistoa, jonka tulos (Kuva 9) on seuraava:

Kuva 9. SSLscan kovennettuun WWW-palvelimeen

Vertailutuloksena esitämme sslscan skannauksen ei-kovennettuun WWW-palveli- meen, jonka tulos (Kuva 10) on seuraava:

(30)

Kuva 10. SSLscan ei-kovennettuun WWW-palvelimeen

Erot näkyvät selkeästi TLS-versiossa ja heikomman salauksen vahvuudessa. Ko- vennetussa WWW-palvelimessa on käytössä TLS 1.2-versio, kun se ei-kovenne- tussa on TLS 1.0-versio. Kovennettu hyväksyy ainoastaan 256-bittisen salauksen, kun taas ei-kovennettu hyväksyy heikoimmillaan myös 128-bittisen salauksen.

4.3 IP-perusteisen geoblokkauksen testaaminen

IP-perusteisen geoblokkauksen testaamme hyödyntämällä ulkomaista VPN-palve- linta, jonka HTTP-pyynnön tulos (Kuva 11) näyttää seuraavalta:

Kuva 11. Firefox-selain ei pysty kytkeytymään ulkomaisesta VPN-palvelimesta Suomessa sijaitsevalle palvelimelle, jossa Geoblokkaus on päällä

Vertailutuloksena esitämme kuvakaappauksen, kun otamme yhteyttä WWW-pal- velimeen Suomessa sijaitsevasta IP-osoitteesta, jonka tulos (Kuva 12) näyttää seu- raavalta:

(31)

Kuva 12. Firefox-selain kytkeytyy suomen IP-osoitteesta Suomessa sijaitsevalle palvelimelle

4.4 Palvelintietojen paljastumisen testaaminen

Palvelintietojen paljastumisen testaamisen suoritamme pelkästään HTTP-pyyn- nöllä sivulle, jollaista ei ole olemassa virheilmoituksen saamiseksi (Kuva 13). Se näyttää seuraavalta:

Kuva 13. HTTP-pyyntö virheilmoituksen saamiseksi

Vertailutuloksena esitämme HTTP-pyynnön ei-kovennettuun WWW-palvelimeen, jonka virheilmoitus (Kuva 14) näyttää seuraavalta:

(32)

Kuva 14. HTTP-pyyntö ei-kovennettuun palvelimeen

Erot kovennetun ja ei-kovennetun WWW-palvelimen välillä ovat selkeät. Koven- nettu WWW-palvelin ei anna tietoja itsestään, kun ei-kovennettu WWW-palvelin antaa tiedot Apache-versiosta.

4.5 Hakemistolistauksen testaaminen

Hakemistotietojen listaamisen testauksen suoritamme tekemällä HTTP-pyynnön WWW-palvelimen hakemistoon, jonka tulos (Kuva 15) on seuraava:

Kuva 15. Hakemistolistauksen testaaminen kovennettuun WWW-palvelimeen Vertailutuloksena esitämme samankaltaisen HTTP-pyynnön ei-kovennettuun WWW-palvelimeen, jonka tulos (Kuva 16) on seuraava:

(33)

Kuva 16. Hakemistolistauksen testaaminen ei-kovennettuun WWW-palvelimeen Erot palvelimen, joka estää hakemistolistauksen ja palvelimen, joka ei estä hake- mistolistausta näkyvät yllä olevissa kuvissa (Kuva 15 ja Kuva 16).

(34)

4.6 FileETagin testaaminen

FileETagin näkymisen testaamme Postman-ohjelmalla tekemällä HTTP-pyynnön GET-metodilla, jonka tulos (Kuva 17) on seuraava:

Kuva 17. HTTP-pyyntö GET-metodilla, kun FileETag ei ole päällä

Vertailutuloksena esitämme aikaisemman HTTP-pyynnön GET-metodilla palveli- melle, jonka FileETagia ei ole kytketty pois päältä. Tulos (Kuva 18) on seuraava:

(35)

Kuva 18. HTTP-pyyntö GET-metodilla, kun FileETag on päällä

Erot palvelimen, jossa FileETag ei ole päällä ja jossa se on päällä näkyvät yllä ole- vista kuvista (Kuva 17 ja Kuva 18).

4.7 Hakemistojen ja tiedostojen käyttöoikeuksien testaaminen

Hakemistojen ja tiedostojen käyttöoikeudet testaamme listaamalla hakemiston ja tiedoston käyttöoikeudet (Kuva 19), jotka näyttävät seuraavalta:

Kuva 19. Hakemistojen ja tiedostojen käyttöoikeudet kovennetussa WWW-palve- limessa

Vertailutuloksena esitämme aikaisemman kuvakaappauksen (Kuva 20) ei-koven- netun WWW-palvelimen hakemiston ja tiedostojen käyttöoikeuksista, jotka näyt- tävät seuraavalta:

Kuva 20. Hakemistojen ja tiedostojen käyttöoikeudet ei-kovennetussa WWW-pal- velimessa

Erot palvelimen, jonka käyttöoikeudet on asetettu ja palvelimen, jonka käyttöoi- keuksia ei ole asetettu näkyvät yllä olevissa kuvissa (Kuva 19 ja Kuva 20).

(36)

4.8 HTTP-pyyntöjen rajoitusten testaaminen

HTTP-pyyntöjen rajoitukset testaamme nmap-ohjelmistolla, jonka tulos (Kuva 21) näyttää seuraavalta:

Kuva 21. HTTP-pyyntöjen rajoitukset ovat käytössä

Vertailutuloksena esitämme aikaisemman kuvakaappauksen (Kuva 22) ei-rajoite- tuista http-pyynnöistä, joka näyttää seuraavalta:

Kuva 22. HTTP-pyyntöjen rajoitukset eivät ole käytössä

Erot palvelimen, jonka HTTP-pyyntöjä rajoitetaan ja palvelimen, jonka HTTP- pyyntöjä ei rajoiteta näkyvät yllä olevista kuvista (Kuva 21 ja Kuva 22).

4.9 Clickjacking-hyökkäyksen estämisen testaaminen

Clickjacking-hyökkäyksen estämisen testaamme HTTP-pyynnöllä palvelimelle, jonka tulos (Kuva 23) näyttää seuraavalta:

Kuva 23. HTTP-pyyntö suojatulle WWW-palvelimelle

Vertailutuloksena poistamme palvelimelta Clickjacking-hyökkäyksen estämisen, jonka jälkeen HTTP-pyyntö (Kuva 24) näyttää seuraavalta:

(37)

Kuva 24. HTTP-pyyntö suojaamattomalle WWW-palvelimelle

Erot palvelimen, jossa Clickjacking-hyökkäyksen suojaus on päällä ja palvelimen, jossa Clickjacking-hyökkäyksen suojaus on pois päältä voi nähdä siitä, että suojaa- mattomassa palvelimessa ei ole X-Frame-Origin -> SAMEORIGINia.

4.10 XSS-suojauksen testaaminen

XSS-suojauksen testaamme HTTP-pyynnöllä palvelimelle, jonka tulos (Kuva 25) on seuraava:

Kuva 25. HTTP-pyyntö kun XSS-suojaus on päällä

Vertailutuloksena esitämme kuvakaappauksen (Kuva 26) WWW-palvelimesta, jossa XSS-suojaus ei ole päällä, joka näyttää seuraavalta:

(38)

Kuva 26. HTTP-pyyntö kun XSS-suojaus ei ole päällä

Erot palvelimen, jossa XSS-suojaus on päällä ja palvelimen, jossa XSS-suojaus ei ole päällä näkyvät yllä olevista kuvista (Kuva 25 ja Kuva 26).

(39)

5 JOHTOPÄÄTÖKSET

Opinnäytetyön tuloksena on syntynyt kohtuullisen turvallinen Apache WWW-pal- velin, joka on huomattavasti suojatumpi kuin vertailuarvona oleva ei-suojattu Apache WWW-palvelin.

Kovennettu Apache WWW-palvelin suojaa sekä palvelintietojen vuotamiselta, että useimmilta tunnetuilta hyökkäystavoilta.

5.1 Suhde käyttöjärjestelmiin ja web-applikaatioihin

Tämän opinnäytetyön tuloksena on käsitelty Apache WWW-palvelimen tietotur- vallisuutta. Kokonaisnäkökulmasta tarkasteltuna WWW-palvelimen tietoturvalli- suuteen vaikuttaa kuitenkin myös sen alla olevan käyttöjärjestelmän tietoturvalli- suus sekä sen päällä toimivien applikaatioiden tietoturvallisuusominaisuudet, joista vastaavat käyttöjärjestelmien ja web-applikaatioiden kehittäjät.

5.2 Suhde muihin tietoturvallisuuskäytäntöihin

Tietoturvallisuus on aina yrityksen, yhteisön tai yksityishenkilön kokonaisratkaisu, mikä tarkoittaa sitä, että se muodostuu useammasta eri osasta kuten yllä mainitusta käyttöjärjestelmästä ja web-applikaatioista, mutta myös järjestelmiä käyttävien ta- hojen tietoturvallisuuspolitiikasta, -käytännöistä, palomuureista, tunkeutumisen ha- vaitsemis- ja estämisjärjestelmistä, jotka omalta osaltaan joko parantavat tai huo- nontavat kokonaistietoturvallisuutta.

5.3 Yhteenveto

Apache WWW-palvelin on yksi pieni osa tätä suurempaa tietoturvallisuuden koko- naisuutta tai kokonaiskuvaa, mutta koska se toimii yleensä verkossa toimivien mui- den palveluiden alustajärjestelmänä, on sen tietoturvallisuuden rooli yksi tärkeä te- kijä turvallisempien palveluiden tuottamiseksi.

(40)

LÄHTEET

Apache HTTP Server Project, 2019. Apache HTTP Server Project. Viitattu 1.4.2019 https://httpd.apache.org/ABOUT_APACHE.html

Apache HTTP Server Project, 2019. Apache httpd 2.4.38 released. Viitattu 1.4.2019 https://httpd.apache.org

Apache HTTP Server Project, 2019. Module Index. Viitattu 1.4.2019 https://httpd.apache.org/docs/2.4/mod/. Apache HTTP Server Project, 2019.

Apache HTTP Server Project, 2019. The Number One HTTP Server On The In- ternet. Viitattu 4.3.2019 https://news.netcraft.com/archives/category/web-server- survey/.

Apache HTTP Server Project, 2019. Security Tips. Viitattu 3.3.2019 https://httpd.apache.org/docs/2.4/misc/security_tips.html

Housley, R., Polk, W., Ford, W., and D. Solo, “Internet X.509 Public Key Infra- structure Certificate and Certificate Revocation List (CRL) Profile”, RFC 3280, April 2002.

Internet Engineering Task Force (IETF), 1999. Hypertext Transfer Protocol – HTTP/1.1 - RFC 2616. Viitattu 1.4.2019 https://tools.ietf.org/html/rfc2616. IETF, Internet Engineering Task Force.

Internet Engineering Task Force (IETF), 2000. HTTP Over TLS –- RFC 2818.

Viitattu 1.4.2019 https://tools.ietf.org/html/rfc2818. IETF, Internet Engineering Task Force.

Internet Engineering Task Force (IETF), 2008. The Transport Layer Security (TLS) Protocol Version 1.2 - RFC 5246. Viitattu 1.4.2019

https://tools.ietf.org/html/rfc5246

Michael Gegick and Sean Barnum, 2005. Least Privilege. Viitattu 1.4.2019 https://www.us-cert.gov/bsi/articles/knowledge/principles/least-privilege Netcraft, 2019. February 2019 Web Server Survey. Viitattu 4.3.2019

https://news.netcraft.com/archives/category/web-server-survey/. Netcraft, Ar- chives.

TecMint, 2019. 13 Apache Web Server Security and Hardening Tips. Viitattu 3.3.2019 https://www.tecmint.com/apache-security-tips/

W3Techs – Web Technology Surveys, 2019. Usage statistics and market share of Apache for websites. Viitattu 3.3.2019 https://w3techs.com/technologies/de- tails/ws-apache/all/all. W3Techs, 2019.

(41)

W3Techs – Web Technology Surveys, 2019. Usage of SSL certificate authorities for websites. Viitattu 1.4.2019 https://w3techs.com/technologies/over-

view/ssl_certificate/all. W3Tech, 2019.

Viittaukset

LIITTYVÄT TIEDOSTOT

Tekij¨anoikeusongelmien selvitty¨a oli ensimm¨ainen konkreettinen tulos se, ett¨a Helsingin yliopistossa unkarin kielen opiskelijat k¨a¨ansiv¨at kielitieteilij¨an ja

Lausekkei- den semanttista rakennetta koskevaa informaatiota sis¨ alt¨ av¨ a m¨ a¨ arittelytapa mahdollistaa my¨ os niin sa- notun alykk¨ a¨ an tekstink¨ asittelyn, jossa

Itse asiassa mit¨ a tahansa riitt¨ av¨ an s¨ a¨ ann¨ ollist¨ a funktiota T ( n ) kohti m¨ a¨ ar¨ aytyy kompleksisuusluokka, mutta k¨ ayt¨ ann¨ oss¨ a t¨ arkeimm¨ at

Www-sivut Ohjausryhmän kokouksessa 26.9.2006 todettiin, että hankkeen www-sivujen päivitys olisi tärkeää myös jat- kossa, sillä arkistoituna sivuston merkitys on

• WWW browser uses the URL address to retrieve a document over the network..

– TCP-portissa 25 tulevaa postia odottava prosessi on palvelin – Kun sama prosessi ottaa yhteyden toiseen palvelimeen se.

Näin tapahtuu esimerkiksi silloin, kun lapsi oppii kävelemään tai luke- maan tai aikuinen oivaltaa, että hän voikin käyttää aikaansa eri ta- voin.. Esimerkkejä

Kylvön voit tehdä myös myöhään syksyllä juuri ennen maan jää- tymistä, jolloin siemenet itävät keväällä6. Poista pohjamaasta kivet, kannot, juurakot