bezbjednosne preporuke za apache web server - oib.aidrs.org · pdf file3.1 pokretati apache...
TRANSCRIPT
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Ć
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/.
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
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
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
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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
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.
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.
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.
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.
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.
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.
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.
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.