WAMP, lokalni Windows web server

Vrijeme čitanja: 7 min

Ako se bavite web dizajnom, razvojem web aplikacija ili jednostavno želite isprobavati i igrati se sa web serverom, ovo je prava stvar za vas.

Za rad standardnog web servera potrebno je imati servise Apache, MySQL (odnosno MariaDB) i PHP. Ovo troje zajedno omogućuju da se web stranice mogu pokretati i da korisnik može nešto raditi po njima. Naravno, ima tu i drugih stvari, ovisno o tipu weba.

Windows sam po sebi nema podršku za sve te servise jer se web serveri u velikoj većini vrte na Linux operativnom sustavu koji imaju dobru podršku za to. Međutim, postoje paketi koji mogu na Windows sustavu instalirati sve potrebno da se i na Windows sustavu može pokretati web server.

WAMP je upravo jedan takav paket.

Po samom imenu se može razlikovati za koji sustav je predviđen paket, jer se može web server imati na različitim sustavima:

  • WAMP – Windows, Apache, MySQL, and PHP
  • MAMP – Mac, Apache, MySQL, and PHP
  • LAMP – Linux, Apache, MySQL, and PHP

Postoji i paket XAMPP (cross-platform, Apache, MySQL, PHP and Perl), međutim u njemu nije dobro raditi ako se planira imati web aplikaciju izloženu negdje prema van. Razlog tome je što XAMPP dolazi instaliran sa isključenim svim sigurnosnim opcijama te kao takav nije predviđen za rad u produkciji već isključivo lokalno za potrebe testiranja. Ovo je navedeno i na službenoj XAMPP stranici.

WAMP se instalira sa uključenim sigurnosnim opcijama, a još ćemo ga mi i dodatno osigurati, zato se može koristiti javno u nekoj produkciji. No, idemo redom …

Instalacija

Ovdje se nema što posebno pričati. Potrebno je skinuti instalaciju i instalirati je kao svaki drugi softver. Nije potrebno imati nikakav korisnički račun za preuzimanje aplikacije.

Kad se pokrene instalacijski wizard, prvi korak je odabrati komponente za razvoj. Ovo se više odnosi na ljude koji se bave razvojem i oni će znati što odabrati. Za nas ostale se ovo ne tiče i može se slobodno se maknuti da se ne instalira bez veze.

Slijedeći korak je odabir instalacijske putanje. Ponudit će svoju default putanju ali ja ovo volim promijeniti u neku svoju iz organizacijskih razloga, da točno znam gdje mi se što nalazi.

Za primer ovog članka, stavit ću da instalacija ide u C:\wamp (potrebno je prethodno napraviti taj folder i onda ga odabrati). Vi kod sebe stavite gdje vam najviše odgovara.

Idemo dalje …

Postavljanje lozinke za root korisnika za baze. Poželjno je staviti neki kompliciranu i dugačku lozinku, valjda ne trebam objašnjavati zašto?

Već ovdje na početku se vide sigurnosne razlike između WAMP i XAMPP aplikacija. Naime, XAMPP uopće nema postavljenu lozinku za root korisnika i pristup bazama. Ona se može naravno postaviti, ali se tog treba sjetiti napraviti 😉

Nakon postavljanja lozinke, doći do kraja wizarda i pričekati da se instalacija završi.

Rad u WAMP-u

Kad instalacija završi, web server se automatski pokreće a može mu se pristupiti kroz browser putem lokalne adrese http://127.0.0.1/. Kako trenutno na serveru nema nikakve web aplikacije, pokrenut će se default stranica.

Uz potrebne servisa, WAMP instalira i svoj Manager Tool preko kojeg se može upravljati serverom, ulazak u phpMyAdmin te gledati ako ima kakvih serverskih grešaka.

Struktura foldera

Ako odete u C:\wamp (odnosno folder koji ste na početku instalacije izabrali da se tamo instalira WAMP) i pogledate strukturu foldera, vidjet ćete da tamo ima dosta toga.

Nama su tu zanimljiva tri foldera:

  • apache2
  • mariadb
  • php

Apache je glavni motor pokretač web servera. Ulaskom u taj folder opet će tu biti svega. Ono što nas zanima ovdje je folder htdocs. U ovaj folder će se stavljati sve web aplikacije koje su potrebne da se vrte na web serveru i da im se može pristupiti. Ukoliko imate nekog iskustva s izradom web stranica, vjerojatno ste vidjeli da na serverima postoji folder koji se zove „public_html“. E, to je to, samo se ovdje to zove „htdocs“.

MariaDB folder je mjesto gdje se fizički nalaze baze podataka koliko god da ih ima. U pravilu ovdje nećemo ništa raditi jer svako kreiranje, modificiranje i brisanje baze je dobro raditi kroz phpMyAdmin koji dolazi u WAMP instalaciji. Lokaciju ovog foldera je dobro znati u slučajevima kada se radi nekakav upgrade, pa se taj folder može kopirati na neko drugo mjesto kao backup (kao dodatni backup, ne kao jedini!).

Php folder nam treba jer se u njemu nalazi konfiguracijska datoteka php.ini koja sadrži sve php postavke koje se primjenjuju na razini cijelog servera. Tu će se mijenjati stvari tipa maksimalna veličina upload datoteke, uključivati php ekstenzije ako ih neka web aplikacija treba i slično.

Promjena Document Root

Kad se u htdocs stavi neka web aplikacija, pristup njoj će biti u obliku „ip_adresa/ime_aplikacije“ ili „ime_servera/web_aplikacija“.

Ovo će raditi bez problema, ljudi će moći dolaziti na aplikaciju. No ne želimo da tako izgleda, jer je ružno, dugačko i jednostavno nije profesionalno.

Želimo da pristup bude samo preko IP adrese ili imena, bez dodataka.

Zato trebamo promijeniti Document Root postavku koja će govoriti da nam je glavni (root) folder onaj gdje se nalazi web aplikacija, a ne onaj gdje se nalaze sve web datoteke.

Postupak je slijedeći

1. Prvo je potrebno u Apache konfiguraciji uključiti opciju za VirtualHost

  • Otići na putanju „C:\wamp\apache2\conf\httpd.conf“ (odnosno folder u kojem ste instalirali svoj WAMP) i otvoriti tu datoteku u Notepadu
  • Editirati datoteku i maknuti komentar za VirtualHosts
  • Save i zatvoriti .conf datoteku

2. Sad možemo urediti postavke za VirtualHost a time i DocumentRoot za naše potrebe.

  • Otići na „C:\xampp\apache\conf\extra\httpd-vhosts.conf“ i otvoriti datoteku u Notepadu
  • U nju dodati slijedeće:
<VirtualHost 127.0.0.1:80>
  DocumentRoot "C:\wamp\apache2\htdocs\web"
    <Directory "C:\wamp\apache2\htdocs\web">
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
 </Directory>
</VirtualHost>

Gdje je:

  • <VirtualHost 127.0.0.1:80> – IP adresa koja će voditi do naše web aplikacije. Za primjer ovdje je stavljena lokalna IP adresa, ali tu može biti neka druga, ovisno o vašem okruženju gdje ste digli web server i tko smije pristupati
  • DocumentRoot “C:\wamp\apache2\htdocs\web” – putanja do glavnog foldera u kojem se nalazi naša web aplikacija
  • <Directory “C:\wamp\apache2\htdocs\web”> – također putanja do glavnog foldera web aplikacije gdje se fizički nalaze datoteke web aplikacije

Važna napomena:
nakon svake promjene Apache konfiguracije, PHP konfiguracije ili bilo čega unutar WAMP servera, potrebno je napraviti restart Apache servisa kako bi se te promijene primijenile.

Ako se to ne napravi, web server će i dalje vrtiti iste postavke koje su bile prije nekih promjena.

Ovime smo dobili da sada pokrenemo lokalno adresu http://127.0.0.1, odmah će se otvoriti web aplikacija koju imamo, što je mnogo bolje nego da treba dodati još dodatak u adresu da se otvori.

Sigurnost

WAMP web server dolazi instaliran s već uključenim raznim sigurnosnim postavkama ali nije na odmet to dodatno zaštiti jer sigurnosti nikad nije previše.

Ono što ćemo ovdje napraviti jer da sakrijemo informacije koje web server šalje kako nitko ne bi znao o kojem serveru se radi i o kojima verzijama servisima. Jer za starije verzije servisa uvijek postoji neki exploit kojeg zločinci uvijek mogu naći kako ga iskoristiti, a ako web server šalje informacije o verzijama servisa, onda točno znaju za koju verziju trebaju tražiti exploit. To želimo naravno spriječiti, da uopće ne znaju na čemu se vrti naša web aplikacija.

Taj dio koji šalje informacije o našem web serveru se zove Server signature.

Primjer kako to izgleda kad server sve šalje:

Prema ovome napadač točno vidi što se vrti kod nas i prema tome može tražiti koje su poznate ranjivosti za ovu specifičnu verziju servisa.

Postupak da server ne šalje podatke:

  1. U WAMP-u, otići na putanju: „C:\wamp\apache2\conf\httpd.conf“ (odnosno putanja gdje ste stavili svoju WAMP instalaciju)
  2. Potražiti gdje pišu ove vrijednosti i isključiti ih, da bude ovako:
    • ServerSignature Off
    • ServerTokens Prod
    • TraceEnable Off
  3. Otići u php folder te u datoteci php.ini promijeniti slijedeće:
    expose_php = Off

Nakon spremanja postavki, napraviti restart Apache servisa da se promijene primjene.

Ovime smo dobili sada da web server neće slati koju verziju PHP-a ima i neće slati koju verziju Apache servisa ima, ali će slati da se radi o Apache servisu (pisat će samo „Apache“, bez verzije).

Ovaj dio se može dodatno osigurati i postići da umjesto „Apache“ piše što god želimo. Tako naprimjer možemo zlikovce navesti na krivi trag time što ćemo za server napisati „Microsoft IIS 8“ i time im govoriti kako se naša web aplikacija nalazi na Windows serveru i koristi Internet Information Services (IIS) web server (servis koji je samo za Windows okruženje).

Da bi to mogli napraviti, potrebno je prvo u WAMP-u uključiti modSecurity, a zatim u Apache konfiguraciji („C:\wamp\apache2\conf\httpd.conf“ ) podesiti slijedeće:

  • ServerSignature Off
  • SecServerSignature “Moj super tajni Xserver 3”
  • ServerTokens Full

Kad zlikovac bude pokušavao kopati podatke o našem serveru, dobit će samo to da je riječ o super tajnom serveru, a sad ako uspije naći exploit za njega …

AUTOR
Hrvoje Matešić

Hrvoje Matešić

PODIJELI ČLANAK
MOGLO BI TE ZANIMATI
PRETPLATI SE
Saznaj kad napišem novi članak
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments