Sunteți pe pagina 1din 21

Configurarea unui server de WEB in Linux

Pentru nceput vom prezenta World Wide Web - o seciune din Internet, seciune extrem de
important la ora aceasta: fr WWW nu ar fi avut loc dezvoltarea exploziv a Internetului
aa cum l cunoatem azi.
Internetul s-a nscut la sfritul anilor !" din #$P#%&', o reea experimental a
(inisterului #prrii a )*#. Pe la mi+locul anilor ," a nceput perioada de dezvoltare
accelerat a Internetului ca urmare a conectrii instituiilor -uvernamentale, centrelor
academice , laboratoarelor independente i, ntr-un final, a corporaiilor i persoanelor
particulare ntr-o reea ce avea s aib o suprafa de acoperire -lobal.
.a urmare utilizatorii doreau s foloseasc aceast nou reea pentru a parta+a informaii.
/in pcate, la momentul respectiv, nu exista un mod comod de a efectua sc0imbul de
informaie: trebuiau s foloseasc telnet pentru conectarea la distan, ftp pentru transferul
de fiiere, usenet - un serviciu imens de buletine de tiri, -op0er - un sistem de parta+are a
informaiilor la nivel de campus i multe alte protocoale, fiecare destinat unei anumite
cate-orii de informaie. Pentru a folosi oricare din aceste protocoale, utilizatorul trebuia s
stpneasc cte un pro-ram pentru fiecare protocol. 1i, cum le-ile lui (urp02 exista
dinaintea calculatoarelor i a Internetului, aceste pro-rame erau ct se poate de diferite,
acest fapt nsemnnd c un utilizator trebuia s tie s foloseasc foarte multe pro-rame
diferite pentru a putea parta+a3solicita informaii din reea. Pe ln- toat aceast
4debandad5 de pro-rame utilizatorul mai trebuia s depeasc un obstacol: acela al
formatelor de fiiere existente6 /e exemplu, pentru documente existau 7i nc mai exist68
o multitudine de formate: P/9, $'9, :a'e;, )<(:, Post)cript, text simplu, etc. &xist i
o mare varietate de formate -rafice: P%<, <I9, =P&<, >(P, P.;, etc. #ceeai problem
exista i pentru bazele de date. Prin urmare, c0iar dac utilizatorul -sea fiierul cerut el nu
avea certitudinea ca va putea folosi acel fiier dect dup ce -sea aplicaia
corespunztoare care putea desc0ide acel fiier6
?n acest moment intr n scen 'im >erners-:ee i asociaii si de la .&$%, .entrul
&uropean de .ercetri %ucleare. &l propune, n anul @A,A, crearea unui sistem nou de
informare denumit 4WorldWideWeb5. #cest sistem a fost proiectat s-i a+ute pe
cercettorii .&$% n -sirea informaiilor utile n masa tot mai mare de informaii
existente n Internet. ?n esen, acest sistem propunea folosirea unui sin-ur pro-ram,
denumit 4broBser5, care s rezolve problema -sirii informaiei i a prezentrii ei, n locul
folosirii perec0ilor Cpro-ram|protocolD. .onceptul de baz era folosirea 02pertextului:
informaia s fie afiat sub forma unei succesiuni de documente. /ocumente nrudite
putnd fi le-ate mpreun prin cuvinte speciale sau fraze. Prin selectarea unui astfel de
cuvnt 7sau fraz8 utilizatorul era trimis la un alt document, document care putea fi, fizic,
situat ntr-un server aflat la E""" Fm distan i accesat printr-un alt protocol dect cel al
documentului iniial, fr ca utilizatorul s tie de fapt acest lucru.
?n februarie @AAG are loc o alt mare cotitur n dezvoltarea WWW: %.)# lanseaz
broBserul (H)#I., o versiune de broBser pentru mainile *%I; cu ;WindoBs. #cest
broBser folosea meniuri popup, iconie, afia ima-ini i linI-uri colorate. (ai mult, (osaic
putea ncorpora ima-ini n textul afiat pe o pa-in.
&xpansiunea exploziv a Web-ului ncepea6 :a , luni dup lansarea (osaic numrul
Web serverelor nre-istrat la .&$% ara estimat la E"". *n an mai trziu acest numr era
estimat la JK""6 )e emiteau ipoteze c acest numr ar crete exponenial6
Iat, deci, cum o idee bine -ndit i exploatat poate duce la o sc0imbare ma+or i
radical a unui sistem considerat de nesc0imbat.
'oate informaiile necesare funcionrii corecte 7confi-urri8 a serverului #pac0e sunt
stocate ntr-un fiier de tip text care se numete httpd.conf . /up cum am menionate
anterior acest fiier a fost constituit din G fiiere iniiale, existente n cazul serverului
%.)# 0ttpd, LstrmoulL lui #pac0e. #ceste G fiiere erau:
fiierul de confi-urare pentru serverul principal, httpd.conf;
fiierul de confi-urare pentru resurse, srm.conf;
fiierul de confi-urare pentru permisiunile de acces, acces.conf;
Instructiuni de instalare
?nainte ca instalarea sa poata avea loc #pac0e trebuie sa fie informat despre mediul unde
va fi instalat. #ceasta se face prin intermediul scriptului confi-ure:

M ./configure --prefix=/usr/local/apache
)criptul de confi-urare exploreaza sistemul de operare si creeaza (aIefile pentru el, deci
avem posibilitatea sa executam urmatoarele pentru a ncepe procesul real de compilare,
copiem fisierele n cadrul directorului stabilit de catre prefixul de optiune si se va executa
scriptul apac0ectl pentru a porni serverul #pac0e:

M mae
N mae install
N /usr/local/apache/!in/apachectl start
/esi aceasta se va instala #pac0e si a ncepe, avem nevoie, de asemenea, sa
confi-uram operare sistemul sa porneasca atunci cnd porneste #pac0e. Procedura difera
de la sistem la sistem, pe platforme *nix, dar este, de obicei, se face prin crearea unui linI
simbolic de la scriptul apac0ectl pentru nivelul de executie relevant:

N cd /etc/rc".d
N ln -s /usr/local/apache/!in/apachectl #$%httpd
&estarea instalarii
Pentru a verifica daca pornirea a reusit, ncercam sa accesam serverul de Beb
folosind un client broBser. /aca functioneaza, vom vedea pa-ina L)eein- t0is instead of
t0e Bebsite 2ou expectedOL. :a momentul acestei scrieri, exista discutii
pe lista #pac0e /evelopersP pentru a reduce mesa+ul de bun venit, pentru a se evita
confuzia utilizatorilor.
9olosind instrumentul ps, putem afla cte procese sunt in #pac0e:
M ps -'o user(pid(ppid(cmd | grep httpd
root G@!G, @ 3usr3local3apac0e3bin30ttpd -I start
0ttpd G@!KE G@!G, 3usr3local3apac0e3bin30ttpd -I start
0ttpd G@!KK G@!G, 3usr3local3apac0e3bin30ttpd -I start
0ttpd G@!K! G@!G, 3usr3local3apac0e3bin30ttpd -I start
0ttpd G@!K, G@!G, 3usr3local3apac0e3bin30ttpd -I start
0ttpd G@!KA G@!G, 3usr3local3apac0e3bin30ttpd -I start

*tilizand comanda tail, putem vedea ce este nre-istrat, cererile cer sunt prelucrate
diferit. Introducem un nume de fisier inexistent n bara de locatie a broBserului acesta
trimite cererea pe serverul de BebQ apoi examineaza timpul de acces 7lo--urile se afla n
folderul 3var3BBB3lo-s8.

@AR.@K,.R.G - - CR@3=ul3R""J:@!:@R:RR S"@""D L<&' 3manual3ima-es3feat0er.-if
T''P3@.@L R"" KJ!@
@AR.@K,.R.G - - CR@3=ul3R""J:@!:R":"E S"@""D L<&' 3manual3not-0ere
T''P3@.@L J"J G@@
?n httpd.conf sunt directive i containere de directive. /irectivele conin informaii despre
confi-urrile specifice serverului 7autorizri, performan, parametri de reea, etc8 pe cnd
containerele de directive delimiteaz contextul n care sunt aplicate acele confi-urri. )pre
exemplu putem confi-ura accesul pe baz de parol la un sin-ur fiier, la un director sau la
ntre-ul server.
Configurarea si securi)area
Incepand cu -ol un fisier de confi-urare este o buna practica, deoarece acesta
mareste ntele-ere a modului de lucrari de #pac0e. ?n plus, fisierul de confi-urare, fisier
este mare, contine directivele pentru tot, inclusiv module pe care nu le vom folosi. .el mai
bine este sa pastram fisierele de confi-urare frumos.
/esc0idem fisierul de confi-urare 7/usr/local/apache/conf/httpd.conf8 cu cteva
directive -enerale:

N location of t0e Beb server files
)erver$oot 3usr3local3apac0e
N location of t0e Beb server tree
/ocument$oot 3var3BBB30tdocs
N pat0 to t0e process I/ 7PI/8 file, B0ic0
N stores t0e PI/ of t0e main #pac0e process
Pid9ile 3var3BBB3lo-s30ttpd.pid
N B0ic0 port to listen at
:isten ,"
N do not resolve client IP addresses to names
Tost%ame:ooIups Hff
#etarea serverului. Contul de utili)ator.
/upa instalare, #pac0e ruleaza ca un utilizator Lnobod2L 7nimeni8. ?n timp ce acest
lucru este convenabil 7acest cont n mod normal exista n toate sistemele de operare *nix8,
este o idee buna de a crea un cont separat pentru fiecare sarcina. .el mai frecvent folosit
nume de utilizator pentru acest cont este 0ttpd, si unii oameni utilizeaza apac0e. Pentru a
crea o cont nou, executam urmatoarele doua comenzi n timp ce ruleaza ca root.

N groupadd httpd
N useradd httpd -g httpd -d /dev/null -s /s!in/nologin

#ceste comenzi creaza un -rup si unu cont de utilizator, ster-ere a contului de ori-ine
directorul3dev3null si s0ell3sbin3%olo-in 7n mod eficient pentru dezactivarea de lo-in
cont8. #dau-am urmatoarele doua linii in fisierul de confi-urare #pac0e 0ttpd.conf:

*ser 0ttpd
<roup 0ttpd
Configurarea securitatii de valori presta!ilite.
.u exceptia cazului n care altfel spus, #pac0e va servi orice fel de fisier-l poate
accesa. #ceasta este, probabil, nu ceea ce ma+oritatea persoanelor dorescQ o eroare de
confi-urare ar putea expune accidental fisierele vitale de sistem
pentru oricine. Pentru a sc0imba acest lucru, refuzam accesul complet la
fisierele de sistem si apoi permitem accesul la documentul de root numai prin introducerea
urmatoarelor directivele n fisierul de confi-urare 0ttpd.conf:

U/irector2 3V
Hrder /en2,#lloB
/en2 from all
U3/irector2V
U/irector2 3var3BBB30tdocsV
Hrder #lloB,/en2
#lloB from all
U3/irector2V
Logging *+urnali)area,.
#vand o copie a activitatii serverului de Beb este de o importanta deosebita.
$apoartele ne spun care continut este popular si daca server-ul este utilizat -resit sau
incorect.
&xista doua tipuri de inre-istrari.
- access lo- este o evidenta a tuturor cererilor trimise la un anumit server de Beb sau site-ul
Beb. Pentru a crea un acces lo-, avem nevoie de doi pasi. ?n primul rnd, utilizarea
directivei :o-9ormat pentru a defini un format de lo-are. #poi, folosim directiva
.ustom:o- pentru a creati un timp de acces n acest format:

:o-9ormat LW0 Wl Wu Wt XLWrXL WVs Wb XLWiXL XLWiXLL combined
.ustom:o- 3var3BBB3lo-s3accessYlo- combined
- error lo- contine o evidenta a tuturor evenimentelor de sistem 7cum ar fi pornirea de
nc0iderea serverului de Beb8 si o ire-istrare a erorilor care au aparut n timpul procesarii
cererii. /e exemplu, o cerere pentru o resursa care nu exista -enereaza o eroare T''P J"J
ca raspuns pentru client, /oua directive au obli-atia de a nfiinta eroare de timp, doar
pentru ca timp de acces. *rmatoarea directiva lo- level
creste detaliile de lo-are de la o valoare implicita la informatii. /irectiva
error lo- creeaza fisierele actuale de lo-:

:o-:evel info
&rror:o- 3var3BBB3lo-s3errorYlo-
-revenirea pierderilor de informatii.
?n mod implicit, #pac0e ofera mai multe informatii de biti, pentru oricine este
interesat. Hrice informatie obtinuta de catre atacatori, ii a+uta sa construiasca o mai buna
vizualizare a sistemului si pot strica mai usor sistemul. /e exemplu, procesul de instalare
pune automat adresa de email a utilizatorului n fisierul de confi-urare. #ceasta arata
contul pentru public, care sunt nedorite. *rmatoarele directive nlocuiesc adresa de e-mail
-enerata de #pac0e cu o adresa -eneric:

)erver#dmin BebmasterZapac0esecurit2.net

?n mod implicit, adresa de e-mail definitea cu aceasta directiva apare pe pa-inile -enerate
server. /eoarece aceasta este, probabil, ceea ce nu doriti, aveti posibilitatea sa dezactivati
aceasta caracteristica complet prin urmatoarele directive: )erver)i-nature Hff
Protocolul T''P defineste un antet de raspuns domeniului )erver, al caror scop
este de a identifica ca softBare-ul raspunde cererii. ?n mod implicit, #pac0e ocupa acest
antet cu numele, numarul de versiune, ca si numele si numerele de versiune din toate
modulele dispus sa se identifice ei nsisi. Putem vedea cum arata aceasta prin trimiterea
unei cereri test la server nou instalat:

M telnet localhost $.
'r2in- @R!.".".@...
.onnected to local0ost.
&scape c0aracter is P[DP.
/E'0 / /&&-/1..
T''P3@.@ R"" HF
/ate: 9ri, 9ri, RE #pr R"", RR:"E:GE <('
#erver2 'pache/1.".34 *5nix,
.ontent-:ocation: index.0tml.en
\ar2: ne-otiate,accept-lan-ua-e,accept-c0arset
'.%: c0oice
:ast-(odified: 9ri, @, #pr R"", "":"":G, <('
&'a-: LJ""Rc!-Eb"-Gaf@f@RKQJ"EaR@d!L
#ccept-$an-es: b2tes
.ontent-:en-t0: @JEK
.onnection: close
.ontent-'2pe: text30tml
.ontent-:an-ua-e: en
&xpires: 9ri, RE #pr R"", RR:"E:GE <('

#cest cmp arata specificatiile si valorile informatiilor pentru un atacator. %u se pot
ascunde complet dar putem spune serverului #pac0e sa dezvaluie doar numele serverului
7L#pac0eL8.
0irectivele
)intaxa directivelor:
numele directivelor sunt urmate de ar-umenteQ
ar-umentele sunt separate prin spaiiQ
ar-umentele pot fi n numr variabil, n funcie de directiveQ unele directive nu
necesit ar-umenteQ
dac o directiv necesit mai mult de un rnd atunci trecerea pe rndul urmtor se
face prin terminarea rndului curent cu caracterul bacIslas0 6Q
semnul diez N precede directiva i trebuie s fie pe propria sa linieQ
Containerele
)e mai numesc i seciuni (sections) delimiteaz domeniul n care se aplic directivele.
#ceste directive container sunt ncadrate n paranteze un-0iulare. H directiv container
conine alte directive i specific domeniul pentru care se aplic directivele coninute. )pre
exemplu, dac directivele nu sunt cuprinse ntr-un container atunci acele directive aparin
domeniului -eneral al serverului i se vor aplica ntre-ului server.
(ai +os sunt listate toate directivele acceptate de serverul #pac0e. ?n seciunea .onfi-urare
de baz vor fi explicate directivele necesare confi-urrii minimale a serverului, iar n
seciunea .onfi-urare avansat vor fi tratate aspecte mai detaliate.
Protocolul '.P3IP
/e fapt, sunt dou protocoale le-ate unul de altul, &ransmission Control -rotocol
7Protocolul de control al transmisiei8 i Internet -rotocol. #cest protocol este protocolul
aflat pe nivelul cel mai de +os, folosit n Internet. #cest protocol re-lementeaz felul n care
dou pro-rame, aflate pe calculatoare diferite conectate la Internet, se vor -si unul pe
altul, vor stabili parametri conexiunii i vor ncepe s transmit date. /e asemenea, asi-ur
livrarea fiecrui pac0et de date n ordinea corect i fr erori. Pentru acest protocol datele
transmise nu au nici o relevan. 'oate datele sunt fluxuri de , biiQ nu conteaz c un flux
reprezint o ima-ine, un altul reprezint un videoclip sau o baz de date.
'.P3IP utilizeaz o sc0em de adresare cu adrese statice, n care fiecare calculator
conectat la Internet are asi-nat o adres unic. #ceste adrese sunt formate din GR de bii,
-rupai n J -rupuri a , bii, separate prin puncte.
/e exemplu RE.@E,.@@.K sau @AR.@K,.".@EJQ prin urmare exist puin peste J miliarde de
adrese unice. Pare o cifr imens, nu-i aaO 1i totui, aceste adrese ncep s se termine,
drept urmare este de+a n lucru noua -eneraie de adrese, aa numitul IPvK.
#ceste adrese IP sunt foarte -reu de reinut, aa c a fost implementat un serviciu care
execut 4traducerea5 acestor cifre n nume, mult mai uor de reinut. #cest serviciu se
numete /omain %ame )2stem 7/%)8, )erviciul numelor de domeniu, care folosete un
sistem ierar0ic distribuit de nume. 9iecare calculator va avea un nume unic format din mai
multe pri, separate prin puncte. Prima parte este numele calculatorului, urmat de o list de
domenii. Primul domeniu este, de obicei, domeniul or-anizaiei din care face parte
calculatorul, urmat de alte or-anizaii, daca e cazul i n final, numele domeniului de pe
ultimul nivel. #cest ultim nivel poate fi .com .net .or- .ro .fr .+p, etc. Impreun, aceste
elemente formeaz un nume de domeniu calificat care identific n mod unic un calculator
n Internet.
&ehnologia Client/#erver
?n momentul n care dou pro-rame vor s comunice ntre ele 7n cadrul aceluiai
calculator sau prin internet8 trebuie s stabileasc un canal de comunicaie. #cest canal de
comunicaie se stabilete astfel: unul dintre pro-rame trebuie s iniieze comunicarea iar
cellalt s accepte. #cest lucru se realizeaz folosind te0nolo-ia client3server. )erverul
ruleaz ateptnd cererile de conectare. .nd un client dorete s acceseze informaia de pe
calculatorul server, acest stabilete un canal de comunicare cu clientul, i trimite informaia
apoi nc0ide conexiunea. (ulte din serverele actuale pot accespta conexiuni multiple
simultane. #cest lucru este realizat fie prin duplicarea serverului n memorie pe parcursul
conexiunii, fie prin 4ntreeserea5 acestor conexiuni n mod controlat. Prin urmare diferena
dintre un client i un server este : cine iniiaz conexiunea i cine o acceptO
$evenind la cele dou pro-rame de mai sus: cunoaterea adreselor IP ale celor dou
calculatoare implicate ntr-un sc0imb de informaii nu este suficient pentru a realiza
conctarea celor dou pro-rame. (ai este nevoie s se identifice unul pe cellalt din
multitudinea de procese ce ruleaz pe cele dou calculatoare. /e exemplu, pe un calculator
poate s ruleze un proces care ofer ftp anonim, un alt proces ofer telnet, un altul ofer
pa-ini Beb i aa mai departe. .um va ti pro-ramul care iniiaz conexiunea c se
conecteaz la pro-ramul dorit, dup stabilirea conexiunii cu calculatorul destinaieO Prin
folosirea porturilor6 Prin comparaie: dac asimilm adresa IP cu adresa unui bloc cu
apartamente, atunci portul va fi numrul apartamentului dorit. Porturile sunt identificate
prin numere de la " la KEEGE. Porturile de la " la @"RJ sunt, de obicei, porturi privile-iate i
pot fi accesate de procese cu drept de root7superuser8 pe calculatoarele cu *%I;. 9iecare
serviciu are repartizat un anumit numr de port: R@ pentru ftp, ," pentru HTTP, RG pentru
telnet, etc. /eci, cnd un server Web pornete va rezerva portul ," 7T''P8, pentru uz
exclusiv. .onexiunile de intrare la acest server trebuie s fie efectuate pe portul ," i
adresa IP a calculatorului -azd.
0aemon sau Inetd
Pe sistemele *%I; serverele ruleaz n unul din urmtoarele moduri: standalone sau sub
controlul unui pro-ram numit inetd. )erverele standalone sau daemon sunt servere care
pornesc, ateapt conexiuni pe un anumit port, deservesc conexiunea apoi trec napoi n
modul ascultare. #cest tip de servere vor putea servi mai multe conexiuni pri metoda
descris anterior: se automultiplic n memorie, servesc cererea elibernd ori-inalul de
aceast sarcin, apoi i nceteaz existena. *n dezavanta+ ma+or al acestui tip de server
este faptul c, de multe ori, se -sesc n memorie cteva servere care ascult fiecare pe
porturi diferite i, n lipsa conexiunilor, consum resurse de-eaba.
#lternativa la serverul standalone este inetd. #cest inetd este un ])uper daemon5 care
ruleaz n fundal pe mainile *%I;. inetd , la pornire, citete un fiier de confi-urare n
care se specific o list de porturi i serverele de pornit ca urmare a activitii pe acele
porturi. .nd inetd sesizeaz activitate pe un port din list, verific care server trebuie s
deserveasc portul respectiv, lanseaz acel server n execuie i i pred conexiunea la
portul repectiv. .nd cererea este rezolvat serverul i nceteaz execuia, elibernd astfel
resursele sistem folosite. &l va fi relansat de ctre inetd cnd va fi nevoie.
#le-erea unui mod de funcionare sau altul este la latitudinea celui care confi-ureaz
serverul. (a+oritatea serverelor 79'P, 'elnet, <op0er, etc.8 funcioneaz sub inetd.
)erverul W&> poate funciona i el n acest mod, dar nu este recomandat. )erverele W&>
sunt pro-rame mari consumatoare de resurse i cu fiiere de confi-urare relativ mari i
stufoase, care necesit timp, la pornire, pentru parcur-erea lor. :ansarea acestor servere de
ctre inetd duce la o de-radare semnificativ a performanei. #cesta este motivul pentru
care serverele W&> sunt lansate n execuie ca servere standalone.
#istemul de tipuri 7I7E
(I(& 7(ultipurpose Internet (ail &xtension8 este un sistem extensibil care a fost
dezvoltat pentru trimiterea de coninut multimedia 7sunet, ima-ine, video8 prin pota
electronic. WWW a adoptat acest sistem, ca parte a protocolului 0ttp, pentru simplul fapt
c are de transmis acelai tip de informaii: coninut multimedia6 (I(& este un mod de a
descrie coninutul unui document prin referirea la o list standard de tipuri de documente
or-anizat pe tipuri i subtipuri. )pre exemplu tipul text3plain este folosit pentru fiierele
text neformatat, pe cnd text30tml este folosit pentru a descrie un fiier text scris n limba+ul
T'(:. :a fel, video3mpe- descrie un videoclip n format (P&<. *n mod destul de
rspndit de a distin-e tipul unui fiier este dup extensia lui. #stfel, .gif va indica un fiier
-rafic pe cnd .html va indica spre un fiier text scris n limba+ T'(:.
-rotocolul /&&-
Protocolul T''P este, de fapt, o scurt conversaie ntre broBser i serverul W&>. #ceast
conversaie se compune din dou faze:
request, 7cererea8 ^ n care broBserul lanseaz o cerere, format din tipul de metod
dorit, calea sau *$: spre fiierul dorit i numrul de versiune al protocolului T''P
dorit.
response, 7rspunsul8 ^ n care serverul va rspunde cu numrul de versiune al
protocolului T''P, un cod de stare, putin text i zero sau mai multe linii de antet,
terminate printr-o linie -oal. *rmeaz apoi datele solicitate.

9aza request ^ tipul de cerere dorit de ctre broBser:
<&' ^ returneaz coninutul documentului indicatQ
T&#/ ^ returneaz antetul documentului indicatQ
P*' ^ nlocuiete coninutul documentului indicat cu datele care
urmeaz
&xist mai multe metode dect cele prezentate, pentru o documentare mai detaliat se
poate consulta documentaia existent pe site-ul .&$%. .ea mai folosit metod este <&',
care instructeaz serverul s pun la dispoziia broBserului coninutul documentului
indicat. *rmeaz trimiterea antetului, prin trimiterea campurilor de antet, care pot fi de
tipul:
#ntet /escriere
9rom #dresa de pot electronic a solicitantului
*ser-#-ent /enumirea i versiunea broBserului
#ccept 'ipuri de fiiere acceptate 7pot fi mai multe astfel de linii8
$eferer *ltimul document vizitat
Pra-ma /irective specifice pentru serverul W&>
.ontent-:en-t0 :un-imea datelor care urmeaz, n octei
#ntet /escriere
)erver %umele i versiunea serverului
/ate /ata curent n format <('
(I(&-version \ersiunea (I(& folosit
.ontent-:en-t0 :un-imea date ce urmeaz a fi trimise, n octei
.ontent-'2pe 'ipul (I(& al documentului indicat
'itle 'itlul documentului indicat
#lloBed 'ipurile de metode care pot fi folosite 7de exemplu <&'8
/up trimiterea antetului urmeaz o linie -oal, dup care se pot trimite datele, dac
broBserul a fcut o cerere de tip P*', sau ateapt rspunsul serverului.

9aza reponse ^ n acest moment ntrm n faza de rspuns a serverului. &l va trimite, n
primul rnd, o linie coninnd numrul versiunii protocolului folosit, un cod de stare format
din G cifre i un text care explic codul de stare. #cest cod de stare este imprit n patru
mari cate-orii:
ntre 3..-344: indic o tranzacie corect
ntre "..-"44: indic faptul c documentul specificat n *$: nu a fost -sit din
cauz c a fost mutat n alt locaie
ntre 8..-844: sunt folosite cnd clientul a fcut o -reeal, ca de exemplu a fcut o
cerere neautorizat
de la %.. : serverul nu poate satisface cererea din cauza unei erori interne
/up trimiterea liniei de stare, serverul trimite un antet rspuns, care este format din
informaii despre server nsui precum i diferite informaii despre documentul solicitat.
#ceste informaii sunt, ma+oritatea, opionale.
#ntet /escriere
)erver %umele i versiunea serverului
/ate /ata curent n format <('
(I(&-version \ersiunea (I(& folosit
.ontent-:en-t0 :un-imea date ce urmeaz a fi trimise, n octei
.ontent-'2pe 'ipul (I(& al documentului indicat
'itle 'itlul documentului indicat
#lloBed 'ipurile de metode care pot fi folosite 7de exemplu <&'8
#ceste cmpuri nu sunt sin-urele cmpuri disponibile. &xist o mulime de cmpuri
posibile, utilizatorul urmnd s stabileasc ce tipuri de cmp are nevoie.
*rmeaz, n sfrit, trimiterea datelor propriu zise. /up trimiterea antetului serverul
trimite o linie -oala. /ac broBserul a solicitat doar antetul unui document aici se nc0eie
transmiterea. #ltfel, serverul trimite coninutul documentului solicitat, dup care nc0eie
conexiunea.
/up confi-urarea de baz a serverului s ncercm s modificm aceast confi-urare
pentru a acoperi cteva puncte de interes pentru un server Beb. ) ncepem cu modalitile
de limitare a serverului la ascultarea unei sin-ure interfee de reea, pe mai multe porturi
sau a mai multor interfee pe mai multe porturi.
0irectiva 0escriere Exemple
Bind'dress \a limita serverul la ascultarea cererilor
clienilor doar pe o sin-ur adres IP. Poate
fi folosit doar o sin-ur dat n cadrul unui
fiier httpd.conf. %u poate specifica un port
anume sau adrese IP multiple.
>ind#dress @AR.@K,.@.@
-ort \a specifica portul de reea '.P pe care
#pac0e trebuie s-l asculte pentru a
rspunde cererilor clienilor. :imitat la un
sin-ur port '.P, unic n cadrul unei
confi-urri. %u poate defini mai multe
valor de port pentru mai multe intefee de
reea.
Port ,","
Listen #ceast directiv specific adresele IP i
porturile pe care serverul ascult cererile
clienilor. #re toate funcionalitile
directivelor Bind'dress i -ort ns are
mai multe avanta+e smnificative fa de
acestea. )e pot folosi mai multe directive
Listen pentru a specificate combinaii de
adrese IP i porturi pe care serverul va
asculta cererile.
:isten
@AR.@K,.@.@:,","
:isten
@AR.@K,.@.E":,"
:isten ,","

9ptions .ontroleaz facilitile serverului pentru un
anumit director. \alori posibile:
ExecC:I ^ va permite executarea
scripturilor .<I
;ollo<#=mLins ^ serverul va
urma le-turile simbolice din
directorul respectiv.
Includes ^ permite ))I ^
includerile din partea serverului
Includes>9E?EC ^ permite ))I ^
dar comezile Nexec i Ninclude sunt
dezactivate
Indexes ^ va furniza un index
formatat pentru directoarele care nu
au un fiier index stabilit
7ulti@ie<s ^ permite folosirea
(ulti\ieBs pentru ne-ocierea
coninutului
'll ^ include toate opiunile, mai
puin (ulti\ieBs.
#=mLinsIf9<ner7atch ^
serverul va urma le-turile
N#ctiveaz doar
9olloB)2m:inIs
U/irector2 30elpV
Hptions
9olloB)2m:inIs
U3/irector2V
simbolice doar dac destinaia este
n proprietatea aceluiai utilizator
ca i le-tura
0irectivele container
0irectiva container 0escriere Exemple
A@irtual/ostB )pecific un 0ost virtual 7o -azd virtual8.
#pac0e permite -zduirea mai multor site-
uri pe un sin-ur server. #ceast directiv se
aplic unuia din aceste site-uri virtuale.
#r-umentele ei sunt un nume de domeniu
sau o adresa IP i un numr de port
7opional8
U\irtualTost
@AR.@K,.@.REV
/ocument$oot
30ome3BBB3site@
)erver%ame BBB.site@.ro
U3\irtualTostV
A0irector=B
A0irector=7atchB
/irectivele cuprinse n aceste containere se
aplic doar asupra unui director sau -rup de
directoare din sistemul de fiiere. #ccept
ca ar-umete un nume de director sau o
expresie ec0ivalent unor nume de
directoare. U/irector2(atc0V are ca
ar-umente i expresii re-ulate
Nva -si toate directoarele
care au numele format din
K cifre din cadrul
directorului 3BBB
U/irector2(atc0 L3BBB3
C"-AD_K`LV
A;ilesB
A;iles7atchB
.a i containerul U/irector2V,
U9ilesVpoate fi folosit pentru cutri de
fiiere dup numele de fiier sau dup
modele cu expresii re-ulate. Pentru cutri
dup modele re-ulate a fost introdus
U9iles(atc0V, care are ca ar-umente doar
expresii re-ulate pentru identificarea
fiierelor dorite.
Nva -si toate fiierele cu
extensia .ext
U9iles a.extV
/irective
U39ilesV
Nva -si toate fiierele
audio
U9iles(atc0 LX.7BavbmpGb
aubmid8MLV
/irective
U39iles(atc0V
ALocationB
ALocation7atchB
#cest container seamn foarte mult cu
U/irector2V cu deosebirea c nu intr n
sistemul de fiiere ci folosete doar *$:-ul
din cerere. Hpiunile, aceleai ca i n cazul
U/irector2V, ce nu sunt valabile pentru un
*$: sunt i-norate. )e folosete, de re-ul,
cu directiva )etTandler. U:ocation(atc0V
are acceai funcionalitate ca i U:oactionV
cu diferena c accept *$:-uri definite
prin expresii re-ulate.
Nsolicit o pa-in de stare
a serverului
U:ocation 3statusV
)etTandler server-status
U3:ocationV
ALimitB
ALimitExceptB
:imiteaz efectul directivelor ce le conine
doar la metodele T''P specificate.
U:imit&xceptV conine directivele ce se
refer la metodele T''P exclu)Cnd
metodele specificate.
U:imit
PH)'V
$ecuire
valid-user
U3:imitV
U:imit&xcept
<&'V
$ecuire valid-
user
U3:imitV
9iierul .htaccess
.onfi-urarea complet a unui server #pac0e se realizeaz prin fiierul de confi-urare
httpd.conf. 'otui, exist anumite cazuri n care, se pot confi-ura directoarele n mod
independent de acest fiier de confi-urare. #cest mod este folosirea fiierelor .htaccess. ?n
aceste fiiere se pot -rupa directive specifice directoarelor 7de exemplu cele referitoare la
accesul n directoare8. #ceste fiiere se plaseaz n fiecare director care se dorete
confi-urat independent i va fi citit de server de fiecare dat cnd are loc o cerere pentru
directorul respectiv. #vanta+ele acestui mod de confi-urare este posibilitatea de a acorda
drepturi de acces pentru modificarea fiierelor .htaccess utilizatorilor de ncredere. *n alt
avanta+ este faptul c aceste fiiere sunt citite la fiecare acces n directorul care le conine,
deci directivele specificate n ele sunt funcionale imediat 7spre deosebire de cele
specificate n httpd.conf care devin funcionale numai dup restartarea serverului8.
/irectiva 'llo<9verride
/irectivele coninute n fiierele .0taccess sunt comasate, dup citirea fiierului, cu cele
activate de+a pentru directorul respectiv 7n 0ttpd.conf8. #ceasta este aciunea standard
7prestabilit8 a serverului #pac0e, aciune ce poate fi modificat folosind directiva
'llo<9verride . #ceast directiv specific dac directivele coninute ntr-un fiier
.0taccess au dreptul sau nu de a anula directivele care sunt de+a activate i care intr n
conflict. .u alte cuvinte, aceast directiv specific ce directive pot fi i-norate din
fiierul .0taccess. #r-umentele pentru aceast directiv sunt urmtoarele:
'll ^ activeaz toate anulrile din .0taccess, prin urmare, toate directivele
disponibile pentru un fiier .0taccess pot fi folosite pentru anularea celor
directivelor stabilite n 0ttpd.confQ
>one ^ /ezactiveaz toate anulrile din .0taccess. /ac acest ar-ument este
prezent fiierul .0taccess nu va fi citit din directorul respectiv, c0iar dac exist
acest fiier. #r-umentul >one specificat pentru directorul-rdcin va mpiedica
serverul s citeasc fiierele .0taccess6
'uthconfig ^ va permite folosire directivelor de autorizare 7utilizator3-rup8
;ileInfo ^ va permite folosirea directivelor referitoare la tipurile de documente
Indexes ^ permite folosirea directivelor referitoare la indexarea directoarelor
Limit ^ va permite directivele ce controleaz accesul pe baza numelui de -azd sau
adresei IP
9ptions ^ va permite folosirea directivelor speciale.
#ecuritatea unui server We!
Prin definiie serverele Web sunt n 4prima linie5 n rzboiul cu persoanele ru
intenionate. 9urtul de informaii, afectarea securitii sistemelor sau nlocuirea coninutului
unui site sunt doar cteva dintre aciunile preferate n ceea ce privete serverul Web. #cest
subiect, securitatea serverului Web 7a oricrui tip de server, de fapt8 a fost tratat n
nenumrate cri de-a lun-ul existenei Internetului. )eciunea aceasta se va concentra pe
msurile de securitate ce pot fi foarte uor implementate pe un server #pac0e.
&xist mai multe modaliti de a prote+a un server Web. .ea mai simpl i eficace este
plasarea lui n spatele unui fireBall. /in pcate aceast metod contrazice tocmai scopul
unui server Web: accesarea lui din Internet.
*rmtoarea variant de protecie este separarea serverului n dou pri: o parte destinat
utilizatorilor din interiorul or-anizaiei7Intranet8 care este plasat n spatele fireBall-ului,
iar a doua parte destinat utilizatorilor din Internet, care este plasat n afara fireBall-ului.
H soluie bun de protecie este i varianta prote+rii resurselor 4sensibile5 7private8 cu
a+utorul unui mecanism de le-itimare a utilizatorilor pentru identificarea si-ur a acestora.
H soluie avansat este implementarea )ecure )ocIets :a2er 7)):8, care mer-e ceva mai
departe de simpla autentificare i creeaz o le-tur securizat cu broBserul Web, ceea ce
permite sc0imbul securizat de informaii confideniale.
Instrumente de securitate din 'pache
.ontrolul accesului la resursele serverului #pac0e este implementat n module. 9iecare
modul 7complex sau simplu8 va avea o sin-ur sarcin final: aceea de a decide, n le-tur
cu o singurD cerere T''P, care din urmtoarele dou valori va fi returnat:
HF, dac cererea trebuie acceptat
9H$>I//&%, dac cererea trebuie refuzat
#ceste module sunt activate n cele trei faze ale prelucrrii cererii:
Controlul accesului - n aceast faz un modul poate refuza accesul la o resurs pe
baza informaiilor din cererea T''P sau a celor din pac0etul IP ce conine cererea.
'utentificarea - un modul apelat n aceast faz va verifica identitatea
solicitantului pe baza acreditrilor prezentate de utilizator. #ceste acreditri pot fi
foarte complexe 7certificat di-ital8 sau simple7perec0i nume utilizator-parol8
'utori)area - la apelului unui modul n aceast faz se presupune identitatea
utilizatorului ca fiind cunoscut prin urmare, modului va verifica informaiile
pentru controlul accesului i va decide dac utilizatorul are permisiunea de acces la
resursa solicitat.
.ea mai simpl metod restricie a accesului este cea oferit de modulul mod_acces, care
acioneaz n faza de control a accesului. ?n timpul acestei faze mod_acces va stabili dac
cererea va fi onorat, numai pe baza numelui -azdei sau a adresei IP a solicitantului.
Iat cum, ntr-un mod foarte simplu, se poate implementa de+a la nivel timpuriu, un
nceput de securitate. /irectivele acestui modul trebuie plasate ntr-un context de director
7container <irector!" sau fiier .htaccess8. $estricionarea accesului pe baza acestui
modul se refer la toate resursele din directorul specificat. %u poate fi folosit pentru
restricionarea accesului la nivel de fiier.
) vedem, prin exemple, cum putem limita accesul la resursele dintr-un director.
)e folosesc dou directive care vor re-lementa accesul -azdelor la resurse:
allo# - specific -azdele care vor avea acces
den! - specific -azdele care nu vor avea acces
#ceste directive vor folosi una din urmtoarele metode de descriere a accesului:
cuvntul c0eie all, care nseamn toate -azdele:
ex.: den! from all
adrese IP 7pariale sau complete8:
ex: allo# from $%&.$'(.$.$) $%&.$'(.$.&& $%&.$'(.&
nume de domeniu:
ex: den! from nume.domeniu.ro
perec0i adres IP-masc de subreea:
ex: allo# from $%&.$'(.$
den! from $%&.$'(.$.*/&)).&)).&)).*
/irectiva order va specifica ordinea n care sunt aplicate directivele allo# i den!.
&x: order den!, allo# - va aplica directivele de refuz naintea celor de aprobareQ
order allo#, den! - va aplica directivele de permitere a accesului apoi va interzice
accesul pentru -azdele specificate cu den!
EestricFii pe !a)a autentificDrii utili)atorului
Protocolul T''P ofer dou tipuri de autentificare care trebuie s fie recunoscute de toate
serverele i clienii de Web.
'utentificarea /&&- simplD - este cea mai folosit form de autentificare la ora
actual. )e efectueaz un sc0imb neprote+at de informaii coninnd un nume de
utilizator i o parol.
'utentificarea clasificatD - folosete un principiu asemntor cu autentificarea
simpl dar codific acreditrile prilor naintea transmiterii lor, asi-urnd astfel,
teoretic, posibilitatea interceptrii parolelor pe timpul tranzitului.
'utentificarea /&&- simplD
.:a primirea unei cereri de resurse cu antet +uthori,ation serverul va ncerca s verifice
valabilitatea informaiilor furnizate.
/up identificarea utilizatorului, va verifica drepturile lui de acces la resursele precizate.
/ac numele utilizatorului sau parola nu pot fi -site sau nu sunt valabile sau utilizatorul
nu are drept de acces la resurs serverul va returna un rspuns cu codul J"@ -nauthori,ed.
(odulul mod_auth execut autentificarea cu a+utorul unui fiier text care este creat de
htpass#d, un utilitar care este accesoriu standard n #pac0e i poate fi -sit n directorul
/.in din directorul de instalare a serverului #pac0e. ?n cazul apelrii htpass#d fr nici un
ar-ument va fi afiat o list cu toate opiunile asociate scriptului. /e exemplu, pentru
crearea unui fiier de utilizator nou i crearea utilizatorului proiectBeb, se va folosi
comanda:
htpass<d -c 3BBB3apac0e3aut03userfile proiectBeb
/up crearea fiierului htpass#d va cere parola pentru utilizatorul specificat apoi va cere
confirmarea ei. #du-area de utilizatori la acest fiier se va face folosind aceeai comand,
omind ar-umentul -c i folosind numele noi de utilizatori. /ei se folosete un fiier text,
care conine text vizibil pentru oricine, parolele sunt stocate n mod codificat pentru fiecare
utilizator folosind unul din multitudinea de sisteme de codificare existente. 7?n particular,
sistemul de codificare implicit folosete funcia *%I; cr!pt pentru a codifica parola8.
Pentru a activa funcia de autorizare pentru, de exemplu, un director trebuie creat un fiier
.htaccess n directorul care trebuie restricionat, care s conin minim urmtoarele:
+uth/ame 0mod_auth proiect#e.1
+uthT!pe 2asic
+uth-ser3ile /###/apache/auth/userfile
require valid user
+uth/ame definete domeniul de autorizare, +uthT!pe specific tipul autorizrii dorit
7>asic sau /i-est8. +uth-ser3ile indic spre fiierul de utilizatori -enerat cu htpass#d, iar
require specific lista utilizatorilor cu drept de acces 7n exemplu se permite accesul
oricrui utilizator valid din fiierul userfile8.
'utentificarea prin !a)D de date
?n cazul sistemelor cu un numr de utilizatori relativ mic autentificarea simpl este
absolut suficient. Problema apare n cazul sistemelor cu foarte muli utilizatori. /eoarece
folosete fiiere text neindexate pentru stocarea datelor despre utilizatori i parole, n cazul
unui numr mare de utilizatori, la fiecare autentificare trebuie desc0is acel fiier text,
executat o comparaie ntre fiecare nume de utilizator i rndurile din fiier pn la -sirea
utilizatorului sau pn la sfritul fiierului.#ceast operaie este mare consumatoare de
timp6 Prin urmare, n cazul unui numr mre de utilizatori trebuie folosit alt metod de
stocare i -sire ulterioar a informaiei: baza de date. ?n funcie de baza de date folosit se
vor folosi modulele de autentificare prin baze de date aferente:





.onfi-uraia implicit a serverului #pac0e include modulul mod_auth_d..
Pentru a crea o baz de date cu datele utilizatorilor se folosete un script, aflat, n mod
implicit, n directorul /usr/.in/d.mmana4e. #cest script este asemntor scriptului
htpass#d folosit n cazul autentificrii simple. #pelarea d.mmana4e fr nici un ar-ument
determin listarea tuturor opiunilor disponibile. /e exemplu, pentru crearea unei baze de
date i adu-area utilizatorului proiectBeb se va folosi urmtoarea comand:
Gd!mmanage 3BBB3apac0e3aut03dbpassBds add user proiectBeb
%eB passBord:
$e-t2pe neB passBord
*ser proiectBeb added Bit0 passBord encr2pted to 09dcE.fz'.GP0-
#utorizarea prin baza de date este uor de activat, funcionnd la fel ca i autentificarea
simpl:
+uth/ame 02 auth proiect#e.1
+uthT!pe 2asic
+uth2-ser3ile /###/apache/auth/d.pass#ds
require valid5user
+uth2+uthoritative 6ff
7905L5L Ba)a de date aferentD modulului
mod_auth_d. >erIele2 />
mod_auth_d.m *nix />(
mod_auth_m!sql (2)d:
mod_auth_ora7 Hracle versiunea !
mod_auth_ora( Hracle versiunea ,
mod_auth_p4sql Post-re)d:
mod_auth_tds (icrosoft )d: )erver i )2base
mod_auth_solid )olid
9a de directivele de la autentificarea simpl intervine directiva +uth2+uthoritative 6ff
care specific faptul c acreditrile utilizatorului trebuie trimise modulelor de autentificare
de nivel inferior din lista modulelor #pac0e.7#ceast list este specificat n fiierul de
confi-urare naintea directivei +dd8odule mod_auth_d.m8.
>iblio-rafie:
Charles 'ulds - :inux, #dministrarea serverului #pac0e, R""R, ed. 'eora
Hulie C. 7eloni - ?nva sin-ur PTP, (2)d: si #pac0e, R""E, ed. .orint
'pache #ite - #pac0e T''P )erver \ersion R." Hn:ine /ocumentation
Christopher >egus ^ $ed Tat :inux ,, ed. 'eora

S-ar putea să vă placă și