Apache HTTP server je trenutno najpopularniji i najkorišćeniji HTTP server na svetu. Ovaj proizvod trenutno opslužuje oko 60% aktivnih web stranica na internetu. Ovakva popularnost  je i osnovni razlog što je Apache prva asocijacija kada se u razgovoru pomene „Web Server“, i prvi link ka konkretnom proizvodu kojeg Google izbaci kada iste reči unesete u polje za pretragu.

Najčešće korišćena platforma na kojoj se instalira je Linux, mada su proizvođači ovog nesporno kvalitetnog softvera, prilagodili svoj proizvod svim značajnim platformama: Linux, Windows, Unix, Mac OS X, FreeBSD, Novell NetWare… U okviru ovog teksta, pokušaćemo da prestavimo proces instalacije i ostnovnog podešavanja Apache HTTPD servera na CentOS-u 6.2 (RedHet Linux).

Napominjemo da je prikaz instalacije i konfigurisanja  urađen u LAN okruženju, bez javno vidljivog domena koji je inače potreban da bi sajt bio prisutan na internetu.
Spisak potrebnih elemenata za funcionisanje Apache http server okruženja u test uslovima je sledeći:

  • DNS server (CentOS server sa instaliranim DNS servisom)
  • Apache server (CentOS server na kom ćemo instalirati sam Apache server)
  • Klijentski računar sa instaliranim web browserom (za proveru funkcionisanja sistema)

Podešavanje DNS servera i parametara

Prvi preduslov za instalaciju je funkcionalani DNS server čija je uloga da razrešava imena u mreži (više podataka možete naći u tekstu: DNS instalacija i konfiguracija na CentOS-u 6.2).
Za ove potrebe, u našem okruženju, na jednom računaru moramo podići DNS server. Drugi računar, onaj na kojeg ćemo instlirati Apache HTTP server, mora biti na istom mrežnom LAN segmentu sa DNS serverom.
Potrebno je podesiti IP adrese budućeg Apache servera (ip, subnet i dns) i dodeliti ime računaru (hostname), na primer webserver.localhost.loc . U ovom slučaju, domain name je localhost.loc a ime računara je webserver. Sledeći korak je pridruživanje ove mašine DNS serveru:

Detaljnije uputstvo možete videti u pomenutom tekstu o DNS serveru, sve što je potrebno jeste da u glavnoj i reverse zoni DNS-a dodamo zapise nove mašine.

Glavna zona mora da sadrži A zapis u sledećem formatu:

U reverse zoni dodajete sledeću liniju:

Ukratko, reverse zona mora da sadrži PTR zapis računara a broj 141 na početku linije, pokazuje da je to računar 141 u mreži 192.168.180.0 (podatak izvučen iz IP adrese webservera).

Kada smo pridružili budući Apache server mreži, možemo da krenemo sa instalacijom.

Instalacija i editovanje httpd.conf fajla

U terminalu CentOS računara na kom vršimo instalaciju potrebno je ukucati:
yum -y install httpd
CentOS će  povući sa interneta instalaciju koja traje par minuta, a završetak će biti označen porukom „Complete“.
Po instalaciji,  potrebno je ući u Apache konfiguracioni fajl i podesiti nekoliko veoma bitnih stavki.

Komanda:
vim /etc/httpd/conf/httpd.conf
će omogućiti uvid u pomenuta podešavanja koja sadrže preko 700  linija.  Za potrebe osnovne instalacije odvojili smo određen broj linija koje je potrebno konfigurisati kako bi server funkcionisao bez problema.
Pomoću tastera “i” ulazite u INSERT mod, mod za unos podataka. Editor u donjem desnom uglu pokazuje u kojoj se liniji trenutno nalazite.

Linije za ServerTokens i SIgnature bi trebalo da izgledaju ovako:

ServerTokens Prod
ServerSignature Off

ServerTokens i ServerSignature spadaju u security opcije. Ove dve linije su vezane za info i error stranice koje generiše Apache server.

Ukoliko pokušate da pristupite web stranici putem IP adrese ili tačne web adrese a da pri tome sadržaj sajta nije postavljen na Apache serveru (nema ničega u www folderu gde se inače smešta sajt), browser će prikazati welcome apache page  na kojoj je vidljiva verzija httpd servera, instaliranih plugin-ova, verzije php-a, perl-a, itd.

Ovo je naravno, veoma nepoželjno iz razloga što se olakšava posao potencijalnom napadaču koji vidi verziju  softvera i može, tim lakše da “probije” server znajući specifičnosti softvera. Kada napadač ne zna tip i verziju softvera, trebaće mu mnogo više vremena da probije u njega, ako uopšte i uspe u tome.

Baš iz razloga potencijalnih napada, pomenute dve stvari moraju biti zabranjene! Na sledećoj slici možete videti izgled Apache Welcome Page:

apachetestpage1

Apache wellcome page na CentOS-u

Ukoliko ne podesite dve pomenute opcije (ServerTokens Prod i ServerSignature Off), i pokušate preko browser-a da pristupite httpd serveru, dobićete sledeću poruku na ekranu:

forbiddenpage

Poruka greške vezano za permisije koju generiše Apache sa podacima o konfiguraciji servera.

Podaci koji su ovde vidljivi, dovoljni su svakom iskusnijem hakeru da napravi velike problem vašem serveru. Nepodešen httpd server lako otkriva svoju verziju, operativni sistem na kome je instaliran kao i adresu servera, pa nemojte zaboraviti da promenite gore navedene linije.

Što se tiče Apache welcome stranice, ni ona nam nije potrebna, pa ćemo je ukloniti sa servera.

rmwelcomepage

Uklanjanje index.html i Apache wellcome stranice sa servera

Na slici iznad možete videti da se welcome stranica nalazi na sledećoj putanji:
/etc/httpd/conf.d/  
pa je naredbom rm (remove) možete obrisati:
rm /etc/httpd/conf.d/welcome.conf .

Readme fajl koji se nalazi u istom direktorijumu, conf.d , takođe nema nikakvu ulogu, pa i njega možete obrisati.  Ukoliko neke promene u konfiguraciji Apache-ja ne budu prihvaćene odmah, potrebno je restartovati servis a to činite komandom: 
service httpd restart.

Linija broj 76, na njoj je potrebno uključiti opciju KeepAlive:  
KeepAlive On.

Ovo podešavanje odnosi se na kontinualne konekcije klijenata ka serveru.

Po strukturi, http protokol je predviđen da radi bez sesija. To otprilike znači:
konektujem se-zahtevam-zahtev odobren-konekcija se zatvara.

Pri obradi većeg broja zahteva u kratkom vremenskom roku, protokol  će svaki zahtev uraditi na pomenuti način: konektovati-diskonektovati.  Ova procedura usporava saobraćaj ka serveru kao i sam server (svaka konekcija pravi latenciju-cekanje za zahtev i opterećuje procesor). Da bi se rešio ovaj problem, realizovana je ideja da se neke stvari sa web stranica povuku “u jednom cugu”. To bi značilo da će sesija biti otvorena neko vreme i da klijent kroz tu sesiju moze da povuče više stvari pre nego sto se ona zatvori. KeepAlive upravo omogućuje takvu konekciju a samim tim i lakši i rasterećeniji rad server. Uključivanje ove opcije server takođe izlaže potencijalnim rizicima ali njeno omogućavanje daje više pozitivnih nego negativnih rezultata.

Linija 262 je adresa administrator servera. Ovo podešavanje možete i ne morate da odradite. Ukoliko u opciji ServerAdmin postavite e-mail adresu, dobijaćete grešeke i obaveštenja u vezi sa radom web servera. Na vama je da odlučite. Preporučujemo da unesete e-mail adresu i ostanete u toku sa dešavanjima na serveru.

Linija 276  je veoma važna. ServerName je upravo adresa pomoću koje ćete pristupati web stranici. Kada bi imali plaćen domen, ovde bi stajala adresa vašeg sajta u sledećem formatu: www.mojastranica.rs:80.

Broj 80 pokazuje da se vaša stranica nalazi na portu 80. Podsećamo da radimo u LAN okruženju i da praktično simuliramo internet. Umesto adrese sajta, ukucaćemo  IP adresu našeg web servera na kome će se nalaziti  stranica.

Podešavanje linije ServerName:
ServerName 192.168.180.141:80

Ostalo je još 6 linija koje je potrebno izmeniti i to uradite sledećim redosledom:

Options FollowSymLinks ExecCGI 
(odnosi se na  akcije koje su dozvoljene ili zabranjene unutar neke putanje u okviru www/root direktorijuma:

ExecCGI -izvršavanje CGI skripti,
FollowSymLinks-praćenje simboličkih linkova, promena putanje unutar URL-a na sajtu)

AllowOverride All
Odnosi se na mogućnost postavljanja direktiva koje se mogu izvršiti  izvan www/foldera (lokacije na kojoj se nalazi sajt), a koje mogu da izmene status postavljen u okviru “Options” postavki. Najcesce se ovakve direktive postavljaju u .htaccess fajlu.

DirectoryIndex index.html index.cgi index.php
(dozvola čitanja inicijalnog fajla u www direktorijumu, odnosi se na prvi fajl koji se iščitava pri zahtevu klijenta, u konkretnom slučaju na serveru može da bude postavljen bilo koji fajl od ova tri koji su navedeni)

Ovaj red je potrebno iskomentarisati (prebaciti u formu komentara) znakom “#” na početku reda
(#AddDefaultCharset UTF-8)

Izbrišite znak za komentar “#” na početku linije:
(AddHandler cgi-script .cgi .pl).

Aktiviranjem ove opcije, omogućuje se korišćenje, tj. izvršavanje CGI skripti na sajtu.

CGI skripte su prisutne na svakom dinamičkom sajtu u savremenom web prostoru, i na internetu gotovo da nema web portala koji u svom kodu nema pomenute izvršne skripte. CGI je akronim za Common Gateway Interface i radi se o dinamičkim skriptama.  Ukoliko na sajtu imate neku html formu poput foruma, iskucate željeni tekst a onda kliknete dugme POST kako bi ste ga objavili na sajtu, CGI skripta ima zadatak da taj vaš tekst obradi i objavi na željenoj stranici. S obzirom da većina sajtova zahteva CGI podršku, potrebno je dozvoliti ovu opciju na serveru.

Testiranje i postavljanje web stranice

Izmene koje smo uradili u konfiguracionom fajlu su otprilike sve što je potrebno za osnovni rad našeg servera.

Preostalo je da se ukuca komanda:
/etc/rc.d/init.d/httpd start

i ukoliko je povratna poruka [OK], HTTPD server je uspeštno startovan. Kao finalni postupak, potrebno je još uključiti proveru konfiguracije, a to radimo naredbom:
chkconfig httpd on

Sada je sve spremno za postavljanje prve web stranice.

Apache je formirao svoje direktorijume, a defaultna lokacija za postavljanje web sadržaja se nalazi na sledećoj putanji: /var/www/html/

Napravićemo jednu html stranicu. U terminalu na Web serveru kucajte:
echo „Teste Stranica“ >> /var/www/html/index.html

Potreban nam je i treći računar koji će biti klijent i obaviti proveru funkcionalnosti web servera. Na njemu je neophodno podesiti IP adresu i adresu zajedničkog DNS server, pa zatim proveriti da li pinguje oba servera. Klijentski računar može biti Linux ili Windows mašina (ili bilo koja druga mašina sa funkcionalnim web pretraživačem).

Kao što smo uradili kod web servera, potrebno je ubaciti zapise za klijentski računar u DNS zonama na DNS serveru. Primarna zona dobija A zapis sa imenom klijenta (u našem slučaju client.localhost.loc) a reverse zona dobija PTR zapis istog sa odgovarajućom IP adresom.

testpage

Po otvaranju web browser-a na klijentu, u adress bar kucajte IP adresu ili naziv hosta Apache HTTPD servera. Ako browser nema problem da prikaže test stranicu koju smo postavili na web server, ceo posao je uspešno obavljen.

Zaključak

Namena ovog teksta je bila da prikaže osnovnu konfiguraciju Apache HTTPD servera i postavljanje web stranice. Treba napomenuti da HTTPD server sadrži pregršt opcija i podešavanja koja su izuzetno korisna. Apache podržava mnoge programske jezike poput Perl-a, Python-a, Tcl-a i PHP-a. Takođe podržava razne autentifikacione šeme. Virtualni hosting dozvoljava ovom HTTPD serveru da sa jednom instalacijom opslužuje više sajtova istovremeno. Ukoliko želite da iskoristite sve mogućnosti, potrebno je izvršiti dodatno konfigurisanje

itmogul-logoTekst je preuzet sa ugašenog bloga IT modul i originalni autor ovog teksta je Radoš Nikolić. Kompjuteraš IT blog će objavljivati tekstove sa tog bloga kako riznica znanja sa te lokacije ne bi otišla u zaborav.