Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 374

MCLULC: LLSPLlLCUL LL APLlCAClCNLS vL8

Profesor: Serglo Cuestu vlcente.


htts:jjsltes.google.comjsltejserglocuestuj
rofesor.scvQgmull.com
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
Llcenclu
Los contenldos de este documento estn comurtldos bujo unu llcenclu Creutlve Commons sl no se lndlcu lo contrurlo.
Puede conocer ms sobre Creutlve Commons ulsundo en el enluce.
Ll uso de este documento est sujeto u lus normus que se lndlcun en estu glnu.
Sl qulere suber ms sobre Creutlve Commons uede vlsltur su glnu veb o lu verslon en esunol.
Puru suber ms sobre el tlo de llcenclu ullcudo u este documento uede vlsltur estu glnu.
1odos los muterlules usudos uru lu confecclon de este documento estn bujo llcenclu de Creutlve Commons y se hur referenclu u su uutor en lu
muneru que seu oslble.
Sl qulere usur todo o urte de este documento, or fuvor, hugu referenclu ul uutor.
Serglo Cuestu vlcente
rofesor.scvQgmull.com
3 -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
LlCLNClA..........................................................................................................................................................................................z
1LMA : lMPLAN1AClCN LL ARQUl1LC1URAS vL8 .................................................................................................................................c
Lu urqultecturu web y ulgunos modelos ...............................................................................................................................................................
Un modelo slmle uru el desllegue de ullcuclones veb.................................................................................................................................,
A,B &' ,1/ /()*./.*C1 D&2==================================================================================================================================================================================================== EF
G/'&' -& ,1 (80H&.:0 -& ,1/ /()*./.*C1 D&2======================================================================================================================================================================== EF
Servldores web.......................................................................................................................................................................................................zc
7&8>*.*0' #&2======================================================================================================================================================================================================================== 3E
"):&81/:*>/'=========================================================================================================================================================================================================================== 3E
IA,B 1&.&'*:0 (/8/ @01:/8 ,1 '&8>*-08 D&2J======================================================================================================================================================================= 34
lnstuluclon y conflguruclon bslcu de un servldor web: Auche.........................................................................................................................z
90@(802/.*C1 H &)*@*1/.*C1 -& 0:8/' >&8'*01&'================================================================================================================================================================== 3K
L1':/)/.*C1============================================================================================================================================================================================================================ 4M
L1':/)/.*C1 @/1,/) -& "(/.N& 3============================================================================================================================================================================================ 4E
lnstulur un servldor con LAMP...............................................................................................................................................................................
Servldores de Allcuclones.....................................................................................................................................................................................
901:&1&-08&'======================================================================================================================================================================================================================= 63
1omcut....................................................................................................................................................................................................................
L1':/)/1-0 O/>/===================================================================================================================================================================================================================== 66
L1':/)/8 "(/.N& P0@./:======================================================================================================================================================================================================== 6F
L1':/)/1-0 (/Q,&:&' /-*.*01/)&'=========================================================================================================================================================================================== RE
S',/8*0' -& P0@./:============================================================================================================================================================================================================== R3
-& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
L1*.*/8 H (/8/8 P0@./:=========================================================================================================================================================================================================== R4
L1':/)/1-0 P0@./: -& <08@/ @/1,/)==================================================================================================================================================================================== R6
T/.&8 P0@./: /,:0 /88/1./2)&============================================================================================================================================================================================= RR
Allcuclones web....................................................................................................................................................................................................8
U':8,.:,8/============================================================================================================================================================================================================================ KM
!&'.8*(:08 -& -&'()*&+,&====================================================================================================================================================================================================== KE
1LMA z: ALMlNlS1RAClCN LL SLRvlLCRLS vL8...................................................................................................................................6
Conflguruclon del servldor web............................................................................................................................................................................6
!*>*-*&1-0 H 08+/1*V/1-0 &) /8.N*>0 -& .01<*+,8/.*C1========================================================================================================================================================= KF
!*8&.:*>/' -&) /8.N*>0 -& .01<*+,8/.*C1 =============================================================================================================================================================================== 5M
Modulos..................................................................................................................................................................................................................88
WC-,)0' 8&)/.*01/-0' .01 &) &1:0810================================================================================================================================================================================== X4
WC-,)0' -& /,:&1:*./.*C1 H .01:80) -& /..&'0===================================================================================================================================================================== X4
WC-,)0' -& +&1&8/.*C1 -*1Y@*./ -& .01:&1*-0'================================================================================================================================================================= X6
WC-,)0' -& .01<*+,8/.*C1 -&) :*(0 -& .01:&1*-0================================================================================================================================================================= XR
WC-,)0' (/8/ &) )*':/-0 -& -*8&.:08*0'================================================================================================================================================================================= XK
WC-,)0' (/8/ )/ +&':*C1 -& )/' ./2&.&8/' TPPZ -& )/' 8&'(,&':/'======================================================================================================================================= XK
WC-,)0' -& *1<08@/.*C1 -&) '&8>*-08 H -& 8&+*':80 -& )/ /.:*>*-/-====================================================================================================================================== X5
WC-,)0' -& @/(&0 -& S[\'================================================================================================================================================================================================= XF
]:80' @C-,)0'====================================================================================================================================================================================================================== XX
lnstuluclon, conflguruclon y uso de los modulos de Auche..............................................................................................................................c
\0' /8.N*>0' -& .01<*+,8/.*C1 -& )/ *1':/)/.*C1 (08 (/Q,&:&============================================================================================================================================== EME
6 -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
90@(802/.*C1 -& )0' @C-,)0' H/ *1':/)/-0'====================================================================================================================================================================== EM3
L1':/)/.*C1=========================================================================================================================================================================================================================== EM6
S'0 H .01<*+,8/.*C1============================================================================================================================================================================================================ EMK
@0-^':/:,' H @0-^*1<0====================================================================================================================================================================================================== EMF
!*8&.:08*0' (&8'01/)&' -& ,',/8*0'===================================================================================================================================================================================== EMX
Eosts vlrtuules........................................................................................................................................................................................................
7*:*0 (08 -&<&.:0=================================================================================================================================================================================================================== EEE
W0-*<*./1-0 )0' @&1'/_&' -& &8808====================================================================================================================================================================================== EEK
")*/' / 0:80' -*8&.:08*0'======================================================================================================================================================================================================= EEK
[&-*8&..*01&'======================================================================================================================================================================================================================= EE5
98&/.*C1 -& N0':' >*8:,/)&'================================================================================================================================================================================================== EE5
Control de ucceso..................................................................................................................................................................................................z6
901:80) -& /..&'0 2/'/-0 &1 )/ -*8&..*C1============================================================================================================================================================================ E3K
901:80) -& /..&'0 (08 >/8*/2)& -& &1:0810========================================================================================================================================================================= E3F
901:80) -& /..&'0 .01 &) @C-,)0 8&D8*:&============================================================================================================================================================================ E3F
Autentlcuclon y uutorlzuclon................................................................................................................................................................................z
U) @C-,)0 @0-^/,:N=========================================================================================================================================================================================================== E3X
\0' <*.N&80' =N:/..&''========================================================================================================================================================================================================== E43
"+8,(/1-0 ,',/8*0' (/8/ &) .01:80) -& /..&'0=================================================================================================================================================================== E46
Ll rotocolo E11PS...............................................................................................................................................................................................8
Certlflcudos Llgltules............................................................................................................................................................................................c
]2:&1&8 ,1 .&8:*<*./-0 -*+*:/)============================================================================================================================================================================================= E63
-& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
SSLj1SL..................................................................................................................................................................................................................
E11PS en Auche..................................................................................................................................................................................................6
98&/1-0 ,1 '*:*0 >*8:,/) .01 TPPZ7===================================================================================================================================================================================== E6X
Lesllegue de ullcuclones sobre servldores web y Lmuquetudo de ullcuclones web...............................................................................6
1LMA : ALMlNlS1RAClCN LL SLRvlLCRLS LL APLlCAClCNLS.................................................................................................................,
Arqultecturu..........................................................................................................................................................................................................
\/ &':8,.:,8/ -& -*8&.:08*0' -& P0@./:============================================================================================================================================================================== ERX
S1 >*':/V0 @Y' (80<,1-0 / )/ /8Q,*:&.:,8/ -& P0@./:======================================================================================================================================================== EKE
Conflguruclon bslcu del servldor de ullcuclones.............................................................................................................................................6
'&8>&8=`@)=========================================================================================================================================================================================================================== EKR
.01:&`:=`@)========================================================================================================================================================================================================================= E5M
D&2=`@)=============================================================================================================================================================================================================================== E53
Admlnlstrur ullcuclones web..............................................................................................................................................................................,
\/ &':8,.:,8/ -& /8.N*>0' H -*8&.:08*0' -& ,1/ "()*./.*C1 #&2========================================================================================================================================== E55
Lesllegue de ullcuclones en el servldor de ullcuclones ................................................................................................................................,8
!&'()*&+,& @/1,/)============================================================================================================================================================================================================== E5X
U':/2)&.*&1-0 1,&':8/ /()*./.*C1 .0@0 )/ (8*1.*(/) (/8/ &) '&8>*-08================================================================================================================================== EFM
!&'()*&+,& .01 P0@./: #&2 W/1/+&8================================================================================================================================================================================ EFM
Autentlcuclon de usuurlos....................................................................................................................................................................................8z
U_&@()0' -& /,:&1:*./.*C1================================================================================================================================================================================================== EFF
!0@*1*0' -& '&+,8*-/- (/8/ )/ /,:&1:*./.*C1===================================================================================================================================================================== EXK
Admlnlstruclon de seslones. Seslones erslstentes ..........................................................................................................................................zc
K -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
Archlvos de reglstro de ucceso y flltro de sollcltudes.........................................................................................................................................z
;Y)>,)/'=============================================================================================================================================================================================================================== 3EK
G*):80'================================================================================================================================================================================================================================== 3E5
Conflgurur el servldor de ullcuclones uru cooerur con servldores web.......................................................................................................z
@0-^_a================================================================================================================================================================================================================================ 33M
@0-^(80`H========================================================================================================================================================================================================================== 335
Segurldud en el servldor de ullcuclones. Conflgurur el servldor de ullcuclones con soorte SSLj1SL........................................................z
Prctlcus flnules.....................................................................................................................................................................................................z,
Z8Y.:*./ / &1:8&+/8============================================================================================================================================================================================================= 34F
1LMA : lNS1ALAClCN Y ALMlNlS1RAClCN LL SLRvlLCRLS LL 1RANSlLRLNClA LL ARCElvCS.......................................................................z
Conflguruclon del servlclo de trunsferenclu de urchlvos..................................................................................................................................zc
L1':/)/1-0 &) '&8>*-08========================================================================================================================================================================================================= 36M
901<*+,8/1-0 &) '&8>*-08===================================================================================================================================================================================================== 363
1los de usuurlos y uccesos ul servlclo................................................................................................................................................................z
Z&8@*'0' H .,0:/'=============================================================================================================================================================================================================== 3K6
W0-0' -& .01&`*C1 -&) .)*&1:&=========================================================================================================================================================================================== 3KF
Protocolo seguro de trunsferenclu de urchlvos..................................................................................................................................................z,
S1 .)*&1:& &1 @0-0 :&`:0 (/8/ GPZ7=================================================================================================================================================================================== 354
Utlllzuclon de herrumlentus grflcus...................................................................................................................................................................z,
Utlllzuclon del servlclo de trunsferenclu de urchlvos desde el nuvegudor........................................................................................................z,,
Utlllzuclon del servlclo de trunsferenclu de urchlvos en el roceso de desllegue de lu ullcuclon web.......................................................z,
Lesurrollo de oeruclones remotus de gestlon de contenldos: vebLAv........................................................................................................z8c
, -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
1LMA : SLRvlClCS LL RLL lMPLlCALCS LN LL LLSPLlLCUL LL UNA APLlCAClCN vL8................................................................................z8z
Resolutores de nombres......................................................................................................................................................................................z8
Z80.&'0 -& 8&'0),.*C1 -& ,1 10@28& -& -0@*1*0=============================================================================================================================================================== 3F6
Purmetros de conflguruclon y reglstros del servldor de nombres ufectudos en el desllegue....................................................................z86
Servlclo de dlrectorlos: curucterlstlcus y funclonulldud.....................................................................................................................................zc
LLAP......................................................................................................................................................................................................................zz
lnstuluclon de CenLLAP....................................................................................................................................................................................z
"8.N*>0' 2Y'*.0' -& .01<*+,8/.*C1= L1:&8(8&:/.*C1 H ,'0==================================================================================================================================================== 3XR
Creundo contenldo en LLAP................................................................................................................................................................................cz
W0-*<*./1-0 &) .01:&1*-0==================================================================================================================================================================================================== 4E3
b088/1-0 &1:*-/-&'============================================================================================================================================================================================================ 4EX
Cllentes grflcos....................................................................................................................................................................................................zc
Autentlcuclon de usuurlos en el servlclo de dlrectorlos.....................................................................................................................................zz
U) /:8*2,:0 0)."..&''=========================================================================================================================================================================================================== 434
901:8/'&c/' (/8/ )0' ,',/8*0'============================================================================================================================================================================================ 43K
"()*./1-0 )/' -*8&.:*>/'====================================================================================================================================================================================================== 43X
901:80) -& /..&'0 &1 8&-&' -& 08-&1/-08&'======================================================================================================================================================================= 46M
Adutuclon de lu conflguruclon del servldor de dlrectorlos uru el desllegue de lu ullcuclon. Usuurlos centrullzudos............................z
\!"Z H "(/.N&==================================================================================================================================================================================================================== 463
\!"Z H P0@./:==================================================================================================================================================================================================================== 465
1LMA 6: LCCUMLN1AClCN Y SlS1LMAS LL CCN1RCL LL vLRSlCNLS.......................................................................................................
Eerrumlentus externus uru lu generuclon de documentuclon.........................................................................................................................
F -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
L1':/)/.*C1d .01<*+,8/.*C1 H ,'0========================================================================================================================================================================================== 4RR
98&/.*C1 H ,:*)*V/.*C1 -& ()/1:*))/'====================================================================================================================================================================================== 4RK
lnstuluclon, conflguruclon y uso de slstemus de control de verslones. ............................................................................................................,
APLNLlCLS..................................................................................................................................................................................8
vebmln: Unu lnterfuz grflcu de udmlnlstruclon...............................................................................................................................................
Un equeno servldor LNS....................................................................................................................................................................................6
lnstulur MySQL......................................................................................................................................................................................................,
-& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
1emu : lmluntuclon de urqultecturus web
EM -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
Lu urqultecturu web y ulgunos modelos
Unu ullcuclon web, o web en generul necesltu de unu estructuru que ermltu su ucceso desde dlferentes lugures (mqulnus). Lstu estructuru es lo que
se denomlnu Arqultecturu veb (reulmente este nombre se du tumblen ul dlseno de todu lu estructuru).
Lu grun muyorlu de lus urqultecturus web en lu
uctuulldud se busun en un modelo !"#$%&$'($)*#+,): unu
comunlcuclon uslmetrlcu en lu que uno de los extremos
ofrece uno o ms servlclos y el otro huce uso de el. Lste
es el modelo sobre el que centruremos el curso, ero
no huy que olvldur otros modelos como -.- 01$$)2&,2
1$$)34 5.5 067((#%$(( &, 67((#%$((34 $&!8
Ll termlno ($)*#!#, es muy umllo y muchus veces
confuso. Por ejemlo se uede conslderur unu web u lu
que ucudlmos u comrur roductos un servlclo en sl
mlsmu, ero u lu vez dlcho servlclo est comuesto de
servlclos de segurldud, de seslon, de trunsucclones,
etceteru.
Lu estructuru de unu Arqultecturu veb uctuul slgue el
slgulente 9,+$",:
-& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
. Unu !:1: !"#$%&$: es generulmente el nuvegudor veb ejecutndose en el ordenudor del usuurlo flnul. Lxlsten otrus oclones ms bslcus ero
en lu uctuulldud lu otenclu y dlversldud de los nuvegudores
exlstentes (usl como su grutuldud) hun relegudo lus dems
oclones u lu rctlcu desuurlclon.
z. Un servldor veb (!:1: +$ %$;,!#,): Lu cuu cllente uede ucceder
u dlferente loglcu y rocedlmlentos que exlsten en lu cuu de
negoclo. Aqul lu loglcu uede ser mucho ms comleju que en lu
cuu unterlor. Los comonentes de estu cuu ueden ser desde
slmles urchlvos E1ML hustu Servlets de 'uvu. Lxlsten muchus
tecnologlus que ueden usurse en este nlvel: or ejemlo scrltlng
web como PEP, ASP o 'SP u lenguujes de rogrumuclon como 1CL,
CCR8A y PLRL.
. Unu !:1: +$ +:&,(: Se comone de un slstemu de ulmucenumlento
ucceso u dutos que se utlllzun uru confecclonur lu glnu veb.
Cenerulmente es un gestor de buses de dutos reluclonules (SCL8)
ero ueden ser flcheros de texto luno, flcheros ML, etc. Unu
oclon cudu vez ms usudu es lu creuclon de flcheros ML u urtlr
de dutos ulmucenudos en unu buse de dutos y su resentuclon
medlunte ulgunu de lus oclones vlstus el curso usudo como or
ejemlo SL1.
Lu cuu de negoclo uede estur u su vez dlvldldu en dos urtes sl el
slstemu es suflclentemente grunde o comlejo. Puede dlvldlrse en unu
cuu de resentuclon y unu cuu de loglcu de negoclo.
! Lu !:1: +$ 1)$($%&:!#<% se encurgu de comoner lus glnus
lntegrundo lu urte dlnmlcu en lu esttlcu. Adems tumblen
rocesu lus glnus que envlu el cllente (or ejemlo dutos en
formulurlos). Algunus soluclones uru estu subcuu son los ASP de
Mlcrosoft o los 'SP de 'uvu. Lstu urte lu reullzu generulmente un
servldor web.
E3 -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
! Lu !:1: +$ "<;#!: +$ %$;,!#, llevu u cubo oeruclones ms comlejus. Se corresonde con lu lmluntuclon de un servldor de ullcuclones.
Reullzu muchos tlos de oeruclones entre los que destucun:
o Reullzur todus lus oeruclones y vullduclones.
o Cestlonur el flujo de trubujo (workflow) lncluyendo el control y gestlon de lus seslones y los dutos que se necesltun.
o Cestlonur todus lus oeruclones de uccesos u dutos desde lu cuu de resentuclon.
Ln el cuso de estur usundo glnus web esttlcus (no cumblun en funclon de dlversus vurlubles) no exlstlrlu lu cuu de dutos yu que estos vun
lncororudos en los rolos urchlvos de murcus que sern lus conformun lus glnus web.
Lste suuesto es cudu vez menos comun. Lebldo u lu lntroducclon de dlnumlsmo en lus glnus, lu estructuru vlstu unterlormente se hu vlsto ulterudu
senslblemente:
! Los nuvegudores veb son cuuces de lnterretur dlferentes elementos dlnmlcos uutonomumente o medlunte luglns (juvuscrlt, flush, etc.)
! Los servldores veb tumblen ueden lnterretur codlgo uru generur lus glnus web. Asl se ueden lntroduclr equenos rogrumus que
ulteren el contenldo o usecto flnul de unu glnu web deendlendo de dlferentes elementos como el usuurlo que uccede o lu lnformuclon
sollcltudu en cudu momento. Ll servldor web necesltu de ulgun modulo udlclonul uru oder lnterretur este codlgo. Cenerulmente se emotru
en el rolo servldor web uru lenguujes de scrlt o se lncororu en un servldor u urte (de ullcuclones) uru los lenguujes ms otentes.
Algunos lenguujes que tllcumente se usun en lus glnus dlnmlcus en el servldor son PEP, Python, Ruby o 'uvu. Lstos lenguujes tumblen
ermlten el ucceso u lu cuu de dutos y lu lnterculuclon de estos dutos entre los elementos de lu glnu flnul.
Un ejemlo del modelo comleto esturlu comuesto or un servldor Auche y un 1omcut que se conecte u unu buse de dutos. Un ejemlo del
slmllflcudo serlu un servldor LAMP.
Londe se ejecute el codlgo de dlnumlzuclon de lu glnu determlnur sl el lenguuje de rogrumuclon es de entorno cllente o de entorno servldor como
se estudlur en los otros dos modulos de contenldo lnformtlco de este curso del clclo.
A esur de que el modelo CllentejServldor es el ms extendldo, el vC descrlbe cuutro modelos de urqultecturu de servlclos web:
. Ll Modelo Crlentudo u Mensujes: Se centru en deflnlr los mensujes, su estructuru, lu formu de trunsorturlos, etc. sln referenclus ul or que de
cudu mensuje nl u su slgnlflcudo.
-& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
z. Ll Modelo Crlentudo u Servlclos: Ls el ms extendldo y el ms comlejo de todos. Aunque usu mensujes, su deflnlclon no se busu en ellos sl no
en que se roorclonu u los recetores de dlcho servlclo. Ll servlclo lo llevu u cubo un ugente y lo usu otro ugente, utlllzundo mensujes uru
comunlcurse. Ln este modelo se usun metudutos uru formur de y ucordur muchos usectos de lu comunlcuclon en sl mlsmu.
E6 -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
. Ll Modelo Crlentudo u Recursos: Lste modelo se busu en lu creuclon de recursos y su ucceslbllldud medlunte redes.

-& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
. Ll Modelo de Polltlcus: se busu en deflnlr los comortumlentos de los ugentes que utlllzun los servlclos deflnlendo como uccedern u los
recursos
Lstos modelos son en muchos cusos comlementurlos y lu deflnlclon de unu urqultecturu web uede hucerse desde dlferentes enfoques.
Ln un cuso rctlco lo ms hubltuul es que nuestru urqultecturu se buse en unu deflnlclon estndur.
EK -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
Un modelo slmle uru el desllegue de ullcuclones veb
Ln lu uctuulldud lu muyor urte de lu lnformuclon y loglcu de un negoclo debe ser ucceslble desde dlferentes lugures. Aqul entrun en juego lus
ullcuclones web.
1odos ensumos en tlendus onllne como modelo de unu ullcuclon web, ero huy otros muchos como or ejemlo unu ullcuclon de comru ventu de
uctlvos entre dos buncos en el sector entre negoclos (8z8).
Se uede lmuglnur lnmedlutumente que lu ($;7)#+:+ es un usecto cluve en este tlo de ullcuclones, ero no el unlco. Muchus veces lu *$",!#+:+ y
$(&:6#"#+:+ de lu comunlcuclon y del servlclo en sl ueden ser tunto o ms crltlcus.
Cuundo uno vu u desurrollur e lmluntur unu ullcuclon web debe tener en cuentu vurlos fuctores. Lo rlmero debe ser hucerse unu #+$: ;$%$):" +$ ":
:1"#!:!#<% y de lus dlferentes (,"7!#,%$( que odemos utlllzur. Se deben tener en cuentu lus tres cuus. Un error muy comun es el uso de un unlco
conjunto de tecnologlus constuntemente. Por suuesto conocer unu tecnologlu es un unto u fuvor de su uso, ero muchus veces vumos u llevur u
cubo unu soluclon munlflestumente mejor unlcumente or no huber conslderudo usur otrus y ufrontur su urendlzuje.
Ll slgulente usecto u conslderur serlu el !,(&$. Cunto nos vu u costur y que resuuesto tenemos.
Lstos fuctores huy que conslderurlos :%&$( +$ =#)9:) nlngun contruto e lncluso untes de dur un resuuesto uunque seu orlentutlvo.
Por ejemlo unu comunlu de ventu de vehlculos lndustrlules qulere unu ullcuclon web uru ubllcur sus dutos de ventus y que los comerclules uedun
ucceder u ellu remotumente. Neceslturemos unu buse de dutos en lu que se ulmucenen los dlferentes vehlculos y sus ventus. 1umblen hur fultu unu
loglcu que muntengu todo el slstemu uctuullzudo y ermltu modlflcuclones. Adems neceslturemos unu cuu de cllente con uutentlcuclon uru que los
dlferentes vendedores uedun ucceder ul slstemu, consultur y uctuullzur los dutos.
Lesues de lu evuluuclon se uede decldlr no ufrontur el royecto or muchos motlvos. Adems de los costes yu menclonudos odrlu durse el cuso de
que no tengumos los conoclmlentos o lu lnfruestructuru uru llevur u cubo el royecto.
, -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
Unu vez vuyumos u reullzur el royecto deberemos oner en rctlcu los conoclmlentos udqulrldos durunte el estudlo de este clclo, ero muchus veces
es dlflcll hucerse unu ldeu de como hucerlo, uqul nos orlentun con un ejemlo y estu equenu gulu nos uede ser muy utll uru orgunlzur el frontend.
!"# %& "'( ()*+,(,+-' .%/
Ls unu ullcuclon que se vu u ejecutur u truves de lnternet. Constur de dos urtes (ul menos) unu en el ludo servldor y otru que se ejecutur en lu
mqulnu del cllente en un nuvegudor web. Lus ullcuclones web se englobun en el conceto suerlor de ullcuclones dlstrlbuldus. Ll servldor one u
dlsoslclon del cllente dlferentes recursos. Ljemlos de ullcuclones web son el correo electronlco web, lus tlendus onllne, lus redes soclules, etc.
0(&%& 1% "' )234%,53 1% "'( ()*+,(,+-' .%/
Se ueden conslderur cuutro fuses en el royecto:
. >,%!$1&,: Lurunte estu fuse se debe obtener unu ldeu cluru y concretu de que qulere el cllente. Adems huy que obtener unu ldeu generul de
como se llevur u cubo y de sl es vluble o no. Euy que determlnur lus llmltuclones reules con que nos odemos encontrur. Por ejemlo lu
conexlon u lnternet exlstente en lu zonu uede no ser suflclente uru obtener los resultudos revlstos. Ctro ejemlo de roblemu uedu ser
que lu tecnologlu necesurlu seu demusludo curu. Ls vltul que ul termlnur estu fuse se tengu unu documentuclon que deflnu clurumente los llmltes
y objetlvos del royecto.
z. ?#($@,: Lstu fuse se centru en resonder u como huremos lu ullcuclon. Euy que concretur lus tecnologlus (tunto softwure como hurdwure) que
usuremos y como se vun u comunlcur entre ellus. 1umblen huy que determlnur los dlstlntos modulos que usuremos y sus lnterfuces. Ls muy
lmortunte reullzur un lun de royecto reullstu en el que se dlvldun lus tureus y resonsubllldudes y se culculen los tlemos uru cudu elemento
usl como su secuenclu y deendenclus. 1umblen huy que obtener unu eseclflcuclon funclonul en lu que se detullen tunto el funclonumlento
como el flujo de lu ullcuclon.
. ?$(:)),"",: Ln estu fuse se debe desurrollur el royecto en sl. Ls muy lmortunte llevur u cubo ruebus tunto unlturlus como de lntegruclon usl
como gestlonur unu documentuclon del desurrollo y un control de verslones.
EF -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
. -)7$6:( $ #91":%&:!#<%: Cuundo el royecto est totulmente termlnudo es necesurlo roburlo lntenslvumente untes de onerlo en roducclon.
Ls necesurlo tener en cuentu tunto nuestru ullcuclon como su comunlcuclon con otros slstemus lnformtlcos. Cuunto ms se urezcu el
slstemu de ruebus ul reul mejor. Ll ultlmo uso es lu lnstuluclon y uestu en curchu del slstemu. Ls un momento crltlco.
Lste modelo es unu slmllflcuclon de los que se utlllzun hubltuulmente en lngenlerlu de softwure.
lnvestlgu en lnternet lus fuses hubltuules en un royecto de desurrollo de softwure y cules son los dlferentes clclos de vldu que se
usun. Llscute en cluse los descubrlmlentos con uyudu del rofesor.
Unu fuse comun u todos los royectos lnformtlcos y que no se lncluye uqul es el 9:%&$%#9#$%&,. Lste conceto lncluye dos urtes. Ll muntenlmlento
del servlclo y correcclon de errores y lus mejorus. Lu rlmeru conslste en usegururse de que todo slgue funclonundo y soluclonur los oslbles errores y
"culdus' del servlclo. Lu segundu conslste en umllur el royecto. Ambos cusos suelen conslderurse contrutos u urte y or ello no se lncluyen en el
clclo.
Ll orden correcto uru el desurrollo es emezur de ubujo u urrlbu. Ls declr, rlmero lu cuu de dutos, luego lu de negoclo y or ultlmo lu resentuclon ul
cllente. Muchus veces se tlene lu tentuclon de hucerlo ul reves. Lsto es debldo u que no se hun ldentlflcudo blen lus necesldudes y objetlvos de royecto
o no se hu reullzudo un dlseno concreto. Ls un error que nos conduclr u muchus ms modlflcuclones y errores en nuestru ullcuclon.
-& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
Servldores web
Un ($)*#+,) A$6 es un rogrumu o conjunto de ellos que roorclonu un servlclo u truves de unu red. Lu comunlcuclon con un servldor web suele
hucerse medlunte el rotocolo htt (hyertext trunsfer rotocol) que est englobudo en lu cuu de ullcuclon del modelo CSl.
Muchus veces servldor web se usu como referenclu tumblen ul B:)+A:)$ que lo uloju, ero esto es lnexucto orque el mlsmo hurdwure uede ulbergur
muchus otrus funclonulldudes o uede durse el cuso de que un mlsmo hurdwure contengu vurlos servldores web (u veces slmuludos).
Ll objetlvo de un servldor web es roorclonur los medlos uru ermltlr lu comunlcuclon entre dos o ms rogrumus o gruos de softwure sln lmortur
lu tecnologlu usudu uru creur y oerur cudu uno de ellos.
Ln lu uctuulldud el servldor web ms extendldo con muchu dlferenclu es C1:!B$. Por ello ser en el que centruremos este curso. Lxlsten muchos otros
servldores web. Unu formu fcll de consultur lu llstu y ver unu comurutlvu muy generul es vlsltundo lu vlkledlu. Ln estu otru se ueden leer lus
rlnclules curucterlstlcus de cudu uno.
Los servldores web se englobun en un conjunto de slstemus ms generul que se denomlnu 9,+$", +#(&)#67#+, orque el slstemu no es unlturlo, est
reurtldo entre dlferentes mqulnus o conjuntos de hurdwure. Lste modelo tlene que ufrontur ulgunos roblemus que huy que tener slemre en
cuentu:
. Lu lutenclu y ocu flubllldud del trunsorte (or ejemlo lu red).
z. Lu fultu de memorlu comurtldu entre lus urtes.
. Los roblemus derlvudos de fullos urclules.
. Lu gestlon del ucceso concurrente u recursos remotos.
. Problemus derlvudos de uctuullzuclones de ulgunujs de lus urtes.
Le que se encurgu cudu nlvel de lu llu del modelo CSl? Que rotocolos se lncluyen en cudu cuu? ldentlflculos y exllcu muy
brevemente que huce cudu uno.
3M -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
6%27+,+3& 8%/
Un ($)*#!#, A$6 es un conceto ubstructo que debe lmlementurse medlunte un :;$%&$: un eduzo de softwure que envlu, reclbe y rocesu mensujes
mlentrus que el servlclo es el conceto de que huce. Ll ugente solo debe ujusturse u lu deflnlclon de unu lnterfuz (dos reulmente, unu huclu dentro (llu
CSl) y otru huclu fueru) y uede modlflcurse o lncluso rehucerse en otro lenguuje de rogrumuclon sln nlngun roblemu. Ll dlseno se reullzu slgulendo
normus de modulurldud uru ermltlr estus modlflcuclones.
Ls de vltul lmortunclu que el servlclo web este blen deflnldo uru oslbllltur lu comunlcuclon entre umbos extremos. Por ello huy muchos estndures
sobre servlclos web que ermlten lu comunlcuclon de un cllente generlco (or ejemlo un nuvegudor web) con dlversos servlclos.
Cenerulmente lu deflnlclon de un servlclo se reullzu en unu APl que eseclflcu como comunlcurse con el servlclo.
Ll roceso uru usur el servlclo es como slgue:
. Ll cllente y el servldor deben ser consclentes de lu exlstenclu del otro. Ln el cuso ms hubltuul es el cllente el que lnformu ul servldor de su
lntenclon de usur el servlclo ero tumblen uede ser el servldor el que lnlcle el contucto. Sl es el cllente el que comlenzu, uede hucerlo o blen
conoclendo revlumente como locullzur el servldor o usundo el servlclo uru descubrlr servlclos (veb Servlce Llscovery).
z. Ambus urtes deben onerse de ucuerdo sobre los urmetros que reglrn lu comunlcuclon. Lsto no slgnlflcu que dlscutun, solo que lus normus
y rotocolos deben ser lus mlsmus en umbus urtes.
. Los ugentes de umbos ludos emlezun u lntercumblur mensujes. Ll servldor web necesltu comoner lus glnus en cuso de que lleven
elementos multlmedlu e lncluso necesltur reullzur otrus ucclones sl lu glnu se creu dlnmlcumente.
9*5%2'(5+7(&
Antes de decldlrse u lnstulur nuestro rolo servldor web, debemos tener en cuentu que no slemre es lu mejor oclon. Lo rlmero que debemos suber
es que qulere el cllente. Leendlendo del tumuno del servlclo que vuyumos u roorclonur y de lu lmortunclu de oder controlur todos los usectos
del servldor, odemos decldlr usur otrus oslbllldudes.
Por otro ludo lu mqulnu que necesltumos tendr que tener muchu RAM y cuucldud de ulmucenumlento u urte de soortur grundes curgus de
trubujo. Lu conexlon u lnternet tumblen deber ser otente y neceslturemos contrutur unu dlrecclon lP esttlcu.
z -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
Lo rlmero que se debe tener en cuentu es sl nos lnteresu tener nuestro rolo servldor web o contrutur un servlclo de ulmucenumlento web (web
B,(&#%;). Reulmente el termlno veb Eostlng lncluye el tener un servldor rolo, ero en lu uctuulldud se utlllzu uru denomlnur el ulqullur esuclo en
un servldor de otru comunlu. Cenerulmente estu comunlu est dedlcudu u ello eseclflcumente. Lus ventujus de este cuso son lus obvlus: no tenemos
que reocuurnos de udqulrlr nl muntener nl el hurdwure nl el softwure necesurlo. Adems lu flubllldud del servlclo de unu emresu eseclullzudu suele
ser muy ultu.
Lxlsten cusos en los que lncluso huy tecnologlus ms eseclflcus uru nuestrus necesldudes. Cudu vez es ms hubltuul lu exlstenclu de sltlos web en los
que lu uurlenclu no cumblu ero el contenldo es uctuullzudo constuntemente. Puru estos cusos se uede usur un ;$(&,) +$ !,%&$%#+,(. Con ellos se
ermlte ul usuurlo uctuullzur lu lnformuclon del sltlo sln necesldud de que tengu conoclmlentos web concretos. Lxlsten muchos gestores web, ulgunos
comerclules y curos ero muy onentes. 1umblen huy dos ulternutlvus grutultus muy extendldus: 'oomlu y Lruul.
Ultlmumente se conslderu lncluso unu ulternutlvu ms senclllu sl se qulere unu web lnformutlvu y bustunte senclllu. vordress emezo slendo unu
lutuformu uru ulojur blogs ero cudu vez lncluye ms oclones y oslbllldudes de conflguruclon ermltlendo llevur u cubo glnus bustunte
utructlvus.
htt:jjwww.frumeworx.co.zuj
htt:jjwww.webdeslgnerdeot.comj
htt:jjdeslgnshuck.netj
Son ulgunos ejemlos de glnus hechus en vordress.
8uscu comurutlvus entre montur tu rolo servldor, contrutur un hostlng externo o usur wordress. Que funclonulldudes crees que
son ms lmortuntes? Por cul te decunturlus uru creur lu web de unu unuderlu? y de un centro deortlvo munlclul? lu de lu
consejerlu de deortes de lu Comunldud de Mudrld lu reullzurlus con el mlsmo slstemu?
Los gestores de contenldo como 'oomlu, Lruul o vordress estn generundo bustuntes ofertus de trubujo en lu uctuulldud. 8uscu en
lnternet lus rlnclules curucterlstlcus de cudu uno y los motlvos que te ueden llevur u decldlrte or uno u otro.
33 -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
:!"# '%,%&+53 )(2( ;3'5(2 "' &%27+132 .%/<
Lo rlmero que necesltus es unu 9DE7#%: con unu otenclu cuuz de utender lus etlclones que vuyu u rocesur. Lste unto es crltlco y dlflcll de
gestlonur orque no subemos cul ser lu demundu y muchus veces es comlejo estlmur lu curgu de trubujo que soortur. Ls muy recomenduble que
seu unu mqulnu dedlcudu o que cumlu otrus funclones reluclonudus con lntercumblo de lnformuclon en lnternet como gestlonur correo electronlco o
l1P.
1umblen es vltul que el (#(&$9: ,1$):&#*, que elljumos seu estuble. No tlene nlngun sentldo eleglr un slstemu oerutlvo que deje de estur funclonul con
fucllldud. Ls convenlente que lleve clertu segurldud y control de ermlsos lntegrudo. Los slstemus ms hubltuules son dlferentes verslones de UNl (or
ejemlo Solurls) ero lus dlferentes dlstrlbuclones de Llnux estn tomundo unu oslclon fuerte or su bujo (o lnexlstente) coste. vlndows tumblen es
unu buenu oclon (sobre todo sus verslones servldor) ero es ms curo que Llnux y es ms dlflcll de gestlonur debldo u lu dlversldud de
conflguruclones, oclones y funclonulldud que lleven lntegrudos.
Lo slgulente que tendrs que consegulr es unu +#)$!!#<% F- $(&D&#!:. Por suuesto debe ser unu dlrecclon de lnternet u no ser que tu objetlvo seu
montur unu lntrunet. Nuestru mqulnu debe ser ucceslble desde redes remotus.
Consultu como se uede contrutur unu dlrecclon lP esttlcu y cunto cuestu.
Los nombres y dlrecclones de lnternet que conocemos se busun en un slstemu llumudo LNS que lo que huce es convertlr esus dlrecclones leglbles uru
nosotros en dlrecclones lP y vlceversu. Sl nuestru dlrecclon lP cumblu frecuentemente cuundo ulgulen fueru u ucceder u nuestru glnu estu le
uurecerlu como no dlsonlble u esur de que todo el resto del slstemu estuvleru trubujundo.
Que es LNS? Qulen lo gestlonu? Como se conslgue un nombre de domlnlo?
Puru ulternutlvus como vordress o un hostlng externo, es necesurlo un nombre de domlnlo?
z -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
Lxlste lu oslbllldud de funclonur con unu dlrecclon lP dlnmlcu medlunte slstemus como htt:jjdyn.comjdnsj que muntlenen slemre uctuullzudu
nuestru dlrecclon ero solo es recomendudo (lncluso en lu rolu glnu) uru servldores con muy ocu curgu de conexlones y trubujo.
Lu !,%$G#<% : #%&$)%$& .H B,):( se du or guruntlzudu ero tumblen lmllcu clertos roblemus como lu udqulslclon de dlsosltlvos de red que uguunten
ese horurlo sln sobreculenturse o sutururse.
Ll (,=&A:)$ del servldor del que yu hemos hubludo y sln el que no odrlumos trubujur.
>,%=#;7):) nuestru mqulnu uru que seu ucceslble ero lmldlendo lu conexlon de desconocldos u urtes del slstemu crltlcus o que no queremos
ubllcur. Ln deflnltlvu, huy que mejorur lu segurldud.
36 -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
lnstuluclon y conflguruclon bslcu de un servldor web: Auche
Munos u lu obru! Nosotros vumos u otur or lnstulur un servldor web Auche en un slstemu oerutlvo Llnux. Ls unu de lus oclones ms extendldus y
lu oslbllldud de obtener este softwure de muneru grutultu dlsmlnuye mucho los costes ero no es lu unlcu ruzon. Auche destucu sobre otros
servldores or:
! 1lene un dlseno modulur y ultumente conflguruble.
! Ls de codlgo ublerto or lo que exlsten muchus extenslones y herrumlentus de terceros.
! lunclonu muy blen con Perl, PEP y otros lenguujes de scrlt.
! Lxlsten verslones uru muchos slstemus oerutlvos lncluyendo vlndows, Llnux y Muc CS .
Lu fumlllu Auche z trujo muchus mejorus con resecto u lu rlmeru verslon sobre todo en el luno de lu flexlbllldud, esculubllldud y ortubllldud.
Lo ms loglco serlu lnstulur Auche en un slstemu oerutlvo de tlo servldor (Ubuntu Server) ero or motlvos dldctlcos, vumos u lnstulurlo en unu
verslon estndur con lnterfuz grflcu. Ls menos seguro or lo que en un slstemu en roducclon deberlumos otur or lu otru oclon. A esur de usur un
Llnux con lnterfuz grflcu vumos u lnstulur todo desde lu ventunu de termlnul, or lo que los usos se odrn ullcur u un servldor.
Nosotros vumos u reullzur unu lnstuluclon munuul uru tener muyor control sobre el roceso y lu conflguruclon. Auche uede funclonur de formu
uutonomu, ero en lu uctuulldud (ms uun hublundo de ullcuclones web) suele necesltur unu buse de dutos y cudu vez son ms los slstemus que usun
PEP. Por ello hun rollferudo los lnstuludores AMP (Auche, MySQL y PEP) que lnstulun y conflgurun los tres slstemus uru que funclonen de muneru
conjuntu. Lsto requlere unu grun conflguruclon de los tres elementos uru oder tener un servldor seguro. Puru segurldud sobre PEP y MySQL hubr
que referlrse u los modulos rolos.
AMPP es lu verslon ms usudu uru vlndows y Llnux. Leendlendo del slstemu uru el que vuyun orlentudos, estos uquetes se llumun vAMP y
LAMP generlcumente. Lu lnstuluclon de estos uquetes es tremendumente senclllu.
z -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
=3;)23/(,+-' 4 %*+;+'(,+-' 1% 352(& 7%2&+3'%&
Ln lu muyorlu de lus gulus y tutorlules de lnternet vers que lnstulun rlmero MySQL. Lsto es orque fucllltu lu lnstuluclon, ero y sl tenemos que
montur unu buse de dutos en un servldor web que yu est funclonundo? Nosotros lnstuluremos rlmero lu oclon ms bslcu de nuestro servldor web.
Antes de nudu, ms uun en un servldor que vuyu u ubllcur en lu web, debemos usegururnos de tener el control ubsoluto. Muchus verslones de Llnux
vlenen con uquetes de Auche 1)$#%(&:":+,( usl que lo rlmero ser $"#9#%:)",( sl exlsten. Lsto mejoru lu segurldud orque nos usegurumos de estur
lnstulundo lu ultlmu verslon. vumos u comrobur de muneru conjuntu sl exlsten lnstuluclones de Auche, MySQL y PEP uru oder dejur unu mqulnu
llmlu.
dpkg --list|grep -e httpd -e apache -e mysql -e php
Que huce lu llneu unterlor?
Ln Ubuntu or defecto no vlene lnstuludo. Sl est relnstuludo el comundo unterlor devolver ulgo. Sl es usl debemos comrobur lus deendenclus
uru ellmlnur todo. Sl vlerumos que uurece ** ul ludo del uquete esturlu lnstuludo y hubrlu que ellmlnurlo. Suongumos que nos devuelve lo slgulente
ii apache2 2.2.4-3build1 Next generation, scalable,
extendable web se
ii apache2-mpm-prefork 2.2.4-3build1 Traditional model for Apache HTTPD
ii apache2-utils 2.2.4-3build1 utility programs for webservers
ii apache2.2-common 2.2.4-3build1 Next generation, scalable,
extendable web se
3K -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
ii libapache2-mod-php5 5.2.3-1ubuntu6 server-side, HTML-embedded
scripting languag
ii libdbd-mysql-perl 4.004-2 A Perl5 database interface to the
MySQL data
ii libmysqlclient15off 5.0.45-1ubuntu3 MySQL database client library
ii mysql-client-5.0 5.0.45-1ubuntu3 MySQL database client binaries
ii mysql-common 5.0.45-1ubuntu3 MySQL database common files
ii mysql-server 5.0.45-1ubuntu3 MySQL database server (meta package
dependin
ii mysql-server-5.0 5.0.45-1ubuntu3 MySQL database server binaries
ii php5-common 5.2.3-1ubuntu6 Common files for packages built
from the php
ii php5-mysql 5.2.3-1ubuntu6 MySQL module for php5
8uscumos los rocesos de uuche.
# ps -wef|grep apache2
Suonemos que nos muestru
root 4006 1 0 09:41 ? 00:00:00 /usr/sbin/apache2 -k start
z, -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
www-data 4025 4006 0 09:41 ? 00:00:00 /usr/sbin/apache2 -k start
www-data 4026 4006 0 09:41 ? 00:00:00 /usr/sbin/apache2 -k start
www-data 4027 4006 0 09:41 ? 00:00:00 /usr/sbin/apache2 -k start
www-data 4028 4006 0 09:41 ? 00:00:00 /usr/sbin/apache2 -k start
www-data 4029 4006 0 09:41 ? 00:00:00 /usr/sbin/apache2 -k start
www-data 4140 4006 0 14:24 ? 00:00:00 /usr/sbin/apache2 -k start
www-data 4141 4006 0 14:24 ? 00:00:00 /usr/sbin/apache2 -k start
www-data 4142 4006 0 14:24 ? 00:00:00 /usr/sbin/apache2 -k start
root 4157 4125 0 14:36 pts/0 00:00:00 grep apache2
Purumos uuche
# apache2ctl stop
volvemos u buscurlo uru usegururnos de que yu no se est ejecutundo.
# ps -wef|grep apache2
root 4162 4125 0 14:36 pts/0 00:00:00 grep apache2
Ahoru buscumos MySQL
3F -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
# ps -wef|grep mysql
Nos muestru
root 3857 1 0 09:41 ? 00:00:00 /bin/sh /usr/bin/mysqld_safe
mysql 3897 3857 0 09:41 ? 00:00:00 /usr/sbin/mysqld --basedir=/usr
--datadir=/var/lib/mysql --user=mysql --pid-file=/var/run/mysqld/mysqld.pid --skip-external-locking
--port=3306 --socket=/var/run/mysqld/mysqld.sock
root 3898 3857 0 09:41 ? 00:00:00 logger -p daemon.err -t mysqld_safe -i -t mysqld
root 4355 4310 0 18:54 pts/1 00:00:00 grep mysql
Purumos MySQL
# /etc/init.d/mysql stop
* Stopping MySQL database server mysqld [ OK ]
Y comrobumos que yu no est.
# ps -wef|grep mysql
root 4395 4310 0 18:55 pts/1 00:00:00 grep mysql
PEP no huy que ururlo.
Lllmlnumos todos los uquetes que uureclun.
z -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
# 3 remove php5-mysql libapache2-mod-php5 php5-common
# apt-get remove libdbd-mysql-perl mysql-server mysql-server-5.0 mysql-client-5.0
# apt-get remove libmysqlclient15off mysql-common
# apt-get remove apache2 apache2-mpm-prefork apache2.2-common apache2-utils
Ahoru que yu hemos vlsto como hucer unu lnstuluclon y conflguruclon de Auche z de formu munuul, vumos u reullzur otru lnstuluclon ms estndur
uru contlnuur. Adems estu lnstuluclon nos ermltlr tener unu verslon llmlu.
>'&5(*(,+-'
Antes de lnstulur ulgo es lmortunte tener uctuullzudu lu llstu de uquetes
sudo apt-get update
uru luego uctuullzur lu mqulnu enteru
sudo apt-get upgrade
y luego yu lnstulumos
apt-get install apache2
Lo rlmero que debemos hucer es ver que uhoru Auche est lnstuludo en
cd /etc/apache2/
4M -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
Lxlsten dlferentes verslones de Auche z or lo que es lnteresunte comrobur cul es lu que estumos usundo.
apache2 -v
lo que nos mostrur ulgo como esto
Server version: Apache/2.2.22 (Ubuntu)
Server built: Feb 13 2012 01:37:45
Conflguru e lnstulu Auche en tu mqulnu vlrtuul slgulendo los usos lndlcudos y comruebu el ucceso desde lu mqulnu vlrtuul y desde
lu mqulnu unfltrlon. Comentu en cluse los resultudos.
Podemos ver que yu exlste un urchlvo uuchez en jetcjlnlt.dj que huce que se lnlcle Auche cudu vez que encendumos lu mqulnu.
sudo gedit /etc/init.d/apache2
Nos muestru un contenldo muy comlejo ero ul que odemos echur un vlstuzo sublendo que se busu en estublecer que hucer unte dlversus ordenes
(lus ms lmortuntes son sturt, sto, resturt y gruceful).
Lchu un vlstuzo ul scrlt sln entrur en detulles. Que es gruceful? uru que se usu uqul?
>'&5(*(,+-' ;('"(* 1% 9)(,?% @
I,+, $(&$ :1:)&:+, ($ 9:%&#$%$ 1,) (# $( +$ #%&$)J( 1:): :";7#$% 1$), &$%#$%+, $% !7$%&: E7$ $" !#!", $( +$ +$(:)),"", K ": $(!:($L +$ &#$91, !,% ":
E7$ !,%&:9,( B$ +$!#+#+, 1:(:) : ": #%(&:":!#<% :7&,9D&#!: K :(M :B,)):) &#$91,8 -:): (:"&:)&$ $(&: 1:)&$ +$ ": +,!79$%&:!#<% B:L !"#!N :E7M8
-& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
Puru descurgur Auche lo rlmero es lr u su glnu web uru comrobur cul es lu ultlmu verslon estuble ubllcudu. No debes descurgur lus verslones
en fuse betu.
Ln el momento de creur este documento, lu ultlmu verslon estuble es lu z.z.zz
Ln estu dlrecclon se encuentru lu documentuclon oflclul de Auche z.z
Lu formu ms fcll de lnstulur Auche ero que te llmltu mucho u lu horu de eleglr oclones y conflgururlo es
sudo apt-get install apache2
O,(,&),( %, 7(:)$9,( $(&: ,1!#<% orque queremos urender u comllur el servldor. Ms udelunte, cuundo vuyumos u conflgurur el servldor
utlllzuremos unu verslon lnstuludu de estu formu.
Unu vez subemos que verslon es, yu odemos descurgur los uquetes. vumos u lnstulur Auche desde el codlgo fuente yu que es lo recomendudo or lu
rolu orgunlzuclon.
Como uso revlo vumos u creur un dlrectorlo uru descomrlmlr el codlgo fuente desues de descurgurlo.
mkdir -p /usr/local/src/webserver
Unu vez hemos hecho esto deberlumos comrobur que el dlrectorlo este vuclo yu que con lu oclon - creu los udres sl no exlsten ero no du error sl
el dlrectorlo yu exlstlu.
cd /usr/local/src/webserver
ls -la
Ahoru odemos roceder u descurgur los urchlvos
wget http://apache.rediris.es/httpd/httpd-2.4.6.tar.gz
43 -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
Puru luego comrobur que se hu descurgudo correctumente debemos obtener unu sulldu urecldu u estu, obvlumente con los dutos de lu verslon que
usemos.
--2012-07-17 13:02:46-- http://apache.rediris.es/httpd/httpd-2.2.22.tar.gz
Resolviendo apache.rediris.es (apache.rediris.es)... 130.206.1.5
Conectando con apache.rediris.es (apache.rediris.es)[130.206.1.5]:80... conectado.
Peticin HTTP enviada, esperando respuesta... 200 OK
Longitud: 7200529 (6,9M) [application/x-gzip]
Grabando a: httpd-2.2.22.tar.gz
100%[======================================>] 7.200.529 363K/s en 14s
2012-07-17 13:03:01 (492 KB/s) - httpd-2.2.22.tar.gz guardado [7200529/7200529]
Ls muy lmortunte comrobur que hemos hecho todo en el dlrectorlo creudo uru ello.
Ahoru debemos descomrlmlr el codlgo
tar zxpf httpd-2.4.6.tar.gz
Y comrobumos que exlste el dlrectorlo.
-& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
F%(&:":) C1:!B$
Euy muchus munerus de lnstulur Auche. Se ueden eleglr modulos, conflguruclon y rutus. Nosotros vumos u usur unu que utlllzu LSC (Lynumlc Shured
Cbjects). Lsto es unu conflguruclon de Auche que ermlte unudlr luego modulos sln necesldud de recomllur todo el servldor. Puru nuestro curso es
vltul. Ll unlco ero es un descenso cusl lmercetlble del rendlmlento or lo que consldero muy recomenduble usur este metodo.
Adems vumos u uctlvur un ur de modulos. Ms udelunte estudluremos uru que slrven.
Lo rlmero es movernos ul dlrectorlo donde estn los urchlvos con el codlgo fuente
cd /usr/local/src/webserver/httpd-2.2.22
Ahoru vumos u borrur revlus comlluclones de Auche que hublerumos hecho. Como en nuestro cuso es lu rlmeru nos dur un error
make distclean
Ahoru yu odemos conflgurur lu lnstuluclon como querumos nosotros
./configure --prefix=/www --enable-shared=max --enable-wmodule=rewrite --enable-module=so
Ll refljo es el dlrectorlo donde se lnstulur. Se uede conflgurur cuulquleru, ero nosotros usuremos uno llumudo www en lu rulz. Lo dems son
uctlvuclones de modulos uru oder usur LSC.
Ahoru comllumos los y construlmos el lnstuludor de nuestro servldor
make
y desues lo lnstulumos
make install
Ahoru vumos u creur dos enluces uru oder usur los comundos de Auche desde cuulquler lugur
46 -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
ln -s /www/bin/apachectl /usr/bin/apachectl
ln -s /www/bin/apachectl /usr/sbin/apachectl
Yu odemos urruncur Auche
apachectl start
Ahoru ubrlmos el nuvegudor web y curgumos lu glnu uru ver que todo hu ldo blen. Lscrlblmos htt:jjloculhost y debemos encontrur lu glnu que
one "lt vorks!'
Podemos udems colocur ulgun urchlvo E1ML y comrobur que se muestru. Puru ello lremos u htt:jjloculhostjnombre_urchlvo.html
Conflguru e lnstulu Auche en tu mqulnu vlrtuul slgulendo los usos lndlcudos y comruebu el ucceso desde lu mqulnu vlrtuul y desde
lu mqulnu unfltrlon.
P:!$) C1:!B$ :7&, :)):%!:6"$
Lo rlmero que huremos ser creur un urchlvo en lu curetu de scrlts de lnlclo.
sudo gedit /etc/init.d/apache2
en el urchlvo, eseclflcumos que hubr que hucer en los cusos de urrunque, urudu y relnlclo del slstemu.
#!/bin/sh
case "$1" in
start)
-& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
echo "Arrancando Apache ..."
# Si has instalado Apache en otra ruta, pon la correcta
/www/bin/apachectl start
;;
stop)
echo "Deteniendo Apache ..."
# Si has instalado Apache en otra ruta, pon la correcta
/www/bin/apachectl stop
;;
graceful)
echo "Reiniciando Apache suavemente"
# Si has instalado Apache en otra ruta, pon la correcta
/www/bin/apachectl graceful
;;
restart)
4K -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
echo "Reiniciando Apache ..."
# Si has instalado Apache en otra ruta, pon la correcta
/www/bin/apachectl restart
;;
esac
exit 0
Lchu un vlstuzo ul scrlt y sl no entlendes ulgo consultulo en lnternet rlmero y luego ul rofesor. Que es gruceful? uru que se usu
uqul?
Ahoru es necesurlo que cumblemos los ermlsos del urchlvo uru oder ejecuturlo
sudo chmod u+x /etc/init.d/apache2
Ll ultlmo uso es unudlr Auche u lus tureus de urrunque del slstemu.
sudo update-rc.d apache2 defaults
Ln cuso de que qulslerumos hucer que dejuru de urruncur uutomtlcumente ul lnlclur el slstemu
sudo update-rc.d -f apache2 remove
1en en cuentu que esto no ellmlnu el scrlt, solo el hucerlo uuto urruncuble.
, -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
uhoru urruncumos uuche (slgue funclonundo el comundo de untes.
apachectl start
y odemos relnlclur lu mqulnu.
1umblen funclonurlu uhoru lnvocur ul scrlt uru lnlclur, urur, relnlclur, etc. lu mqulnu. Pongo todus lus ordenes juntus orque creo que es cluro.
sudo /etc/init.d/apache2 start
sudo /etc/init.d/apache2 stop
sudo /etc/init.d/apache2 restart
sudo /etc/init.d/apache2 graceful
Euz que tu servldor con Auche urrunque uutomtlcumente ul lnlclur lu mqulnu.
4F -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
lnstulur un servldor con LAMP
Ahoru vumos u emezur con unu %7$*: 9DE7#%: *#)&7:" u lnstulur un servldor con Auche, MySQL y PEP yu que como hemos comentudo es lu oclon
ms hubltuul. Nl MySQL nl PEP son necesurlos uru montur un servldor de ullcuclones web.
Lstu vez vumos u hucerlo con lu oclon ms fcll uru ver dlferentes lnstuluclones. Ln el cultulo slgulente veremos lus conflguruclones necesurlus uru
usegurur nuestro servldor.
Puru usectos de muyor segurldud en MySQL y PEP consultu los modulos del clclo ul resecto.
Lo rlmero es descurgur e lnstulur tusksel.
sudo apt-get install tasksel
Luego lnstulumos dlrectumente todo el uquete y segulmos lus lnstrucclones.
sudo tasksel install lamp-server
Puru robur Auche slmlemente ubrlmos el nuvegudor y consultumos loculhost.
Puru robur PEP, creumos un urchlvo ruebu.h que solo contengu "<?h hlnfo(), ?>'
Puru robur MySQL odemos usur cuulquler metodo: conecturnos, lnstulur PEPMyAdmln, etc.
Sl queremos lnstulur PEPMyAdmln escrlblmos
apt-get install phpmyadmin
-& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
y luego curgumos htt:jjloculhostjhmyudmln
Ll dlrectorlo en el que se hu lnstuludo Auche es
/etc/apache2
Colu unu nuevu mqulnu vlrtuul e lnstulu el servldor LAMP. Pruebu el correcto funclonumlento de todo.
6M -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
Servldores de Allcuclones
Un servldor de ullcuclones es un uquete softwure que roorclonu servlclos u lus ullcuclones como ueden ser segurldud, servlclos de dutos,
soorte uru trunsucclones, bulunceo de curgu y gestlon de slstemus dlstrlbuldos.
Ll termlno se ucuno uru servldores de lu lutuformu 'uvu en su verslon Lnterrlse Ldltlon, ero en lu uctuulldud se extlende u muchus otrus
tecnologlus.
Nosotros nos centruremos en 1omcut, un servldor de ullcuclones 'uvu creudo or Auche. Lxlsten muchos otros como lu lntegruclon de .NL1 en
servldores de Mlcrosoft, lntegruclon de PEP en un servldor uru tener servldores de ullcuclones PEP, 2end Server, tumblen uru PEP, 8urrucudu,
vebLoglc de l8M, etc.
Auche 1omcut es un servldor de ullcuclones creudo uru ulojur Servlets y 'uvu Server Puges ('SP). 1omcut es grutulto y de codlgo ublerto ero no
tlene nudu que envldlur u otrus soluclones comerclules. Lu verslon que usuremos nosotros es lu ,.
Ll funclonumlento de un servldor de ullcuclones necesltu de un servldor web. Muchus veces vlenen en el mlsmo uquete, ero reulmente son dos
urtes dlferencludus.
Cuundo un cllente huce unu etlclon ul servldor web, este trutu de gestlonurlo, ero huy muchos elementos con los que no sube que hucer. Aqul entru
en juego el servldor de ullcuclones, que descurgu ul servldor web de lu gestlon de determlnudos tlos de urchlvo, en nuestro cuso servlets y 'SP.
Sl un cllente huce unu etlclon ul servldor ldlendo un 'SP, estu llegu ul servldor veb que lee un urchlvo ML que le roorclonu el servldor de
ullcuclones y determlnu que el urchlvo lo gestlonur el servldor de ullcuclones.
Ln el urchlvo ML tumblen se lncluye lu dlrecclon del servldor de ullcuclones y el servldor web le envlu lu etlclon medlunte E11P.
-& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
=3'5%'%132%&
Ll termlno .01:&1&-08 es otro
bustunte umblguo como yu nos
sucedlo con '&8>*-08. Ln
muchos cusos se usu uru
referlrse ul rolo servldor de
ullcuclones e lncluso ul
servldor web. Sln emburgo, lu
uceclon ms extendldu es
otru.
Euy que tener en cuentu que
los concetos de los que
estumos hublundo surgleron
rlnclulmente de 'zLL.
Los contenedores en los
servldores de ullcuclones son
unu formu de ulslur lu ejecuclon
de cudu ullcuclon o de cudu
#%(&:%!#: de unu ullcuclon del resto de lnstunclus y de otrus ullcuclones. Puru cudu ejecuclon roorclonun segurldud, soorte uru trunsucclones,
conexlon remotu y lu gestlon de los recursos reclsos uru lu ejecuclon de lu ullcuclon.
Ln referenclu u lu lmugen unterlor, convlene concretur ulgunos concetos:
! Ll servldor 'zLL es el rogrumu que roorclonu contenedores L'8 y veb.
! Ll contenedor Lnterrlse 'uvu8euns (L'8) se encurgu de lu ejecuclon de los L'8s.
! Ll contenedor web se encurgu de lu ejecuclon de servlets y 'SPs.
63 -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
! Ll contenedor del cllente de lu ullcuclon encurgu de lu ejecuclon de los comonentes de lus ullcuclones en lu mqulnu del cllente.
! Ll contendor de ulets se encurgu de ejecutur los ulets en el cllentes. Lst comuesto or un nuvegudor web y un lugln 'uvu.
Los contenedores de 1omcut se denomlnun Cutullnu.
-& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
1omcut
1omcut es un servldor de ullcuclones que uede funclonur or sl mlsmo. Le hecho es cuuz de rocesur etlclones en E11P y servlr urchlvos E1ML con
bustunte eflclenclu, ero no tun blen como lo huce Auche. Cenerulmente sl lo que queremos es un servldor web con funclonulldud udlclonul lo mejor
es dlsoner de umbos servldores trubujundo conjuntumente, ero uru cusos donde cusl todo vu u ser loglcu en juvu con 1omcut funclonundo
uutonomumente es suflclente.
Ln este rlmer ucercumlento u 1omcut lo lnstuluremos en unu mqulnu vlrtuul nuevu. Ms udelunte veremos como lntegrurlo con Auche uru que cudu
cuul se encurgue de hucer lo que gestlonu mejor. Ln ese cuso, Auche reclblr todus lus etlclones y envlur u 1omcut lo que le corresondu u el.
Ln unu mqulnu vlrtuul de 'uvu solo uede ejecuturse unu lnstunclu de 1omcut.
Que huce lu mqulnu vlrtuul de 'uvu? Ln que se dlferenclu de lus mqulnus vlrtuules que se creun con rogrumus como Crucle vlrtuul
8ox o vMwure?
>'&5(*('13 A(7(
Lxlsten dos verslones de 'uvu muy extendldus en entornos Llnux. Unu es lu oflclul de Crucle y lu otru se denomlnu Cen'Ll y es un verslon de codlgo
ublerto.
Q1$%R?S
Lstu verslon es muy recomenduble cuundo se vu u utlllzur con otros slstemus de codlgo ublerto o de softwure llbre or lo que nosotros 7(:)$9,( $(&:
#%(&:":!#<%.
Actuullzumos los reosltorlos e lnstulumos 'uvu
66 -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
sudo apt-get update
sudo apt-get install openjdk-7-jdk
comrobumos lu verslon de 'uvu
java -version
lo que deberlu mostrur ulgo como
java version "1.7.0_09"
OpenJDK Runtime Environment (IcedTea7 2.3.3) (7u9-2.3.3-0ubuntu1~12.04.1)
OpenJDK Client VM (build 23.2-b09, mixed mode, sharing)
Euy que estublecer lus vurlubles de entorno de 'uvu
sudo gedit /etc/environment
Y unudlmos ul rlncllo lus rutus de lnstuluclon de 'uvu: el rlmero es el dlrectorlo donde estn juvu y juvuc y el segundo el de jre.
JAVA_HOME=/usr/lib/jvm/java-7-openjdk-i386
JRE_HOME=/usr/lib/jvm/java-7-openjdk-i386/jre
Y en el mlsmo urchlvo unudlmos ul flnul del uth
:$JAVA_HOME:$JRE_HOME
-& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
Ll urchlvo entero deberlu quedur urecldo u esto:
JAVA_HOME=/usr/lib/jvm/java-7-openjdk-i386
JRE_HOME=/usr/lib/jvm/java-7-openjdk-i386/jre
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:$JAVA_HOME:$JRE_HOME"
Aunque no es estrlctumente necesurlo, relnlclumos lu mqulnu vlrtuul.
R:*: +$ Q):!"$
1omcut es un servldor de ullcuclones rogrumudus en 'uvu or lo que untes de lnstulur 1omcut, debemos tener 'uvu lnstuludo y funclonundo.
Lo rlmero es unudlr unos reosltorlos que contlenen el lnstuludor de 'uvu
sudo add-apt-repository ppa:webupd8team/java
Actuullzumos el softwure de los reosltorlos con
sudo apt-get update
Puru luego lnstulur 'uvu
sudo apt-get install oracle-java7-installer
Podemos comrobur que tengumos funclonundo lu verslon correctu
java -version
6K -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
Lebe uurecer en untullu ulgo slmllur u esto:
java version "1.7.0_05"
Java(TM) SE Runtime Environment (build 1.7.0_05-b05)
Java HotSpot(TM) Client VM (build 23.1-b03, mixed mode)
Por ultlmo, odemos comrobur el correcto funclonumlento yendo u htt:jjwww.juvu.comjesjdownloudjlnstulled.js en el nuvegudor web.
Ahoru huy que estublecer lus vurlubles de entorno uru que 1omcut uedu encontrur 'uvu. Puru ello edltumos el urchlvo &1>*801@&1:
sudo gedit /etc/environment
Y unudlmos ul rlncllo lus rutus de lnstuluclon de 'uvu: el rlmero es el dlrectorlo donde estn juvu y juvuc y el segundo el de jre.
JAVA_HOME=/usr/lib/jvm/java-7-oracle/
JRE_HOME=/usr/lib/jvm/java-7-oracle/jre/
Y en el mlsmo urchlvo unudlmos ul flnul del uth
:$JAVA_HOME:$JRE_HOME
Ll urchlvo entero deberlu quedur urecldo u esto:
JAVA_HOME=/usr/lib/jvm/java-7-oracle/
JRE_HOME=/usr/lib/jvm/java-7-oracle/jre/
, -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:$JAVA_HOME:$JRE_HOME"
Aunque no es estrlctumente necesurlo, relnlclumos lu mqulnu vlrtuul.
>'&5(*(2 9)(,?% B3;,(5
Como comentumos en lu lnstuluclon munuul, es necesurlo tener 'uvu lnstuludo y conflgurudo uru el correcto funclonumlento de 1omcut. Los usos son
los mlsmos que yu vlmos.
Ahoru lnstulumos 1omcut
sudo apt-get install tomcat7
OQIC: Ln ulgunos cusos, 1omcut no
vu u funclonur hustu que no
conflguremos lus vurlubles de
entorno como se exllcu u
contlnuuclon.
Ahoru odemos ubrlr un nuvegudor
web y ucceder u
htt:jjloculhost:8c8c
Nos muestru lu slgulente untullu en
lu que es muy lmortunte el
slgulente rrufo:
P0@./:5 >&:&8/1' @*+N: 2& ()&/'&-
:0 )&/81 :N/: :N*' 'H':&@ *1':/1.& 0<
6F -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
P0@./: *' *1':/))&- D*:N 9"P"\Le"^T]WU *1 f,'8f'N/8&f:0@./:5 /1- 9"P"\Le"^b"7U *1 f>/8f)*2f:0@./:5d <0))0D*1+ :N& 8,)&' <80@ f,'8f'N/8&f-0.f:0@./:5g
.0@@01f[SeeLeh=:`:=+V=
Ln el que nos lndlcun lu ublcuclon de dos vurlubles de entorno muy necesurlus en lu conflguruclon y uso de 1omcut. Ln lu lnstuluclon munuul, umbus
uunturlun ul dlrectorlo en el que descomrlmlmos 1omcut. vumos u estublecerlus como vurlubles de entorno:
sudo gedit /etc/environment
en el unudlmos (u contlnuuclon de lus de 'uvu)
CATALINA_HOME=/usr/share/tomcat7
CATALINA_BASE=/var/lib/tomcat7
Y lus unudlmos ul uth, quedurlu como slgue:
JAVA_HOME=/usr/lib/jvm/java-7-openjdk-i386
JRE_HOME=/usr/lib/jvm/java-7-openjdk-i386/jre
CATALINA_HOME=/usr/share/tomcat7
CATALINA_BASE=/var/lib/tomcat7
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:$JAVA_HOME:$JRE_HOME:
$CATALINA_HOME:$CATALINA_BASE"
LANGUAGE="es:en"
LANG="es_ES.UTF-8"
-& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
LC_NUMERIC="es_ES.UTF-8"
LC_TIME="es_ES.UTF-8"
LC_MONETARY="es_ES.UTF-8"
LC_PAPER="es_ES.UTF-8"
LC_IDENTIFICATION="es_ES.UTF-8"
LC_NAME="es_ES.UTF-8"
LC_ADDRESS="es_ES.UTF-8"
LC_TELEPHONE="es_ES.UTF-8"
LC_MEASUREMENT="es_ES.UTF-8"
CA1ALlNA_ECML lndlcu el dlrectorlo de lnstuluclon de 1omcut.
CA1ALlNA_8ASL lndlcu el dlrectorlo de unu lnstunclu de 1omcut. Sl tenemos ms de unu lnstunclu, CA1ALlNA_8ASL ser dlferente uru cudu unu. Ln
ulgunus lnstuluclones (uunque no en estu) umbus vurlubles de entorno uuntun ul mlsmo dlrectorlo.
Relnlclumos lu mqulnu uru que lus vurlubles se curguen.
Ll urchlvo que curgu 1omcut or defecto es f>/8f)*2f:0@./:5fD&2/(('f[]]Pf*1-&`=N:@)
1omcut est lnstuludo en f&:.f:0@./:5
Como odemos ver estu verslon de 1omcut yu lo lnstulu como servlclo y huce que se lnlclu uutomtlcumente ul encender lu mqulnu. Ll urchlvo donde
est conflgurudo esto es mucho ms comlejo que el que hlclmos nosotros en lu lnstuluclon munuul, uedes consulturlo en
RM -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
gedit /etc/init.d/tomcat7
>'&5(*('13 )(C"%5%& (1+,+3'(*%&
Yu tenemos 1omcut lnstuludo y funclonundo, ero como udlmos leer en lu glnu de lnlclo or defecto de 1omcut, no se hun lnstuludo nl lu
documentuclon, nl los ejemlos nl lu ullcuclon de udmlnlstruclon. Ln un servldor de roducclon estu uede ser lu conflguruclon correctu, ero uru
nuestro rooslto dldctlco es muy recomenduble lnstulur los uquetes.
sudo apt-get install tomcat7-docs
sudo apt-get install tomcat7-examples
sudo apt-get install tomcat7-admin
Ahoru odemos ucceder u cudu uno de ellos medlunte el corresondlente enluce de lu glnu de lnlclo.
lnstulu 1omcut y los uquetes udlclonules en un mqulnu vlrtuul nuevu.
Yu he comentudo untes como vlene uureclendo en lus notlclus tecnologlcus que 'uvu en lnseguro en lu red y que se debe desuctlvur en
los nuvegudores. Lsto uede urecer el fln de 'uvu, ero. desuctlvu 'uvu en tu nuvegudor y ruebu u ejecutur los ejemlos que
ucubumos de lnstulur y uhoru que?
Sl lnchus en el enluce que uurece uru ver el codlgo de un ejemlo vers que contlene codlgo ero sl muestrus el codlgo de lu glnu
resultunte de ejecutur el ejemlo en el nuvegudor odrs observur que no, que lndlcu esto?
-& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
D&"(2+3& 1% B3;,(5
Lo rlmero es conflgurur los usuurlos de 1omcut. Puru ello debemos edltur el urchlvo :0@./:g,'&8'=`@) que est en el dlrectorlo .01<
sudo gedit /etc/tomcat7/tomcat-users.xml
Lo que estumos huclendo es unudlr un usuurlo udmlnlstrudor usl que el flchero, en lu urte flnul deberlu quedur urecldo u lo slgulente, con el nombre
de usuurlo y contrusenu que querumos, or suuesto.
<tomcat-users>
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager"/>
<role rolename="admin-gui"/>
<role rolename="admin-script"/>
<role rolename="admin"/>
<user username="sergio" password="sergio" roles="manager-gui,admin-gui,manager,admin,manager-
script,admin-script"/>
</tomcat-users>
R3 -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
Con este usuurlo y contrusenu que yu hemos creudo odemos curgur el munuger, desde lu glnu de lnlclo de 1omcut o dlrectumente desde
htt:jjloculhost:8c8cjmunugerjhtml
Se recomlendu robur ejemlos de 1omcut uru ver que todo vuyu blen slgulendo el enluce en lu glnu rlnclul o en htt:jjloculhost:8c8cjexumlesj
>'+,+(2 4 )(2(2 B3;,(5
Puru lnlclur 1omcut usuremos
sudo /etc/init.d/tomcat7 start
sudo /etc/init.d/tomcat7 stop
sudo /etc/init.d/tomcat7 restart
segun lo que querumos hucer.
Sl qulslerumos que funclonuru como servlclo, serlu:
sudo service tomcat7 start
y uru ururlo
sudo service tomcat7 stop
-& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
>'&5(*('13 B3;,(5 1% E32;( ;('"(*
C" #;7:" E7$ !,% ": #%(&:":!#<% +$ C1:!B$4 ($ ,9#&$ $(&: ,1!#<% 1,) $" 1,!, &#$91, +#(1,%#6"$4 ($ 9:%&#$%$ :E7M 1,) (# :";7#$% E7#$)$ !,%(7"&:)", 1$),
%, ($ #91:)&#)D8
Ahoru yu estumos llstos uru lnstulur 1omcut. Creumos el dlrectorlo y nos movemos u el.
mkdir -p /opt/tomcat
cd /opt/tomcat/
Ahoru descurgumos 1omcut. 1en en cuentu que lu dlrecclon slgulente vu cumblundo u medldu que sulen nuevus verslones de 1omcut. Sl no se encuentru
lo mejor es en un nuvegudor web lr u htt:jjuuche.redlrls.esjtomcutjtomcut,j y buscur el urchlvo equlvulente con lus nuevus verslones.
wget http://apache.rediris.es/tomcat/tomcat-7/v7.0.34/bin/apache-tomcat-7.0.34.tar.gz
y lo descomrlmlmos
tar zxpf apache-tomcat-7.0.34.tar.gz -C /opt
A veces 1omcut no reconoce lus vurlubles de entorno de 'uvu que unudlmos en el unto unterlor. Unu formu de usegururnos de que lus encuentru es
unudlrlos en el urchlvo ./:/)*1/='N que est en el dlrectorlo de 1omcut en lu curetu bln.
sudo gedit /opt/apache-tomcat-7.0.34/bin/catalina.sh
Yu unudlmos lus dos vurlubles detrs de lu rlmeru llneu. Ll urchlvo quedur urecldo u esto. LS1C NC LS NLCLSARlC, SCLC LN CASC LL QUL NC LAS
LLA LL C1RA lCRMA:
#!/bin/sh
R6 -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
JAVA_HOME=/usr/lib/jvm/java-7-oracle/
JRE_HOME=/usr/lib/jvm/java-7-oracle/jre/
#...
#...
#...
vumos u creur los enluces uru oder urruncur y urur 1omcut con ms fucllldud
ln -s /opt/apache-tomcat-7.0.34/bin/startup.sh /usr/bin/tstartup
ln -s /opt/apache-tomcat-7.0.34/bin/shutdown.sh /usr/bin/tshutdown
Ln este unto y &):( :)):%!:) I,9!:& odemos robur sl funclonu yendo u htt:jjloculhost:8c8cj en el nuvegudor veb.
Yu tendrlumos lnstuludo 1omcut, ero huy un ur de cosus que debemos hucer untes de termlnur todo.
F(,%2 B3;,(5 ("53 (22(',(/*%
Lo rlmero que huremos ser creur un urchlvo en lu curetu de scrlts de lnlclo.
sudo gedit /etc/init.d/tomcat7
en el urchlvo, eseclflcumos que hubr que hucer en los cusos de urrunque, urudu y relnlclo del slstemu.
# autoarranque de Tomcat
-& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
case $1 in
start)
sh /opt/apache-tomcat-7.0.34/bin/startup.sh
;;
stop)
sh /opt/apache-tomcat-7.0.34/bin/shutdown.sh
;;
restart)
sh /opt/apache-tomcat-7.0.34/bin/shutdown.sh
sh /opt/apache-tomcat-7.0.34/bin/startup.sh
;;
esac
exit 0
Ahoru es necesurlo que cumblemos los ermlsos del urchlvo uru oder ejecuturlo
RK -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
sudo chmod 755 /etc/init.d/tomcat7
Ll ultlmo uso es creur dos enluces slmbollcos uru enluzur reulmente el urchlvo con lus curetus de lnlclo.
sudo ln -s /etc/init.d/tomcat7 /etc/rc1.d/K99tomcat
sudo ln -s /etc/init.d/tomcat7 /etc/rc2.d/S99tomcat
Cuundo hlclmos Auche uuto urruncuble este ultlmo uso lo hlclmos de muneru dlferente. Lsu muneru es ms uctuul y comodu, ero he lncluldo lu
unterlor como unu muestru yu que no todos los slstemus UNl y derlvudos lncluyen lu otru. Le cuulquler formu tumblen odrlumos usurlu en este cuso:
sudo update-rc.d tomcat7 defaults
Puru qultur el servlclo
sudo update-rc.d -f tomcat7 remove
lnstulu 1omcut en unu mqulnu vlrtuul nuevu ero en lu curetu jvurjtomcut. Euz que urrunque uutomtlcumente cudu vez que se lnlclu
lu mqulnu y ruebu el ucceso desde dentro y desde fueru de lu mqulnu vlrtuul.
, -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
Allcuclones web
Unu ullcuclon web se dlferenclu de unu estndur en que se uccede u ellu u truves de unu red como lnternet o unu lntrunet or ejemlo. Ln muchos
cusos es unu ullcuclon que se escrlbe en lenguujes soortudos or los nuvegudores web (or ejemlo 'uvuscrlt E1ML) y que necesltu de un
nuvegudor web uru ejecuturse.
Ll ejemlo ms senclllo que se nos ocurre de unu ullcuclon web es un rogrumu que ermltu ucceder u dutos de unu emresu desde el exterlor de
estu. Aqul yu quedu utente el rlnclul roblemu que tlenen lus ullcuclones web: lu ($;7)#+:+. Muchus veces el roblemu es lu necesldud de
encontrur un comromlso entre lu segurldud y lu eflclenclu en lu ullcuclon, demusludu segurldud uede rulentlzur el uso, uumentur el trflco, etc.
Lus rlnclules +$(*$%&:T:( de este tlo de ullcuclones son lus que se derlvun del uso de unu red y del ucceso slmultneo de vurlos (u veces muchos)
usuurlos. Lus rlnclules *$%&:T:( son el oder usur un nuvegudor web como cllente (ulgo de lo que dlsonen todos los ordenudores en lu uctuulldud) y
lu slmllflcuclon de lus uctuullzuclones or no tener que uctuullzur los ordenudores uno u uno. vumos u concretur un oco ms:
U$%&:T:(:
! No es necesurlo nlngun tlo de dlstrlbuclon, lnstuluclon o uctuullzuclon comlejo de lu ullcuclon. Slmlemente el uso de un nuvegudor
comutlble nos ermltlr usur lu ullcuclon. Muchus veces se creu lu ullcuclon uru un unlco nuvegudor web lo que en ml olnlon es un
error. No es necesurlo cubrlr todo el esectro ero dur ul menos dos o tres oclones serlu recomenduble.
! No se necesltun mqulnus cllentes eseclulmente otentes. Prctlcumente cuulquler ordenudor en lu uctuulldud es cuuz de ejecutur un
nuvegudor web. Sl lu ullcuclon es ms esudu en el cllente se ueden necesltur recursos un oco ms ultos.
! Son fclles de lntegrur con otrus funclonulldudes de servldor como el correo electronlco.
! Cenerulmente ermlten ellmlnur los roblemus derlvudos del uso de dlferentes lutuformus lnformtlcus (urqultecturus, slstemus
oerutlvos, etc.).
! Ll uso de E1ML uumentu mucho lu funclonulldud que uede ejecuturse nutlvumente en un nuvegudor web.
?$(*$%&:T:(:
! Cenerulmente lus lnterfuces de usuurlo de lus ullcuclones web son menos lntultlvus y tlenen un comortumlento eor que lus clslcus.
RF -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
! Lus tecnologlus web son muy dlnmlcus y cumbluntes or lo que odemos usur ulgunu funclonulldud que desuurezcu o se modlflque
drstlcumente obllgndonos u rehucer lu lnterfuz (llush en un futuro no muy lejuno?)
! Lu uusenclu de estndures en urchlvos "de oflclnu' uede dlflcultur el comurtlr dutos e lnformuclon.
! Leenden totulmente del correcto funclonumlento de lu red (lnternet yjo lntrunet).
! Lesde el unto de vlstu de un usuurlo es reocuunte lu rlvucldud y segurldud de sus dutos. Uno de los rlmeros ejemlos de esto es el
correo web, ero en lu uctuulldud todus lus ullcuclones de Coogle y muchus otrus como lucebook controlun ubsolutumente todo lo
que huces or lo que lu uusenclu de rlvucldud es notuble.
Lu llstu de ventujus y desventujus vlstu es un oco umblguu. Puru cudu cuso lensu en lo que lmllcu lu uflrmuclon e lntentu buscur un
ejemlo que suongu unu exceclon.
Como yu hemos comentudo untes unu de lus rlnclules reocuuclones u lu horu de desurrollur unu ullcuclon web debe ser lu segurldud. Ln muchos
cusos se deben roteger tunto #%=,)9:!#<% !)M&#!: +$ ": $91)$(: como los +:&,( 1)#*:+,( +$ ",( 7(7:)#,(.
A lu horu de lmlementur lu segurldud de unu ullcuclon web debemos tener en cuentu clnco reus:
! Lu :7&$%&#=#!:!#<% de los usuurlos: el uso de un metodo efectlvo uru usegurur que se conecten los usuurlos uutorlzudos y dlflcultur lu
suluntuclon de ldentldudes es ulgo rlmordlul. Ls unu ullcuclon ublertu u todo el mundo? se ueden reglstrur los usuurlos or sl
mlsmos?
! Lu :7&,)#L:!#<% de cudu usuurlo: muchus veces deben exlstlr dlferentes tlos de usuurlos y no todos los usuurlos deben oder ucceder u
todos los dutos o reullzur todus lus oeruclones (consultu, lnserclon, modlflcuclon o ellmlnuclon) sobre los dutos. Lu ldentlflcuclon y
creuclon de dlferentes roles es un usecto u tener en cuentu desde lus rlmerus etuus de dlseno de lu ullcuclon.
! Lu ;$(&#<% +$ ",( )$!7)(,(: es necesurlo roteger los dutos tunto cuundo se encuentrun en lu buse de dutos como cuundo se
encuentrun en trnslto entre lu mqulnu cllente y el servldor. Cenerulmente se evltun lus conexlones dlrectus de formu remotu (en unu
red ublertu) u lu buse de dutos. Adems es muy lmortunte lu encrltuclon de los dutos tunto en lu buse de dutos como en lus
comunlcuclones. Los dutos se utlllzun como ejemlo de recurso, ero es ullcuble u otros tlos.
! Lu $%&):+: +$ +:&,(: otro usecto u tener en cuentu es que uede escrlblr el usuurlo en cudu unto de entrudu de dutos. Cuunto ms
llmltemos los curucteres y tlo de entrudu que uedun reullzur los usuurlos ms fcll ser lmedlr que lu gente uccedu u untos no
deseudos de nuestru ullcuclon e lncluso u otrus ullcuclones de lu mlsmu red.
-& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
! C7+#&,)M:( K )$;#(&),(: Puru oder controlur y correglr lus brechus en lu segurldud es muy lmortunte oder suber que hu usudo. Por
ello debemos tener metodos de reglstro (or ejemlo urchlvos )0+) de todo lo que sucedu en nuestru ullcuclon. Ll tumuno de los
urchlvos debe ermltlrnos revlsur sltuuclones de huce bustunte tlemo yu que muchus veces un ugujero en lu segurldud turdu en
detecturse.
Aunque no conocemos como ufrontur cudu roblemu en detulle, yu deberlumos tener conoclmlentos como uru lunteur soluclones
uru lus reus dellcudus que ucubumos de ver. Comentu un escenurlo que controle los roblemus generudos en cudu reu.
Puru controlur todos estos roblemus huy dos )$!,9$%+:!#,%$( bslcus:
! -)7$6:(: cuunto ms robemos unu ullcuclon menos fullos tendr. Sl lu ullcuclon no es muy equenu, es rctlcumente lmoslble
evltur todos los ugujeros de segurldud ero huy que lntentur mlnlmlzurlos. Lo ldeul es tener unu ersonu o un equlo que seun lo que
hucen lntentundo utucur lu ullcuclon. Lste es el motlvo or el que muchos huckers hun termlnudo trubujundo uru comunlus muy
otentes.
! Usu un murco de trubujo (V):9$A,)N): Sl tenemos un equlo de trubujo no queremos que cudu mlembro "hugu lu guerru or su ludo'.
1odos los lntegruntes deben usur uno o vurlos metodos comunes uru gestlonur lu segurldud de lu ullcuclon. Un murco comun
mejorur enormemente lu segurldud de lu ullcuclon. Un murco de trubujo uru ullcuclones web debe tener en cuentu los slgulentes
usectos: erslstenclu de dutos, gestlon de seslones y uutentlcuclon de usuurlos, segurldud, uso de cuches, uso de luntlllus (con tlos
de dutos, etc.) e lnclulr unu lnterfuz de udmlnlstruclon.
Aunque escuu ul contenldo del curso, en estu glnu uedes consultur estos usectos sobre los frumeworks de ullcuclones web y ver unu llstu con
muchos de ellos.
G&52",5"2(
Lu estructuru de unu ullcuclon web es $E7#*:"$%&$ : ": +$ 7% ($)*#+,) A$6 como vlmos ul rlncllo del temu. Lu ullcuclon debe funclonur en todos los
nlveles or lo que tendremos unu estructuru en cuus.
Lu ms comun es en tres cuus (uunque lu del medlo uede estur subdlvldldu como yu comentumos): resentuclon, ullcuclon y dutos.
KM -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
Ctru formu de ver unu ullcuclon web es en dos cuus: el cllente y el servldor. Leendlendo de donde se reullzu lu muyor urte del trubujo lu ullcuclon
ser de cllente o de servldor esudo. Ln lu uctuulldud, con lu rollferuclon de dlsosltlvos con ocu cuucldud y otenclu (movlles, tubletus, netbooks,
etc.) exlsten muchus ullcuclones esudus en el servldor, ero cuundo lu ullcuclon requlere muchu loglcu se tlende u dlstrlbulr el trubujo en los cllentes
uru mejorur el rendlmlento.
Lu estructuru de unu ullcuclon web tumblen se usu uru referlrse u lu +#(&)#67!#<% $% +#)$!&,)#,( de todos los elementos que comonen dlchu
ullcuclon. Aunque ms udelunte volveremos sobre este unto es lmortunte enfutlzur que lu estructuru de dlrectorlos que usemos debe estur
contenldu dentro de un unto de lnlclo y que no debe revelur usectos sobre lu dlstrlbuclon del resto de lu mqulnu.
H%&,2+)532 1% 1%&)*+%I"%
Ll descrltor de desllegue de unu ullcuclon web es un urchlvo de conflguruclon en el contenedor o servldor de ullcuclones. Ln 'zLL este urchlvo se
escrlbe usundo slntuxls ML. Lescrlbe como un comonente, modulo o ullcuclon debe deslegurse eseclflcundo usectos como lu segurldud, lus
oclones del contenedor y usectos de lu conflguruclon.
Lxlste udems un descrltor de desllegue rolo de cudu servldor web. Por ejemlo en 1omcut, este otro descrltor se encuentru en
<1CMCA1_ECML>jconfjweb.xml. Ln el cuso de lu lnstuluclon vlstu unterlormente est en jotjtomcutjuuchetomcut,.c.zj confjweb.xml.
Sl estumos usundo un entorno de desurrollo (or ejemlo Lcllse) el descrltor de desllegue lo creu el rolo entorno, ero slemre es convenlente
revlsurlo uru usegururnos de que utlllzu lus oclones que querumos.
Puru lus ullcuclones web 'zLL debe llumurse web.xml y ublcurse en el dlrectorlo vL8_lNl en el dlrectorlo rulz de lu ullcuclon. Ll esquemu ul que debe
ujusturse el descrltor de desllegue se uede consultur en lu glnu corresondlente de juvu.
Podemos ver un buen ejemlo de desllegue de ullcuclon web uqul. 1en en cuentu que sl lnchus sobre unu etlquetu te mostrur unu breve
exllcuclon de su uso.
Se ueden consultur ejemlos ms comletos desues de lnstulur 1omcut en lus slgulentes rutus:
! <1CMCA1_ECML>jwebusjjsexumlesjvL8lNljweb.xml
! <1CMCA1_ECML>jserverjwebusjmunugerjvL8lNljweb.xml
6 -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
vumos u royectur lu glnu vlstu untes y u dlscutlr sobre lu estructuru y dlferentes elementos del descrltor de desllegue que nos
onen como ejemlo. Puru ello determlnu revlumente que lndlcu cudu unu de lus etlquetus de segundo nlvel (los hljos de <webu>)
K3 -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
1emu z: Admlnlstruclon de servldores web
6 -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
Conflguruclon del servldor web
Ln Auche, lu conflguruclon or defecto est en un urchlvo que se llumu N::(-=.01<. Al lnstulur Auche se creu un dlrectorlo conf donde tenemos ms
urchlvos de ejemlo de conflguruclon. Eustu el nombre y lu rutu del urchlvo de conflguruclon en Auche se ueden cumblur. Ln lu lnstuluclon que
hlclmos se encuentru en
/etc/apache2/httpd.conf
Antes de hucer nlngunu modlflcuclon sobre este urchlvo debemos hucer unu colu de segurldud del mlsmo (uqul vemos el del ejemlo ero es ullcuble
u cuulquler urchlvo de conflguruclon).
cd /etc/apache2/conf
cp httpd.conf httpd.conf.old
Ln el urchlvo de conflguruclon se lncluyen dlrectlvus uru el servldor y comenturlos. Los comenturlos son lus llneus que comlenzun or #. Ll servldor
lgnoru todos los comenturlos y lus llneus en blunco usl que odemos usur umbos uru mejorur lu leglbllldud del urchlvo uru el udmlnlstrudor.
Lo mejor es echur un vlstuzo ul urchlvo de conflguruclon
gedit httpd.conf
Lste urchlvo est vuclo orque nuestru lnstuluclon no lo utlllzu dlrectumente. Ls lmortunte conocerlo orque en unu lnstuluclon munuul o en ulgunu
dlstrlbuclon en lu que no se huyu modlflcudo lu conflguruclon ser el urchlvo u revlsur. Sl ruebus u buscur el urchlvo N::(-=.01< del servldor LAMP que
lnstulumos vers que tumblen est vuclo.
Sln emburgo en nuestru dlstrlbuclon, el urchlvo rlnclul de conflguruclon es /(/.N&3=.01<
K6 -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
gedit apache2.conf
Ll urchlvo contlene dlrectlvus uru el servldor en sl mlsmo: donde estur el dlrectorlo que contendr los documentos web (or ejemlo urchlvos E1ML),
que modulos se curgurn, etc. 1umblen uede contener lnformuclon sobre hosts vlrtuules, ero eso lo veremos un oco ms udelunte.
Lo lmortunte uhoru es ver que hu usudo con lu conflguruclon. Sl vumos ul flnul del urchlvo veremos unus dlrectlvus L1.),-& que uuntun u otros
flcheros o dlrectorlos. Lstu dlstrlbuclon de Auche z utlllzu unu dlvlslon de lu conflguruclon en dlferentes urchlvos uru mejorur lu orgunlzuclon.
lnvestlgu y exllcu el uso redeturmlnudo de cudu uno de los urchlvos de conflguruclon que uurecen en /(/.N&3=.01<, lncluyendo este
mlsmo. No huce fultu que urendus el uso de cudu uno, solo que uedus deflnlr en unu llneu o dos el rooslto de cudu urchlvo.
Un grun cumblo que se rodujo en Auche z es lu lntroducclon de los 9<+7",( 97"&#1),!$(, (Multlrocesslng modules o MPMs). Eustu lu verslon .
Auche funclonubu con un slstemu "refork' en el que un roceso creubu rocesos hljo uru utender lus etlclones y el slmlemente se encurgubu de
monltorlzurlos uru creurlos o destrulrlos segun fueru necesurlo en cudu momento. Lste slstemu no funclonubu blen en determlnudos slstemus
oerutlvos (or ejemlo vlndows) usl que u urtlr de lu verslon z se uso otru soluclon:
Cudu modulo MPM creu hllos (threuds) o rocesos hljo (medlunte refork) uru utender lus etlclones. Reulmente huy cuutro modulos refork MPM,
threuded MPM, erchlld MPM y wlnnt MPM. Leendlendo de cul usemos se usurn unus conflguruclones u otrus.
Unu formu de suber que modulo est usundo Auche es usur lu oclon -v
Ln el servldor con Auche unlcumente
apachectl -V
o
apache2 -V
6 -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
nos muestru
Server version: Apache/2.2.22 (Unix)
Server built: Jul 17 2012 13:50:13
Server's Module Magic Number: 20051115:30
Server loaded: APR 1.4.5, APR-Util 1.4.1
Compiled using: APR 1.4.5, APR-Util 1.4.1
Architecture: 32-bit
Server MPM: Prefork
threaded: no
forked: yes (variable process count)
Server compiled with....
-D APACHE_MPM_DIR="server/mpm/prefork"
-D APR_HAS_SENDFILE
-D APR_HAS_MMAP
-D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
KK -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
-D APR_USE_SYSVSEM_SERIALIZE
-D APR_USE_PTHREAD_SERIALIZE
-D APR_HAS_OTHER_CHILD
-D AP_HAVE_RELIABLE_PIPED_LOGS
-D DYNAMIC_MODULE_LIMIT=128
-D HTTPD_ROOT="/www"
-D SUEXEC_BIN="/www/bin/suexec"
-D DEFAULT_PIDLOG="logs/httpd.pid"
-D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
-D DEFAULT_LOCKFILE="logs/accept.lock"
-D DEFAULT_ERRORLOG="logs/error_log"
-D AP_TYPES_CONFIG_FILE="conf/mime.types"
-D SERVER_CONFIG_FILE="conf/httpd.conf"
Sl lo robumos en el servldor LAMP nos mostrurlu lo mlsmo.
vumos u echur un vlstuzo ul urchlvo /(/.N&3=.01< e lntentur ver uru que servlr cudu dlrectlvu que uurece.
6, -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
H+7+1+%'13 4 32I('+J('13 %* (2,?+73 1% ,3'E+I"2(,+-'
Lo rlmero que odemos observur es que N::(-=.01< est vuclo.
sudo gedit /etc/apache2/httpd.conf
Como yu he comentudo en unu lnstuluclon munuul, lu conflguruclon or defecto lr todu en ese urchlvo, ero vlendo lo que sucede en lu lnstuluclon que
estumos utlllzundo, odemos urender u orgunlzur lu conflguruclon uru hucerlu ms munejuble.
Lsto es orque el urchlvo rlnclul de conflguruclon uede cumblurse cuundo comllumos Auche. Por defecto es N::(-=.01< ero en lu lnstuluclon
LAMP que usumos lo hun cumbludo u /(/.N&3=.01< y hun dejudo el otro or sl queremos hucer modlflcuclones. Le cuulquler formu odemos edltur el
urchlvo rlnclul.
sudo gedit /etc/apache2/apache2.conf
Al flnul del urchlvo uurece unu secclon de lncluslones que ermlten subdlvldlr lu conflguruclon del servldor Auche como mejor nos urezcu. Ln este
cuso se muestrun:
# Include module configuration:
Include mods-enabled/*.load
Include mods-enabled/*.conf
# Include all the user configurations:
Include httpd.conf
KF -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
# Include ports listing
Include ports.conf
# Include of directories ignores editors' and dpkg's backup files,
# see README.Debian for details.
# Include generic snippets of statements
Include conf.d/
# Include the virtual host configurations:
Include sites-enabled/
Lu muyorlu de ellos lremos vlendo uru que slrven en suceslvus secclones. 8uste uclurur que or ejemlo en (08:'=.01< vu lnformuclon que yu
conocemos y que esto uede hucerse con todo. Sl nuestro servldor es equeno qulz nos buste con usur un unlco flchero de conflguruclon con todus
lus dlrectlvus ero en cuunto vuyu u ser un oco comlejo nos lr mejor sl lo dlvldlmos slgulendo ulgun crlterlo loglco.
6 -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
Unu curlosldud es que en el enultlmo *1.),-& se unude un dlrectorlo. Suele usurse uru creur en el urchlvos de conflguruclon de elementos que no
tlenen otru secclon loglcu o uru ruebus en lu conflguruclon y que usl seu fcll revertlr lu sltuuclon ul estudo unterlor en cuso de fullo. Cuundo
lnstulemos Auche uru el uso de modulos hubluremos de todos los urchlvos de conflguruclon en ms detulle.
H+2%,5+7(& 1%* (2,?+73 1% ,3'E+I"2(,+-'
Como yu hemos comentudo untes, el urchlvo de conflguruclon est comuesto or dlrectlvus que le lndlcun ul servldor como uctuur. 1en en cuentu que
cudu vez que huces un cumblo en el urchlvo de conflguruclon es necesurlo relnlclur el servldor uru que surtu efecto. No todus lus dlrectrlces que vumos
u ver estn en nuestro urchlvo de conflguruclon. 1umblen exlsten otrus y sobre ulgunus hubluremos ms udelunte.
Ln estu dlrecclon odemos ver un ejemlo de un urchlvo httd.conf ms comleto y con enluces u lu documentuclon oflclul de cudu dlrectlvu. Ls estu
otru est lu referenclu de lus dlrectlvus de uuche. Por ultlmo uqul odemos obtener unu equenu exllcuclon y formu de uso de ellus con unu
lndlcuclon de uru que slrven. Ln estu ultlmu glnu en lu terceru columnu se lndlcun los contextos en los que uede ullcurse cudu dlrectlvu. Aqul se
concretu un oco ms u que huce referenclu cudu contexto.
apachectl restart
Ls lmortunte destucur que lus llneus que comlenzun or W (,% !,9$%&:)#,( , $(&D% !,9$%&:+:(.
X$)*$)Y,,&
Lo que vlene u contlnuuclon es lu conflguruclon munuul, no lo voy u cumblur or lu que usumos orque es ms comleto usl.
Ahoru vumos u comentur formulmente lus dlrectlvus que uurecen en el urchlvo de conflguruclon.
ServerRoot "/www"
Que lndlcu el dlrectorlo rulz de lu lnstuluclon de Auche. No se reflere ul dlrectorlo donde colocuremos lus glnus web. Convlene recordur que ul
reullzur lu lnstuluclon munuul, untes de comllur el servldor lo conflgurumos con lu slgulente llneu
./configure --prefix=/www --enable-shared=max --enable-wmodule=rewrite --enable-module=so
5M -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
Sl nos fljumos, el dlrectorlo colnclde con el vulor de gg(8&<*`.
Lstu dlrectlvu solo se modlflcurlu en cuso de mover el servldor Auche u otru ublcuclon en lu estructuru de dlrectorlos y como lremos vlendo hubrlu que
cumblur ms. Lo mejor es eleglr blen desde el rlncllo donde lnstuluremos Auche.
Ln el cuso que estumos vlendo, no uurece nlngunu otru rutu, ero uru conflgurur rutus relutlvus ul dlrectorlo de lnstuluclon de Auche, unu vez
eseclflcudo con lu dlrectlvu unterlor, odrlumos usur i7&8>&8[00:i en lugur de lu rutu comletu.
-#+V#"$
Pldllle estublece lu rutu ul urchlvo en el que el servldor grubu su lL de roceso (ld). Por defecto, el PlL se colocu en i7&8>&8[00:if)0+'
PidFile logs/httpd.pid
No se recomlendu cumblur lu rutu sl no se sube muy blen lo que se est huclendo.
I#9$,7&
Son los segundos que se eserun lus resuestus durunte lu comunlcuclon. Por defecto es cc segundos y se recomlendu no cumblurlo.
Timeout 300
S$$1C"#*$4 Z:GS$$1C"#*$Y$E7$(&( K S$$1C"#*$I#9$,7&
Letermlnu sl el servldor vu u ermltlr que cudu conexlon hugu ms de unu etlclon. Ll roblemu de uctlvurlo es que un unlco cllente uede consumlr
demusludos recursos y suturur el servldor or lo que en cuso de estublecerlo u 01 se recomlendu conflgurur culdudosumente j&&(")*>&P*@&0,:,
generulmente u un nlvel bujo.
KeepAlive Off
W/`j&&(")*>&[&Q,&':' determlnu el numero de etlclones que odr reullzur cudu conexlon. Lvldentemente solo tlene sentldo sl j&&(")*>& est
uctlvudu.
, -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
MaxKeepAliveRequests 100
j&&(")*>&P*@&0,: determlnu el tlemo que el servldor eserur untes de utender unu nuevu etlclon del mlsmo cllente en lu mlsmu conexlon.
KeepAliveTimeout 15
Lstus dlrectlvus son un buen ejemlo de elementos que ueden hucer que nuestro servldor no funclone como eserumos unu vez en roducclon. Sl no
robumos con un numero de etlclones suerlor ul mxlmo no odremos comrobur sl el funclonumlento es el eserudo.
F=Z,+7"$
Ls un contenedor que ermlte estublecer determlnudus oclones solo sl se hu curgudo un modulo determlnudo. Sl se escrlbe ! (clerre de exclumuclon)
untes del nombre del modulo se ejecutun lus oclones sl no se hu curgudo el modulo.
<IfModule mod_mime_magic.c>
MIMEMagicFile conf/magic
</IfModule>
X&:)&X$)*$)( 4 Z:G>"#$%&( K Z:GY$E7$(&(-$)>B#"+
Auche creu y destruye servldores uutomtlcumente segun el trflco que tengu que utender en cudu momento. Auche es muy eflclente en esto or lo
que no deberlumos reocuurnos demusludo de este y de los slgulentes urmetros. Adems deberlun lr dentro de un L<W0-,)& segun ul que querumos
ullcurlo.
Lstu dlrectrlz estublece cuuntos servldores se creurn ul urruncur.
StartServers 5
MuxCllents estublece el numero mxlmo de cllente que odr utender Auche u lu vez.
53 -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
MaxClients 150
MuxRequestsPerChlld lndlcu cuuntus etlclones odr utender cudu cllente untes de ser mutudo.
MaxRequestsPerChild 30
Leendlendo de sl usumos hllos o refork tendremos que conflgurur otros elementos:
! MlnSure1hreuds, MuxSure1hreuds, 1hreudsPerChlld
! MlnSureServers, MuxSureServers
-,)&
Nos ermlte cumblur el uerto en el que el servldor eseru lu ertlclones estndur.
Port 7000
[#(&$%
Lste elemento lndlcu ul servldor en que dlrecclon y uerto debe escuchur lus etlclones htt que lleguen :+$9D( +$ ",( +$ 1,) +$=$!&,. Ll uerto or
estndur que un servldor web reclbu etlclones htt es el 8c or lo que lu llneu que nos encontrumos es
Listen 80
Ln nuestro cuso hemos lnstuludo Auche en unu mqulnu vlrtuul usl que est conflgurudo uru escuchur en lu lnterfuz de loobuck (z,.c.c.). Sl
queremos que el servldor seu vlsto desde lu mqulnu host debemos conflgururlo sltuundo lu dlrecclon lP que conflgurumos uru lu turjetu de red que
unudlmos como solounfltrlon. Lu dlrecclon lP y el uerto se seurun or dos untos.
Listen 192.168.56.101:80
Sl conflgurumos Auche uru escuchur en otro uerto solo odremos ucceder u lus glnus web unudlendo dlcho uerto detrs de lu dlrecclon. Como
vlmos ul lnstulur 1omcut, este escuchu or defecto en el uerto 8c8c y or ello uccedlumos u el con htt:jjloculhost:8c8c
, -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
[,:+Z,+7"$
Cuundo lnstulumos Auche, hubllltumos lu oclon de Lynumlc Shured Cbject (LSC) que ermlte unudlr modulos dlnmlcumente sln necesldud de
recomllur el servldor. Lu dlrectlvu LoudModule lndlcu que modulos dlnmlcos curgur. No es necesurlo lnclulr los modulos que se comlluron con el
servldor.
Ln el urchlvo uurece comentudu orque no unudlmos nlngun modulo. Ms udelunte hubluremos de los modulos.
\($) K ]),71
Lstus dos dlrectlvus lndlcun con que usuurlo y gruo se lunzurn los rocesos hljos que genere Auche. Lstos rocesos hljo no deben lunzurse con el
usuurlo 800: or ruzones de segurldud yu que creurlun unu brechu erfectu uru los huckers.
Sl no urruncumos el servldor con el usuurlo 800:, los rocesos hljo que se lunzurn con ese mlsmo usuurlo yu que solo 800: uede cumblur el usuurlo y el
gruo de un roceso or lo que estus dlrectlvus se lgnorurn.
Ln Llnux or defecto el usuurlo 1020-H y el gruo 10+80,( tlenen muy ocos rlvlleglos or lo que son buenos cundldutos uru lunzur los rocesos hljo.
Sl queremos usur el numero del gruo o del usuurlo en lugur del nombre debemos unudlr # justo untes del numero.
User nobody
Group #-1
Ln nuestro urchlvo uurecen estus dos dlrectlvus dentro de dos ll unldudos que lndlcun que se curgurn los rocesos con ese usuurlo y gruo sl se
cumlen lus condlclones. Sl lo onemos fueru de los ll se usurn uru todos los rocesos hljo. Lus condlclones en este cuso son los modulos que se
esten usundo.
X$)*$)C+9#%
Lstu oclon ermlte conflgurur lu dlrecclon del udmlnlstrudor del servldor web que se mostrur sl el servldor generu unu glnu de error.
Lvldentemente debe ser unu dlrecclon reul y generulmente es del mlsmo domlno que el rolo servldor web. Nosotros no dlsonemos de un nombre
de domlnlo, ero odemos conflgurur unu dlrecclon de correo reul.
56 -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
ServerAdmin [email protected]
X$)*$)O:9$
lndlcu el nombre del servldor. Lebe cumllr con lus eseclflcuclones LNS y estur en nuestro oder.
ServerName www.ejemplo.es:80
?,!79$%&Y,,&
Con estu oclon lndlcumos el dlrectorlo rulz donde colocuremos lus glnus web. Podemos creur subdlrectorlos dentro de este y uccederemos u los
documentos que ongumos en el subdlrectorlo con unu rutu relutlvu.
DocumentRoot "/www/docweb"
Ll roblemu es que no bustu con cumblur estu rutu, es necesurlo cumblur tumblen otru de lu dlrectlvu Llrectory que veremos luego.
<Directory "/www/docweb">
.
Sl queremos comrobur que funclonu lo mejor es modlflcur el urchlvo lndex.html del nuevo dlrectorlo o unudlr un urchlvo nuevo y curgur ese.
^% $" !:(, E7$ %,( ,!71: uhoru, estu dlrectlvu uurece en el urchlvo -&</,): del dlrectorlo f&:.f/(/.N&3f'*:&'g/>/*)/2)&. Lsto es usl orque lu lnstuluclon
que usumos nosotros vlene reeurudu or defecto uru funclonur con sltlos vlrtuules.
?#)$!&,)K
Lstu dlrectlvu tumblen hu sldo derlvudu ul urchlvo de conflguruclon del sltlo or defecto, uru que no se ullque u todos los sltlos del servldor yu que no
ermlte sobrescrlturu de lus dlrectlvus de segurldud. Sl se usleru en el servldor ufecturlu u todos los sltlo que utlllzurun el dlrectorlo eseclflcudo.
, -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
Lstu oclon se usu uru conflgurur como se comortur y que se ermltlr en cudu dlrectorlo ul que tlene ucceso el servldor Auche. Lstu conflguruclon
se ullcu u un dlrectorlo y los subdlrectorlos que contlene sl no se sobreescrlbe en otru deflnlclon sobre un dlrectorlo ms concreto.
Nos encontrumos dos veces estu etlquetu. Lu rlmeru huce referenclu ul dlrectorlo rulz y se conflguru slemre con oclones muy restrlctlvus.
<Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
</Directory>
Ll contenldo lo vemos u contlnuuclon. Prlmero vumos u mostrur tumblen lu otru vez que uurece, huclendo referenclu ul dlrectorlo !0.,@&1:[00:
<Directory "/www/docweb">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
5K -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
Aunque umbos cusos esten conflgurudos lguul, esto
no es necesurlo.
Pueden unudlrse dlrectlvus uru otros dlrectorlos
segun lo vuyumos necesltundo.
Lu rlmeru llneu ermlte u Auche segulr enluces
slmbollcos y lu segundu que lus oclones de ucceso
de cudu dlrectorlo (urchlvo .N:/..&'' del que
hubluremos en lu dlrectlvu "..&''G*)&e/@&) no rlmun
sobre estus. Lu terceru llneu lndlcu sl lus ordenes uru
ermltlr o uru denegur lrn rlmero, en este cuso se
ejecutun rlmero lus ermlslvus y luego lus
restrlctlvus. "))0D (y su untonlmo !&1H) eseclflcun
qulen uede ucceder y qulen no u un dlrectorlo
determlnudo. Ll sollcltunte uede ser /)), unu
dlrecclon lP, un ur Redjmscuru de red, etc.
Puedes ver ms ejemlos uqul.
\($)?#)
lndlcu sl se debe ermltlr que cudu usuurlo de nuestro
slstemu tengu su rolu curetu ersonul en el
servldor web y estublece cul ser lu rutu desde el
servldor uru ucceder u dlchu curetu. Lsto tlene sentldo or ejemlo sl se montu un servldor Auche en un lnstltuto y cudu rofesor tlene su rolo
usuurlo. Puru que cudu uno tengu su rolu web ersonul se uede uctlvur estu oclon.
UserDir public_html
Ls lu oclon ms frecuente yu que creurlu en nuestro servldor rutus uru cudu usuurlo. Sl or ejemlo huy un usuurlo Serglo y otro Murlu tendrlumos lus
rutus:
,, -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
www.servidordeprueba.es/~Sergio
www.servidordeprueba.es/~Maria
Y cudu usuurlo tendrlu en su curetu ersonul un subdlrectorlo ubllc_html uru ubllcur lo que qulsleru. Como se uede ver el urgumento detrs de
S'&8!*8 lndlcu como se llumur ese subdlrectorlo.
UserDir disable
Ls lu oclon or defecto y huce que los usuurlos no tengun su rolo esuclo.
Ln cuso de uctlvur los dlrectorlos de usuurlos se recomlendu deshubllltur el de 800:
Userdir disabled root
Lste tlo de conflguruclon se hu utlllzudo mucho or ejemlo en unlversldudes donde cudu rofesor tenlu unu glnu web dlsonlble
solo con tener un usuurlo. 1oduvlu no uedes robur lu conflguruclon de estu dlrectlvu en tu servldor, ero sl leer lu documentuclon de
lu dlrectlvu Que usuurlos tlenen uhoru curetu ersonul? Lu rutu or defecto u lu curetu ersonul no es muy fcll de escrlblr con un
tecludo en muchos ulses, como lu cumblurlus? 1enlendo en cuentu un servldor remoto, que lnconvenlente ves u estu formu de
funclonur? Sl tuvlerus que lunteur ulgunu funclonulldud slmllur en lu uctuulldud, como lo hurlus?
?#)$!&,)KF%+$G
Lseclflcu lu glnu or defecto que se buscur ul ucceder u un dlrectorlo de lu jerurqulu de nuestro sltlo. Acceder u un dlrectorlo es usur unu dlrecclon
web que ucubu con unu burru "j'. Ll dlrectorlo rulz est lncluldo en esu jerurqulu or lo que cuundo uccedemos u nuestro sltlo web (en nuestros cusos
htt:jjloculhost) curgu el urchlvo lndex.html que es el vulor or defecto de !*8&.:08HL1-&`.
DirectoryIndex index.html
Puede estublecerse unu suceslon de urchlvos y el servldor mostrur lu rlmeru que encuentre del orden estublecldo en lu dlrectlvu.
5F -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
DirectoryIndex index.html, index.htm, inicio.html, inicio.htm
Sl uccedemos u un dlrectorlo que no contlene nlnguno de los urchlvos eseclflcudos, Auche creu dlnmlcumente un urchlvo que llstu los contenldos.
C!!$((V#"$O:9$
lndlcu el nombre del urchlvo en el que se deben buscur lus dlrectlvus de ucceso determlnudus en cudu dlrectorlo. Por defecto es . N:/..&'' y no se
recomlendu cumblurlo en ubsoluto.
AccessFileName .htaccess
V#"$(
Ls un contenedor que slrve uru estublecer dlrectlvus uru tlos de urchlvo. Por lo menos es necesurlo unudlr un gruo que lmldu el ucceso u los
urchlvos que emlezun or .ht or motlvos de segurldud.
<FilesMatch "^.ht">
Order allow,deny
Deny from all
Satisfy All
</FilesMatch>
Ctro ejemlo ms senclllo es
<Files .htaccess>
Order allow,deny
, -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
Deny from all
</Files>
Se uede usur uru otros tlos de urchlvo segun creumos convenlente.
\($>:%,%#!:"O:9$
lndlcu u Auche que cudu vez que tengu que construlr dlrecclones que hugun referenclu u sl mlsmo lo hugu con el nombre cunonlco (el lndlcudo en lu
dlrectrlz ServerNume) y el uerto en lugur del nombre de lu mqulnu (hostnume) y el uerto.
UseCanonicalName On
IK1$(>,%=#;
lndlcu donde estur el urchlve que descrlbe los tlos MlML (mlme.tyes) o su equlvulente sl lo hemos cumbludo. No huy muchus ruzones uru ello, or
lo que deberlumos dejur el vulor or defecto.
TypesConfig conf/mime.types
?$=:7"&IK1$
Lstublece el tlo MlML uru todos uquellos urchlvos u los que no se les uedu uslgnur uno medlunte su extenslon, etc. Sl tenemos un servldor donde lu
muyorlu del contenldo son glnus E1ML, ML, etc es buenu ldeu usur el vulor or defecto, ero sl lu muyorlu del contenldo son urchlvos blnurlos
(fotogruflus, rogrumus, etc) serlu convenlente estublecer /(()*./:*01f0.:&:g':8&/@.
DefaultType text/plain
Se uede eseclflcur ms:
DefaultType text/html
FM -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
lnvestlgu en lnternet que son los tlos MlML y cules huy. Que orgunlsmo se encurgu de gestlonurlos? Le que otrus cosus se encurgu?
P,(&%:9$[,,N71(
lndlcu ul servldor sl debe hucer unu consultu LNS uru cudu etlclon. Lsto consume mucho tlemo or lo que or defecto est deshubllltudu.
HostnameLookups off
^)),)[,;
Lstu dlrectlvu es muy lmortunte yu que lndlcu donde ublcur el urchlvo de reglstro de los errores que se roduzcun en el servldor. Ll lugur or defecto
es i7&8>&8[00:if)0+'f&8808^)0+. Muchos udmlnlstrudores creun unu urtlclon excluslvumente uru sltuur este tlo de urchlvos y usl tener ms
robubllldudes de oder consulturlos en cuso de un error futul.
ErrorLog logs/error_log
[,;[$*$"
Lstublece cuntu lnformuclon se guurdur en el urchlvo de reglstro de errores. Ll nlvel or defecto es suflclente uru emezur ero cuunto muyor seu el
servldor y ms lmortunte su funclon ms lnformuclon neceslturemos. Los vulores oslbles lncluyen: debug, lnfo, notlce, wurn, error, crlt, ulert, emerg.
LogLevel warn
[,;V,)9:&
Lstublece que y en que formuto se reglstrur. No vumos u entrur en ms detulles en este curso.
>7(&,9[,;
Lstublece lu rutu ul urchlvo de que reglstru lus vlsltus u nuestro sltlo web.
#CustomLog logs/access_log combined
8 -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
Comblned lndlcu el uso de un unlco urchlvo uru guurdur todu lu lnformuclon yu que es oslble dlvldlr este reglstro en vurlos.
X$)*$)X#;%:&7)$
lndlcu sl ul mostrurse unu glnu generudu uutomtlcumente or el servldor (no lus generudus medlunte lenguujes u urtlr de ulgo estublecldo or el
usuurlo slno lus glnus de error, llstudo de dlrectorlos l1P, etc) debe mostrurse el nombre y lu verslon del servldor. Lsto uede ser usudo
mullclosumente usl que sl no ests conforme estublecelo u off.
ServerSignature On
Euy otru oclon (LMull) que unude lu dlrecclon del udmlnlstrudor de lu web u lu lnformuclon mostrudu.
C"#:(
Permlte creur ullus uru urchlvos o dlrectorlos. Se ueden unudlr los que querumos ero el ms hubltuul es el de lu curetu de lconos que usu Auche.
Alias /icons/ "/var/www/icons/"
<Directory "/var/www/icons">
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
F3 -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
Lu dlrectlvu es solo lu rlmeru llneu. Lo dems es lu dlrectlvu de conflguruclon del dlrectorlo.
ScrltAllus
lndlcu donde se ublcur lu curetu de scrlts CCl. Ll funclonumlento es slmllur ul unterlor ero solo debemos lnclulrlos sl vumos u usur scrlts CCl.
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
<Directory "/var/www/cgi-bin">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>
F%+$GQ1&#,%(4 C++F!,%5K^%!,+#%;4 C++F!,%5KIK1$4 C++F!,%4 ?$=:7"&F!,%4 Y$:+9$O:9$4 P$:+$)O:9$ $ F%+$GF;%,)$
Son dlrectlvus usocludus u lu creuclon de lndlces de muneru uutomtlcu or el servldor. No vumos u rofundlzur en ellus.
C++^%!,+#%;
Lseclflcu un tlo urtlculur de codlflcuclon uru determlnudus extenslones de urchlvos. 1umblen se uede usur "--U1.0-*1+ uru lndlcur u los
nuvegudores que descomrlmun clertos urchlvos mlentrus los descurgun:
AddEncoding x-compress Z
8 -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
AddEncoding x-gzip gz
C++[:%;7:;$
Slrve uru usoclur extenslones u ldlomus determlnudos uru el contenldo. Lstu dlrectrlz es utll uru lu negocluclon de contenldos entre el servldor y el
nuvegudor web del cllente yu que Auche uede devolver contenldos en dlferentes ldlomus deendlendo de lu conflguruclon del ldlomu del nuvegudor
veb. Ls utll sobre todo en los cusos en los que tenemos el sltlo escrlto en vurlos ldlomus yu que ermltlr que Auche slrvu lu udecuudu en cudu cuso en
funclon de lu conflguruclon del nuvegudor del cllente. Lsto se reullzu de formu trunsurente uru el usuurlo flnul.
Los codlgos de ldlomus se deflnen en lu eseclflcuclon lSC 6. Ms concretumente en lu lSC 6 los codlgos de dos letrus y en lu lSC 6z los de tres
letrus que lncluyen ms ldlomus.
# Dans (da) - Holands (nl) - Ingls (en) - Estonio (et)
# Francs (fr) - Alemn (de) - Griego Moderno (el)
# Italiano (it) - Noruego (no) - Koreano (kr)
# Portugus (pt) - Luxemburgus(ltz)
# Espaol (es) - Sueco (sv) - Checo(cz)
# Polaco (pl) - Portugus de Brasil (pt-br) - Japons (ja)
# Ruso (ru) - Croata (hr)
#
AddLanguage es .es
AddLanguage da .dk
F6 -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
AddLanguage nl .nl
AddLanguage en .en
AddLanguage et .et
AddLanguage fr .fr
AddLanguage de .de
AddLanguage el .el
AddLanguage it .it
AddLanguage ja .ja
AddLanguage pl .po
AddLanguage kr .kr
AddLanguage pt .pt
AddLanguage no .no
AddLanguage pt-br .pt-br
AddLanguage ltz .ltz
AddLanguage sv .se
8 -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
AddLanguage cz .cz
AddLanguage ru .ru
AddLanguage tw .tw
AddLanguage hr .hr
1en en cuentu que el lndlcudor del ldlomu no tlene or que ser ldentlco ul sufljo como se ve en vurlos de los ejemlos.
[:%;7:;$-)#,)#&K
Permlte estublecer unu rlorldud de los ldlomus en cuso de que no se eseclflque uno o huyu un emute en lu negocluclon or dlferentes motlvos. Por
defecto vlene en lngles, ero en lu muyorlu de los cusos nosotros querremos estublecerlo en esunol.
LanguagePriority es en fr de
Puru oder robur este tlo de conflguruclon es necesurlo tener vurlos urchlvos en dlferentes ldlomus con el mlsmo nombre. Ln estu glnu odemos
ver como hucerlo, ero uunque es bustunte comletu es untlguu. Ln el vc nos roorclonun unu lnformuclon ms reclente y en lu documentuclon
oflclul de Auche uurece todo eseclflcudo.
C++>B:)($&
Ls lguul que "--\/1+,/+& ero uru unudlr nuevos juegos de curucteres.
AddCharset ISO-8859-1 .iso8859-1 .latin1
AddCharset ISO-8859-2 .iso8859-2 .latin2 .cen
FK -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
C++?$=:7"&>B:)($&
Leberlu estublecerse ul juego de curucteres que mejor se ujuste u lu zonu en lu que se sltuu el servldor y ul ldlomu del contenldo. Ln cuso de no estur
seguros es mejor dejurlo como est.
AddDefaultCharset ISO-8859-1
5),A($)Z:&!B
Slrve uru modlflcur lu resuestu deendlendo de lu conflguruclon del cllente en cuunto u nuvegudor y luglns. Lsto suele usurse uru evltur roblemus
con nuvegudores que no slguen ulgun estndur o evltur ugujeros de segurldud. Lus slgulentes llneus son muy comunes orque lncluyen conflguruclones
con roblemus de sobru conocldos.
BrowserMatch "Mozilla/2" nokeepalive
BrowserMatch "MSIE 4.0b2;" nokeepalive downgrade-1.0 force-response-1.0
BrowserMatch "RealPlayer 4.0" force-response-1.0
BrowserMatch "Java/1.0" force-response-1.0
BrowserMatch "JDK/1.0" force-response-1.0
Conflguru tu servldor Auche uru que lu curetu rulz seu jugweb y ruebu u consulturlo desde lu mqulnu host. Solo udmltlr
consultur or el uerto cc. Adems lu glnu or defecto que curgur en cudu dlrectorlo debe ser lnlclo.html. Por ultlmo unude el
ldlomu esunol, cutuln, gullego y vusco en este orden. Ll juego de curucteres or defecto debe ser el euroeo occldentul. Pruebu el
correcto funclonumlento de todo.
Consultu los urchlvos de reglstro de errores y de ucceso de tu servldor Auche.
8, -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
Modulos
Ll dlseno de Auche es modulur, ulgo que yu hemos dejudo entrever cuundo hemos hubludo de Lynumlc Shured Cbject (LSC). Ll nucleo de Auche
lncluye lu funclonulldud necesurlu uru estublecer un servldor web ero exlsten muchos modulos udlclonules que ermlten unudlr funclones extru.
Ll uso de LSC tlene unus ventujus evldentes y lu unlcu desventuju es unu equenu dlsmlnuclon del rendlmlento del servldor or lo que se recomlendu su
utlllzuclon exceto en cusos en los que el rendlmlento seu crltlco.
Cudu modulo tlene un conjunto de dlrectlvus eseclflcus que ermlten su gestlon. Nosotros uhoru nos centruremos en ver que modulos huy y ms
udelunte estudluremos ulgunos cusos en rofundldud.
Puedes consultur los modulos que estn lnstuludos en cudu servldor medlunte el comundo
apachectl -l
que en el cuso de lu lnstuluclon munuul nos devuelve lo slgulente.
Compiled in modules:
core.c
mod_authn_file.c
mod_authn_default.c
mod_authz_host.c
mod_authz_groupfile.c
FF -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
mod_authz_user.c
mod_authz_default.c
mod_auth_basic.c
mod_include.c
mod_filter.c
mod_log_config.c
mod_env.c
mod_setenvif.c
mod_version.c
prefork.c
http_core.c
mod_mime.c
mod_status.c
mod_autoindex.c
mod_asis.c
8 -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
mod_cgi.c
mod_negotiation.c
mod_dir.c
mod_actions.c
mod_userdir.c
mod_alias.c
mod_so.c
Ctru formu de consulturlo es
apachectl -M
Que nos muestru los modulos or nombre y determlnundo sl se unudleron de formu esttlcu (cuundo se comllo Auche) o de muneru dlnmlcu.
Loaded Modules:
core_module (static)
authn_file_module (static)
authn_default_module (static)
authz_host_module (static)
XM -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
authz_groupfile_module (static)
authz_user_module (static)
authz_default_module (static)
auth_basic_module (static)
include_module (static)
filter_module (static)
log_config_module (static)
env_module (static)
setenvif_module (static)
version_module (static)
mpm_prefork_module (static)
http_module (static)
mime_module (static)
status_module (static)
autoindex_module (static)
-& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
asis_module (static)
cgi_module (static)
negotiation_module (static)
dir_module (static)
actions_module (static)
userdir_module (static)
alias_module (static)
so_module (static)
Syntax OK
Ls fcll reconocer el mlsmo modulo en lu termlnologlu del rlmer llstudo y en lu del segundo.
Puedes consultur todos los modulos uqul. Sl lnchus en el nombre de ulguno te llevur u unu exllcuclon ms comletu y con ejemlos.
vumos u resentur ulgunos de los dlferentes modulos en gruos con funclones slmllures.
Puru los slgulentes modulos debes leer lu equenu exllcuclon que vlene uqul, reururte uru exllcur que huce y ensur uno o dos
ejemlos de utllldud que tengu el modulo. vumos u lrlo huclendo gruo u gruo.
X3 -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
K-1"*3& 2%*(,+3'(13& ,3' %* %'532'3
Lstos modulos nos ermlten controlur que urte del entorno del servldor estur dlsonlble uru otros modulos o rogrumus. Al declr entorno nos
referlmos ul conjunto de vurlubles dlnmlcus de entorno de Auche que modlflcun el comortumlento del servldor.
9,+_$%*
Lste modulo se comllu or defecto con Auche usl que est dlsonlble en nuestrus lnstuluclones. Permlte usur el vulor de vurlubles de entorno u
rogrumus de scrlt CCl, erl, PEP, etc.
9,+_($&$%*#=
1umblen se comllu or defecto or lo que est dlsonlble en nuestrus lnstuluclones. Lste modulo nos oslbllltu lu creuclon de vurlubles de entorno u
urtlr de dutos que nos envlu en cllente con el rotocolo E11P. Lu dlrectlvu b80D'&8W/:.N vlstu unterlormente ertenece u este modulo.
9,+_7%#E7$_#+
Lste modulo sln dlrectlvus se encurgu de estublecer un ldentlflcudor unlco uru cudu etlclon que llegu u lu mqulnu con el servldor Auche en cuso de
que lo necesltemos. Reulmente uede creur un ldentlflcudor unlco uru cudu etlclon que llegue u un conjunto de mqulnus conflgurudus
correctumente uru funclonur como un cluster.
K-1"*3& 1% ("5%'5+,(,+-' 4 ,3'523* 1% (,,%&3
Auche lmlementu vurlos modulos uru reullzur uutentlcuclon y control de ucceso lo que se suele ullcur ul flltrudo de usuurlos que ueden vlsltur un
dlrectorlo de nuestro web busndose en lu dlrecclon lP o el nombre de usuurlo.
Ll muyor roblemu que resentun estos modulos es que utlllzun el rotocolo E11P que trunsmlte texto luno or lo que lus contrusenus se envlun sln
clfrur creundo un ugujero de segurldud muy reocuunte.
Eubluremos ms de vurlos de estos modulos cuundo veumos
-& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
9,+_:7&B4 9,+_:7&B_+69 K 9,+_:7&B_+6
Ls el modulo bslco de uutentlcuclon de Auche. Usu el rotocolo E11P uru ello.
mod_uuth_dbm y mod_uuth_db son slmllures ero utlllzun urchlvos L8M y 8erkley L8 en lugur de urchlvos de texto uru mejorur lu eflclenclu del
servldor.
9,+_:7&B_:%,%
Lste modulo ermlte u los usuurlos conecturse de muneru unonlmu. Puru ello deben usur /101H@0,' como nombre de usuurlo y es oslble edlrles unu
dlrecclon de correo como contrusenu. Lstu dlrecclon uede usurse uru controlur que usuurlos se conectun o uru creur llstus de correo de oslbles
cllentes de nuestro servldor.
9,+_:7&B_+#;$(&
Lste modulo gestlonu lu uutentlcuclon medlunte Messuge Llgest (ML)
9,+_:!!$((
Permlte uctlvur lu uutentlcuclon medlunte dlrecclon lP o nombre de lu mqulnu cllente.
K-1"*3& 1% I%'%2(,+-' 1+'L;+,( 1% ,3'5%'+13&
Lstos modulos ermlten delegur lu utenclon de determlnudus etlclones u dlferentes scrlts o rogrumus externos.
9,+_!;#
Slrve uru ejecutur scrlts de tlo CCl (Common Cutewuy lnterfuce)
9,+_#%!"7+$
Permlte usur flltros SSl (ServerSlde lncludes)
X6 -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
9,+_:!&#,%(
Leendlendo del tlo MlML o en el metodo de lu etlclon E11P, ermlte usur dlferentes scrlts uru rocesur dlchus etlclones.
9,+_$G&_=#"&$)
Permlte flltrur unu resuestu medlunte un rogrumu externo untes de envlrselu ul cllente.
K-1"*3& 1% ,3'E+I"2(,+-' 1%* 5+)3 1% ,3'5%'+13
Lste conjunto de modulos ermlten ul servldor detectur o negoclur el tlo de contenldo ms udecuudo uru el cllente, entendlendo como cllente lu
mqulnu y el nuvegudor que reclblrn lu resuestu E11P.
9,+_9#9$
Permlte que Auche determlne el tlo MlML u urtlr de lu extenslon del urchlvo. Se comllu or defecto y nos ermlte uctlvur un T/1-)&8 uru
gestlonur tlos de urchlvo. vurlus de lus dlrectlvus que vlmos de tlos de codlflcuclon y de ldlomus del contenldo estn reluclonudus con este modulo.
9,+_9#9$_9:;#!
Lste modulo ermlte u Auche determlnur el tlo MlML u urtlr de un utron de bytes que se ulmucenu en un urchlvo y se comuru con lu etlclon.
Solo se uctlvu sl el modulo unterlor no es cuuz de determlnur el tlo MlML.
9,+_%$;,&#:&#,%
Lu negocluclon de contenldo entre cllente y servldor tllcu conslste en que el cllente le envlu ul servldor que tlos de contenldo (ldlomu, codlflcuclon,
etc) uede munejur y el servldor buscu el ms udecuudo uru resonderle. Lste modulo se comllu or defecto.
-& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
K-1"*3& )(2( %* *+&5(13 1% 1+2%,532+3&
Cuundo un cllente huce unu etlclon u nuestro servldor con unu dlrecclon web que lndlcu un dlrectorlo el servldor lntentu servlr rlmero el urchlvo o
urchlvos estublecldos uru ello (con lu dlrectlvu !*8&.:08HL1-&`). Ln cuso de no encontrur nlnguno en ese dlrectorlo muestru unu llstu de los urchlvos
contenldos. Lstos modulos nos ermlten conflgurur como sern esos llstudos.
9,+_+#)
Modulo bslco de munejo de dlrectorlos que se lncluye en lu comlluclon estndur de Auche. Por defecto reullzu dos funclones bslcus: unude unu
burru "j' ul flnul de cudu dlrecclon que no termlnu en un nombre de urchlvo (redlrlge www.mlsltlo.esjundlrectorlo u www.mlsltlo.esjundlrectorloj ) y
buscu un urchlvo or defecto uru curgur en los cusos en los que se lntentu ucceder u un dlrectorlo. Sl no deflnlmos nudu con lu dlrectlvu !*8&.:08HL1-&`
se buscu *1-&`=N:@) or defecto.
9,+_:7&,#%+$G
Lste modulo tumblen se lncluye en lu conflguruclon de Auche or defecto. Ln cuso de que ul ucceder u un dlrectorlo no se encuentre nlnguno de los
urchlvos eseclflcudos @0-^/,:0*1-&` se encurgu de generur el llstudo. Adems odemos conflgurur como se generur dlcho llstudo.
Conflgurur este modulo es utll en cuso de que tengumos un servldor de urchlvos (or ejemlo en unu lntrunet) ul que uccedun muchos usuurlos. No huy
que confundlr este tlo de ucceso con el que roorclonu un servldor l1P como veremos en el temu .
K-1"*3& )(2( *( I%&5+-' 1% *(& ,(/%,%2(& FBBM 1% *(& 2%&)"%&5(&
Lus cubecerus en el rotocolo E11P lncluyen muchu lnformuclon lmortunte uru lu comunlcuclon. Lste conjunto de modulos nos ermlte modlflcur
dlchus cubecerus. Ll uso de estos modulos requlere conoclmlentos uvunzudos del funclonumlento del rotocolo E11P or lo que solo los llsturemos:
@0-^/'*'d @0-^N&/-&8'd @0-^&`(*8&' y @0-^.&81^@&:/ son los modulos que se lncluyen en este gruo. Solo el rlmero se lncluye en lu comlluclon or
defecto.
XK -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
K-1"*3& 1% +'E32;(,+-' 1%* &%27+132 4 1% 2%I+&523 1% *( (,5+7+1(1
Lstos modulos roorclonun lnformuclon sobre el estudo del servldor y ermlten conflgurur el reglstro de lu uctlvldud.
9,+_",;_!,%=#;
Permlte conflgurur el reglstro del ucceso de usuurlos ul servldor.
9,+_(&:&7(
Muestru lnformuclon sobre el estudo del servldor.
9,+_#%=,
Muestru lnformuclon de conflguruclon del servldor.
9,+_7($)&):!N
Permlte ldentlflcur usuurlos y reglstrurlos de muneru lndlvlduul usundo E11P Cookles. Ll ldentlflcur usuurlos de formu lndlvlduul nos ermlte trutur u
cudu usuurlo de formu unlcu o servlrle lnformuclon ersonullzudu or ejemlo.
Que son lus cookles? lnvestlgu en lnternet y exllcu de formu bslcu como funclonun. Reclentemente Coogle y Mlcrosoft hun
munlfestudo su lntenclon de dejur de usur cookles, slgnlflcu esto que estn dlsuestos u renunclur u lu funclonulldud que roorclonun?
Lnterute en lnternet de que lunteun.
Londe se ulmucenun lus cookles en tu ordenudor? Accede u ulgunu uru ver su contenldo. Lu extenslon Ldlt thls Cookle the Coogle
Chrome uede uyudurte sl exortus ulgunu y lu egus en un documento de texto.
, -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
K-1"*3& 1% ;()%3 1% DNO&
Con este conjunto de modulos odemos munejur y modlflcur lus URLs de nuestro sltlo: u urtlr del nombre de domlno huclu udelunte. Nos ermltlr
creur ullus, nos uyudur u tener vurlos sltlos web en el mlsmo servldor y odremos rescrlblr lus dlrecclones uru que lleven u dlferentes lugures de lu
estructuru de urchlvos y dlrectorlos de nuestro servldor.
9,+_7($)+#)
Yu comentumos ul revlsur el urchlve de conflguruclon de Auche como odlumos creur sltlos ersonules uru cudu usuurlo usundo lu dlrectlvu S'&8-*8.
Lste modulo es el que nos ermlte hucerlo.
9,+_:"#:(
Sl queremos estublecer "ullus' o enluces slmbollcos entre dos rutus de lu estructuru de urchlvos. lncluso ermlte creur redlrecclones de un urchlvo o
dlrectorlo u otro. Lste modulo se comllu or defecto con Auche.
9,+_)$A)#&$
Con este modulo odemos modlflcur lu URL de lu etlclon que huce el cllente uru que seu unu que conflguremos nosotros. Puru ello, se estublece un
utron con el que se comuru lu URL y sl colnclde se cumblu or otru segun otro utron que se estublece. Lsto ermlte entre otrus muchus cosus
modlflcur lu estructuru de urchlvos y dlrectorlos de nuestro nuvegudor web y que lus URLs de lu estructuru untlguu slgun funclonundo. Ls ms otente
que los ullus creudos en el modulo unterlor orque un utron uede englobur muchus URLs (todus lus que cumlun con el utron estublecldo).
9,+_(1$"#%;
Lste modulo corrlge oslbles equenos errores en lus URLs de etlclones or urte de los cllentes. 1lene dos tlos de correcclon: en lu rlmeru ermlte
un error como lu lntroducclon de un curcter de ms, lu omlslon de un curcter o el cublo de un curcter or otro (solo uno) mlentrus que lu segundu
funclonulldud buscu errores rovocudos or el lncorrecto uso de muyusculus y mlnusculus.
Ll modulo comuru lu etlclon con los dlrectorlos y urchlvos que encuentru en lu estructuru. Sl huy unu colncldenclu se reullzu unu etlclon de
redlrecclon ul cllente y sl huy vurlus se le envlu ul cllente lu llstu de colncldenclus.
XF -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
Ll grun roblemu que tlene lu uctlvuclon de este modulo es el tremendo lmucto negutlvo que uede llegur u tener en el rendlmlento del servldor or lo
que huy que estur muy seguros de lu necesldud de uctlvurlo.
9,+_*B,(&_:"#:(
Lste modulo est reluclonudo con el uso de hosts vlrtuules que veremos ms udelunte. 8slcumente slrven uru tener vurlos sltlos web en el mlsmo
servldor Auche. Sln emburgo este modulo no se usu muy hubltuulmente orque lo que ermlte es lu creuclon de hosts vlrtuules de formu dlnmlcu y
solo se recomlendu cuundo se vun u creur muchlslmos y lu conflguruclon munuul vuyu u ser demusludo lentu. Por ejemlo sl un roveedor de servlclos
de lnternet (lSP) declde creur sltlos web uru todos los cllentes que lo sollclten.
P523& ;-1"*3&
Ln este gruo vumos u hublur de vurlos modulos que no encujun en nlnguno de los gruos unterlores ero que merece lu enu tener en cuentu.
9,+_(,
Lste es el modulo que nos ermlte unudlr otros sln lu necesldud de recomllurlos. Ls el modulo que nos ermlte el uso de LSC (Lynumlc Shured Cbject)
y todos los dems modulos de Auche se ueden usur de estu muneru menos este. Recuerdo que cuundo comllumos Auche unudlmos este modulo
uru oder usur otros sln necesldud de recomllur el servldor cudu vez que qulslerumos unudlr o ellmlnur ulgun modulo de nuestro servldor web.
9,+_#9:1
Con este modulo que se comllu or defecto con Auche, se lncluye el soorte uru muus de lmgenes el urchlvos E1ML.
9,+_1),GK
Lste modulo nos ermlte convertlr Auche en un servldor roxy. Un servldor roxy se sltuu entre el cllente y el servldor y bslcumente uctuu como el
servldor uru el cllente y como un cllente uru el servldor. Los motlvos uru usur un servldor roxy ueden ser muy vurludos, ero lncluyen dur ucceso u
determlnudos recursos de lnternet u ordenudores sln dlrecclones vlubles, hucer lu funclon de cuche uru los usuurlos de unu red o control, reglstrur yjo
restrlnglr el uso de determlnudos recursos de lnternet.
-& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
9,+_=#"$_!:!B$
Sl usumos este modulo ermltlmos que Auche ongu en cuche determlnudos urchlvos esttlcos y no cumblen frecuentemente. Ll roblemu con el uso
de estu tecnlcu es que sl el urchlvo cumblu uede turdur bustunte en envlurse el urchlvo modlflcudo u los cllentes debldo u lu colu que tenemos en
cuche.
9,+_+:*
Sl queremos usur vebLAv tendremos que uctlvur este modulo. Eubluremos de vebLAv en el temu .
9,+_$G:91"$
Ls un modulo de vltul lmortunclu uru todo uquel que quleru o necesltu urender u rogrumur un modulo de Auche, ero uru nudle ms. Euy que
tener conoclmlentos del lenguuje de rogrumuclon C uru oder comrenderlo.
EMM -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
lnstuluclon, conflguruclon y uso de los modulos de Auche
Lesues de lu lntroducclon u lus funclones de ulgunos modulos de Auche, vumos u urender u usur ulgunos de ellos. Aunque cudu uno tlene sus
rolus ecullurldudes lu rctlcu con ulgunos nos llevur u comrender el funclonumlento y oder usur cuulquleru consultundo lu documentuclon
ertlnente.
O3& (2,?+73& 1% ,3'E+I"2(,+-' 1% *( +'&5(*(,+-' )32 )(C"%5%
Lste tlo de lnstuluclon llevu usocludu unu dlstrlbuclon de lus dlrectlvus de conflguruclon en vurlos urchlvos. Ls mucho ms ruclonul y slmllflcu lu
udmlnlstruclon del servldor Auche con resecto u lu lnstuluclon munuul que utlllzu un unlco flchero de conflguruclon uunque medlunte lu dlrectlvu
L1.),-& se ude conflgurur ul gusto de cudu uno.
:1:!B$.8!,%=
Ll flchero de conflguruclon rlnclul en este tlo de lnstuluclon es uuchez.conf y se encuentru en f&:.f/(/.N&3f/(/.N&3=.01< e lncluye lus dlrectlvus
rlnclules del servldor. Al flnul del urchlvo y medlunte ordenes *1.),-& se le lndlcu u Auche que debe curgur otros urchlvos donde se encuentru lu
conflguruclon de otros comonentes.
Lebemos echur un vlstuzo ul urchlvo de conflguruclon de Auche
sudo gedit /etc/apache2/apache2.conf
Ls muy urecldo ul de lu lnstuluclon de un servldor LAMP.
1,)&(8!,%=
Ln este flchero se estublecen lus dlrecclones lP y los uertos que vu u usur el servldor. Ln lu lnstuluclon que hemos llevudo u cubo se estublece que se
escuche en el uerto 8c (htt or defecto) y en cuso de que uctlvemos el rotocolo SSL se usurlu el uerto .
c -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
$%**:)(
Se utlllzu uru conflgurur lus vurlubles de entorno del servldor.
B&&1+8!,%=
Lebemos recordur que este es el flchero de conflguruclon rlnclul en lus lnstuluclones de uuche munuules. Aqul se muntlene or comutlbllldud y se
recomlendu que el udmlnlstrudor del servldor lntroduzcu en el lus conflguruclones udlclonules en lugur de lnclulrlus en uuchez.conf.
'$&!':1:!B$.'!,%=8+'
Ln este dlrectorlo se lncluyen conflguruclones udlclonules y ulgunus ullcuclones web ublcun uqul sus urchlvos de conflguruclon. 1umblen lncluye
ulgunos urchlvos de conflguruclon en nuestru lnstuluclon or defecto usl que vumos u $!B:) 7% *#(&:L, : ",( $G#(&$%&$(.
=3;)23/(,+-' 1% *3& ;-1"*3& 4( +'&5(*(13&
Puru comrobur que modulos estn lnstuludos or defecto
apachectl -M
vemos lo slgulente
Loaded Modules:
core_module (static)
log_config_module (static)
logio_module (static)
mpm_worker_module (static)
EM3 -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
http_module (static)
so_module (static)
alias_module (shared)
auth_basic_module (shared)
authn_file_module (shared)
authz_default_module (shared)
authz_groupfile_module (shared)
authz_host_module (shared)
authz_user_module (shared)
autoindex_module (shared)
cgid_module (shared)
deflate_module (shared)
dir_module (shared)
env_module (shared)
mime_module (shared)
c -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
negotiation_module (shared)
reqtimeout_module (shared)
setenvif_module (shared)
status_module (shared)
Syntax OK
Por lo que ul llevur uctlvo el '0^@0-,)& qulere declr que soortu LSC usl que se ueden uctlvur los modulos de muneru dlnmlcu.
Nosotros odemos encontrur los modulos en lu curetu jusrjllbjuuchezjmodules
cd /usr/lib/apache2/modules
ls -la
Lxlsten muchos modulos udlclonules que no se lncluyen en lu lnstuluclon estndur de Auche. Puru consultur estos modulos debemos ejecutur lu orden
sudo apt-cache search libapache2-mod
>'&5(*(,+-'
Puru lnstulur un modulo de Auche huy que usur lu dlrectlvu \0/-W0-,)& del modulo mod_so. Cuyu slntuxls vlene deflnldu como
LoadModule module filename
Londe @0-,)& es el nombre del modulo y <*)&1/@& lu rutu y nombre del urchlvo ='0 donde se encuentru.
EM6 -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
Por ejemlo uru uctlvur el modulo @0-^'(&)*1+
LoadModule speling_module /usr/lib/apache2/modules/mod_speling.so
Slendo necesurlo desues relnlclur Auche
apachectl restart
C"&$)%:&#*:
Ln ulgunus dlstrlbuclones de Llnux huy otru formu de uctlvur los modulos. Sl nos dumos cuentu tenemos dos dlrectorlos jetcjuuchezjmodsuvulluble
y jetcjuuchezjmodsenubled. Ln el rlmero estn todos los modulos que vlenen lncluldos en estu verslon de Auche mlentrus que en el segundo estn
los que tenemos uctlvos en nuestro servldor medlunte enluces slmbollcos u los modulos en el dlrectorlo unterlor.
Puru uctlvur un modulo usumos el comundo uzenmod con el nombre del modulo.
sudo a2enmod speling
que nos lnformu de lo que est sucedlendo y de que es necesurlo relnlclur el servldor
Enabling module speling.
To activate the new configuration, you need to run:
service apache2 restart
y uru desuctlvurlo se huce lguul ero con el comundo uzdlsmod.
sudo a2dismod speling
uru lo que obtenemos unu lnformuclon equlvulente.
c -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
Module speling disabled.
To activate the new configuration, you need to run:
service apache2 restart
desues de cudu uctlvuclon o desuctlvuclon es necesurlo relnlclur el servldor.
apachectl restart
ten en cuentu que lu llneu unterlor es equlvulente u
apache2 restart
D&3 4 ,3'E+I"2(,+-'
Cudu modulo en Auche z tlene un uso y conflguruclon dlferentes. Puru suber como usur cudu modulo lo mejor es consultur lu documentuclon de lu
glnu oflclul. Lesde lu llstu de modulos se uede hucer cllck en cudu uno uru ver sus dlrectlvus y uso.
Nosotros vumos u segulr con el ejemlo del modulo @0-^'(&)*1+= Podemos ver que solo tlene dos dlrectlvus que odemos usur: 9N&.a7(&))*1+ y
9N&.a9/'&]1)H. Lu rlmeru uctlvu o desuctlvu el modulo y lu segundu huce que solo se corrljun los errores de muyusculusjmlnusculus. Puru uctlvurlo lu
correcclon comletu debemos unudlr ul urchlvo de conflguruclon lu slgulente llneu:
CheckSpelling on
Lesues de cudu cumblo en lu conflguruclon es necesurlo relnlclur lu mqulnu uru que lu modlflcuclon surtu efecto.
apache2 restart
EMK -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
Puru robur sl todo funclonu correctumente odemos lntentur curgur lu glnu web htt:jjloculhostjlnsdex.html untes de los cumblos en el servldor.
Nos devuelve unu glnu de error generudu uutomtlcumente con Auche con el slgulente texto:
Not Found
The requested URL /insdex.html was not found on this server.
Apache/2.2.22 (Ubuntu) Server at localhost Port 80
Sl desues de los cumblos lntentumos ucceder u lu mlsmu glnu web veremos que corrlge lu dlrecclon u htt:jjloculhostjlndex.html y curgu lu glnu
de lnlclo de Auche.
Pruebu u uctlvur el modulo que corrlge lu slntuxls modlflcundo el urchlvo httd.conf (no el uuchez.conf yu que usl es ms fcll
comrobur lo que hemos hecho). Pruebu que todo funclonu correctumente y borru lus modlflcuclones en lu conflguruclon.
1en en cuentu lu dlrectlvu lfModule
Levuelve lu conflguruclon ul estudo unterlor u este ejerclclo.
C)!B#*,( +$ !,%=#;7):!#<% :(,!#:+,( : !:+: 9<+7",
Ln el dlrectorlo f&:.f/(/.N&3f@0-'g&1/2)&- odemos ver que huy dos urchlvos usocludos u cudu modulo uctlvo. Los urchlvos .loud lncluyen lu dlrectlvu
uru que se curgue el modulo en cuestlon mlentrus que los urchlvos .conf lncluyen dlrectlvus de conflguruclon que unlcumente se ullcurn sl se curgu
un modulo determlnudo. Lsto se conslgue con lu dlrectlvu L<W0-,)& que funclonu como un lf de rogrumuclon.
Reulmente lo que encontrumos en el dlrectorlo son enluces slmbollcos u los urchlvos en f&:.f/(/.N&3f@0-'g/>/*)/2)&
c, -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
;31Q&5(5"& 4 ;31Q+'E3
Lstos dos modulos nos ermlten obtener lnformuclon muy utll sobre nuestro servldor.
@0-^':/:,' est uctlvudo or defecto en nuestru dlstrlbuclon de Auche, ero se uctlvu y desuctlvu como cuulquler otro modulo. Podemos ver y
modlflcur su conflguruclon en f&:.f/(/.N&3f@0-'g/>/*)/2)&f
gedit status.conf
vumos u urovechur uru ver otru dlrectlvu de conflguruclon. Sl nos fljumos uhoru solo nos ermlte consultur el estudo desde nuestru mqulnu.
Allow from 127.0.0.1 ::1
Podemos unudlr unu llneu debujo con lu dlrecclon lP de otru mqulnu uru que nos de ucceso desde ellu.
Se consultu dlchu lnformuclon en lu dlrecclon o nombre de nuestro servldor con: htt:jjz.68.6.cjserverstutus sl nuestru dlrecclon fueru esu.
mod_lnfo no vlene uctlvudo or defecto
sudo a2enmod info
odemos consultur o modlflcur su conflguruclon
gedit /etc/apache2/mods-enabled/info.conf
Lstu lnformuclon se uede consultur en htt:jjz.68.6.cjserverlnfo modlflcundo lu dlrecclon lP or lu tuyu o el nombre de tu servldor.
Recuerdu que uru oder usur los cumblos en lu conflguruclon huy que relnlclur el servldor.
EMF -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
Consultu los dos urchlvos de conflguruclon usocludos ul modulo stutus. Lstudlu uru que se utlllzun lus dlrectlvus que se ejecutun en
cuso de que se curgue el modulo y comentulo en cluse.
Eubllltu umbos modulos y ermlte que se consulten desde lu mqulnu unfltrlon.
Pruebu el modulo mod_stutus. Comruebu que funclonu y uctlvu lu oclon que muestru el estudo extendldo.
Actlvu el modulo mod_lnfo y comruebu que funclonu. Anude u lu lnformuclon estndur lnformuclon sobre el modulo mod_stutus.
Pruebu u consultur umbus glnus de lnformuclon y echu un vlstuzo u que lnformuclon se uede obtener.
H+2%,532+3& )%2&3'(*%& 1% "&"(2+3&
Ln determlnudus clrcunstunclus (or ejemlo unu lnstltuclon educutlvu como un lnstltuto o unu unlversldud) es utll que cudu usuurlo tengu un
dlrectorlo en el que uedu creur su rolo conjunto de glnus web. Sl el numero de usuurlos es grunde, esto uede curgur lnnecesurlumente de
trubujo ul udmlnlstrudor del servldor. Auche ofrece unu ulternutlvu uutomutlzudu uru estu sltuuclon medlunte el modulo @0-^,'&8-*8.
Sl uctlvumos el modulo (or defecto no vlene uctlvo) cudu usuurlo tendr un esuclo ul que se ucceder medlunte lu URL
htt:jjsltloejemlo.comjnombreusuurlo donde nombreusuurlo ser el nombre que tlene en el servldor Llnux.
Cudu usuurlo uede creur uhoru en su curetu ersonul un dlrectorlo (,2)*.^N:@) donde ublcur sus glnus. Aqul se exllcu en ms detulle como se
utlllzu lu curetu ersonul.
No se uctlvu estu oclon uru el usuurlo 800:.
Ln lu documentuclon del modulo uedes observur que el dlrectorlo en el que cudu usuurlo odr creur sus glnus es ultumente conflguruble.
c -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
Actlvu el modulo mod_userdlr y creu unu curetu uru el usuurlo con el que lnstuluste Llnux. Lentro de lu curetu creu un urchlvo
ruebu.html y conflguru el modulo uru que ul ucceder u lu curetu ersonul del usuurlo desde un nuvegudor web se muestre dlcho
urchlvo or defecto.
Por ultlmo desuctlvu el modulo.
EEM -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
Eosts vlrtuules
Auche uede servlr vurlos sltlos web desde un unlco servldor web. Ll cllente nuncu dlferenclur sl son sltlos en servldores dlferentes o en lu mlsmu
mqulnu. Auche es un servldor muy otente uru lu utlllzuclon de estu oclon.
Sl or ejemlo somos los gestores de dos domlnlos LNS (www.luemresu.es y www.mluglnu.es) odemos ulojur umbos sltlos en el mlsmo servldor
Auche. Uno de estos domlnlos se conslderur el sltlo rlnclul y todos los dems sern los hosts vlrtuules.
ventujus:
. Arovechur el hurdwure exlstente.
z. Arovechur lus dlrecclones lP ubllcus dlsonlbles.
Unu grun ventuju en el uso de hosts vlrtuules en Auche es que 1$)9#&$ B$)$+:) lu conflguruclon del sltlo rlnclul or lo que no hubr que reconflgurur
todus lus dlrectlvus, solo lus que cumblen.
Al lguul que usubu con los modulos, exlsten dos dlrectorlos uru contener los sltlos vlrtuules, uno uru los dlsonlbles y otro uru los uctlvos:
f&:.f/(/.N&3f'*:&'g/>/*)/2)& y f&:.f/(/.N&3f'*:&'g&1/2)&- resectlvumente. Ll segundo contlene enluces slmbollcos u los sltlos del rlmero que esten
uctlvos.
6+5+3 )32 1%E%,53
Lu conflguruclon del servldor vlrtuul or defecto se uede consultur
gedit /etc/apache2/sites-available/default
lo que nos mostrur
-& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
EE3 -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog $APACHE_LOG_DIR/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog $APACHE_LOG_DIR/access.log combined
-& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
</VirtualHost>
Podemos comrobur que en el dlrectorlo de sltlos uctlvos se encuentru un urchlvo MMMg-&</,): que es el enluce slmbollco ul sltlo or defecto.
Lstudlu y comentu en cluse lus dlrectlvus lncluldus en lu conflguruclon del sltlo vlrtuul or defecto.
Ln el urchlvo odemos observur que el dlrectorlo rulz es f>/8fDDDf y lu conflguruclon que tlene el dlrectorlo. 1en en cuentu que es necesurlo relnlclur
Auche uru que los cumblos en lu conflguruclon surtun efecto.
EE6 -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
Un dlrectorlo heredu lus dlrectlvus del suerlor sl no se sobrescrlben. Por ello, todos los dlrectorlos que creemos dentro de f>/8fDDDf tendrn lu
mlsmu conflguruclon que el rulz exceto en uquellus dlrectlvus que eseclflquemos en lu conflguruclon rolu del dlrectorlo.
vumos u modlflcur lu conflguruclon del sltlo or defecto. Creu un urchlvo !"#=N:@) en el dlrectorlo rulz con tu nombre y tus dutos.
Ahoru queremos que el lndlce o glnu rlnclul del dlrectorlo seu lu que ucubus de creur. Que dlrectlvu debes unudlr? Ls oslble
estublecer ms de unu glnu rlnclul? Ln cuso uflrmutlvo, cul se curgur sl uccedemos ul sltlo sln eseclflcur glnu? Que sucede sl
no huy nlngunu de lus glnus estublecldus como glnu rlnclul? 8uscu unu dlrectlvu que deshublllte el llstudo de urchlvos lncluso sl no
encuentru nlngunu de lus glnus or defecto.
Creu un nuevo dlrectorlo dentro del dlrectorlo rulz. Ll nombre del dlrectorlo ser tu uellldo. Creu vurlos urchlvos html ero no
estublezcus nlnguno como el rlnclul. Accede ul dlrectorlo desde un nuvegudor. Ahoru modlflcu lu conflguruclon del dlrectorlo uru
que llste el contenldo. Que sucede? Lstublece uno de los urchlvos como el rlnclul uru el dlrectorlo y vuelve u robur.
Recuerdu que desues de cudu cumblo en lu conflguruclon es necesurlo relnlclur Auche.
Como yu debes huber vlsto en lu rctlcu, uru deshubllltur el llstudo de los contenldos de un servldor, host vlrtuul o dlrectorlo se usu
Options -Indexes
Sl quleres uctlvurlo uru un servldor, dlrectorlo o host vlrtuul se utlllzu
Options Indexes FollowSymLinks
Lu oclon de segulr los enluces no es obllgutorlu ero se suele unudlr.
1en en cuentu que huy que mlrur que lu conflguruclon no este sobrescrltu en lu conflguruclon del host vlrtuul or defecto o de ulgun dlrectorlo en
urtlculur. Lo que debe hucerse en estos cusos es unu comrobuclon de lu dlrectlvu de lo urtlculur u lo generul: dlrectorlos, host vlrtuul y servldor.
-& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
K31+E+,('13 *3& ;%'&(R%& 1% %2232
Lu dlrectlvu U8808!0.,@&1: slrve uru estublecer mensujes de error ersonullzudos uru dlferentes sltuuclones. Los codlgos de error que ueden
utlllzurse son los deflnldos or lu orgunlzuclon w uru el rotocolo htt en este cuso lu verslon . y se ueden consultur uqul. Ln estu otru glnu se
exllcun de unu muneru ms comrenslble. 1en en cuentu que el codlgo es solo el ultlmo numero de cudu uurtudo y tlene tres clfrus. Lstu dlrectlvu se
usur tuntus veces como se creu necesurlo. Se estublece de muneru lndeendlente 1:): !:+: (#&#, *#)&7:" y se suele escrlblr debujo de 9,':0@\0+.
Ln el uurtudo unterlor hemos vlsto que se usu unu vurluble de entorno llumudu "Z"9TU^\]h^!L[ uru determlnur el dlrectorlo donde se ublcurn los
urchlvos de log. Ln estu lnstuluclon es f>/8f)0+f/(/.N&3f ero sl no odemos buscur los urchlvos en lu estructuru de dlrectorlos o consultur el vulor de lu
vurluble de entorno.
Lstublece ucclones ersonullzudus uru el error c. Prlmero redlrlge lus consultus u glnus no encontrudus u lu glnu rlnclul del
sltlo. Luego ruebu u redlrlglr estos errores u lu glnu rlnclul del lnstltuto. Ln lu terceru ruebu debes mostrur un mensuje
dlrectumente que dlgu "glnu no encontrudu, consulte u Nombre Aellldo' con tu nombre y uellldo. Por ultlmo creu un urchlvo html
que exllque el error y huz que se muestre sl se du el cuso.
Consultu lu llstu de errores deflnldos y uuntu los que creus ms utlles. Comentulos en cluse.
9*+(& ( 3523& 1+2%,532+3&
Por defecto lu estructuru de un sltlo web ser lu que demos u los dlrectorlos desde el unto de montuje del dlrectorlo rulz del sltlo, sln emburgo es
oslble lnclulr otros dlrectorlos del rbol de nuestro servldor y hucer que urezcun urte del sltlo como cuulquler otru curetu que este contenldu
flslcumente dentro. Ls ulgo slmllur u tener un enluce slmbollco u urchlvos o curetus en otro dlrectorlo.
Ln el urchlvo de conflguruclon del sltlo rlnclul vlsto untes yu exlste un ullus u un dlrectorlo que se encuentru fueru de lu curetu deflnldu uru el sltlo.
EEK -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
Puru reullzur estu oeruclon se utlllzu lu dlrectlvu ")*/' y justo debujo (no es obllgutorlo ero sl unu buenu rctlcu) se conflguru con lu dlrectlvu
!*8&.:08H como cuulquler otro dlrectorlo.
Ln lu gulu rldu de dlrectlvus, se ueden ullcur u dlrectorlos todus lus que llevun "d' en lu terceru columnu.
Creu un dlrectorlo jvurjextrus y colocu dentro unu glnu E1ML que te ermltu dlferenclurlu de lus dems. Conflguru el dlrectorlo uru
que uurezcu como jextrus en nuestro sltlo web y ullcu lus dlrectlvus de dlrectorlo que conslderes lmortuntes.
N%1+2%,,+3'%&
Algunus veces es utll oder redlrlglr lus llumudus u unu dlrecclon web uru que se rocesen en otro unto. Por ejemlo sl hemos cumbludo lu estructuru
de nuestro sltlo y hemos reublcudo lu glnu de contucto odemos querer que los usuurlos que uccedun medlunte lu untlguu dlrecclon seun redlrlgldos
uutomtlcumente u lu nuevu. 1umblen uede ser utll sl hemos dlvldldo nuestro sltlo uru fucllltur lu gestlon o el muntenlmlento.
Puru ello se usu lu dlrectlvu [&-*8&.: que nos ermlte usoclur unu dlrecclon ubsolutu o relutlvu u otru.
Creu unu redlrecclon en el sltlo rlnclul del servldor uru que en cuso de que ulgulen quleru ucceder u juflclones se redlrlju u unu glnu
que vlsltes muy u menudo.
Creu uhoru unu redlrecclon que en el cuso de ulgulen quleru ucceder u jext se le muestre el contenldo de jextrus que creuste en el unto
unterlor.
=2%(,+-' 1% ?3&5& 7+25"(*%&
Lxlsten tres formus dlferentes de creur hosts vlrtuules en Auche:
, -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
. 8usudos en %,96)$(: Lste tlo es lu oclon ms comun. Se conflguru todo uru que multlles domlnlos LNS uunten u unu unlcu mqulnu con
Auche. Requlere conflguruclon del servldor LNS uru que funclone. Lste metodo huce muy fcll mlgrur nuestro servldor u otru dlrecclon lP. Ls
el `%#!, 9J&,+, E7$ *:9,( : $(&7+#:).
z. 8usudos en F-: Ln este metodo se necesltu conflgurur lus dlrecclones lP de cudu sltlo en Auche. Ll servldor flslco tendr vurlus dlrecclones lP,
unu uru cudu sltlo.
. 8usudos en 17$)&,(. Cudu sltlo se utender en lu mlsmu lP o nombre ero en dlstlntos uertos. Ls unu extenslon de cuulquleru de lus
ulternutlvus unterlores.
. vurlos ($)*#+,)$( 1)#%!#1:"$(: Ln estu oclon se muntlenen vurlus conflguruclones rlnclules en el servldor. Solo se recomlendu su uso sl es
necesurlo tener un urchlvo de conflguruclon dlferente uru cudu sltlo. Aenus se usu y es lu oclon menos recomendudu uru conflgurur
nuestro servldor.
Ll uso de estus ulternutlvus no es excluyente. Pueden comblnurse vurlus o todus en el mlsmo servldor Auche.
Ln estu dlrecclon est lu documentuclon sobre hosts vlrtuules de uuche. Ln estu otru se ueden ver ejemlos de conflguruclon.
Lstudlu y comentu en cluse los rlmeros ejemlos del enluce unterlor. Centrute solo en los rlmeros, que trutun de los tlos llstudos
unterlormente.
Con cuulquleru de lus tres ulternutlvus es necesurlo uctlvur rlmero el modulo de hosts vlrtuules.
sudo a2enmod vhost_alias
lo que uctlvu el modulo
Enabling module vhost_alias.
To activate the new configuration, you need to run:
service apache2 restart
EEF -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
y nos lnformu de que es necesurlo relnlclur el servldor.
apachectl restart
Comrobumos que el modulo se encuentre uctlvo.
apachectl -M
vemos que uurece ul flnul de lu llstu.
Loaded Modules:
core_module (static)
log_config_module (static)
logio_module (static)
mpm_worker_module (static)
http_module (static)
so_module (static)
alias_module (shared)
auth_basic_module (shared)
authn_file_module (shared)
-& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
authz_default_module (shared)
authz_groupfile_module (shared)
authz_host_module (shared)
authz_user_module (shared)
autoindex_module (shared)
cgid_module (shared)
deflate_module (shared)
dir_module (shared)
env_module (shared)
mime_module (shared)
negotiation_module (shared)
reqtimeout_module (shared)
setenvif_module (shared)
status_module (shared)
vhost_alias_module (shared)
E3M -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
Syntax OK
Puru usur estos metodos es necesurlo oder hucer que todos los nombres de domlnlo usocludos u los hosts vlrtuules que vumos u creur uunten u lu
dlrecclon lP o lus dlrecclones lP de nuestro servldor web. Sl hemos contrutudo un nombre de domlnlo con un roveedor este nos roorclonur lu
muneru de hucerlo.
Ln cuso de que tengumos o querumos ubllcur nuestros rolos sltlos debemos conflgurur un servldor LNS. Ln los uendlces encontrurs unu muneru
muy slmle de conflgurur LNS en nuestro servldor. Ctru oclon uru roburlo es edltundo el urchlvo N0':'
sudo gedit /etc/hosts
y en el unudlr los ullus necesurlos.
Los sltlos vlrtuules utlllzun unu estructuru de dlrectorlos slmllur u lu que hemos vlsto uru los modulos. Ln
/etc/apache2/sites-available/
Lncontrumos los sltlos dlsonlbles, que ul ser uctlvudos creun un ullus en
/etc/apache2/sites-enabled/
P,(&( *#)&7:"$( 6:(:+,( $% %,96)$(
Lste metodo es el ms recomendudo yu que requlere unu unlcu dlrecclon lP uru oder ulojur multlles sltlos.
Podemos comrobur que en el urchlvo f&:.f/(/.N&3f(08:'=.01< se encuentru lu dlrectlvu
NameVirtualHost *:80
Lstu dlrectlvu es lu necesurlu uru oder usur los hosts vlrtuules vusudos en nombres. Al uctlvurse deshubllltu el servldor rlnclul (el que hublumos
usudo en lu lnstuluclon munuul) y or ello en este tlo de lnstuluclon el servldor vlrtuul es reulmente un sltlo vlrtuul or defecto.
z -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
Ll rlmer uso es creur los reglstros LNS uru que el nombre de domlnlo uunte u nuestru mqulnu o unudlrlos en el flchero N0':'.
Lebemos creur un dlrectorlo uru cudu sltlo y usl tener los documentos seurudos. Adems hubrlu que creur un urchlvo *1-&`=N:@) en el dlrectorlo uru
que lo curgue ul consultur el sltlo.
mkdir /var/www/ejemplo2.es
Ln este unto odemos ucceder u los dutos de ejemloz medlunte lu dlrecclon htt:jjloculhostjejemloz.esj ero nuestro objetlvo es oder hucerlo
escrlblendo htt:jjejemloz.esj
Lo tercero que deberlumos hucer es escrlblr los dutos del nuevo host vlrtuul en lu conflguruclon de Auche. Recuerdo que hemos vlsto dos cusos
dlferentes de donde se encontrubu lu conflguruclon de Auche, ero con lu oclon que estumos usundo uctuulmente lu conflguruclon rlnclul estubu
en el urchlvo f&:.f/(/.N&3f/(/.N&3=.01< y desde el se lmortubun otros muchos. Podemos ver que se lmortu unu curetu comletu de lu que coge lu
conflguruclon de los hosts vlrtuules.
.
# Include the virtual host configurations:
Include sites-enabled/
.
Sln emburgo, untes de hucer esto debemos creur el host vlrtuul en lu curetu de hosts dlsonlbles y lo uctlvuremos cuundo este termlnudo. Lu curetu
en lu que odemos unudlr los dutos de nuestros hosts vlrtuules es f&:.f/(/.N&3f'*:&'g/>/*)/2)&
Sl vumos u lu curetu que nos lndlcun odemos consultur el urchlvo de lu conflguruclon de un host vlrtuul, el sltlo or defecto. Lsto uede servlrnos
ejemlo y gulu uru creur otros.
Creumos el urchlvo de conflguruclon
E33 -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
sudo gedit /etc/apache2/sites-available/ejemplo2.es
y escrlblmos lo slgulente
NameVirtualHost 10.0.2.15:80
<VirtualHost 10.0.2.15:80>
ServerName ejemplo2.es
ServerAlias www.ejemplo2.es
ServerAdmin [email protected]
DocumentRoot /var/www/ejemplo2.es
#
# Aqui pueden ir otras directivas.
# Por defecto hereda las del archivo principal.
#
</VirtualHost>
Lntre todus lus dlrectlvus que se ueden lnclulr son eseclulmente utlles lus referentes u +#)$!&,)#,( yu que sl el sltlo constu de vurlos (lo ms hubltuul)
uede lnteresurnos tener conflguruclones dlferentes uru cudu uno.
z -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
1umblen es hubltuul conflgurur reglstros de error lndeendlentes uru cudu sltlo medlunte lu dlrectlvu udecuudu. Lsto se huce dentro de lu
conflguruclon de cudu sltlo vlrtuul dejundo el rlnclul uru el servldor en sl. Yu vlmos que en el sltlo or defecto se lnclulun.
ErrorLog $APACHE_LOG_DIR/error.log
CustomLog $APACHE_LOG_DIR/access.log combined
Pero or suuesto debemos +:) ,&),( %,96)$( : %7$(&),( )$;#(&),( uru que no se usen los mlsmos.
Ls buenu ldeu )$*#(:) ": !,%=#;7):!#<% +$" (#&#, 1)#%!#1:" uru hucernos unu ldeu de que conflgurur yu que en el ejemlo unterlor he reducldo lus
dlrectlvus ul mlnlmo.
Sl en lugur de lu dlrecclon lP escrlblmos se reullzur uru todus lus lP que tengu lu mqulnu.
Ln los dos cusos en los que hemos escrlto lu dlrecclon lP y el uerto odrlumos huber uesto un usterlsco () en lugur de lu dlrecclon ero se
esturlumos lndlcundo u Auche que escuche todus lus etlclones lo que odrlu generur confllctos. Slemre es referlble concretur los dutos.
Ahoru yu hemos conflgurudo el nuevo host usl que odemos uctlvurlo.
sudo a2ensite ejemplo2.es
y recurgur los sltlos de Auche
service apache2 reload
sl ul hucerlo nos du el error
* Reloading web server config apache2 apache2: Could not
reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
Lebemos ubrlr el urchlvo N::(-=.01< y unudlr
E36 -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
ServerName LocalHost
C el nombre comleto de nuestro servldor.
Yu odemos ucceder u nuestro documento medlunte www.ejemloz.es
Puru desuctlvur un sltlo vlrtuul se huce con (or ejemlo uru desuctlvur el sltlo or defecto).
sudo a2dissite default
Ln cuso de reclblr un $)),) a9)(,?%@ S(;%T+25"(*F3&5 UVWX ?(& '3 T+25"(*F3&5&b suele ser orque hus uesto lu dlrectlvu NumevlrtuulEost en umbos
urchlvos de conflguruclon de los sltlos. Al oder ser unu dlrectlvu de servldor, con onerlu en el N::(-=.01< vule.
Creu un nuevo host vlrtuul busudo en nombre y ruebu que todo seu correcto. Creu otro y vers que uhoru tlenes lu oslbllldud de
ucceder u tres sltlos en lu mlsmu mqulnu. Euz lu usocluclon medlunte el urchlvo N0':' de Llnux. Posterlormente ellmlnuremos lu entrudu
del urchlvo hosts y reullzu lu usocluclon medlunte un servldor LNS. Por ultlmo desuctlvu el sltlo vlrtuul.
Puru estu rctlcu vus u necesltur conflgurur tu servldor LNS. Ln los uendlces exllco como.
z -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
Control de ucceso
Ln este unto comenzumos con vurlos usectos reluclonudos con lu segurldud de nuestro servldor web.
Con este rlmer uurtudo vumos u conslderur los usectos que nos vun u ermltlr flltrur el ucceso u determlnudos recursos.
Ll control de ucceso se reflere u cuulquler metodo que nos ermltu flltrur el ucceso u ulgun recurso determlnudo. Euy tres modulos lmllcudos en el
control de ucceso en Auche: mod_uuthz_host, mod_setenvlf y mod_rewrlte.
1umblen exlsten tres metodos uru gestlonur el control de ucceso reluclonudos con estos modulos.
=3'523* 1% (,,%&3 /(&(13 %' *( 1+2%,,+-'
Lste tlo de control se busu en el uso del modulo mod_uuthz_host y en lus dlrecclones lP de lus mqulnus que qulerun ucceder u nuestro servldor.
Podemos comrobur que este modulo yu est uctlvo en nuestru lnstuluclon y de hecho yu hemos usudo unterlormente este tlo de control de ucceso
uru ermltlr ucceder u urtes de nuestro servldor desde lu mqulnu unfltrlon en lus rctlcus.
Lus dlrectlvus que se utlllzun uru este cuso son "))0D y !&1H. Cenerulmente vun usocludus con otru, ]8-&8. Ll uso de estus dlrectlvus es
Allow from direccin
Ln lugur de unu dlrecclon lP se uede utlllzur el nombre de lu mqulnu u lu que queremos ermltlr o denegur el ucceso.
Sl queremos evltur que desde unu dlrecclon lP determlnudu se uccedu u nuestru mqulnu (o u un recurso determlnudo, recuerdu que nosotros yu lo
hemos usudo dentro de conflguruclon de dlrectorlos eseclflcos) escrlblrlumos
Deny from 23.43.234.22
E3K -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
1umblen odemos flltrur or un nombre de domlnlo (LNS)
Allow from maq_ejemplo.instituto.es
lnvestlgu como se uede flltrur un domlnlo entero y un rungo de dlrecclones lP en lugur de mqulnus sueltus.
es oslble flltrur dlrecclones con unu mscuru que no seu multllo de 8? como?
Lu dlrectlvu ]8-&8 es cusl ms lmortunte que estus que hemos vlsto. lndlcu sl se ullcurn rlmero lus cluusulus !&1H o lus "))0D, ero udems lndlcu
que se hur uru lo que no este eseclflcudo.
Sl usumos
Order Allow, Deny
Prlmero se rocesun todus lus dlrectlvus Allow y sl no nlngunu encuju, lu etlclon se rechuzu. Luego se rocesun todus lus dlrectlvus Leny, sl encuju con
ulgunu se rechuzu lu etlclon. Sl encuju con unu dlrectlvu Allow y unu Leny se ullcu lu ultlmu or lo tunto se rechuzu. 1odus lus etlclones que no
colncldun con nlngunu dlrectlvu se rechuzun.
Sl usumos
Order Deny, Allow
Prlmero se lntentu que encujur lu etlclon con todus lus dlrectlvus Leny y sl colnclde se rechuzu lu etlclon. Luego se rocesun lus dlrectlvus Allow y sl
encuju con ulgunu se ermlte el ucceso. Sl ulgunu etlclon encuju con unu dlrectlvu Leny ero tumblen con unu Allow, se ermlte. 1odus lus etlclones
que no colncldun con nlngunu dlrectlvu se ermlten.
z, -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
Creu un dlrectorlo con tu nombre en el sltlo or defecto. Permlte el ucceso desde lu mqulnu unfltrlon ero denlegulo desde lu mqulnu
en lu que se encuentru el servldor.
1en en cuentu que estus dlrectlvus no son excluslvus de los dlrectorlos. Pueden ullcurse ul sltlo web comleto or ejemlo. Puru ello lrn el lu
conflguruclon generul del sltlo y no dentro de unus etlquetus !*8&:08H.
=3'523* 1% (,,%&3 )32 7(2+(/*% 1% %'532'3
Lste tlo de control de ucceso se reullzu medlunte el uso de los modulos mod_uuthz_host y mod_setenvlf. Se busu en ermltlr el ucceso segun lu
conflguruclon de ulgunu vurluble de entorno de lu mqulnu del usuurlo y or ello no es muy recomenduble.
=3'523* 1% (,,%&3 ,3' %* ;-1"*3 2%.2+5%
Medlunte el uso del modulo mod_rewrlte odemos controlur el ucceso segun crlterlos urbltrurlos. Por ejemlo sl queremos denegur el ucceso durunte
el erlodo de lus ocho de lu turde u lus 6 de lu mununu, escrlblremos
RewriteEngine On
RewriteCond %TIME_HOUR >20 [OR]
RewriteCond %TIME_HOUR <07
RewriteRule ^/fridge - [F]
Ll uso de este metodo se busu en lus dlrectlvus RewrlteCond y RewrlteRule ero quedu fueru del ulcunce de este curso y se lndlcu solo como
lntroducclon u lus oslbllldudes que ermlte.
E3F -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
Autentlcuclon y uutorlzuclon
Lstos dos termlnos vun llgudos ero no son lo mlsmo u esur de que muchu gente los confunde. Lu uutentlcuclon conslste en comrobur que ulgulen es
qulen dlce ser mlentrus que lu uutorlzuclon es comrobur que ulgulen tlene ermlso uru ucceder u un lugur o recurso determlnudo.
Por ejemlo, sl quleres vlujur ul extrunjero (fueru de los ulses que hu flrmudo el Acuerdo de Schengen) necesltus un usuorte y un vlsudo. Ll
usuorte es un documento generul que slrve uru demostrur que eres qulen dlces ser mlentrus que el vlsudo te uutorlzu u vlsltur un uls determlnudo.
Ln lnformtlcu, lu uutentlcuclon uede durnos ucceso u dlferentes recursos uru los que estemos uutorlzudos, e lncluso estus uutorlzuclones ueden
vurlur deendlendo de dlferentes clrcunstunclus. Por ejemlo, odemos tener ermlso uru ucceder u determlnudo recurso en unu frunju horurlu
determlnudu o desde lu oflclnu de trubujo ero no desde cusu.
Ll roceso de uutorlzuclon suele lmllcur lu uutentlcuclon. Por ejemlo sl un cllente qulere ucceder u determlnudo recurso el servldor le lde que se
uutentlque (medlunte un mensuje de estudo c: Authorltutlon Requlred) or ejemlo con unu sollcltud de usuurlo y contrusenu. Sl estu uutentlcuclon
es osltlvu se ermltlr el ucceso y sl no se resonder con otro mensuje c.
Un roblemu de estu formu de uutentlcuclon es que lu contrusenu nl se encrltu nl se ocultu, or lo que ms udelunte hubluremos del rotocolo htts.
Cuulquleru con un snlffer odrlu lntercetur los nombres de usuurlo y contrusenus.
G* ;-1"*3 ;31Q("5?
Lste modulo nos ermlte reullzur uutorlzuclon de unu muneru bustunte bslcu. Nos vu u ermltlr estublecer ucceso medlunte usuurlo y contrusenu u
secclones de nuestro sltlo.
Por ejemlo odemos estublecer un dlrectorlo ul que huyu que ucceder con contrusenu. Podemos eleglr cuulquler dlrectorlo slemre que el 7(7:)#, que
lunzu uuche (dlrectlvu S'&8) tengu ucceso u el. No es necesurlo que el dlrectorlo este en lu estructuru bslcu de nuestro sltlo, ero sl no est
tendremos que estublecer un ")*/'.
z -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
mkdir /var/www/privado
mkdir /var/secreto
Ahoru unudlmos ul sltlo en el que querumos gestlonur lu uutentlcuclon
gedit /etc/apache2/sites-available/default
lu conflguruclon uru el dlrectorlo
<Directory "/var/www/privado">
AuthName Acceso privado: Introduzca su usuario y contrasea
AuthType Basic
AuthUserFile /var/secreto/.miembros
Require valid-user
</Directory>
! ",:Ne/@& le lndlcu ul usuurlo que hucer. Ls un mensuje uru el usuurlo.
! ",:NPH(& es el tlo de uutentlcuclon que usuremos, htt solo udmlte Y(&+,. Lu otru oclon que exlste es H+I%&5 que u dlferenclu de lu
oclon b/'*. no trunsmlte los nombres de usuurlo y contrusenu como texto luno (y or lo tunto es unu oclon de segurldud mejor)
ero que no est dlsonlble uru todos los nuvegudores veb como oclon "outofthebox'. Ll clfrudo que usu lu oclon !*+&': es
bustunte debll or y uunque su uso no es ldentlco ul de lu oclon b/'*. es bustunte slmllur, or lo que no lo veremos.
! ",:NS'&8G*)& es el urchlvo que se utlllzur uru guurdur lus contrusenus. lndlcu lu rutu y se llumur .mlembros.
! [&Q,*8& eseclflcu que ser necesurlo ucceder con un usuurlo vlldo.
Ahoru necesltumos creur el urchlvo de contrusenus.
E4M -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
/usr/bin/htpasswd -c /var/secreto/.miembros srsergio
Londe debers eseclflcur lu rutu u los ejecutubles de uuche sl no es lu mlsmu, c es lu oclon uru creur el urchlvo usl que sl vus u unudlr otro mlembro
debes qulturlu. Lu rutu ul urchlvo de contrusenus debe ser lu mlsmu eseclflcudu uru lu conflguruclon del sltlo y '8'&8+*0 ser el nombre de usuurlo que
queremos creur. Nos edlr que creemos unu contrusenu.
Podemos usegururnos de que se hu creudo el usuurlo ubrlendo el urchlvo. Lute cuentu de que lu contrusenu est codlflcudu.
gedit /var/secreto/.miembros
Relnlclu uuche
apachectl restart
Ahoru yu tlenes unu secclon uru ucceso solo con usuurlo y contrusenu.
1en en cuentu que lu debllldud de B&&1 en lu trunsmlslon de lu lnformuclon huce que este metodo %, ($: ($;7), ero se uede soluclonur usundo B&&1(
como veremos ms udelunte.
Creu unu secclon rlvudu en tu sltlo e lntroduce ulgunos urchlvos html. Creu ul menos dos usuurlos que tengun ucceso y ruebu u
ucceder tunto con ellos como con dutos no vlldos.
Slemre se hublu de que lu lnformuclon que se trunsmlte or lnternet como texto luno es muy fcll de lntercetur. Como se hurlu esto
es nuestru red lnternu? Que rogrumus necesltus? Serlus cuuz de lntercetur un usuurlo y contrusenu envludos or un usuurlo uru
ucceder u lu secclon rlvudu creudu en el unto unterlor?
Amlluclon: lnvestlgu como se hurlu lo mlsmo con lu oclon !*+&':. Purece ser que Auche true Llgest desuctlvudo or defecto y lo
unlco que huce es codlflcur ero no encrltur los dutos or lo que no merece lu enu nl uctlvurlo.
-& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
O3& E+,?%23& Z?5(,,%&&
Lus soluclones vlstu hustu uhoru no son muy udecuudus sl queremos oder delegur lu creuclon y control de zonus rlvudus uru mlembros
determlnudos. Lsto uede ser muy utll sl or ejemlo hemos montudo unu web uru unu emresu que tlene su rolo udmlnlstrudor de slstemus yu
que evltur que tengumos que gestlonur todo nosotros. 1umblen nos fucllltur el trubujo sl huy muchos cumblos en lus zonus rlvudus o mlembros que
se conecten u ellus.
Podemos conocer ms sobre htuccess en este urtlculo. Ctru web nos lntroduce u ulgunos de los usos ms comunes de estos urchlvos con unu segundu
urte.
Puru ermltlr el uso de flcheros =N:/..&'' en nuestro servldor o sltlo vlrtuul (lu dlrectlvu se uede usur en umbos entornos) lo rlmero que debemos
hucer es modlflcur el urchlvo de conflguruclon. Ln ml cuso voy u hucerlo en el sltlo vlrtuul or defecto.
Lebemos modlflcur lu dlrectlvu
AllowOverride None
Y cumblurlu u
AllowOverride AuthConfig
Ll lugur en el que modlflcur lu dlrectlvu deende de lo que necesltemos. 1en en cuentu que lus dlrectlvus se heredun sl no se encuentru otru ms
eseclflcu, or ello, en nuestro urchlvo de conflguruclon del sltlo vlrtuul or defecto deberlu lr en el dlrectorlo jvurjwww or lo menos yu que sl lo
onemos en el rulz ero no en el rlmero, se muntendrlu lu conflguruclon unterlor.
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride AuthConfig
E43 -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
Order allow,deny
allow from all
</Directory>
Lo que ermlte que modlflquemos lus dlrectlvus de uutorlzuclon medlunte un flchero . N:/..&''. Ln muchos sltlos lndlcun que huy que ermltlr lu sobre
escrlturu de todus lus dlrectlvus medlunte "))0D]>&88*-& ")) ero es evldente que es eor oclon.
Luego relnlclumos el servldor Auche
apachectl restart
Ahoru odrlumos creur flcheros dlrectorlos y conflgurur su control de ucceso en cudu uno de ellos.
mkdir /var/www/ficheros/
cd /var/www/ficheros/
Ln cudu dlrectorlo que queremos gestlonur usl debemos creur un flchero .N:/..&'' y durle un contenldo slmllur ul slgulente.
AuthName Seccin Privada: Prueba de .htaccess
AuthType Basic
AuthUserFile /var/secreto/.miembros
Require valid-user
1en en cuentu que:
-& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
! Lo que hemos hecho hu sldo sucur lu conflguruclon del control de ucceso del urchlvo de conflguruclon del servldorjsltlo vlrtuul u un
urchlvo lndeendlente.
! Ee usudo el mlsmo urchlvo de usuurlos y contrusenus que en el unto unterlor uru durle coherenclu u los ejemlos, ero esto no es
necesurlo.
! Los usuurlos y sus contrusenus se creurlun lguul que en el uurtudo unterlor.
! Lu creuclon o modlflcuclon de un flchero de este tlo no lmllcu relnlclur el servldor.
! Se debe mejorur lu segurldud cumblundo los ermlsos de ucceso ul flchero .N:/..&''. Por lo menos el usuurlo de Auche debe tener
ucceso.
Creu dos dlrectorlos en tu sltlo or defecto y conflgurulos uru que en el rlmero uedun ucceder dos usuurlos y en el segundo solo uno
de ellos. Puru ello en Requlre debe lr su nombre de usuurlo.
9I2")('13 "&"(2+3& )(2( %* ,3'523* 1% (,,%&3
Sl queremos reflnur ms el control de ucceso tenemos vurlus ulternutlvus. Por ejemlo odemos ermltlr el ucceso u solo ulgunos usuurlos
eseclflcundo sus nombres en lu clusulu [&Q,*8& en cuulquler sltlo que lu usemos.
require user sergio maria
Ctru ulternutlvu es creur urchlvos de usuurlos dlferentes uru dlstlntos dlrectorlos de nuestro sltlo.
<Directory "/var/www/ventas">
AuthName Acceso privado: Introduzca su usuario y contrasea
AuthType Basic
AuthUserFile /var/secreto/.miembros-ventas
E46 -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
Require valid-user
</Directory>
<Directory "/var/www/finanzas">
AuthName Acceso privado: Introduzca su usuario y contrasea
AuthType Basic
AuthUserFile /var/secreto/.miembros-finanzas
Require valid-user
</Directory>
Lu ultlmu oclon usur or usur lu dlrectlvu ",:Nh80,(G*)&. Asl odremos tener todos los usuurlos en el mlsmo flchero y luego uslgnurles gruos en
otro urchlvo.
<Directory "/var/www/ventas">
AuthName Acceso privado: Introduzca su usuario y contrasea
AuthType Basic
AuthUserFile /var/secreto/.miembros
AuthGroupFile /var/secreto/.grupos
-& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
Require group ventas
</Directory>
<Directory "/var/www/finanzas">
AuthName Acceso privado: Introduzca su usuario y contrasea
AuthType Basic
AuthUserFile /var/secreto/.miembros
AuthGroupFile /var/secreto/.grupos
Require group finanzas
</Directory>
1en en cuentu que:
! Se usu el mlsmo urchlvo de mlembros uru todos los dlrectorlos.
! Euy que unudlr lu dlrectlvu y el flchero de gruos.
! Ln lu clusulu Requlere se lndlcu el gruo que uede ucceder.
Ll urchlvo .gruos ser un flchero de texto con ulgo como
ventas: sergio maria
finanzas: carlos roberto
E4K -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
Modlflcu lu conflguruclon del ejerclclo unterlor uru que uedun ucceder dos gruos de usuurlos dlferentes u cudu dlrectorlo con el
ultlmo metodo. Puede un usuurlo estur en ms de un gruo?
Anude un tercer dlrectorlo y otro gruo. Lu ucceso ul tercer dlrectorlo u dos de los tres gruos. Como se huce esto?
, -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
Ll rotocolo E11PS
Yu hemos vlsto que el rotocolo E11P es muy lnseguro uru trunsmltlr
lnformuclon senslble. Ls muy fcll cuturur estu lnformuclon y leer dutos como
nombres de usuurlos o cluves. Cuulquler lnformuclon que se envlu vu sln clfrur or
lo que se trunsmlte como un texto que cuulquleru que cuture nuestru
comunlcuclon uede leer.
Ll rotocolo E11PS se utlllzu uru evltur este roblemu. Sus slglus se
corresonden con TH(&8:&`: P8/1'<&8 Z80:0.0) 6%,"2% lo que yu lndlcu que unude
segurldud u E11P. Reulmente no es un rotocolo slno que se vusu en lntroduclr
unu cuu con el rotocolo SSL (o derlvudos, ms udelunte se hublu de todo esto)
entre lu cuu de trunsorte y lu cuu de ullcuclon en el conjunto de rotocolos
1CPjlP.
Ll rotocolo E11PS roorclonu :7&$%&#!:!#<% de los usuurlos con el servldor con
el que se conectu. Por ejemlo cuundo nos conectumos u nuestro correo web
(or ejemlo Cmull) suele hucerse medlunte unu conexlon E11PS.
Con el uso de este rotocolo tumblen se
conslgue $%!)#1&:!#<% de lu lnformuclon que envlumos y reclblmos. Por ello
cuundo nos conectumos u un servldor que solo utlllzu E11PS uru lu uutentlcuclon
el nuvegudor nos uvlsu (unu vez nos hemos conectudo) de que el resto de lu
comunlcuclon no usu E11PS y or lo tunto lu trusferenclu de lnformuclon uede
ser lnseguru. Lsto nos rotege contru los utuques de tlo W/1gL1gPN&gW*--)&. 1odo lo que se envlun en un mensuje E11PS est encrltudo, lncluyendo
lus cubecerus. Por suuesto lu encrltuclon tumblen est sujetu u utuques que lntenten desclfrur lu cluve y el ulgorltmo usudos uru clfrur el contenldo.
lnvestlgu que ulgorltmos y que tlo de cluves se utlllzun en lnternet uctuulmente.
E4F -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
Que son los ulgorltmos de cluve slmetrlcu y los ulgorltmos de cluve uslmetrlcu? Que con lus cluves rlvudus y cluves ubllcus? Como se
utlllzun?
Lstu glnu de lu vlkledlu te uede uyudur u comrender estos concetos y los que veremos u contlnuuclon. Neceslturs tener unu
ldeu de los untos unterlores de este ejerclclo uru entenderlu.
Un sltlo que use E11PS deberlu tener todos sus contenldos rotegldos or este rotocolo uru evltur oslbles utuques o robos de lnformuclon u truves
de lus urtes lnsegurus.
E11PS es un oco menos eflclente que E11P or lo que sl se utlllzu en sltlos donde lu trunsferenclu de lnformuclon es muy grunde uede noturse en el
rendlmlento. Por suuesto en el cuso de que lu lnformuclon trusferldu seu senslble, lus ventujus comensun con creces u los lnconvenlentes.
Ll rotocolo E11PS usu el 17$)&, HHc or defecto. Al lguul que sucedlu con E11P y el uerto 8c, en cuso de que se utlllce este uerto no es necesurlo
que el cllente lo lndlque en lu burru de dlrecclones del nuvegudor.
-& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
Certlflcudos Llgltules
Ll rotocolo E11PS encrltu lu comunlcuclon uru que qulen
cuture trumus de ellu no uedu ver los contenldos. Los
nuvegudores web uctuules busun el uso de E11PS en el
conoclmlento de Autorldudes Certlflcudorus que emlten
Certlflcudos Llgltules uru usegurur que el servldor ul que nos
conectumos es qulen dlce ser. Lstus Autorldudes Certlflcudorus
son o ugentes dedlcudos u ello eseclflcumente o emresus
como Mlcrosoft.
Ll uso de E11PS se busu en lu conflunzu que nos roorclonen
lus entldudes que emlten los certlflcudos. Cuundo usumos un
nuvegudor web determlnudo, lu emresu que lo hu desurrolludo
yu hu lntroducldo en el determlnudus Autorldudes Certlflcudorus
que conslderu de conflunzu. Lstus entldudes se ueden consultur
en el rolo nuvegudor y odemos modlflcurlus. Ln lu lmugen
uedes ver urte de lu llstu lncluldu en llrefox.
lnvestlgu en los dlferentes nuvegudores que tengus
lnstuludos como se consultu lu llstu de Autorldudes
Certlflcudorus en lus que se conflu.
Ln lu cuturu de lmugen se ueden ver otrus estunus
uru el udmlnlstrudor de certlflcudos. Puru que slrve
cudu unu de ellus?
E6M -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
Lxlsten muchos servldores que usun certlflcudos no emltldos or estus uutorldudes. Ln esos cusos deende del usuurlo el uceturlos o no. Ll nuvegudor
muestru unu udvertenclu cuundo vumos u conecturnos y tendremos que decldlr sl queremos segulr o referlmos no conecturnos con el destlno.
Ln lu lmugen odemos ver un ejemlo con vurlus urtes:
. Sl no conflumos en el destlno debemos ulsur el
boton uru sullr.
z. Podemos obtener ms lnformuclon. Ln este
cuso vemos que lu entldud es gob.es or lo que
odemos decldlr conflur en el.
. Sl queremos conflur debemos leer los rlesgos
que conllevu.
. Podemos unudlr unu exceclon de segurldud
uru conflur en este sltlo u urtlr de uhoru.
Que es lu flrmu dlgltul y cul es su
reluclon con los certlflcudos dlgltules?
Un >$)&#=#!:+, ?#;#&:" es un documento electronlco que
enluzu unu cluve ubllcu con unu llrmu Llgltul e
lnformuclon ersonul sobre lu ersonu u orgunlzuclon
que qulere usur lu cluve ubllcu. Slrve uru usegurur que
esu cluve ertenece u dlchu ersonu u orgunlzuclon. Lu
lnformuclon ersonul que se udjuntu suele ser el
nombre, lu dlrecclon, el correo electronlco, etc. Lu
llrmu Llgltul suele ser lu de unu Lntldud Certlflcudoru
reconocldu uru que los cllentes uedun conflur en que
lu Cluve Publlcu y lu lnformuclon ersonul corresonden
u lu mlsmu ersonujorgunlzuclon. Lste tlo de
certlflcudos se conocen como >$)&#=#!:+,( Y:ML yu que
-& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
se encuentrun en el nlvel ms ulto de un rbol de certlflcudos. Ll usuurlo debe flurse de lu entldud emlsoru del Certlflcudo Rulz yu que es el que useguru
lu uutentlcldud de todos los certlflcudos emltldos or ellu. Lu llstu de certlflcudos que se lncluyen or defecto en un nuvegudor web corresonden u
estu cutegorlu y el usuurlo conflu en los desurrolludores del nuvegudor uru que se useguren de que esos certlflcudos son de conflunzu.
Como se uede ver lu segurldud en lnternet se busu en muchos nlveles de conflunzu! Nudle debe ususturse. Lus uutorldudes que lncluyen los
rlnclules nuvegudores estn verlflcudus y con revlsudus con regulurldud.
Ln estu glnu de lu vlkledlu se uede obtener muchu ms lnformuclon sobre los Certlflcudos Llgltules.
Ln estu lmugen se uede ver el uso de certlflcudos dlgltules.
Los X$)*#+,)$( +$ >$)&#=#!:+,( son los que se encurgun de vulldur o certlflcur lus cluves.
Ln lu uctuulldud se utlllzun vurlos formutos de Certlflcudos Llgltules en lnternet. Ll ms extendldo es el .c
Lee estu glnu y comentu en cluse los untos que conslderes ms lnteresuntes sobre lu lnformuclon obtenldu.
Ln nuestro nuvegudor odemos consultur los detulles de un certlflcudo. Sl nos onemos sobre el certlflcudo determlnudo y ulsumos "ver' suele
uurecer unu oclon "Letulles' en lu que odemos consultur dutos como el ulgorltmo y el vulor de lu flrmu.
P/5%'%2 "' ,%25+E+,(13 1+I+5(*
Puru oder utlllzur E11PS en nuestro servldor es necesurlo dlsoner de un Certlflcudo Llgltul. Podemos obtener un Certlflcudo Llgltul de unu Autorldud
Certlflcudoru (.&8:*<*./:& /,:N08*:Hd 9") o creur nuestru rolu Autorldud Certlflcudoru y generur nuestros Certlflcudos Llgltules.
Ln Lsunu, odemos obtener Certlflcudos Llgltules u truves de lu lbrlcu Nuclonul de Monedu y 1lmbre o medlunte emresus como verlslgn.
E63 -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
Puru obtener un Certlflcudo de unu Autorldud Certlflcudoru generulmente huy que demostrur que somos qulenes declmos ser (como lo estublece cudu
uutorldud) y generur unu etlclon uru nuestro servldor (.&8:*<*./:& '*+1*1+ 8&Q,&':d 97[) que se debe envlur u lu uutorldud. Cuundo nuestru etlclon
huyu sldo ucetudu, yu odemos lnstulur el certlflcudo en nuestro servldor.
-& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
SSLj1SL
7&.,8& 70.a&: \/H&8 (SSL) fue desurrolludo or Netscue en los
unos c. Eun exlstldo tres verslones de SSL ero uctuulmente
se utlllzu lu .c. Eu derlvudo en otro rotocolo P8/1'(08: \/H&8
7&.,8*:H (1LS) que tumblen tlene tres verslones, lu .c, lu . y lu
.z. Lu muyorlu de los nuvegudores uctuules usun lu verslon .c
Como lu hemos comentudo con unteluclon, E11PS es unu
lmlementuclon de E11P sobre SSL o 1SL en el servldor.
Lste rotocolo se colocu sobre lu cuu de trunsorte donde los
dos rotocolos ms tllcos son 1CP y ULP.
Ls un rotocolo que se utlllzu uru usegurur !,%=#+$%!#:"#+:+,
:7&$%&#!#+:+, #%&$;)#+:+ y %, )$17+#, entre el cllente y el
servldor.
lnvestlgu y comentu los cuutro concetos del rrufo
unterlor.
Lxlsten dos modos: Uno en el que solo el servldor demuestru
su ldentldud y otro en el que tunto el cllente como el servldor
usun Certlflcudos Llgltules.
E66 -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
Lus ullcuclones del uso de SSLj1SL son multlles e lncluyen lu creuclon de redes rlvudus vlrtuules (vPN), el uso en comerclo electronlco y en el correo
electronlco, etc.
-& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
E11PS en Auche
Auche utlllzu un modulo eseclflco busudo en un royecto que se llumu CenSSL. Puru utlllzur E11PS en Auche es necesurlo que el modulo @0-^'')
este uctlvo.
sudo a2enmod ssl
service apache2 restart
Ahoru el servldor deberlu estur escuchundo tunto el uerto 8c (htt) como en el (htts). Sl mlrumos el urchlvo de conflguruclon de uertos
gedit /etc/apache2/ports.conf
veremos que sl el modulo @0-^'') est uctlvo se unude lu orden
NameVirtualHost *:80
Listen 80
<IfModule mod_ssl.c>
# If you add NameVirtualHost *:443 here, you will also have to change
# the VirtualHost statement in /etc/apache2/sites-available/default-ssl
E6K -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
# to <VirtualHost *:443>
# Server Name Indication for SSL named virtual hosts is currently not
# supported by MSIE on indows XP.
Listen 443
</IfModule>
Eemos vlsto que estu dlstrlbuclon de Auche vlene con dos sltlos or defecto. Ll que no hemos usudo se llumu !&</,):g77\ reclsumente. Sl lo
uctlvumos tendrlumos yu un sltlo con dlchu conflguruclon que escuchurlu or conexlon seguru.
sudo a2ensite default-ssl
service apache2 reload
Ahoru tendrlumos dlsonlble lu oslbllldud de conecturnos de formu seguru u umbos servldores. Sl no eseclflcumos el rotocolo o usumos htt se
conectur de lu formu estndur. Sln emburgo, sl nos conectumos medlunte htts nos muestru unu exceclon de segurldud como lu que vlmos untes.
Lsto es debldo u que ul lnstulur Auche se creu un certlflcudo uutoflrmudo uru el sltlo or defecto.
Sl ubrlmos el urchlvo de conflguruclon del sltlo con ssl odemos ver como est conflgurudo.
# A self-signed (snakeoil) certificate can be created by installing
# the ssl-cert package. See
# /usr/share/doc/apache2.2-common/README.Debian.gz for more info.
# If both key and certificate are stored in the same file, only the
, -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
# SSLCertificateFile directive is needed.
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
1rus reullzur los usos unterlores, ruebu u lntercetur trumus de conexlones htt y htts. Que dlferenclus ves? Cuurdu en un urchlvo
unu trumu de cudu tlo uru su dlscuslon en cluse.
Sl te fljus, los dos sltlos or defecto tlenen conflgurudo el mlsmo dlrectorlo como rulz uru los documentos. Que usurlu sl cumblus el
dlrectorlo rulz de uno de los dos. Pruebulo.
Ls unu mulu oclon dejur ublertu lu oslbllldud de ucceder ul mlsmo sltlo medlunte unu conexlon seguru y unu lnseguru. Por ello sl hubllltumos un sltlo
con E11PS no deberlumos tener uctlvo el equlvulente con E11P como sucede con los dos or defecto. [, !,))$!&, ($)M: +$(B:6#"#&:) $" +$=:7"&8
Sl deshubllltumos el sltlo or defecto odemos ver que uhoru, sl no eseclflcumos el rotocolo, utlllzu E11PS or defecto.
sudo a2dissite default
service apache2 reload
Lstudlu el resto del urchlvo de conflguruclon del sltlo or defecto con ssl y exllcu que hucen el resto de dlrectlvus. Los enluces u
contlnuuclon contlenen todu lu lnformuclon necesurlu.
htts:jjhttd.uuche.orgjdocsjz.zjmodjmod_ssl.html
E6F -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
htts:jjhttd.uuche.orgjdocsjz.zjsslj
=2%('13 "' &+5+3 7+25"(* ,3' FBBM6
Ahoru que hemos robudo el sltlo seguro or defecto, vumos u creur uno desde cero. voy u dejur hubllltudo el sltlo or defecto uru hucer un ejemlo
con un sltlo con E11P y otro con E11PS.
sudo a2dissite default-ssl
sudo a2ensite default
service apache2 reload
Como yu hemos vlsto untes, uru oder usur SSL en Auche es necesurlo tener un certlflcudo. Ll que se lnstulu uru el sltlo de ejemlo yu no es vlldo y
tenemos que consegulr uno. Podemos udqulrlr uno de unu CA o creur uno uutoflrmudo. Por motlvos evldentes nosotros usuremos estu ultlmu oclon.
Puru obtener un certlflcudo es necesurlo generur unu cluve rlvudu y uru ello necesltumos un nombre de domlnlo usl que lo rlmero ser !,%=#;7):) $"
?OX correctumente. Ln ml cuso voy u llumurlo www.conssl.es y hubr que conflgururlo como un host vlrtuul or nombre.
Puru generur lu cluve se utlllzu el comundo genrsu
openssl genrsa -out clavepru.key 2048
Se uede generur unu contrusenu uru lu cluve, ero sl se vu u utlllzur uru creur un certlflcudo no es buenu ldeu orque cudu vez que el servldor web
neceslte ucceder u lu cluve hubr que lntroduclr lu contrusenu. Sl no nos lmortu lntroduclr lu cluve cudu vez que se relnlcle el servldor, usurlumos lu
oclon
openssl genrsa -des3 -out clavepru.key 2048
-& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
Actuulmente se recomlendun longltudes mlnlmus de cluve de zc8 blts.
Lo slgulente ser generur unu etlclon uru nuestro certlflcudo. Lstu etlclon es lu que deberlumos envlur u lu CA uru obtener un certlflcudo flrmudo
or ellos. Luego eserurlumos u que lo flrmurun y nos envlurun el certlflcudo uru lnstulurlo. Nosotros usuremos uno uutoflrmudo.
openssl req -new -key clavepru.key -out peticionpru.csr
Cuundo ejecutumos este comundo nos vu ldlendo lnformuclon de lu emresu uru lu que seu el certlflcudo. Lu vumos rellenundo hustu termlnur. Los
cumos que termlnun en no son obllgutorlos. Sl hublerumos generudo lu cluve con contrusenu nos lu edlrlu untes de rellenur lu lnformuclon.
You are about to be asked to enter information that will be incorporated
into your certificate request.
hat you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:ES
State or Province Name (full name) [Some-State]:Madrid
Locality Name (eg, city) []:Madrid
ERM -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
Organization Name (eg, company) [Internet idgits Pty Ltd]:SergioCuesta
Organizational Unit Name (eg, section) []:SC
Common Name (e.g. server FQDN or YOUR name) []:Sergio Cuesta
Email Address []:[email protected]
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Puru obtener un certlflcudo uutoflrmudo usuremos el comundo
openssl x509 -req -days 365 -in peticionpru.csr -signkey clavepru.key -out certificadopru.crt
Lo que lndlcu que usur el formuto .c y tendr unu vulldez de un uno. Sl todo hu ldo blen deberlumos ver ulgo como lo slgulente
Signature ok
subject=/C=ES/ST=Madrid/L=Madrid/O=SergioCuesta/OU=SC/CN=Sergio Cuesta/[email protected]
Getting Private key
-& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
Ln muchos sltlos vers que en lugur de .8: se creun urchlvos con lu extenslon (&@. Ln teorlu lu dlferenclu es que .8: solo contlene el certlflcudo mlentrus
que (&@ contlene tunto el certlflcudo como lu cluve ero en lu rctlcu esto se lgnoru y du lguul usur unu que otru.
1en en cuentu que todos los urchlvos que se hun creudo en los usos unterlores se hun generudo en el dlrectorlo en el que nos encontrrumos or lo
que huy que moverlos u los sltlos udecuudos. Lu etlclon no es necesurlu.
sudo mv clavepru.key /etc/ssl/private/
sudo mv certificadopru.crt /etc/ssl/certs/
Creuremos un dlrectorlo uru el contenldo del sltlo seguro
mkdir /var/www/con-ssl/
Procedemos u creur el sltlo vlrtuul or nombre
<IfModule mod_ssl.c>
NameVirtualHost 192.168.1.36:443
<VirtualHost 192.168.1.36:443>
ServerName con-ssl.es
ServerAlias www.con-ssl.es
ER3 -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
ServerAdmin [email protected]
DocumentRoot /var/www/con-ssl
<Directory /var/www/con-ssl>
DirectoryIndex index.html
Options -Indexes
AllowOverride None
Order allow,deny
allow from all
</Directory>
ErrorLog $APACHE_LOG_DIR/error_con_ssl.log
LogLevel warn
CustomLog $APACHE_LOG_DIR/con_ssl_access.log combined
-& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
# Esta es la parte de SSL
SSLEngine on
SSLCertificateFile /etc/ssl/certs/certificadopru.crt
SSLCertificateKeyFile /etc/ssl/private/clavepru.key
# Recuerda que lo siguiente es para mantener la compatibilidad con ciertas
# versiones de Microsoft Internet Explorer
BrowserMatch "MSIE [2-6]"
nokeepalive ssl-unclean-shutdown
downgrade-1.0 force-response-1.0
BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
</VirtualHost>
ER6 -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
</IfModule>
Eubllltumos el sltlo y recurgumos Auche
sudo a2ensite con-ssl.es
service apache2 reload
Recuerdu que el nombre que tenemos usocludo en el LNS vu u lu dlrecclon lP de lu mqulnu usl que &$%+)$9,( E7$ 7(:) htts:jjwww.con.ssl.es uru
ucceder ul sltlo seguro. Sl usumos E11P vu ul sltlo or defecto. Puru evltur esto deberlumos unudlr otru entrudu ul LNS uru que vuyu ul sltlo sln SSL
(uerto 8c) y modlflcur lu conflguruclon del host vlrtuul uru que resondu u lus etlclones u ese otro nombre de domlnlo en lugur de u todo ()
Sl los hemos udqulrldo los certlflcudos u truves de unu CA de conflunzu dejurlu de uurecer el uvlso cuundo un cllente se conectu. Lvldentemente uru
un sltlo rofeslonul es ms que recomenduble.
Puru cusos en los que estemos lnvolucrudos en el desllegue en unu emresu muy grunde o or ejemlo unu unlversldud, uede lnteresurnos creur
%7$(&): 1),1#: >C uru uso rolo. 1umblen es oslble creur un sltlo en el que ",( !"#$%&$( &$%;:% E7$ :!!$+$) 9$+#:%&$ 7% !$)&#=#!:+, 1),1#, como
or ejemlo en lu Agenclu 1rlbuturlu. Ambus cosus se ueden hucer usundo ](&177\ ero escuu totulmente ul contenldo del curso.
Creu dos sltlos dlferentes, uno con E11PS y el otro sln el. Conflguru todo correctumente uru que ul lr u un sltlo o u otro use el rotocolo
udecuudo sln necesldud de que el usuurlo lo eseclflque en lu burru de dlrecclones del nuvegudor web.
-& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
Lesllegue de ullcuclones sobre servldores web y Lmuquetudo de ullcuclones web.
Lstos dos concetos no los vumos u estudlur uqul. Lus ullcuclones en servldores web suelen utlllzur ul menos unu buse de dutos y lus que se desllegun
en Auche se estn utlllzundo constuntemente en el modulo de "Lesurrollo veb en Lntorno Servldor'. Ll emuquetudo de ullcuclones es un
conceto que est ms reluclonudo con 1omcut or lo que lo veremos en el temu slgulente.
Ln los cusos en los que no lnstulemos nuestro rolo servldor slno que contrutemos un hostlng, debemos conslderur que tengu lus curucterlstlcus que
necesltemos (or ejemlo que ermltu o roorclone el uso de MySQL y PEP). Cenerulmente uccedemos u nuestru estructuru de curetus medlunte
l1P y u lu buse de dutos medlunte ulgun cllente.
ERK -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
1emu : Admlnlstruclon de servldores de ullcuclones
Unu ullcuclon web es uquellu que funclonu u truves de unu red. Amuzon, Coogle, lucebook o 1wltter son ejemlos de ullcuclones web. Unu ullcuclon
web funclonu en E11P sobre 1CPjlP y los cllentes ucceden u ellu medlunte un nuvegudor web. Cenerulmente es unu ullcuclon que se ujustu ul modelo
cllente servldor y constu de tres cuus yu que huce uso de unu buse de dutos.
Ll termlno Servldor de Allcuclones est usocludo hlstorlcumente u lu lutuformu 'uvu Lnterrlse Ldltlon uunque en lu uctuulldud englobu un conjunto
de lenguujes y curucterlstlcus mucho ms umllo.
Un servldor de ullcuclones es unu lutuformu que rovee ullcuclones softwure roorclonundo servlclos como segurldud, trunsucclones, ucceso u
dutos, etc.
Lxlsten muchos servldores de ullcuclones, slendo los ms frecuentes #&2\0+*. "(()*./:*01 7&8>&8 de ]8/.)&, #&27(N&8& "(()*./:*01 7&8>&8 de LbW,
P0@./: de "(/.N&. Muy reluclonudo con este ultlmo est h)/''G*'N, que fue desurrolludo or 7,1 W*.80'H':&@' y uctuulmente ertenece u ]8/.)&.
Nosotros veremos P0@./: uunque h)/''G*'N es ms comleto. Por que exlsten dos busudos en lo mlsmo? P0@./: solo soortu los !,%&$%$+,)$( A$6
de lu lutuformu 'zLL mlentrus que h)/''G*'N soortu todos los tlos or lo es reulmente un servldor de ullcuclones en un sentldo ms comleto.
vumos u ver 1omcut or su slmllcldud, fucllldud de uso y conflguruclon, bujo consumo de recursos y ulto rendlmlento y or que es muy utlllzudo, ero
en este cuso no exlste un urulellsmo con lo que velumos con Auche y el mercudo est mucho ms frugmento. Ls muy robuble que P0@./: vuyu
dejundo uso u h)/''G*'N. Puru equenus ullcuclones se slgue recomendundo P0@./:, ero sl necesltumos 'zLL ul comleto tendremos que buscur
otru oclon.
Con el tlemo 'uvu hu ldo erdlendo ujunzu como lenguuje de rogrumuclon uru lu web. Ultlmumente se hu ldo quedundo uru ullcuclones grundes
or curucterlstlcus como el bulunceo de curgu, fcll esculubllldud o lus oslbllldudes de comunlcuclon entre slstemus de buckend. Sln emburgo se
conslderu muy esudu uru lus ullcuclones ms equenus y est slendo rldumente sustltuldo or lenguujes como PEP, Ruby o Python. Un ejemlo
de esto es 1wltter que fue desurrolludo con Ruby on Rulls ero cuundo vleron lus dlflcultudes que tenlun uru esculur lu ullcuclon lu mlgruron u 'uvu.
, -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
Por sl fueru oco los ultlmos roblemus de segurldud de 'uvu hun llevudo u lus grundes comunlus de Slstemus Cerutlvos y de desurrollo de
nuvegudores web u recomendur deshubllltur 'uvu de los nuvegudores. lncluso "Eomelund Securlty' un orgunlsmo gubernumentul umerlcuno hu hecho
estu recomenduclon suglrlendo que se deshublllte 'uvu de todos los nuvegudores web exceto donde seu necesurlo. (Llclembre zcz Lnero zc).
Crucle est lntentundo reucclonur sucundo urches, ero or ejemlo el ultlmo (jcjzc) lo unlco que huce es uumentur el nlvel de segurldud or
defecto y dejur en munos del usuurlo lu declslon de ejecutur o no codlgo no flrmudo.
Puede ser esto el fln de 'uvu en lu web? Llflcllmente. Antes o desues Crucle reucclonur y huy demusludus ullcuclones enormes reullzudus en 'uvu
uru que desuurezcu del muu en los roxlmos unos. Lo que sl es oslble es que deje de usurse como lenguuje de desurrollo de ullcuclones web de
tumuno equeno o medlo.
Ln ml olnlon 'uvu quedur ms uru el 2/.a&1- de lus ullcuclones mlentrus que el <801:&1- ser desurrolludo en lenguujes ms llgeros. Lu lntegruclon
de 1omcut con Auche vu en estu llneu.
ERF -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
Arqultecturu
Lxlsten vurlus verslones de Auche 1omcut. Lu dlferenclu entre unus verslones y otrus es lu verslon de 7&8>)&:' y O7Z' que ueden munejur. Ln este
enluce se ueden consultur lus dlferentes verslones, uru que eseclflcuclones slrven y que verslon de O/>/ es necesurlu uru su uso.
Auche 1omcut utlllzu unu estructuru en lu que vurlos comonentes se orgunlzun me muneru jerrqulcu. Lstos comonentes son 7&8>&8d 7&8>*.&d U1+*1&d
T0':d 9011&.:08 H 901:&`:.
Lee lu glnu de lu documentuclon de 1omcut que exllcu estos concetos. Lntlende muy somerumente que huce cudu uno (yu que
luego los veremos en ms rofundldud) y cul es lu reluclon entre unos y otros. Cules tendremos que modlflcur durunte nuestro
trubujo? Reullzur un dlbujo uede uyudurte en lu tureu. Posterlormente dlscute en cluse los concetos urendldos.
Cuundo huyumos lnstuludo 1omcut odremos ver ejemlos de todos estos elementos. Lxceto Context, ueden consulturse todos en
sudo gedit /etc/tomcat7/server.xml
Lchu un vlstuzo ul urchlvo jetcjtomcut,jserver.xml
O( %&52",5"2( 1% 1+2%,532+3& 1% B3;,(5
Los dlrectorlos que se lncluyen en unu lnstuluclon de 1omcut se ublcun generulmente en el dlrectorlo donde hemos descomrlmldo 1omcut. Sln
emburgo, en estu lnstuluclon estn deflnldos en dos ublcuclones: f,'8f'N/8&f:0@./:5 y f>/8f)*2f:0@./:5= Sln emburgo huy otro dlrectorlo ufectudo en lu
lnstuluclon f&:.f:0@./:5
-& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
Los dlrectorlos comunes son:
! 6#%: contlene los blnurlos y scrlts de lnlclo de 1omcut.
! !,%=: lu conflguruclon globul de 1omcut. Ln estu lnstuluclon es un enluce slmbollco u f&:.f:0@./:5. 1lene ulgunos urchlvos que merece lu
enu destucur.
" !:&:"#%:81,"#!K: Lste urchlvo contlene lu olltlcu de segurldud reluclonudu con 'uvu e lmlde que los Servlets o 'SPs lu sobrescrlbun
or motlvos de segurldud. Ln estu lnstuluclon se encuentru en ollcy.djccutullnu.ollcy
" !:&:"#%:81),1$)&#$(: Contlene los urchlvos .'AR que no ueden sobrescrlblrse or motlvos de segurldud y otros de uso comun.
" !,%&$G&8G9": Ll urchlvo de contexto comun u todus lus ullcuclones. Se utlllzu rlnclulmente uru lnformur de donde se uede
encontrur el urchlvo web.xml de lus rolus ullcuclones. Contlene lu conflguruclon que ser comun u todos los elementos Context.
" ",;;#%;81),1$)&#$(: Lstublece lus olltlcus generules uru el reglstro de uctlvldud del servldor, ullcuclones o uquetes.
" ($)*$)8G9": yu hemos vlsto que es el flchero rlnclul de conflguruclon de 1omcut y que tlene mucho que ver con su urqultecturu.
" &,9!:&27($)(8G9": Contlene los usuurlos, contrusenus y roles usudos uru el control de ucceso. Ls el urchlvo donde se encuentru lu
lnformuclon de segurldud uru lus ullcuclones de udmlnlstruclon de 1omcut. 1odos los vulores son or defecto usl que deben
cumblurse en cuso de "descomentur' lus llneus.
" A$68G9": Un descrltor de desllegue or defecto con lu conflguruclon comurtldu or todus lus ullcuclones. Ls un urchlvo con
dlrectlvus de funclonumlento de lus ullcuclones.
" Adems de todos estos urchlvos, exlste un subdlrectorlo uru cudu motor con un subdlrectorlo loculhost donde lr otro urchlvo de
contexto eseclflco uru cudu ullcuclon. Lste urchlvo tlene lu formu nombredeullcuclon.xml. Ln este cuso el motor es Cutullnu usl
que estn en 9/:/)*1/f)0./)N0':. Puedes ver que huy uno or cudu uquete udlclonul que lnstulumos, documentuclon, ejemlos y
ullcuclones de udmlnlstruclon.
! "#6: contlnen todos los .'AR comunes u todus lus ullcuclones. Aqul vun urchlvos de 1omcut, APls de 'SPs, etc y en el odemos ublcur
urchlvos comunes u lus dlferentes ullcuclones como MySQL 'L8C.
! ",;(: uqul vun los urchlvos de reglstro. Ln estu lnstuluclon es un enluce slmbollco u f>/8f)0+f:0@./:5
! &$91: este dlrectorlo es oclonul. Ln estu lnstuluclon no est creudo nl uctlvudo or defecto. Se usu uru los urchlvos temorules que
necesltu 1omcut durunte su ejecuclon.
! A$6:11(: uqul se ublcun lus ullcuclones rolumente dlchus. Ahoru solo huy unu que se denomlnu RCC1. Podrlu huber ms ero como
hemos lnstuludo lu documentuclon, ejemlos y udmlnlstrudores uurte se encuentrun en su rolo dlrectorlo en jusrjshurejtomcut,
udmln, tomcut,docs y tomcut,exumles.
EKM -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
! A,)N: es un dlrectorlo uru los urchlvos en uso, cuundo se comllun los 'SPs, etc.
8uscu estos dlrectorlos en lu lnstuluclon de 1omcut que reullzumos en el temu .
D' 7+&5(J3 ;L& )23E"'13 ( *( (2C"+5%,5"2( 1% B3;,(5
Ll termlno urqultecturu de 1omcut tumblen se reflere u lu estructuru ML que slgue su orgunlzuclon. Se comone de un conjunto de elementos
reresentudos or etlquetus. Ln lu lmugen uede verse como se reluclonun unos con otros. Son los elementos que vlstels untes, y vumos u reusurlos.
X$)*$)
Ls el rlmer elemento suerlor y reresentu unu lnstunclu de 1omcut. Ls equlvulente ul servldor en sl con un uerto usocludo. Pueden exlstlr vurlos en
dlferentes uertos y u veces se huce uru que sl unu ullcuclon fullu urrustrundo ul servldor esto no ufecte u otrus ullcuclones.
Contlene vurlos \*':&1&8' que escuchun y resonden u eventos.
1umblen usu ClobulNumlngResources que slrven uru ermltlr u cllentes softwure hechos en 'uvu encontrur objetos y dutos medlunte su nombre. Por
ejemlo uqul se odrlu lndlcur un recurso globul como unu buse de dutos MySQL.
X$)*#!$
Ll servlclo ugruu un contenedor de tlo U1+*1& con un conjunto de conectores. Ll motor suele ser Cutullnu y los conectores or defecto E11P y A'P.
>,%%$!&,)
Los conectores slrven uru comunlcur lus ullcuclones con cllentes (or ejemlo un nuvegudor web u otros servldores). Reresentun el unto donde se
reclben lus etlclones y se les uslgnu un uerto lP en el servldor.
6 -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
>,%&:#%$)(
1omcut se reflere u Lnglne, Eost, Context, y Cluster como contenedores. Ll de nlvel ms ulto es Lnglne y el ms bujo Context. Algunos comonentes
como Reulm o vulve ueden ublcurse dentro de un contenedor.
^%;#%$
Ll motor rocesu lus etlclones y es un comonente que reresentu el motor de Servlets Cutullnu. Lxumlnu lus cubecerus (or ejemlo de lus trumus
E11P) uru determlnur u host (o vlrtuul host) o context se le debe usur cudu etlclon.
Cuundo 1omcut se utlllzu como servldor uutonomo se usu el motor or defecto. Cuundo 1omcut se usu dundo soorte u un servldor web se sobrescrlbe
orque el servldor web yu hu determlnudo el destlno correcto uru lus etlclones.
Un motor uede contener Eosts que reresentun un gruo de ullcuclones web o Context que reresentu u unu unlcu ullcuclon.
1omcut se uede conflgurur con un unlco host o multlles hosts vlrtuules como Auche.
P,(&
Leflne un host or defecto o multlles hosts vlrtuules en 1omcut. Ln 1omcut los hosts vlrtuules se dlferenclun or nombres de domlnlo dlstlntos, or
ejemlo www.ullcuclon.es y www.ullcuclonz.es. Cudu uno soortu vurlos Context.
>,%&$G&
Lste elemento es equlvulente u unu ullcuclon web. Euy que lnformur ul motor y ul host de lu locullzuclon de lu curetu rulz de ullcuclon. 1umblen se
uede hubllltur lu recurgu dlnmlcu (dynumlc reloud) uru que ul modlflcur ulgunu cluse de lu ullcuclon se modlflque en lu ejecuclon. Lstu oclon curgu
mucho el servldor or lo que se recomlendu uru ruebus ero no en roducclon.
Ln un contexto tumblen se ueden estublecer glnus de error eseclflcus uru urmonlzurlus con lu uurlenclu de lu ullcuclon.
Puede contener urmetros de lnlclo uru estublecer control de ucceso en lu ullcuclon.
EK3 -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
>"7(&$)
Ln cuso de que tengumos ms de un servldor 1omcut utendlendo lus etlclones, este elemento nos ermlte conflgururlo. Ls cuuz de rellcur lus
seslones y los urmetros de cudu Context. Quedu muy or enclmu del contenldo del curso.
Y$:"9
Se uede ullcur ul nlvel de Lnglne, Eost o Context. Se utlllzu uru uutentlcuclon y uutorlzuclon de usuurlos o gruos. Pueden usurse con urchlvos de
texto, servldores LLAP o buses de dutos or ejemlo.
Que es un servldor LLAP?
Sl lo ullcumos u nlvel de motor, los usuurlo o gruos tendrn ldentlcos ermlsos en todus lus ullcuclones u lu horu de ucceder u objetos o recursos. Sl
lo ullcumos en un Eost todus lus ullcuclones los ermlsos sern uru todus lus ullcuclones de dlcho entorno mlentrus que sl lo ullcumos en un
Context se estublecern or cudu ullcuclon. Sln emburgo, uunque un usuurlo tengu los mlsmos ermlsos uru todus lus ullcuclones debe segulr
uutentlcndose en cudu unu de ellus or seurudo.
Los ermlsos se heredun y or eso se du lu sltuuclon descrltu en el rrufo unterlor, ero sl los ermlsos de un usuurlo o gruo se sobrescrlben en un
entorno de rungo lnferlor los ultlmos sern los que se ullquen. Ls slmllur u lo que velumos con clertus dlrectlvus (or ejemlo de dlrectorlos) en
Auche.
U:"*$
Se usu uru lntercetur etlclones untes de usrselus u lus ullcuclones. Lsto nos ermlte rerocesur lus etlclones uru bloqueur ulgunus, reglstrur
uccesos, reglstrur detulles de lu conexlon (en urchlvos log), o estublecer un unlco unto de ucceso uru todus lus ullcuclones de un host o uru todos
los hosts de un servldor. Afectun ul tlemo de resuestu u lu etlclon.
Puede estublecerse uru cuulquler contenedor Lnglne, Eost, und Context, yjo Cluster.
Euy un conceto slmllur en los servlets que se denomlnu llltros (lllters).
6 -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
Aunque en lu secclon slgulente veremos los urchlvos de conflguruclon en detulle, echu un vlstuzo ul urchlvo en jetcjtomcutjserver.xml
uru uflunzur estos concetos.
Comuru este urchlvo con el de lu lnstuluclon de 1omcut que hlclmos en el temu .
EK6 -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
Conflguruclon bslcu del servldor de ullcuclones
Lu conflguruclon de 1omcut se reullzu u truves de uno o ms flcheros ML. Eemos vlsto or enclmu los flcheros de conflguruclon en los uurtudos
unterlores. Puru este rooslto, los rlnclules son: server.xml, context.xml y web.xml.
1omcut buscu estos urchlvos en el dlrectorlo eseclflcudo or CA1ALlNA_8ASL, en un subdlrectorlo jconf. Ln nuestro cuso estubleclmos
CATALINA_BASE=/var/lib/tomcat7
Pero sl vlsltumos este dlrectorlo veremos que el subdlrectorlo jconf es un enluce slmbollco u jetcjtomcutj que es donde reulmente se encuentrun los
urchlvos de conflguruclon.
Ln el cuso de que no se eseclflque CA1ALlNA_8ASL se usu CA1ALlNA_ECML que es obllgutorlu uru el urrunque de 1omcut.
Lu conflguruclon de 1omcut lncluye lnflnldud de urmetros y no es el objetlvo de este curso ser un exerto udmlnlstrudor de el. vumos u ver or
enclmu los urchlvos de conflguruclon rlnclules y luego estudluremos lus conflguruclones urtlculures ms lmortuntes.
Lu documentuclon de 1omcut lncluye muchlslmu ms lnformuclon de todos estos elementos y sus oslbles conflguruclones.
&%27%2Z[;*
Ln el urchlvo de conflguruclon or defecto odemos ver que se estublece un unlco servlclo y unu unlcu lnstunclu del servldor. Ll elemento <Server>
tlene lu slgulente formu:
<Server port="8005" shutdown="SHUTDON">
6 -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
Puede sorrendernos que el uerto de 1omcut seu 8c8c y sln emburgo este conflgurudo en el uerto 8cc. Lste uerto es en el que el que se lnlclu unu
lnstunclu del servldor ('vM) y en el que escuchu or sl llegun senules de uugudo (shutdown). Lstu senul no se uede mundur desde otru mqulnu or
motlvos de segurldud, ero evldentemente se uede ejecutur el comundo de uugudo desde otru mqulnu y lu senul yu llegur desde lu mlsmu en lu
que este el servldor.
dX$)*$)e
Ll elemento <Server> uede contener otros tres:
! <Servlce>: Un gruo de conectores usocludos con un motor. Ls necesurlo ul menos uno.
! <Llstener>: Cluses que tlenen que escuchun y munejun eventos que tlenen que ver con el clclo de vldu del servldor, or ejemlo desues
de urruncur, etc.
! <ClobulNumlngResources>: Recursos globules que ueden ser usudos en estu lnstunclu del servldor or los comonentes que los
neceslten, or ejemlo unu buse de dutos.
<GlobalNamingResources>
<!-- Editable user database that can also be used by
UserDatabaseRealm to authenticate users
-->
<Resource name="UserDatabase" auth="Container"
type="org.apache.catalina.UserDatabase"
description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
EKK -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
pathname="conf/tomcat-users.xml" />
</GlobalNamingResources>
dX$)*#!$e
Ll rooslto de un servlclo es ugruur un motor que rocese lus etlclones con uno o ms conectores que gestlonen los rotocolos de comunlcuclon. Ll
servlclo or defecto es el motor Cutullnu.
<Service name="Catalina">
Aqul se le hu dudo ul servlclo el nombre del motor, ero no es necesurlo.
Un <Servlce> contlene ul menos un <Connector> y solo un <Lnglne> que es obllgutorlo.
d>,%%$!&,)e
Lste elemento tlene mucho que ver con los dos modos de funclonumlento de 1omcut:
! Como servldor unlco: Ln el que 1omcut reullzu lus funclones de servldor de ullcuclones y de servldor web.
! Como servldor de ullcuclones: Ln el que 1omcut coluboru con un servldor web que huce de <801:&1-. Ll servldor web dlrlge todus
etlclones de 'SPs y Servlets u 1omcut.
Ln un entorno con ucceso ubllco se suele usur lu segundu conflguruclon yu que el servldor web est mucho ms reurudo en termlnos de segurldud y
rlvucldud.
Los dos conectores ms comunes son E11P y A'P. Ll segundo es usudo uru conectur con los servldores en el como coluborutlvo (Auche u otros).
Ambos ueden funclonur con SSL uru mejorur lu segurldud.
Ll uerto or defecto uru E11P es 8c8c. Se uede cumblur y sl or ejemlo 1omcut vu u estur en roducclon como un servldor en sollturlo odrlumos
modlflcurlo ul uerto estndur de E11P, 8c.
Ll conector E11P est hubllltudo:
6, -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
URIEncoding="UTF-8"
redirectPort="8443" />
mlentrus que el A'P no:
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
Nlnguno de los dos usu SSL or defecto.
d^%;#%$e
Ll motor es qulen rocesu lus etlclones reulmente. Ll nombre es el que le demos u lu lnstunclu y defuultEost lndlcu u que host vlrtuul se le usur unu
etlclon en cuso de que no se eseclflque nlnguno yu que el mlsmo motor uede rocesur etlclones dlrlgldus u multlles hosts vlrtuules de los
eseclflcudos en este urchlvo.
<Engine name="Catalina" defaultHost="localhost">
Un motor contlene uno o ms <Eost>, uno o nlngun <Context>, uno o nlngun <Reulm>, multlles <vulve> y <Llstener> uunque uede no tener nlnguno.
dY$:"9e
Ls un mecunlsmo de segurldud que slrve uru uutentlcur usuurlos y estublecer segurldud u nlvel de contenedor (recuerdu que elementos conslderubu
1omcut contenedores segun vlmos en el uurtudo urqultecturu). Lu conflguruclon or defecto huce que 1omcut leu los usuurlos del urchlvo tomcut
users.xml ero obvlumente serlu mejor conflgururlo uru que se usuru unu buse de dutos o servldor LLAP.
<!-- Use the LockOutRealm to prevent attempts to guess user passwords
EKF -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
via a brute-force attack -->
<Realm className="org.apache.catalina.realm.LockOutRealm">
<!-- This Realm uses the UserDatabase configured in the global JNDI
resources under the key "UserDatabase". Any edits
that are performed against this UserDatabase are immediately
available for use by the Realm. -->
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
dP,(&e
Lste elemento reresentu un host vlrtuul en 1omcut. Lu conflguruclon or defecto solo deflne )0./)N0':. Sl tenemos conflgurudo el servldor LNS con un
nombre uru nuestro servldor usuremos este.
Ll utrlbuto /((b/'& estublece el dlrectorlo rulz de lus ullcuclones. Se estublece u urtlr de <CA1ALlNA_8ASL> sl no se lndlcu lo contrurlo. Por defecto lu
URL de cudu ullcuclon es lu resultunte de unudlr su dlrectorlo rulz u lu del servldor. Ln nuestro ejemlo hemos lnstuludo cuutro ullcuclones docs,
exumles, hostmunuger y munuger. 1umblen se estublece RCC1 que lndlcu lu ullcuclon or defecto sl no unudlmos otrus cudu unu en su dlrectorlo.
Ll utrlbuto ,1(/.a#"[' lndlcu sl este tlo de urchlvos debe ser descomrlmldo o no. Ln cuso de no descomrlmlrlos, lu ejecuclon ser un oco ms
lentu.
/,:0!&()0H lndlcu sl el desllegue de unu ullcuclon que sltuemos en el dlrectorlo debe ser uutomtlco o no.
6 -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
<Host name="localhost" appBase="webapps" unpackARs="true" autoDeploy="true">
Adems contlene un <vulve> uru reglstrur los uccesos.
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log." suffix=".txt"
pattern="%h %l %u %t quot;%rquot; %s %b" />
lnvestlgu y dlscute en cluse que son los urchlvos vAR y su reluclon con los urchlvos 'AR.
Conflguru un nombre en el LNS uru tu servldor y cumblu el nombre en <Eost>. Pruebu que uedes ucceder con el nombre u todo.
,3'5%[5Z[;*
Ll contexto en 1omcut se uede estublecer u mucho nlveles y se ullcur el ms eseclflco en cudu ullcuclon.
Los descrltores de contexto de udmlnlstruclon de cudu ullcuclon se encuentrun en CA1ALlNA_8ASLjconfjnombre_motorjnombre_host
Ln nuestro cuso estn en jetcjtomcutjCutullnujloculhost
Por ejemlo el de hostmunuger
<Context path="/host-manager"
docBase="/usr/share/tomcat7-admin/host-manager"
E5M -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
antiResourceLocking="false" privileged="true" />
Ll (/:N lndlcu como se ucceder u lu ullcuclon en nuestro servldor. Ll roblemu uru cumblurlo es que hubrlu que modlflcur todos los urchlvos xml
reluclonudos uru que 1omcut slgu encontrundo lu ullcuclon.
doc8use es el dlrectorlo de desllegue de lu ullcuclon.
Los descrltores de contexto eseclflcos de cudu ullcuclon web estn en el dlrectorlo de cudu ullcuclon en jML1A_lNl
Ll de lu mlsmu ullcuclon est en jusrjshurejtomcut,udmlnjhostmunugerjML1AlNl
<Context antiResourceLocking="false" privileged="true" >
<!--
Remove the comment markers from around the Valve below to limit access to
the host-manager application to clients connecting from localhost
-->
<!--
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127.d+.d+.d+|::1|0:0:0:0:0:0:0:1" />
-->
</Context>
, -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
Lntonces uru que slrve context.xml? contlene los urmetros que vuyun u ser comunes u todus lus ullcuclones. Sl no se sobrescrlben en ulgun
contexto ms concreto se ullcurn estos.
<Context>
<atchedResource>EB-INF/web.xml</atchedResource>
</Context>
Ln este cuso se eseclflcu que elemento de cudu ullcuclon debe ser vlglludo or sl cumblu. Ln ese cuso se vuelve u deslegur lu ullcuclon
uutomtlcumente.
.%/Z[;*
Cuulquler ullcuclon web en 'uvu debe tener un descrltor de desllegue. Como sucedlu con el contexto, uede estublecerse vurlos y se ullcurn lus
dlrectlvus ms concretus.
Cudu ullcuclon tlene su rolo descrltor y vu en jvL8lNl
Por ejemlo jusrjshurejtomcut,udmlnjhostmunugerjvL8lNl
Lxlste uno comun u todus lus ullcuclones en jetcjtomcutjweb.xml
Como el uno usudo vlmos xml es muy fcll entender un descrltor de desllegue. Abre el rlmero y estudlu su contenldo.
Ll segundo urchlvo es muchlslmo ms extenso ero no or eso vumos u dejur de echurle un vlstuzo. Que tlo de urmetros se
lncluyen en este urchlvo? Crees que es udecuudu estu dlvlslon?
E53 -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
Ln umbos cusos, sl no entlendes uru que slrve un urmetro, lnternet uede uyudurte.
Ln el unto de desllegue de ullcuclones veremos ulgo ms de este temu.
, -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
Admlnlstrur ullcuclones web
vumos u udmlnlstrur lus ullcuclones de
1omcut u truves del #&2 W/1/+&8. Ln lus
dos lnstuluclones que hemos hecho
lnclulmos este uquete. Ln este cuso
cuundo lnstulumos los uquetes
udlclonules.
Podemos ucceder ul udmlnlstrudor u
truves del enluce de lu glnu de lnlclo o en
lu dlrecclon
htt:jjloculhost:8c8cjmunugerjhtml
Ls en sl mlsmu unu ullcuclon (con todus
lus curucterlstlcus que estumos vlendo) y
de hecho uede udmlnlstrurse desde lu
rolu ullcuclon.
Ll ucceso or defecto est deshubllltudo,
ero yu vlmos como modlflcur el urchlvo
tomcutusers.xml uru oder entrur.
Lxlsten vurlos roles en cuso de que
querumos dlstrlbulr el trubujo, ero nos
uslgnumos todos los ermlsos.
Nudu ms entrur en el munuger vemos unu llstu de lus ullcuclones deslegudus en este servldor.
E56 -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
vemos que uurece un enluce u lu ullcuclon en sl, sl se hu eseclflcudo unu verslon, el nombre que se mostrur uru lu ullcuclon, sl est en ejecuclon,
el numero de seslones que se hun estublecldo (sl lu ullcuclon usu seslones) y unos botones uru urruncur, urur, recurgur (lu ullcuclon en cuso de
modlflcuclones) o relegur que lo que huce es ellmlnurlu del servldor (no estur deslegudu).
Ll uurtudo de lus seslones se ver ms udelunte.
Accede ul web munuger y ruebu u urur los ejemlos y lu documentuclon. Puedes conecturte u ellos?
Lu urte de deslegur lus ullcuclones lu veremos en el uurtudo corresondlente.
Lo slgulente que nos encontrumos es
, -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
Los dlugnostlcos slrven uru ver sl unu ullcuclon est fullundo, or uhoru solo en el temus de uso de memorlu. Sl lnchumos se recurgu lu glnu y en lu
urte suerlor nos lndlcu el resultudo de lu ruebu.
1umblen odemos ver un cuudro resumen con lnformuclon del servldor. Lstu lnformuclon uede umllurse ul lnchur en "Lstudo Comleto del
Servldor' en lu urte suerlor de lu glnu.
Por suuesto estu udmlnlstruclon uede ser mucho ms rofundu u truves de los urchlvos de conflguruclon vlstos en este temu.
E5K -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
Lxlsten otros dos metodos de udmlnlstruclon de 1omcut que dejumos como temus de umlluclon or urte del rolo ulumno en cuso de que lo creu
convenlente: Ant y udmlnlstruclon medlunte etlclones E11P.
O( %&52",5"2( 1% (2,?+73& 4 1+2%,532+3& 1% "'( 9)*+,(,+-' 8%/
Unu ullcuclon web tllcumente vu dentro de un dlrectorlo (uede ser un vAR como veremos ms udelunte) y tlene usocludu unu estructuru de
dlrectorlos comun u todus:
! Rulz del dlrectorlo de lu ullcuclon y dlrectorlos no eseclflcudos en lu slgulente llstu: 1odo lo que no este en los dlrectorlos vL8lNl Y
ML1AlNl son recursos ubllcos u los que se uede ucceder u urtlr de lu URL udecuudu.
! f^52FOV: u urte del descrltor de desllegue (web.xml) contlene:
! clusses: donde se ublcun los urchlvos .cluss y otros recursos.
! llb: donde se colocun lus llbrerlus .jur eseclflcus de estu ullcuclon.
! Z^IC2FOV: contlene el urchlvo de contexto context.xml. 1umblen uede hucer uqul un urchlvo MANllLS1.Ml que llstu lus blbllotecus
'AR que deben estur dlsonlbles uru el funclonumlento de lu ullcuclon.
,, -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
Lesllegue de ullcuclones en el servldor de ullcuclones
Aunque en este modulo no se lncluye como desurrollur
un Servlet o un 'SP, voy u dur unus equenus
lndlcuclones. Ln este cuso usure Netbeuns uunque Lcllse
lncluye lus mlsmus funclonulldudes y nos ermlte lntegrur
desurrollo en muchos lenguujes.
Lo rlmero ser lnstulur Netbeuns desde lu glnu oflclul.
vemos que tenemos unu oclon en lu que lncluso estn
lncluldos 1omcut y Clussllsh. Lstu es lu recomendudu uru
oder lr huclendo lus ruebus. 1en en cuentu que 1omcut
no se lnstulu or defecto usl que hubr que ulsur en
ersonullzur durunte lu lnstuluclon (como lndlcu lu
lmugen) y selecclonurlo. lncluso uunque lo hugumos de
ruebu (or suuesto en un cuso reul lu mqulnu de
desurrollo y el servldor nuncu deben ser el mlsmo) es
referlble lnstulur Netbeuns en lu mqulnu unfltrlon o en
otru vlrtuul yu que estumos uctlvundo otro servldor
1omcut.
Sl yu tenemos Netbeuns lnstuludo (y un servldor de
ullcuclones) y no queremos lu verslon de urrlbu, segulmos estus lnstrucclones uru unudlr y conflgurur el frumework de red.
Ll tlo de royecto que se debe creur es del gruo 'uvu veb. Por defecto yu nos creu un 'SP de tlo "Eolu Mundo'. Un Servlet es unu cluse de juvu
reurudu uru funclonur en lu web. Ln este enluce exllcun brevemente como rogrumur Servlets. Adems recuerdu que hemos lnstuludo ejemlos en
los que uedes consultur el codlgo uru ver que hucen y como lo hucen.
E5F -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
Lesues de ejecutur o llmlur y contrulr (Cleun 8ulld) odremos lr u lu curetu del royecto y en un subdlrectorlo "dlst' hubr un urchlvo vAR que
nos servlr uru el desllegue.
Ln el slte huy un $T$91", gchg_RX-\%,8A:) que uso uru estos ejemlos y uedes usur uru tus rctlcus. Cuundo lo descurgues recuerdu que un vAR
es un urchlvo emuquetudo y que se uede descomrlmlr uru obtener los urchlvos y curetus orlglnules.
Aunque no es el objetlvo del curso vumos u ver el ejemlo del slte y ulgunos de los lnstuludos revlumente. Los lremos estudlundo 7%, :
7%, segun dlgu el rofesor y comentundo en cluse. Solo veremos los ms senclllos. Se deju como umlluclon uru el ulumno que lo
desee ver el resto.
H%&)*+%I"% ;('"(*
Lxlten dos formus de llevur u cubo el desllegue munuul de unu ullcuclon en nuestro servldor de ullcuclones, ero son bustunte slmllures. Lu rlmeru
es usundo lu curetu con todos los elementos del royecto y lu segundu es con el urchlvo vAR.
Puru +$(1"$;:) ": !:)1$&: solo huy que colurlu en el dlrectorlo webus de lu ublcuclon CA1ALlNA_8ASLjwebus que en nuestro cuso es
jvurjllbjtomcut,jwebus
Ln el ejemlo he descomrlmldo los contenldos del vAR en unu curetu "Pruebu' que es lu que colo u webus.
Recuerdu que en nuestro flchero server.xml uureclu
<Host name="localhost" appBase="webapps" unpackARs="true" autoDeploy="true">
Sl lu oclon uutoLeloy estuvleru u fulse hubrlu que relnlclur el servldor, ero en nuestro cuso no huce fultu usl que odemos lr ul nuvegudor web y
ucceder u nuestru ullcuclon en lu dlrecclon htt:jjloculhost:8c8cjPruebuj
?$(1"$;:) $" :)!B#*, fCY es lguul ero onemos el urchlvo dlrectumente en lu curetu webus. 1en en cuentu que uhoru lu rutu de lu ullcuclon lu
determlnu el nombre del urchlvo vAR usl que ser htt:jjloculhost:8c8cjcc_'SPUnoj
, -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
G&5(/*%,+%'13 '"%&52( ()*+,(,+-' ,3;3 *( )2+',+)(* )(2( %* &%27+132
Lu soluclon unterlor est blen uru ullcuclones secundurlus, ero uhoru queremos que seu lu rlnclul en lugur de lu glnu de lnlclo de 1omcut. Lsto
tumblen se uede hucer de vurlus formus uunque lo rlmero serlu ellmlnur el contenldo de lu curetu RCC1 de webus. Sl vus u hucerlo, ten en cuentu
que en nuestro cuso es mejor cumblur el nombre o mover el contenldo u otro sltlo or sl luego queremos recuerur el estudo orlglnul.
Luego lus oclones serlun:
. Colur el contenldo de lu curetu del royecto (no el royecto en sl) u RCC1.
z. Cumblur el nombre ul urchlvo vAR or RCC1.wur y colocurlo en webus uru que lo desllegue 1omcut uutomtlcumente en lu curetu RCC1
. Creur un descrltor de contexto de lu ullcuclon en lu curetu CA1ALlNA_8ASLjconfjCutullnujloculhost. Recuerdu que estu rutu uede vurlur
deendlendo de tu conflguruclon, motor y host. Lste descrltor se llumur RCC1.xml y en el hubr que escrlblr
<?xml version="1.0" encoding="UTF-8"?>
<Context docBase="/usr/share/Prueba" />
Suonlendo que hublerumos ublcudo nuestru ullcuclon en el dlrectorlo jusrjshurejPruebu
1en en cuentu que no huy que eseclflcur uth orque queremos que seu el que se curgue ul ucceder dlrectumente u lu dlrecclon del servldor.
Sl usumos estu oclon relnlclumos 1omcut uru que vuelvu u curgur los urchlvos de conflguruclon.
H%&)*+%I"% ,3' B3;,(5 8%/ K('(I%2
Recuerdu que cuundo vlmos el veb Munuger nos sultumos unu urte que ermltlu deslegur ullcuclones.
EFM -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
Lu rlmeru oclon es uru deslegur unu ullcuclon que est en otro servldor.
Solo vumos u ver lu oclon de ubujo. Lstu oclon es equlvulente colocur un vAR en webus. Al lnchur el boton exumlnur tendremos que ublcur el
vAR deseudo y ulsumos sobre deslegur uru que uctlve lu ullcuclon. Nos uurecer en lu llstu de ullcuclones y odremos gestlonurlu como u
cuulquler otru. Sl ulsumos en "Relegur' se ellmlnur.
8 -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
Autentlcuclon de usuurlos
Los metodos uru uutentlcur usuurlos en 1omcut son los mlsmos que en Auche: 8uslc, Llgest, lormulurlos E1ML y Certlflcudos Llgltules. Los dos
rlmeros yu vlmos que tenlun un roblemu sl se ullcubun sobre conexlones no segurus. Ln el cuso de formulurlos se estublece unu glnu (or ejemlo
un 'SP) que slrvu de elemento donde se reullzur lu uutentlcuclon. Ln los ejemlos que hemos lnstuludo se utlllzu usl que +$(17J( +$ *$) $(&$ :1:)&:+,
esturs reurudo uru entender como funclonu.
Por ejemlo el descrltor de desllegue del web munuger utlllzu uutentlcuclon 8uslc y se le uslgnu un nombre ul domlnlo.
<!-- Define the Login Configuration for this Application -->
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>Tomcat Manager Application</realm-name>
</login-config>
Ln 1omcut cudu usuurlo tlene usocludo uno o ms roles. Son estos roles los que se comruebun uru conecturse y no el usuurlo en sl. Ln el mlsmo
urchlvo odemos ver lu conflguruclon de uutentlcuclon comletu con todos los roles deflnldos. Ee ellmlnudo grun urte del codlgo dejundo solo un
ejemlo de cudu tlo.
Ln el slgulente ejemlo es lmortunte destucur que estumos declurundo:
! <Securltyconstrulnt> unu restrlcclon de segurldud en lu que se eseclflcu un recurso o colecclon de recursos. Ln este cuso todo lo que
huyu en el dlrectorlo N:@)f y se le uslgnu un nombre. Adems llevu unu restrlcclon de uutorlzuclon donde se estublecen uno o ms roles
que odrn ucceder.
EF3 -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
! <loglnconflg> donde se eseclflcu que metodo se utlllzur uru llevur u cubo el control de ucceso. Ls el trozo que vlmos untes.
! <securltyrole> or ultlmo se eseclflcun los roles que se nombrun en lu segurldud de estu ullcuclon. Lute cuentu de que deben estur
deflnldos con el mlsmo nombre en el urchlvo, buse de dutos, etc que utlllcemos uru lu uutentlcuclon.
<!-- Define a Security Constraint on this Application -->
<!-- NOTE: None of these roles are present in the default users file -->
<security-constraint>
<web-resource-collection>
<web-resource-name>HTML Manager interface (for humans)</web-resource-name>
<url-pattern>/html/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>manager-gui</role-name>
</auth-constraint>
</security-constraint>
<!-- Define the Login Configuration for this Application -->
8 -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>Tomcat Manager Application</realm-name>
</login-config>
<!-- Security roles referenced by this web application -->
<security-role>
<description>
The role that is required to access the HTML Manager pages
</description>
<role-name>manager-gui</role-name>
</security-role>
Sln emburgo sl nos vumos u ver lu estructuru de curetus de lu ullcuclon "munuger' vemos que no huy un subdlrectorlo N:@)f or nlngun ludo. Puru
entender esto huy que tener en cuentu otrus dos urtes del urchlvo. Nuevumente me centro en un ejemlo orque huy vurlos como este.
<servlet-mapping>
<servlet-name>HTMLManager</servlet-name>
EF6 -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
<url-pattern>/html/*</url-pattern>
</servlet-mapping>
Aqul yu vemos el mlsmo utron que estumos buscundo. Un mueudo yu suenu u unu usocluclon. Se usoclu un nombre con un utron URL. Sl nos
conectumos ul munuger con el nuvegudor web veremos que se unude este N:@)f u lus dlrecclones. Sl te dus cuentu, ul lnchur en el enluce "Lstudo del
Servldor' se cumblu html or stutus. 1umblen encontrumos un mueo u este unudldo u lus URL y sl nos dumos cuentu tlene su rolu conflguruclon de
segurldud y roles usocludos.
<servlet-mapping>
<servlet-name>Status</servlet-name>
<url-pattern>/status/*</url-pattern>
</servlet-mapping>
Que roles de segurldud tlenen ucceso u los recursos de stutus?
Pero toduvlu nos fultu ver que es ese nombre que se usoclu u un utron URL. Sl mlrumos ms urrlbu en el urchlvo
<servlet>
<servlet-name>HTMLManager</servlet-name>
<servlet-class>org.apache.catalina.manager.HTMLManagerServlet</servlet-class>
<init-param>
8 -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
<param-name>debug</param-name>
<param-value>2</param-value>
</init-param>
<!-- Uncomment this to show proxy sessions from the Backup manager in the
sessions list for an application
<init-param>
<param-name>showProxySessions</param-name>
<param-value>true</param-value>
</init-param>
-->
<multipart-config>
<!-- 50MB max -->
<max-file-size>52428800</max-file-size>
<max-request-size>52428800</max-request-size>
<file-size-threshold>0</file-size-threshold>
EFK -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
</multipart-config>
</servlet>
Londe lo ms lmortunte or uhoru son lus rlmerus llneus que usoclun un nombre u unu cluse de 'uvu. Podemos ver otros dos fuctores (sln entrur
mucho ms en detulle orque no es el objetlvo de este unto) que nos uyudurn u comrender esto. Ln f,'8f'N/8&f:0@./:5g/-@*1f@/1/+&8f*1-&`=_'(
odemos ver lo slgulente:
<% response.sendRedirect(response.encodeRedirectURL(request.getContextPath() + "/html")); %>
Que lncluso con los conoclmlentos que tenemos vemos que redlrecclonu lus etlclones ul mlsmo uth ero con jhtml ul flnul. Lu ultlmu dudu es donde
est el servlet ul que se usoclu el nombre E1MLMunuger? No uurece or lu estructuru de curetus de lu ullcuclon. Lebemos recordur que huy un
dlrectorlo de blbllotecus comurtldus: f,'8f'N/8&f:0@./:5f)*2 y en el huy un urchlvo que se llumu cutullnu.jur (como urte del nombre comleto de lu
cluse). Reulmente es un enluce slmbollco ul urchlvo ==f==f_/>/f:0@./:g./:/)*1/g5=M=3K=_/8 o lo que es lo mlsmo f,'8f'N/8&f==f==f_/>/f:0@./:g./:/)*1/g5=M=3K=_/8
Sl exumlnumos este urchlvo encontruremos el dlchoso servlet.
1odo este funclonumlento se busu en el elemento <Reulm> del que yu hemos hubludo. Recuerdu que odlu lr dentro de los elementos <Lnglne>,
<Eost>, <Context> o <Cluster> y como en otros cusos esto lndlcur u que se ullcu. Posterlormente veremos como conflgurur dlferentes [&/)@' , ero
or uhoru nos vule con suber que en el cuso or defecto se busu en el urchlvo :0@./:g,'&8'=`@)
8, -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
GR%;)*3& 1% ("5%'5+,(,+-'
vumos u ver ulgunos ejemlos de uutentlcuclon de los metodos menclonudos. Ll cuso de certlflcudos dlgltules evldentemente no tendr sentldo hustu
que veumos lu lntegruclon con SSL. Yu conocemos los roblemus de segurldud de E11P.
Yu hemos vlsto como deslegur ullcuclones hechus con Netbeuns (con Lcllse es muy slmllur), or lo que voy u reullzur y robur los ejemlos
dlrectumente en Netbeuns. Puru modlflcur el urchlvo tomcutusers.xml huy que buscurlo rlmero:
. Selecclonu lu estunu "Servlces'
z. Ln "Servers' huc cllc con el boton
derecho sobre "Proertles'.
. Comruebu que es 1omcut y no
Clussllsh es que est
selecclonudo.
. Colu lu rutu de CA1ALlNA_8ASL
. Clerru lu ventunu.
6. Euz cllc en los menus en llle >
Cen llle y vete u lu rutu de
CA1ALlNA_8ASL y ul dlrectorlo
"conf' que huy dentro. Selecclonu
el urchlvo tomcutusers.xml
,. Ahoru uedes modlflcur el urchlvo
que se usur. Recuerdu que esto
tlenes que volver u hucerlo en el
urchlvo tomcutusers.xml en el
servldor donde desllegues lus
ullcuclones osterlormente. Lste
servldor es solo uru ruebus.
8. Ln ml cuso voy u dejurlo como se
ve u contlnuuclon.
EFF -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
<user username="ide" password="AyO2ybUt" roles="manager-script,admin"/>
<role rolename="pruebas"/>
<role rolename="otro"/>
<user username="sergio" password="sergio" roles="pruebas"/>
<user username="cuesta" password="cuesta" roles="pruebas,otro"/>
<user username="vicente" password="vicente" roles="pruebas"/>
</tomcat-users>
1en en cuentu que sl el servldor yu est lnlcludo debes relnlclurlo uru que curgue lu conflguruclon. Puru esto huz cllc con el boton derecho sobre el
servldor 1omcut y ulsu "Resturt' o lu oclon que necesltes en cudu cuso.
5CXF>
Prlmero vumos u creur el servlet, se huce como cuulquler otru cluse de 'uvu ero selecclonundo Servlet como tlo y luego tlenes que murcur lu cuslllu
que unude lnformuclon ul web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-
app_3_0.xsd">
8 -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
<servlet>
<servlet-name>BasicServlet</servlet-name>
<servlet-class>basic.BasicServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>BasicServlet</servlet-name>
<url-pattern>/BasicServlet</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
</web-app>
Lebemos modlflcur esto uru que se corresondu con lo que one u contlnuuclon:
EXM -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-
app_3_0.xsd">
<servlet>
<servlet-name>BasicServlet</servlet-name>
<servlet-class>basic.BasicServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>BasicServlet</servlet-name>
<url-pattern>/BasicServlet</url-pattern>
</servlet-mapping>

<!-- esto es lo que aadimos para la seguridad bsica -->
<!-- Primero una restriccin de seguridad -->
-& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
<security-constraint>
<web-resource-collection>
<web-resource-name>El * significa que pedimos sutenticacin para toda la
aplicacin</web-resource-name>
<url-pattern>/*</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>pruebas</role-name>
</auth-constraint>
<user-data-constraint>
<!-- hay tres tipos CONFIDENTIAL, INTEGRAL y NONE -->
<transport-guarantee>NONE</transport-guarantee>
</user-data-constraint>
EX3 -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
</login-config>
<!-- hasta aqu -->

<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
</web-app>
-& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
Con esto (ten en cuentu que nos hu creudo un servlet) yu tendrlumos lu uutentlcuclon bslcu funclonundo, ero odemos modlflcur el servlet uru que
nos roorclone clertu lnformuclon.
<trunsortguuruntee> tlene que ser NCNL, ero cuundo hubllltemos SSL deberlumos cumblurlo u CCNLllLN1lAL uru que nos redlrlgu lus etlclones
E11P u E11PS y se trunsmltu lu lnformuclon de esu muneru.
Sl queremos ejecutur este servlet or defecto en Netbeuns debemos hucer:
. Cllc con el boton derecho sobre el royecto y selecclonur "Proertles'
z. Selecclonur "Run'
. Lscrlblr el nombre del Servlet (sln extenslon) en "Relutlve URL'
1en en cuentu que sl lo deslegumos en nuestro servldor 1omcut de roducclon lu URL serlu lu corresondlente u lu ullcuclon ms el nombre del
servlet.
.ej: htt:jjloculhost:8c8cjnomullcuclonjnomservlet
Puedes ver todo esto y el Servlet modlflcudo que roorclonu lnformuclon sobre lu conexlon en el $T$91", gc.g_6:(#!8A:) del slte.
?F]^XI
Lu unlcu dlferenclu entre el uso de 8ASlC y LlCLS1 conslste en cumblur esu ulubru en web.xml. Lu unlcu dlferenclu en el funclonumlento es que lu
contrusenu se codlflcu, ero no encrltu or lo que sl ulgulen lu lntercetu es rctlcumente lguul de vulneruble.
Modlflcu el ejemlo czc_buslc.wur uru que use LlCLS1 y comruebu lu dlferenclu en el resultudo.
VQYZ
Lste metodo se busu en formulurlos E1ML.
Lo rlmero que cumblu es en el urchlvo web.xml el elemento <loglnconflg>
EX6 -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
<login-config>
<auth-method>FORM</auth-method>
<!-- CUIDADO, los archivos siguientes deben ir en un subdirectorio para que funcione-->
<form-login-config>
<form-login-page>/protegido/login.jsp</form-login-page>
<form-error-page>/protegido/login-failed.html</form-error-page>
</form-login-config>
</login-config>
Los dos urchlvos E1ML lndlcun en que glnu se hur el
logln y u cul nos redlrlglr sl fullu el lntento.
1odo esto tumblen se uede conflgurur en Netbeuns
lnchundo en lu estunu "Securlty' cuundo estumos
vlendo el urchlvo web.xml
Lste metodo se busu en el uso de tres elementos:
. j_securlty_check: que rocesu el formulurlo.
z. j_usernume: como elemento donde se envlur el
nombre de usuurlo.
. j_ussword: uru envlur lu contrusenu.
Puedes estudlur el $T$91", gccg_=,)9 del slte uru ver
todos estos elementos.
-& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
Puru robur debes lntentur ucceder ul elemento lormServlet, u truves de lu rutu sl lo tlenes en un 1omcut o conflgurundo Netbeuns sl lo ests robundo
con el servldor lntegrudo.
Ll ejemlo usu seslones udems or lo que uedes ver un uso totulmente bslco de ello.
H3;+'+3& 1% &%I"2+1(1 )(2( *( ("5%'5+,(,+-'
Un domlnlo (Reulm) es ulgun tlo de usocluclon entre usuurlos, contrusenus y los roles usocludos. Los roles son ulgo slmllur u los gruos de Llnux y en
1omcut el ucceso no se roorclonu u nlvel de usuurlo sl no de rol. Un usuurlo uede tener usocludo un numero lllmltudo de roles.
Lxlsten sels tlos bslcos en 1omcut uunque huy otros extendldos y cuulquleru uede rogrumur uno que extlendu de estos:
. R?5>Y$:"9: Lu lnformuclon de usuurlos, contrusenus y roles se ulmucenu en unu buse de dutos reluclonul y se uccede medlunte un drlver 'L8C.
z. ?:&:X,7)!$Y$:"9: Lu lnformuclon tumblen se guurdu en unu buse de dutos reluclonul, ero se uccede u ellu medlunte unu fuente con nombre
de tlo 'NLl 'L8C LutuSource. 'NLl ('uvu Numlng und Llrectory lnterfuce) es un servlclo de 'uvu que ermlte buscur objetos y dutos or
nombre.
. RO?FY$:"9: Lu lnformuclon se ulmucenu en un servldor LLAP y se uccede con 'NLl.
. \($)?:&:6:($Y$:"9: Lu lnformuclon se ulmucenu en lo que se conoce como unu fuente 'NLl de 8use de Lutos de Usuurlos. Lo ms hubltuul es
que se uoye en un urchlvo xml. Por ejemlo de .01<f:0@./:g,'&8'=`@) uunque no es estu lu oclon que se usu or defecto slno lu slgulente. Lu
lnformuclon uede uctuullzurse dlnmlcumente, ero no se recomlendu uru grundes slstemus.
. Z$9,)KY$:"9: Lu lnformuclon est ulmucenudu en un urchlvo ML que se curgu en memorlu ul lnlclur 1omcut. Sl se modlflcu el urchlvo lu
lnformuclon no se usu hustu que se relnlcle 1omcut. Ls el cuso que venlmos usundo con confjtomcutusers.xml. Por suuesto no se recomlendu
en roducclon.
6. RCCXY$:"9: Se utlllzu el frumework 'uvu Authentlcutlon Authorlzutlon Servlce ('AAS). Ls el ms soflstlcudo de todos.
Nosotros solo veremos ulgunos. Yu he comentudo que huy otros que extlenden de estos. 1odu estu lnformuclon y muchu ms se uede consultur en lu
glnu de lu documentuclon de 1omcut.
X,", 17$+$ B:6$) 7% Y$:"9 =7%!#,%:%+, : ": *$L, y or lo tunto sl ruebus los ejemlos unterlores trus conflgurur Reulms dlferentes vers que usu uru
conecturse el Reulm uctlvo.
EXK -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
Z$9,)KY$:"9
Ls el cuso que hemos estudo usundo or defecto ul conecturnos or ejemlo ul munuger de ullcuclones web. Yu hemos vlsto que lu lnformuclon se
ulmucenu en un flchero ML y que or defecto es :0@./:g,'&8'=`@)
Al lnlclur el servldor se curgu lu lnformuclon de usuurlos del urchlvo en memorlu y no se vuelve u uctuullzur hustu que se relnlcle el servldor. Por este
motlvo y or lu buju segurldud que suone tener los usuurlos y contrusenus en un flchero de texto luno.
Ls el cuso que vlmos como ejemlo en el unto unterlor.
Lsto se concretu en los untos:
. Cestlonur los usuurlos en el urchlvo ML corresondlente.
z. Creur el domlnlo. Puru ello en el urchlvo de contexto que determlnemos (or ejemlo en el que se encuentre en el dlrectorlo ML1AlNl
eseclflco de cudu ullcuclon) escrlblremos lo slgulente:
<Context>
<Realm className="org.apache.catalina.realm.MemoryRealm" />
</Context>
Ee dejudo lus etlquetus del contexto uru evldenclur que vu dentro.
. Creur lus restrlcclones de segurldud del recurso en el descrltor de desllegue corresondlente. Lsto se huce con el elemento <securlty
construlnt>
. Letermlnur el tlo de ucceso ul recurso. <loglnconflg>
. Lstublecer uno o ms roles que uedun ucceder ul elemento. <securltyrole>
\($)?:&:6:($Y$:"9
Lste tlo es unu equenu modlflcuclon del unterlor que nos ermlte slmulur que estumos reullzundo lu uutentlcuclon con unu buse de dutos. Lu unlcu
dlferenclu con el unterlor es que se reullzu u truves de un recurso 'NLl.
, -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
FZ-QYICOI^i Reulmente "mentl' en el unto unterlor orque el cuso que se utlllzu en el servldor de 1omcut segun lo hemos lnstuludo es este. Pero ul
ser unu extenslon del unterlor he referldo seurur lu exllcuclon en dos urtes.
Puru verlo tenemos que lr ul urchlvo server.xml
<!-- Global JNDI resources
Documentation at /docs/jndi-resources-howto.html
-->
<GlobalNamingResources>
<!-- Editable user database that can also be used by
UserDatabaseRealm to authenticate users
-->
<Resource name="UserDatabase" auth="Container"
type="org.apache.catalina.UserDatabase"
description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="conf/tomcat-users.xml" />
</GlobalNamingResources>
EXF -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
Sl nos dumos cuentu se deflne un recurso globul de tlo S'&8!/:/2/'& que se usoclu ul urchlvo :0@./:g,'&8'=`@)
Adems un oco ms ubujo
<!-- Use the LockOutRealm to prevent attempts to guess user passwords
via a brute-force attack -->
<Realm className="org.apache.catalina.realm.LockOutRealm">
<!-- This Realm uses the UserDatabase configured in the global JNDI
resources under the key "UserDatabase". Any edits
that are performed against this UserDatabase are immediately
available for use by the Realm. -->
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
vemos que se deflne el [&/)@ (mlru el lnterno rlmero) que es justo del tlo que estumos comentundo en este unto. Ll [&/)@ exterlor \0.a],:[&/)@
urece lnteresunte segun lo que exllcun los comenturlos no? Ls un contenedor uru usegurur el [&/)@ que utlllcemos y se uede ver en lu glnu de lu
documentuclon de 1omcut.
Por lo tunto u los untos de MemoryReulm hubrlu que unudlr (el rlmero se unude y el segundo es unu modlflcuclon):
-& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
. Conflgurur el recurso 'LNl
z. Creur el <Reulm> uru que seu de tlo UserLutubuseReulm en lugur de MemoryReulm
Utlllzundo MemoryReulm, estublece un tlo de control de ucceso bslco u unu ullcuclon que desllegues en tu servldor uedes usur el
ejemlo del slte. Lstublece un rol cuyo ldentlflcudor seu tu uellldo y ul menos un usuurlo con tu nombre. Pruebu el ucceso.
Reulmente solo uede huber un <Reulm> uctuundo en unu ullcuclon en un momento dudo. Lstu uflrmuclon lmllcu (debes eleglr unu
de lus dos resuestus desues de robur):
. Se utlllzu el Reulm ms concreto como con lus dlrectlvus de Auche.
z .Euy que ellmlnur el Reulm de server.xml orque sl no.
Lllmlnu el control de ucceso unterlor y reullzu lo mlsmo con UserLutubuseReulm Puedes estublecer el control de ucceso solo uru
ulgunu urte de lu documentuclon? y uru un urchlvo en urtlculur? Al ver lu estructuru de curetus de unu Allcuclon veb declumos
que todo lo que no se ublcuru en vL8lNl o en ML1AlNl eru ubllco. Afectu u esto?
Creu otro rol en el urchlvo de usuurlos ero no le des ucceso u lu ullcuclon de documentuclon. Comruebu que no tlene ucceso ero el
otro rol sl.
Recuerdu que debes relnlclur el servldor (1omcut) trus cudu cumblo.
3MM -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
R?5>Y$:"9
Lste cuso necesltu unu buse de dutos uru funclonur or lo que emezuremos lnstulundo MySQL. Los usuurlos uhoru se ublcurn en unu buse de dutos
con tublus de usuurlos, roles y lu reluclon entre ellos. Los nombres de estos elementos se ueden eleglr y conflgurur ero huy unos rctlcumente
estndur que sern los que usemos.
1omcut se conectu u buses de dutos medlunte unu tecnologlu llumudu O/>/ !/:/2/'& 9011&.:*>*:H ('L8C). 'L8C funclonu como unu cuu de ubstrucclon
entre lus buses de dutos y los elementos que lu vuyun u usur. Le estu formu 1omcut se comunlcu con lu APl de 'L8C en lugur de con lu buse de dutos
dlrectumente. Asl se conslgue no deender de lus ecullurldudes de cudu buse de dutos. 'L8C se comunlcu con lu buse de dutos u truves de un drlver
que convlerte lus ordenes dlrectumente ul formuto eseclflco de cudu buse de dutos.
Yu tenemos lnstuludo MySQL y 'L8C que se lncluye en 'uvu or lo que el slgulente uso ser lnstulur el drlver. Puru ello odemos descurgur el drlver
desde su web y colocurlo en CA1ALlNA_ECMLjllb que en nuestro cuso est en f,'8f'N/8&f:0@./:5f)*2 lo que lo hur dlsonlble uru todus lus
ullcuclones de 1omcut o colocurlo en el dlrectorlo vL8lNljllb de unu ullcuclon eseclflcu uru que este dlsonlble en ellu.
Como ulternutlvu odemos lnstulurlo uru que este dlsonlble uru cuulquler ullcuclon que use lu 'vM de 'uvu:
sudo apt-get install libmysql-java
y estublecemos el CLASSPA1E
CLASSPATH=".:/usr/share/java/mysql.jar"
^(&$ `"&#9, 9J&,+, +: 1),6"$9:( 1,)E7$ $" 7(, +$ !":((1:&B K: %, $(&D )$!,9$%+:+,8
O,(,&),( 7(:)$9,( $" 9J&,+, +$ !,",!:)", $% ":( "#6)$)M:( !,97%$( +$ I,9!:&8
1rus lo que hubr que relnlclur uru que se curgue.
Ahoru, tendremos que creur lu conflguruclon correctu en MySQL uru lu gestlon de usuurlos y roles. Puru ello usuremos el slgulente scrlt de ejemlo
DROP DATABASE IF EXISTS tomcat_realm;
zc -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
CREATE DATABASE tomcat_realm;
USE tomcat_realm;
CREATE TABLE tomcat_users (
user_name varchar(20) NOT NULL PRIMARY KEY,
password varchar(32) NOT NULL
);
CREATE TABLE tomcat_roles (
role_name varchar(20) NOT NULL PRIMARY KEY
);
CREATE TABLE tomcat_users_roles (
user_name varchar(20) NOT NULL,
role_name varchar(20) NOT NULL,
PRIMARY KEY (user_name, role_name),
CONSTRAINT tomcat_users_roles_foreign_key_1 FOREIGN KEY (user_name) REFERENCES tomcat_users
(user_name),
3M3 -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
CONSTRAINT tomcat_users_roles_foreign_key_2 FOREIGN KEY (role_name) REFERENCES tomcat_roles
(role_name)
);
INSERT INTO tomcat_users (user_name, password) VALUES ('sergio', 'sergio');
INSERT INTO tomcat_users (user_name, password) VALUES ('maria', 'maria');
INSERT INTO tomcat_roles (role_name) VALUES ('pruebas');
INSERT INTO tomcat_roles (role_name) VALUES ('otro');
INSERT INTO tomcat_users_roles (user_name, role_name) VALUES ('sergio', 'pruebas');
INSERT INTO tomcat_users_roles (user_name, role_name) VALUES ('sergio', 'otro');
INSERT INTO tomcat_users_roles (user_name, role_name) VALUES ('maria', 'pruebas');
COMMIT;
Lu tublu que llstu los roles no es necesurlu y lus cluves ujenus tumoco, ero lus hemos creudo or muntener lu correcclon.
Ln ml cuso voy u creur este scrlt en un dlrectorlo uru tenerlo ucceslble en todo momento. Llumo ul scrlt :0@./:,'&8'='Q)
mkdir /usr/db-scripts
cd /usr/db-scripts/
gedit tomcatusers.sql
zc -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
Accedemos u MySQL
mysql -u root -p
dentro de MySQL ejecutumos el scrlt
mysql> source /usr/db-scripts/tomcatusers.sql
y comrobumos que todo huyu ldo blen.
mysql> select * from tomcat_users;
mysql> select * from tomcat_users_roles;
quit
Ahoru creumos un usuurlo uru que se conecte el Reulm que creemos en 1omcut. Creo un scrlt que se llume ,',/8*0[&/)@='Q)
USE mysql;
CREATE USER 'accesoRealm'@'localhost' IDENTIFIED BY 'pwdRealm';
GRANT SELECT ON tomcat_realm.* TO accesoRealm@localhost;
Y lo ejecuto
mysql> source /usr/db-scripts/usuarioRealm.sql
Ln el urchlvo server.xml modlflco lu secclon del Reulm comentundo el que huy e lntroduclendo el de lu buse de dutos.
3M6 -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
<!-- Use the LockOutRealm to prevent attempts to guess user passwords
via a brute-force attack -->
<Realm className="org.apache.catalina.realm.LockOutRealm">
<!-- This Realm uses the UserDatabase configured in the global JNDI
resources under the key "UserDatabase". Any edits
that are performed against this UserDatabase are immediately
available for use by the Realm. -->
<!--
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
-->
<Realm className="org.apache.catalina.realm.JDBCRealm"
driverName="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/tomcat_realm"
connectionName="accesoRealm" connectionPassword="pwdRealm"
zc -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
userTable="tomcat_users" userNameCol="user_name" userCredCol="password"
userRoleTable="tomcat_users_roles" roleNameCol="role_name" />
</Realm>
Lstudlu los urmetros de conflguruclon del Reulm y dlscutelos en cluse.
1rus esto relnlclumos 1omcut y sl no reclblmos nlngun error hemos conflgurudo el Reulm blen.
/etc/init.d/tomcat7 restart
1en en cuentu que el error uede estur en los flcheros de log de 1omcut. Aunque luego veremos ms sobre esto, tlenes que mlrur en el dlrectorlo
f>/8f)*2f:0@./:5f)0+' y buscur el urchlvo con lu fechu de hoy de los que tengun un nombre como ./:/)*1/=3ME4gMEg3K=)0+ ten en cuentu que uedes borrur
el contenldo del log uru encontrur ms fcllmente los nuevos errores.
Ll error ms hubltuul es que no encuentre el drlver 'L8C
ene 26, 2013 8:47:38 AM org.apache.catalina.realm.JDBCRealm authenticate SEVERE: Excepcin al realizar la
autentificacin java.sql.SQLException: com.mysql.jdbc.Driver at
org.apache.catalina.realm.JDBCRealm.open(JDBCRealm.java:701) at
org.apache.catalina.realm.JDBCRealm.authenticate(JDBCRealm.java:352) at
org.apache.catalina.realm.CombinedRealm.authenticate(CombinedRealm.java:146) at
org.apache.catalina.realm.LockOutRealm.authenticate(LockOutRealm.java:180) at
org.apache.catalina.authenticator.FormAuthenticator.authenticate(FormAuthenticator.java:295) at
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:450) at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) at
3MK -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927) at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) at
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987) at
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579) at
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309) at
java.util.concurrent.ThreadPoolExecutor.runorker(ThreadPoolExecutor.java:1110) at
java.util.concurrent.ThreadPoolExecutor$orker.run(ThreadPoolExecutor.java:603) at
java.lang.Thread.run(Thread.java:722)
Caused by: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver at
java.net.URLClassLoader$1.run(URLClassLoader.java:366) at
java.net.URLClassLoader$1.run(URLClassLoader.java:355) at
java.security.AccessController.doPrivileged(Native Method) at
java.net.URLClassLoader.findClass(URLClassLoader.java:354) at
java.lang.ClassLoader.loadClass(ClassLoader.java:423) at
java.lang.ClassLoader.loadClass(ClassLoader.java:356) at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:186) at
org.apache.catalina.realm.JDBCRealm.open(JDBCRealm.java:697) ... 16 more
Que se roduce orque no hus colocudo blen el urchlvo 'AR con el drlver o no est funclonundo blen el CLASSPA1E.
Pruebu u ucceder ul webmunuger. No uedes orque en lu buse de dutos no hemos uslgnudo el rol correcto ul usuurlo. Puru ello he creudo otro scrlt
@/1/+&8='Q)
USE tomcat_realm;
INSERT INTO tomcat_roles (role_name) VALUES ('manager-gui');
INSERT INTO tomcat_users_roles (user_name, role_name) VALUES ('sergio', 'manager-gui');
zc, -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
COMMIT;
Pruebu u deslegur ullcuclones con control de ucceso en el servldor (te ueden servlr ulgunos de los ejemlos del slte) y ruebu u
conecturte con UserLutubuseReulm. Lesues conflguru 'L8CReulm y vuelve u robur.
3MF -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
Admlnlstruclon de seslones. Seslones erslstentes
1omcut utlllzu un Perslstent Sesslon Munuger uru reullzur colus de lus seslones de los usuurlos en el dlsco. Lstu gestlon de seslones es bslcu uru el
funclonumlento de lus ullcuclones. Permlte reullzur vurlus mejorus sobre lus seslones slendo lus rlnclules, el estubleclmlento de un tlemo mxlmo
de vldu uru lus seslones lnuctlvus y guurdundo lus seslones en dlsco cuundo se uugu 1omcut, lo que ermlte que lus seslones se muntengun durunte
vurlus ejecuclones del servldor.
Euy deflnldu un lntefuz org.uuche.cutullnu.Munuger uru gestlonur lus seslones. Se conflguru medlunte el elemento <Munuger> en ulguno de los
urchlvos de contexto (el globul context.xml o el mlsmo en el dlrectorlo ML1AlNl de ulgunu ullcuclon). 1omcut lncororu dos lmlementuclones de
estu lnterfuz:
! org.uuche.cutullnu.sesslon.StundurdMunuger: que es lu lmlementuclon que se usu or defecto sl no se eseclflcu otru.
! org.uuche.cutullnu.sesslon.PerslstenMunuger: que ermlte guurdur lus seslones en unu buse de dutos uurte de en un dlsco.
No vumos u entrur en muchos detulles sobre estus cluses ero se ueden consultur en lu documentuclon de 1omcut.
Sl vumos ul urchlvo de contexto
gedit /etc/tomcat7/context.xml
odemos ver que or defecto vlene uctlvudo
<!-- Uncomment this to disable session persistence across Tomcat restarts -->
<!--
<Manager pathname="" />
-->
zc -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
vemos que sl lo descomentumos NC tendrlumos seslones erslstentes uunque relnlclrumos 1omcut.
Podemos conecturnos ul web munuger de 1omcut htt:jjloculhost:8c8cjmunugerjhtml y robur u ucceder ul
htt:jjloculhost:8c8cjcc_formjlormServlet
Podemos ver que sl ubrlmos y cerrumos el nuvegudor vurlus veces se relnlclu lu seslon ero sl tenemos ublerto el nuvegudor se muntlene uru cuundo
volvumos. Cudu vez que cerrumos el nuvegudor se sumu unu seslon ul numero de seslones de lu llstu.
Sl hucemos cllc sobre el numero de seslones odremos lr u lu untullu de gestlon
3EM -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
Londe tenemos vurlus oclones:
! Plnchur en el nombre de unu columnu uru que ser ordenen lus seslones or ese crlterlo.
! Refrescur lu llstu. Mlentrus estumos gestlonundo esto ueden estur cumblundo lus seslones or muchos motlvos, or ejemlo un
usuurlo se conectu o desconectu.
! Selecclonur unu o ms seslones uru lnvulldurlus osterlormente con el boton corresondlente. Lstu termlnur lu seslon y el usuurlo
tendr que volver u creurlu (or ejemlo uutentlcndose en lu ullcuclon).
! Plnchur en el ldentlflcudor de lu seslon uru ver sus detulles.
z -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
Podemos comrobur que uunque relnlclemos 1omcut o lncluso lu mqulnu vlrtuul lus seslones se muntlenen. Sl mlrumos el descrltor de desllegue de
unu ullcuclon odemos ver que es oslble conflgurur el tlemo que se muntendrn lus seslones lnuctlvus. Sl tuvlerumos ullcuclones que requleren
muchu segurldud convlene bujurlo uru que cuundo el usuurlo se uusente se termlne lu conexlon.
<session-config>
<session-timeout>
30
</session-timeout>
3E3 -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
</session-config>
Sl mlrumos lu llstu de ullcuclones del munuger vemos que odemos cerrur lus
seslones que lleven lnuctlvus ms de un tlemo que ongumos. Puru ello se
escrlbe el tlemo y se ulsu el boton. Por suuesto solo tlene sentldo en cuso de
que el tlemo que escrlbumos seu menor que el estublecldo or defecto uru lu ullcuclon.
Por defecto se utlllzu el 7:/1-/8-W/1/+&8 que guurdu lus seslones en un urchlvo 7U77L]e7='&8 que se ublcu en el dlrectorlo D08a de cudu ullcuclon.
Lstos urchlvos se creun ul detener 1omcut y se destruyen cuundo se relnlclu or lo que sl quleres verlos tlenes que urur 1omcut. 1en en cuentu que sl
1omcut no se uugu correctumente (or ejemlo or un fullo en lu corrlente) no se guurdun lus seslones.
Puru conflgurur ms usectos de lus seslones usurlumos el elemento <Munuger> de los urchlvos de contexto
>\F?C?Q: en el slgulente ejemlo, lu cluse lndlcudu en reulldud es lu lnterfuz que tlenen que lmlementur lus cluses uru oder usurse en el elemento
munuger. Leberlu ser unu cluse concretu, or ejemlo unu de lus dos que one ul rlncllo del unto. 1en en cuentu que el uquete de lu cluse tumoco
es el mlsmo uru lu lnterfuz y lus cluses concretus.
<?xml version="1.0" encoding="UTF-8"?>
<Context antiJARLocking="true" path="/0330_form">
<Manager
className = "org.apache.catalina.Manager"
distributable = "true"
maxActiveSessions = "25"
maxInactiveInterval = "1200"
z -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
sessionIdLength = "16"
/>
</Context>
Lstudlu los utrlbutos comunes u todus lus lmlementuclones de Munuger en lu documentuclon. Comentulos en cluse.
Que huce el utrlbuto uth de 7:/1-/8-W/1/+&8? Que vulor le durlus uru deshubllltur lus seslones erslstentes?
3E6 -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
Archlvos de reglstro de ucceso y flltro de sollcltudes
Como cuulquler servldor, en 1omcut es muy lmortunte reglstrur ulgunos tlos de uctlvldud. Ln el dlrectorlo f&:.f:0@./:5 odemos ver dos urchlvos que
hucen referenclu u estos reglstros. Ll rlmero es )0++*1+=(80(&8:*&' y el segundo '&8>&8=`@).
Ambos hucen referenclu ul dlrectorlo CA1ALlNA_8ASLjlogs que en nuestru lnstuluclon se encuentru como enluce slmbollco en jvur(llbjtomcut,jlogs
Ls unu buenu rctlcu revlsur y borrur los urchlvos de reglstro erlodlcumente yu que ueden crecer mucho y ucubur ufectundo ul rendlmlento del
servldor.
Ln ese dlrectorlo odemos ver cuutro tlos de urchlvos de reglstro:
. cutullnu.fechu.log: Lstos urchlvos guurdun lu uctlvldud del motor durunte un dlu determlnudo.
z. cutullnu.out: es un comendlo de los unterlores.
. loculhost.fechu.log: guurdun lu uctlvldud del sltlo.
. loculhost_uccess_log.fechu.txt: son reglstros de ucceso u lus ullcuclones del servldor durunte un dlu. Son los que truturemos uqul.
Lste ultlmo tlo se uurece conflgurudo en el urchlvo server.xml dentro del elemento <Eost>
<!-- Access log processes all example.
Documentation at: /docs/config/valve.html
Note: The pattern used is equivalent to using pattern="common" -->
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log." suffix=".txt"
z -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
pattern="%h %l %u %t quot;%rquot; %s %b" />
y como odemos ver nos reflere u unu glnu de lu documentuclon que hemos lnstuludo ero que tumblen odemos ver en lu glnu de Auche.
1enemos que durnos cuentu de que reulmente vu usocludo u un elemento <vulve> y muy reluclonudo con el huy otro que se llumu <lllter>
Lstus dos tecnologlus slrven uru lntercetur lus etlclones y resuestus de E11P y re rocesurlus uru reullzur ulgun tlo de ucclon untes de que slgun
su cumlno. Unu grun ventuju es que no deenden de cudu ullcuclon slno que ueden lmlementurse uru todo el sltlo. Unu grun dlferenclu entre ellus
es que <vulve> es un desurrollo usocludo u 1omcut mlentrus que <lllter> ertenece u lu APl de Servlets.
Como yu vlmos se ueden colocur en <Lnglne>, <Eost> o <Context> ufectundo ul entorno concreto segun corresondu.
TL*7"*(&
Se uede consultur su uso en lu glnu corresondlente de lu conflguruclon, ero se uede ureclur que es muy extensu.
Uno uede rogrumur su rolu vlvulu o flltro urtlendo de lu lnterfuz vulve o de ulgunu de lus cluses del uquete vulves. ;/)>&b/'& est
esuclulmente lndlcudu uru ello. Le hecho muchus de lus otrus cluses del uquete son <*1/) or lo que no odremos heredur de ellus. Lsto quedu
totulmente fueru del contenldo del curso or lo que nos centruremos en ver ulgunus de lus vlvulus lncluldus con 1omcut.
vumos u emezur volvlendo u lu que est hubllltudu en server.xml
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log." suffix=".txt"
pattern="%h %l %u %t quot;%rquot; %s %b" />
Podemos ver que usu "..&''\0+;/)>& que como su nombre lndlcu reglstru el ucceso. Como est lncluldu en el elemento <Eost> reglstru todos los
uccesos u loculhost.
3EK -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
Consultu lu documentuclon uru hustu entender que huce estu conflguruclon de lu vlvulu.
Lstudlu el resto de vlvulus (lus que no ucubun en lllter) solo uru oder tener unu ldeu de que hucen. No es necesurlo que consultes los
utrlbutos nl lu conflguruclon.
1rus ver lus vlvulus lncluldus, lu utllldud de ellus es evldente. Unu de ellus es eseclulmente curlosu y utll en determlnudos entornos. Sl or ejemlo
estumos en unu lntrunet de unu emresu donde huy vurlus ullcuclones web dlsonlbles uru los emleudos, SlngleSlgnCn nos ermlte que solo tengun
que uutentlcurse en lu rlmeru que se conecten y se muntendrn esus credenclules u truves de todus lus ullcuclones.
Pruebu lu vlvulu SlngleSlgnCn en tu sltlo.
Creu un usuurlo con un rol que tengu ucceso u unus ullcuclones ero no u otrus. Conectute con dlcho usuurlo u unu ullcuclon uru lu
que sl tengu ucceso. Luego ve u unu en lu que no tengu ucceso. Que sucede?
0+*523&
Los flltros son unu lnterfuz de los Servlets. Por lo tunto no son excluslvos de 1omcut. 1lenen un comortumlento muy slmllur u lus vlvulus ero se
conflgurun en el descrltor de desllegue de cudu ullcuclon. Aunque odemos lmlementur nuestros rolos flltros que lmlementen lu lnterfuz,
1omcut lncluye ulgunos que ueden consulturse en lu glnu de lu documentuclon corresondlente.
Remote Address lllter, Remote Eost lllter y Remote lP lllterjvulve ueden usurse tunto como vlvulus como flltros. Comruebu que lu
documentuclon en umbos uurtudos es rctlcumente lguul. Lchu un vlstuzo uru entender que huce cudu uno.
z, -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
Sl mlrus (or enclmu) lu documentuclon de los dems flltros vers que tlenen usos mucho ms concretos que lus vlvulus, muchos de
ellos reluclonudos con utuques o sltuuclones muy eseclflcus.
3EF -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
Conflgurur el servldor de ullcuclones uru cooerur con servldores web
Aunque 1omcut uede gestlonur etlclones E11P y servlr urchlvos E1ML esto lo huce mejor Auche (u otro servldor web). Adems Auche lncluye
muchus ms oclones de conflguruclon y dlsone de muchlslmos modulos uru reullzur dlferentes tureus. Ctros motlvos ueden ser el rendlmlento, lu
dlstrlbuclon en vurlus mqulnus, etc.
Ln este unto vumos u urender u conflgurur un servldor web que reclbu lus etlclones y se lus reenvle u 1omcut sl es necesurlo. Ll contenldo esttlco
(o derlvudo de otros lenguujes como PEP sl tenemos Auche conflgurudo uru ello) lo servlr Auche y lus etlclones reluclonudus con 'SPs o Servlets
se lus redlrlglr u 1omcut.
Como yu hemos comentudo lu conexlon con el exterlor se reullzu u truves de conectores. Los dos rlnclules son el E11P y el A'P, umbos soortun SSL.
Ll conector E11P vlene uctlvudo or defecto y es el que ermlte u 1omcut rocesur etlclones E11P y funclonur como un servldor web lndeendlente.
Sl consultumos el urchlvo '&8>&8=`@) veremos.
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
URIEncoding="UTF-8"
redirectPort="8443" />
Podemos ver que lus oclones de conflguruclon son muchus ms en lu uyudu de conflguruclon de 1omcut. No vumos u entrur en detulles ero es
lmortunte ver que huy un uurtudo donde lndlcu como usurlo con SSL. Le hecho, uunque no este uctlvo orque uurece comentudo, se uede
observur que vlene reurudo uru usurlo.
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
z -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" />
Sln emburgo uhoru queremos conflgurur 1omcut uru funclonur como uoyo u un servldor web (en nuestro cuso Auche). Puru ello necesltumos el
conector "(/.N& O7&8> Z80:0.0) (A'P). Lsto es desde el ludo de 1omcut, ero que sucede con Auche? Ln su ludo odemos usur dos modulos uru
reullzur estu conexlon: @0-^_a o @0-^(80`H. lncluso de este ultlmo exlsten dos verslones: @0-^(80`H^/_( y @0-^(80`H^N::(. Aunque no es fcll y nl
slquleru huy ununlmldud sobre estus cuestlones, vumos u lntentur uclurur un oco cuul usur:
! 9,+_TN: Ls el ms muduro y robudo de todos. Reulmente es el ms otente y se desurrollu or lu comunldud 1omcut y no como
modulo de Auche. Por ello no vlene lncluldo en lu dlstrlbuclon y Auche y huy que unudlrlo u muno. Ln generul sl no se necesltu ulgunu
de sus funclonulldudes eseclflcus no urece recomenduble ufrontur el resto de lnconvenlentes.
! 9,+_1),GK_:T1: se dlstrlbuye con Auche desde lus verslones z.z y usu el rotocolo A'P que tlene mejor rendlmlento que E11P
comunlcundo servldores.
! 9,+_1),GK_B&&1: Ls slmllur ero usundo E11P en lugur de A'P. Ls unu muneru fcll y rldu de conflgururlo y onerlo en
funclonumlento ero que en generul tlene vurlos lnconvenlentes que desuconsejun su uso en entornos de roducclon sl no es
necesurlo.
Le cuulquler formu el rlmer uso que debemos dur en lnstulur Auche y 1omcut. Nosotros yu tenemos el segundo or lo que unudlremos Auche.
Aunque nosotros lo vumos u conflgurur en lu mlsmu mqulnu, uede estur en dos dlferentes y de hecho esto mejorur el rendlmlento reduclendo lu
curgu. 1en en cuentu que vumos u reullzur dos conflguruclones dlferentes or lo que es buenu ldeu clonur lu mqulnu vlrtuul en este unto.
;31QR\
Lste modulo no vlene con lu dlstrlbuclon estndur de uuche, or lo que hubr que descurgurlo uunque deberlumos comrobur que no este yu
descurgudo en f&:.f/(/.N&3f@0-'g/>/*)/2)&
sudo apt-get update
sudo apt-get install libapache2-mod-jk
33M -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
Lo que roduce unu sulldu que es lnteresunte leer orque nos lndlcu que yu se uctlvu el modulo ul lnstulurlo (sln necesldud que uctlvurlos munuulmente)
y de que tenemos que relnlclur uuche uru que los cumblos tengun efecto.
Leyendo lista de paquetes... Hecho
Creando rbol de dependencias
Leyendo la informacin de estado... Hecho
Paquetes sugeridos:
tomcat6 libapache-mod-jk-doc
Se instalarn los siguientes paquetes NUEVOS:
libapache2-mod-jk
0 actualizados, 1 se instalarn, 0 para eliminar y 282 no actualizados.
Necesito descargar 144 kB de archivos.
Se utilizarn 532 kB de espacio de disco adicional despus de esta operacin.
Des:1 http://es.archive.ubuntu.com/ubuntu/ precise/universe libapache2-mod-jk i386 1:1.2.32-1 [144
kB]
Descargados 144 kB en 0seg. (179 kB/s)
Seleccionando paquete libapache2-mod-jk previamente no seleccionado
zz -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
(Leyendo la base de datos ... 174672 ficheros o directorios instalados actualmente.)
Desempaquetando libapache2-mod-jk (de .../libapache2-mod-jk_1%3a1.2.32-1_i386.deb) ...
Configurando libapache2-mod-jk (1:1.2.32-1) ...
Enabling module jk.
To activate the new configuration, you need to run:
service apache2 restart
Podemos relnlclur Auche de cuulquler formu.
/etc/init.d/apache2 restart
Leberlumos comrobur que este uctlvudo consultundo mods_enubled o
apachectl -M
Sl mlrumos lu conflguruclon del modulo
gedit /etc/apache2/mods-available/jk.conf
Podemos observur un monton de urmetros de conflguruclon, ero nos bustu or uhoru con fljurnos en lu conflguruclon de trubujudores.
# e need a workers file exactly once
# and in the global server
333 -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
JkorkersFile /etc/libapache2-mod-jk/workers.properties
Un trubujudor (D08a&8) en 1omcut es unu lnstunclu que rocesu lus etlclones. Ln nuestru conflguruclon nos bustur con uno solo ero multlles
trubujudores ueden conflgururse sl es necesurlo reurtlr lu curgu.
Lu dlrectlvu que hemos vlsto untes lndlcu en que urchlvo se conflgururn los D08a&8'. Podemos edltur el urchlvo uru conflgurur estos trubujudores:
sudo gedit /etc/libapache2-mod-jk/workers.properties
vemos que vlene conflgurudo uru 1omcut 6 ero cumblurlo es senclllo
#
# workers.tomcat_home should point to the location where you
# installed tomcat. This is where you have your conf, webapps and lib
# directories.
#
workers.tomcat_home=/usr/share/tomcat7
Lo slgulente u conflgurur es lu llstu de trubujudores que esturn dlsonlbles. Solo vumos u tener uno ero se ueden unudlr ms seurundo los nombres
con comus (,)
#
#------ worker list ------------------------------------------
zz -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
#---------------------------------------------------------------------
#
#
# The workers that your plugins should create and work with
#
worker.list=ajp13_worker
Por ejemlo sl tuvlerumos dos
worker.list = workerprueba1, workerprueba2
Por ultlmo huy que conflgurur cudu worker
#
#------ ajp13_worker ORKER DEFINITION ------------------------------
#---------------------------------------------------------------------
#
#
336 -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
# Defining a worker named ajp13_worker and of type ajp13
# Note that the name and the type do not have to match.
#
worker.ajp13_worker.port=8009
worker.ajp13_worker.host=localhost
worker.ajp13_worker.type=ajp13
Lsto se odrlu reetlr uru dlferentes workers. Mucho ms sobre estus conflguruclones se uede consultur en lu uyudu.
Como hemos cumbludo lu conflguruclon del modulo huy que relnlclur Auche.
/etc/init.d/apache2 restart
Cuundo hemos vlsto el urchlvo '&8>&8=`@) de 1omcut observumos que el conector A'P vlene conflgurudo ero comentudo. Sl lo descomentumos est
reurudo uru funclonur.
<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
Relnlclu 1omcut uru que los cumblos surtun efecto
/etc/init.d/tomcat7 restart
zz -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
1oduvlu nos fultu lndlcur u Auche que etlclones debe redlrlglr u 1omcut. Lsto se uede hucer en vurlos untos deendlendo de como tengumos
conflgurudo el servldor web, ero en nuestro cuso lo vumos u reullzur en el sltlo web or defecto.
gedit /etc/apache2/sites-available/default
Londe montumos los dlrectorlos e lndlcumos el trubujudor que utender lus etlclones
<VirtualHost *:80>
ServerAdmin webmaster@localhost

DocumentRoot /var/www

JkMount /0330_form/ ajp13_worker
JkMount /0330_form/* ajp13_worker
1rus relnlclur Auche
/etc/init.d/apache2 restart
odemos ucceder u lu ullcuclon u truves de Auche, observu que no lndlcumos el uerto: htt:jjloculhostjcc_formj
Conflguru Auche y 1omcut uru que coluboren y que Auche redlrlju lus etlclones de los ejemlos de 1omcut.
33K -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
;31Q)23[4
O, ($ +$6$ 7(:) $(&$ 9<+7", !,% $" :%&$)#,), or lo que emezure con otru mqulnu vlrtuul. Lste modulo es lu soluclon uru usur A'P que vlene
lntegrudu con Auche desde lus verslones z.z. Como se uede observur en lu lntroducclon de lu documentuclon del modulo exlsten vurlos derlvudos del
modulo que ermlten unudlr funclonulldud. Lstos derlvudos requleren que el modulo rlnclul este resente uru oder funclonur.
Lo rlmero que huy que hucer es uctlvur el modulo de roxy y el que hubllltu el rotocolo E11P.
sudo a2enmod proxy
sudo a2enmod proxy_http
Ldltumos lu conflguruclon del modulo
gedit /etc/apache2/mods-available/proxy.conf
1en en cuentu que uru nuestro objetlvo no es necesurlo descomentur lu rlmeru llneu como exllcun en los comenturlos que estn justo enclmu. Lu
dlrectlvu Z80`HZ8&'&8>&T0': lndlcu que se le debe usur el nombre del host que vlene en lu etlclon ul servldor de ullcuclones en lugur de otro que
lndlquemos nosotros. Lsto es lmortunte uru el vlrtuul hostlng en el servldor de ullcuclones.
# If you only want to use apache2 as a reverse proxy/gateway in
# front of some web application server, you DON'T need
# 'ProxyRequests On'.
ProxyRequests Off
zz, -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
ProxyPreserveHost On
<Proxy *>
AddDefaultCharset off
Order deny,allow
Allow from all
</Proxy>
Posterlormente edltumos el urchlvo del host vlrtuul que estemos conflgurundo
gedit /etc/apache2/sites-available/default
Y conflgurumos lus redlrecclones. 1en en cuentu que el urchlvo est cortudo y que lus tres rlmerus llneus yu estubun usl.
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www
ProxyPass /0330_form http://localhost:8080/0330_form
33F -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
ProxyPassReverse /0330_form http://localhost:8080/0330_form
<Location /0330_form >
Order allow,deny
Allow from all
</Location>
y relnlclumos Auche untes de onernos u conflgurur 1omcut.
/etc/init.d/apache2 restart
Solo tenemos que reullzur un equeno ujuste en el conector de server.xml
gedit /etc/tomcat7/server.xml
unudlmos unu llneu con el uerto del que reclblremos lus redlrecclones.
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
URIEncoding="UTF-8"
redirectPort="8443"
zz -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
proxyPort ="80" />
y relnlclumos 1omcut
/etc/init.d/tomcat7 restart
Ahoru, ul lguul que en el cuso unterlor odemos ucceder u lu ullcuclon u truves del servldor web htt:jjloculhostjcc_form
9,+_1),GK_:T1
Pero, y el rotocolo A'P?
Se conflguru rctlcumente lguul. Adems ueden coexlstlr E11P (y E11PS) y A'P. Ln este uurtudo solo voy u destucur los untos donde lu
conflguruclon es dlferente or lo que sl quleres conflgurur solo A'P deberlus leer untes el unto unterlor.
Lo rlmero serlu uctlvur el modulo
sudo a2enmod proxy_ajp
Posterlormente edltumos el urchlvo del host vlrtuul que estemos conflgurundo
gedit /etc/apache2/sites-available/default
Y conflgurumos lus redlrecclones. Muntengo lu conflguruclon del cuso unterlor uru que se veu que son comutlbles.
<VirtualHost *:80>
ServerAdmin webmaster@localhost
34M -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
DocumentRoot /var/www
ProxyPass /0330_form http://localhost:8080/0330_form
ProxyPassReverse /0330_form http://localhost:8080/0330_form
<Location /0330_form >
Order allow,deny
Allow from all
</Location>
ProxyPass /examples/jsp ajp://localhost:8009/examples/jsp
ProxyPassReverse /examples/jsp ajp://localhost:8009/examples/jsp
<Location /examples/jsp >
Order allow,deny
z -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
Allow from all
</Location>
y relnlclumos Auche untes de onernos u conflgurur 1omcut.
/etc/init.d/apache2 restart
Solo tenemos que reullzur un equeno ujuste en el conector de server.xml
gedit /etc/tomcat7/server.xml
descomentumos el conector A'P
<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
y relnlclumos 1omcut
/etc/init.d/tomcat7 restart
Ahoru, ul lguul que en el cuso unterlor odemos ucceder u lu ullcuclon u truves del servldor web htt:jjloculhostjcc_form (con E11P) y u
htt:jjloculhostjexumlesjjsj (con A'P)
Conflguru Auche y 1omcut uru que todo que coluboren mostrundo lu documentuclon de 1omcut en htt:jjloculhostjtomdocj
Pruebulo con E11P y luego con A'P.
343 -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
Segurldud en el servldor de ullcuclones. Conflgurur el servldor de ullcuclones con soorte
SSLj1SL.
Yu vlmos que E11PS no eru ms que E11P con unu cuu lntermedlu. Los mlsmos rlncllos se ullcun en 1omcut. Ln este cuso tumblen usuremos
certlflcudos dlgltules.
Ls lmortunte destucur que uunque en 1omcut se uede usur un conector que usu CenSSL nosotros vumos u ver los que se busun en 'uvu SSL. Lesde
'Ll . se lncluse 'SSL en lus dlstrlbuclones, or lo que tenemos u nuestru dlsoslclon todo lo necesurlo. Nosotros solo vumos u generur un certlflcudo
uutoflrmudo uru 1omcut, ero en estu glnu se ueden ver los usos uru creur uno y edlr que nos flrme el certlflcudo unu CA.
vumos u creur un ulmucen de certlflcudos. Lu oclon -genkey eseclflcu que se cree un ur cluve ubllcujrlvudu que se ulmucenun en un certlflcudo
uutoflrmudo. "ulmucen' es el nombre del urchlvo que se vu u creur.
sudo keytool -genkey -alias tomcat -keyalg RSA -keystore /var/lib/tomcat7/almacen
Lo que nos vu ldlendo los dutos necesurlos.
Introduzca la contrasea del almacn de claves:
Volver a escribir la contrasea nueva:
Cules son su nombre y su apellido?
[Unknown]: Sergio Cuesta
Cul es el nombre de su unidad de organizacin?
z -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
[Unknown]: Consejera de Educacin
Cul es el nombre de su organizacin?
[Unknown]: Comunidad de Madrid
Cul es el nombre de su ciudad o localidad?
[Unknown]: Madrid
Cul es el nombre de su estado o provincia?
[Unknown]: Madrid
Cul es el cdigo de pas de dos letras de la unidad?
[Unknown]: ES
Es correcto CN=Sergio Cuesta, OU=Consejera de Educacin, O=Comunidad de Madrid, L=Madrid,
ST=Madrid, C=ES?
[no]: si
Introduzca la contrasea de clave para <tomcat>
(INTRO si es la misma contrasea que la del almacn de claves):
346 -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
Lurunte estu conflguruclon nos lde que deflnumos lus contrusenus tunto del ulmucen como del urchlvo de cluves. Ln ml cuso umbus son "serglo.
Lo slgulente serlu hubllltur el conector E11PS en server.xml
<!-- Define a SSL HTTP/1.1 Connector on port 8443
This connector uses the JSSE configuration, when using APR, the
connector should be using the OpenSSL style configuration
described in the APR documentation -->
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="/var/lib/tomcat7/almacen" keystorePass="sergio"
keyAlias="tomcat" keyPass="sergio" />
Puedes ver que he unudldo lus dos ultlmus llneus uru lndlcur lu conflguruclon de segurldud. 1rus relnlclur 1omcut odemos conecturnos ul servldor de
ullcuclones con conexlones segurus htts:jjloculhost:8j
Ll roblemu es que uunque uhoru uedo conecturme u lus ullcuclones medlunte E11PS slgo tenlendo lu oclon de hucerlo medlunte E11P
htt:jjloculhost:8c8cjcc_formj
Puru obllgur u que u unu ullcuclon huyu que conecturse medlunte E11PS huy que modlflcur su descrltor de desllegue. Puru hucer lu ruebu modlflco
el descrltor de desllegue de czc_buslc
z -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
gedit /var/lib/tomcat7/webapps/0320_basic/EB-INF/web.xml
Euy que cumblur el tlo de trunsorte que se obllgu de NCNL u CCNllLLN1lAL
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
Podemos ver que uhoru sl robumos u conecturnos u htt:jjloculhost:8c8cjczc_buslcj nos redlrlge uutomtlcumente u
htts:jjloculhost:8jczc_buslcj
Yu subemos conflgurur Auche y 1omcut con SSL ero jE7J (7!$+$ !,% ": !,%$G#<% $%&)$ $"",(k
Ls muy ruro que estu conexlon se reullce u truves de unu red en lu que no conflemos. lncluso en el cuso de que se encuentren en mqulnus dlferentes
suele usurse ulgun tlo de conexlon rlvudu entre ellos uru que los mensujes que se envlun no se dlstrlbuyun or redes ms o menos ubllcus. Sl
necesltrumos conflgururlo de todus formus deberlumos restur utenclon u lus dlrectlvus que comlenzun or SSLProxy del modulo mod_ssl de Auche.
Le todus formus uru usegurur lu conexlon Auche - 1omcut (con E11PS) tendrlumos que usur un conector E11PS, lo que hugo un oco ms urrlbu y
cumblur lus cudenus de redlrecclon en lu conflguruclon del host vlrtuul uru que utlllcen E11PS y el uerto 8.
34K -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
Prctlcus flnules
Ln este unto y con los conoclmlentos de hosts vlrtuules que urendlmos en Auche, estumos reurudos uru urender u creur hosts
vlrtuules en 1omcut or nosotros mlsmos. Por ello debes urender u conflgurur un host vlrtuul.
1e uyudurn mucho, lu ullcuclon de host munuger que lnstulumos con los uquetes udlclonules y reusur todo este temu uru ver
donde se conflgurubu un elemento <Eost> y que lmllcuclones tenlu. 1en en cuentu que ul lntenturte conectur ul host munuger, sl no
uedes te dlce el rol que tlenes que tener uru oder conecturte. 1umblen huy un equeno tutorlul en lu documentuclon de 1omcut.
1umblen es lmortunte recordur que el host munuger no conflguru el elemento <Eost> de server.xml, ero lnternet est lleno de
tutorlules uru reullzur esto.
1u objetlvo flnul debe ser oder conflgurur un nuevo host vlrtuul en 1omcut u muno y ser cuuz de deslegur unu de lus ullcuclones de
ejemlo (mejor con uutentlcuclon) sobre el. Lus slgulentes llneus te ueden dur unu ldeu de como hucerlo.
<Eost numewww.serglo.es u8usewebus_serglo.es
unuckvARstrue uutoLeloytrue >
<Allus>serglo.es<jAllus>
<vulve clussNumeorg.uuche.cutullnu.vulves.AccessLogvulve
dlrectorylogs
reflxserglo.es_uccess_log. sufflx.log
utternh l u t quot,rquot, s b
resolveEostsfulse j>
<jEost>
z, -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
M2L,5+,( ( %'52%I(2
Ll ultlmo ejerclclo que vumos u reullzur lmllcu usur cusl todo lo que hemos vlsto en Auche y 1omcut. Lebes conflgurur un slstemu que
gestlonu etlclones E11PS excluslvumente (no E11P) or lo que tunto 1omcut como Auche deben usur SSL. Ll sltlo debe tener tu
nombre como nombre de domlnlo y 1endr urchlvos E1ML que servlr Auche y urte con Servlets y 'SPs que servlr 1omcut u truves
de Auche. Ll control de ucceso se reullzur con un 'L8CReulm. Puedes usur los ejemlos del slte uru lu urte de ullcuclones en el
servldor. Sl decldes desurrollur lus tuyus rolus se tendr en cuentu uru lu notu, ero no es necesurlo uru que lu rctlcu este blen.
Eubr enluces en lu urte E1ML u los Servletsj'SPs. Un usuurlo lntroduclr unlcumente sus credenclules unu vez uru todus lus
ullcuclones.
Pon tu nombre en comenturlos tunto ul rlncllo como ul flnul de cudu urchlvo de conflguruclon o de contenldo que edltes.
Lvltu que se uedu ucceder u lus ullcuclones de 1omcut sln usur or Auche.
34F -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
1emu : lnstuluclon y udmlnlstruclon de servldores de trunsferenclu
de urchlvos
z -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
Conflguruclon del servlclo de trunsferenclu de urchlvos
Ll rotocolo clslco uru lu trunsferenclu de urchlvos en lnternet se demonlnu l1P (G*)& P8/1'<&8 Z80:0.0)). Con el estudo uctuul de lnternet y lus
multlles oclones de trusferenclu de urchlvos en lu web uede urecer ulgo lnnecesurlo ero slgue slendo unu oclon senclllu y eseclflcu or lo que
en mbltos rofeslonules contlnuu gozundo de buenlslmu sulud. Por ejemlo slgue slendo el metodo ms hubltuul uru sublr urchlvos, uctuullzuclones o
mldlflcuclones de contenldo u un servldor web, eseclulmente en el modo de hostlng.
l1P se ujustu u unu urqultecturu cllentejservldor como todo lo que hemos vlsto hustu uhoru. Prlmero lnstuluremos el servldor, uru luego ver dlferentes
cllentes, en este ultlmo uurtudo exlsten ulternutlvus muy cercunus u nosotros, ero u dlferenclu de los servldores web o de ullcuclones en los que el
cllente lo usumos u dlurlo, en este cuso lo mejor ser ulgo ms eseclflco.
Ln Llnux exlsten muchos servldores l1P dlferentes, no huy ms que echur un vlstuzo ul uquete vlrtuul de Ubuntu. Los dos ms oulures uctuulmente
son -),VI-+ y *(VI-+. Ll rlmero es ms senclllo de utlllzur y sus urchlvos de conflguruclon y estructuru slmllur hucen que se urezcu mucho u Auche.
Sln emburgo el segundo es el servldor l1P or defecto en lus rlnclules dlstrlbuclones de Llnux lo que huce que seu ms senclllo de lnstulur y udems
se conslderu ms seguro.
Al flnul es cuestlon de referenclus ersonules ero nosotros trubujuremos con vsl1Pd (;&8H 7&.,8& GPZ !/&@01).
Sl necesltus oclones uru otros slstemus uedes consultur ulgunus ulternutlvus en lu comurutlvu de lu vlkledlu.
Ln Llnux, un usuurlo l1P tlene su rolu curetu de usuurlo usocludu (en jhomejnombreusuurloftj) or lo que lu lntegruclon es muy ultu y l1P se
beneflclu de lu comletu y otente gestlon de usuurlos de Llnux.
>'&5(*('13 %* &%27+132
Lesde Llnux lo rlmero es uctuullzur los reosltorlos uru luego lnstulur el servldor.
sudo apt-get update
36M -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
sudo apt-get install vsftpd
Podemos ver que se hu unudldo un scrlt de uutourrunque
sudo gedit /etc/init.d/vsftpd
or lo que los metodos hubltuules de gestlon, medlunte el scrlt o como servlclo estn dlsonlbles
sudo /etc/init.d/vsftpd start
sudo service vsftpd start
con los comundos sturt, sto, resturt y reloud.
Podemos robur que todo huyu ldo blen medlunte el cllente en modo texto
ftp localhost
lo que nos edlr unus credenclules uru ucceder. Por defecto nos conectumos como el usuurlo /101H@0,' y sln contrusenu.
Connected to localhost.
220 (vsFTPd 2.3.5)
Name (localhost:root): anonymous
331 Please specify the password.
Password:
z -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> quit
221 Goodbye.
Cbservu que usumos Q,*: uru desconecturnos.
=3'E+I"2('13 %* &%27+132
Ll urchlvo de conflguruclon de vsl1Pd se uede consultur como vlene slendo hubltuul.
sudo gedit /etc/vsftpd.conf
lnstulu el servldor vsl1Pd
Como el urchlvo est muy comentudo y yu conocemos lu muyorlu de los concetos lmllcudos odemos dlscutlr en cluse lus dlrectlvus
que uurecen. Ln cuso de no conocer ulgo utlllzu lnternet.
Lebemos durnos cuentu de que lu comblnuclon del uso de los dlrectorlos de usuurlos locules (en el servldor Llnux) con su gestlon en Auche uru que
su dlrectorlo ersonul lncluyu unu curetu uru su sltlo web, lus oslbllldudes de LNS y lus oclones que ucubumos de comentur en l1P ermlten
conflgururse un servlclo de N0':*1+ rolo.
363 -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
1rus cudu cumblo en lu conflguruclon es necesurlo relnlclur el servldor. Puru lu muyorlu de los cusos es suflclente con recurgur lu conflguruclon (reloud).
service vsftpd reload
1odus lus oclones de conflguruclon se ueden consultur en estu glnu de Ubuntu. 1umblen est blen exllcudus uqul.
z -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
1los de usuurlos y uccesos ul servlclo
Ln l1P exlsten dos tlos bslcos de usuurlo, los corrlentes y los unonlmos. Reulmente deflnen el tlo de ucceso orque lndlcun sl te ests uutentlcundo
con un usuurlo concreto o ests utlllzundo unu cuentu unonlmu que generulmente no requlere uutentlcuclon. Un servldor l1P uede servlr umbos
tlos slmultnemente.
! VI- :%<%#9,: Lste modo se utlllzu generulmente cuundo el servldor l1P se usu uru dlstrlbulr cuulquler tlo de urchlvo o urchlvos u un numero
muy elevudo de usuurlos en unu sltuuclon en lu que lu ldentlflcuclon no es muy lmortunte. Sl or ejemlo hemos reullzudo unu ullcuclon de
softwure llbre y queremos dlstrlbulrlu es unu buenu oclon. Ln este tlo de conexlon solo se le lde ul cllente un nombre de usuurlo unonlmo
(generulemente y or defecto es /101H@0,') y sl ucuso (no slemre) unu contrusenu que se reflere u cuulquler dlrecclon de correo electronlco
vlldu. Unu vez nos hemos conectudo ul servldor tendremos ucceso ul dlrectorlo unonlmo y sus subdlrectorlos.
! VI- !,))#$%&$: Ln este cuso los usuurlos de l1P son los que exlsten en lu mqulnu en lu que lnstulumos el servldor. Lstos usuurlos odrn leer de
y colur u su dlrectlo ersonul urchlvos remotumente. Lus mlsmus credenclules que tlenen en lu mqulnu sern lus que neceslten uru
conecturse u medlunte l1P. vsl1Pd ermlte que este tlo de conexlon se restrlnju u los usuurlos de un gruo determlnudo. Ll uso de este tlo
de conexlon es muy hubltuul en los hostlngs web, uunque no es rctlco cuundo tenemos muchlsmos usuurlos como uede ser el cuso. Puru
ello se utlllzun los denomlnudos 7(7:)#,( *#)&7:"$( que tendrn credenclules l1P ero no cuentu en el servldor Llnux.
Se ueden conflgurur estus oclones en el urchlvo
sudo gedit /etc/vsftpd.conf
Por defecto nuestru lnstuluclon solo ermlte conexlon unonlmu.
# Allow anonymous FTP? (Beware - allowed by default if you comment this out).
anonymous_enable=YES
#
366 -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
# Uncomment this to allow local users to log in.
#local_enable=YES
Pero vemos que uctlvur o desuctlvur otros tlos de usuurlos es cuestlon de comentur o descomentur unu llneu.
Pruebu u ermltlr que los usuurlos con cuentu en el servldor se conecten con sus rolus credenclules. Lebes tener en cuentu que esto
no uctlvu lu conexlon de root or lo que ser necesurlo que utlllces otro usuurlo uru conecturte.
Leshubllltu lu conexlon unonlmu y ruebu umbos cusos. vuelve u hubllltur lu conexlon unonlmu.
Ll dlrectorlo or defecto uru el usuurlo unonlmo es f'8>f<:(f y uru los usuurlos regulures su curetu ersonul.
#ftp localhost
Connected to localhost.
220 (vsFTPd 2.3.5)
Name (localhost:root): sergio
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
z -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
Using binary mode to transfer files.
ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
drwxr-xr-x 2 1000 1000 4096 Sep 26 10:42 Descargas
drwxr-xr-x 2 1000 1000 4096 Sep 26 10:42 Documentos
drwxr-xr-x 2 1000 1000 4096 Sep 26 10:42 Escritorio
drwxr-xr-x 2 1000 1000 4096 Sep 26 10:42 Im??genes
drwxr-xr-x 2 1000 1000 4096 Sep 26 10:42 M??sica
drwxr-xr-x 2 1000 1000 4096 Sep 26 10:42 Plantillas
drwxr-xr-x 2 1000 1000 4096 Sep 26 10:42 P??blico
drwxr-xr-x 2 1000 1000 4096 Sep 26 10:42 V??deos
-rw-r--r-- 1 1000 1000 8445 Sep 26 10:15 examples.desktop
226 Directory send OK.
ftp> quit
36K -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
221 Goodbye.
Pruebu u sltuur ulgun urchlvo en lu curetu del usuurlo unonlmo. Conectute medlunte ft uru comrobur que exlste el urchlvo.
Podemos modlflcur este dlrectorlo
mkdir /var/ftpcomp/pub
sudo gedit /etc/vsftpd.conf
y escrlblmos lu dlrectlvu correctu
anon_root=/var/ftpcomp/pub
trus relnlclur el servldor odemos ver que lu curetu rulz de los usuurlos unonlmos hu cumbludo. Puedes creur un urchlvo dentro uru comroburlo.
Aunque generulmente no es nudu recomenduble (uede suoner un grun ugujero de segurldud or el que se cuelen muchlmos utuques u nuestro
servldor), u veces es necesurlo que los usuurlos unonlmos uedun sublr urchlvos ul servldor. Los usuurlos ft no tlenen ermlso uru escrlblr en su
dlrectorlo rulz or lo que debemos creur otro dlrectorlo dentro en el que ermltumos sublr urchlvos.
Creumos lu curetu y nos usegurumos de que tengu el roleturlo y los ermlsos udecuudos.
mkdir /var/ftpcomp/pub/upload
chown root.root /var/ftpcomp/pub/upload/
chmod 757 /var/ftpcomp/pub/upload/
Puedes consultur lu llstu de comundos de l1P desde consolu en muchus glnus de lnternet, or ejemlo uqul.
z, -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
Cuundo lntentumos conecturnos uede durnos un error cc
# ftp localhost
Connected to localhost.
220 (vsFTPd 2.3.5)
Name (localhost:root): anonymous
331 Please specify the password.
Password:
500 OOPS: vsftpd: refusing to run with writable root inside chroot()
Login failed.
ftp> quit
421 Service not available, remote server has closed connection
Lsto se debe u que el usuurlo no debe tener remlsos de escrlturu en su curetu rulz usl que odemos qultrselos y yu est. Por ello uhoru tendr que
escrlblr dentro de uloud.
chmod 555 /var/ftpcomp/pub
1umblen huy que modlflcur unu dlrectlvu uru que se ermltun sublr urchlvos ul servldor y recurgur lu conflguruclon
# Uncomment this to enable any form of FTP write command.
36F -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
write_enable=YES
y un oco ms ubujo conflgurumos el que el usuurlo unonlmos uedu sublr urchlvos y el que uedu creur dlrectorlos.
# Uncomment this to allow the anonymous FTP user to upload files. This only
# has an effect if the above global write enable is activated. Also, you will
# obviously need to create a directory writable by the FTP user.
anon_upload_enable=YES
#
# Uncomment this if you want the anonymous FTP user to be able to create
# new directories.
anon_mkdir_write_enable=YES
recurgumos lu conflguruclon
service vsftpd reload
y robumos. Cbservu que en el ejemlo se lntentu en el dlrectorlo que hemos conflgurudo uru ello y en el que no. 1en encuentu que el urchlvo u sublr
est en el dlrectorlo desde el que he ejecutudo el cllente l1P.
# ftp localhost
Connected to localhost.
z -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
220 (vsFTPd 2.3.5)
Name (localhost:root): anonymous
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd upload
250 Directory successfully changed.
ftp> put aSubir.txt
local: aSubir.txt remote: aSubir.txt
200 PORT command successful. Consider using PASV.
150 Ok to send data.
226 Transfer complete.
ftp> cd ..
3RM -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
250 Directory successfully changed.
ftp> put aSubir.txt
local: aSubir.txt remote: aSubir.txt
200 PORT command successful. Consider using PASV.
553 Could not create file.
ftp> quit
221 Goodbye.
volvemos u desuctlvur lu oclon de que los usuurlos unonlmos uedun usur sublr urchlvos slmlemente volvlendo u comentur lus dos ultlmus dlrectlvus
ero muntenemos lu oclon de que los usuurlos corrlentes uedun sublr urchlvos.
useradd -m prueba
passwd prueba
Un gruve roblemu de segurldud en l1P y Llnux (no solo con vsl1Pd) es que un usuurlo tlene ucceso u todu lu estructuru de urchlvos del servldor.
Aunque no tengu ermlsos uru escrlblr uede leer y llstur.
ftp localhost
Connected to localhost.
220 (vsFTPd 2.3.5)
z -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
Name (localhost:root): prueba
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
-rw-r--r-- 1 1002 1003 8445 Apr 16 2012 examples.desktop
226 Directory send OK.
ftp> cd /
250 Directory successfully changed.
ftp> ls
200 PORT command successful. Consider using PASV.
3R3 -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
150 Here comes the directory listing.
drwxr-xr-x 2 0 0 4096 Sep 27 07:58 bin
drwxr-xr-x 3 0 0 4096 Sep 27 08:02 boot
drwxr-xr-x 2 0 0 4096 Sep 26 08:28 cdrom
drwxr-xr-x 15 0 0 4080 Feb 09 06:28 dev
drwxr-xr-x 128 0 0 12288 Feb 09 10:42 etc
drwxr-xr-x 4 0 0 4096 Feb 09 10:41 home
lrwxrwxrwx 1 0 0 37 Sep 27 08:01 initrd.img -> /boot/initrd.img-3.2.0-31-
generic-pae
lrwxrwxrwx 1 0 0 36 Sep 26 10:18 initrd.img.old -> boot/initrd.img-3.2.0-29-
generic-pae
drwxr-xr-x 21 0 0 4096 Sep 26 10:19 lib
drwx------ 2 0 0 16384 Sep 26 08:24 lost+found
drwxr-xr-x 2 0 0 4096 Sep 27 08:27 media
drwxr-xr-x 2 0 0 4096 Apr 19 2012 mnt
drwxr-xr-x 3 0 0 4096 Sep 27 07:14 opt
z -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
dr-xr-xr-x 153 0 0 0 Feb 09 06:27 proc
drwx------ 20 0 0 4096 Feb 09 10:07 root
drwxr-xr-x 22 0 0 780 Feb 09 09:29 run
drwxr-xr-x 2 0 0 4096 Sep 27 08:20 sbin
drwxr-xr-x 2 0 0 4096 Mar 05 2012 selinux
drwxr-xr-x 3 0 0 4096 Feb 09 07:04 srv
drwxr-xr-x 13 0 0 0 Feb 09 06:27 sys
drwxrwxrwt 9 0 0 4096 Feb 09 10:17 tmp
drwxr-xr-x 10 0 0 4096 Feb 09 10:07 usr
drwxr-xr-x 14 0 0 4096 Feb 09 09:33 var
lrwxrwxrwx 1 0 0 33 Sep 27 08:01 vmlinuz -> boot/vmlinuz-3.2.0-31-generic-pae
lrwxrwxrwx 1 0 0 33 Sep 26 10:18 vmlinuz.old -> boot/vmlinuz-3.2.0-29-generic-
pae
226 Directory send OK.
ftp> quit
221 Goodbye.
3R6 -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
Lu formu fcll de soluclonurlo es
chroot_local_user=YES
Puru lu grun muyorlu de los cusos, u no ser que necesltemos un control exceslvo sobre lo que hucen los usuurlos estu oclon serlu ms que suflclente.
>,%=#;7):!#<% :*:%L:+: +$" !B),,&
Reulmente lu oclon unterlor tlene un equeno ugujero de segurldud como se lndlcu en lus lAQ de svl1Pd
Q) Help! hat are the security implications referred to in the "chroot_local_user" option?
A) Firstly note that other ftp daemons have the same implications. It is a generic problem. The
problem isn't too severe, but it is this: Some people have FTP user accounts which are not trusted to have
full shell access. If these accounts can also upload files, there is a small risk. A bad user now has
control of the filesystem root, which is their home directory. The ftp daemon might cause some config file
to be read - e.g. /etc/some_file. ith chroot(), this file is now under the control of the user. vsftpd is
careful in this area. But, the system's libc might want to open locale config files or other settings...
Puru evltur esto huy que cumblur lus oclones de conflguruclon.
# You may specify an explicit list of local users to chroot() to their home
# directory. If chroot_local_user is YES, then this list becomes a list of
# users to NOT chroot().
# (arning! chroot'ing can be very dangerous. If using chroot, make sure that
# the user does not have write access to the top level directory within the
z -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
# chroot)
chroot_local_user=NO
chroot_list_enable=YES
# (default follows)
chroot_list_file=/etc/vsftpd.chroot_list
Ln el que he dejudo el urchlvo de usuurlos or defecto. Lo slgulente serlu cumblur los ermlsos ul dlrectorlo del usuurlo ruebu uru que no tengu
ermlsos de escrlturu en su curetu ersonul (y usl nos deje conecturnos)
chmod 555 /home/prueba
Ll roblemu es que cuulquler otro usuurlo que se conecte toduvlu uede ucceder u todo
# useradd -m pru
# passwd pru
# ftp localhost
Connected to localhost.
220 (vsFTPd 2.3.5)
Name (localhost:root): pru
331 Please specify the password.
3RK -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
-rw-r--r-- 1 1003 1004 8445 Apr 16 2012 examples.desktop
226 Directory send OK.
ftp> cd ..
250 Directory successfully changed.
ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
drwxr-xr-x 2 1003 1004 4096 Feb 09 11:02 pru
z, -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
dr-xr-xr-x 2 1002 1003 4096 Feb 09 10:56 prueba
drwxr-xr-x 21 1000 1000 4096 Feb 09 10:15 sergio
226 Directory send OK.
ftp> cd ..
250 Directory successfully changed.
ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
drwxr-xr-x 2 0 0 4096 Sep 27 07:58 bin
drwxr-xr-x 3 0 0 4096 Sep 27 08:02 boot
drwxr-xr-x 2 0 0 4096 Sep 26 08:28 cdrom
drwxr-xr-x 15 0 0 4080 Feb 09 06:28 dev
drwxr-xr-x 128 0 0 12288 Feb 09 11:02 etc
drwxr-xr-x 5 0 0 4096 Feb 09 11:02 home
lrwxrwxrwx 1 0 0 37 Sep 27 08:01 initrd.img -> /boot/initrd.img-3.2.0-31-
generic-pae
3RF -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
lrwxrwxrwx 1 0 0 36 Sep 26 10:18 initrd.img.old -> boot/initrd.img-3.2.0-29-
generic-pae
drwxr-xr-x 21 0 0 4096 Sep 26 10:19 lib
drwx------ 2 0 0 16384 Sep 26 08:24 lost+found
drwxr-xr-x 2 0 0 4096 Sep 27 08:27 media
drwxr-xr-x 2 0 0 4096 Apr 19 2012 mnt
drwxr-xr-x 3 0 0 4096 Sep 27 07:14 opt
dr-xr-xr-x 152 0 0 0 Feb 09 06:27 proc
drwx------ 20 0 0 4096 Feb 09 10:07 root
drwxr-xr-x 22 0 0 780 Feb 09 09:29 run
drwxr-xr-x 2 0 0 4096 Sep 27 08:20 sbin
drwxr-xr-x 2 0 0 4096 Mar 05 2012 selinux
drwxr-xr-x 3 0 0 4096 Feb 09 07:04 srv
drwxr-xr-x 13 0 0 0 Feb 09 06:27 sys
drwxrwxrwt 9 0 0 4096 Feb 09 10:17 tmp
drwxr-xr-x 10 0 0 4096 Feb 09 10:07 usr
z -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
drwxr-xr-x 14 0 0 4096 Feb 09 09:33 var
lrwxrwxrwx 1 0 0 33 Sep 27 08:01 vmlinuz -> boot/vmlinuz-3.2.0-31-generic-pae
lrwxrwxrwx 1 0 0 33 Sep 26 10:18 vmlinuz.old -> boot/vmlinuz-3.2.0-29-generic-
pae
226 Directory send OK.
ftp> quit
221 Goodbye.
Puru soluclonurlo slemre odemos lnclulr u los usuurlos en el urchlvo de llstu.
gedit /etc/vsftpd.chroot_list
y escrlblr el nombre de usuurlo uno debujo de otro
prueba
sergio
pru
Ln ml cuso Serglo no uede conecturse ul servldor l1P orque slgue tenlendo ermlsos de escrlturu en su dlrectorlo. Comblnundo estos elementos se
uede conceder ucceso u los usurlos que querumos.
Puru lu grun muyorlu de los cusos, u no ser que necesltemos un control exceslvo sobre lo que hucen los usuurlos, lu oclon de
3KM -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
\(7:)#,( U#)&7:"$(
1odo este uurtudo lo huremos con unu colu de lu mqulnu vlrtuul uru no lnflulr en el resto del temu.
1umblen se ueden utlllzur usuurlos vlrtuules. Puru ello huy que estur usundo PAM (Plugguble Authentlcutlon Modules) de Llnux. Ln el urchlvo de
conflguruclon
# This string is the name of the PAM service vsftpd will use.
pam_service_name=vsftpd
vumos u reullzur un ejemlo muy utll uru ulojur sltlos de dlferentes ersonus que uedun uctuullzur sus rolos urchlvos medlunte l1P.
lnstulumos el modulo
sudo apt-get install vsftpd libpam-pwdfile
vumos u creur un nuevo urchlvo de conflguruclon usl que renombrumos el orlglnul y creumos uno nuevo
sudo mv /etc/vsftpd.conf /etc/vsftpd.conf.bak
sudo gedit /etc/vsftpd.conf
con lus slgulentes dlrectlvus
listen=YES
anonymous_enable=NO
local_enable=YES
z6 -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
write_enable=YES
local_umask=022
nopriv_user=vsftpd
virtual_use_local_privs=YES
guest_enable=YES
user_sub_token=$USER
local_root=/var/www/$USER
chroot_local_user=YES
hide_ids=YES
guest_username=vsftpd
lnvestlgu y comentu en cluse que hucen lus dlrectlvus que desconoces.
Ln el slgulente uso huy que usur N:(/''D- or lo que necesltumos tener lnstuludo Auche lo que en el ejemlo que vemos es ms que necesurlo.
Creumos un dlrectorlo uru colocur los urchlvos de conflguruclon
sudo mkdir /etc/vsftpd
3K3 -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
y creumos
sudo htpasswd -cd /etc/vsftpd/ftpd.passwd sergio1
donde -c lndlcu que se cree el urchlvo y -d que se utlllce ML. Puru los slgulentes usuurlos omltlremos lu oclon -c
sudo -d htpasswd /etc/vsftpd/ftpd.passwd maria
Columos el urchlvo de conflguruclon de PAM
sudo mv /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak
y creumos otro
sudo gedit /etc/pam.d/vsftpd
con el contenldo
auth required pam_pwdfile.so pwdfile /etc/vsftpd/ftpd.passwd
account required pam_permit.so
Y creumos un usuurlo locul sln ucceso en locul! Cuundo el usuurlo se conecte u truves de un cllente l1P ul servldor, este usuurlo que creumos es el que
determlnur los ermlsos y roledudes de urchlvos. A el se usoclurn los usuurlos vlrtuules que se conecten u truves de l1P
sudo useradd --home /home/vsftpd --gid nogroup -m --shell /bin/false vsftpd
Yu solo quedu conflgurur los dlrectorlos
mkdir /var/www/sergio1
z6 -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
chmod -w /var/www/sergio1
mkdir /var/www/sergio1/www
chmod -R 755 /var/www/sergio1/www
chown -R vsftpd:nogroup /var/www/sergio1
Ahoru odemos coecturnos y sublr urchlvos u f>/8fDDDf'&8+*0EfDDDf ero no ul rulz del usuurlo.
M%2;+&3& 4 ,"35(&
Eemos vlsto en los untos unterlores como se conflgurun los 1$)9#(,( generules de usuurlos unonlmos y corrlentes. Los ermlsos eseclflcos en el
cuso que estumos trutundo se concretun con los ermlsos del usuurlo o gruo ul que ertenece en Llnux uru lus curetus corresondlentes. Ls
lmortunte recordur que sl ul lr u conecturnos con un usuurlo ul servldor vsl1Pd nos uurece el error cc, es orque no se le ueden dur ermlsos de
escrlturu ul usuurlo en su curetu rulz.
Lstublecer llmltes u los usuurlos es de vltul lmortunclu en un slstemu l1P uru evltur que unos ocos consumun demusludos recursos. Aunque no es
urte de este modulo, qulero destucur que es oslble llmltur el uncho de bundu y numero de conexlones slmultneus que uede usur el mlsmo usuurlo.
Ll temu que uqul vumos u dlscutlr es el ms lmortunte orque un solo usuurlo uede ocuur demusludo esuclo de dlsco y no dejur nudu uru otros.
Puru evltur esto se estublece unu !7,&: +$ $(1:!#, $% +#(!,.
vsl1Pd ermlte estublecer cuotus uru cudu usuurlo medlunte un uquete udlclonul. Lste uquete de hecho estublece cuotus uru los usuurlos en
Llnux, no solo en vsl1Pd.
sudo apt-get install quota
Lo slgulente que huy que hucer es hubllltur el uso de cuotus en nuestro slstemu de urchlvos. Puru ello se edltu un flchero
sudo gedit /etc/fstab
3K6 -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
y locullzumos lu llneu del unto de montuje del slstemu de urchlvos donde estubleceremos lu cuotu
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
proc /proc proc nodev,noexec,nosuid 0 0
# / was on /dev/sda1 during installation
UUID=5636501c-a7be-44e1-a7d9-0c78fce32598 / ext4 errors=remount-ro 0 1
# swap was on /dev/sda5 during installation
UUID=70f12e1a-101a-4ef7-9501-3cebfeef9408 none swap sw 0 0
Ln este cuso vlene con el ldentlflcudor del dlsco ero uede uurecer como jdevjhduj ero lo que yo he buscudo es que el unto de montuje fueru j (lu
rulz). Letrs del tlo de extenslon unudlmos 7()E7,&: y ;)1E7,&: uru cuotus de usuurlos y de gruos resectlvumente. Puede unudlrse solo unu de lus
dos sl lu otru no nos vu u hucer fultu.
z6 -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
# / was on /dev/sda1 during installation
UUID=5636501c-a7be-44e1-a7d9-0c78fce32598 / ext4 usrquota,grpquota,errors=remount-ro
0 1
Puru que se curguen los cumblos que ufectun ul slstemu de urchlvos es necesurlo relnlclur el equlo o ejecutur
mount -o remount /
Lo slgulente yu serlu uslgnur cuotus de dlsco u los usuurlos. Puru ello huy que entender unos urmetros que se estublecen uru cudu cuotu:
! 8locks: lndlcu el numero de bloques que odr ocuur el usuurlo en dlsco. Se mlde en l8
! Soft: Ls el llmlte blundo. Cuundo el usuurlo lo sueru se le uvlsu, ero dlsone de unu semunu (or defecto, se uede modlflcur) uru ocuur un
esuclo menor ul que lndlcu este urmetro. Sl usudu unu semunu no lo hu llberudo, se estublecer como un llmlte efectlvo y no odr ocuur
nudu ms.
! Eurd: Ll llmlte duro lndlcu lu cuntldud que no uede suerur de nlngunu muneru.
! lnodes: Ll numero de nodos y or lo tunto flcheros que uede tener el usuurlo.
Prlmero debemos suber que slstemu de flcheros estumos usundo:
# df -T
S.ficheros Tipo 1K-bloques Usado Disponible Uso% Montado en
/dev/sda1 ext4 7223800 3150336 3706516 46% /
udev devtmpfs 505356 4 505352 1% /dev
tmpfs tmpfs 205056 792 204264 1% /run
none tmpfs 5120 0 5120 0% /run/lock
3KK -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
none tmpfs 512640 8 512632 1% /run/shm
Ahoru yu odemos estublecer unu cuotu.
setquota -u prueba 10240 20480 0 0 /dev/sda1
Eemos estublecldo unu cuotu blundu de czcl8 (cM8) y unu duru de (zcM8) y sln llmltes duros nl blundos de lnodos. Sl estublecemos c como vulor
de ulguno de los llmltes no ese llmlte no se ullcur.
Llscute en cluse lus lmllcuclones que uede tener no estublecer llmltes duros o blundos.
Lu cuotu de un gruo se estublecerlu con lu oclon -g en lugur de -u. Lste llmlte es uru el gruo en generul, no uru cudu usuurlo del gruo.
1umblen ueden edlturse lus quotus:
edquota -u NombreUsuario
edquota -g NombreGrupo
Puru ver un llstudo de todos los usuurlos y sus cuotus usumos
repquota -a
y uru consultur lu de un usuurlo en urtlculur
quota -u prueba
z6, -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
Lstublece unu cuotu blundu de M8 uru un usuurlo y unu duru de zM8, ruebu u suerur lu blundu ero quedndote or debujo de lu
duru y luego ruebu u suerur lu dudu. Auntu lo que sucede.
K313& 1% ,3'%[+-' 1%* ,*+%'5%
l1P es un rotocolo que funclonu slemre sobre 1CP yu que no huy oclon o verslon con ULP. 1llcumente l1P utlllzu dos uertos, uno de control
(uru ordenes o comundos, el z) y un uerto uru dutos (zc). Sl te hus fljudo durunte los untos unterlores, el rolo servldor de l1P nos edlu que
usrumos ul modo uslvo, ero. que es? Prlmero veremos el uctlvo.
Z,+, :!&#*,
Ln el modo uctlvo lus cosus funclonun como se exonen u contlnuuclon:
. Ll cllente huce unu etlclon ul servldor en el uerto z desde lo que se conoce como un uerto ulto (>cz que llumuremos N), con comundos
como or ejemlo "ls' o "get'.
z. Sl lu etlclon requlere lu trunsferenclu de dutos del servldor ul cllente, $" ($)*#+,) ubre unu conexlon u otro uerto ulto (generulmente N)
. Ll servldor trunsflere los dutos.
Ln los usos unterlores se hun omltldo lus conflrmuclones, etc lnvolucrudus.
Lste modo slgue lu loglcu de lu muyorlu de lus conexlones 1CP.
Ll roblemu con el que se encuentru este modo es que sl el cllente se encuentru trus un flrewull o cuulquler dlsosltlvo que hugu NA1 lo ms robuble
es que el servldor no uedu conecturse con el huclendo que fulle el uso z.
Z,+, 1:(#*,
Lu soluclon u esto es el modo uslvo, en el que lus cosus suceden de muneru un oco dlferente:
. Ll cllente huce unu etlclon ul servldor en el uerto z desde lo que se conoce como un uerto ulto (>cz que llumuremos N), con comundos
como or ejemlo "ls' o "get'. Lste uso es ldentlco.
3KF -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
z. Ll cllente hu uvlsudo ul servldor de que el se encurgur de comenzur lu conexlon, or lo que el servldor contestu con otro uerto ulto ul que el
cllente debe conecturse.
. Sl lu etlclon requlere lu trunsferenclu de dutos del servldor ul cllente, $" !"#$%&$ ubre unu conexlon u ese uerto.
. Ll servldor trunsflere los dutos.
Como uedes observur lu rlnclul dlferenclu es qulen ubre lu conexlon y se huce uru evltur los roblemus comentudos en el uurtudo unterlor.
Por defecto el cllente se conectu en modo uctlvo, ero se uede usur ul uslvo medlunte el comundo udecuudo.
#ftp localhost
Connected to localhost.
220 (vsFTPd 2.3.5)
Name (localhost:root): sergio1
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
200 PORT command successful. Consider using PASV.
z6 -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
150 Here comes the directory listing.
drwxr-xr-x 2 ftp ftp 4096 Feb 09 11:19 www
226 Directory send OK.
ftp> passive
Passive mode on.
ftp> ls
227 Entering Passive Mode (127,0,0,1,74,3).
150 Here comes the directory listing.
drwxr-xr-x 2 ftp ftp 4096 Feb 09 11:19 www
226 Directory send OK.
ftp> quit
221 Goodbye.
Puru uctlvur o desuctlvur el modo uslvo se utlllzu en el urchlvo de conflguruclon (est uctlvudo)
pasv_enable=YES
o lo mlsmo con e]
35M -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
Protocolo seguro de trunsferenclu de urchlvos
Ll uso de SSLj1SL en l1P tlene sentldo eseclulmente u lu horu de comunlcur lus credenclules de uutentlcuclon usl que sl solo vumos u usur l1P unonlmo
no deberlumos reocuurnos.
Lo rlmero que debemos hucer es generur un certlflcudo. vsl1Pd utlllzu el formuto em usl que lo generumos con lu slgulente orden
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out
/etc/ssl/private/vsftpd.pem
Eubr que edltur el urchlvo de conflguruclon
mv /etc/vsftpd.conf /etc/vsftpd.conf.bak
sudo gedit /etc/vsftpd.conf
y escrlblr lo slgulente
listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
ssl_enable=YES
z, -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
listen_port=990
#The following line enables implicit mode
implicit_ssl=YES
allow_anon_ssl=NO
#This will force secure data connections, not required, but recommended
force_local_data_ssl=YES
#This will force secure logins, not strictly required, but REALLY recommended
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
#La siguiente lnea es necesaria para que Filezilla acepte la conexin
ssl_ciphers=AES128-SHA
rsa_cert_file=/etc/ssl/private/vsftpd.pem
Los urmetros unterlores deberlun ser bustunte evldentes u estus ulturus. Llscute en cluse que hucen.
353 -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
Posterlormente tendremos que relnlclur el servlclo.
service vsftpd restart
D' ,*+%'5% %' ;313 5%[53 )(2( 0BM6
Ahoru necesltumos un cllente que soorte este tlo de conexlones, uru ello lnstulumos )<:(, el ms extendldo en modo texto uru Llnux.
sudo apt-get update
sudo apt-get install lftp
uhoru yu odemos robur nuestru conexlon.
lftp ftps://localhost
lftp localhost:~> user prueba
Clave:
lftp prueba@localhost:~> ls
ls: Error fatal: Certificate verification: Not trusted
lftp prueba@localhost:~> set ssl:verify-certificate no
lftp prueba@localhost:~> ls
-rw-r--r-- 1 1001 1002 8445 Apr 16 2012 examples.desktop
z, -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
lftp prueba@localhost:~> quit
Ln lu unterlor ruebu se utlllzun unos comundos bslcos, se ueden consultur todos con en comundo N&)( unu vez conectudos u lft.
356 -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
Utlllzuclon de herrumlentus grflcus
Ll cllente grflco ms extendldo en l1P es lllezlllu. Lesues de descurgurlo y descomrlmlrlo ejecutumos el urchlvo blnjfllezlllu.
Ln lu ventunu que nos uurece lo rlmero es conecturnos ul servldor, uru
lo que tenemos que estublecer unos urmetros:
. Lu url del servldor, con el rotocolo <:(' en cuso de que querumos
unu conexlon seguru y el servldor lo ermltu.
z. Ll nombre de usuurlo.
. Lu contrusenu.
. Un uerto en cuso de que el servldor no este conflgurudo uru
reclblr conexlones en los uertos estndur.
. Pulsumos en el boton uru conecturnos.
Ln el cuso de estublecer unu conexlon seguru, sl el certlflcudo no es de
conflunzu, nos uurecer unu ventunu de uvlso en lu que veremos los dutos
del certlflcudo y odremos murcur el certlflcudo uru que nos vuelvu u
reguntur sl conflumos en el.
Unu vez nos hemos conecrtudo veremos que en lu urte lnferlor tenemos
unu esecle de exlorudor de urchlvos en el que en lu urte de lu lzqulerdu
uurece lo que tenemos en locul y en lu de lu derechu lus curetus y
z, -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
urchlvos en el servldor l1P. Ll funclonumlento es muy senclllo slendo lu oeruclon bslcu lu de sublr o bujur urchlvos uru lu que bustu con urrustrur de
un sltlo u otro. 1en en cuentu que los ermlsos en lus curetus en umbos ludos tlenen que ermltlr que reullcemos lu ucclon que retendemos llevur u
cubo.
lnstulu lllezlllu y ruebu u conecturte medlunte l1PS. Pruebu u sublr y bujur urchlvos. Puedes ellmlnurlos o renombrurlos en el servldor?
Que boton se utlllzu uru desconecturse?
35K -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
Utlllzuclon del servlclo de trunsferenclu de urchlvos desde el nuvegudor
Los nuvegudores veb uctuules soortun conexlones l1P sln emburgo no suelen soortur l1PS o l1PLS. Por ello revlerto lu conflguruclon del servldor u
l1P normul.
mv /etc/vsftpd.conf /etc/vsftpd.conf.ftps
mv /etc/vsftpd.conf.bak /etc/vsftpd.conf
sudo service vsftpd restart
Puru conecturnos con unu
conexlon unonlmu no huy ms
que oner ft:jjloculhost en lu
burru de dlrecclones, donde
loculhost ser lu dlrecclon del
sltlo.
Pero uru conecturte con un
usuurlo se escrlbe
ft:jjnombreusrQsltlo.web
Por ejemlo sl me conecto u
ft:jjruebuQloculhost me
lde lu contrusenu uru el
usuurlo y luego me muestru su
curetu, lo rlmero que vemos
es que yu no uurece el
z,, -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
nombre del usuurlo en lu burru de dlrecclon ero sl en el tltulo de lu ventunujestunu de
nuveguclon. Sln emburgo los nuvegudores web no son cllentes l1P y solo ermlten
nuvegur or lus curetus y descurgur urchlvos, ero no sublrlos.
Lste ultlmo roblemu y el de lus conexlones l1PS lo odemos soluclonur medlunte
comlementos como or ejemlo llrel1P uru llrefox.
35F -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
Utlllzuclon del servlclo de trunsferenclu de urchlvos en el roceso de desllegue de lu
ullcuclon web
Lste unto del temurlo hu quedudo cublerto con lo vlsto en todos los unterlores. Ll desllegue de ullcuclones veb medlunte l1P lmllcu lnstulur un
servldor l1P en lu mlsmu mqulnu en lu que tengumos el servldor veb yjo de Allcuclones y hubllltur lu curetu de lu ullcuclon uru que se uedun
conectur determlnudos usuurlos con oclones uru modlflcur el contenldo. Le estu formu odremos desurrollur todu lu ullcuclon en unu mqulnu de
desurrollo y ruebus y sublr lu verslon flnul y robudu ul servldor sln necesldud de ucceso flslco u el. Lvldentemente uru un desurrolludor web que
trubuje uru muchos cllentes estu oclon es comletumente vltul.
z, -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
Lesurrollo de oeruclones remotus de gestlon de contenldos: vebLAv
vebLAv (muchus veces se conoce como LAv u secus) es unu extenslon de E11P que fucllltu el munejo de documentos en servldores web. Permlte
gestlonur verslones y uutorlu de documentos de unu formu dlstrlbuldu. Como tuntos royectos desurrolludos or gruos de trubujo en lnternet, est en
constunte evoluclon.
Euy que tener en cuentu que vebLAv es un rotocolo or lo que se uede ver como un slstemu de flcheros dlstrlbuldo con cuucldudes como or
ejemlo bloqueur recursos uru su uctuullzuclon evltundo que otros uedun estur modlflcndolos u lu vez. Al ser un rotocolo ermlte que se creen
ullcuclones sobre el uru lu gestlon dlstrlbuldu de documentos en lu web. Ln el cuso que nos lmortu tlene lu grun utllldud de ermltlr que gruos de
trubujo de gente en locullzuclones flslcus dlferentes muntengun y uctuullcen unu web o ullcuclon web mlnlmlzundo los roblemus que ello conllevu.
Ln el rolo sltlo del orgunlsmo uedes consultur unu llstu de roductos que usun vebLAv, sl le echus un vlstuzo te vus u sorrender.
Ln el fondo vebLAv no es ms que unu esecle de conexlon que te ermlte desurrollur en modo remoto uccedlendo u los recursos del servldor uru
modlflcurlos como sl estuvlerun en locul. Puru demostrur esto se uede consultur lu slgulente llstu de enluces uru que se veu como se conflguru lu
conexlon ul servldor en dlferentes ullcuclones:
. Mlcrosoft Cfflce
z. Lreumweuver
. Lxlorudor de vlndows
. CNCML en Llnux
. MAC CS
Ln estu otru glnu lo exllcun uru vurlus sltuuclones dlferentes.
Ln lu llstu de roductos uedes ver que huy muchus ullcuclones de edlclon de documentos (no necesurlumente documentos veb) que usun estu
tecnologlu e lncluso es oslble que lu huyumos usudo sln suberlo.
Auche tlene un modulo uru oder hubllltur vebLAv.
3FM -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
lnstulur y conflgurur un sltlo en Auche uru que utlllce vebLAv es senclllo. Ls un temu erfecto uru "urender u urender'. Aqul
tlenes un equeno tutorlul ero huy muchu lnformuclon en lnternet. Pruebu u hubllltur vebLAv en un sltlo de Auche y u conecturte de
dlferentes munerus. Puedes robur u conecturte de dos formus dlferentes e lntentur edltur el mlsmo urchlvo uru ver sl funclonu el
bloqueo de recursos.
z8 -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
1emu : Servlclos de red lmllcudos en el desllegue de unu
ullcuclon web
3F3 -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
Resolutores de nombres
lnternet y or extenslon lu grun muyorlu de lus redes de ordenudores en lu uctuulldud utlllzun el conjunto de rotocolos 1CPjlP. Lu cuu de red de este
conjunto es lu que deflne lus dlrecclones de los dlferentes dlsosltlvos conectudos, conocldus como dlrecclones lP. Ln lu verslon uctuul () del
rotocolo lP lus dlrecclones se comonen de cuutro gruos o numeros de 8 blts y suelen reresenturse como cuutro untos del c ul z seurudos or
untos. No es el rooslto de este modulo ubundur en este temu, buste declr que lo que nosotros conocemos como "dlrecclones de lnternet' o URLs
no son ms que usocluclones de un nombre ms fcll de recordur o que se usocle u ulgo con unu de estus dlrecclones lP.
Ll rotocolo de este conjunto que se encurgu de estu tureu es LNS (!0@/*1 e/@& 7H':&@). Ll roceso de buscur lu dlrecclon lP usocludu u un nombre
de domlnlo determlnudo (or ejemlo www.nbu.com) se conoce como resolver unu dlrecclon.
Como todo lo que venlmos vlendo en este curso slgue un modelo CllentejServldor en el que los cllentes ()$(,"7&,)$( o 8&'0)>&8') formun urte de los
slstemus oerutlvos de lus mqulnus y se encurgun de contuctur con los servldores uru que les lndlquen lu dlrecclon lP usocludu u unu URL cuundo seu
necesurlo. Euy que tener en cuentu que un servldor LNS uede ser cllente de otro servldor LNS.
Los servldores se conocen como Servldores de Nombres (e/@& 7&8>&8') y funclonun segun el modelo jerrqulco y dlstrlbuldo:
! 'errqulco orque se orgunlzu como un rbol lnvertldo. Ln lu rulz (domlnlo uru que reclbe su nombre del royecto germen de lnternet) esturlu
lu uutorldud rlnclul que delegu lus termlnuclones rlnclules u orgunlsmos, entldudes o ulses. Lstus termlnuclones lncluyen elementos
como .com, .org, .net, .gov, .es, .us, .uk, .fr etc. Los encurgudos de gestlonur cudu unu de estus termlnuclones (domlnlos de nlvel suerlor o to
level) ueden u su vez subdlvldlr y delegur el domlnlo. Por ejemlo en Crun 8retunu hun creudo uno comerclul y su termlnuclon es .co.uk y usl
.co serlu unu zonu delegudu dentro de .uk
Un ejemlo comleto de todo esto serlu or ejemlo www.ll.uum.es en el que (de derechu u lzqulerdu) se lndlcu que es un domlnlo de Lsunu,
de lu Unlversldud Autonomu de Mudrld, de lu Lscuelu de lngenlerlu lnformtlcu y dentro de eso que huce referenclu ul servldor web. Ln este
ultlmo uurtudo uede huber otros como or ejemlo ft. Lus dos dlrecclones de ejemlo vlstus urrlbu son N0':1/@&' yu que tlenen unu o ms
dlrecclones lP usocludus. Lus urtes de lu derechu lndlcun domlnlos o subdomlnlos, ero no se usoclun con dlrecclones concretus.
! Llstrlbuldo orque no es necesurlo que un resolutor LNS seu cuuz de conocer todus lus oslbles usocluclones slno que uede conocer ulgunos
y usurle lus que no conoce u otros servldores usl como reclblr u su vez etlclones de otros ures uru resolver lus que sl conoce. Lsto lo
veremos en ms detulle en el roceso de resoluclon de nombres.
z8 -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
Como notu uru el futuro, convlene declr que nos encontrumos en un roceso de trunslclon tunto en lP de lu v u lu v6 como en LNS en el que se
retende flexlblllzur el conjunto de termlnuclones y se estn estudlundo oslbles conslderuclones uru lnclulr nuevos domlnlos de nlvel suerlor.
M23,%&3 1% 2%&3*",+-' 1% "' '3;/2% 1% 13;+'+3
vumos u ver el ejemlo con www.ll.uum.es
Un resolutor de nombres reullzu su funclon medlunte consultus u dlferentes servldores. Slemre emlezu or el nlvel suerlor (el que est ms u lu
derechu en lu URL).
. Ll )$(,"7&,) +$" !"#$%&$ le envlu unu etlclon u un servldor de nombres de lu zonu rulz (800: V01&) reguntundo or ese subdomlnlo de nlvel
suerlor (es). Lu dlrecclon lP de ul menos ulgunos servldores de lu zonu rulz est dlsonlble medlunte unos urchlvos que uctuullzu
erlodlcumente unu uutorldud. Reulmente el ordenudor de nuestru cusu necesltu lus dlrecclones lP de servldores LNS de un lSP (u otros
orgunlsmos) como veremos ms ubujo. Ll servldor rulz le contestu con lu dlrecclon lP de qulen gestlonu el domlnlo de nlvel suerlor .es (o con lu
lnformuclon ms comletu que tengu que generulmente es u qulen reguntur)
z. Ll cllente envlu otru consultu u uno de los servldores de nlvel suerlor que gestlonun el subdomlnlo .es reguntundo or lu dlrecclon lP del
servldor que gestlonu .uum.es
. Ll cllente redlrlge lu consultu u dlcho servldor reguntudo or .ll.uum.es y contestu con su lP
. Por ultlmo, se reullzu unu consultu de www u ll.uum.es que yu es un servlclo determlnudo.
. Con lu lP de estu mqulnu lu ullcuclon que sollclto lu consultu (or ejemlo un nuvegudor web) uede conecturse u su destlno.
Lste roceso se conoce como LNS estndur y sutururlu lnternet y los servldores de nombres or lo que en lu rctlcu se utlllzu comblnudo con un
roceso de ulmucenudo en !:!BJ de dlrecclones de lnternet or todos los elementos lmllcudos (desde el resolutor de nombres de nuestro ordenudor)
y lo que se denomlnu ?OX )$!7)(#*,.
Ll ulmucenumlento en cuche se roduce cudu vez que se reullzu unu consultu. Los dlsosltlvos or los que usu lu lnformuclon ulmucenun todu lu que
vun reclblendo (no solo lu reluclonudu dlrectumente con lu URL o lP consultudu).
Ll LNS recurslvo bslcumente ermlte que uno de estos elementos resuelvu lus lPs de domlnlos de otru gente. Sl or ejemlo ests en el ordenudor de
tu cusu y quleres buscur ulgo en google. 1ecleus www.google.es y tu nuvegudor rlmero lntentu ver sl el mlsmo sube lu lP de Coogle Lsunu. Sl no lu
sube se lu reguntu ul slstemu oerutlvo que sl tumoco lo sube lu reguntur u los servldores de tu lSP (lnternet Servlces Provlder, or ejemlo
3F6 -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
1elefonlcu o 'uzztel) que sl no lo suben yu recorrern el cumlno contudo unterlormente. Lu grun dlferenclu es que en este modelo sl el servldor u qulen
reguntus no sube lu resuestu se encurgu el de buscurlu (y ulmucenurlu en cuche or sl le hucen lu mlsmu consultu) huclendo de cllente que reguntu u
otro servldor. Lste roceso se relte hustu que se obtlene unu resuestu concretu, generulmente lu lP buscudu ero tumblen uede ser que lu URL
consultudu no exlste.
Lste roceso no funclonurlu blen sln un tlemo de vldu (11L) de lus dlrecclones ulmucenudus en cuche trus el que se murcurn como no vlldus y se
volvern u consultur con lu rlmeru etlclon que llegue.
Puru todo este roceso se creun zonus dlrectus que contlenen reglstros SCA y NS y ueden contener cuulquler otro menos P1R. vemos los reglstros un
oco ms ubujo.
Y$*$)($ [,,N71
1umblen exlste el roceso lnverso (8&>&8'& LNS) or el que se ueden obtener los nombres de domlnlo usocludos u unu dlrecclon lP determlnudu. Lstus
consultus slguen el mlsmo roceso, ero usun un domlnlo eseclflco que se llumu *1g/--8=/8(/ (*(K=/8(/ uru lPv6). Lus dlrecclones lP se reresentun
lnvertldus como un nombre de domlnlo. Por ejemlo lu dlrecclon z..6,.8 se reresenturlu como 8.6,..z.lnuddr.uru
Prlmero se consulturlu u qulen est usocludu z y usl suceslvumente.
Lu zonu que se debe creur en este cuso se llumu zonu lnversu y suele contener reglstros SCA, NS, P1R y CNAML.
Ll comundo nslooku slrve uru hucer consultus LNS. lunclonu en vlndows, MAC o Llnux. Usundo lu rolu uyudu del comundo
descubre como se reullzu: unu consultu dlrectu, unu lnversu, unu consultu u un servldor LNS concreto (no ul or defecto)
z8 -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
Purmetros de conflguruclon y reglstros del servldor de nombres ufectudos en el desllegue
Como nos hu hecho fultu en vurlus ocuslones u lo lurgo del curso, lu lnstuluclon y conflguruclon de un servldor web se lncluyo en los uendlces. Sln
emburgo fultubu lu urte teorlcu que nos ermltlr entender que hucemos y or que usl como mejorur lu conflguruclon sl fueru necesurlo.
Ln el uurtudo unterlor yu hemos vlsto uru que se utlllzun lus zonus dlrectu e lnversu y or que son necesurlus. Adems, odemos comrender uru
que se utlllzun los <08D/8-&8' como medlo uru resolver lus consultus que no conocemos, slendo estos <08D/8-&8' generulmente servldores de
nombres (LNS) de un lSP u otrus orgunlzuclones. Por ejemlo Coogle tlene servldores de nombres con lus dlrecclones 8.8.8.8 y 8.8..
Sln emburgo huy unu urte que no hu quedudo nudu cluru y son los reglstros de los servldores LNS. Un [&'0,8.& [&.08- (RR) es el elemento ms bslco
de LNS. Los reglstros deflnen lus curucterlstlcus de unu zonu o domlnlo y se usun en lus consultus de nombres. Cudu reglstro tlene un tlemo de vldu
(11L P*@& P0 \*>&) que lndlcu cundo dejur de ser vlldo. Ln deflnltlvu los reglstros se utlllzun uru usoclur unu URL u unu lP.
Los reglstros tlenen un formuto estndur: ]D1&8 PP\ 9)/'' PH(& [!"P" donde
! QA%$): es el nombre de lu mqulnu o del domlnlo LNS ul que ertenece este recurso.
! II[ (P*@& P0 \*>&): Ll tlemo en segundos que debe muntenerse este reglstro en cuche. Sl no uurece se usu el 11L mlnlmo del reglstro SCA.
! >":((: lndlcu que fumlllu de rotocolos se usu. Ln lnternet es cusl excluslvumente lN.
! IK1$: Ll tlo del RR.
! Y?CIC: Los dutos del recurso que lndlcu el reglstro. Por ejemlo unu dlrecclon lP.
Euy muchos tlos dlferentes de reglstros ero los ms lmortuntes son:
! XQC: Cuulquler zonu que se cree en un servldor LNS debe contener un reglstro SCA (7:/8: 0< ",:N08*:H) ul lnlclo de lu deflnlclon. Lste tlo de
reglstro contlene los urmetros:
o Cwner , 11L , Cluss y 1ye como vlmos urrlbu.
o Authorltutlve server (Servldor Autorlzudo): Ll servldor LNS rlmurlo de lu zonu.
o Resonslble erson (ersonu resonsuble): correo electronlco de lu ersonu resonsuble de lu zonu. Usu un unto en lugur de urrobu.
o Serlul number (numero de serle): muestru cuntus veces hu sldo uctuullzudu lu zonu.
3FK -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
o Refresh (refresco): lndlcu como de frecuentemente tlenen los servldores LNS secundurlos de lu zonu que consultur sl estu hu cumbludo.
o Retry (relntento): cunto eserur un servldor secundurlo lu resuestu untes de volver u consultur oslbles cumblos en lu zonu ul
servldor rlmurlo.
o Lxlre (exlruclon): cunto tlemo desde lu ultlmu uctuullzuclon slgue slendo vlldu lu lnformuclon de un servldor secundurlo.
o Mlnlmum 11L: Ll tlemo de vldu que se ullcu u todos los reglstros de lu zonu sl no tlenen uno eseclflco. Yu hemos vlsto untes que cudu
reglstro uede llevur uno rolo ero que es otutlvo.
Ln los uendlces se encuentrun ejemlos de conflguruclon y uqul odemos ver otro
prueba.ejemplo.com. IN SOA (
ns1.prueba.ejemplo.com. ; servidor autorizado para la zona
sergio.cuesta.prueba.ejemplo.com. ; e-mail del administrador de zona
5099 ; serial number
3600 ; refresh (1 hora)
600 ; retry (10 mins)
z8, -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
86400 ; expire (1 da)
60 ) ; minimum TTL (1 min)
! OX: Los reglstros NS lndlcun los servldores de nombres uutorlzudos uru unu zonu. Pueden lndlcur servldores tunto rlmurlos como secundurlos
y unu zonu tlene que tener ul menos un reglstro NS con el servldor rlmurlo. Ln cuso de huber zonus delegudus lndlcun los servldores de dlchus
zonus tumblen.
Asl lu slgulente llneu tendrlu que uurecer en los servldores de nombres de ejemlo.com y ruebu.ejemlo.com
prueba.ejemplo.com. IN NS ns1.prueba.ejemplo.com.
! C: Los reglstros de dlrecclon ("--8&'') usoclun un nombre de domlnlo comleto (G,))H A,/)*<*&- !0@/*1 e/@& 0 GA!e) con unu dlrecclon lP.
ns1 IN A 123.45.67.89
! -IY: Los reglstros untero (Z0*1P&[) hucen lo contrurlo u los reglstros A. Asoclun unu dlrecclon lP con el lQLN.
89.67.45.123.in-addr.arpa. IN PTR ns1.prueba.ejemplo.com.
o
89 IN PTR ns1.prueba.ejemplo.com.
! >OCZ^: Los reglstros de nombres cunonlcos creun un ullus. Suelen utlllzurse uru ocultur lu estructuru de nuestro sltlo. Por ejemlo sl nosotros
tenemos un servldor l1P que se llumu ft y luego lo cumbluremos u otro no queremos que los usuurlos se enteren. 1umblen slrve uru que
vurlos lQLN se usoclen u lu mlsmu mqulnu: vurlos host vlrtuules o vurlos servlclos como ft y www.
3FF -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
ftp.prueba.ejemplo.com. IN CNAME ftp1.prueba.ejemplo.com.
! Zl: Lste reglstro es eseclflco uru servldores de lntercumblo de correo (W/*) U`.N/1+&). Un servldor de lntercumblo de correo se encurgu de
rocesur y redlrlglr los correos de un domlnlo. Procesur el correo uede slgnlflcur entregurlo u lu dlrecclon udecuudu dentro de nuestro domlnlo
o usurlo u un tlo dlferente de trusorte de correo. Redlrlglr el correo slgnlflcu envlrselo ul servldor de correo de destlno, dlrectumente o u
truves de otros que se encuentren en el cumlno medlunte 7*@()& W/*) P8/1'<&8 Z80:0.0) (SM1P). Puedes tener vurlos servldores de correo en el
mlsmo domlnlo or lo que es oslble tener muchos reglstros M.
*.prueba.ejemplo.com. IN MX 0 mailserver1.prueba.ejemplo.com.
*.prueba.ejemplo.com. IN MX 10 mailserver2.prueba.ejemplo.com.
*.prueba.ejemplo.com. IN MX 10 mailserver3.prueba.ejemplo.com.
Ll numero que uurece desues de M es lu rlorldud. Ln este cuso tenemos un servldor rlnclul con lu mxlmu rlorldud y dos delegudos con
lguul rlorldud entre ellos. Sl un correo llegu y el rlmero no est uctlvo se le usurlu ul segundo o ul tercero lndlstlntumente. Sl tenemos un grun
trflco de correo se ueden estublecer todos con mxlmu rlorldud uru evltur suturuclones.
Ll comundo dlg nos muestru lnformuclon de este tlo de recursos en unu formu muy slmllur u lu que usumos uru conflgurur el servldor
LNS. lnvestlgu el comundo y comentu sus oclones ms utlles. Lesues contestu u lus reguntus de ms ubujo.
Que usu sl escrlbes dlg sln ms? Como uedes lndlcurle u dlg el servldor LNS que debe usur?
z8 -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
Servlclo de dlrectorlos: curucterlstlcus y funclonulldud
Ll termlno "Servlclos de Llrectorlo' uede ser umblguo y llevur u confuslon. Unu estructuru de curetus o volumenes o dlferentes buses de dutos
odrlun conslderurse dentro de lu cutegorlu, sln emburgo un "Servlclo de Llrectorlo' en lnformtlcu se conslderu que es ulgo slmllur u unu gulu
telefonlcu o unu llstu de contuctos donde los contuctos no tlenen or que ser ersonus. Ms concretumente se reflere u slstemus busudos en .cc o
en ulgunu vurlunte como LLAP.
Los servlclos de dlrectorlo son slstemus que nos fucllltun el ucceso u recursos de nuestru red de muneru unlversul. Son buses de dutos de objetos que
reresentun recursos tules como usuurlos, gruos, curetus o volumenes, servldores, lmresorus o ullcuclones.
8slcumente slrven uru usoclur el nombre de un recurso u su dlrecclon de red, or lo que en este usecto se urecen mucho u LNS. Un servlclo de
dlrectorlo deflne lu estructuru de los nombres o esuclo de nombres (1/@&'(/.&) uru lu red: se estublece un conjunto de normus que eseclflcun
como se comondrn los nombres y usegurun que no hubr dullcudos nl reetldos. Lstos nombres suelen conocerse como !*':*1+,*'N&- 1/@& (LN)
que en unu truducclon llterul serlu nombre dlstlnguldo. Sl se cumblu lu dlrecclon de un recurso esto solo lmllcu cumblur lu usocluclon en el objeto
corresondlente y todo segulr funclonundo lguul.
Sln emburgo los servlclos de dlrectorlo no solo lncororun esu funclonulldud. Como cudu recurso est reresentudo or un objeto, dlchos objetos
ueden tener utrlbutos. Por ejemlo en el cuso de usuurlos se ueden lnclulr muchos otros dutos como el nombre comleto de lu ersonu, su curgo en
lu orgunlzuclon, un telefono de contucto, etc. Como es nuturul se ueden estublecer ermlsos sobre estos objetos uru usegurur que no todos los
recursos o su lnformuclon esturn dlsonlbles uru todo el mundo.
Ln deflnltlvu un servldo de dlrectorlo nos ermlte unlflcur todos los recursos de lu red sln lmortur de que tlo son o los rotocolos o toologlu
eseclflcu de lu red donde se encuentrun. 8ustu con uutentlcurnos en lu red uru oder ucceder u los recursos en los que tengumos ermlsos. Como
udems se ueden orgunlzur de muneru dlstrlbuldu y rellcudu uede huber vurlos servldores roorclonundo los mlsmos esuclos de nombres y servlr
como sustltutos en cuso de suturuclon o fullo.
Ln rlncllo uede urecer que un slstemu de dlrectorlo no es ms que unu buse de dutos reluclonul ero en un servlclo de dlrectorlo se conslderu que
lu lnformuclon vu u leerse muchlslmus ms veces que escrlblrse yu que lus uctuullzuclones o modlflcuclones sern oco frecuentes. Lsto huce que
determlnudos concetos como lus trunsucclones seun oco lmortuntes y or lo tunto no se suelen lnclulr en el softwure de servlclos de dlrectorlo. Por
3XM -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
lo tunto un servlclo de dlrectorlo es unu buse de dutos ero no en el sentldo ul que estumos ucostumbrudos de 8dL reluclonul y est totulmente
otlmlzudu uru lus oeruclones de lecturu.
Lu eseclflcuclon .cc deflne lus llneus muestrus de los servlclos de dlrectorlo, sln emburgo es tun comleju que nlngun softwure uctuul cumle con
todus sus condlclones. .cc est ensundo uru funclonur con el modelo de llu de rotocolos de red CSl de lSC, y concreto los usectos que uqul
nos lnteresun en un rotocolo LAP (!*8&.:08H "..&'' Z80:0.0)). Sln emburgo, uunque son relutlvumente slmllures yu subemos que en lu uctuulldud el
conjunto de rotocolos redomlnunte en redes es 1CPjlP y usocludo u el se estubleclo un rotocolo LLAP (\*+N:D&*+N: !*8&.:08H "..&'' Z80:0.0)) que
como su nombre lndlcu es ms llgero y senclllo.
Cuundo vlmos certlflcudos hublumos de .c que de hecho es urte de lu fumlllu de eseclflcuclones de .cc
z -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
LLAP
Muchu gente conslderu que .cc es tun furrugoso que nuncu llegur u usurse comletumente or lo que LLAP se creo con lu ldeu de que fueru
funclonul. LLAP est bustunte extendldo y se utlllzu en muchos cusos usl que ser el que veumos.
\*+N:D&*+N: !*8&.:08H "..&'' Z80:0.0) lmlementu un servlclo de nombres ulmucenundo los objetos segun unu estructuru jerrqulcu de rbol. Lu
estructuru que utlllzu es slmllur u lus de LNS o lus curetus y volumenes en slstemus UNljLlnux. Lstu estructuru de rbol se denomlnu !/:/ L1<08@/:*01
P8&& (Ll1).
Los objetos que ulmucenun los dutos en LLAP estn comuestos de un nombre y otros utrlbutos que contengun lnformuclon usocludu ul objeto. Por
ejemlo unu ersonu con su nombre, telefono, emull, etc. Lstos objetos se denomlnun entrudus (U1:8H). Lstus entrudus tlenen un tlo o cluse (9)/'')
usocludo ul lguul que usu con los objetos en Progrumuclon Crlentudu u Cbjetos. Los utrlbutos de unu cluse ueden ser obllgutorlos u otutlvos.
Ls un rotocolo de lu cuu de ullcuclon de 1CPjlP ul lguul que E11P, l1P, SM1P o LNS or ejemlo.
Ln lu rulz de estu estructuru de dlrectorlos se encuentru el LN (!*':*1+,*'N&- 1/@&) buse. Cenerulmente reresentu lu orgunlzuclon cuyos recursos se
vun u gestlonur medlunte LLAP. Por ejemlo el nombre de unu emresu u orgunlsmo. Por ejemlo en unu emresu que se llumuru "Ljemlo S.A.' este
odrlu ser el LN buse o tumblen odrlu usurse en nombre de domlnlo de lu emresu: "ejemlo.com'. 1en en cuentu que uede ser un deurtumento de
unu emresu, unu fucultud de unu unlversldud, etc., no es necesurlo que seu el orgunlsmo ul comleto.
Lebujo del LN buse uurecern otros elementos de ulgunu muneru orgunlzudu. Cenerulmente se utlllzun ugruuclones loglcus. Ln el orlgen se
uslgnubun estus ugruuclones u dlferentes deurtumentos de unu emresu (ventus, murketlng, etc.) or lo que reclbleron el nombre de Unldudes
Crgunlzutlvus (]8+/1*V/:*01/) S1*:', CU). Ln lu uctuulldud, estus CU suelen corresonderse con tlos de recurso: usuurlos, gruos, servldores,
lmresorus, volumenes de red, etc.
Como es un LN? Cudu LN constu de dos urtes, su rolo ldentlflcudor y su ublcuclon en el rbol. Su ldentlflcudor se llumu [&)/:*>& !*':*1+,*'N&- e/@&
(RLN) y es el nombre en el formuto que querumos. Por ejemlo "lmresoru u Color'. Lu segundu urte lndlcu donde se encuentru en un formuto
slmllur ul que se utlllzu en LNS, sl mls lmresorus estn en unu cutegorlu "lmresorus' el nombre comleto ser: lmresoru u color - lmresorus -
ejemlo.com
3X3 -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
Como se uede ver el LN se construye con el RLN del elemento seguldo del LN del udre que u su vez ser su RLN seguldo del LN del udre y usl
suceslvumente.
Lsto slemre es ms comlejo con ersonus que con objetos lnunlmudos. Por ejemlo uru unudlr u Murlu Rumlrez odrlumos durle un RLN "Murlu
Rumlrez' o su nombre de usuurlo "mrumlrez'. Cul es mejor? Leende de lu sltuuclon.
Lu rolu glnu de lu vlkledlu sobre LLAP roorclonu un oco ms de lnformuclon sobre lus oslbles oeruclones u reullzur en LLAP
que nos ueden uyudur u comrender mejor el funclonumlento bslco. Consultulus y comentu en cluse que hucen.
Un vlstuzo ul softwure de servldor que lmlementu LLAP nos llevu u ver que or ejemlo ".:*>& !*8&.:08H de los servldores vlndows los utlllzun.
Como sucede con otros rotocolos que hemos vlsto en LLAP huy vurlus verslones. Lus redomlnuntes en lu uctuulldud son lu z y . Lu verslon es
comutlble con cllentes que soorten lu verslon z y es un royecto de mejoru lncrementul de lu verslon vz ul lguul que est sucedlendo con el desurrollo
modulur de E1ML o CSS.
LLAP es cusl como lu lnterfuz de unu cluse en 'uvu, deflne como se reresentun los dutos y que oeruclones con ellos se odrn reullzur, ero no hublu
de lu muneru en lu que se ulmucenurn los dutos o de cuulquler otro detulle lnterno de funclonumlento del servldor.
z -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
lnstuluclon de CenLLAP
Ln lu uctuulldud huy vurlos servldores grutultos de LLAP. Ll que ms untlguo y extendldo es CenLLAP. Ll servldor coge su conflguruclon lnlclul de lu
que tengumos en jetc.jhosts usl que hubr que edlturlo ero untes cumbluremos el nombre del host.
gedit /etc/hostname
Y le doy el nombre "servldor'
gedit /etc/hosts
Y dejur
127.0.0.1 localhost
127.0.1.1 servidor.ejemplo.com servidor
Lo slgulente ser lnstulur el servldor
sudo apt-get update
sudo apt-get install slapd ldap-utils
Lurunte lu lnstuluclon se nos lde unu contrusenu de udmlnlstrudor, como slemre yo ondre "serglo'.
Ll uquete ')/(- es el servldor mlentrus que )-/(g,:*)' es un conjunto de ullcuclones de cllente
Un comundo con el que odemos echur un vlstuzo generul ul servldor es (":1!:&
3X6 -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
92,?+73& /L&+,3& 1% ,3'E+I"2(,+-'Z >'5%2)2%5(,+-' 4 "&3
Podemos ver el urchlvo bslco de lu conflguruclon del servldor
sudo gedit /etc/ldap/ldap.conf
Lo que muestru
#
# LDAP Defaults
#
# See ldap.conf(5) for details
# This file should be world readable but not world writable.
#BASE dc=example,dc=com
#URI ldap://ldap.example.com ldap://ldap-master.example.com:666
#SIZELIMIT 12
z -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
#TIMELIMIT 15
#DEREF never
# TLS certificates (needed for GnuTLS)
TLS_CACERT /etc/ssl/certs/ca-certificates.crt
Sl te dus cuentu lu unlcu llneu no comentudu es lu ultlmu que lndlcu el certlflcudo que usu 1LS en LLAP. Con los conoclmlentos udqulrldos hustu lu fechu
deberlu ser trunsurente como creur otro certlflcudo y usurlo con nuestro servldor ero no uhonduremos en el temu.
Lu buse de dutos de LLAP est conflgurudu como un conjunto de urchlvos LLll (\!"Z !/:/ L1:&8.N/1+& G08@/:) que se encuentrun u urtlr de
jetc.jldujslud.dj
Los urchlvos LLll deben cumllr unus normus muy clurus:
! Lus llneus de comenturlos emlezun or # y se lgnorun ul rocesur el urchlvo
! Lus llneus que emlezun or un unlco esuclo en blunco se conslderun unu contlnuuclon de lu unterlor lncluso sl estu ultlmu es un comenturlo
! Cudu entrudu se debe seurur de lu slgulente or unu llneu en blunco
Podemos consultur estu estructuru medlunte el rotocolo LLAP con
sudo ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b cn=config dn
Ll LN del udmlnlstrudor uru el que lntrodujlmos es cnudmln,dcejemlo,dccom.
1umblen odemos consultur el rbol de nuestro sltlo
ldapsearch -x -LLL -H ldap:/// -b dc=ejemplo,dc=com dn
3XK -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
Lo que muestru
dn: dc=ejemplo,dc=com
dn: cn=admin,dc=ejemplo,dc=com
Londe lu rlmeru llneu es el orlgen del Ll1 y lu segundu el LN del udmlnlstrudor como vlmos un oco ms urrlbu.
Lu oclon -x slrve uru usur uutentlcuclon slmle, LLL lndlcu que no nos muestre detulles udlclonules de LLll, E es el host y -b slrve uru lndlcur u
urtlr de que nodo tlene que buscur.
Asl or ejemlo
ldapsearch -x -LLL -H ldap://servidor.ejemplo.com -b cn=admin,dc=ejemplo,dc=com dn
Nos mostrurlu solo el udmlnlstrudor orque no tlene hljos.
Como odemos ver estu formu de conflgurur CenLLAP usu un rbol LLAP (Ll1) y se muneju lguul que el resto usl que lus oeruclones que veumos
uru modlflcur el contenldo de LLAP son comutlbles con lo que urendumos uqul. Adems esto ermlte que se uedu modlflcur lu conflguruclon del
servldor sln lu necesldud de relnlclur en cusl nlngun cuso.
Como velumos un oco ms urrlbu, lu rulz del rbol de conflguruclon se denomlnu .1k.01<*+ que contlene los utrlbutos de lu conflguruclon globul, todo
lo dems se encuentru en nodos hljo que ueden contener lnformuclon de:
! Modulos curgudos dlnmlcumente
! Leflnlclones de esquemus
! Conflguruclon del buckend
! Conflguruclon eseclflcu de lu buse de dutos
Llegudos u este unto es lmortunte uclurur que lnterretu CenLLAP como buckend y que como frontend:
! lrontend: Lu urte que se encurgu del ucceso u red y de rocesur lus ordenes reluclonudus con el rotocolo.
z, -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
! 8uckend: Lu urte que se encurgu del ulmucenumlento de los dutos.
Sln emburgo esto uede llevur u confuslon yu que exlste un elemento que se denomlnu buse de dutos "frontend' que slrve uru ullcur
conflguruclones de formu globul u todo el resto de lus buses de dutos.
Ll usecto generul del LLll de conflguruclon serlu como slgue (el texto entre los slmbolos <> se deberlu sustltulr or conflguruclon reul):
# Configuracin global
dn: cn=config
objectClass: olcGlobal
cn: config
<atributos de configuracin global>
# sDefiniciones de esquemas
dn: cn=schema,cn=config
objectClass: olcSchemaConfig
cn: schema
<system schema>
3XF -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
dn: cn=Xcore,cn=schema,cn=config
objectClass: olcSchemaConfig
cn: Xcore
<core schema>
# Ms esquemas definidos por el usuario
...
# iniciones de backend
dn: olcBackend=<typeA>,cn=config
objectClass: olcBackendConfig
olcBackend: <typeA>
<configuracin especfica de backend>
# Definiciones de la base de datos
z -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
dn: olcDatabase=X<typeA>,cn=config
objectClass: olcDatabaseConfig
olcDatabase: X<typeA>
<onfiguracin especifica de de la base de datos>
# Ms definiciones y configuraciones
...
Puedes ver que ulgunos utrlbutos llevun un numero (donde serlu un numero entero) untes del vulor. Lsto es debldo u que en un LLAP no se
eseclflcu nlngun orden usl que se hu tenldo que lntroduclr unu muneru de eseclflcur un orden determlnudo cuundo es necesurlo que tul conflguruclon
se ullque slemre untes que tul otru.
Eustu lu verslon z.z (uctuulmente se usu lu z.) CenLLAP usubu un urchlvo de conflguruclon ')/(-=.01< que se hu sustltuldo or este otro slstemu en el
que lus dlrectlvus de conflguruclon con utrlbutos de entrudus en el Ll1 de conflguruclon. Puru fucllltur lu trunslclon todus lus dlrectlvus que se utlllzubun
en el urchlvo untlguo uhoru llevun el refljo "olc' en el nombre del utrlbuto.
Puru unudlr, modlflcur o ellmlnur clusulus de conflguruclon se utlllzun lus mlsmus oeruclones que veremos uru usur el rbol eseclflco que hemos
creudo. Son utrlbutos y se modlflcun lguul. Ln el uurtudo de control de ucceso veremos ejemlos con dlrectlvus de conflguruclon reluclonudus con los
ermlsos. Lus clusulus de conflguruclon se ueden ver en lu documentuclon de CenLLAP ero u ml entender escuun ul contenldo del curso.
Ll servldor tumblen contlene ulgunos esquemus relnstuludos
# ls /etc/ldap/schema/
collective.ldif cosine.schema java.ldif openldap.ldif
4MM -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
collective.schema duaconf.ldif java.schema openldap.schema
corba.ldif duaconf.schema ldapns.schema pmi.ldif
corba.schema dyngroup.ldif misc.ldif pmi.schema
core.ldif dyngroup.schema misc.schema ppolicy.ldif
core.schema inetorgperson.ldif nis.ldif ppolicy.schema
cosine.ldif inetorgperson.schema nis.schema README
Pueden consulturse estos esquemus ubrlendo los urchlvos
gedit /etc/ldap/schema/inetorgperson.ldif
Pero es ms fcll yendo u lu documentuclon de CenLLAP. Aqul vemos el mlsmo que con el comundo unterlor y ser uno de los que usuremos en los
ejemlos que vuyumos huclendo.
c -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
Creundo contenldo en LLAP
Puru oder uutentlcur usuurlos usundo LLAP rlmero tendremos que creurlos. vumos u creur unu estructuru como se lndlcu:
! Un nodo usuurlos
! Un nodo gruos
! Un usuurlo
! Un gruo
Puru ello creumos un urchlvo creu_contenldo.ldlf
gedit crea_contenido.ldif
Con el contenldo
dn: ou=Usuarios,dc=ejemplo,dc=com
objectClass: organizationalUnit
ou: Usuarios

dn: ou=Grupos,dc=ejemplo,dc=com
objectClass: organizationalUnit
ou: Grupos
4M3 -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu

dn: cn=programadores,ou=Grupos,dc=ejemplo,dc=com
objectClass: posixGroup
cn: programadores
gidNumber: 5000

dn: uid=sergio,ou=Usuarios,dc=ejemplo,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
uid: sergio
sn: Cuesta
givenName: Sergio
cn: Sergio Cuesta
displayName: Sergio Cuesta
c -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
uidNumber: 10000
gidNumber: 5000
userPassword: sergio
gecos: Sergio Cuesta
loginShell: /bin/bash
homeDirectory: /home/scuesta
mail: [email protected]
telephoneNumber: 55555555
st: Madrid
Ahoru ejecutumos lu orden uru unudlr el contenldo creudo en el urchlvo lo que nos lde lu contrusenu y nos lnformu de que se hu creudo
# ldapadd -x -D cn=admin,dc=ejemplo,dc=com -W -f crea_contenido.ldif
Enter LDAP Password:
adding new entry "ou=Usuarios,dc=ejemplo,dc=com"
adding new entry "ou=Grupos,dc=ejemplo,dc=com"
4M6 -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
adding new entry "cn=programadores,ou=Grupos,dc=ejemplo,dc=com"
adding new entry "uid=sergio,ou=Usuarios,dc=ejemplo,dc=com"
Ahoru que yu tenemos contenldo odemos buscur dutos dentro de LLAP
# ldapsearch -x -LLL -b dc=ejemplo,dc=com 'uid=sergio'
dn: uid=sergio,ou=Usuarios,dc=ejemplo,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
uid: sergio
sn: Cuesta
givenName: Sergio
cn: Sergio Cuesta
displayName: Sergio Cuesta
c -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
uidNumber: 10000
gidNumber: 5000
gecos: Sergio Cuesta
loginShell: /bin/bash
homeDirectory: /home/scuesta
mail: [email protected]
telephoneNumber: 55555555
st: Madrid
1umblen odemos consultur utrlbutos determlnudos
# ldapsearch -x -LLL -b dc=ejemplo,dc=com 'uid=sergio' uid displayName mail
dn: uid=sergio,ou=Usuarios,dc=ejemplo,dc=com
uid: sergio
displayName: Sergio Cuesta
mail: [email protected]
C buscur el utrlbuto "uld' de todus lus entrudus
4MK -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
# ldapsearch -x -LLL -b dc=ejemplo,dc=com uid
dn: dc=ejemplo,dc=com
dn: cn=admin,dc=ejemplo,dc=com
dn: ou=Usuarios,dc=ejemplo,dc=com
dn: ou=Grupos,dc=ejemplo,dc=com
dn: cn=programadores,ou=Grupos,dc=ejemplo,dc=com
dn: uid=sergio,ou=Usuarios,dc=ejemplo,dc=com
uid: sergio
lnstulu CenLLAP en tu servldor y unude lnformuclon sobre tl como usuurlo. Pruebu u reullzur consultus de contenldo. Que sucede sl
ellmlnus el urmetro -LLL en tus busquedus? Conslderus ms utlles lus busquedus usl o con el urmetro -LLL? Por que?
c, -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
Unu vez huyus termlnudo, creu otro urchlvo uru unudlr un segundo usuurlo y ejecutulo. Pruebu nuevus busquedus.
Lxlsten muchlslmus oclones de busquedu y no es el objetlvo de este curso rofundlzur mucho en LLAP, ero uru oder oner un ur de ejemlos
ms de busquedus voy u unudlr otro usuurlo
gedit crea_maria.ldif
Con el contenldo
dn: uid=maria,ou=Usuarios,dc=ejemplo,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
uid: maria
sn: Ramrez
givenName: Mara
cn: Mara Ramrez
displayName: Mara Ramrez
uidNumber: 10001
4MF -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
gidNumber: 5001
userPassword: maria
gecos: Maria Ramirez
loginShell: /bin/bash
homeDirectory: /home/mramirez
mail: [email protected]
telephoneNumber: 66666666
st: Madrid
Lo unudlmos
ldapadd -x -D cn=admin,dc=ejemplo,dc=com - -f crea_maria.ldif
Y buscumos los usuurlos del estudo Mudrld
# ldapsearch -x -LLL -b dc=ejemplo,dc=com "st=Madrid" displayName
dn: uid=sergio,ou=Usuarios,dc=ejemplo,dc=com
displayName: Sergio Cuesta
c -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
dn: uid=maria,ou=Usuarios,dc=ejemplo,dc=com
displayName:: TFyw61hIFJhbcOtcmV6
Sl te dus cuentu, no le hun gustudo lus tlldes en el nombre de Murlu. Luego mostruremos como modlflcur utrlbutos.
Podemos buscur todos los nodos dentro de Usuurlos
# ldapsearch -x -LLL -b ou=Usuarios,dc=ejemplo,dc=com uid
dn: ou=Usuarios,dc=ejemplo,dc=com
dn: uid=sergio,ou=Usuarios,dc=ejemplo,dc=com
uid: sergio
dn: uid=maria,ou=Usuarios,dc=ejemplo,dc=com
uid: maria
C buscur los nodos con estudo Mudrld y uld murlu
# ldapsearch -x -LLL -b dc=ejemplo,dc=com "(&(st=Madrid)(uid=maria))"
dn: uid=maria,ou=Usuarios,dc=ejemplo,dc=com
4EM -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
uid: maria
sn:: UmFtw61yZXo=
givenName:: TFyw61h
cn:: U2VyZ2lvIFJhbcOtcmV6
displayName:: TFyw61hIFJhbcOtcmV6
uidNumber: 10001
gidNumber: 5001
gecos: Maria Ramirez
loginShell: /bin/bash
homeDirectory: /home/mramirez
mail: [email protected]
telephoneNumber: 66666666
-& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
st: Madrid
Por ultlmo buscuremos los que tengun uld murlu o serglo
# ldapsearch -x -LLL -b dc=ejemplo,dc=com "(|(uid=sergio)(uid=maria))" gecos
dn: uid=sergio,ou=Usuarios,dc=ejemplo,dc=com
gecos: Sergio Cuesta
dn: uid=maria,ou=Usuarios,dc=ejemplo,dc=com
gecos: Maria Ramirez
K31+E+,('13 %* ,3'5%'+13
vumos u ver como unudlr, borrur o modlflcur el contenldo de utrlbutos de entldudes LLAP. Lmezuremos creundo un urchlvo con los cumblos.
gedit modifica_contenido.ldif
Con lus oeruclones de modlflcuclon
dn: uid=sergio,ou=Usuarios,dc=ejemplo,dc=com
add: mobile
mobile: 77777777
4E3 -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
dn: uid=sergio,ou=Usuarios,dc=ejemplo,dc=com
delete: telephoneNumber
dn: uid=maria,ou=Usuarios,dc=ejemplo,dc=com
changetype: modify
replace: sn
sn: Ramirez
dn: uid=maria,ou=Usuarios,dc=ejemplo,dc=com
changetype: modify
replace: givenName
givenName: Maria
dn: uid=maria,ou=Usuarios,dc=ejemplo,dc=com
-& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
changetype: modify
replace: cn
cn: Maria Ramirez
dn: uid=maria,ou=Usuarios,dc=ejemplo,dc=com
changetype: modify
replace: displayName
displayName: Maria Ramirez
Y lo usumos
ldapmodify -x -D cn=admin,dc=ejemplo,dc=com - -f modifica_contenido.ldif
Podemos ver como se hun ullcudo los cumblos
# ldapsearch -x -LLL -b ou=Usuarios,dc=ejemplo,dc=com
dn: ou=Usuarios,dc=ejemplo,dc=com
objectClass: organizationalUnit
ou: Usuarios
4E6 -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
dn: uid=sergio,ou=Usuarios,dc=ejemplo,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
uid: sergio
sn: Cuesta
givenName: Sergio
cn: Sergio Cuesta
displayName: Sergio Cuesta
uidNumber: 10000
gidNumber: 5000
gecos: Sergio Cuesta
loginShell: /bin/bash
homeDirectory: /home/scuesta
-& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
mail: [email protected]
st: Madrid
mobile: 77777777
dn: uid=maria,ou=Usuarios,dc=ejemplo,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
uid: maria
uidNumber: 10001
gidNumber: 5001
gecos: Maria Ramirez
loginShell: /bin/bash
homeDirectory: /home/mramirez
mail: [email protected]
4EK -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
telephoneNumber: 66666666
st: Madrid
sn: Ramirez
givenName: Maria
cn: Maria Ramirez
displayName: Maria Ramirez
Ctru oslble modlflcuclon serlu unudlr los usuurlos ul gruo creudo. Creumos otro urchlvo
gedit aniade_grupos.ldif
Con el contenldo
dn: cn=programadores,ou=Grupos,dc=ejemplo,dc=com
changetype: modify
add: memberuid
memberuid: cn=sergio,ou=Usuarios,dc=ejemplo,dc=com
dn: cn=programadores,ou=Grupos,dc=ejemplo,dc=com
, -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
changetype: modify
add: memberuid
memberuid: cn=maria,ou=Usuarios,dc=ejemplo,dc=com
Y lo usumos
ldapmodify -x -D cn=admin,dc=ejemplo,dc=com - -f aniade_grupos.ldif
Podemos consultur lu entrudu uru ver que todo hu ldo blen
# ldapsearch -x -LLL -b cn=programadores,ou=Grupos,dc=ejemplo,dc=com
dn: cn=programadores,ou=Grupos,dc=ejemplo,dc=com
objectClass: posixGroup
cn: programadores
gidNumber: 5000
memberUid: cn=sergio,ou=Usuarios,dc=ejemplo,dc=com
memberUid: cn=maria,ou=Usuarios,dc=ejemplo,dc=com
4EF -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
Y322('13 %'5+1(1%&
Eemos urendldo u creur y modlflcur entldudes, solo nos fultu ver como ellmlnurlus. Puru ello vumos u creur un urchlvo que nos ellmlne todus lus
entldudes que creumos con el urchlvo creu_contenldo.ldlf. 1en en cuentu que los urchlvos slguen exlstlendo or lo que uedes volver u ejecuturlos en
cuulquler momento. Le todus formus los usuurlos que hemos creudo son comutlbles con los de Llnux. Sl buscus como creur usuurlos en lnternet vers
que huy otrus cluses que se le ueden uslgnur, no es necesurlo que tomen lus que hemos determlnudo nosotros.
Creumos un urchlvo borru_contenldo.ldlf con lo slgulente
uid=sergio,ou=Usuarios,dc=ejemplo,dc=com
uid=maria,ou=Usuarios,dc=ejemplo,dc=com
cn=programadores,ou=Grupos,dc=ejemplo,dc=com
ou=Usuarios,dc=ejemplo,dc=com
ou=Grupos,dc=ejemplo,dc=com
Y lo usumos
ldapdelete -x -D cn=admin,dc=ejemplo,dc=com - -f borra_contenido.ldif
Ahoru tenemos lu buse de dutos LLAP como ul rlncllo.
-& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
Cllentes grflcos
Lxlste un grun numero de cllentes con lnterfuz grflcu uru LLAP. Los ms conocldos son:
! 'lorer: Ll que vumos u usur.
! Auche Llrectory Studlo: Un lugln uru Lcllse. Muy utlllzudo entre los desurrolludores que usun este entorno.
! hLLAPudmln: Un cllente desurrolludo en PEP con lu ventuju de que se ejecutu en cuulquler nuvegudor web.
Puru lnstulur 'lorer lo ms fcll es hucerlo desde llneu de
comundos
sudo apt-get install jxplorer
Y se ejecutu como cuulquler otru ullcuclon.
Unu vez ubrlmos lu ullcuclon huy que conecturse:
. Pulsumos el boton de conectur
z. Lscrlblmos lu dlrecclon del servldor LLAP
. Lscrlblmos los "dc'
. Lleglr uutentlcuclon de usuurlo
. Lscrlblr los dutos del usuurlo que se conectur
6. Ponemos lu contrusenu
,. Pulsumos Cl
Unu vez nos hemos conectudo yu vemos el rbol de
nuestro servldor.
43M -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
Medlunte U-*: gl e&D o con el boton derecho e&D odemos creur nuevus entldudes. Cuundo hemos selecclonudo los urmetros y
ulsumos Cl se nos muestru u lu derechu lu tublu con los utrlbutos de lu entldud ero no uurecer en el rbol hustu que no ulsemos
7,2@*:.
Ayudndote de lnternet urende u creur, modlflcur y borrur entldudes en nuestro rbol y rellcu lu estructuru que hlclmos desde llneu
de comundos.
z -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
Autentlcuclon de usuurlos en el servlclo de dlrectorlos
Ll ucceso ul servldor LLAP y el Ll1 se controlu medlunte dlrectlvus que se reresentun como utrlbutos en los rolos nodos del rbol. Podemos ver un
cuso
# sudo ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b \
> cn=config '(olcDatabase=0config)' olcAccess
dn: olcDatabase=0config,cn=config
olcAccess: 0to * by dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=external
,cn=auth manage by * break
1en en cuentu que estumos hublundo del ucceso ul servldor LLAP no del ucceso medlunte usuurlos creudos en LLAP u servldores web o de ullcuclones,
de lo que hubluremos ms turde.
Podemos ver que uru el control de ucceso se utlllzu el utrlbuto olcAccess. Ln lu documentuclon de CenLLAP uedes ver lus oclones del utrlbuto (es
bustunte comlejo). Lebes lr ul unto 8. yu que lu rlmeru urte hublu de como se conflgurubu con el urchlvo de conflguruclon (metodo untlguo).
Nosotros vumos u centrurnos en ulgunos untos cluve.
Por defecto los servldores LLAP guruntlzun ermlsos de lecturu u todos los nodos u cuulquler usuurlo. Lsto no es tun ruro como urece: huy que tener
en cuentu que se trutu de un servlclo de dlrectorlo cuyu funclon es fucllltur el ucceso u recursos (yu seun ersonus, lmresorus, servldores, etc.). Puru
entender mejor que no es ruro odemos ensur en que sucederlu sl uru reullzur oeruclones de lecturu en LNS fueru necesurlo tener un usuurlo y
contrusenu uutorlzudos.
433 -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
Como en estu secclon vumos u urender u modlflcur los ermlsos uru que solo determlnudos usuurlos ueden ucceder u urtes de lu lnformuclon,
convlene uclurur uqul que lguul que hemos hecho uru lus oeruclones de modlflcuclon del contenldo se uede utlllzur un usuurlo u lu horu de reullzur
busquedus o consultus
ldapsearch -x -D cn=admin,dc=ejemplo,dc=com - -LLL -b dc=ejemplo,dc=com
G* (52+/"53 3*,9,,%&&
Puru usur el utrlbuto olcAccess huy que fljurse en:
! A que (whut): Lntrudus (Lntrles) uru lus que estubleceremos los ermlsos.
! A qulen (who): Usuurlos u los que se les ullcun los ermlsos.
! Permlsos (Access to grunt): que tlo de ucceso se le vu u ermltlr.
Puru entender mejor los ejemlos convlene recordur que lu estructuru de nuestro Ll1 es como se ve en lu lmugen o lo que es lo mlsmo
dn: dc=ejemplo,dc=com
dn: cn=admin,dc=ejemplo,dc=com
dn: ou=Usuarios,dc=ejemplo,dc=com
dn: ou=Grupos,dc=ejemplo,dc=com
z -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
dn: cn=programadores,ou=Grupos,dc=ejemplo,dc=com
dn: uid=sergio,ou=Usuarios,dc=ejemplo,dc=com
dn: uid=maria,ou=Usuarios,dc=ejemplo,dc=com
C E7J
Aunque exlste unu terceru formu solo vumos u conslderur dos munerus de eseclflcur lus entrudus objetlvo:
! to
! to dn.<scoestyle><LN>
Lu rlmeru formu slrve uru selecclonur todus lus entrudus.
Lu segundu formu nos ermlte selecclonur ulgunus en urtlculur ero '.0(&g':H)& nos ermlte urovechur lu estructuru urboreu de lu buse de dutos
LLAP. Puede ser "buse' que se ullcu solo u lu entrudu que colncldu, "one' que se ullcu u los hljos de lu entrudu que colncldu, "subtree' que se ullcu
u todo el rbol cuyu rulz fueru lu entrudu que colncldu o "chlldren' que se ullcurlu ul mlsmo rbol que en el cuso unterlor ero excetuundo lu rulz.
Lo vumos u ver con ejemlos:
. dn.buseouUsuurlos,dcejemlo,dccom solo se ullcurlu ul nodo "Usuurlos',
z. dn.oneouUsuurlos,dcejemlo,dccom' se ullcurlu u "serglo' y "murlu',
. dn.subtreeouUsuurlos,dcejemlo,dccom se ullcurlu u "Usuurlos', "serglo' y "murlu'
. dn.chlldrenouUsuurlos,dcejemlo,dccom se ullcurlu u "serglo' y "murlu' ero u dlferenclu del ejemlo z sl ulguno tuvleru hljos tumblen
se ullcurlu u todos ellos ul lguul que sucederlu en el ejemlo ,
436 -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
1umblen se ueden usur flltros como los que hemos utlllzudo en busquedus. Asl
to fllter(stMudrld) se ullcurlu u "serglo' y "murlu' orque umbos tlenen ese vulor en el utrlbuto st.
Por ultlmo convlene destucur que se ueden selecclonur determlnudos utrlbutos
to uttrsutrlbuto, utrlbutoz
C E7#J%
Se ueden eseclflcur vurlos tlos:
! : Cuulquler usuurlo yu seu unonlmo o uutentlcudo
! unonymous : solo usuurlos unonlmos
! users: solo usuurlos uutentlcudos
! self: el usuurlo usocludo con lu entrudu lndlcudu en "u que'
! dn.<scoestyle><LN>: Los usuurlos que cumlun con lo deflnldo como se exllco en el unto unterlor
Con los ejemlos comletos del flnul se entender mejor esto.
-$)9#(,(
Euy vurlos nlveles. Ln lu llstu u contlnuuclon lo que uurece desues del lguul es el equlvulente yu que cudu nlvel lmllcu que se tlenen los ermlsos del
unterlor. Letrs de los dos untos vu lu exllcuclon. Se lncluyen todus lus oslbllldudes ero u nosotros solo nos lnteresun "none', "reud', "wrlte' y
"munuge'
. none c : sln ucceso
z. dlsclose d : uru oder obtener lnformuclon sl se roduce un error
. uuth dx : necesurlo uru uutentlcurse
. comure cdx : necesurlo uru comurur
. seurch scdx : necesurlo uru ullcur flltros en lus busquedus
6. reud rscdx : uru oder leer los resultudos de lus busquedus
,. wrlte wrscdx : uru oder modlflcur o cumblur nombres
8. munuge mwrscdx : necesurlo uru udmlnlstrur
z -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
Q)+$%
Lus dlrectlvus se ullcun en el orden en el que uurecen. Lste orden se uede forzur medlunte numeros entre lluves . Ls lmortunte tener en cuentu
que se slgue unu olltlcu de ullcur el rlmero que colncldu usl que sl or ejemlo ullcumos ulgo u los usuurlos unonlmos y luego ulgo u todos estu
ultlmu urte no se ullcur u los unonlmos orque yu hun colncldldo con lu entrudu unterlor. Lsto y muchus ms cosus se ven ms clurus en los
ejemlos.
Lxlsten muchus ms oclones de control de ucceso como se comentu en lu documentuclon de CenLLAP. 1umblen huy ulgunos ejemlos lnteresuntes
en estu otru glnu. Por ultlmo uqul huy unu exllcuclon muy de "undur or cusu' con ejemlos de ullcuclon rctlcu dlrectu.
Consultu y dlscute en cluse cudu ejemlo de lu secclon 8.. del rlmer enluce del rrufo unterlor, los ms relevuntes del segundo
enluce y todos los del tercero.
=3'52(&%](& )(2( *3& "&"(2+3&
Ls necesurlo suber como unudlr contrusenus u los usuurlos orque hustu uhoru los hemos usudo como slmles elementos de unu buse de dutos ero
evldentemente sl se vun u oder conectur u ullcuclones o ul servldor LLAP neceslturn de unu contrusenu.
Lu formu ms senclllu es unudlrles unu contrusenu medlunte unu modlflcuclon del usuurlo. Ln un urchlvo wd.ldlf
dn: uid=sergio,ou=Usuarios,dc=ejemplo,dc=com
changetype: modify
add: userPassword
userPassword: unaPwd
43K -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
Que usumos
ldapmodify -x -D cn=admin,dc=ejemplo,dc=com - -f pwd.ldif
Sl buscumos los dutos del usuurlo no nos muestru lu contrusenu
# ldapsearch -x -LLL -b ou=Usuarios,dc=ejemplo,dc=com "uid=sergio"
dn: uid=sergio,ou=Usuarios,dc=ejemplo,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
uid: sergio
sn: Cuesta
givenName: Sergio
cn: Sergio Cuesta
displayName: Sergio Cuesta
uidNumber: 10000
gidNumber: 5000
z, -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
gecos: Sergio Cuesta
loginShell: /bin/bash
homeDirectory: /home/scuesta
mail: [email protected]
telephoneNumber: 55555555
st: Madrid
Ahoru odemos modlflcur lu contrusenu desde llneu de comundos
# ldappasswd -h servidor.ejemplo.com -D "uid=sergio,ou=Usuarios,dc=ejemplo,dc=com" -W -S
"uid=sergio,ou=Usuarios,dc=ejemplo,dc=com"
New password:
Re-enter new password:
Enter LDAP Password:
Lebldo u lu conflguruclon que tenemos en el servldor LLAP no es oslble conecturse sln contrusenu or lo que sl qulslerumos que murlu tumblen
tuvleru contrusenu tendrlumos que hucer lo mlsmo. Lo mejor serlu creur los usuurlos con unu contrusenu tontu y que fueru slemre lu mlsmu y
uutomtlcumente hucer que lu cumblurun.
43F -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
9)*+,('13 *(& 1+2%,5+7(&
Eustu uhoru hemos vlsto como funclonu el control de ucceso en generul y hemos hubludo de que uurecen como utrlbutos en el rbol LLAP, ero
como y u que elementos se le ullcun? Lso es lo que vumos u ver en este unto.
Ll objeto (o entrudu) u lu que se le unuden los utrlbutos olcAccess es ul que reresentu lu conflguruclon de lu buse de dutos. Lstos objetos se guurdun u
urtlr del dlrectorlo f&:.=f)-/(f')/(-=-f como yu vlmos. Ms concretumente lus buses de dutos cuelgun del subdlrectorlo .1k.01<*+. Ln el huy vurlos
urchlvos que hucen referenclu u 0).!/:/2/'& ero suele ser el slgulente:
gedit /etc/ldap/slapd.d/cn=config/olcDatabase=1hdb.ldif
Podemos usegururnos ubrlendo el urchlvo ero SlN EACLR NlNCUNA MCLlllCAClCN y buscundo el urmetro 0).7,<<*` uru comrobur que colnclde
con el LN de buse de nuestro rbol.
# AUTO-GENERATED FILE - DO NOT EDIT!! Use ldapmodify.
# CRC32 532fe58d
dn: olcDatabase=1hdb
objectClass: olcDatabaseConfig
objectClass: olcHdbConfig
olcDatabase: 1hdb
olcDbDirectory: /var/lib/ldap
olcSuffix: dc=ejemplo,dc=com
z -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
...
Unu formu ms seguru y robublemente mejor locullzur el nodo medlunte unu busquedu
sudo ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b cn=config olcSuffix
Lo que nos vu u mostrur el resultudo yu eserudo
dn: cn=config
dn: cn=module0,cn=config
dn: cn=schema,cn=config
dn: cn=0core,cn=schema,cn=config
dn: cn=1cosine,cn=schema,cn=config
dn: cn=2nis,cn=schema,cn=config
44M -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
dn: cn=3inetorgperson,cn=schema,cn=config
dn: olcBackend=0hdb,cn=config
dn: olcDatabase=-1frontend,cn=config
dn: olcDatabase=0config,cn=config
dn: olcDatabase={1}hdb,cn=config
olcSuffix: dc=ejemplo,dc=com
Con este LN yu subemos u que elemento ullcur los cumblos. Lo rlmero que deberlumos hucer es consultur que 0)."..&'' tlene
# sudo ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b olcDatabase={1}hdb,cn=config olcAccess
dn: olcDatabase=1hdb,cn=config
olcAccess: 0to attrs=userPassword,shadowLastChange
-& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
by self write
by anonymous auth
by dn="cn=admin,dc=ejemplo,dc=com" write
by * none
olcAccess: 1to dn.base=""
by * read
olcAccess: 2to *
by self write
by dn="cn=admin,dc=ejemplo,dc=com" write
by * read
Ee modlflcudo un oco lu sulldu uru fucllltur lu lecturu
Comentu en cluse que ermlsos huy conflgurudos or defecto
Ahoru que yu tenemos todos los fuctores solo huce fultu recordur que se modlflcu como cuulquler otru entrudu del rbol LLAP or lo que lo rlmero
serlu creur un urchlvo "ermlsos.ldlf' con lus modlflcuclones. Yo voy u unudlr un nuevo 0)."..&'' ero se ueden modlflcur o ellmlnur como yu vlmos.
dn: olcDatabase=1hdb,cn=config
443 -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
delete: olcAccess
dn: olcDatabase=1hdb,cn=config
add: olcAccess
olcAccess: 0to attrs=userPassword,shadowLastChange by self write by anonymous auth by
dn="cn=admin,dc=ejemplo,dc=com" write by * none
dn: olcDatabase=1hdb,cn=config
add: olcAccess
olcAccess: 1to dn.base="" by * read
dn: olcDatabase=1hdb,cn=config
add: olcAccess
olcAccess: 2to dn.children="ou=Usuarios,dc=ejemplo,dc=com" by anonymous auth by self write by *
read
-& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
dn: olcDatabase=1hdb,cn=config
add: olcAccess
olcAccess: 3to * by self write by dn="cn=admin,dc=ejemplo,dc=com" write by * read
Y lo ullcumos, deberlu ermltlr el ucceso unonlmos u "serglo' y "murlu' solo uru uutentlcurse, ero no or ejemlo uru leer los dutos. 1en en cuentu
que lu sulldu de lu busquedu un oco ms urrlbu lu formutee uru fucllltur lu lecturu. Ln el urchlvo de modlflcuclon NC lntroduzcus sultos de llneu nl
nudu slmllur en medlo de utrlbutos o sus vulores. 1en en cuentu que he tenldo que modlflcur todos los ermlsos uru oder cumblur el orden de lu
clusulu que unudo (lu z) orque sl lu hubleru uesto ul flnul se ullcurlu rlmero lu que uhoru est ul flnul y nuncu se ullcurlu lu que he unudldo.
# ldapmodify -Y EXTERNAL -H ldapi:/// -f ./permisos.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "olcDatabase=1hdb,cn=config"
modifying entry "olcDatabase=1hdb,cn=config"
modifying entry "olcDatabase=1hdb,cn=config"
446 -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
modifying entry "olcDatabase=1hdb,cn=config"
modifying entry "olcDatabase=1hdb,cn=config"
Sl reetlmos lu consultu de los ermlsos
# sudo ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b olcDatabase={1}hdb,cn=config olcAccess
dn: olcDatabase=1hdb,cn=config
olcAccess: 0to attrs=userPassword,shadowLastChange by self write by anonymou
s auth by dn="cn=admin,dc=ejemplo,dc=com" write by * none
olcAccess: 1to dn.base="" by * read
olcAccess: 2to dn.children="ou=Usuarios,dc=ejemplo,dc=com" by anonymous auth auth by self write by
* read
olcAccess: 3to * by self write by dn="cn=admin,dc=ejemplo,dc=com" write by * read
Nos quedu comrobur que yu no huy ucceso unonlmo u "serglo' nl "murlu' ero sl u otros nodos
# ldapsearch -x -LLL -b dc=ejemplo,dc=comdn: dc=ejemplo,dc=com
objectClass: top
objectClass: dcObject
-& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
objectClass: organization
o: ejemplo.com
dc: ejemplo
dn: cn=admin,dc=ejemplo,dc=com
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator
dn: ou=Usuarios,dc=ejemplo,dc=com
objectClass: organizationalUnit
ou: Usuarios
dn: ou=Grupos,dc=ejemplo,dc=com
44K -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
objectClass: organizationalUnit
ou: Grupos
dn: cn=programadores,ou=Grupos,dc=ejemplo,dc=com
objectClass: posixGroup
cn: programadores
gidNumber: 5000
memberUid: cn=sergio,ou=Usuarios,dc=ejemplo,dc=com
memberUid: cn=maria,ou=Usuarios,dc=ejemplo,dc=com
1en en cuentu que lus dos ultlmus llneus son utrlbutos de "rogrumudores', unu entrudu uru lu que no hemos modlflcudo el ucceso.
Lu ultlmu ruebu es sl se ueden leer estos dutos con un usuurlo. Podrlu hucerlo con "udmln', ero es mejor robur con "serglo' que tlene menos
rlvlleglos. Eugo lu consultu desde usuurlos uru que seu un oco ms corto el resultudo.
# ldapsearch -x -D uid=sergio,ou=Usuarios,dc=ejemplo,dc=com -W -LLL -b ou=Usuarios,dc=ejemplo,dc=com
Enter LDAP Password:
dn: ou=Usuarios,dc=ejemplo,dc=com
objectClass: organizationalUnit
, -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
ou: Usuarios
dn: uid=sergio,ou=Usuarios,dc=ejemplo,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
uid: sergio
sn: Cuesta
givenName: Sergio
cn: Sergio Cuesta
displayName: Sergio Cuesta
uidNumber: 10000
gidNumber: 5000
gecos: Sergio Cuesta
loginShell: /bin/bash
44F -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
homeDirectory: /home/scuesta
mail: [email protected]
telephoneNumber: 55555555
st: Madrid
userPassword:: e1NTSEF9TdKdGNS1KM15MzBlbkwxVFFGQi8vYXVLZ3h3V0o=
dn: uid=maria,ou=Usuarios,dc=ejemplo,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
uid: maria
sn: Ramirez
givenName: Maria
cn: Maria Ramirez
displayName: Maria Ramirez
-& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
uidNumber: 10001
gidNumber: 5001
gecos: Maria Ramirez
loginShell: /bin/bash
homeDirectory: /home/mramirez
mail: [email protected]
telephoneNumber: 66666666
st: Madrid
vemos que tlene ucceso no solo u el, slno tumblen u "murlu'.
Modlflcu el control de ucceso uru que cudu usuurlo solo uedu leer sus dutos, ero no los de otro.
=3'523* 1% (,,%&3 %' 2%1%& 1% 321%'(132%&
Ln el cuso que nos ocuu no necesltumos estublecer un comlejo slstemu de uutentlcuclon yu que como he escrlto no vumos u usur LLAP como un
slstemu de control de ucceso de usuurlos uru todu unu red slno que lo ullcuremos ul ucceso u ullcuclones. Ln el cuso de que desurrollemos ulgo uru
unu emresu que utlllce LLAP uru uutentlcur u sus usuurlos en equlos y servlclos de unu red, lu gestlon de los usuurlos lu llevur un udmlnlstrudor y
nosotros solo neceslturemos conectur el servldor LLAP con nuestro servldor web o de ullcuclones. Por todo lo unterlor vumos u reullzur unu
conflguruclon slmle que lmldu u cuulquleru consultur nuestro rbol LLAP. Sl or ejemlo hemos conflgurudo nuestro servldor LLAP en lu mlsmu
46M -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
mqulnu que el servldor webjde ullcuclones odrlumos conflgurur los nombres del servldor LLAP medlunte el flchero host y usl no hubrlu ucceso u el
desde otru mqulnu, lo que no nos huce fultu orque hubrlumos ublcudo el resto en lu mlsmu.
Ls oslble utlllzur estos usuurlos de LLAP como usuurlos de lus mqulnus (Llnux en este cuso). Aqul se exllcu como hucerlo, ero en ml olnlon no
tlene nudu que ver con el desllegue de ullcuclones or lo que no rofundlzure en ello. Lste es un mblto de udmlnlstrudores de slstemus y no de
desurrolludores web.
-& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
Adutuclon de lu conflguruclon del servldor de dlrectorlos uru el desllegue de lu
ullcuclon. Usuurlos centrullzudos
Uno de los rlnclules usos de LLAP en lus emresus u orgunlzuclones es el tener usuurlos centrullzudos y comunes u todos sus controles de ucceso: en
equlos, en ullcuclones, en servlclos, en recursos.
Lu conflguruclon de LLAP uru estos cusos es bustunte comleju ero en el cuso que nos tocu se reflere u estublecer lu uutentlcuclon en servldores web
y de ullcuclones contru un servldor LLAP. Lu conflguruclon de CenLLAP yu lu hemos hecho usl que nos fultu lu lntegruclon con Auche y 1omcut.
OH9M 4 9)(,?%
Puru reullzur estos ejemlos voy u comenzur con unu lnstuluclon llmlu de Auche en el servldor donde he lnstuludo CenLLAP, como hemos vlsto
durunte todo el curso, esto odrlu comblnurse con cuulquler oclon de conflguruclon vlstu hustu el momento.
Lo rlmero que tenemos que hucer es hubllltur el modulo mod_uuthnz_ldu.
sudo a2enmod authnz_ldap
sudo service apache2 restart
Ahoru tendremos que edltur lu conflguruclon del sltlo or defecto uru hubllltur lu uutentlcuclon
<VirtualHost *:80>
ServerAdmin webmaster@localhost
463 -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
AuthName "Acceso a www.servidor.ejemplo.com"
AuthType Basic
AuthBasicProvider ldap
AuthzLDAPAuthoritative on
-& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
AuthLDAPUrl "ldap://servidor.ejemplo.com/dc=ejemplo,dc=com?uid?sub?(objectClass=*)"
AuthLDAPBindDN "cn=admin,dc=ejemplo,dc=com"
AuthLDAPBindPassword sergio
Require valid-user
</Directory>
...
1rus relnlclur el servldor yu odremos conecturnos con usuurlos del servldor LLAP.
8uscu en lu documentuclon del modulo lus dlrectlvus en negrltu y comentu en cluse uru que se utlllzun. 1e urece buenu oclon utlllzur
el usuurlo udmlnlstrudor?
1en en cuentu que no serlu necesurlo un usuurlo con contrusenu sl ermltlerumos lus consultus unonlmus. No es buenu ldeu utlllzur el usuurlo
udmlnlstrudor, serlu mucho mejor creur uno con ermlsos de lecturu en todo el rbol ero sln ermlsos de escrlturu yu que lu contrusenu huy que
escrlblrlu en el urchlvo.
Que usu sl queremos dur ucceso u un gruo de usuurlos ero no u cuulquler usuurlo? Ll gruo que creumos no nos fucllltu estu tureu usl que vumos u
creur un gruo de otro tlo. Creo un urchlvo con el nuevo gruo
dn: cn=usrApache,ou=Grupos,dc=ejemplo,dc=com
objectClass: groupOfUniqueNames
objectClass: top
466 -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
cn: usrApache
uniqueMember: uid=sergio,ou=Usuarios,dc=ejemplo,dc=com
uniqueMember: uid=maria,ou=Usuarios,dc=ejemplo,dc=com
Y lo roceso
ldapadd -x -D cn=admin,dc=ejemplo,dc=com - -f grupo.ldif
Ldlto el flchero del sltlo or defecto de uuche
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
-& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
AuthName "Acceso a www.servidor.ejemplo.com"
AuthType Basic
AuthBasicProvider ldap
AuthzLDAPAuthoritative on
AuthLDAPUrl "ldap://servidor.ejemplo.com/dc=ejemplo,dc=com?uid?sub?(objectClass=*)"
AuthLDAPBindDN "cn=admin,dc=ejemplo,dc=com"
AuthLDAPBindPassword sergio
Require ldap-group cn=usrApache,ou=Grupos,dc=ejemplo,dc=com
</Directory>
...
Lvldentemente estu segundu formu serlu mucho ms rctlcu cuundo tenemos usuurlos uru vurlos flnes.
46K -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
Un tercer modo serlu dur ermlso u ulgunos usuurlos determlnudos. Puru ello solo hubrlu que cumblur lu llneu en negrltu or
Require ldap-user sergio maria
Por ultlmo es oslble edlr que un determlnudo utrlbuto tengu un vulor eseclflcudo.
Require ldap-attribute gidNumber=5023
lncluso se ueden comblnur requlsltos
Require ldap-group cn=usrApache,ou=Grupos,dc=ejemplo,dc=com
Require ldap-user roberto, juan
Require ldap-attribute gidNumber=5023
Satisfy any
Londe lu ultlmu llneu lndlcu que con cumllr con unu de lus unterlores es suflclente.
Eubllltu E11PS en el servldor Auche y creu dos dlrectorlos. Ln CenLLAP conflguru dos gruos con dlferentes usuurlos cudu uno.
Conflguru el ucceso u cudu uno de los dlrectorlos uru que solo uedun ucceder los usuurlos de unos de los gruos. Comruebu que hus
conflgurudo todo correctumente.
OH9M 4 B3;,(5
Ln el cuso de 1omcut tumblen voy u hucer unu lnstuluclon llmlu con lu ullcuclon del formulurlo. Lvldentemente es necesurlo modlflcur el descrltor de
desllegue de lu ullcuclon uru que vullde con el gruo o usuurlos eseclflcudos en 1omcut.
, -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
Unu vez tenemos el servldor 1omcut funclonundo y hemos deslegudo lu ullcuclon (en ml cuso en lu curetu "form') odemos conflgurur el Reulm.
Recuerdu que se uede conflgurur en cuulquler contexto deendlendo de u que nlvel queremos que se utlllce. Ln este cuso voy u usurlo solo uru lu
ullcuclon usl que edlto el contexto rolo
gedit /var/lib/tomcat7/webapps/form/META-INF/context.xml
Y lo dejumos
<?xml version="1.0" encoding="UTF-8"?>
<Context antiJARLocking="true" path="/form">
<Realm className="org.apache.catalina.realm.JNDIRealm"
connectionName="cn=admin,dc=ejemplo,dc=com"
connectionPassword="sergio"
connectionURL="ldap://servidor.ejemplo.com:389"
userPattern="uid=0,ou=Usuarios,dc=ejemplo,dc=com"
roleBase="ou=Grupos,dc=ejemplo,dc=com"
roleName="cn"
roleSearch="(uniqueMember=0)"
/>
46F -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
</Context>
Lxlsten muchos otros utrlbutos y urmetros de conflguruclon y ul lguul que en el cuso de Auche, serlu mejor huber creudo un usuurlo con ermlsos de
lecturu solo.
Consultu los utrlbutos conflgurudos en el 'NLl Reulm unterlor y comentu en cluse su uso.
Ahoru edltumos el descrltor de desllegue
gedit /var/lib/tomcat7/webapps/form/EB-INF/web.xml
Y lo dejo como slgue, solo he tocudo lus llneus en negrltu
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<servlet>
<servlet-name>FormServlet</servlet-name>
<servlet-class>form.FormServlet</servlet-class>
</servlet>

-& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
<servlet-mapping>
<servlet-name>FormServlet</servlet-name>
<url-pattern>/FormServlet</url-pattern>
</servlet-mapping>

<!-- esto es lo que aadimos para la seguridad FORM -->
<!-- Primero una restriccin de seguridad -->
<security-constraint>
<web-resource-collection>
<web-resource-name>El * significa que pedimos autenticacin para toda la aplicacin</web-
resource-name>
<url-pattern>/*</url-pattern>
<http-method>GET</http-method>
<http-method>PUT</http-method>
<http-method>HEAD</http-method>
<http-method>POST</http-method>
4RM -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
<http-method>OPTIONS</http-method>
<http-method>TRACE</http-method>
<http-method>DELETE</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>usrApache</role-name>
</auth-constraint>
<user-data-constraint>
<transport-guarantee>NONE</transport-guarantee>
</user-data-constraint>
</security-constraint>
<login-config>
<auth-method>FORM</auth-method>
<!-- CUIDADO, los archivos siguientes deben ir en un subdirectorio para que funcione-->
-& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
<form-login-config>
<form-login-page>/protegido/login.jsp</form-login-page>
<form-error-page>/protegido/login-failed.html</form-error-page>
</form-login-config>
</login-config>

<session-config>
<session-timeout>
30
</session-timeout>
</session-config>

<security-role>
<description/>
<role-name>usrApache</role-name>
4R3 -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
</security-role>
</web-app>
Ahoru yu odemos conecturnos con los mlsmos usuurlos del gruo que creumos uru Auche en el cuso unterlor.
lnstulu 1omcut con E11PS y dos ullcuclones. Lu ucceso u cudu ullcuclon u uno de los gruos que creuste uru Auche. Pruebu que
todo es correcto.
Con este ultlmo ejerclclo yu hemos vlsto que es muy utll tener un servldor LLAP uru los usuurlos yu que odrlumos centrullzur los usuurlos tunto uru
lu web como uru lus ullcuclones fucllltundo usl lu udmlnlstruclon y el funclonumlento u los usuurlos que solo tlenen que conocer un unlco usuurlo y
contrusenu.
-& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
1emu 6: Locumentuclon y slstemus de control de verslones
4R6 -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
Eerrumlentus externus uru lu generuclon de documentuclon
Lus herrumlentus de generuclon de documentuclon ermlten creur unu documentuclon uru rogrumudores (APl) o uru usuurlos flnules u urtlr de
comenturlos lntroducldos en el codlgo fuente. Un ejemlo que todos conocemos es 'uvudoc de 'uvu con el cuul sl comentumos nuestro codlgo
slgulendo unus uutus determlnudus odemos obtener unu documentuclon slmllur u lu de lu APl de 'uvu uru nuestrus rolus cluses.
Lxlsten muchlslmus herrumlentus de este tlo or lo que es dlflcll eleglr unu. Por sl fueru oco, odemos ver en lu comurutlvu que nlngunu est
dlsonlble uru todos los rlnclules slstemus oerutlvos y todos los rlnclules lenguujes de rogrumuclon.
Sl vumos u rogrumur en 'uvu rlnclulmenete y el uso que retendemos dur es rlnclulmente documentur unu APl de nuestrus cluses 'uvudoc es lu
oclon obvlu. Puru usos ms eseclflcos deberlumos buscur unu que se ujuste u nuestrus necesldudes. Nosotros vumos u ver Loxygen or ser unu de lus
ms extendldus, estur dlsonlble uru todos los rlnclules slstemus oerutlvos y oder usurse con bustuntes lenguujes de rogrumuclon.
Locumentur con Loxygen sl se conoce 'uvudoc es bustunte dlrecto. Lus ventujus que tlene Locxygen es que nos ermlte documentur ms lenguujes de
rogrumuclon y que udems uede roduclr vurlos formutos de sulldu. Lsto y ulgunos ejemlos senclllos ueden verse en su glnu de lu vlkledlu.
Ln nlnguno de los untos referentes u lu generuclon de documentuclon vumos u entrur en rofundldud yu que se hun vlsto en 'uvudoc y udems es
ulgo que vu u deender de lus necesldudes de cudu royecto or lo que no odemos conslderur unu herrumlentu en concreto como redomlnunte o
destucudu. Sl ulgulen necesltu ms lnformuclon sobre Locxygen lu documentuclon es bustunte comletu.
>'&5(*(,+-'^ ,3'E+I"2(,+-' 4 "&3
lnstulur Locxygen es muy senclllo con los blnurlos. Ln el munuul exllcun tumblen como comllur los fuentes uru lnstulurlos tunto en Llnux como en
vlndows.
Ln ml cuso voy u usur el blnurlo uru Muc ero uqul se uede descurgur cuulquleru. Por que en este cuso no utlllzo Llnux? Loxygen debe lnstulurse en lu
mqulnu en lu que desurrollemos hubltuulmente.
-& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
1rus lnstulur el rogrumu nos sule unu untullu donde hubr que conflgurur lu curetu donde esturn los fuentes del royecto. Ll uso de lu oclon
#*V/8- es muy senclllo.
Como debo documentur el codlgo se exllcu en lu documentuclon.
lnvestlgu y dlscute en cluse lus dlferentes oclones de cudu untullu: Project, Mode, Cutut y Llugrums
Unu vez tengus clurus lus oclones, vumos u documentur un ejemlo y roburemos u exorturlo en chm.
Lste tlo de herrumlentus son mucho ms utlles sl odemos lntegrurlus en el entornod e desurrollo. Loxygen tlene luglns en Netbeuns y en Lcllse.
=2%(,+-' 4 "5+*+J(,+-' 1% )*('5+**(&
Lu documentuclon generudu uede mostrurse en dlferentes formutos. Por ejemlo, en lu curetu 'uvudoc de royectos de 'uvu huy un CSS con lu
conflguruclon de uurlenclu or defecto de lu APl. Ldltundo estu CSS odemos consegulr el usecto que querumos.
Ln Loxygen tumblen exlste estu oslbllldud: Ln lu oclon vlzurd solo odemos conflgurur los colores (outut, E1ML, chunge color), ero en el modo
Lxert, E1ML odemos selecclonur unu CSS rolu.
Sln emburgo el termlno luntlllus se utlllzu uru muchos otros concetos como odemos ver uqul. Ln lu generuclon uutomtlcu de codlgo se utlllzu
uru creur luntlllus de comenturlos. Por ejemlo unu luntlllu uru los comenturlos de un uquete, otru uru los de cluse, otru uru los de metodo, etc.
Lstus luntlllus nos ermlten lnclulr cumos o comenturlos or defecto udems de elementos como or ejemlo el uutor, lu fechu, etc.
Lus luntlllus se creun y se utlllzun en el entorno de desurrollo determlnudo que estemos utlllzundo. Por ejemlo en Lcllse, en lus oclones de cudu
lenguuje de rogrumuclon suele huber unu oclon denomlnudu 90-& P&@()/:&' que es donde se modlflcu.
4RK -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
lnstuluclon, conflguruclon y uso de slstemus de control de verslones.
htt:jjwww.uvujuvu.comjtutorlulsjcutegorlesjversloncontrol
Subverslon
! Ceruclones uvunzudus.
! Segurldud de los slstemus de control de verslones.
! Elstorlu de un reosltorlo.
, -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
Aendlces
Ln este uurtudo se lncluyen herrumlentus y rogrumus que no uurecen en el temurlo del modulo o son necesurlus untes de uurecer ero que se
conslderun lmortuntes uru el correcto desurrollo del mlsmo. Por estos motlvos se cubren de muneru someru y se suele resentur lu muneru ms
senclllu de usurlos.
4RF -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
vebmln: Unu lnterfuz grflcu de udmlnlstruclon
vebmln es un udmlnlstrudor de lnterfuz web uru servldores en Llnux.
Puru lnstulurlo, debemos unudlr fuentes de softwure nuevo u nuestru lnstuluclon. Lo rlmero es ubrlr el urchlvo de fuentes
sudo gedit /etc/apt/sources.list
y unudlr lus slgulentes llneus
deb http://download.webmin.com/download/repository sarge contrib
deb http://webmin.mirror.somersettechsolutions.co.uk/repository sarge contrib
1rus guurdur y sullr debemos lmortur lu cluve CPC
wget http://www.webmin.com/jcameron-key.asc
sudo apt-key add jcameron-key.asc
uctuullzumos lu llstu de fuentes
sudo apt-get update
e lnstulumos vebmln
sudo apt-get install webmin
-& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
Podemos ucceder u lu consolu de vebmln desde htts:jjserverl:ccccj cumblundo '&8>&8*( or el nombre del que nos lnformu cuundo termlnu lu
lnstuluclon. 1umblen se uede ucceder usundo lu lP en el mlsmo uerto o sl estumos en lu mlsmu mqulnu con loculhost y el uerto. Ln todos los cusos
ten en cuentu que lu conexlon es E11PS. Ll usuurlo es 800: y lu contrusenu lu que le huyumos uslgnudo en Llnux.
4KM -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
Un equeno servldor LNS
Ln nuestro cuso vumos u lnstulur un equeno LNS en nuestro servldor uru oder robur lu oclon.
1en en cuentu que untes de lnstulur ulgo es lmortunte tener lu mqulnu uctuullzudu.
sudo apt-get update
Ln ml cuso estoy lnstulundo 8lnd en lu mlsmu mqulnu vlrtuul en lu que he lnstuludo Auche. Lstu mqulnu no es vlslble desde lu red or lo que solo se
odr robur desde dentro de estu mqulnu. Lu dlrecclon lP de lu mqulnu es c.c.z.
Podrlumos hucer que fueru vlslble desde lu mqulnu unfltrlon sl hemos uctlvudo esu lnterfuz en vlrtuul 8ox y creumos todos los urchlvos con lu
dlrecclon lu lnterfuz de red corresondlente, ero udems deberlumos cumblur lus dlrecclones de los LNS de lu mqulnu unfltrlon uru que usen el
nuestro. Como no es recomenduble, lo roburemos solo desde lu mqulnu vlrtuul.
sudo apt-get install bind9
ubrlmos el flchero de conflguruclon
sudo gedit /etc/bind/named.conf.local
y escrlblmos lo slgulente
# Esta es la definicin de la zona. Remplaza el dominio de ejemplo por otro
zone ejemplo.es
type master;
6 -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
file /etc/bind/zones/ejemplo.es.db;
;
# Esta es la difinicion de la zona inversa para DNS. Modifica las direcciones IP para que se ajusten
a las tuyas.
zone 2.0.10.in-addr.arpa
type master;
file /etc/bind/zones/rev.2.0.10.in-addr.arpa;
;
Podemos comrobur que lu slntuxls seu correctu con lu slgulente orden. Sl es correctu no uurecer nlngun mensuje ero sl no lo es nos mostrur el
roblemu.
named-checkconf
Lo que debemos hucer uhoru es ubrlr el urchlvo de oclones.
sudo gedit /etc/bind/named.conf.options
en el debemos qultur los comenturlos de lu urte de <08D/8-&8' y dejurlo como slgue. 1en en cuentu que lus dlrecclones de los servldores LNS de tu
conflguruclon ueden cumblur. Se debe escrlblr estu orden justo en el sltlo que est lndlcudo. Lscrlblrlo or ejemlo ul flnul del urchlvo hurlu que
nuestro servldor no funclonuru.
4K3 -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
forwarders
80.58.61.254;
80.58.61.250;
;
Creumos el dlrectorlo uru conflgurur lus zonus
sudo mkdir /etc/bind/zones
y creumos el urchlvo de conflguruclon de nuestru zonu.
sudo gedit /etc/bind/zones/ejemplo.es.db
y escrlblmos lo slgulente
; cambia ejemplo.es por el nombre de tu dominio. No te olvides el punto despues del nombre de dominio
$TTL 3600
ejemplo.es. IN SOA ns.ejemplo.es. admin.ejemplo.es. (
; NO modifiques los siguiente parametros
2006081401
28800
6 -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
3600
604800
38400
)
; Modifica lo siguiente para que se ajuste a tu nombre de dominio
ejemplo.es. IN NS ns.ejemplo.es.
; Modifica las direcciones IP con las adecuadas en tu caso
@ IN A 10.0.2.15
ns IN A 10.0.2.15
www IN A 10.0.2.15
Podemos comrobur lu correctu slntuxls con lu orden
named-checkzone ejemplo.es /etc/bind/zones/ejemplo.es.db
Londe el rlmer urmetro es el nombre de lu zonu y el segundo lu rutu ul urchlvo corresondlente.
4K6 -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
Lebe dur unu sulldu como
zone ejemplo.es/IN: loaded serial 2006081401
OK
Ll slgulente uso es creur el urchlvo de zonu lnversu.
sudo gedit /etc/bind/zones/rev.2.0.10.in-addr.arpa
y escrlblr lo slgulente
; modifica los parametros correctamente
; el numero antes de IN PTR ejemplo.es es la direccin de la maquina donde este el servidor DNS
$TTL 604800
@ IN SOA ns.ejemplo.es. admin.ejemplo.es. (
2006081401;
28800;
604800;
604800;
6 -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
86400
)
; 15 es el ultimo numero de la ip de la maquina en la red.
@ IN NS ns.ejemplo.es.
15 IN PTR ejemplo.es.
Y lo comrobumos
named-checkzone 2.0.10.in-addr.arpa /etc/bind/zones/rev.2.0.10.in-addr.arpa
Ln este unto nos tocu relnlclur el servlclo LNS
sudo service bind9 restart
Ln cuso de que nos de 1),6"$9:( lo mejor es ubrlr lu lnterfuz de vebmln y ucceder u 7&8>&8' l bLe! !e7 7&8>&8. Lu oclon 9N&.a bLe! 901<*+ es de
muchu utllldud uru comrobur que no nos hemos equlvocudo en lu conflguruclon. Ll roblemu ms hubltuul es que huyu ulgun fullo en RNLC. Lu
oclon 7&:,( [e!9 nos uede uyudur.
Q&), 1),6"$9: muy hubltuul es que sl hus coludo y egudo de este urchlvo u los de conflguruclon, lus comlllus dobles son dlferentes or lo que no
funclonur. Lebes sustltulr todus lus comlllus dobles y volver u escrlblrlus.
Lebemos robur que todo funclone correctumente. Lo rlmero es lnformur u nuestro ordenudor de que debe buscur en el servldor lu resoluclon de
nombres.
4KK -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
gedit /etc/resolv.conf
y sustltulr lo que ongu or lo slgulente
nameserver 10.0.2.15
domain ejemplo.es
Yu odemos robur el resultudo
dig ejemplo.es
Lo que nos devolver ulgo slmllur u lo slgulente:
; <<>> DiG 9.8.1-P1 <<>> ejemplo.es
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 22708
;; flags: qr aa rd ra; QUERY: 1, ANSER: 1, AUTHORITY: 1, ADDITIONAL: 1
;; QUESTION SECTION:
;ejemplo.es. IN A
6, -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
;; ANSER SECTION:
ejemplo.es. 3600 IN A 10.0.2.15
;; AUTHORITY SECTION:
ejemplo.es. 3600 IN NS ns.ejemplo.es.
;; ADDITIONAL SECTION:
ns.ejemplo.es. 3600 IN A 10.0.2.15
;; Query time: 3 msec
;; SERVER: 10.0.2.15#53(10.0.2.15)
;; HEN: ed Aug 29 14:53:56 2012
;; MSG SIZE rcvd: 77
1umblen odemos robur con lng sl se encuentru
4KF -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
ping -c 4 www
y debemos obtener ulgo como
PING www.ejemplo.es (10.0.2.15) 56(84) bytes of data.
64 bytes from ejemplo.es (10.0.2.15): icmp_req=1 ttl=64 time=0.017 ms
64 bytes from ejemplo.es (10.0.2.15): icmp_req=2 ttl=64 time=0.033 ms
64 bytes from ejemplo.es (10.0.2.15): icmp_req=3 ttl=64 time=0.031 ms
64 bytes from ejemplo.es (10.0.2.15): icmp_req=4 ttl=64 time=0.029 ms
--- www.ejemplo.es ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 2999ms
rtt min/avg/max/mdev = 0.017/0.027/0.033/0.008 ms
Podemos robur u hucer unu consultu u un sltlo externo uru comrobur que segulmos tenlendo ucceso u lnternet
ping -c 4 www.google.es
PING www-cctld.l.google.com (173.194.34.23) 56(84) bytes of data.
6 -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
64 bytes from par03s02-in-f23.1e100.net (173.194.34.23): icmp_req=1 ttl=51 time=84.4 ms
64 bytes from par03s02-in-f23.1e100.net (173.194.34.23): icmp_req=2 ttl=51 time=83.5 ms
64 bytes from par03s02-in-f23.1e100.net (173.194.34.23): icmp_req=3 ttl=51 time=74.6 ms
64 bytes from par03s02-in-f23.1e100.net (173.194.34.23): icmp_req=4 ttl=51 time=75.3 ms
--- www-cctld.l.google.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3759ms
rtt min/avg/max/mdev = 74.668/79.480/84.406/4.516 ms
L lncluso sl tenemos lnstuludo Auche odemos ucceder u lu glnu or defecto escrlblendo en el nuvegudor web www.ejemlo.es.
Sl usumos hosts vlrtuules busudos en nombres, neceslturemos creur un reglstro uru el nuevo domlnlo ero reulmente ser un ullus ul unterlor. Lo
rlmero es unudlr el nuevo domlnlo u lu conflguruclon de 8lNL.
sudo gedit /etc/bind/named.conf.local
y unudlmos lo slgulente. Por coherenclu deberlu lr untes de lu deflnlclon de lu zonu lnversu.
.
# Esta es la definicion de la zona. Reemplaza el dominio de ejemplo por otro
zone "ejemplo2.es"
45M -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
type master;
file "/etc/bind/zones/ejemplo2.es.db";
;
.
Ahoru creumos el urchlvo de lu zonu
sudo gedit /etc/bind/zones/ejemplo2.es.db
y unudlmos los dutos con el reglstro CNAML udecuudo
; cambia ejemplo.es por el nombre de tu dominio. No te olvides el punto despues del nombre de dominio
$TTL 3600
ejemplo2.es. IN SOA ns.ejemplo2.es. admin.ejemplo2.es. (
; NO modifiques los siguiente parametros
2006081401
28800
3600
604800
, -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
38400
)
; Modifica lo siguiente para que se ajuste a tu nombre de dominio
ejemplo2.es. IN NS ns.ejemplo.es.
; Registro CNAME es un alias a otro ya existente. Es til para los hosts virtuales basados en
nombres.
www.ejemplo2.es. IN CNAME ejemplo.es.
trus hucerlo relnlclumos 8lNL
service bind9 restart
y odemos ucceder u nuestro servldor con el nuevo nombre de domlnlo or ejemlo desde el nuvegudor veb.
453 -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestu
lnstulur MySQL
Puru lnstulur lu buse de dutos MySQL usuremos el comundo:
sudo apt-get install mysql-server-5.5
que uede deender de lu verslon que huyu sulldo en su momento y que se uede consultur en htt:jjdev.mysql.comjdownloudsjmysqlj
Lurunte lu lnstuluclon nos edlrn que lntroduzcumos unu contrusenu de udmlnlstrudor que uunque no es obllgutorlu, sl muy recomenduble. Yo ongo
"serglo orque es unu lnstuluclon de ruebus.
MySQL se urruncu ul lnlclur lu mqulnu, ero odemos usur los comundos udecuudos en cudu cuso
/etc/init.d/mysql start
/etc/init.d/mysql stop
/etc/init.d/mysql restart
/etc/init.d/mysql status
uunque el rolo MySQL nos recomlendu usur los comundos usocludos ul servlclo.
service mysql start
service mysql stop
service mysql restart
, -& , 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@
!"# % !&'()*&+,& -& "()*./.*01&' #&2 htts:jjsltes.google.comjsltejserglocuestuj
service mysql status
el urchlvo de conflguruclon se uede ver en
sudo gedit /etc/mysql/my.cnf
uru conecturnos u MySQL con el usuurlo root
mysql -u root -p
lo que hur que nos ldu lu contrusenu que hemos estublecldo.
Puru sullr usuremos Q,*: o &`*:.
456 -& 456 7&8+*0 9,&':/ ;*.&1:&
(80<&'08='.>?+@/*)=.0@

También podría gustarte