Biglbon Blek Rev C (7. deo) – Biglbon Blek u službi veb-servera
Vodič od prvog dana (7. deo)
Autor: Nenad marjanović
U prošlosti većina korisnika bila je skoncentrisana na korišćenje veb-servera Apači (Apache) iako se još tada znalo da je teško održati resursno zahtevan servis na mašinama koje su sve više bile virtualizovane korišćenjem programa kao što je VMver (VMware). Prva verzija veb-servera Hijavata (Hiawatha) objavljena je 2002. godine i do danas se ovaj program vodi ideologijom otvorenog koda. Da iza uspešnog projekta može stajati samo jedan čovek, dokazao je i njen autor Hugo Lesnik. Hijavata je kreirana na jedinstvenom konceptu i ideji, a to je sigurnost. Ovaj projekat danas pored gospodina Huga, pre svake izmene koda, proverava i kompanija koju sačinjavaju eksperti iz domena programiranja, čime je autor dokazao da ne želi odustajati od svog koncepta i motiva – sigurnost na prvom mestu. Što se tiče resursa, sam server koristi oko 160MB (u našem radnom okruženju) memorije, ali zato zauzvrat dobijemo što ni jedan od konkurenata danas nema, a to su integrisana antihakerska rešenja. Da li su ova rešenja savršena? Nisu. Međutim, ovo je jedini projekat koji je izvršio integraciju funkcionalnosti koje očigledno drugima nikad nisu bile na listi prioriteta, ili su dodavane u vidu modula koji bi samo još više usporili aktuelno korišćenje sistema. Instalacija za korisnike Debijana može se izvršiti upotrebom Debijan paketa, dodavanjem izvora u /etc/apt/sources.list ili kompajliranjem izvornog koda. Mi ćemo opisati standardnu instalaciju korišćenjem .deb paketa. Prvo preuzimamo potreban paket.
wget https://files.tuxhelp.org/hiawatha/hiawatha_9.13_amd64.deb
Nakon ovoga instaliramo pakete od kojih Hijavata zavisi.
apt-get install libxslt1.1
Proces završavamo instalacijom .deb paketa.
dpkg -i hiawatha_*
Ukoliko želimo da uklonimo instalaciju u bilo kom trenutku, koristimo dpkg komandu.
dpkg -P hiawatha*
Konfiguracioni fajl nakon instalacije možemo naći na sledećoj lokaciji:
/etc/hiawatha/hiawatha.conf
Pokretanje i zaustavljanje servera vršimo komandama:
service hiawatha start service hiawatha stop
Da bismo testirali instalacioni proces, otvaramo internetski pretraživač koji koristimo – Fajerfoks, Kroum ili neki drugi. http://localhost Rezultat koji dobijamo je sledeći:
Podešavanja sajta započinjemo integracijom vhost parametra u konfiguracionom fajlu (/etc/hiawatha/hiawatha.conf), po principu ostalih veb-servera.
VirtualHost { Hostname = www.my-domain.com WebsiteRoot = /var/www/my-domain/public StartFile = index.php AccessLogfile = /var/www/my-domain/log/access.log ErrorLogfile = /var/www/my-domain/log/error.log TimeForCGI = 20 UseFastCGI = PHP5 UseToolkit = banshee }
Hostname predstavlja domen koji želimo koristiti, ali u slučaju da radimo testiranje, možemo koristiti i Aj-pi (IP) adresu našeg servera. WebsiteRoot je putanja, odnosno lokacija na našem serveru iz koje se pokreću HTML ili PHP fajlovi. StartFile možemo definisati po potrebi. Koristimo HTML za statički sadržaj, index.html, a u slučaju da želimo dinamički interfejs i funkcionalnosti, koristimo PHP, index.php. Hijavata podržava i druga jezička rešenja kao što su Rubi i Pajton. AccessLogfile je lokacija za čuvanje podataka o pristupu sajtu.
ErrorLogfile nam olakšava analizu grešaka sa kojima se suočavamo pri testiranju koda. UseToolkit je niz pravila za definisanje učitavanja linkova na sajtu po standardima koji spadaju u SEO. Ova pravila su definisana u funkciji UrlToolkit. Za razliku od Apačija i Endžiniksa (nginx), dosta prekonfigurisanih pravila možemo naći na zvaničnom Hijavatinom veb sajtu. Ukoliko želimo koristiti PHP za pokretanje sajta, potrebno je instalirati paket PHP i nekoliko modula koji nisu integrisani.
apt-get install php5 php-pear php5-curl php5-mysql php5-fpm
Sigurnost na prvom mestu
Integrisana rešenja nam mogu pomoći da se zaštitimo od nekoliko najpopularnijih napada na veb aplikacije. Ako uzmemo za primer XSS (Cross-site scripting) napade, dodavanjem pravila u vhost podešavanja možemo blokirati većinu poznatih šablona (paterna) za ovaj tip napada.
PreventXSS = yes|no Primer: PreventXSS = yes
Jednostavnost integracije ne znači kompletnu zaštitu servera. Naprotiv, korišćenjem ranjivih aplikacija i dalje se izlažemo riziku od napada. Zaštita od napada SQL injection integriše se linijom koda.
PreventSQLi = yes|no
Cross-site Request Forgery (CSRF)
PreventCSRF = yes|no
Za one koji žele otići korak dalje, postoji opcija za kreiranje hash (heš) zaštitnog fajla. To znači da korišćenjem wigwam (vigvam) alata koji je integrisan u Hijavatu, preuzimamo SHA256 vrednosti fajlova u folderu u kome se nalazi naš sajt (npr. /var/www/nassajt) i nakon kreiranja hash.txt fajla ostavljamo ga na serveru na zaštićenoj lokaciji. U slučaju da neko proba (pa čak i mi sami) da izmeni fajlove (eng. Site deface), umesto uređene strane dobiće stranicu 404, grešku (error).
wigwam -s hash.txt | mv hash.txt /var/www/hashfajl/ | chmod 600 /var/www/hashfajl/hash.txt
U vhost podešavanja dodati:
FileHashes = /var/www/hashfajl/hash.txt
Više informacija o wigwam opcijama možete naći na sledećoj lokaciji:
https://www.hiawatha-webserver.org/manpages/wigwam
Ovo može biti previše sigurnosti ukoliko svakodnevno objavljujemo novi sadržaj, pa je zbog toga potrebno izmeniti fajl hiawatha.conf svaki put pre dodavanja novog članka i ostalog sadržaja. Takođe, obavezno je ponovno pokretanje veb-servera.
Na kraju možemo zaključiti da je Hijavata stabilno i sigurnosno rešenje koje može ponuditi opcije koje ne možemo naći kod drugih veb-server aplikacija. Ostaje nam da se posvetimo daljem čitanju detaljnih uputstva na sajtu autora i uživanje u sigurnosti koja je danas potrebna svakom ozbiljnom projektu. U narednom broju ćemo pisati kako jednostavno podesiti OpenVPN server na našem Biglbon uređaju.