24
Bezbjednosne preporuke za Apache web server AGENCIJA ZA INFORMACIONO DRUŠTVO REPUBLIKE SRPSKE ODJELJENJE ZA INFORMACIONU BEZBJEDNOST AUTOR : ALEKSANDAR ĐURIĆ ODGOVORNO LICE: SRĐAN RAJČEVIĆ

Bezbjednosne preporuke za Apache web server - oib.aidrs.org · PDF file3.1 Pokretati Apache web server kao non-root korisnik ... čest napad iz razloga što su ti serveri korisni za

  • Upload
    vuthuy

  • View
    218

  • Download
    2

Embed Size (px)

Citation preview

Page 1: Bezbjednosne preporuke za Apache web server - oib.aidrs.org · PDF file3.1 Pokretati Apache web server kao non-root korisnik ... čest napad iz razloga što su ti serveri korisni za

0

Bezbjednosne preporuke

za Apache web server

AGENCIJA ZA INFORMACIONO DRUŠTVO

REPUBLIKE SRPSKE

ODJELJENJE ZA INFORMACIONU

BEZBJEDNOST

AUTOR :

ALEKSANDAR ĐURIĆ

ODGOVORNO LICE:

SRĐAN RAJČEVIĆ

Page 2: Bezbjednosne preporuke za Apache web server - oib.aidrs.org · PDF file3.1 Pokretati Apache web server kao non-root korisnik ... čest napad iz razloga što su ti serveri korisni za

ODJELJENJE ZA INFORMACIONU BEZBJEDNOST Bezbjednosne preporuke za Apache web server

1

Agencija za informaciono društvo Republike Srpske Odjeljenje za informacionu bezbjednost Publikacija OIBRS-PUB-S1 Bezbjednosne preporuke za Apache web server Autor: Aleksandar Đurić, [email protected] Urednik izdanja: mr Srđan Rajčević, [email protected] http://oib.aidrs.org | http://www.aidrs.org Ovaj dokument je redigovana i prevedena verzija originalnog dokumenta pod nazivom „CIS Apache HTTP Server 2.4 Benchmark“ dostupnog na adresi https://www.cisecurity.org/cis-benchmarks/.

Page 3: Bezbjednosne preporuke za Apache web server - oib.aidrs.org · PDF file3.1 Pokretati Apache web server kao non-root korisnik ... čest napad iz razloga što su ti serveri korisni za

ODJELJENJE ZA INFORMACIONU BEZBJEDNOST Bezbjednosne preporuke za Apache web server

2

CONTENTS

1. Planiranje i instalacija ..................................................................................................................................... 5

1.1 Planiranje pred instalaciju ..................................................................................................................... 5

1.2 Ne instalirati sistem sa više uloga .......................................................................................................... 5

1.3 Instalacija Apache-a ............................................................................................................................... 6

2. Redukcija Apache modula .............................................................................................................................. 6

2.1 Omogućiti samo potrebne module za autentikaciju i autorizaciju ........................................................ 6

2.2 Omogućiti Log_config modul ................................................................................................................. 6

2.3 Onemogućiti WebDAV modul................................................................................................................ 6

2.4 Onemogućiti Status modul .................................................................................................................... 7

2.5 Onemogućiti Autoindex modul.............................................................................................................. 7

2.6 Onemogućiti Proxy module ................................................................................................................... 7

2.7 Onemogućiti User Directories module .................................................................................................. 7

2.8 Onemogućiti Info module ...................................................................................................................... 8

3. Principi, ovlaštenja i vlasništvo ....................................................................................................................... 8

3.1 Pokretati Apache web server kao non-root korisnik ............................................................................. 8

3.2 Dati Apache User nalogu Invalid Shell ................................................................................................... 8

3.3 Zaključati Apache korisnički nalog ......................................................................................................... 8

3.4 Podesiti vlasništvo nad Apache direktorijima i fajlovima ..................................................................... 9

3.5 Podesiti Group Id nad Apache direktorijima i fajlovima ....................................................................... 9

3.6 Ograničiti Other Write pristup nad Apache direktorijima i fajlovima .................................................... 9

3.7 Osigurati Core Dump direktorij.............................................................................................................. 9

3.8 Osigurati Lock fajl .................................................................................................................................. 9

3.9 Osigurati Pid fajl ................................................................................................................................... 10

3.10 Osigurati ScoreBoard file ..................................................................................................................... 10

3.11 Ograničiti Group write pristup nad Apache direktorijima i fajlovima.................................................. 10

3.12 Ograničiti Group Write pristup nad Document Root direktorijima i fajlovima. .................................. 10

4. Apache Access Control ................................................................................................................................. 11

4.1 Zabraniti pristup OS Root direktoriju................................................................................................... 11

4.2 Dozvoliti odgovarajući pristup web sadržaju ....................................................................................... 11

4.3 Ograničiti OverRide za OS Root direktorije.......................................................................................... 11

4.4 Ograničiti Override za sve direktorije .................................................................................................. 12

5. Umanjiti broj mogućnosti, sadržaj i podešavanja......................................................................................... 12

5.1 Ograničiti opcije nad OS Root direktorijem ......................................................................................... 12

5.2 Ograničiti opcije nad Web Root direktorijem ...................................................................................... 12

5.3 Redukovati opcije nad Other direktorijima ......................................................................................... 12

Page 4: Bezbjednosne preporuke za Apache web server - oib.aidrs.org · PDF file3.1 Pokretati Apache web server kao non-root korisnik ... čest napad iz razloga što su ti serveri korisni za

ODJELJENJE ZA INFORMACIONU BEZBJEDNOST Bezbjednosne preporuke za Apache web server

3

5.4 Ukloniti default HTML sadržaj ............................................................................................................. 13

5.5 Ukloniti standardni CGI sadržaj , printenv ........................................................................................... 13

5.6 Ukloniti default CGI sadržaj, test-cgi ................................................................................................... 13

5.7 Ograničiti HTTP request metode ......................................................................................................... 13

5.8 Onemogućiti HTTP TRACE metodu ...................................................................................................... 13

5.9 Ograničiti verzije HTTP protokola ........................................................................................................ 14

5.10 Ograničiti pristup .ht* fajlovima .......................................................................................................... 14

5.11 Ograničiti ekstenzije fajlova ................................................................................................................. 14

5.12 Odbaciti zahtjeve zasnovane na IP adresi ............................................................................................ 14

5.13 Ograničiti Listen direktivu .................................................................................................................... 14

5.14 Ograničiti Browser Frame opcije ......................................................................................................... 15

6. Logovanje, nadgledanje i održavanje ........................................................................................................... 15

6.1 Konfigurisati Error Log ......................................................................................................................... 15

6.2 Konfigurisati Syslog za Error logovanje ................................................................................................ 15

6.3 Konfigurisati Access Log ...................................................................................................................... 15

6.4 Rotacija i spremanje logova ................................................................................................................. 15

6.5 Primjeniti Patch ................................................................................................................................... 16

6.6 Instalirati i omogućiti ModSecurity ..................................................................................................... 16

6.7 Instalirati i omogućiti OWASP ModSecurity Core set pravila .............................................................. 16

7. Koristit SSL/TLS ............................................................................................................................................ 16

7.1 Instalirati mod_ssl i/ili mod_nss .......................................................................................................... 16

7.2 Instalirati validni Trusted certifikat ...................................................................................................... 17

7.3 Zaštitit privatne ključeve servera ......................................................................................................... 17

7.4 Onemogućiti slabe SSL protokole ........................................................................................................ 17

7.5 Ograničiti slabe SSL šifrate ................................................................................................................... 17

7.6 Ograničiti nesigurno SSL ponovno pregovaranje ................................................................................. 17

7.7 Onemogućiti SSL kompresiju ............................................................................................................... 17

7.8 Onemogućiti TLSv1.0 protokol ............................................................................................................ 18

7.9 Omogućiti OCSP stapling ..................................................................................................................... 18

7.10 Omogućiti HTTP Strict Transport Security ........................................................................................... 18

8. Odljev informacija ........................................................................................................................................ 18

8.1 Podesiti ServerToken na "Prod" ......................................................................................................... 18

8.2 Podesiti ServerSignature na "Off" ....................................................................................................... 18

8.3 Odljev informacija putem Default Apache sadržaja ............................................................................ 19

9. Denial of Service ........................................................................................................................................... 19

9.1 Podesiti TimeOut na 10 ili manje ........................................................................................................ 19

9.2 Podesiti Keep alive na "On" ................................................................................................................ 19

Page 5: Bezbjednosne preporuke za Apache web server - oib.aidrs.org · PDF file3.1 Pokretati Apache web server kao non-root korisnik ... čest napad iz razloga što su ti serveri korisni za

ODJELJENJE ZA INFORMACIONU BEZBJEDNOST Bezbjednosne preporuke za Apache web server

4

9.3 Podesiti MaxKeepAliveRequests na 100 ili više ................................................................................... 19

9.4 Podesiti KeepAliveTimeout na 15 ili manje ......................................................................................... 20

9.5 Podesiti Timeout Limits za request hedere ......................................................................................... 20

9.6 Podesiti Timeout Limits za request body ............................................................................................. 20

10. Ograničavanje zahtjeva ............................................................................................................................ 20

10.1 Podesiti LimitRequestLine direktivu na 512 ili manje .......................................................................... 20

10.2 Osigurati da je LimitRequestFields direktiva podešena na 100 ili manje ............................................ 20

10.3 Podesiti LimitRequestFieldsize direktivu na 1024 ili manje ................................................................. 21

10.4 Podesiti LimitRequestBody direktivu na 102400 ili manje .................................................................. 21

11. Omogućiti SELinux u svrhu restrikcije Apache procesa............................................................................ 21

11.1 Omogućiti SELinux u Enforcing modu .................................................................................................. 21

11.2 Pokrenut Apache procese u httpd_t Confined kontekstu ................................................................... 21

11.3 Osigurati da httpd_t nije u Permissive modu ...................................................................................... 22

11.4 Osigurati da su samo potrebne SELinux Boolean vrjednosti omogućene ........................................... 22

12. Omogućiti AppArmor u svrhu restrikcije Apache procesa ....................................................................... 22

12.1 Omogućiti AppArmor framework ........................................................................................................ 22

12.2 Podesiti Apache AppArmor profil ........................................................................................................ 22

12.3 Osigurati da Apache AppArmor profil nije u Enforce modu ................................................................ 23

Page 6: Bezbjednosne preporuke za Apache web server - oib.aidrs.org · PDF file3.1 Pokretati Apache web server kao non-root korisnik ... čest napad iz razloga što su ti serveri korisni za

ODJELJENJE ZA INFORMACIONU BEZBJEDNOST Bezbjednosne preporuke za Apache web server

5

1. PLANIRANJE I INSTALACIJA

Ova sekcija sadrži preporuke pri planiranju i instalaciji Apache HTTP servera.

1.1 PLANIRANJE PRED INSTALACIJU

Implementirati sledeće stavke po potrebi:

• Implementirati bezbjednu infrastrukturu kontrolišući pristup web serveru koristeći

firewall-e, rutere i switch-eve.

• Ojačati temeljni operativni sistem web servera umanjujući broj listening servisa,

primjenjujući odgovarajuće patch-eve i očvršćavanjem podešavanja.

• Implementirati korištenje centralnog procesa nadgledanja logova.

• Implementirati korištenje procesa nadgledanja disk prostora i korištenje mehanizma

za rotaciju logova.

• Osigurati da WHOIS domain informacije ne otkrivaju povjerljive podatke o zaposlenima

koji se mogu koristit u svrhe social engineering-a (imena pojedinaca), war dialing-a

(brojevi telefona) i brute force napada (email adrese koje odgovaraju imenu korsnika

sistema).

• Osigurati da su Domain Name Service (DNS) serveri adekvatno zaštićeni od napada.

• Implementirati korištenje Intrusion Detection System-a (IDS) nadgledanja pokušaja

napada na web servere.

1.2 NE INSTALIRATI SISTEM SA VIŠE ULOGA

Standardna podešavanja servera sadrže veliki broj servisa koji nepotrebno izlažu server riziku

i čine ga ranjivim. Broj servisa na Apache web serveru bi se trebao ograničiti samo na

neophodne. Jedina funkcija web servera treba biti funkcionisanje kao web server.

Page 7: Bezbjednosne preporuke za Apache web server - oib.aidrs.org · PDF file3.1 Pokretati Apache web server kao non-root korisnik ... čest napad iz razloga što su ti serveri korisni za

ODJELJENJE ZA INFORMACIONU BEZBJEDNOST Bezbjednosne preporuke za Apache web server

6

1.3 INSTALACIJA APACHE-A

Prije stavljanja u produkciju svaka nova instalacija se mora testirati u datom okruženju.

Preporučeno je korištenje vendor paketa sa obzirom da sadrži veliki broj prednosti poput

lakoće sprovođenja instalacije, prilagođenosti operativnom sistemu, unaprijed je testirano a

bezbjednosne postavke su lakše primjenljive kao i nadogradnje verzije.

2 REDUKCIJA APACHE MODULA

Od velike je važnosti da Apache instalacija bude minimalna i kompaktna u skladu sa

dokumentovanim poslovnim potrebama.

2.1 OMOGUĆITI SAMO POTREBNE MODULE ZA AUTENTIKACIJU I AUTORIZACIJU

Autentikacija i autorizacija su ulazna vrata prema zaštićenim informacijama na web site-u.

Većina instalacija zahtjeva mali broj dostupnih modula. Umanjujući broj modula na broj samo

onih modula koji se koriste umanjuje se broj "vrata" i time smanjuje površina za napadanje na

web site-u. Manji broj modula predstavlja ujedno i manji broj software-a koji je potencijalno

ranjiv.

2.2 OMOGUĆITI LOG_CONFIG MODUL

Log_config modul omogućava logovanje korisničkih zahtjeva i podešavanje informacija za

svaki log. Logovanje je krucijalno zbog nadgledanja saobraćaja i uočavanja potencijalnih

prijetnji web serveru.

2.3 ONEMOGUĆITI WEBDAV MODUL

WebDAV je ekstenzija za HTTP koja klijentima omogućava stvaranje, premještanje i brisanje

fajlova i resursa na web serveru. WebDAV se rijetko koristi i predstavlja bezbjednosni rizik

zbog toga što klijentima dopušta nedozvoljeno modificiranje fajlova na web serveru, iz tog

razloga WebDAV moduli mod_dav i mod_dav_fs moraju biti onemogućeni.

Page 8: Bezbjednosne preporuke za Apache web server - oib.aidrs.org · PDF file3.1 Pokretati Apache web server kao non-root korisnik ... čest napad iz razloga što su ti serveri korisni za

ODJELJENJE ZA INFORMACIONU BEZBJEDNOST Bezbjednosne preporuke za Apache web server

7

2.4 ONEMOGUĆITI STATUS MODUL

Mod_status modul pruža uvid u trenutnu statistiku performansi servera. Postoje prednosti

dostupnosti statusa performansi servera ali je preporučeno onemogućiti ovaj modul.

2.5 ONEMOGUĆITI AUTOINDEX MODUL

Autoindex modul automatski generiše listing sadržaja direktorija na serveru. Automatsko

izlistavanje direktorija ne bi trebalo biti omogućeno pošto ono ujedno otkriva informacije koje

mogu ići u korist malicioznim akterima pri otkrivanju konvencija u imenovanju, putanja u

direktoriju i može otkriti fajlove koji ne bi trebalo da budu otkriveni.

2.6 ONEMOGUĆITI PROXY MODULE

Proxy moduli dozvoljavaju serveru da se ponaša kao proxy za HTTP i druge protokole sa

dodatnim modulima. Ukoliko instalacija nije namjenjena da služi kao proxy ovi moduli bi

trebali biti onemogućeni. Kada su ispravno konfigurisani proxy serveri mogu biti bitan

bezbjednosni faktor, ali iz bezbjednosnih razloga web server mora imati funkciju ili web

servera ili kao proxy, ne oboje. Skeniranje u potrazi za web serverima koji rade kao proxy je

čest napad iz razloga što su ti serveri korisni za anonimizaciju napada na druge servere i čak

omogućavanje slanja zahtjeva na inače zaštićenu mrežu.

2.7 ONEMOGUĆITI USER DIRECTORIES MODULE

UserDir moduli moraju biti onemogućeni tako da se korisničkim direktorijima ne može

pristupiti preko web stranice putem korišćena tilde (~) ispred korisničkog imena. Korisnički

direktoriji ne bi trebali biti omogućeni globalno sa obzirom da to dozvoljava anoniman pristup

sadržaju koji korisnici žele podjeliti sa drugim korisnicima preko mreže. Treba imati na umu da

kada se god kreira novi nalog na sistemu stvara se potencijalno novi sadržaj dostupan preko

web stranice.

Page 9: Bezbjednosne preporuke za Apache web server - oib.aidrs.org · PDF file3.1 Pokretati Apache web server kao non-root korisnik ... čest napad iz razloga što su ti serveri korisni za

ODJELJENJE ZA INFORMACIONU BEZBJEDNOST Bezbjednosne preporuke za Apache web server

8

2.8 ONEMOGUĆITI INFO MODULE

Mod_info modul pruža na uvid informacije o podešavanju servera putem pristupa /server-info

URL lokaciji. Postoje prednosti dostupnosti informacija o podešavanju servera u obliku web

stranice ali je preporučeno onemogućavanje ovog modula.

3 PRINCIPI, OVLAŠTENJA I VLASNIŠTVO

Bezbjednost na nivou operativnog sistema je temelj za bezbjedan web server.

3.1 POKRETATI APACHE WEB SERVER KAO NON-ROOT KORISNIK

Jedan od najboljih načina da se smanji izloženost napadima je da se kreira jedinstveni user i

group set permisija bez privilegija za serversku aplikaciju. "Nobody" i "daemon" user i group

setovi koji po standardu dolaze uz Unix varijante se ne bi smjeli koristiti da pokreću web

servere, sa obzirom da se ti nalozi koriste sa druge daemon servise. Treba se koristiti samo

nalog za Apache software koji neće imati pristup drugim nepotrebnim servisima.

3.2 DATI APACHE USER NALOGU INVALID SHELL

Apache nalog se ne smije koristiti kao regularni login nalog i treba mu biti dodjeljen nologin

shell da bi se osiguralo da se nalog ne može koristiti za login. Servisni nalozi predstavljaju rizik

ako mogu ostvariti login shell na sistemu.

3.3 ZAKLJUČATI APACHE KORISNIČKI NALOG

Kao bezbjednosna mjera korisnički nalog pod kojim se pokreće Apache ne bi trebao imati

validnu šifru nego bi trebao biti zaključan.

Page 10: Bezbjednosne preporuke za Apache web server - oib.aidrs.org · PDF file3.1 Pokretati Apache web server kao non-root korisnik ... čest napad iz razloga što su ti serveri korisni za

ODJELJENJE ZA INFORMACIONU BEZBJEDNOST Bezbjednosne preporuke za Apache web server

9

3.4 PODESITI VLASNIŠTVO NAD APACHE DIREKTORIJIMA I FAJLOVIMA

Vlasništvo nad Apache fajlovima i direktorijima bi trebalo biti root. Ovo se odnosi na sav

instalirani apache software. Ograničavanje vlasništva nad Apache fajlovima i direktorijima će

smanjiti mogućnost neautorizovane modifikacije tih resursa.

3.5 PODESITI GROUP ID NAD APACHE DIREKTORIJIMA I FAJLOVIMA

Apache fajlovi i direktoriji bi trebalo da imaju group Id root-a ( ili grupe ekvivalentne root-u).

Ovo podrazumjeva sav Apache software i na sve instalirane direktorije i fajlove. Jedina iznimka

je što će $APACHE_PREFIX/htdocs zahtjevati posebnu grupu koja će dozvoljavati web sadržaju

da se ažurira. Ovaj proces će smanjiti mogućnost neautorizovane modifikacije resursa.

3.6 OGRANIČITI OTHER WRITE PRISTUP NAD APACHE DIREKTORIJIMA I FAJLOVIMA

Permisije na Apache direktorijima bi trebali biti rwxr-xr-x (755) dok bi na fajlovima bilo isto

osim u slučaju kada izvršenje nije prikladno. Ovo se odnosi na sav Apache software i izuzetak

jedino može biti $APACHE_PREFIX/htdocs koji zahtjeva posebnu grupu koja će dozvoljavati

web sadržaju da se ažurira. Ni jedan od Apache fajlova i direktorija, uključujući Web document

root ne smije dopustiti other grupi write pristup. Other write pristup će se vjerovatno koristiti

za neautorizovane modifikacije web sadržaja, podešavanja fajlova ili software-a u svrhu

malicioznih napada.

3.7 OSIGURATI CORE DUMP DIREKTORIJ

Core dump-ovi su slike memorije i mogu sadržati povjerljive i bitne informacije koje ne bi

trebale biti dostupne other grupi naloga na sistemu.

3.8 OSIGURATI LOCK FAJL

Ukoliko se LockFile nalazi u writable direktoriju, other nalozi mogu pokrenuti denial of service

(DOS) napad i spriječiti server od pokretanja kreirajući lock fajl sa istim imenom.

Page 11: Bezbjednosne preporuke za Apache web server - oib.aidrs.org · PDF file3.1 Pokretati Apache web server kao non-root korisnik ... čest napad iz razloga što su ti serveri korisni za

ODJELJENJE ZA INFORMACIONU BEZBJEDNOST Bezbjednosne preporuke za Apache web server

10

3.9 OSIGURATI PID FAJL

Ukoliko se PidFile nalazi u writable direktoriju, other nalozi mogu pokrenuit denial of service

(DOS) napad i spriječiti server od pokretanja kreirajući pid fajl sa istim imenom.

3.10 OSIGURATI SCOREBOARD FILE

Ukoliko se ScoreBoardFile nalazi u writable direktoriju, other nalozi mogu pokrenuti denial of

service (DOS) napad i spriječiti server od pokretanja kreirajući fajl sa istim imenom i users

nalozi mogu nadzirati i poremetiti komunikaciju između procesa otvaranjem i mjenjanjem

dokumenta.

3.11 OGRANIČITI GROUP WRITE PRISTUP NAD APACHE DIREKTORIJIMA I

FAJLOVIMA

Group permisije na Apache direktorijima bi trebalo da budu r-x a na fajlovima bez mogućnosti

izvršenja ukoliko to nije potrebno. Restrikcija permisije vršenja izmjena na Apache fajlovima i

direktorijima može spriječiti napade koji modifikuju web sadržaj u cilju ostvarivanja

neautorizovanog pristupa ili napada na web klijente.

3.12 OGRANIČITI GROUP WRITE PRISTUP NAD DOCUMENT ROOT DIREKTORIJIMA

I FAJLOVIMA.

Grupne permisije na Apache Document Root direktoriju $DOCROOT moraju dopuštati

izmjenjivanje od strane grupa koje rade na razvoju, podršci i produkcijskom sadržaju. Bitno je

da Apache grupa koja pokreće server nema write pristup direktorijima i fajlovima na document

root-u.

Page 12: Bezbjednosne preporuke za Apache web server - oib.aidrs.org · PDF file3.1 Pokretati Apache web server kao non-root korisnik ... čest napad iz razloga što su ti serveri korisni za

ODJELJENJE ZA INFORMACIONU BEZBJEDNOST Bezbjednosne preporuke za Apache web server

11

4 APACHE ACCESS CONTROL

Preporuke se odnose na podešavanja kontrole pristupa koja je dostupna u Apache HTTP

serveru.

4.1 ZABRANITI PRISTUP OS ROOT DIREKTORIJU

Apache Directory direktiva omogućava podešavanja specifična za kontrolu pristupa i druge

opcije. Ova direktiva je korisna pri stvaranju jedinstvene polise zabrane pristupa OS

direktorijima i fajlovima, osim onima koji su specifično izuzeti. Ograničavanje pristupa se može

postići korištenjem Apache Deny direktive zajedno sa Order direktivom ili korištenjem Apache

Require direktive. Korištenje ovih direktiva spriječava nepoželjan pristup, u ovom slučaju

ograničavajući dostupnost OS root direktorija.

4.2 DOZVOLITI ODGOVARAJUĆI PRISTUP WEB SADRŽAJU

Da bi se obezbjedila dostupnost web sadržaja Apache Allow direktiva se koristi za određivanje

pristupa direktorijima, lokacijama i virtuelnim hostovima koji sadrže web sadržaj. Unutar

direktorija, lokacije ili drugog sadržaja se može koristit Allow ili Require direktiva da se omogući

određeni pristup. Allow, Deny, Order su zastarjele direktive i trebalo bi ih zamjeniti sa Require

direktivom.

4.3 OGRANIČITI OVERRIDE ZA OS ROOT DIREKTORIJE

Apache OverRide direktiva dopušta korištenje .htaccess fajlova za zaobilaženje podešavanja

koja se tiču autentikacije, rukovanja sa tipovima dokumenata, auto generisanih indeksa,

pristupnih kontrola i podešavanja. Kada server pronadje .htaccess fajl, on mora znati koje

direktive mogu zaobići prijašnje pristupne informacije. Neke od poznatih ranjivosti na web

serveru dopuštaju pregled ili izmjenu web fajlova i iz tog razloga je loša praksa držati

podešavanja web servera u .htaccess fajlovima.

Page 13: Bezbjednosne preporuke za Apache web server - oib.aidrs.org · PDF file3.1 Pokretati Apache web server kao non-root korisnik ... čest napad iz razloga što su ti serveri korisni za

ODJELJENJE ZA INFORMACIONU BEZBJEDNOST Bezbjednosne preporuke za Apache web server

12

4.4 OGRANIČITI OVERRIDE ZA SVE DIREKTORIJE

Apache AllowOverride direktiva dopušta korištenje .htaccess fajlova za zaobilaženje

podešavanja koja se tiču autentikacije, rukovanja sa tipovima dokumenata, auto generisanih

indeksa, pristupnih kontrola i podešavanja. Kada server pronađe .htaccess fajl, on mora znati

koje direktive mogu zaobići prijašnje pristupne informacije. Neke od poznatih ranjivosti na

web serveru dopuštaju pregled ili izmjenu web fajlova i iz tog razloga je loša praksa držati

podešavanja web servera u .htaccess fajlovima.

5 UMANJITI BROJ MOGUĆNOSTI, SADRŽAJ I PODEŠAVANJA.

Preporuke se odnose na smanjivanje efektivne površine napada na Apache HTTP server

5.1 OGRANIČITI OPCIJE NAD OS ROOT DIREKTORIJEM

Apache Options direktiva dozvoljava posebna podešavanja opcija. Direktiva se koristi da bi se

stvorila minimalna polisa opcija koja dozvoljava samo minimalne opcije na root direktorij

nivou. Za posebne web stranice ili dijelove web stranica opcije se mogu omogućiti po potrebi

kada je to poželjno. Ni jedna opcija ne bi trebala biti omogućena i vrijednost za Options

direktivu treba biti None.

5.2 OGRANIČITI OPCIJE NAD WEB ROOT DIREKTORIJEM

Apache Options direktiva na web root ili dokument root nivou mora biti ograničena na

minimalne potrebne opcije. Vrijednost None je preporučena osim u slučaju pregovaranja po

pitanju sadržaja u slučaju korištenja podrške za više jezika. Ostale opcije ne bi trebale biti

omogućene.

5.3 REDUKOVATI OPCIJE NAD OTHER DIREKTORIJIMA

Opcije za other direktorije i hostove trebaju biti ograničene na minimum potrebnih opcija.

Preporučeno je podešavanje None ali neke od opcija poput Multiviews, ExecCGI,

FollowSymLinks, SymLinksIfOwnerMatch, Includes, IncludesNOEXEC i Indexes mogu biti izuzete

u nekim slučajevima.

Page 14: Bezbjednosne preporuke za Apache web server - oib.aidrs.org · PDF file3.1 Pokretati Apache web server kao non-root korisnik ... čest napad iz razloga što su ti serveri korisni za

ODJELJENJE ZA INFORMACIONU BEZBJEDNOST Bezbjednosne preporuke za Apache web server

13

5.4 UKLONITI DEFAULT HTML SADRŽAJ

Apache instalacija uobičajeno ima sadržaj koji nije potreban ili prilakadan za produkcijske

svrhe. Primarna funkcija ovog sadržaja jeste da pruži uobičajenu web stranicu, korisničke

upute ili da demonstrira specijalne mogućnosti web servera. Sav nepotrebni sadržaj treba biti

uklonjen.

5.5 UKLONITI STANDARDNI CGI SADRŽAJ , PRINTENV

Apache instalacija ima standardni CGI sadržaj koji nije potreban ili prikladan za produkcijske

svrhe. Primarna funkcija ovih programa jeste da demonstrira mogućnosti web servera. Jedan

uobičajen dio CGI sadržaja za Apache instalaciju jeste skripta printenv. Ova skripta vraća sve

varijable CGI okruženja što uključuje veliki broj detalja podešavanja servera i sistemskih

putanja.

5.6 UKLONITI DEFAULT CGI SADRŽAJ, TEST-CGI

Apache instalacija ima uobičajeni CGI sadržaj koji nije potreban ili prikladan za produkcijske

svrhe. Primarna fukncija ovih programa jeste da demonstrira mogućnosti web servera. Jedan

uobičajen dio CGI sadržaja za Apache instalaciju jeste skripta test-cgi. Ova skripta vraća sve

varijable CGI okruženja što uključuje veliki broj detalja podešavanja servera.

5.7 OGRANIČITI HTTP REQUEST METODE

Ograničiti neobavezne HTTP request metode Apache LimitExcept direktivom tako da web

server prihvata i procesuira samo GET, HEAD, POST i OPTIONS HTTP request metode. Ove

metode će omogućiti normalan rad web servera dok metode poput PUT i DELETE mogu

modifikovati resurse na web serveru i ne smiju biti primjenljive.

5.8 ONEMOGUĆITI HTTP TRACE METODU

Onemogućiti HTTP TRACE request metodu korištenjem TraceEnable direktive.

Page 15: Bezbjednosne preporuke za Apache web server - oib.aidrs.org · PDF file3.1 Pokretati Apache web server kao non-root korisnik ... čest napad iz razloga što su ti serveri korisni za

ODJELJENJE ZA INFORMACIONU BEZBJEDNOST Bezbjednosne preporuke za Apache web server

14

5.9 OGRANIČITI VERZIJE HTTP PROTOKOLA

Odbaciti korištenje zastarjelih HTTP verzija korištenjem Apache modula mod_rewrite ili

mod_security. Veliki broj malicioznih automatizovanih programa i skenera ranjivosti šalje

abnormalne HTTP verzije da utvrdi način na koji će server odgovoriti.

5.10 OGRANIČITI PRISTUP .HT* FAJLOVIMA

Onemogućiti pristup svih fajlovima koji počinju sa .ht korištenjem FilesMatch direktive.

Uobičajeno ime fajla za pristup koji dozvoljava fajlovima u web direktorijima da prevaziđu

Apache podešavanja jeste .htaccess. Ime fajlova za za web lozinke i group fajlove jeste

.htpasswd i htgroup. Ni jedan od ovih dokumenata ne bi trebao biti u root-u ali u slučaju da

jesu FilesMatch direktiva može biti korištena da se onemogući njihov pregled od strane web

klijenata.

5.11 OGRANIČITI EKSTENZIJE FAJLOVA

Onemogućiti pristup neprikladnim file ekstenzijama od kojih se ne očekuje da su legitiman dio

web stranice korištenjem FilesMatch direktive.

5.12 ODBACITI ZAHTJEVE ZASNOVANE NA IP ADRESI

Apache modul mod_rewrite se može korisiti za odbacivanje pristupa putem korištenja IP

adrese. Većina normalnih zahtjeva preko browsera i automatizovanog software-a će koristiti

host ime i sadržati ime u HTTP HOST hederu. Malware i automatski skeneri mreža koriste IP

adrese sa obzirom da ih je lakše automatizovat. Onemogućavanjem IP web zahtjeva ovim

automatizovanim tehnikama će biti onemogućen pristup.

5.13 OGRANIČITI LISTEN DIREKTIVU

Apache Listen direktiva određuje IP adrese i portove na kojima će Apache web server slušati.

Umjesto da sluša na svim IP adresama dostupnim na sistemu, specifična IP adresa ili adrese

moraju biti određene. Listen direktiva bez određene IP adrese ne bi trebala biti korištena.

Page 16: Bezbjednosne preporuke za Apache web server - oib.aidrs.org · PDF file3.1 Pokretati Apache web server kao non-root korisnik ... čest napad iz razloga što su ti serveri korisni za

ODJELJENJE ZA INFORMACIONU BEZBJEDNOST Bezbjednosne preporuke za Apache web server

15

5.14 OGRANIČITI BROWSER FRAME OPCIJE

Header direktiva dopušta server HTTP response hederima da budu dodani, zamjenjeni ili

spojeni. Ovo omogućava embedovanje malicioznog sadržaja sa očekivanim web sadržajem.

6 LOGOVANJE, NADGLEDANJE I ODRŽAVANJE

Za zaštitu web servera i infrastrukture su vitalne procedure logovanja, nadgledanja i

održavanja.

6.1 KONFIGURISATI ERROR LOG

LogLevel direktiva se koristi za konfiguraciju nivoa štetnosti error logova. Vrijednosti error

logova debug, info, notice, warn, error, crit, alert, i emer. Preporučeni nivo jeste notice, tako

da se loguje sve od emerg nivoa do notice nivoa.

6.2 KONFIGURISATI SYSLOG ZA ERROR LOGOVANJE

ErrorLog direktiva bi trebala biti konfigurisana tako da šalje logove u syslog tako da Apache

error logovi mogu biti procesuirani i nadgledani zajedno sa sistemskim logovima.

6.3 KONFIGURISATI ACCESS LOG

LogFormat direktiva definiše format i informacije koje će biti uključene u access logove.

Server access logovi se mogu koristit u svrhu otkrivanja resursa koji se najviše koriste, oni se

mogu koristit za istraživanje neobičnog ponašanja koje može biti indikacija napada koji se

sprema ili se već odigrao.

6.4 ROTACIJA I SPREMANJE LOGOVA

Bitno je osigurati adekvatan prostor na disku na particiji koja će sadržati log fajlove. Treba

imati na umu da je generisanje logova pod potencijalnom kontrolom malicioznih aktera i iz tog

razloga ne treba Apache log fajlove čuvati na root particiji OS-a. Log fajlovi bi trebali biti

Page 17: Bezbjednosne preporuke za Apache web server - oib.aidrs.org · PDF file3.1 Pokretati Apache web server kao non-root korisnik ... čest napad iz razloga što su ti serveri korisni za

ODJELJENJE ZA INFORMACIONU BEZBJEDNOST Bezbjednosne preporuke za Apache web server

16

spremani na posebnoj particiji a bitno je čuvati bar 3 mjeseca logova dostupno za istragu u

slučaju incidenta.

6.5 PRIMJENITI PATCH

Primenjivati dostupne Apache zakrpe unutar jednog mjeseca od dostupnosti istih.

6.6 INSTALIRATI I OMOGUĆ ITI MODSECURITY

ModSecurity je open source web application firewall (WAF) za nadgledanje, logovanje i

kontrolu pristupa web aplikaciji. Omogućava set pravila koja se mogu koristiti za detekciju i

prevenciju poznatih vrsta napada na web aplikaciju.

6.7 INSTALIRATI I OMOGUĆ ITI OWASP MODSECURITY CORE SET PRAVILA

OWASP ModSecurity Core Rules Set (CRS) je set open source defanzivnih pravila za

ModSecurity web application firewall (WAF) koja pružaju osnovnu zaštitu od mnogih poznatih

vrsta napada.

7 KORISTITI SSL/TLS

Preporuke se tiču podešavanja SSL/TLS aspekta Apache HTTP servera.

7.1 INSTALIRATI MOD_SSL I/ILI MOD_NSS

Mod_ssl je standardni, najčešće korišteni način implementacije SSL/TLS-a za Apache. Mod_nss

je Apache modul za implementaciju Network Security Services (NSS) software-a koji pored

TLS-a sadrži veliki broj kriptografskih funkcija.

Page 18: Bezbjednosne preporuke za Apache web server - oib.aidrs.org · PDF file3.1 Pokretati Apache web server kao non-root korisnik ... čest napad iz razloga što su ti serveri korisni za

ODJELJENJE ZA INFORMACIONU BEZBJEDNOST Bezbjednosne preporuke za Apache web server

17

7.2 INSTALIRATI VALIDNI TRUSTED CERTIFIKAT

Default SSL certifikat je self-signed i nije trusted. Instalirati validan certifikat potpisan od strane

trusted certifikat authority tijela. Da bi bio validan certifikat mora biti potpisan od strane

trusted authority tijela, ne smije isteći i mora imati ime koje se slaže sa host imenom web

servera.

7.3 ZAŠTITIT PRIVATNE KLJUČEVE SERVERA

Od kritične je važnosti da se zaštiti privatni key servera. Kao vid zaštite se koristi enkripcija,

enkripcija podrazumjeva korištenje lozinke svaki put kada se server pokreće i lozinka zahtjeva

svoju zaštitu.

7.4 ONEMOGUĆITI SLABE SSL PROTOKOLE

Apache SSLProtocol direktiva određuje dozvoljene SSL i TLS protokole. SSLv2 i SSLv3 protokoli

bi trebali biti onemogućeni a samo TLS protokol bi trebao biti omogućen.

7.5 OGRANIČITI SLABE SSL ŠIFRATE

Onemogućiti slabo SSL šifrovanje korištenjem SSLCipherSuite-a i SSLHonorCipherOrder

direktive. SSLCipherSuite određuje algoritme za šifrovanje koje su dozvoljeni u pregovaranju

sa klijentom. SSLHonocCipherOrder određuje korištenje šifrovanja koje preferira server

umjesto onog koji preferira klijent.

7.6 OGRANIČITI NESIGURNO SSL PONOVNO PREGOVARANJE

Preporučeno je nadograđivanje poboljšanih SSL/TLS protokola i onemogućavanje nesigurnog

ponovnog pregovaranja onemogućavanjem SSLInsecureRenegotiation direktive.

7.7 ONEMOGUĆITI SSL KOMPRESIJU

SSLCompression direktiva kontroliše da li Apache koristi SSL kompresiju prilikom serviranja

sadržaja preko HTTPS-a. Preporučeno je da SSLCompression direktiva bude ugašena.

Page 19: Bezbjednosne preporuke za Apache web server - oib.aidrs.org · PDF file3.1 Pokretati Apache web server kao non-root korisnik ... čest napad iz razloga što su ti serveri korisni za

ODJELJENJE ZA INFORMACIONU BEZBJEDNOST Bezbjednosne preporuke za Apache web server

18

7.8 ONEMOGUĆITI TLSV1.0 PROTOKOL

TLSv1.0 protokol bi trebao biti onemogućen putem SSLProtocol direktiva, sa obzirom da je

ranjiv na odljev informacija.

7.9 OMOGUĆITI OCSP STAPL ING

Apache SSLUseStapling direktiva i SSLStaplingCache direktiva su preporučene za

omogućavanje OCSP Stapling-a od strane web servera. Online Certificate Status Protocol pruža

trenutni revocation status X.509 cetrifikata i omogućava ukidanje validnosti potpisanog

certifikata prije isteka njegovog roka.

7.10 OMOGUĆITI HTTP STRICT TRANSPORT SECURITY

HTTP Strict Transport Securty (HSTS) je web server sigurnosna polisa koju određuje HTTP

Server header. HSTS header deklariše da se samo HTTPS komunikacija treba koristiti a ne HTTP

komunikacija.

8 ODLJEV INFORMACIJA

Preporuke se odnose na umanjivanje izloženosti osjetljivih informacija

8.1 PODESITI SERVERTOKEN NA "PROD"

Apache ServerTokens direktiva treba biti konfigurisana da pruža minimum informacija.

Postavljanjem vrijednosti na Prod ili ProductOnly jedina pružena informacija o verziji će biti

"Apache", bez detalja o modulima i instaliranoj verziji.

8.2 PODESITI SERVERSIGNATURE NA "OFF"

Onemogućiti server potpis koji sadrži informacije u futeru dokumenata generisanih od strane

severa. Ukoliko je ServerSignature direktiva prisutna u Apache podešavanjima njenu

vrijednost staviti na Off.

Page 20: Bezbjednosne preporuke za Apache web server - oib.aidrs.org · PDF file3.1 Pokretati Apache web server kao non-root korisnik ... čest napad iz razloga što su ti serveri korisni za

ODJELJENJE ZA INFORMACIONU BEZBJEDNOST Bezbjednosne preporuke za Apache web server

19

8.3 ODLJEV INFORMACIJA PUTEM DEFAULT APACHE SADRŽAJA

Da bi se odljev informacija spriječio potrebno je ukloniti standardni sadržaj sa web servera. Da

bi se identifikovao tip web servera i verzije instaliranog software-a potencijalni napadači

koriste skenove u potrazi za ikonama ili posebnim sadržajem specifičnim za tip i verziju

servera.

9 DENIAL OF SERVICE

Denial of Service (DoS) napadi imaju namjeru da umanje sposobnost servisa da procesuira i

odgovori na zahtjeve. DoS napadi pokušavaju iscrpiti mrežne, procesorske, disk i memorijske

resurse. Preporuke služe otpornosti na DoS napade.

9.1 PODESITI TIMEOUT NA 10 ILI MANJE

TimeOut direktiva kontroliše maksimalno vrijeme u sekundama koje će Apache HTTP server

čekati da se Input/Output poziv završi. Preporučeno je konfigurisanje TimeOut direktive na 10

ili manje.

9.2 PODESITI KEEP ALIVE NA "ON"

KeepAlive direktiva kontroliše Apache podešavanje o korištenju iste TCP konekcije po klijentu

da procesuira HTTP podzahtjeve od tog klijenta. Preporučeno je podešavanje KeepAlive

direktive na On.

9.3 PODESITI MAXKEEPALIVEREQUESTS NA 100 ILI VIŠE

MaxKeepAliveRequest direktiva ograničava broj dopuštenih zahtjeva po konekciji kada je

KeepAlive uključen, ako je namješten na 0, broj zahtjeva če biti neograničen. Preporučeno je

da MaxKeepAliveRequest direktiva bude namještena na 100 ili više.

Page 21: Bezbjednosne preporuke za Apache web server - oib.aidrs.org · PDF file3.1 Pokretati Apache web server kao non-root korisnik ... čest napad iz razloga što su ti serveri korisni za

ODJELJENJE ZA INFORMACIONU BEZBJEDNOST Bezbjednosne preporuke za Apache web server

20

9.4 PODESITI KEEPALIVETIMEOUT NA 15 ILI MANJE

KeepAliveTimeout direktiva određuje broj sekundi koji će Apache čekati na podzahtjev prije

nego zatvori konekciju koja se čuva živom.

9.5 PODESITI TIMEOUT LIMITS ZA REQUEST HEDERE

RequestReadTimeout direktiva dozvoljava podešavanje limita za timeout klijentskih zahtjeva.

Preporučena podešavanja su da maksimum timeout bude 40 sekundi ili manje.

9.6 PODESITI TIMEOUT LIMITS ZA REQUEST BODY

RequestReadTimeout direktiva omogućava postavljane timeout vrijednosti na djelove

zahtjeva. Preporučena podešavanja limita su da maksimum bude 20 sekundi ili manje.

10 OGRANIČAVANJE ZAHTJEVA

Preporuke se odnose na ograničavanje maksimalne veličine parametara za zahtjeve.

Preporučeno je testiranje svih postavi prije puštanja u produkciju.

10.1 PODESITI LIMITREQUESTLINE DIREKTIVU NA 512 ILI MANJE

LimitRequestLine direktiva određuje maksimalni broj bajta koje će Apache čitati za svaku liniju

HTTP zahtjeva. Preporučena postavka za LimitRequestLine jeste 512 ili manje.

10.2 OSIGURATI DA JE LIMITREQUESTFIELDS DIREKTIVA PODEŠENA NA 100 ILI

MANJE

LimitRequestFields direktiva određuje maksimalni limit na broj HTTP request headera po

zahtjevu. Preporučena postavka za LimitRequestFields direktivu jeste 100 ili manje.

Page 22: Bezbjednosne preporuke za Apache web server - oib.aidrs.org · PDF file3.1 Pokretati Apache web server kao non-root korisnik ... čest napad iz razloga što su ti serveri korisni za

ODJELJENJE ZA INFORMACIONU BEZBJEDNOST Bezbjednosne preporuke za Apache web server

21

10.3 PODESITI LIMITREQUESTFIELDSIZE DIREKTIVU NA 1024 ILI MANJE

LimitRequestFieldSize direktiva određuje maksimalnu veličinu HTTP request header polja.

Preporučena postavka za LimitRequestFieldSize direktivu jeste 1024 ili manje.

10.4 PODESITI LIMITREQUESTBODY DIREKTIVU NA 102400 ILI MANJE

LimitRequestBody direktiva određuje maksimalnu veličinu za HTTP request body. Preporučena

postavka za LimitRequestBody direktivu jeste 102400 ili manje.

11 OMOGUĆITI SELINUX U SVRHU RESTRIKCIJE APACHE PROCESA

Preporuke se odnose na osnovna podešavanja pri korištenju SELinux kernel modula. SELinux

pruža dodatno ojačavanje bezbjednosti koje će spriječiti pristup resursima, fajlovima i

direktorijima putem httpd procesa čak i u slučajevima u kojima bi aplikacijska ili serverska

ranjivost mogla pružiti nedozvoljeni pristup.

AppArmor i SELinux sadrže slične mogućnosti i podešavanja ali ih nije preporučeno koristiti na

istom sistemu.

11.1 OMOGUĆITI SELINUX U ENFORCING MODU

SELinux (Security-Enhanced Linux) je Linux kernel sigurnosni modul. SELinux podešavanja

pristupa pružaju mnogo sigurniji model koji se koristi za implementiranje deny-by-default

politike koja će dopuštati samo ono što je eksplicitno dopušteno.

11.2 POKRENUT APACHE PROCESE U HTTPD_T CONFINED KONTEKSTU

SELinux sadrži specifične polise koje se mogu podešavati tako da dodjele Apache HTTPD

serveru minimalne privilegije zbog kojih bi imao minimalni pristup specifičnim direktorijima,

fajlovima i portovima. Adekvatna implementacija SELinux-a može spriječiti eksploataciju

ranjivosti u web aplikaciji primjenom dodatnih restrikcija.

Page 23: Bezbjednosne preporuke za Apache web server - oib.aidrs.org · PDF file3.1 Pokretati Apache web server kao non-root korisnik ... čest napad iz razloga što su ti serveri korisni za

ODJELJENJE ZA INFORMACIONU BEZBJEDNOST Bezbjednosne preporuke za Apache web server

22

11.3 OSIGURATI DA HTTPD_T NIJE U PERMISSIVE MODU

Pored podešavanja cjelokupnog SELinux postavki u permissive mod, moguće je postavljati

individualne tipove procesa poput httpd_t u permissive mod. Permissive mod neće spriječiti

bilo kakav pristup ili djelovanja, on će sve akcije koje bi bile spriječene logovati.

11.4 OSIGURATI DA SU SAMO POTREBNE SELINUX BOOLEAN VRJEDNOSTI

OMOGUĆENE

Omogućavanje samo potrebnih boolean vrijednosti vezanih uz HTTPD pruža zaštitu koja će

odbiti sve akcije koje se ne koriste ili ne očekuju.

12 OMOGUĆITI APPARMOR U SVRHU RESTRIKCIJE APACHE PROCESA

Preporuke se odnose na osnovna podešavanja pri korištenju AppArmor kernel modula.

AppArmor pruža dodatno ojačavanje bezbjednosti koje će spriječiti pristup resursima,

fajlovima i direktorijima putem apache2 procesa čak i u slučajevima u kojima bi aplikacijska ili

serverska ranjivost mogla pružiti nedozvoljeni pristup.

AppArmor i SELinux sadrže slične mogućnosti i podešavanja ali ih nije preporučeno koristiti na

istom sistemu.

12.1 OMOGUĆITI APPARMOR FRAMEWORK

AppArmor je Linux kernel sigurnosni modul koji pruža obavezne kontrole pristupa sa

bezbjednosnim polisama. AppArmor može prisiliti pravila na programe za pristup fajlovima i

mrežnoj konekciji i ograničiti akcije u skladu sa definisanim politikama.

12.2 PODESITI APACHE APPARMOR PROFIL

AppArmor sadrži specifične polise koje se mogu podešavati tako da dodjele Apache HTTPD

serveru minimalne privilegije zbog kojih bi imao minimalni pristup specifičnim direktorijima,

fajlovima i portovima. Adekvatna implementacija AppArmor-a može sprječiti eksploataciju

ranjivosti u web aplikaciji primjenom dodatnih restrikcija.

Page 24: Bezbjednosne preporuke za Apache web server - oib.aidrs.org · PDF file3.1 Pokretati Apache web server kao non-root korisnik ... čest napad iz razloga što su ti serveri korisni za

ODJELJENJE ZA INFORMACIONU BEZBJEDNOST Bezbjednosne preporuke za Apache web server

23

12.3 OSIGURATI DA APACHE APPARMOR PROFIL NIJE U ENFORCE MODU

AppArmor profili mogu biti u 3 moda, disabled, complain ili enforce. U complain modu sva

narušavanja kontrola pristupa se loguju ali se restrikcije ne primjenjuju. Pri promjeni moda

profila preporučuje se restartovanje Apache servera sa obzirom da procesi u toku neće biti

zahvaćeni polisom.