You are on page 1of 168

'

OREILLY' 1.1111111
41146157

Administracin de sistemas Linux


De todos los sistemas Unix, Linux es una plataforma servidora excelente
un buen
sistema de escritorio y el centro en torno al cual gira una gran parte de
la
innovacin del mundo informtico actual. Linux es probablemente el que ms
mbitos abarca de todos los sistemas operativos, desde sistemas pequeos como
un telfono mvil hasta cisteres de computadores ms grandes que un edificio. Est presente
en los campos de las telecomunicaciones, sistemas embebidos, satlites, equipamiento mdico
sistemas militares y grficos por computador e informtica de escritorio.

Administracin de sistemas Linux ofrece numerosos consejos para gestionar un amplio rango
de sistemas y servidores. Este libro resume los pasos para implantar desde hubs SOLIO,
servidores web y servidores LAN, hasta cisteres de carga balanceada y servidores virtuales.
Tambin le ayudar a conocer las herramientas necesarias para administrar
y mantener de
forma eficaz estos entornos de trabajo.

Con este libro aprender a:

Instalar, configurar, mantener y resolver problemas en un servidor usando BINO.

Configurar un servidor de correo Postfix con autentificadn SASL, un servidor POP y un


servidor IMAP.

Gestionar usuarios y configurar elementos de red comunes, tales como OCHO y software
para pasarelas en recles de rea local (LAN).

Definir Xen, VMware en un equipo Linux y luego aadir sistemas operativos invitados.

Instalar y configurar Apache, PHP y MySQL en un servidor web desde cero.

Hacer copias de seguridad y restaurar ciatos con rsync, tar, cdrecord, Amanda y
herramientas MySQL.

Tom Adelstein comenz su carrera en el mundo de las inversiones bancadas, donde sus
conocimientos tcnicos ayudaron a algunas empresas de servicios financieros a convertirse en
lderes de su sector. Ahora es administrador de sistemas y escritor tcnico.

Bill Lubanovic comenz desarrollando software para Unix en la dcada de 1970, interfaces
grficas de usuario en la dcada de 1980 y para la Web en la dcada de 1990. Actualmente
trabaja en el. rea de visualizacin Web para una compaa ele energa elica.

2327258

iffif ^
ANAYA
'

:S'-

MULTIMEDIA*
http://www.AnayaMultimedia.6s
O'REILLY

Ttulo de la obra original:

Linux System Administraron

Responsable editorial:
VctorManuel Ruiz Caldern
Alicia Czar Concejil

Traduccin:
Jorge Martnez Gil

Realizacin de cubierta:
Sandra Cordova Yusta

Tom Adelstein
BilKLubano-vic

an m
mm MULTIMEDIA
Este libro no existira sin la contribucin de muchas personas. Aunque es im-
posible incluirlas aqu a todas. En primer lugar, queremos dar las gracias a Andy
Oram cuyos esfuerzos de edicin, redaccin y gestin son destacadles. Aparte de
su trabajo como editor, Andy ha contribuido materialmente al contenido de este
libro. Andy ha ejercido como gestor del proyecto y ha demostrado paciencia
y
disciplina.

Tampoco podemos olvidar las contribuciones de Falko Timme, Phil Howard y


Herschel Cohn. Falki nos ha prestado su tiempo y experiencia en los captulos 2
y 4. Phil ha escrito gran parte del captulo 1 i y nos ha proporcionado el framework
Todos ios nombres propios de programas, sistemas operativos, equipos hardware, del captulo 10 y el apndice de los scripts. Herschel ha escrito varias secciones de
etc., que aparecen en este libro son marcas registradas de sus respectivas captulos, entre los que estn el captulo 8 y 0, y ha contribuido con su expe-
1

compaas u organizaciones. riencia en el captulo . Los tres, adems, han revisado otras partes del libro.
Muchas gracias tambin a los expertos tcnicos, que han pasado innumera-
derechos. contenido
bles horas revisando,probando y haciendo sugerencias sobre el trabajo: Markus
Reservados todos los El

de esta obra est protegido por que la ley, Amersdorfer, Keitb Burgess, Robert Day, Animar Ibrahim, and Yaman Saqqa.
establece penas de prisin y/o multas, adems Y un agradecimiento especial a Yvonne Adelstein y Mary Lubanovic, nuestras
de las correspondientes indemnizaciones por esposas, que han demostrado una gran paciencia. No habramos podido realizar
daos y perjuicios, para quienes reprodujeren,
este trabajo sin su apoyo.
plagiaren, distribuyeren o comunicasen publi-
camente, en todo o en parte, una obra literaria,
artstica o cientfica, o su transformacin,
interpretacin o ejecucin artstica fijada en
cualquier tipo de soporte o comunicada a

travs de cualquier medio, sin la preceptiva


autorizacin. Tom Adelstein comenz su carrera en el mundo de las inversiones bancarias,
donde sus conocimientos tcnicos ayudaron a algunas empresas de servicios fi-
nancieros a convertirse en lderes de su sector. Ahora es administrador de siste-
Copyright 2007 by O'Reilly Media, Inc. mas y escritor tcnico.
Authorized translation from the English language edition published by O'Reilly Media, Inc.
Bill Lubanovic comenz desarrollando software para Unix en la dcada de
All rights reserved
1970, interfaces grficas de usuario en la dcada de 1980 y para la Web en la
dcada de 990. Ahora trabaja en el rea de visualizacin Web para una compa-
1

a de energa clica.
EDICIONES ANAYA MULTIMEDIA (GRUPO ANAYA, S.A.), 2007
28027 Madrid.
Juan Ignacio Lea de Tena, 15.
Depsito legal: M-3 .807-2007 1

ISBN: 978-84-415-2234-3
Printed n Spain.
Imprime: Artes Grficas Guemo, S.L.

Febrero, 32. 28022 Madrid.


Agradecimientos 5
Sobre los autores 5

Introduccin 15

Cmo se organiza el libro i 6


Convenciones usadas en este libro 17

Captulo 1. Requisitos para un administrador de sistemas Linux 19


f
Sobre este libro 20
Cmo podemos ayudarle? 21
Por dnde empezar? 21
Necesita un libro? 21
Quin le necesita? 22
Ayuda demandada 23
Analizando los conjuntos de habilidades 24
Qu deberan saber los gestores de sistemas sobre Linux 25
Qu es lo prximo? 26
Contenido Contenido

Captulo 2. Configurando un servidor Linux muitifuncin ........................... 27 El archivo de zona inversa 84


Bsquedas de prueba 86
Requisitos del servidor 28
Configurando el servidor de nombres secundario 88
Instalando Deban 29
Herramientas BIND 89
Autentificndose remotamente 31
nslookup 89
Configurando la red 32
rndc 91
Cambiando los paquetes por defecto de Deban 34
Resolucin de problemas en BIND 92
Configurando cuotas 36
No se puede conectar usando rndc 92
Ofreciendo servidos de nombre de dominio 38
named se inicia pero no resuelve nombres 94
Aadiendo una base de datos relacional: MySQL 4 i

No se reconocen los equipos 95


Configurando el manera segura con
correo de Postfix, POP3 e IMAP 43
Qu es lo prximo 98
Haciendo funcionar Apache 54
Aadiendo servicios FTP con ProFTPD 56
Recopilando las estadsticas Web con Webalizer 57
Sincronizando el reloj del sistema 57 Instalando ISPConfig 102
Instalando los diferentes mdulos Perl requeridos por SpamAssassin 58 Requisitos 103
Qu es lo prximo 59 Comenzando 104
Estructura de directorios de ISPConfig Til
Captulo 3. El sistema de nombres de dominio 61 Configurando un servidor y usuarios con ISPConfig 112
Aadiendo clientes y sitios Web 112
Aspectos bsicos de DNS 61
Gestionando usuarios y correo electrnico 119
Ventajas de la administracin localizada de DNS 62
Directorios pblicos, de usuario y de inicio 123
Introduccin a BIND 63
Configuracin del cliente de correo electrnico 1.23
Componentes de BIND 63
Salvaguardando un servidor Web Linux 124
Configurando un servidor DNS 64
El papel de demonio monitorizador de demonios 125
Usando un entorno chroot seguro 66
r Instalando y configurando monit 126
Configurando un servidor DNS autoritativo 68
Qu es lo prximo 130
Su responsabilidad en DNS 69
Elmtodo distribuido para resolver nombres de dominio 69
Encontrando un dominio 70
Respondiendo consultas 71 Aspectos claves del servicio de correo 132
Servidores DNS primarios y secundarios 72 Postfix, Sendmail y otros MTA 132
Servidores de solo cach 74 El servidor SMTP de correo Postfix en Deban 134
Editando los archivos de configuracin 74 Paquetes de Deban relacionados con Postfix 135
named.conf 74 Instalando Postfix en Deban 136
El archivo de zona primaria 77 Configuracin bsica de Postfix 138
Mejoras y caractersticas avanzadas 80 Probando el correo 141
10 Contenido Contenido 1

Aadiendo autentificacin y encriptacin 142 CG 171


Autentificacin SASL 142 Location 172
Configurando Postfix con SASL para autentificar Sufijo del archivo 1 72
usuarios con cuentas 143 Directivas especficas del mdulo PHP 173
El demonio saslauthd 145 Hosts Virtuales 174
Configurando Postfix con SASL para autentificar Hosts virtuales basados en IP 174
usuarios sin cuentas 146 Hosts virtuales basados en nombres 174
Encriptacin TLS 147 mod_vhost_a.lias 175
Configurando los agentes de entrega de correo POP3 e IMAP 150 Archivos log 176
Configuracin del cliente de correo 152
Divisin y rotacin de logs 176
Qu es lo prximo 153
Dividiendo los logs con vlogger 177
Analizando logs con Webalizer 178
Captulo 6. Administrando Apache 155
Encriptacin SSL/TLS 178
Archivos estticos y dinmicos 155 Soporte para suEXEC 180
Instalacin bsica de LAMP 156 Rendimiento

180
Instalacin 157 Instalando y administrando Drupal 182
Apache 157 Instalando Drupa! con apt-get 182
PHP 153 Instalando Drupa! desde las fuentes 184
MySQE 159 Configurando Drupal 185
Archivos de configuracin de Apache 160 Resolucin de problemas 186
Directivas de archivos de configuracin 162 La pgina Web no aparece en el navegador 186
Directivas de usuarios y grupos 164 Los Hosts Virtuales no funcionan: 189
Directiva Listen 164 SSl no funciona 189
Directiva DocurnentRoot 164 Un programa CGI no se ejecuta 190
Autentificacin y autorizacin 134 F SSL no funciona 190
Archivos de usuario 165
Captulo 7. Clusters de carga balanceada 191
Archivos de grupo 167
Contenedores y alias 167 Balanceo de carga y alta disponibilidad 192
Rutas absolutas: Directorio 167 Software para balanceo de carga 192
Rutas relativas: Ubicacin 168 IPVS en el balanceador de carga 193
Reconocimiento de patrones: Archivos Idirectord 194
y Comparacin de archivos 168 Configurando los servidores reales (Nodos Apache) 195
Alias 168 Configurando el balanceador de carga 196
Lmites 169 Probando el sistema 197
Tecnologa de servidor 169 Aadiendo HA a LB 199
12 Contenido Contenido 1

Aadiendo otros servicios LB 200 Instalando VMware 246


Escaiabilidad sin LB y HA 200 Instalando sistemas operativos invitados en VMware 250
Otras lecturas 201 Virtualizacin, una moda pasajera? 252

Captulo 8. Servicios efe red de rea local 203 Captulo 10. Scripting... 255

Comenzando con bash 256


Sistemas de archivos distribuidos 204
Rutas y permisos 257
Introduccin a Samba 205
La ruta por defecto 259
Configurando la red 206
Redireccin de E/S 260
DHCP 209
Variables 261
Instalando DHCP 209
Elementos tiles para bash Scripts 263
Iniciando el servicio DHCP 212
Expresiones 263
Ofreciendo direcciones IP estticas 212
Aritmtica 264
Asignando direcciones IPv6 con radvd 213
If 265
Servicios de pasarela 214
Depurando un script sencillo 266
El papel de una DMZ 215
Bucles 269
Otra aproximacin a los servicios de pasarela 217
Tareas cron 271
Servicios de impresin 222
Problemas con los lenguajes de script 272
Consideraciones sobre el software de impresin 223
Formato de los datos: El archivo /etc/passwd 274
Impresin en plataforma cruzada 223
Versiones de script 274
Controlando las colas de impresin desde la lnea de comandos 226
El bash script 275
Gestin de usuarios 227
El script Perl 276
Eliminando a un usuario 230
El script PHP 279
Sellando el directorio personal 232
El script Python 280
Gestores grficos de usuarios 232
Escogiendo un lenguaje de script 281

Captulo 9. Virtualizacin en la empresa moderna. 235 Otras lecturas 282

236 Captulo 11. Haciendo copia de seguridad de los datos 283


Por qu la virtualizacin es tan popular
Computacin de alto rendimiento 237 Salvaguardando ios datos de usuario en un servidor con rsync 284
Continuidad comercial y gestin de la carga de trabajo 238 Aspectos bsicos de rsync 284
Abastecimiento rpido 239 Haciendo un script para copias de seguridad de usuario 286
Cmo ayuda la virtualizacin 240 Listando archivos en el servidor de copias de seguridad 287
instalando Xen en Fedora 5 240 Restaurando archivos perdidos o daados 288
Instalando sistemas operativos invitados en Xen 243 Copias de seguridad automatizadas 289
Fedora Core 5 243 Archivos tar 289
Otros invitados 244 Creando un nuevo archivo 291
14 Contenido

Extrayendo datos de un archivo 291


Un ejemplo completo de compresin y descompresin con tar 292
Resumen 294
Guardando archivos en medios pticos 294
Accediendo a su unidad CD-R 295
Opciones por defecto 296
Preparando los archivos para grabar un CD -R 297
Grabando el CD-R 298
Verificando el grabado 299
Copias de seguridad en DVD 300
Haciendo copias de seguridad y guardndolas
en una cinta con Amanda 300
InstalandoAmanda 301
Configurando Amanda 302
Cuando Bill Lubanovic y yo estbamos dando los retoques finales a este libro
Restaurando archivos replicados con Amanda 304 escuch, sin quererlo,una conversacin entre dos compaeros de trabajo en nues-
Replicando datos MySQL 304 tro laboratorio Cisco acerca de Linux. Uno de los dos era experto en redes y haca
una puntualizacin muy que a pesar de todos sus conoci-
interesante. Deca
Apndice. Bash Scripts de ejemplo 309 mientos, se senta un profesional incompetente porque nunca haba aprendido
309 Linux. Un poco despus, el otro hombre se gir y me mir. Sonre y continu
Aadiendo usuarios
trabajando.
Generador de contraseas aleatorias 31.0
Por la noche, nuestro director de Tecnologas de la Informacin me hizo un
Bsqueda del DNS autor ilativo 312
comentario improvisado y nada usual durante una conferencia. Me dijo que quera
Enviando archivos entre sesiones shell 3
aprender Apache, y cuando le pregunt por qu, me respondi: "Simplemente
1

integrando ssh y screen 320 quiero aprender", y la cosa qued ah.


Despus en la conferencia, nuestro director pidi al grupo una solucin para
ndice alfabtico 327
lagestin de parches, explicando y haciendo uso de rsync como ejemplo. Dijo
que quera algo similar, mientras entraba en detalles acerca de una herramienta
para la gestin de parches de manera incrementa! y acumulativa.

En ambos casos, y en muchos otros, dese tener este libro acabado para reco-
mendrselo a toda esa gente que aunque posea experiencia y habilidades, quera
aprender a administrar Linux. Quizs usted tenga experiencias similares y le
hubiese gustado tener un libro como este a mano en aquellos momentos. Sospe-
cho que conversaciones parecidas a las que acabo de contar ocurren muy a me-
nudo en muchos lugares, incluso diariamente.
Cuando Andy Orara, y yo comenzamos a debatir acerca de un libro para 1a.
administracin de sistemas Linux, tenamos una idea ligeramente diferente de lo
que queramos hacer. Andy hablaba de un libro en el que cada captulo mostrar
a los usuarios los pasos para construir y desplegar servidores sin. entrar en deta-
introduccin introduccin

lies. l propona debatir primero acerca de los captulos y luego acerca de los Captulo . Administrando Apache: Proporciona una visin rpida de
pasos tcnicos. la popular combinacin Apache, MySQL y PHP (a la que junto con Linux

Despus, yo propuse que hiciramos de cada captulo un mdulo y as permi- se le llama servidor LAMP), incluyendo autentificacin SSL.

tir allector completar los mdulos que quisiera o que necesitase. A medida que el Captulos Clusters de carga balanceada: Extiende el captulo previo
7.
libro evolucionaba, sentamos que se estaba cumpliendo este objetivo. No es nece- de configuracin de Apache con el servidor de IP Virtual y Idirectord para
sario que lea este libro de principio a fin para convertirse en un administrador de ofrecer gran capacidad.
sistemas Linux. Simplemente, comience por donde le interese. Captulo 8. Servicios de red de rea local: Muestra cmo gestionar
Cuando yo empec a manejar Linux, la comunidad estaba compuesta en su usuarios y configurar elementos de red comunes, tales como DCHO y soft-
mayor parte por programadores y aficionados. No creo recordar ninguna lista de ware para pasarelas en redes de rea local (LAN).
discusin que se centrar en aplicaciones comerciales o de escritorio. Accedamos Virtualizacin de la empresa moderna: Muestra cmo de-
Captulo 9.
a internet mediante un demonio de inicio. No tenamos conexiones ni navegadores
finir Xen, VMware en un equipo Linux y luego aadir sistemas operativos
Web como que estn disponibles hoy en da.
los
invitados.
La gran mayora de la gente que yo conoca o eran administradores de su
Captulo 10. Scripting: Muestra algunas tcnicas bsicas para escribir
propio sistema o estaban aprendiendo. Me estoy refiriendo a una poca en la que
script potentes y robustos que pueden ahorrar mucho tiempo de adminis-
los usuarios de Linux eran unos 30.000 en todo el planeta, todava me sorprendo
tracin.
con la cantidad de gente que usa Linux a da de hoy sin tener la menor idea de
cmo escribir un archivo de configuracin. Los foros de Linux se llenan de perso- Captulo 11. Haciendo copia de seguridad de los datos: Presenta un
nas que preguntan qu tienen que hacer para conseguir que CLIPS o Samba fun- amplio rango de tcnicas para realizar esta funcin crucial, desde el rsync
bsico y el tar hasta el potente sistema Amanda.
cionen.
En gente mantiene debates acerca de detalles tcnicos de
las listas de correo, la Apndice. Bash scripts de ejemplo: Contiene unos cuantos shell Scripts
proyectos como Postfix, JBoss y Monit. Muchas personas an sienten curiosidad que nos han sido tiles para administrar sistemas y tambin proporciona
por aprender las grandes posibilidades de Linux como plataforma de aplicaciones. consejos a tener en cuenta a la hora de escribir tus propios scripts.
Si usted ya usa Linux a nivel de usuario, y quiere ir un paso ms ali, es decir,
quiere convertirse en administrador, este libro le ayudar en la transicin, puesto
que hemos escrito este libro pensando en usted.

Para ayudarle a sacar el mayor partido al texto y saber dnde se encuentra en


cada momento, a lo largo del libro utilizamos distintas convenciones:

Captulo 1. Requisitos para un administrador de sistemas Linux:


^ Las combinaciones de teclas se muestran en negrita, por ejemplo Con-
Repasa los objetivos del libro y qu se conseguir al leerlo. trol-A. Los botones de las distintas aplicaciones tambin se muestran en

Captulo 2. Configurando un servidor Linux multifuncin: Le inicia


en el manejo de servidores sencillos para Internet. Los nombres de archivo, URL y cdigo incluido en texto se muestran en
un tipo de letra monoespacial.
Captulo 3. El sistema de nombres de dominio: Muestra ios aspectos
bsicos para configurar servidores DNS primarios y secundarios. Los ments, submens, opciones, cuadros de dilogo y dems elementos
de la interfaz de las aplicaciones se muestran en un. tipo de letra Aria!
Captulo 4. Un entorno para Internet: lisa el software de
inicial listo
configuracin ISPConfig para introducirle en un conjunto de servicios con
los que podr practicar mientras lee el resto del libro. Nota: En estos cuadros incluye informacin importante directamente
se.

relacionada con el texto adjunto. Los trucos, sugerencias y comentarios afines


Captulo 5. Correo: Configura un servidor de correo Postfix con autenti-
relacionados con el tema analizado se reproducen en este formato.
ficacin SASL, un servidor POP y un servidor 1MAP,
Nos gusta Linux. De tocios los sistemas Unix y parecidos a Unix que hemos
usado, muchos ahora olvidados, Linux es nuestro favorito. Es una plataforma
,

servidora excelente, un buen sistema de escritorio y el centro en torno al cual


gira mucho de la innovacin del mundo informtico actual.
Linux es probablemente aspectos abarca de todos los sistemas
el que ms
operativos, desde sistemas pequeos telfono mvil hasta clsteres de
como un
computadores ms grandes que un edificio. Est presente en los campos de las
telecomunicaciones, sistemas embebidos, satlites, equipamiento mdico, siste-
mas militares y grficos por computador, y por ltimo, pero no por ello menos
importante, informtica de escritorio.
En un perodo de tiempo relativamente corto, Linux ha pasado de ser el pasa-
tiempo de un hacker finlands a un sistema avanzado de nivel empresarial res-
paldado por gigantes como IBM y Oracle. La base de usuarios ha crecido
considerablemente desde las 30.000 personas que haba en 1995 hasta los cien-
tos de millones que hay a da de hoy. Durante el boom de Internet en la dcada de
1 990, muchos administradores de Unix se
sorprendieron gratamente al descu-
brir que un Linux sobre un PC poda hacer las mismas tareas que carsimas esta-
ciones y servidores UNIX. Muchos administradores de Windows y de Novell vieron
que Linux poda manejar DNS, correo electrnico y servicios de archivos ms
eficientemente y con menos soporte humano que sus diferentes plataformas. El
crecimiento de Internet, y especialmente la Web, sirvi de combustible para la
rpida expansin del uso de los servidores Linux y la necesidad de personal para
gestionarlos.
Este libro es para administradores de sistemas Linux. No obstante, puede que
sea un veterano de Unix, un bravo MCSE o un estoico administrador de.
Requisitos para un administrador de sistemas Linux Requisitos para un administrador de sistemas Linux

mainframes. Pero est explorando un nuevo territorio


y necesita mapa y com-
ps. Algunos aspectos le sonarn familiares, pero otros sern una tierra sin ex-
plorar. Este libro cubre muchos temas que se acaban de aadir a la tendencia
Las personas que trabajan en Linux resuelven problemas. Un usuario medio de
actual, por ejemplo los clsteres de carga balanceada
y la virtualizacin. Linux puede levantar un pequeo servidor, obtener una conexin con una IP est-
El xito de Internet y del software de cdigo abierto est cambiando los nego-
tica en su casa, registrar un nombre de dominio y poner en marcha el servidor en
cios. Google, Amazon, eBay y otros han levantado granjas de servidores con
Internet. Si es de los que estn en esta categora, puede leer los otros temas del libro
hardware manejable y relativamente pocos administradores en comparacin con algunos, todo esto les parecer como
las instalaciones de PC y mainframes tradicionales. y ampliar sus posibilidades profesionales. A
escalar una montaa de 10.000 metros. Si no es uno de ellos, comience por cual-
Los conocimientos necesarios para desarrollar y mantener tales sistemas dis- quier parte. Como dice el refrn, come al elefante de una vez y luego saboralo.
tribuidos y las aplicaciones no se ensean en los colegios, sino que se aprenden de Quizs tenga certificaciones de otros sistemas operativos distintos a Linux.
la experiencia, unas veces ms amarga y otras ms dulce.
Aunque ya sabr aplicar parches y corregir fallos, aqu aprender a desplegar el
servidor Apache, a manejar su propio DNS o a cambiar Exchange por Zirnbra.
Nota: Mientras escribamos este libro hemos estado de forma constante Si solo quiere aprender o tiene la obligacin de aprender, necesitar ayuda
probando las ltimas distribuciones y herramientas,
y mantendremos para escalar la curva de aprendizaje de Linux. Para eso es exactamente para lo
nuestros experimentos hasta despus de que el libro est terminado.
que estamos: para ayudarle a explorar el sistema Linux sin tener que pasar por
Invitamos a los lectores a que visiten el sitio Web que hemos levantado por
experiencias traumticas
el libro, http://www.centralsoft.org, donde publicaremos actua-

lizaciones de los ejemplos, enlaces a nuevas


y tiles herramientas que
vayamos descubriendo y otros consejos.

Este libro resume pasos que tiene que seguir para desplegar servidores
los
Sobre este libro
autnomos. Si necesita levantar un servidor de correo, crear un servidor Web
con capacidad para blogs o configurar una pasarela para su LAN, puede dirigirse
Los libros de administracin de sistemas suden ser fcilmente predecibles. a la mitad del libro. No tiene que leer "Administracin de sistemas Linux" desde el
Ensean cmo gestionar usuarios, sistemas de archivos, dispositivos, procesos, principio hasta el final.
impresoras, redes, etc. Pero no indican qu tiene que hacer cuando surge un pro- Comenzaremos explicando, paso por paso, la manera levantar un servidor
blema. Si su sitio Web se convierte en popular, tendr que aprender rpidamente captulo siguiente. Puede elegir ei camino que le convenga, desde
Linux en el
a usar servidores proxy, diferentes niveles de cach, balanceado de carga, auten-
crear un ciuster para servicios Web o reforzar los servidores gracias a ia
tificadn distribuida y otros detalles complejos. Si aade una base de datos, ne- virtualizacin, hasta configurar un servidor para una red de rea local.
cesitar saber cmo ampliarla y aprender a evitar los ataques de inyeccin SQL. Hacer funcionar un sistema operativo moderno es muy barato. Puede confi-
De noche a la maana, el sitio se ha convertido en una misin crtica, y deber
la
gurar un sofisticado centro de aprendizaje sobre hardware que en muchos sitios
ser capaz de hacer copias calientes en sistemas 24 x 7.
consideran obsoleto y lo regalan. Nosotros comenzamos con una caja que conte-
Si ya ha realizado muchos simulacros de incendios, estar cansado de hacerlo
na una CPU de Intel dos generaciones ms antigua que los modelos actuales, le
todo de la manera ms difcil, pero tendr que hacer frente a nuevos retos tcni- pusimos una versin antigua de discos duro y memoria, y una versin sin extras
cos prcticamente a diario y con la ayuda de muy pocas fuentes de ayuda. La
y gratuita de Linux.
documentacin tcnica, ya sea de software comercial o software libre, rara vez
tiene que ver con la tecnologa, y suele pecar de ser demasiado abstracta. Por
ejemplo, ios servidores de directorios de cdigo abierto se han convertido en algo
importante para gestionar ordenadores, usuarios y recursos. Los productos co-
merciales suelen cumplir los protocolos del RFC original, pero la buena docu- Los libros tcnicos han adquirido popularidad a medida que Internet ha ma-
mentacin para proyectos abiertos es sorprendentemente escasa. durado. Para conseguir un libro de xito hoy en da, el autor tiene que proporcio-
22 Requisitos para un administrador de sistemas Linux Requisitos para un administrador de sistemas Linux

nar un valor aadido al lector. Una historia interesante sobre uno de los prime- que hay en el planeta. Segn el Lawrence Livermore National Laboratory de
ros sitios de comercio electrnico ayuda a explicar qu debera ofrecer un libro. Livermore (California), Linux se ejecuta en 10 de sus sistemas ms robustos,
Una compaa que fabricaba tartas de queso puso un anuncio en los primeros todos incluidos entre la lista de los 500. Entre estos sistemas se incluye el BlueGene/
das de la Web. Segn la historia, pasaron varios meses sin que la compaa L, el supercomputador ms potente, y el Thunder, que actualmente
ocupa el

recibiera un pedido. En un movimiento mida comn, el presidente de la compa- puesto diecinueve (http: //www. topBOO .org/list/2006/11/100).
a public la receta secreta de la tarta de queso. Al cabo de unas horas, su lnea
de telfono estaba colapsada. La gente empez a pedir muchos pasteles de queso.
Se dieron cuenta de que se necesitaba un esfuerzo considerable para hacer sus
propios pasteles y por tanto vieron el valor de comprrselos a la compaa. Los administradores Linux estn muy solicitados. Para que se haga una idea de
Muchos de los ingredientes de este libro han sido recopilados de Internet, de que se espera de ellos, hemos recopilado una pequea seleccin de algunas de las
listasde correos, foros, grupos de discusin, mientras que otros han sido extra- miles de tareas que un administrador Linux puede desempear segn un sitio

dos de libros, revistas y la experiencia de amigos. Nosotros solucionamos mu- Web de una agencia nacional de empleo. He aqu algunas de las responsabilidades:
chos problemas cuyas soluciones estaban completamente indocumentadas antes Administrar y gestionar un gran entorno de servidor Linux, con nfasis
de aparecer este libro, y ahora se las ofrecemos.
en el rendimiento, la monitorizacin, la personalizacin y la gestin.
Muchos proyectos
excelentes tienen una documentacin inadecuada. Los 41
Supervisar el diseo fsico de las bases de datos, su administracin y su
desarrolladoreshan trabajado mucho para ofrecer un excelente software libre, documentacin.
pero no una documentacin adecuada para el cdigo por varias razones: falta de
tiempo, falta de recursos, falta de inters,
Ofrecer soluciones a los problemas que puedan surgir en la red, dar sopor-
la barrera del lenguaje, etc.
te a la ampliacin de servicios y la monitorizacin proactiva de sistemas
Junto con nuestros lectores, editores y revisores, esperamos que esta tenden-
crticos.
cia disminuya, al menos en. esta pequea parcela del mundo de la informtica.
Ofrecer consejos y aportar soluciones tecnolgicas a la organizacin; en-
trenar y tutorizar a los administradores noveles.
Ofrecer soporte tcnico diario y resolver consultas relativas al hardware y
al sistema operativo; administrar la infraestructura del servidor Linux para

Hace unos cuantos aos, la mayora de los administradores de sistemas Linux mantener la estabilidad, as como maximizar la eficiencia del entorno.
dedan que no haba escogido esta carrera, sino que. Linux es haba escogido
ellos Instalar, configurary solucionar los fallos relativos al hardware, perifricos
a ellos. En aquellos tiempos, Linux era como un Unix adolescente. La mayora de equipamiento necesario para mantener la integridad del sistema; ofre-
y
los administradores de sistemas Linux aprendan el funcionamiento en una esta- cer soporte para ampliaciones.
cin de trabajo y en pequeas redes. Linux hered algunos servidores de Unix
Ofrecer soporte efectivo de primer/segundo nivel para entornos Linux a
(BINO, Sendmail, Apache), pero tambin software de oficina algunas aplicacio-
y travs de sus servidores.
nes. Hoy en da, la administracin de sistemas Linux involucra a miles de paque-
Gestionar todos los aspectos relativos a la integridad del entorno, inclu-
tes y ia interoperabilidad con otros sistemas operativos.
yendo la seguridad, la monitorizacin (de 1a capacidad y del rendimiento),
Quin necesita administradores Linux? El centro para ciencias de la compu- el control de cambios v la gestin del software.
tacin de la NASA (NCSS)
y el Centro para vuelos espaciales Goddard. Los clsteres
para computacin de alto rendimiento basados en Linux se disean para mejorar Interactuar con otros grupos de soporte interno como el de Control de
el tiempo de respuesta de aplicaciones, que van desde el estudio del
Cambios, Desarrollo de Aplicaciones, Ingeniera, Administradores de Ba-
tiempo y del
cambio climtico hasta la simulacin de fenmenos astrofsicos. Linux permite a ses de Datos, Servicios Web, Almacenamiento, Seguridad, Operaciones y

la arquitectura de la NCSS soportar hasta 4 billones de operaciones Centros de rdenes.


en coma flo-
tante por segundo (TFLOPS) en su configuracin de alto rendimiento. Linux es el 8 Administrar servicios de infraestructura como: DN5, NIS, LDAP, FTP,
sistema operativo que ms supercomputadores hace funcionar en el mundo. De SMTP, Postfix/Sendmaii, NFS, SAMBA, y servidores de aplicaciones y de
hecho, a da de hoy da soporte a un 75 por 100 de los 500 supercomputadores bases de datos, con nfasis en ia automatizacin y en la monitorizacin.
Requisitos para un administrador de sistemas Linux Requisitos para un administrador de sistemas Linux

Linux es ahora una plataforma estndar encuadran dentro de la categora de "habi-


y el talento no abunda. S quieres El resto de las responsabilidades se
aprender Linux podrs mejorar tu salario, como as lo evidencia la creciente de- lidades ligeras". En el pasado, nadie esperaba que un administrador de sistemas
manda de trabajadores con conocimientos de administracin Linux. aprendiera a funcionar corno enlace con otros grupos internos de soporte como
el de Desarrollo de Aplicaciones, Ingeniera, Administradores de Bases de datos o

Servicios Web. Sin embargo, un administrador de sistemas no es slo un tcnico


con conocimientos de algunos sistemas misteriosos, sino el miembro de un gru-
Pregunte a distintos gestores de sistemas de informacin sobre el papel que po capaz de tomar decisiones.
debe jugar el administrador del sistema y obtendr una gran variedad de res- Uno normalmente consigue unas habilidades bsicas y espedaiizacion.es des-
puestas. El mercado se ha visto sorprendido por el hecho de que la mayora de pus de estudiar los aspectos bsicos. Quizs cubramos algunas de esas habilida-
estos gestores carecen de conocimientos acerca de Linux. Ellos no saben qu es lo des en este libro, pero creemos que ese no es el objetivo. Otros libros de O'Reilly y
que deberan saber los profesionales de Linux, y los profesionales de Linux, rara el tiempo le ayudarn a adquirir esas habilidades. Por ahora, le introduciremos
vez entienden a estos gestores. en el rea de la administracin de sistema, puesto que es la que mayor creci-
Muchos gestores de sistemas de informacin que entienden Unix quieren adap- miento experimenta y donde no parecer existir una adecuada documentacin. Al
tar a los administradores de
Linux a los estndares de Unix. Esto no sude funcio- contraro que en otras disciplinas de informtica y de ingeniera, pocos centros
nar. Aunque los administradores Unix crean que la migracin a Linux es fcil, ofrecen cursos de Administracin Linux, dejando incompletos ciertos programas
siempre suelen descubrir que no es as. Los administradores Linux tienen menos de grado. Por lo que si usted quiere aprender administracin de sistemas Linux,
problemas para adaptarse a Unix que al contrario. Una explicacin es que los tiene que buscar materiales y cursos fuera de la universidad. Pero una gran parte
administradores Linux tiene un conocimiento mucho ms amplio de sus siste- del material existente no incluye lo que los expertos en Linux consideran ios
mas, debido a la naturaleza del software del cdigo abierto. asuntos ms importantes.
Las tareas de los administradores de sistemas muy a menudo involucran a La mayora de los administradores Linux son autodidactas, es decir, han apren-
Internet. La mayora de las transacciones estn relacionadas con el correo
y la dido por s solos. Sin embargo, cuando estos administradores autodidactas han
gestin de sitios Web, adems de las telecomunicaciones la movilidad. El correo conseguido un trabajo, normalmente no han podido desarrollar su labor correc-
y
electrnico representa 70 por 100 de todo el trfico de Internet. Hoy en da, las
el tamente, porque no saban todo lo que tenan que hacer. Esta es un rea a la que
aplicaciones de banda ancha como la Voz sobre IP (VoIP) Administracin de sistemas Linux puede contribuir, ayudndole a mejorar su
y otras formas de comu-
nicacin, incluyendo la mensajera instantnea, han incrementado el trfico en productividad a la hora de acometer un amplio rango de tareas de manera rpida
detrimento del correo electrnico. Pero a pesar de los protocolos las aplicacio- eficiente.
y y
nes multimedia, Internet sigue siendo el dominio principal de Linux.
Continuemos analizando las responsabilidades laborales descritas en la sec-
cin previa. La ultima tarea ("Administrar servicios de infraestructura") puede
darle una idea del conjunto de habilidades necesarias en Linux. Las empresas
quieren administradores de sistemas que puedan manejar "infraestructuras de Una de las primeras cosas que los gestores de tecnologas de la informacin
en las tecnologas de internet involucradas. De la lista de com-
servicios". Fjese
deberan saber es que Linux no es Unix. Aunque Linux puede ejecutar la gran
ponentes Linux que es necesario saber, la mayora de las tareas involucran DNS, mayora de los programas Unix, tambin puede ejecutar un amplio rango de
LDAP, FTfJ SMTP y Postfix/Sendmail. Cubriremos la mayor parte de estos com- aplicaciones sobre redes pblicas y privadas.
ponentes en prximos captulos.
Los administradores de Linux pueden configurar las distribuciones escogien-
Las otras descripciones de trabajos se ajustan ms a la categora de necesida- do entre un gran nmero de componentes que hacen trabajos similares. Por ejem-
des internas de la empresa. Entre ellas se incluyen el soporte para el diseo de plo, en casi todas las distribuciones Unix, Sendmail es la nica opcin como agente
servicios escalables, soporte tcnico
y consultor para el entorno del hardware y de transferencia de correo (MTA). Pero con Linux, puede elegir entre muchos
del sistema operativo. La mayora de los administradores de sistemas Linux de-
MTA, dependiendo de si quiere una aplicacin para trabajo colaborativo, un
beran poseer habilidades para ofrecer estos servicios, pero stos estn fueran del backbone de correo a gran escala o simplemente una aplicacin Web para mane-
alcance del libro porque no son de naturaleza tcnica. jar formularios del tipo "Contacte con nosotros".
Requisitos para un administrador de sistemas Linux

Una prueba ms de la flexibilidad de Linux es que es el primer sistema operati-


vo que IBM ha escogido para funcionar en todas sus plataformas hardware, desde
las series de servidores Intel xSeries o las pSeries
y las iSeres, hasta el S/.390 y los
mainframes zSeries. Si quiere un administrador de Linux y usa grandes sistemas
IBM, su candidato debe saber arquitectura de mainframes y estar familiarizado
con trminos como DASD para almacenamiento en disco duro, 1PL para arrancar
el sistema, "catalog" para un directorio
y "lista de comandos" para una interfaz de
comandos. Pero no sea demasiado exigente con ellos. Una vez asistimos a un se-
minario de dos das con un grupo de administradores de Linux, que se estuvieron
en clase un da y luego empezaron a desplegar Linux en ordenadores IBM de la
serie zSeries. Si hay algo que la gente de Linux puede ofrecer, es que aprenden
rpidamente, se adaptan rpidamente y tienen unos conocimientos que no po-
seen otros tecnlogos. Pueden aprender a manejar un sistema Microsoft en me-
nos tiempo que lo que tardara un MCSE en aprender una simple tarea de Linux,

Hay una diferencia real entre leer algo y hacer algo. Por ello muchas escudas
disponen de laboratorios para impartir las clases. Si usted quiere aprender admi-
nistracin de sistemas Linux, necesita un servidor. As es que, la primera tarea de
Sabemos que no le gusta el aprendizaje a paso lento ni los contenidos densos
este libro consiste en desplegar un entorno bsico. Una vez desplegado, podr
(de hecho estamos sorprendidos de que haya llegado hasta este punto del captu-
disfrutar de una buena base para practicar y aprender Linux.
lo), por lo que empezaremos lo ms rpido posible. Queremos proporcionar un

servidor de trabajo que pueda realizar muchas de las tareas que necesita apren- El sistema operativo Linux se parece al eje de un coche que puede tener una

der y usar. Por este motivo, empezaremos a configurar un servidor listo para gran variedad de funciones dependiendo del chasis y de otras caractersticas. Es
Internet en el siguiente captulo. Aprender a desplegar un servidor Web como si al aadir servicios como correo electrnico o bases de datos, el sistema
y de
correo sin importar para qu sea el servidor (incluso aunque est destinado al fuera un personaje distinto. Usted necesita un servidor Web, una plataforma de
soporte de una LAN) y aquellas herramientas que le sern tiles para comenzar. desarrollo, una pasarela o un servidor de archivos y de impresin? Sea lo que sea,

El resto del libro ampla algunos de los temas e introduce otros con los que se
necesita un ncleo, que es lo que este captulo describe. Vamos a comenzar con un

encontrar casi a diario. Administracin de sistemas Linux es una combinacin servidor que funcione en Internet y que pueda albergar sitios Web. Por qu? Por-
de recetario de cocina y gua de viajes; usted podr disfrutar de su desayuno que es posible adaptar un servidor de Internet a muchas tareas adicionales, como
mientras aprende. Normalmente, explicaremos los conceptos al principio del ca- lagestin y autentificacin de usuarios, la comparticin de archivos y de impresoras,
elmanejo de correo local y el ofrecimiento de acceso remoto. Puede ofrecer facilida-
ptulo y luego los pasos y las aplicaciones concretas. Si slo quiere seguir paso
por paso las instrucciones, puede hacerlo. Podr resolver su problema despus. Si des para el alojamiento Web, configurarlo y empezar a ofrecer servicios Web. In-
cluso puede convertirlo en su propiositio, si su ISP le facilita una direccin IP esttica.
sigue nuestros pasos, le aseguramos que ir en la direccin correcta. Adelante!
Configurar un servidor para Internet cambiar su perspectiva de la inform-
tica. Desplegar una red de rea extensa (WAN) es distinto de usar Linux como
equipo de escritorio, como servidor de archivos y de impresin o como cortafuegos.
Las primeras veces, los administradores se confunden al configurar el servi-
dor, debido a que no estn acostumbrados con los trminos y los conceptos. No
tendr la interfaz grfica del sistema X Window y tendr que usar comandos en
lugar de hacer clic sobre iconos. Su trabajo se har en modo consola, desde la
interfaz de lnea de comandos.
Configurando un servidor Linux multifuncin Configurando un servidor Linux multifuncin

Nota: Como parte de nuestra estrategia para ensear administracin, mos usar una distribucin estable de Linux. Las principales distribuciones co-
le
ensearemos cmo disponer de una herramienta basada en Web para el merciales (Red Hat Linux y Novell Suse Linux) tienen precios que los alejan de la
sistema en el prximo captulo (los proveedores de servicios mayora de los usuarios, pero puede obtener Deban gratis. Tambin Red Hat y
usan esta
herramienta basada en Web para gestionar los servidores Linux que
SUSE usan herramientas de gestin propietarias que crean dificultades para trans-
alquilan a los clientes). Por lo que no estar limitado a
una pantalla en ferir conocimiento Linux.
blanco y negro.
Puede aprender ms sobre el comportamiento estndar de Linux usando Deban
que usando SUSE o Red Hat.
Si sigue las instrucciones de este captulo, obtendr un marco
para hospedar una conexin
sitios Web que podr adaptar a otros propsitos. Su sistema dispondr de: Para configurar un Servidor de internet sobre Linux, necesitar
a internet y una direccin IP esttica. Si no puede conseguir una direccin P
s
Un servidor Web (Apache 2.0.x). esttica, puede configurar el sistema con la direccin cedida por su ISP y confi-
s
Un servidor de correo (Postfix). gurarla estticamente. Asegrese de que sabe el tiempo que dura dicha direccin,
Un servidor DNS (BINE) 9). por si necesita cambiarla mientras el sistema est ejecutndose.
0
Un servidor FTP ProFTPD
( )
Tambin necesitar un ordenador, con al menos una CPU Pentium II con un
8
Agentes de transferencia de correo (POP3/POP3/IMAP/IMAP).
mnimo de 256 MB de RAM y 10 GB de disco duro. Obviamente, una CPU ms
moderna y memoria adicional mejorarn el rendimiento.
8
Analizador para estadsticas Web.
Recomendamos usar un
Este captulo se basa en la versin estable de Deban.
Aunque hay muchas formas de configurar un servidor Web remoto, seguir CD con ncleo Netlnstall. El sitio Web de Debian (http //www deban org)
el :
.

que proporcionamos es una buena base para iniciarse en Linux.


las instrucciones ofrece imgenes de CD descargabies.
Una vez que haya aprendido a instalar, tendr la posibilidad de configurar ios
servidores a su medida.

Nota: Durante el proceso de instalacin, probablemente ver


comandos y
conceptos con los que no est familiarizado. Le guiaremos para
que no Asumimos que sabe cmo hacer una instalacin de red de Linux. Slo necesi-
introduzca datos sin pensarlo antes. Aunque intentaremos
explicar todo lo tar unos cuantos pasos para configurar su instalacin base.
posible el proceso de instalacin, probablemente no quedar
satisfecho con
la informacin ele este captulo. Despus de que inicie el equipo con el CD-ROM de arranque de Debian, ver
Es difcil para alguien retener informacin compleja en una primera lectura. una pantalla de autentificarin. Asegrese de introducir Iinux26 para as traba-
As es que, aunque aconsejarle los comandos a
introducir puede parecer
jar sobre la versin 2.6 del kernel que es ms reciente que la antigua versin 2.4.
ineficiente, le permitir retener suficiente informacin
sobre la materia que programa de instalacin le guiar a travs de una serie de pantalla de insta-
El
ms tarde podr asimilar. Cubriremos cada terna con gran detalle en los lacii.Cuando llegue a la pantalla Configure su red, Debian primero sugiere con-
siguientes captulos, y esta experiencia le ayudar a seguir el curso que figurar su red con DHCP. Puede hacerlo si dispone de DHCP. Si no es as, Debian
propone el libro.
por defecto le mostrar una pantalla que le permite configurar la red de manera
manual. Se le preguntar el nombre de host que quiere dar al servidor, un nom-
Usted y su servidor se encuentran en la puerta de un nuevo mundo, bre de dominio, una pasarela, una direccin IP, una mscara de red y un nombre
el de
Linux, as es que comencemos.
de servidor. Si tiene registrado un dominio y una direccin IP esttica, est listo
para continuar. Si no tiene registrado un nombre de dominio, necesitar uno.
Ahora que ya ha configurado su red, puede continuar con las tareas de insta-
lacin hasta que complete la instalacin bsica. El script de instalacin de Debian
le guiar a travs de las siguientes secciones.
Puede usar casi cualquier distribucin de Linux para configurar pantalla de particionamiento de disco. Para ios pro-
un servidor Seguidamente, llegar a la
Web. En este ejercicio, usaremos Deban. Hemos elegido Deban particin con punto de montaje / (barra
porque quere- psitos de este libro, cree slo una el
Configurando un servidor Linux muitifuncin Configurando un servidor Linux muitifuncin

invertida) y una particin swap. Elija la opcin que pone todos los archivos en tarde en este captulo. Mientras tanto, cuando llegue a la pantalla que dice Con-
una particin. Finalmente, elija la opcin de finalizar el particionamiento y es- figurando Exim v4, elija la opcin Sin configuracin. Luego elija S cuando el script
criba los resultados en el disco. ie pregunte "Realmente quiere dejar el sistema de correo sin configurar?"

Finalmente, en la ltima pantalla que tiene que ver con Exim, introduzca el

Nota: Puede obtener un nombre de dominio desde multitud de fuentes desde nombre admin y el correo electrnico del root y del administrador de correo.
3 USD. Busque en internet las palabras "registro de dominios". Ver una
lista de lugares. Muchos vendedores ofrecen sus servicios a precios bajos y
otros los ofrecen gratis. Necesitar dos servidores DNS registrado para [
;

,
yv MTA: Sendfnaii y Alternativas ' >
'

obtener un nombre de dominio inicialmente. Tambin puede usar otro


El proceso de instalacin por defecto de Deban gira en tomo a Exim, aunque
nombre de dominio si no tiene un servidor fsico que ie ofrezca un servidor !

otras distribu iones lirmx: usan Srndnoil por defecto. Snuimuil es de hecho
de nombres secundario. Cada dominio que registre necesita un servidor DNS
i

'
d andar MIA, comerlo prueban las primeras disinbuciom'.s ib i.mux.
ixi
primario y una copia o un servidor DNS secundario.
!
. todos ios procesos en thuix que estn vrdacoi jados con fi correes
as
involucran archivos de configuracin.. Sendrmdl, y la m a y es ra. de las
Nota: La instalacin bsica de Deban que estamos usando tiene tos secciones api unciones de software libre esperan que Peodmati este instalando me!
.

distintas. La primera instala lo que algunos llaman el motor GNU/Linux, i


sistema operativo.
que le permite arrancar el disco duro y obtener una pantalla de root. Adems i Probablemente sea una locura r c e rn p aza r S c k rn a por otro MIA. Si instala
I i i i i

transfiere archivos desde el CD-ROM hasta el disco duro. I Red Hat, .Smdruaii se instala por defecto. Sin embargo. Ral la! \ Adoso
I
vienen con un programa que permite ai ostia no a mina; a Rost ix aunque
i

debe hacerse de manera manual


'

Una vez que primera seccin termina, le pide que extraiga el CD-ROM que
'

la j
;
.

us en Desde este punto en adelante, la instalacin contina usando


la instalacin. i
Los gestores del proyecto Deban eligieron Lxim como d MIA por defiri
porque su creador le otorg la licencia pblica CPL. Ai igual que Porihv
los archivos almacenados en el disco duro.
'

? Exim es un sustituto para Sendmail.


Ahora continan unas cuantas pantallas de instalacin, que le solicitarn que
. 1loy en cha, la prctica, comn es usar Post hx, por muchas razone s que ms
reinicie el ncleo para finalizar la instalacin.
taro- explicaremos De todas formas usted no estropear su sistema a!
Despus de reiniciar, Deban le pedir que aada un usuario sin privilegios reemplazar. Ex.im porlbstfix. De hecho, poda desca gar.Posthx desde los
durante la instalacin, que le permitir autentificarse y usar el comando su para ;
'

repositorios de Deban.
convertirse en root. Por razones de seguridad, los administradores de sistemas
tienen la prctica comn de no entrar en el sistema como root, a menos que
necesiten recuperar el sistema tras un fallo.
Ponga el nombre de Administrador y el ID admin. No use la misma contrase-
Cuando finalice la instalacin, debera acceder al sistema desde la consola re-
a para admin y para root. Usaremos el usuario de ID admin en otros captulos.
mota de su escritorio. Recomendamos que realice las labores de administracin
Cuando ponga el cursor
llegue a la pantalla de seleccin de software Deban,
desde otro sistema (incluso desde un porttil), porque un servidor seguro nor-
en el recuadro Servidor de correo, pulse la barra de espacio y permita que el
malmente se ejecuta en lo que se llama modo headless, es decir, que puede ejecu-
sistema nstale los paquetes por defecto hasta que llegue a la opcin donde se vea tar aplicaciones sin Acostmbrese a administrar su servidor
monitor y sin teclado.
cliente libe.
de esta forma, como si estuviera en un sitio en produccin. En la mquina remo-
Debera instalar el cliente libe con el buzn de correo de Unix en lugar del ta necesitar solamente un cliente SSH, incluido en todas las distribuciones Linux
soporte maildir. Los buzones de correo Unix mantienen todo el correo en un
y que puede descargarse para otros sistemas operativos.
archivo simple, mientras que maildir mantiene cada mensaje en un archivo dis-
La siguiente salida se produce cuando usa por primera vez SSH en su nuevo
tinto. Los buzones de correo de Unix son ms fciles de configurar, por lo que de
servidor Linux:
momento ser con los que trabajemos.
$ ssh admin@serverl.centralsoft.org
Deban tambin querr que configure Exiin como agente de transferencia de
The authenticity of host 'serverl.centralsoft.org (70.253.158.42)' can't
correo (MTA), pero no lo haga. Sustituiremos Exim con Postfix un poco ms be established.
32 Configurando un servidor Linux multifuncin Configurando un servidor Linux multifuncin

RSA key fingerprint is 9f 26 c7 :cc f2 f'6 :da: 74 :af fe: 15 16 97 :4d:b3 e6


: : : : : : : : . # /etc/network/interf aces -- conf iguration file for ifup(8), idown(8)
Are you -sure you want to continu connecting (yes/no) ? yes # The loopback interface
Warning: Permanently added serverl centralsoft org, 70 253 158 42
' . . . (RSA) . . auto lo
i face lo inet loopback
to the list of known hosts.
Password: enter password for admin user here # The first network card - this entry was created during the Debian
Linux serverl 2.6.8-2-386 #1 Thu May 19 17:40:50 JST 2005 686 GNU/ Linux # instaliation
# (network, broadcast, and gateway are optional)
The nrograms inciuded with the Debian GNU/Linux system are free software auto ethO
the exact distribution terms for each program are described in the iface ethO inet static
individual files in /usr/share/doc/*/copyright address 70.153.258.42
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent netmask 255.255.255.248
permitted by applicable law. network 70. 153. 258.
Last login: Sun Dec 25 19:07:38 2005 from 70.255.197.162 broadcast 70.153.258.47
admin@serverl ~$ : gateway 70.153.258.46

Llegados a este punto, ha establecido una conexin remota y puede realizar Despus de editar /etc/network/interf aces file, reinicie la red introdu-
ciendo esto:
tareas como si estuviera delante del monitor de su servidor. Si lo desea, puede
quitar cualquier monitor, teclado y ratn que haya conectado al servidor. # /etc/init . d/networking restart

Necesitar editar /etc/resolv conf y aadir nameservers para resolver los


.

nombres de host relacionados con la correspondiente direccin IR Aunque no


hemos configurado nuestro propio servidor de nombres, lo haremos ms tarde
en este captulo. En este punto, simplemente configuraremos un servidor DNS
Si us DHCP durante la instalacin de Debian, ahora debera configurar su
mnimo. Los otros servidores de nombre deberan especificar la direccin IP de los
servidor con una direccin IP esttica, por lo que podr realizar el test necesario
servidores DNS ofrecidos por tu ISR Nuestro resolv. conf quedara as:
como se explica ms tarde en este mismo captulo. Si usted tuviera una direccin
IP pblica configurada como esttica, puede saltar a la siguiente seccin. search server
nameserver 70.153.258.42
Si instal Debian con un cliente DI1CP para su router o para su proveedor de nameserver 70.253.158.45
acceso a Internet, necesitar reconfigurar la red. Esto supone una leccin valiosa nameserver 151.164.1.8
si quiere explorar la configuracin de red de Linux.

Para cambiar la configuracin y usar una direccin IP esttica, necesitar con- Nota: Asegrese de usar servidores DNS que funcionen con su dominio; en
vertirse en root editar el archivo /etc/network/interf aces de acuerdo a
y caso contrario, su servidor DNS no indicar quin es la autoridad para su
sus necesidades. Como ejemplo, vamos a usar la direccin IP 70. 153.258.42. r dominio.

Nuestro archivo de configuracin comienza as:


Ahora edite /etc/ hosts y aada su direccin IP:

# /etc/network/interf aces -- conf iguration file for ifup(8), ifdown(8)


# The loopback interface 127.0.0.1 localhost localdomain
. localhost serverl
auto lo 70.153.258.42 serverl.centralsoft.org serverl
iface lo inet loopback
# The first network card - this entry was created during
the Debian
Nota: Ignore la informacin IPv6 en el archivo /etc/hosts. Le mostraremos
# instaliation
cmo configurar el servidor IPv6 ms adelante.
# (network, broadcast, and gateway are optional)
# The primary network interface
iface ethO inet dhcp Ahora configure el nombre de host, introduzca estos comandos:
Para aadir la direccin IP 70.153.258.42 a la interfaz ethO, debe cambiar el
# echo serverl.centralsoft.org > /etc/hostname
archivo para que quede as (deber preguntar por esta informacin a su ISP): # /hin/hostname ~F /etc/hostname
34 Configurando un servidor Linux multifuncin Configurando un servidor Linux multifuncin 35

mismos comandos independientemente de cmo configu-


Necesitar usar los Pulsando Y completar la instalacin de los archivos adicionales. Luego, ha-
rara la red durante la instalacin, sustituyendo su nombre de dominio por br que eliminar los servicios que no vaya a usar. Ejecute el siguiente comando y
serverl .cent ral soft org. Luego, verifique que ha configurado su nombre
.
ver una salida como la siguiente:
de host correctamente ejecutando el comando hostname:
# apt-get remove Ipr nfs-common portmap pidentd pcmcia-cs \
~$ hostname pppoe pppoeconf ppp pppconfig
serverl Reading Package Lists... Done
~$ hostname ~f Building Dependency Tree... Done
serverl centralsof t org
. . Package pcmcia-cs is not installed, so not removed
The following packages will be REMOVED:
Si obtiene este resultado, est listo para ir a la siguiente seccin. De no ser as, lpr nfs-common pidentd portmap ppp pppconfig pppoe pppoeconf
0 upgraded, 0 newly installed, 8 to remove and 0 not upgraded.
revise el archivo /etc/hostname. Debera ser parecido a esto:
Need to get OB of archives.
After unpacking 3598k.B disk space will be freed.
#less /etc/hostname
Do you want to continu? [Y/n] Y
serverl
(Reading database ... 22425 files and directori.es currently installed.)
Removing lpr . . .

Oops. Debera leer atentamente serverl centralsof t org. Puede modifi-


. .
Stopping printer spooler: Ipd .

carlo ahora. Removing nfs-common . .

Stopping NFS common Utilities: statd.


Removing pidentd . .

Removing, portmap . .

Stopping portmap daemon: portmap.


Removing pppoeconf . . .

Removing pppoe . .

Comenzamos con paquetes Deban que los desarrolladores colocan en su


ios
Removing pppconfig . .

Como indicamos anteriormente, necesitamos hacer al-


distribucin por defecto. Removing ppp . .

gunos cambios, sobre todo para hacer uso de Posftix. Aunque podra pensar que Stopping all PPP connections done . . .

estamos relegando a un segundo plano el trabajo hecho por el equipo de Deban,


este no es el caso. Nota: Asegrese de revisar los comandos que introduzca. Si comete un error,
equipo Deban ha elegido instalar, por defecto, servicios apropiados para
El Deban le indicar que no puede encontrar el archivo en cuestin. En este
una LAN como el NetworkFile System (NFS). Pero nosotros estamos poniendo el caso, simplemente reintroduzca apt-get, especificando slo el nombre del
paquete. Desde que haga cambios en el paquete de la base de datos, necesita
servidor en Internet, por lo que eliminaremos NFS y otros servicios, mientras
cambiar los Scripts que se ejecutan cuando se arranca. Use los siguientes
que aadiremos otros como OpenSSL. k comandos para modificar los Scripts de inicio:
Para obtener todos los archivos necesarios para este captulo, ejecute el si-
guiente comando:
# update-rc.d -f exim remove
Removing any system startup links for /etc/init d/exim . ...
# apt-get install wget bzip2 rdate fetchmail libdb3++-dev \ # update-inetd --remove daytime
unzip zip neftp xlispstat libarchve-zip-perl \ # update-inetd --remove telnet
zliblg-dev libpopt-dev nmap openssl lynx fileutils # update-inetd --remove time
# update-inetd --remove finger
Ver a Deban descargar archivos en su consola. Luego, la descarga finalizar # update-inetd --remove talk

y ver un mensaje que le preguntar si desea continuar: # update-inetd --remove ntalk


# update-inetd --remove ftp
0 upgraded, 42 newly installed, 0 to remove and 0 not upgraded. # update-inetd --remove discard
Need to get 12.2MB of archives.
After unpacking 35.8MB of additional disk space will be used. Ahora necesita reiniciar inetd, que es el proceso servidor para, los servicios
Do you want to continu? [Y/n] estndares de Internet, inetd normalmente se lanza al arrancar, pero como ha
Configurando un servidor Linux multifuncin Configurando un servidor Linux mutifu ncion

cambiado ios servicios cid sistema, necesita reiniciarlo para que pueda descubrir servidor, aadir una facilidad para cuotas que podr usarse despus. Primero,
ios nuevos servicios del archivo de configuracin. El comando inetd acepta un instala los paquetes de cuotas usando apt-get:
parmetro que apunta al archivo de configuracin listando los servicios que ofrece.
# apt-get install quota quotatool
Pero si no se proporciona un parmetro por lnea de comandos, inetd lee la
informacin de configuracin del archivo /etc/ inetd conf que sirve para nues-
.
,
Le aparecer una pregunta como esta:
tros propsitos. El comando de actualizacin de inetd almacen nuestros cam-
bios en este archivo. Para reinicar inetd usando el archivo de configuracin por Enabie this option if you want the warnquota utility to be run daily
defecto, introduzca: to alert users
when they are over quota.
# /etc/init d/inetd reload
.
Send daily reminders to users over quota?
<Yes> <No>
Ver el siguiente mensaje en su consola:
Aqu debe escoger <No>.
Reloading internet superserver: inetd Deban instalar y configurar los dos paquetes, pero usted tendr que editar
/etc/fstab para activar las cuotas en los sistemas de archivos que desee. Debi-
do a que nuestro sistema tiene una nica particin para todos los archivos de
usuario, puede aadir las opciones usrquota y grpquota a la particin con el
punto de montaje /:
El servidor Web Apache
ofrece a Linux la posibilidad de ofrecer alojamiento
# /etc/fstab: static filesystem Information.
su servidor puede alojar varios sitios Web con nombres de domi-
virtual, es decir,
#
nio que difieren del nombre del servidor fsico. En el archivo de configuracin del # <fiiesystem> cmount point> <type> <opt.ions> <dump> <pass>
servidor Web, puede definir diferentes dominios usando clusulas de alojamiento proc /proc proc defaults 0 0

virtual. Por ejemplo, incluso aunque el dominio usado en este libro es central
/dev/sdal / ext3 def aults errors=remountro,
,

usrquota grpquota 0 1
soft org, podramos tener mothersmagic com, wildbills info u otro do-
. .
/dev/sda.5
,

none swap sw 0
minio que registremos y usemos con la misma direccin IP. Cubriremos este /d.ev/hdc /media/cdromO iso9660 ro, user, noauto 0
concepto con detalle ms adelante. Por ahora, slo piense en la direccin IP como /dev/fdO /media/floppyO auto rw, user noauto 0
,

el nmero de telfono de una casa donde viven diferentes personas. Cuando el

navegador accede al puerto 80, llega hasta el dominio que usted ha configurado. Ahora ejecute los siguientes comandos para aadirlos al directorio raz:

Linux ofrece medios para gestionar el uso del disco para mltiples dominios gra- touch /quota. user /quota group .

cias a una facilidad llamada cuotas. Originalmente, Unix ofreca cuotas para las .,p # chmo 600 /quota.*
cuentas de usuario para que no ocuparan demasiado espacio en el servidor. Por # mount -o remount /

ejemplo, si tuviera 50 usuarios compartiendo espacio en disco en un servidor de # quotacheck -avugm

archivos, sin un sistema de cuotas, un usuario podra llenar el disco, provocando


El kernel de Linux normalmente tiene soporte por defecto para las cuotas. El
que las aplicaciones de todos los usuarios no pudieran guardar ms datos.
kernel ve las opciones de cuota en /etc/fstab y comprueba quota. user y
La facilidad para las cuotas obliga a los usuarios a mantenerse dentro de los quota. group para determinar si los usuarios o los grupos tienen lmites en su
lmites de consumo marcados, evitando la posibilidad de que consuman espacio
espacio en disco.
ilimitado en disco. El sistema lleva en cuenta la cuota por usuario y por sistema de
Ahora ver lo siguiente en su consola:
archivos. Si tiene ms de un sistema de archivos donde los usuarios pueden crear
archivos, configure la facilidad para cada sistema de archivos de manera separada. quotacheck: Scanning /dev/hdal [/] done
Puede usar el mismo sistema de cuota para, limitar el espacio reservado para
Ahora ver un mensaje en su consola parecido a este:
un dominio de su host. Varias herramientas le permiten administrar y automa-
tizar la poltica de cuotas de su sistema. En esta parte de la configuracin del quotacheck: Checked 1912 directories and 28410 files
Configurando un servidor Linux multifuncin Configurando un servidor Linux multifuncin 39
38

Ahora puede ejecutar el prximo comando: Para poner BIND en un entorno seguro, cree un directorio donde el servicio pue-
da ejecutarse sin tener que estar expuesto a los otros procesos. Tambin podr eje-
# quotaon -avug cutarlo como usuario sin privilegios, pero slo el root podr acceder al directorio.
Primero pare el servicio ejecutando el siguiente comando:
Ver los siguientes mensajes:
# /etc/nit d/bind9 stop
.

/dev/hdal [/) group quotas turnea on


/dev/hdal [/] user quotas turned on
Edite el archivo /etc/def ault/bind9 por lo que el demonio se ejecutar como
que ha pasado? Esta secuencia activ las cuotas en el usuario sin privilegios, el directorio ser /var/lib/named. Cambie la lnea:
Ha comprendido lo
sistema. Puede revisar las pginas de ayuda para cuotas si cree que no lo ha
0PTS= " ~u bind"
comprendido. El servidor ahora est listo para usar las cuotas.
para que ponga:

OPTIONS="-u bind -t /var/lib/named"

En el captulo siguiente, aprenderemos cmo manejar nombres


de dominio
Para ofrecer un entorno completo para ejecutar BIND, cree los directorios ne-

Por ahora,
cesarios en /var/lib:
para su servidor y para dominios virtuales que residan en su sistema.
estableceremos una configuracin mnima para BINO, el servidor DNS ubicuo. # mkdir -p /var/lib/named/etc
Deban ofrece una versin estable de BJND en sus repositorios. Nosotros ins- # mkdir /Var/lib/named/dev
talaremos y configuraremos BIND y lo aseguraremos en un entorno chroot, es # mkdir -p /var/lib/named/var/cache/bind
# mkdir -p /var/lib/naraed/var/run/bind/run
decir, donde no ser posible acceder a los archivos que estn fueran de su propio
rbol de directorios. Esta es una tcnica de seguridad importante. El trmino Luego, mueva el directorio config desde /etc a /var/lib/named/etc:
chroot se refiere al truco de cambiar el sistema de archivos raz (el directorio /)
que ve un proceso, por la que la mayor parte del sistema no puede acceder a l. # mv /etc/bind /var/lib/named/etc
Tambin configuraremos BIND para ejecutarlo como un usuario que no sea root.
De esta forma, si alguien consigue el acceso a BIND, no podr obtener privilegios
Ahora cree un enlace simblico al nuevo directorio config desde la localiza-
cin antigua, para evitar problemas cuando BIND se actualice en el futuro:
de root o ser capaz de controlar otros procesos. Para instalar BIND en su servidor
Deban, ejecuta este comando: # ln -s /var/lib/named/etc/bind /etc/bind

# apt-get install bind9 Cree dispositivos nuil y random para que los use BIND y establezca los permi-
sos de los directorios:
Deban baja y configura el archivo como un servidor de Internet. Podr ver el

siguiente mensaje en su pantalla: # mknod /var/lib/named/dev/null c 1 3

# mknod /var/lib/named/dev/ random c 1 8

Setting up bind9 (9. 2. 4-1)


Adding group 'bind' (104) Luego, cambie los permisos y la autora de los archivos:
Done
Adding system user 'bind' # chmod 666 /var/lib/named/dev/null /var/lib/named/dev/random
Adding new user 'bind' (104) with group 'bind' # ehown -R bind:bnd /var/lib/named/ var/*
Not creating home directory. # chown -R bind:bind /var/lib/named/etc/bind
Starting domain ame Service: narned.
Tambin necesitar cambiar el script de inicio /etc/init d/sysklogd para .

que pueda ver mensajes en los logs del sistema. Cambie la lnea:
Nota: Ver salidas similares cuando instale o elimine otros servicios con la
utilidad apt-get. SYSLOGD = "
40 Configurando un servidor Linux multifuncin Conflgurando un servidor Linux multifuncin 41

para que ponga: na en cach cada visita a una pgina Web. Le mostraremos cmo configurar el
servidor DNS
primario y secundario en el captulo siguiente.
SYSL0GD= " -a /var/lib/named/dev/log"
Aunque muchas personas creen que carece de importancia, administrar DNS
Ahora reinicie el proceso de logging con este comando: es crucial porque muchos otros servicios dependen de l. Ya ver como DNS es un
componente crtico de casi todos los servicios de Internet que su sistema ofrece.
# /etc/init . d/sysklogd restart

Ver el siguiente mensaje:

Restarting system log daemorn syslogd.


Los sitios y los servicios Web usan bases de datos relaciones para colocar obje-
Finalmente, ejecute BIND: tos en las pginas Web. Esto permite un acceso rpido a la hora de atender las
peticiones. Los navegadores Web pueden realizar 30 peticiones de una vez,
# /etc/init d/bind9 start
.

incrementando las cargas en la CPU, en la memoria y en el acceso a disco.


Compruebe /var/log/syslog por si hay errores. Puede moverse por el ar- Las bases de datos relaciones, en combinacin con un servidor Web, puede
chivo usando: construir de manera eficiente pginas Web al vuelo.
No vamos a cubrir el complejo asunto de la administracin de bases de datos
# lees /var/log/syslog
en este libro. Sin embargo, los administradores de sistemas Linux a menudo se
Puede asegurarse que BIND se arranc con xito si puede ver: encuentran con que los desarrolladores esperan contar con bases de datos para
su desarrollo, por lo que le mostraremos la manera de configurar su servidor
Start ing domain ame service: named. Linux con una de las bases de datos de cdigo abierto ms populares: MySQL.
Para hacer efectivo el uso de la base de datos, necesitar aprender a:
Ahora, comprobemos si named est funcionando sin problemas. Ejecute este
comando, debera ver un resultado como el siguiente: 1 . Instalar e iniciar MySQL.
2. Crear un usuario root para MySQL.
serverl /home/admin# rndc status
:

3. Crear un usuario MySQL normal, que ser usado por las aplicaciones para
number of zones: 6 acceder a la base de datos.
debug level 0 :

4. Realizar copias de seguridad y restauraciones de la base de datos.


xfers running: 0
xfers deferred: 0 Para instalar correctamente el servidor de bases de datos, un programa diente
soa queries in progrese : 0
adecado para las tareas de administracin y la biblioteca necesaria por ambos,
query logging is OFP
server is up and running use este comando:
serverl /home/admin#
:

# apt-get install mysql - server mysql-cllent libmysqlclientl2 -dev


Si DNS no est funcionando correctamente, en su lugar podr ver algo como
lo siguiente:
Deban descargar MySQL desde sus repositorios y comenzar el proceso de
instalacin. Ver los siguientes mensajes:
serverl:-# rndc status
rndc neither /etc/bind/rndc conf or /etc/bind/rndc key was found
: . .
Install Hints
serverl ~# :
MySQL will only install if you have a NON-NMERIC hostname that is
resolvable via the /etc/hosts file. E.g. if the "hostname" comraand
returns "myhostname then there must be a line like "10.0.0.1
Afortunadamente, nuestro sistema DNS est funcionando correctamente.
myhostname "
Por el momento, no hemos configurado nuestros archivos de zona primaria A new mysql user " deban- sys-maint" will be created. This mysql account
ni hemos configurado DNS para que acte como servidor cach, el cual almace- is used in the start/stop and cron Scripts. Don't delete.
Configurando un servidor Linux muitifuncin 43
42 Configurando un servidor Linux multifuncin

Please remember to set a PASSWORD for the MySQL root userl If you use a Si ha editado /etc/mysql/my cnf, . reinicie MySQL usando este comando:
/root/ my cnf always write the "user and the "password lines in
. . ,

there, never only the password! # /etc/int d/mysql restart


.

See /usr/share/doc/mysql-server/README. Deban for more Information.


<0k> Esta seccin no ha cubierto todas las funciones de las bases de datos que los
desarrolladores esperan de usted. MySQL est ahora configurado para ejecutarse
Desde el punto de vista de la administracin, MySQL es comparable a Linux: en su servidor, no obstante, esto es suficiente para que pueda ciar ios siguientes
cada usuario root tiene el control sobre todo y puede conceder o denegar privile- pasos. Haremos ms cosas con MySQL en prximos captulos.
gios a los otros usuarios. El root MySQL no tiene nada que ver con el root de
Linux, lo nico que tienen en comn es el nombre. Cree el usuario root de MySQL
introduciendo:

# mysqladmin -u root password 'pword'

Elija una cadena que sea difcil de adivinar como contrasea (pwrod).Cuando
quiera administrar SQL en el futuro, deber introducir el siguiente comando y En esta seccin, aadiremos agentes de transporte y de entrega de correo elec-
teclear su contrasea:
trnico e implemen taremos un ligero control sobre el entorno de los sistemas.
Demostraremos cmo autentificar a los usuarios de un sistema de correo elec-
# mysql -u root -p trnico y prevenir el acceso fraudulento a aspectos del correo. Durante ms de
Enter password: 25 aos, Sendmail ha servido como el MIA primario de Internet. Muchas aplica-
ciones escritas para Linux esperan que Sendmail se est ejecutando en el servidor.
Intente asegurarse de que el cliente y el servidor estn trabajando y que pue-
den acceder al servidor. Debera ver en la salida de la consola algo similar a lo
A pesar de que fue escrito antes de que Internet se abriera al pblico, Sendmail
tiene muchos problemas de seguridad que se listan en la lista Common
siguiente:
Vulnerabilities and Exposures (CVE) alojada en http //c ve .mitre org.
:
.

Welcome to the MySQL monitor. Commands end with or \g. ; Afortunadamente, otros MTA han emergido para ocupar el lugar de Sendmail.
Your MySQL connection id is 14 to server versin: 4 0 24_Debian- 10-log . .
El principal problema de estos MTA es que las aplicaciones esperan que sea
Type 'help,-' or '\h' for-help. Type '\c' to olear the buffer.
mysql
Sendmail el que est presente en el servidor Linux. Para solucionar esto, algunos
MTA como Postfix o Exim deben ser capaces de hacer creer a las aplicaciones que
Teclee/q o quit para salir. ellos son Sendmail. Son sustituciones de andar por casa y pueden hacer que el

Ya que el servidor MySQL se est ejecutando, puede ejecutar netstat -tap y sistema se ejecute en modo Sendmail.
ver algo como esto: Postfix es nuestro sustituto preferido para Sendmail. Postfix es ms rpido
que Sendmail, una arquitectura ms segura y modular y ofrece muchas
tiene
tep 0 0 localhost localdo mysql *:*
. : LISTEN 2449/mysqld funciones requeridas por un proveedor de grandes volmenes de correo. Postfix
no soporta protocolos obsoletos, sino que usa el Protocolo Simple de Transporte
MySQL es accesible desde localhost (127.0.0.1) en el puerto 3306. Si no ve
de Correo (SMTP), y es el que tiene el menor nmero de incidencia en la lista
esta lnea, edite /etc/mysql/my cnf (el archivo de configuracin que el diente
.

CVE. Por todas estas razones, usaremos Postfix en lugar de Sendmail como MTA.
y el servidor comprueban para obtener los parmetros) y aada un smbolo #
El correo electrnico seguro involucra mantener fuera del servidor a todos los
para comentar la lnea skip-networking:
usuarios sin autorizacin (por lo que no pueden usarlo para enviar correo an-
#skip-networking nimo), asegurndose de que nadie puede suplantar a los usuarios legtimos y
protegiendo el contenido de cada correo recibido o despachado.
Si quiere que MySQL escuche en todas las direcciones IP disponibles, edite /
Una seguridad dbil hace ms fcil que los impostores suplanten usuarios.
etc/mysql/my cnf y comente. la lnea bind-address = 127.0.0.1
Para proteger la autentificacin, instalaremos con Postfix la Transport Layer
#bind-address 127 .0.0.1 Security (TLS), un protocolo mejor que el conocido Secare Sockets Layer (SSL). Esto
Configurando un servidor Linux multifuncin Configurando un servidor Linux multifuncin

evita enviar contraseas en texto claro desde un cliente de correo electrnico a que mejor se ajuste a nuestras necesidades. Ms tarde podremos aadir esto a la
un servidor. configuracin por defecto.
Tambin queremos que los usuarios se autentifiquen y accedan al servidor de
correo. Para conseguirlo, emplearemos el Simple. Authentication Security Layer
(SASL). Esto crea una extensin (ESMTP) que permite a un cliente SMTP autenti- TU j poi-'ts s*ie tad .$ m shling sfeiy be b/iT dan yy to lly corr gu red
ficar el servidor. Services. cisfault the por? seise ti on is respe? Gnty P O A
Instalar los paquetes es necesario para Postfix y los otros componentes de
correo, introduzca: to you v/snt ;
irc. .ignore possible.- local snc! alWays 'se .lected

# apt-get install postfix postfix-tls libsasl2 sasl2-bin \


Entere port seise ti. or?
libsas!2 -modules ipopd-ssl uw-imapd-ssl
V 'I
:

A '

A/V-T AS '

S '>
'

? A A'l'k I
/ wrisfflETSS':-' MyA.' A T O :
|
;

A medida que Deban instale los paquetes, presentar algunas pantallas que
le preguntarn algunas cuestiones.
Cuando vea la pantalla de configuracin de ipopd mostrada en la figura 2.1, Figura 2.2. Dejando los puertos por defecto para el correo.
seleccione pop3 y pop3s.

Figura 2.1. Pantalla de configuracin de correo de Deban. Figura 2.3. Opciones de configuracin Postfix.
Luego, ver una pantalla parecida a la de figura 2.2, donde debera seleccio-
nar <No> para conseguir flexibilidad a la hora de enrutar los puertos en caso de Cuando configure Postfix para ejecutar el correo, funcionar como un agente
lo que necesite despus. Los puertos por defecto trabajan aqu porque usan TES y de transferencia de correo estndar. No escoja la opcin de la figura 2.4 para usar
el demonio SASL. otro servidor de correo como smarthost. En otras palabras, su sistema ser la
La figura 2.3 es informativa; el instalador Deban est indicando qu opcio- autoridad de correo de su dominio. Si ha usado otro servidor (un portal popular
nes tiene para la configuracin de correo. Haga clic en OK para pasar a la panta- o un IS P ) para enviar y recibir correo en el pasado, su servidor realizar estas
lla de la figura 2.4, que le permite escoger una opcin. Para nuestro propsito, tareas ahora.

escogeremos Interne! Site, porque usaremos SMTP para todo el trfico, tanto para Luego, en la pantalla mostrada en la figura 2.5, responda NONO. Postfix crear
la LAN como para Internet. Deban ofrecer el tipo de archivo de configuracin su propio archivo de alias.
Configurando un servidor Linux multifuncin Configurando un servidor Linux multifuncin

Figura 2.4. Seleccionando el sitio de Internet desde el men de configuracin.


Figura 2.6. Comprobando el nombre de dominio para Postifx.

Figura 2.7. Lista interna de dominios usada en Postfix.

Despus de que Deban acabe la instalacin y vea que la consola vuelve a estar
disponible, necesitar poner a trabajar juntos varios componentes de correo. Esto
significaque deber escribir entradas en el archivo de configuracin Postfx y
Figura 2.5. Opcin para usar una cuenta alias existente. generar certificados y claves de encriptacin.
Le advertimos sobre esta parte al principio del captulo. Algunos de estos co-
En las figuras 2.6 y 2.7, el configurado! Postfx quiere saber para quin acepta
El nombre de dominio es tambin "nombre de correo". mandos no tendrn sentido para usted. Perono se preocupe, le ver el sentido crian-
y despacha el correo. el
do Suelva la vista atrs despus de haber completado las tareas de esta seccin.
Postfx usar este nombre para verificar el correo dirigido al servidor. Cuando al-
cance las pantallas mostradas en las figuras 2.6 y 2.7, tendrn valores por defecto
en las cajas azules de texto. Puede aceptar la figura 2.6 tal y como le mostramos.

Nota: centralsoft.org es el nombre de dominio que usamos en este


libro, asegrese de sustituirlo por su nombre de dominio.

En la figura 2.7, notar que hay dos comas despus del nombre localhost
centralsoft .org. Elimine la segunda coma.
En la figura 2.8, el configurador de Postfx necesita informacin sobre la actua-
lizacin. sncrona. Cubriremos la administracin de servidores de correo con gran
detalle ms adelante. Por ahora, responda <No> a la pregunta y siga avanzando. Figura 2.8. Rechazando actualizaciones sncronas.
Configurando un servidor Linux muitfuncin Configurando un servidor Linux multifuncin

comando postconf reside en el directorio /usr/sbin. Se usar para escribir


El. Country ame (2 letter code) [AU] :

el un parmetro Postfix en el archivo de configuracin main cf


valor de State or Province ame (full ame) [Some-State]
.

Locality ame (eg, city) []


Una vez que Posftix se ha instalado y se ha configurado como un servicio Organization ame (eg, company) [Internet Wdgits Pty Ltd]
Deban, necesitar indicarle a Postfix qu hacer con respeto a la autentificacin centralsof t org
.

segura. Usa los siguientes comandos: Organizational Unt Mame (eg, section) [] web :

Common ame (eg, YOUR ame) []


Email Address []
# postconf -e
:
' smtpd_sasl_local domain ='
# postconf -e 'smtpd sasl auth_enable = yes' Please enter the following 'extra' attributes
# postconf -e smtpd_sasl_security_options = noanonymous
'
' to be sent with your certifcate request
# postconf -e broken_sasl_auth clients = yes'
, A challenge password [] :

An optional company ame [j eso


:
# postconf -e smtpd_recipient_restrictions = \

# openssl x509 -req -days 3650 -in smtpd. csr -signkey smtpd. key
-out \
permit_sasl_authenticated, permit jmynetworks re j ect_unauth_destination'
,

# postconf -e inet interf aces = all'


'
smtpd. crt
Signature ok
subject=/C=US/ST=Taxas/L=Dallas/0=centralsoft .org/OU=web/CN=Tom_Adelstein/
Estos comandos escriben texto en el archivo smtpd conf .
email Address =tom. adelstein@ce.ntralsof t org
.

echo pwchecfc_me thod saslauthd' >> /etc/postf ix/sasl/smtpd. conf


1
Getting Prvate key
# :

Enter pass phrase for smtpd. key:


# echo 'mech_list: plain login' >> /etc/postf ix/sasl/smtpd. conf
# openssl rsa -in smtpd. key -out smtpd. key .unencrypted
Enter pass phrase for smtpd. key:
Ahora cree un directorio para sus certificados SSL y genere tanto los certifica- writing RSA key
dos como las claves de encriptacin: # mv - smtpd. key. unencrypted smtpd. key
# openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out \
# mkdir /etc/postix/ssl cacert.pem -days 3650
# cd /etc/postf ix/ssl/ Generating a 1024 bit RSA prvate key
# openssl genrsa -des3 -rand /etc/hosts -out smtpd. key 1024 ++++++
293 semi-random bytes loaded ++++++
Generating RSA prvate key, 1024 bit long modulus writing new prvate key to 'cakey.pem'
++++++ Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
e is 65537 (0x10001)
Enter pass phrase for smtpd. key: You are about to be asked to enter information that will be incorporated
Verifying - Enter pass phrase for smtpd. key: into your certifcate request.
What you are about to enter is what is called a Distinguished ame
Luego, ejecute este comando para cambiar los permisos del archivo que con- or a DN.
tiene la clave OpenSSL RSA: r There are quite a few fields but you can leave some biank
For some fields there will be a default valu,
# chmod 600 smtpd. key If you enter the field will be left biank
Country ame (2 letter code) [AU]
Posteriormente, genere otra clave y un certificado y cambie State or Province ame (full ame) [Some-State]
las claves existen-
Locality ame (eg, city) []
tes por las recin generadas:
Organization ame (eg, company) [Internet Widgits Pty Ltd]
Organizational Unit ame (eg, section) []
# openssl req -new -key smtpd. key -out smtpd. csr Common ame (eg, YOUR ame) []
You are about to be asked to enter information that will be incorporated Email Address [J :

into your certifcate request.


What you are about to enter is what is called a Distinguished ame
or a DN.
Nota: Existe un debate acerca de si al generar un certificado se debera pedir
There are quite a few fields but you can leave sorae biank
o no informacin. Nosotros le recomendamos que introduzca la informacin
For some fields there will be a default valu,
If you enter the field will be left biank. apropiada a sus circunstancias.
: "

Configurando un servidor Linux mutifundn Configurando un servidor Linux muitifuncin

Ahora necesita indicarle a Postfix sus claves certificados, para ello use los smtpd_tls session__cache__timeout = 3SOOs
y tls_random_source = dev /dev/urandom
siguientes comandos postconf: :

# postconf -e 'smtpd__tls_auth_only = no' Sisu archivo coincide con este, puede usar este comando para que los cambios
# postconf -e 'smtpuse tls = yes' surtan efecto:
# postconf -e 'smtpdjuse_tls = yes'
# postconf -e 'smtp_tls_note__starttls_of f er = yes' # /etc/init .d/postf ix restart
# postconf -e 'smtpd_tls Jkey_f ile = /etc/postf ix/ssl/smtpd. key' Stoppng mail transport agent Postfix. :

# postconf -e 'sratpd_tls_cert_f ile = /etc/postfix/ssl/smtpd. crt' Starting mail transport agent: Postfix.
# postconf -e 'smtpd_tls CAfile = /etc/postf ix/ssl/cacert pem' .

# postconf -e 'smtpd tls_loglevel = 1 La a identificacin se har a travs de saslauthd, un demonio SASL, pero ten-
# postconf ~e 'smtpd_tls_receivad_header - yes'
dr que cambiar unas cuantas cosas para que funcione correctamente. Debido a
# postconf -e 'smtpd_tls__session_cache_timeout = 3600s'
# postconf -e
tls_random_source = dev: /dev/urandom' que Postfix se ejecuta en modo chroot en /var/ spool /postfix, introduzca ios
siguientes comandos
El archivo /etc/postf ix/main cf debera quedar
. as:
# mkdir -p /var/spool/postf ix/var/run/saslauthd
See /usr/share/postf ix/main. cf.dist for a commented, more complete # rm -fr /var/run/saslauthd
#

# versin
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU) Ahora, tiene que editar /etc/default/saslauthd para activar saslauthd.
biff = no Elimine el smbolo # en la lnea START=yes y aada la linea PARAMS="-m /
# Appending .domain is the MUA' s job var/spool/postf ix/var/run/saslauthd" para que el archivo quede as:
append_dot_mydomain = no
# Uncomment the next line to generate "delayed mail" warnings This needs to be uncommented before saslauthd will be run automatically
#
#delay_warning_time = 4h START=yes
myhostname - serverl example com
. .
PARAMS=-m /var/spool/postf ix/var/run/ saslauthd"
alias_maps = hash /etc/aliases
:
# You must specify the authent i catin mechanisms you wish
to use.
alias database = hash /etc/aliases inelude
:
# This defaults to "para" for PAM support, but may also
myorigin = /etc/mailname # "shadow" or "sasldb", like this:
mydestination = serverl.example.com, localhost.example.com, localhost # MECHANISMS= "pam shadow"
relayhost = MECHANISMS "pam"
mynet works = 127.0.0.0/8
mailbox_command = proemail -a "$EXTENSION" Finalmente, edite /etc/init d/saslauthd. Cambie la lnea:
.

mailbox__size_limit = 0
recipient_delimiter = + dir= 'dpkg-statoverride --list $PWDIR'
inet_interf aces - all
r
smtpd_sasl_local_domain = por:
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous #dir= dpkg-statoverride --list $PWDIR'
'

broken_sasl_auth_clients = yes
smtpd_recipient_restrictions = Luego, cambie las variables PWDIR y PIDF1LE y aada la variable dir cerca del
permit_sasl__authent icated, permi t_mynet works reject_unauth_destination
,
comienzo del archivo:
smtpd_tls_auth_only = no
smtp_use_tls = yes PWDI R= " / var / spoo 1 /pos t f ix /var / run/ $ { AME }
smtpd_use__tls = yes PIDFILE " $ { PWDIR} /saslauthd. pid"
smtp_tls_note_starttls_of f er = yes dir="root sasl 755 ${PWDIR}"
smtpd_t 1 s_key_f ile = /etc/postf ix/ssl/smtpd key .

smt pd_t 1 s_ce rt_f ile = /etc/postf ix/ssl/smtpd. crt El archivo /etc/init d/ saslauthd debera quedar as:
.

sntpd_tls_CAf ile = /etc/postf ix/ssl/cacert pem .

smtpd_tls_loglevel = 1 # /bin/sh -e
!

smtpd_tls_received_header = yes NAME= saslauthd


Configurando un servidor Linux multifuncin Configurando un servidor Linux multifuncin

DAEMON= "/usr/sbin/$ {AME }


echo -n "Stopping ${DESC}: "
DESC= " SASL Authentication Daemon"
if start- stop-daemon --stop --quiet --pidfile "${PIDFILB}" \
DEPAULTS=/etc/defauit/saslauthd --startas $ {DAEMON} --retry 10 --ame ${NAMS) \
PWDIR= /var/ spool/postf ix/var/ run/$ {AME;
>/dev/null 2>&1 then ;
PIDFILE= " $ { PWDIR / saslauthd. pid }
echo "${NAME}."
dir= root sasl 755 ${PWDIR}
else
createdir( >/dev/null 2>&1; then
} {
if start- stop-daemon --test $ { START }
# $1 = user
echo " (not running) .

# $2 = group
exit 0
# $3 = permissions (octal)
else
# $4 = path to directory
echo " (failed) .

-d "$4"
[
|| mkdir -p "$4"
]
exit 1
chown - c ~h '$l:$2" "$4" l

fi
chmod -c " $ 3 " "$4"
fi
}

test -f "
$ { DAEMON " | exit 0
}
restart force-reload)
|

# Source defauits file; edit that file to conFigure this script


$0 stop
if -e " $ { DEFAULTS } ]; then
[
exec $0 start
$ { DEFAULTS

.
}

fi
*)
# If we're not to start the daemon, siraply exit start stop restart force-
echo "Usage: /etc/ init d/ $ {AME } . { j | |

if $ { START " = "yes" ]; then


" } !
[
reload}" >&2
exit 0
exit 1
fi
# If we have no mechanisms defined
esac
if f " x${ MECHANISMS } " = "x" ]; then
exit 0
echo "You need to conFigure $ {DEFAULTS} with mechanisms to be used"
exit. 0
f.i
Ahora inicie saslauthd:

# Add our mechanisms with the necessary flag


PARAMS= " $ { PARAMS -a $ {MECHANISMS }
# /etc/init.d/saslauthd start
}

START-"- -start --quiet --pidfile ${ PIDFILE} --startas ${DAEMON} Starting SASL Authentication Daemon: changed ownership of
--ame '/var/spool/postf ix/var/run/saslauthd' to root sasl
$ AME { -- $ {PARAMS }"
}

# Consider our options


saslauthd.
case "${1}" in
start) Para ver si SMTP-AUTH y TLS funcionan correctamente, ejecute el siguiente
echo -n "Starting ${DESC} : comando:
y
tfdir= 'dpkg-statoverride --list $PWDIR
test -z "$dir" createdir $dir | |
# telnet localhost 25
if start -stop-daemon $ {START} >/dev/null 2>&1 then ;
Trying 127 .0.0.1...
echo "${NAME}." Connected to localhost localdomain .

else Escape character is


f start -stop-daemon --test $ {START} >/dev/nuil 2>&1;
then 220 serverl.centralsoft.org ESMTP Postfix (Debian/GN)
echo "(failed)."
exit 1 Esto establece una conexin con Postfix. Ahora introduzca:
else
echo " $ { DAEMON already running." } # ehlo localhost
exit 0
fi
Si puede ver estas lneas:
fi
serverl /etc/postf ix# telnet localhost 25
:

stop)
Trying 127.0.0.1. .
Configurando un servidor Linux multifuncin Configurando un servidor Linux muitifuncin

Connected to localhost localdomain


# apt-get install libapache2~mod-php4 libapache2 -mod-perl2 \
.

Escape character is
php4 php4-cli php4-comroon php4~curl php4-dev php4-domxml \
.

220 serverl.centralsoft.org ESMTP Postfix (Debian/GNU)


php4-gd php4-imap php4~ldap php4~mcal php4-mhash php4-mysql \
ehlo localhost
php4-odbc php4-pear php4-xslt curl libwww-perl imagemagick
250-serverl centralsof t org
. .

2S0-PIPELINING
250-SIZE 10240000
comando captura y configura 48 archivos, por lo que tardar un
Este
250-VRFY rato. Una vez hecho, puede saltar al siguiente paso. Cambie la directiva
250-ETRN Directorylndex del archivo /etc/apache2/apache2 conf .

250-STARTTLS
250-ATH LOGIN PLAIN Di rectory Index index.html ndex. cgi index.pl ndex. php ndex. xhtml
250 -AUTH-LOGIN PLAIN
250 8BITMIME por:

su configuracin debera funcionar y ya habr completado esta parte de la Directorylndex index.html index.htm ndex. shtral ndex. cgi ndex. php
configuracin del correo. Puede teclear quit y pasar a la siguiente seccin. ndex. php 3 index.pl ndex. xhtml

Luego, aada smbolos # tal y como se muestra, para comentar las siguientes
lneas en el archivo /etc/mime types:
.

#application/x~httpd-php phtml pht php


Como mencionamos anteriormente en este mismo captulo, vamos a incluir #application/x-httpd-php- source phps
un servidor Web en nuestra configuracin inicial porque es importante aprender #application/x-httpd-php3 php3
#application/x-httpd-php3-preprocessed php3p
algunos aspectos bsicos de administracin de servidores, y porque el servidor php4
ttapplicat ion/x -httpd -php4
puede servir de alojamiento para otras herramientas. Al final del captulo, lo
usaremos para ofrecer estadsticas Web generadas con Webalizer. Tambin necesitar comentar dos lneas ms en /etc/apache2/mods-
En noviembre de 2006, Netcraft public un informe en el que se deca que el enabled/php4 .conf:
60 por 100 de los sitios Web en Internet usaban Apache. Esto lo convierte en el
servidor ms usado de todos los otros ser vidores juntos. <If Module mod_php4.c>
#AddType application/x-httpd-php .php .phtml .php3
Apache est bien integrado con la mayora de las distribuciones Linux. En #AddType application/x-httpd-php-source .phps
esta seccin, seguiremos un patrn familiar e instalaremos </IfModule>
y configuraremos
Apache ejecutando el siguiente comando:
Despus, asegrese de que las siguientes dos lneas estn presentes en el ar-
# apt-get install apache2 apache2-doc chivo /etc /apache2 /port s conf, adalas si es necesario.
.

Setting up ssl-cert (1.0-11) ...


Setting up apache2 -utils (2.0.54-5) ... Listen 80
Setting up apache2 - comraon (2.0.54-5) ... Listen 443
Setting Apache2 to Listen on port 80. If this is not desired, please edit
/etc/apache2/ports.conf as desired. Note that the Port directive no longer Ahora, tiene que activar algunos mdulos Apache (SSL, rewrite y suexec) para
works
lo que tendr que crear los siguientes enlaces simblicos en el subdirectorio rnods-
Module userdir installed; run /etc/init d/apache2 force-reload to enable.
.

Setting up apache 2 -mpm-worker (2.0.54-5) ... enabled:


Starting web server: Apache2
Setting up apache2 (2.0.54-5) ... # cd /etc/apache2/mods -enabled
Setting up apache2-doc (2.0.54-5) ... # ln -s /etc/apache 2 /mods-available/ssl .conf ssl.conf
# ln -s /etc/apache2/mods-available/ssl.load ssl.load
# ln -s /etc/apache 2 /mods-available/rewrite.load rewrite. load
lina vez que Deban acabe de instalar adecuadamente servidor apache httpd, -s /etc/apache 2 /mods-available/suexec load suexec. load
el
# ln .

ejecute lo siguiente: # ln -s /etc/apache2/mods-available/ inelude. load nclude.load


Configurando un servidor Linux multifuncin Configurando un servidor Linux multifuncin

Como vio al instalar otros procesos en secciones previas de este captulo, ins-
talar los mdulos apropiados con apt-get inicia automticamente Apache en el
sistema. Sin embargo, y debido a que ha hecho varios en la configuracin, nece-
sitar reiniciar Apache para que los cambios surtan efecto sin tener que reiniciar
el servidor. Introduzca este comando:

# /etc/init d/apache2 restart


.

El servidor Web se reiniciar y activar los nuevos mdulos, junto con los
cambios de configuracin.

Junto con el servidor httpd que muestra pginas Web en un navegador, nece-
Figura 2.9. Pantalla de configuracin Deban para ProFfPD.
sitarimplantar un servidor de trasfcrencia de archivos (FTP). Usaremos una
herramienta de cdigo abierto llamada ProFTPD para este propsito porque es
popular, segura y configurable.
El servidor FTP usa un archivo de configuracin principal, con directivas
y
grupos de directivas que cualquier administrador que haya usado alguna vez el Webalizer crea informes estadsticos a partir de los archivos del servidor Web.
servidor Apache comprender. ProFTPD tiene archivos f tpaccess de configu-
. Puede usarlo con un navegador Web estndar y produce informes detallados y
racin por directorios, de manera anloga a los archivos htaccess de Apache,. fcilmente configurables en formato HTML. El proyecto Deban incluye Webalizer
que obligan a los usuarios a introducir sus ID de usuarios y sus contraseas para en sus repositorios estables, por lo que puede instalarlo con este comando:
acceder a los directorios individuales.
# apt-get install webalizer
ProFTPD le permite configurar mltiples servidores FTP virtuales y servicios
de FTP annimos. No invoca ningn programa externo se ejecuta como usua- Durante la instalacin, necesitar verificar el directorio de instalacin (/var/
y
rio sin privilegios. Instale ProFTPD ejecutando este comando: www/webalzer), el nombre que se usar para los ttulos de los informes estads-
ticos (podra especificar un nombre de dominio, por ejemplo) y la localizacin del
# apt-get install proftpd archivo log del servidor Web (que en su sistema est en /var/log/apache/
accQss.log. 1):
La figura 2.9 muestra la pantalla que ver una vez que Deban haya descar-
gado y comience a instalar ProFTPD. ste puede ejecutarse bien como aplicacin Which directory should webalizer put the output in?
/ var /www/webal i z er
autnoma o bien como un servicio desde inetd. Por razones de seguridad, ejecu-
Enter the title of. the reporte webalizer wiil generate.
taremos ProFTPD en modo autnomo. Usage Statistics for serverl.centralsoft.org
Posteriormente, aada las siguientes lneas al archivo /etc/prof tpd conf
.
What is the filename of the rotated Webserver log?
/var/log/apache/access log . .

DefaultRoot ~
IdentLookups off
Serverldent on "FTP Server ready. 1

Ahora, ai igual que hemos hecho con los otros procesos, reinicie ProFTPD
Los relojes de los ordenadores tienden a desviarse. Por tanto, existe una tarea
usando este comando:
bsica de configuracin que conecta su sistema con un servidor NetWork Time
# /etc/init. d/proftpd restart Protocol (NTP) que mantendr la hora correcta.
.

Configurando un servidor Linux multifuncin Configurando un servidor Linux multifuncin

Para sincronizar su sistema con un servidor NTP, aada las siguientes lneas a > install HTML: Parser
/var/ spool/cron/crontabs/root; > install DB__File
> install Net: :DNS
# update time with NTP server
0 3,9,15,21 * * * /usr/sbin/rdate 128,2.136.71 |
logger -t NTP respeto a activar los test, responda no
Y con
un mdulo ya existiera en el sistema, ver un mensaje como HTML Parser
Si :

Si el archivo no existe, puede crearlo con comando:


se ha actualizado. Cuando un mdulo se instale con xito, ver algo como /
el

# touch /var/spool/cron/crontabs/root usr/bin/make install - OK.


Una vez que est hecho, simplemente pulse q para abandonar Perl y volver a
La direccin IP 128.2.136.71 pertenece al servidor de tiempo de la Universi- la consola del sistema.
dad de Carnegie Mellon. Puede usar un tiempo diferente si lo desea.
Modifique los permisos en el archivo crontab ejecutando:

# chmod 600 /var/spool/cron/crontabs/root

y reinicie el servicio cron mediante: Ahora que ya ha completado las tareas asociadas a la configuracin del servi-
dor, ahora podr empezar a usarlo en modo de produccin. Necesitar configu-
# /etc/init .d/cron restart
rar los servicios de DNS y notificar al registrador dnde ha configurado su dominio
(esto ser objeto de estudio en siguiente captulo). Una vez que la configura-
el

cin DNS est acabada, puede instalar una aplicacin basada en Web (nosotros
usaremos ISPConfig) y comenzar a explorar cmo funcionan las aplicaciones Web.

Muchas herramientas dependen del lenguaje de programacin Perl u ofrecen


una interfaz Perl que permite personalizarlas (aunque otros lenguajes estn ga-
nando adictos en los mundos del software libre y de Unix). SpamAssassin es una
herramienta crtica para administradores de correo (e incluso usuarios de co-
rreo), es un programa que usaremos en implementanclo en Perl.
este libro y est
Como administrador del sistema, incluso aunque no quiera programar en Perl,
debera ser capaz de descargar mdulos Perl del repositorio ms popular
y segu-
ro, el Comprehensiva Perl Archive NetWork (CPAN).

Para darle una ligera idea de cmo instalar mdulos Perl, aadiremos algunos
usando la consolaCPAN de Perl. Que es un entorno para buscar archivos e insta-
lar mdulos.
Entre en la lnea de comandos como root y ejecute el siguiente comando para
entrar en la consola CPAN de Perl:

server 1 /home/admin# perl -MCPAN -e Shell


:

/etc/perl/CPAN/Conf ig.pm initialized.

Responda a todas las preguntas presionando la teda Intro para aceptar los
valores por defecto. Luego ejecute los siguientes comandos para instalar los m-
dulos que usaremos en d prximo captulo:
Este captulo le muestra cmo construir un Sistema de Nombres de Dominio
(DNS) usando BIND. Cuando acabe este captulo, debera saber instalar, configu-
rar, mantener y resolver las incidencias de cualquier dominio que registre. Em-
pezaremos con una introduccin a DNS, la cual se podr saltar para ir a la seccin
de instalacin y configuracin paso por paso. Si le surgen problemas, siempre
puede volver atrs y leer o revisar el material inicial.

Aspectos bsicos de DNS


Si busca un poco acerca de DNS en Internet, podr comprobar que DNS es la
base de datos ms grande del mundo. Aunque comparndola con otros sistemas
gestores de bases de datos como Oracle o MySCIL es un poco diferente. De hecho,
DNS es el directorio digital distribuido ms grande del mundo. Al igual que un
directorio telefnico que se usa para asociar nombres con nmeros, DNS asocia
la direccin IP con el nombre de los servidores conectados a Internet, que abarcan
desde pequeos sitios Web hasta granjas de servidores como Google o Amazon.
Al igual que las bibliotecas publicas tienen una coleccin de guas telefnicas
clasificadas por estados, DNSsepara los dominios en categoras. La coleccin de
categoras reside en lo que se llama el directorio raz. Esta coleccin est divida en
dominios de alto nivel (TLD), de manera similar a como la coleccin de guas
telefnicas est dividida en estado. En lugar de buscar un nmero de telfono con
el cdigo de rea de Nueva York, DNS busca los nombres segn el sufijo .edu,
.org, .com, .net, .mil, .de, .fr, etc. Los dominios de cada TLD apuntan a la direc-
cin que puede usar para comunicarse con el servidor.
62 Ei sistema de nombres de dominio El sistema de nombres de dominio 63

El DNS
(que originalmente se defini en el RFC 882 en 1983 y luego se revis Por qu podra necesitar un administrador de sistema gestionar sus propios
como RFC 1034 y 1035) introdujo varias ideas para gestionar el mapeo de los servidores DNS? Usted debe ofrecer las direcciones de dos o ms servidores de su
nombres comunes de Internet a direcciones IPS. El sistema distribuye los datos y dominio al registrador (por lo menos dos, para garantizar que alguno de los dos

los nombres de los equipos de manera jerrquica en un espacio de nombres de funcione cuando alguien solicite un nombre). Debe gestionar los nombres de do-
dominio. Cada dominio se parece a una rama de un rbol y cada rama contiene a minio de los sistemas que van a ser pblicos: los servidores Web, los servidores de
su vez sub-ramas. Los programas llamados servidores de nombres ofrecen infor- correo, etc. A medida que aprenda DNS, se ir dando cuenta de que es muy intui-
macin sobre las partes del rbol y otros programas llamados resolvers piden tivo. Muchas veces la jerga parece un idioma extranjero. No le encontrar el sen-

informacin a los servidores de nombres de parte de los programas clientes. tido hasta que no haya trabajado con ella durante un tiempo. Le ensearemos

Los esquemas de nombres jerrquicos como DNS evitan la duplicacin de los cmo levantar un servidor DNS en un momento. Luego, revisaremos algunos
datos. Cada dominio es nico, y puede tener tantos servidores como quiera para aspectos y trminos clave antes de sumergirnos en los archivos de configuracin.
su dominio, simplemente debe aadir un prefijo a los equipos del dominio. Un
sitio que controle centralsoft.org, por ejemplo, puede tener equipos que se
llamen serverl.centralsoft.org, ldap.centralsoft.org y Introduccin a B1ND
mail centralsof t org.
. .

La mayora de los servidores DNS del mundo se ejecutan gracias al Sistema de


Ventajas ele la administracin localizada de DNS Nombres de Dominio de Berkeley o BIND. BIND es un estndar en todas las ver-
siones de Unix y de Linux. Puesto que los administradores necesitan usarlo, este
Las organizaciones pequeas a menudo permiten a sus ISP administrar el DNS captulo cubrir BIND en detalle.
por ellos. Aunque configurar sus propios servidores tiene ventajas. Le da el con-
trol total sobre qu sistemas alojan los servicios pblicos (por ejemplo, servicios
Web o correo electrnico), y poner DNS en su infraestructura permite mayor Nota: La alternativa ms popular para BINO es la suite djbdns. Funciona
bien, la usan muchos servidores de nombres y es fcil de configurar. Vase
escalabilidad:puede aadir servidores segn se vaya necesitando e incluso ba-
http://cr.yp.to/djbdns.html para ms detalles.
lancear la carga entreellos. Esto se convierte en importante si posee y opera en
varios dominios activos o en servicios internos de autentificacin. Tambin tiene
ms control a la hora de mantener los nombres actualizados. Resumiendo, es No vamos a ofrecer una clase de historia sobre BIND, porque el lector proba-
valioso controlar su propios DNS en el panorama actual, en lugar de tener a
blemente se dormira. Slo sealaremos una ancdota histrica y es que hay
alguien que lo haga. gente que todava usa la antigua y obsoleta versin 4 de BIND. En este captulo,
usaremos la nueva versin 9.
Muchas empresas han migrado a la Web
sus principales procesos de negocio.
En lugar de reemplazar los sistemas existentes, prefieren ofrecer sus aplicaciones a Si usa un sistema con la sintaxis de los archivos de configuracin DNS distin-
travs de interfaces Web novedosas. Lo consiguen usando sistema basados en Web ta de la que se muestra en probablemente el sistema est usando
este captulo,

capaces de conectar sistemas heterogneos. Los departamentos de tecnologas de BIND 4. Como dijimos antes, las empresas odian reemplazar los sistemas que
la informacin usan servidores de aplicaciones como JBoss (propiedad de Red Hat)
funcionan, debera ocurrir una catstrofe para que un departamento de tecnolo-
Webshpere de IBM o BEA WebLogic en segundo plano y otros productos para la gas de la informacin pudiera actualizar a BIND 8 o 9. Debido a que hay graves

presentacin. En cada caso, DNS es una parte integrante de los sistemas basados riesgos de seguridad para BIND 4, le recomendamos que se actualice (y ya de

en Web, porque dichos sistemas usan servidores de directorios para comunicarse. paso, salte a la versin 8 como mnimo, no a la versin 5, 6 7).

DNS tambin ocupa un lugar importante en reas emergentes como la de los


servicios Web y la Internet ejecutable, donde la gente puede usar aplicaciones
ofrecidas por Google, Yahoo y otros. Resolver las direcciones IP de forma rpida y
segura es importante para el xito de estos productos en Internet y en empresas. BIND viene con tres componentes. El primero es el servicio o demonio que
Por tanto, considere la configuracin y la gestin de DNS como uno de los cono- ejecuta la parte servidora de DNS. Este componente se llama named. Es el encar-
cimientos ms importantes de la administracin de sistemas que puede poseer. gado de responder al telfono cuando suena.
64 Ef sistema ele nombres ele dominio El sistema de nombres de dominio 65

El segundo elemento de BIND es la librera resol atora. Este componente es el Despus de las etapas iniciales de la instalacin de Debian, ver una pantalla
que los navegadores Web, el software de correo y otras aplicaciones consultan grfica indicndole que escoge el tipo de instalacin que desea. La pantalla ser
cuando intentan encontrar un servidor por su nombre DNS en la jungla de ms o menos as:
Internet.
Entorno de escritorio
Algunas personas piensan que un resolutor es un cliente dentro de BIND. Pero { )

{ ) Servidor Web
al contrario que el servidor, el cliente no es un programa simple, sino que es una Servidor de impresin
{ )

librera que enlaza con cada navegador Web, diente de correo, etc. El cdigo del { ) Servidor DNS
resolutor lanza consultas sobre los servidores DNS para intentar traducir nom- { ) Servidor de archivos
( ) Servidor de correo
bres en direcciones IP
( ) Base de datos SQL
Este elemento de BIND usa su propio resol v.conf que
directorio llamado { ) Seleccin manual de paquetes
est presente en cada ordenador. Es su tarea configurar resolv. conf. He aqu
cmo se vera el archivo resolv. conf en los equipos del dominio No ninguna opcin, solo pulse la tecla Tab. Haga clic en el botn
seleccione
centralsof t org:.
OK y el instalador Debian comenzar a descargar y a instalar paquetes. Durante
la descarga, ver una pantalla grfica. Esta pantalla le preguntar si quiere con-
search centralsoft.org figurar Exim (Exim-config). Elija Sin configuracin. Le preguntar "Seguro que
nameserver 70.253.158.42
nameserver 70.253.158.45 desea dejar el sistema de correo sin configurar?" Responda S.
Una vez que se haya completado la instalacin mnima de Debian, debera elimi-
Como puede ver, el archivo de configuracin del resolutor BIND es simple. La nar algunos programas innecesarios que tiene alguna utilidad en una LAN pero no
primera lnea busca un servidor en el dominio local. Las otras lneas indican en un servidor de correo de Internet: puede eliminarlos usando la utilidad apt-get:
direcciones de servidores de nombres que el administrador conoce, si una consul-
ta falla, se procede con la siguiente lnea. # apt-get remove lpr nfs-common portmap pidentd pcmcia-cs pppoe \
pppoeconf ppp pppconfig
La tercera parte de BIND ofrece herramientas tales como el comando dig para
probar DNS. Vaya a la consola, teclee dig yahoo com (u otro dominio conocido)
.
Si ha decidido usar SUSE o Fedora en lugar de Debian, puede eliminar estos
y vea lo que ocurre. Analizaremos la herramienta dig y otras utilidades del kit paquetes con su mtodo preferido.
ms tarde.
Ahora, desactivemos algunos servicios y reiniciemos inetd:

# update-inetd --remove daytime


Configurando un servidor DNS # update-inetd --remove telnet
# update-inetd --remove time
Para levantar nuestro servidor, vamos a hacer una instalacin de la ltima , .
# update-inetd --remove finger
# update-inetd --remove talk
versin estable de Debian y configurarla con el nmero mnimo de paquetes. Si update-inetd --remove ntalk
#
todava no tiene el disco de instalacin basada en red usado en el captulo ante- # update-inetd --remove ftp
rior,descrguelo de http://www.us.debian.org/CD/netinst. Realice una # update-inetd --remove discard
instalacin de red y asegrese de indicar un nombre de dominio adecuado. Luego # /etc/init d/inetd reload
.

configure deban como se sugiere aqu.


Para instalar BIND en su servidor Debian, ejecute el comando:
Cuando tenga la versin actual de Debian GNU/Linux, encontrar diferencias
entre sta y la versin que usamos para escribir las siguientes instrucciones. Los # apt-get install bind9

desarrolladores de Linux actualizan sus distribuciones frecuentemente, y los pro-


Debian descargar el archivo y lo configurar como un servicio de Internet.
cesos de instalacin cambian debido a las actualizaciones, los parches y las nue-
Podr ver los siguientes mensajes en la consola:
vas versiones del kernel de Linux. Si encuentra diferencias en los procesos de
instalacin que describimos, busque la esencia del asunto que explicamos y no Setting up b.ind9 (9. 2. 4-1)
tendr problemas para instalar la ltima versin. Adding group 'bind' (104)
El sistema de nombres de dominio
El sistema de nombres de dominio

Done Ahora cree un enlace simblico que apunte al nuevo directorio config desde el
Adding system user 'bind' emplazamiento antiguo y as evitar problemas cuando BIND se actualice en el
Adding new user 'bind' (104) with group 'bind' futuro:
Not creating borne directory.
Starting domain ame Service: named. #ln -s /var/lib/named/etc/bind /etc/bind

Crea dispositivos nuil y random para que BIND los use y asigne los permisos
de directorio:

Muchos administradores de seguridad recomiendan ejecutar BIND como un #mknod /var/lib/named/dev/null c 1 3


usuario no root en un directorio aislado llamado entorno chroot. Esto protege # mknod /var/lib/named/dev/random c 1 8

contra oportunidades de explotar fallos que se detecten en la versin de BINO,


Luego, cambia los permisos y la propiedad de los archivos:
que podran desembocar en que un extrao atacar el demonio named y consi-
guiera acceso al sistema. Incluso si se ataca named, un entorno chroot limita #chmod 666 /var/lib/named/dev/null /var/lib/named/dev/random
cualquier dao que pueda hacerse a los servicios de nombres. # chown -R bind:bind /var/lib/named/var/*
# chown -R bind:bind /var/lib/named/etc/bind
Para poner BIND en un entorno chroot, necesita crear un nuevo directorio
donde el servicio puede ejecutarse sin estar expuesto a los otros procesos. Tam- Tambin necesita cambiar el script de inicio /etc/init .d/sysklogd para
bin se ejecutar como usuario sin privilegios y slo el root podr acceder al que pueda ver los mensajes en los logs del sistema. Cambie la lnea:
directorio. El directorio contendr todos los archivos que BIND necesita, y pa-
recer ser un sistema de archivos totalmente completo despus de ejecutar el SYSL0GD= "
comando chroot.
por:
Primero pare el servido ejecutando este comando:
SYSLOGD= " -a /var/lib/named/dev/log"
# /etc/init.d/bind9 stop
Ahora reinicie el proceso de log con el comando:
Luego, edite el archivo /etc/default/bind9 y as el demonio se ejecutar
como un usuario sin privilegios, defina el entorno chroot como /var/lib/named. #/etc/init d/sysklogd reatart
.

Cambie la lnea:
Ver el siguiente mensaje:
OPTS="-u bind"
Restarting system log daemon: syslogd.
para que ponga:
Finalmente, inicie BIND:
OPTIONS= " -u bind -t /var/lib/named"
#/etc/init d/bind9 start
.

Para ofrecer un entorno completo para la ejecucin de BIND, cree los directo-
rios necesarios en /var/lib: Compruebe /var/log/syslog por si hubiera errores. Puede moverse por el

contenido del archivo usando:


#mkdir -p /var/lib/named/etc
# mkdir /var/lib/named/dev
#less /var/log/syslog
# mkdir -p /var/lib/named/var/cache/bind
# mkdir -p /var/lib/named/var/run/bind/run
Normalmente, sabr si BIND se ha iniciado sin problemas si el archivo syslog
Luego mueva el directorio config desde /etc hasta /var/lib/named/etc: muestra:

#mv /etc/bind /var/lib/named/etc Starting domain ame Service: named.


68 El sistema de nombres de dominio El sistema de nombres de dominio 69

Desgraciadamente, named puede iniciarse pero fallar al. cargar ios archivos de servidores DNS
mismo tiempo, y manejar mltiples dominios independientes
al
datos iniciales, lo que lo dejara inoperativo. Por tanto, compruebe si named est alojados en el mismo servidor.
funcionando introduciendo:
Cada sitio Web es un dominio diferente, por lo que tiene que escribir archivos
#rndc status de zona para cada sitio Web. En las bases de datos de los registrantes, su servidor
number of zones: 6 DNS estar listado como el servidor de nombres de sus nombres de dominio. En
debug level 0 :
otras palabras, serverl . centralsoft.org est listado como el chico con el
xfers running: 0
que los de fuera tienen que contactar para encontrar a los otros chicos de la casa
xfers deferred: 0
soa queries in progresa: 0
(linhelp com, supportcall org y los otros).
. .

query logging is OFF El archivo que se corresponde con la lista de nmeros de telfonos mviles de
server is up and running nuestra casa es /etc/named. conf En cierto modo, /etc/named conf es su
. .

serven /home/admin#
directorio de archivos de zona, puesto que ofrece informacin acerca de la locali-
:

En cambio, si DNS no est funcionando correctamente, podr ver algo como zacin de cada zona en su sistema.
lo siguiente:

#rndc status
rndc: neither /etc/bind/rndc conf or /etc/bind/rndc.key was found
.

Como se coment anteriormente, DNS distribuye su directorio. Cuando usted


Si obtuvo este error, chele un vistazo al final de este captulo. paga una tasa y registra un dominio, una de las cuestiones a las que ha de res-
ponder tiene que ver con sus servidores de nombres. Usted tiene que ofrecer los
nombres y las direcciones de dos servidores, y stos tienen que estar registrados
en el. sistema DNS.
Ahora ya se puede hacer una idea de lo que involucra el trabajo de adminis-
trador de sistema. Tiene que configurar los servidores de nombres de sus domi-
Si quiere encontrar el nmero de telfono de Jane Doe en una gua telefnica,
nios conforme a las especificaciones de la Internet Engineering Task Forc (IETF). Si
la compaa telefnica publica esa informacin. Pero si quiere encontrar
no sigue los protocolos especificados, su sistema no pasar a formar parte del
janedoe com, un administrador de sistemas, tiene que haber publicado el nom-
.

servicio de directorio universal. Afortunadamente, lo anterior le ha dado la idea


bre de dominio junto con el nmero (la direccin IP) y haberlos hecho parte de
de qu es DNS. Ahora le explicaremos cmo conseguir entrar a formar parte de
un directorio DNS distribuido. Los administradores hacen esto creando listas que
ese directorio de trabajo.
en la jerga de DNS
llaman archivos de zona de llamada.
se
Una zona contiene la informacin de un dominio o, si continuamos con la
analoga del telfono, de una familia. Imagine que hay 1 5 nios viviendo en su
casa, y que alguien que est buscando a uno de ellos le llama. Cada nio tiene un
Revisemos la estructura del directorio DNS de nuevo. El directorio tiene tres
telfono mvil, pero usted no sabe todos los nmeros de memoria. Sin embargo,
niveles. Elprimer grupo de servidores que se llama servidores raz, debido a que
s tiene un listado, es decir, un directorio donde puede buscar el nmero de tel-
ofrecen el punto de inicio para las consultas. El segundo grupo que consiste en
fono mvil del chico que el que llama est intentando localizar.
los servidores de dominios de alto nivel. El TLD incluye .com, .net, .org, .mil,
De manera anloga, usted puede tener 15 servidores en su centro de datos, o .gov, .edu, etc, adems de los dominios de cada pas como .de. (Los nombres de
15 sitios Web alojados en su servidor. Para ilustrar esto, digamos que usted ad- dominio no son sensibles a las maysculas, es decir .com y .COM son el mismo
ministra un senador que aloja cinco sitios Web diferentes, cada uno con un nombre dominio.)
de dominio completamente diferente. Supongamos que uno es central soft org .
La figura 3.1 describe la estructura DNS. En la parte de arriba de la figura,
mientras que los otros son linhelp com, supportcall org, jdshelp net y
. . .
puede ver una representacin de los servidores raz de Internet. Estos servidores
linuxconf net. Todos los propietarios de los sitios Web tienen que pedirle que
.

contienen slo los nombres y la direccin P del siguiente nivel de servidores y


maneje sus registros DNS. La versatilidad de BINO le permite manejar varios
slo son responsables de redirigir las peticiones a los TLD concretos.
70 Ei sistema de nombres de dominio El sistema de nombres de dominio 71

En centro de la figura, puede ver algunos de los servidores del TLD


el org. .
conoce la direccin de sitio Web. Si el servidor DNS no conoce la direccin, pre-
Estos servidores contienen los nombres y las direcciones IP de todos los servido- gunta al servidor raz dicha direccin.
res DNS registrados con el sufijo .org. Si registra un dominio con el sufijo .org,
El servidor raz responde "No la conozco, pero s dnde puede encontrarla la
su direccin IP residir en cada servidor TLD org. Tendr que ofrecer la infor-
.
respuesta. Empiece por los servidores TLD .com". Y ofrece la direccin IP de un
macin restante de cada subdominio, incluyendo los servidores de su dominio. servidor que conoce los dominios(que son muchos) que estn registrados bajo
La parte de abajo de la figura 3.1 representa un servidor de nombres primario .com. En nombre de tu navegador, el resolutor del servidor DNS luego consulta
llamado serverl centralsof t org. Funciona como el servidor de nombres
. .
un servidor .com para la direccin. El servidor .com dice "No tengo la informa-
para un nmero determinado de dominios, como ver ms tarde. Por ahora, slo cin, pero conozco un servidor de nombres que s la tiene. Tiene la direccin
necesita saber que serverl centralsof t org representa la parte del sistema
. .
64.233.16 7.99 y su nombre es risl.google.com".
DNS que tiene que gestionar. Su servidor DNS se dirige a la direccin, lee la informacin que el directorio
nsl.google.com ofrece y regresa a decirle a su navegador la direccin de
www.google.com. Luego, el servidor DNS coloca esa informacin en su cach
para no tener que volver a buscar la direccin de Google de nuevo.
Bsicamente, resolv conf controla las consultas que los navegadores y otros
.

clienteshacen sobre nombres de dominios, y named responde a las consultas y se


asegura que la informacin se mantenga actualizada para todos los servidores.

La figura 3.2 describe el proceso para responder a una consulta. Vamos a


analizarla. En la esquina superior izquierda de la figura est dibujada la torre de
un servidor (en nuestro ejemplo este servidor se llama serverl centralsof t
.

org; realiza la misma funcin que nsl google com). Suponemos que el servi-
.
.

dor est ejecutando Linux y BIND. Un servidor del nivel ms alto dirige a los
resolutores al sistema (en el caso de serverl centralsoft.org, un servidor
.

de nombres TLD para el dominio org enva las peticiones).


.

Encontrando un dominio

Como se mencion anteriormente, adems de proveer un demonio para escri-


bir entradas en el directorio distribuido, BIND ofrece mecanismos para leer el
directorio. Cuando su equipo necesita encontrar la direccin de un sitio Web,
consulta los servidores DNS que especifique (que normalmente est en su red
local o en su ISP). Figura 3.2. Respondiendo a una pregunta.

Imaginemos que su navegador quiere encontrar www google cora. El "dien-


.
.
El demonio escucha en el puerto 53 UDP para cualquiera que haga peticio-
te" BIND ejecuta un comando que esencialmente pregunta, al servidor DNS si nes de nombres del dominio. Cuando named recibe una peticin, consulta su
; ;

72 El sistema de nombres de dominio Ei sistema de nombres de dominio 73

archivo de configuracin, /etc/named. conf S el servidor tiene informacin servidor dnde conseguir el maestro es la direc-
la informacin. En este ejemplo,
.

del dominio en cuestin, mira en el archivo de la zona apropiada. Si el archivo cin 1P 70.253.158.42. Esta direccin coincide con la que pusimos en el archivo
de zona tiene la informacin solicitada, el servidor se la enva al sistema que resolv conf antes. El archivo resolv conf ayuda a un
.
cliente a conectarse a
.

pidi dicha informacin. DNS, mientras que la entrada anterior ayuda a un servidor secundario a encon-

Algunas personas se refieren a los archivos de configuracin como archivos trar el servidor primario.
de regla. Esto tiene algo de sentido porque una operacin DNS correcta requiere
v
que se cumplan ciertas normas y protocolos. No obstante, los archivos de zona |
;
AW y -
Cuestiones relativas a los cortafuegos ;a
j 7y
actualmente funcionan como parte del directorio DNS. Su funcin primaria es
ofrecer informacin, no cumplir las reglas. !
Si tieneun cortafuegos en su servidor primario, asegrese de desbloquearte / .

.
y para
:
puerto UDP 53. Este puerto se usa para recibir y responder las
el ;.y ..

y consultas. Si los- se? vidores secndanos residen- en la otra- parte de un


i'oftaf uegos, tambin tendr "qti.o desbloquear r puerto TCP 5.5 Los servidores
:

secndanos usan tanto R'INorno UiH pasa rravar las transieren^, ui<. .ir yyy
zonas, lo rales necesario para .mantener los servidores acusa! izados. :
r :

Como dijimos anteriormente, tiene que proporcionar el nombre de al menos j

dos servidores DNS cuando registre su dominio. Si quiere, puede hacer un dupli-
Designar el servidor secundario como esclavo lo habilita para que peridica-
cado exacto de la informacin que us para el primer servidor DNS y colocarlo
mente compruebe han producido cambios en los
si en el servidor primario se
en el lugar del segundo servidor. Algunos proveedores hacen esto, pero una prc-
archivos del directorio del dominio. El archivo named conf de cada servidor es- .

tica ms comn y ms til es considerar a un servidor como el primario o servi-


pecifica cmo se hace el sondeo y la transferencia de zonas. Los valores actuali-
dor maestro (donde se harn todas las actualizaciones manuales) y otro servidor
zados indican al servidor secundario con qu frecuencia debe sondear al servidor
secundario o servidor esclavo. Luego, BIND permite que el servidor secundario se
maestro. El nmero de serie es un valor que debe incrementar en el servidor
comunique con el primero y automticamente replique el directorio, lo que en la
primario cada vez que cambie la informacin que ofrece. El servidor secundario
prctica se llama zona de transferencia.
compara el valor primario con su propio valor para determinar si procede una
Los servidores secundarios son autoritativos, al igual que los servidores pri-
transferencia de zona. El archivo de configuracin primario tambin especifica el
marios. Es decir, los servidores secundarios pueden responden a las consultas y
valor de reintentos, que el servidor secundario usar para actualizar los valores
dar informacin de todas las zonas de las que son responsables. La diferencia es
en caso de que no pueda conectarse al servidor primario. Esto puede suceder si el
que cuando hace cambios, debera hacerlos solamente en el servidor primario. servidor maestro o la red fallan. En este caso, el servidor secundario enmascara al
Los servidores secundarios obtendrn la informacin del servidor primario.
primario durante ese rato.
El servidor primario no transfiere la nueva configuracin a los servidores se-
Aunque un servidor secundario no puede actuar como mascara indefinida-
cundarios inmediatamente. En su lugar, cada servidor secundario sondea al ser-
mente. De manera eventual, su informacin podra caducar, por lo que sera
vidor primario a intervalos regulares de tiempo para detectar los cambios que se
preferible dejar de responder a las peticiones. Por lo tanto, el archivo de configu-
han producido. Un servidor secundario sabe que debera sondear a su "hermano racin tambin especifica un tiempo de expiracin. Si este tiempo transcurre sin
mayor", ya que est etiquetado con el trmino esclavo (slave) en el archivo que se produzca una actualizacin, el servidor secundario sigue intentando con-
named conf, como se muestra aqu:
.
tactar con el servidor primario pero deja de responder a las peticiones.

zone "centralsoft.org ( Hay algunos valores ms que debera conocer antes de manejar los archivos
type slave de configuracin: ei tiempo de vida (TIL). Cuando un servidor DNS remoto reci-
file "sec.centralsoft.org"; be una respuesta a una pregunta suya, almacena el cach esa informacin y la
masters { 70.253.158.42; };
reutiliza mientras sea vlido ei valor TIL. Esta tcnica mejora el rendimiento de
DNS. Gracias a la cach, si alguien pasa una hora visitando varias pginas Web
}

No discutiremos sobre la sintaxis y el papel de la entrada por ahora. Las cosas de su sitio (cada una de las cuales involucra varias descargas), un servidor prxi-
importantes en las que hay que fijarse son el tipo esclavo; lnea que define a este mo al usuario slo necesitar preguntar el nombre de dominio una vez, puesto
servidor como secundario, y la lnea donde pone maestro (master), que le dice al que ser capaz de satisfacer cada peticin en base a la cach. Para evitar que la
. ;

E sistema de nombres de dominio El sistema de nombres de dominio 75

informacin de la cach caduque, TTL asegura que el servidor descartar el valor


que le pide,
y acudir al servidor autoritativo para obtener el valor actual.

Ver todos estos valores en su archivo de zona, no en el archivo named conf .

El archivo named conf apunta a la localizacin de su archivo de zona.


.

Servidores de solo cach

Adems de los servidores primario y secundario, DNS ofrece servidores de slo


cach. Los administradores los usan para reducir la carga de los servidores
autoritativos. Un servidor de cach no tiene autoridad, simplemente hace que
DNS trabaje ms rpido almacenando los nombres de dominio que obtiene de los
figura 3.3. Archivos de configuracin de BIND.
servidores autoritativos y ofrecindoselos a los clientes.
El servidor que configure para alojar los dominios, a menudo est ocupado res- este punto,
no entiende
Veamos atentamente un archivo named. conf simple. Si
pondiendo a las consultas de otros servidores DNS de Internet. Esta tarea consume slo trate de familiarizarse con l. Entraremos en ms detalles dentro de un mo-
muchos recursos, por lo que los administradores
usan servidores de cach para al- mento.
macenar localmente la informacin que los usuarios demandan. Ver servidores de
Recuerde, este archivo est normalmente instalado en su servidor Linux por
cach usados por los ISE por ejemplo, para dar servicio a sus clientes. Luego, usan
defecto. Dependiendo de la distribucin, named conf puede residir en diferentes
.

otro servidor para ofrecer nombres de dominio de Internet a los sitios que alojan.
directorios (est en /etc/bind/named conf para BIND 9 bajo Deban). Su apa-
.

Cuando instala BIND, se configura un servidor de cach por defecto. Cuando


riencia puede variar ligeramente. Algunas veces, por ejemplo, el archivo viene
realiza una consulta, el servidor de cach mantiene los resultados en la cach. La
muy comentado. Aqu tenemos nuestro ejemplo. Los comentarios van a conti-
prxima vez que intente encontrar el mismo sitio Web, no tendr que repetir el
nuacin de la doble barra invertida.
proceso entero: slo tendr que obtener la direccin IP del equipo de la cach.
options {
pid-file "/var/ run/bi.nd/ run /named. p.id" ;

Editando los archivos de configuracin directory "/etc/bind";


// query-source address * port 53; };
//
Hasta aqu, hemos hecho una exploracin de alto nivel del sistema de nom- // configuracin de servidor de nombres maestro
bres de dominio y hemos explicado las partes que tiene que mantener. Ahora //
r zone " " .
{
vamos a entrar en detalle acerca de los archivos de configuracin que puede es- type hint;
cribir, modificar o arreglar cuando sea necesario. file "db.root";
Cuando instala BIND en paquete genera los archivos de configura-
Linux, el };
zone "0.0.127. in-addr. arpa" {
cin por usted; no tiene que
cada archivo desde cero. La figura 3.3 ilustra
escribir
type master;
los archivos bsicos. Empezaremos por el archivo named conf, que coordina el
. file "db. local";
sistema entero en cada servidor BIND y apunta al resto. } ;

zone "158 253 70 . in-addr .arpa" {


. .

type master;
namecf.conf file "pri 158 253 70 in-addr arpa"
. . . . .

};

Recuerde que cuando named reciba una peticin, consultaba su propio direc- zone "centralsoft.org" {
type master;
torio, el archivo de configuracin named. conf. Esto hace apuntar a named al
file "pri.centralsoft.org";
archivo de zona para el dominio solicitado. };
7 El sistema de nombres de dominio El sistema de nombres de dominio 77

cular de! archivo de zona primaria. Puede reconocer un archivo de zona


inversa porque tiene una extensin in-addr-arpa y usa registros PTR
(que se describirn despus).
8 Archivo de zona primaria (para la zona, "ceiitralsoft.org"): Este archi-
vo, algunas veces llamado base de datos de dominios, define la mayor par-
te de la informacin necesaria para resolver las consultas sobre el dominio
que administra. No viene preconfigurado cuando instala BIND. Normal-
mente, tiene que escribir este archivo desde cero o usar uno de los archi-
vos que acompaan a BIND como plantilla. El archivo de zona primaria
asocia nombres a direcciones IP y ofrece informacin sobre los servicios
que los equipos ofrecen en Internet (incluyendo servidores Web y FTP,
servidores de correo, servidores de nombres, etc.).

archivo de configuracin por defecto contiene las dos primeras sentencias


El
de zona (para los servidores raz y los archivos locales, estos archivos tpicamen-
te aparecen cuando instala BIND y no necesita cambiarlo). Tendr que aadir
entradas para los archivos de zona inversa y zona primaria. Los archivos de zona
El archivo de ejemplo named conf alude a los otros cuatro archivos de confi-
.

usan varios tipos de registros, entre los que se incluyen:


guracin. La tercera lnea tiene el directorio que los contiene, /etc/bind.
La sentencia de opciones contiene dos lneas. La primera muestra la localiza- 8
SOA (Comienzo de autoridad).
cin de named pid que simplemente contiene el ID del proceso del demonio named
. - NS (Servidor de nombres).
que se est ejecutando. Que puede parecer informacin extraa para almacenar,
pero que es muy til cuando se quiere parar o reiniciar named. La segunda lnea
8
MX (Pasarela de correo, que identifica un servidor de correo en el dominio).
de la sentencia de opciones define el directorio que contiene los archivos relacio- A (Asocia un nombre de equipo a una direccin).
nados con su ejecucin. 8 CNAME (Nombre cannico, que define un alias para un equipo en un re-
Las subsiguientes sentencias de zona, un ejemplo de lo que vimos antes, iden- gistro A).
tifican la localizacin de varios archivos que contienen la informacin de confi-
PTR (Puntero, que asocia direcciones con nombres).
guracin. En resumen, named conf necesitar apuntar a los siguientes archivos
.

en las sentencias de zona: Noes necesario intentar memorizar o comprender estos tipos de registros en
este punto. Tendr la oportunidad de usarlos cuando profundicemos en el tema.
a
Archivo Hints (para Sa zona El archivo contiene los nombres
y las Ahora, revisaremos en detalle un archivo de zona primaria.
direcciones de los servidores raz de Internet, namecl debe conocer las di-
recciones de estos servidores para poder empezar a consultar cuando nin-
guno de los componentes del dominio solicitado est almacenado en la El archivo de zona primaria
cach.
* Archivo local host (para la zona "0.0.127.m-addr.arpa"): El archivo El grueso de la informacin de configu-
archivo de zona primaria contiene el

representa su propio sistema (direccin IF 127.0.0.1). La ventaja de crear racin que DNS necesita. El no est estandarizado, pero los
formato del archivo

archivos de zona local para cada aspecto de su sistema es la de reducir el elementos que contiene estn especificados en el RFC 1035.
trfico y permitir al software funcionar de la misma forma, independien- Si est usando el conjunto de archivos que la instalacin ofrece, debera darle
temente de que est accediendo a un equipo local o a uno remoto. un nombre a su archivo de zona primaria aadiendo un prefijo a su dominio.
* Archivo de zona inversa (para la zona "158.253.70.in-addr.arpa"): Hemos nombrado el archivo de zona para el dominio centralsof t otg como .

El archivo convierte las direcciones IP en nombres. Es una imagen espe-


pri centralsof t org (el prefijo pri le ayudar a reconocer que es el prima-
. .
El sistema de nombres de dominio
El sistema de nombres de dominio

Describiremos cada parte del archivo aqu, para verlo entero, eche punto (.) que denote la raz de la jerarqua DNS para poder indicar que la
rio). un vista-
zo al final del captulo.
ruta es un nombre de dominio completo.

Las primeras lneas ofrecen la informacin necesaria para sincronizarlo con Direccin de Email: La direccin de correo electrnico de la persona que es
el
servidor secundario o esclavo: responsable del dominio. Hay otra convencin DNS especfica aqu, no
puede usar la @
que aparece en todas las direcciones de correo de Internet,
@ IN SOA serverl.centralsoft.org. root localhost . . ( porque como hemos visto, una @
tiene otro significado en este archivo.
2006012103; serial-no Por tanto, se sustituye con un punto. Aqu tenemos que especificar el
28800; refresh, seconds
7200; retry, seconds
usuario root del sistema local o root@localhost, pero tenemos que es-
604800; expiry, seconds pecificar dicha direccin con un formato inusual: root localhost F-. .

86400 minimum-TTL, seconds


) ; jese que la direccin tambin debe acabar con un punto.

Las siguientes lneas de los registros SOA contienen aspectos necesarios para
Eso es un registro SOA. SOA es el Comienzo de Autoridad, que lo distingue
los servidores esclavos:
como informacin para servidores autoritativos (tanto primarios como secun-
darios) en contraposicin con los servidores de slo cach. A la vez que escribe su Serial-no: El nmero de serie para configuracin actual. Usted
la
parte en el directorio DNS distribuido, el sistema le cede la autoridad de su parte incrementa este nmero cada vez que hace un cambio en la configura-
a usted. Por lo que su archivo de zona tiene que indicar dnde empieza la autori- cin, por lo que servidores esclavos sabrn cundo ha actualizado la in-
dad, es decir, el dominio que est sirviendo. formacin. Este nmero est a menudo en formato de fecha YYYYMMDD,
con una etiqueta de doble dgito al final (lo que le permite editar el archivo
Nota: Un punto y coma (;) no indica el final de una lnea, slo indica el varias veces cada da). De esta forma, cada nmero de serie es mayor que
comienzo de un comentario. Por tanto, si no quisiera aadir el comentario el anterior e indica la fecha en que fueron hechos los cambios. Cada escla-

"serial-no", podra escribir la siguiente lnea: vo comprueba peridicamente el nmero de serie para ver si ha cambiado.
Si el nmero actual del servidor es mayor que el que tiene el esclavo, ste
2006012103; serial-no
realiza una transferencia de zona. 2006 12 103 es el nmero de serie ini-
simplemente como: cial en nuestro archivo de zona de ejemplo.

Refresh: El intervalo en que un servidor DNS esclavo debera sondear al


el
2006012103
maestro para determinar si es necesaria una transferencia de zona. El va-
lor est representado en segundo. En nuestro archivo de ejemplo, usamos
Fijmonos en la primera comienza por el valor 28800 (28.800 segundos = 8 horas).
lnea, el smbolo (@). De izquierda a
derecha los campos son:
Retry: Con qu frecuencia debera intentar conectarse al maestro si una
ame: El nombre raz de la zona. El smbolo @ es la referencia abreviada a conexin fallara. El intervalo en nuestro ejemplo es 7200 (7200 segundos
la zona actual /etc/ named conf En otras palabras, es equi-
del archivo . .
= 2 horas).
valente a usar serverl centralsof t org en nuestro ejemplo. El sm-
. . Expiry: La cantidad de tiempo que un esclavo debera intentar conectar
bolo @tambin se conoce como origen en la jerga DNS. con el maestro antes de que los datos que contiene caduquen. Si los datos
0
Class: La claseDNS. Existe un nmero de clases, pero la gran mayora de expiran y el esclavo es incapaz de conectar con el servidor para actualizar
usan la dase 1N (Internet). Las otras clases estn para protocolos
los sitios la informacin, las futuras consultas irn dirigidas a los servidores raz.

y funciones que no son de internet. Eltiempo especificado aqu es tambin la cantidad de tiempo que un servi-
Tvpe: El tipo del registro de recurso DNS. En este caso, es un registro de dor esclavo debera continuar respondiendo a las peticiones, incluso aun-
recurso SOA. que no haya podido actualizar el archivo de zona; representa el valor que
puede tolerar el manejo de informacin obsoleta. En nuestro ejemplo, usa-
e
Nameserver: El nombre completo del servidor de nombres primario. Algu-
mos 604800 (604.000 segundos = 7 das).
nos detalles son bastante importantes: el nombre debe terminar con un
.

E[ sistema de nombres de dominio El sistema de nombres de dominio

Minimum-TTL: tiempo de vida por defecto para este dominio en segun-


El
Registros MX
dos. Cualquier registro de recursosque no tenga especificado el TTL usa el
valor por defecto que es 86400. Ya que 86400 segundos son un da, el Como ha visto, un registro MX se parece a esto:
registro de consultas a cach durar un da. MX 10 serverl.centralsoft.org.

El registro SOA va seguido de una Este registro indica la direccin de correo electrnico que el dominio
lista de nombres de equipos de varios tipos:
centralsoft.org debera despachar al serverl.centralsoft.org (el ser-
NS serveri.centraisoft.org.; vidor de correo para el dominio) cuya prioridad debe ser 10.
NS server2.centralsoft.org.;
Las prioridades entran en juego en configuraciones ms complejas, donde
Estos registros NS especifican ios servidores de nombres del dominio (los que ms de un servidor de correo est disponible. Nmeros ms bajos indican priori-
proporcion cuando registr el dominio). Una vez ms, no es necesario un punto dades ms altas (el 1 es la prioridad ms alta). El sistema de prioridades funcio-
na de esta forma: el servidor de correo remoto intenta conectar con el servidor
y coma, pero es conveniente en caso de que quiera aadir un comentario ai final
de la lnea. que en su lista tiene la prioridad ms alta, si no responde, el servidor lo vuelve a
intentar con el servidor cuya prioridad es la segunda ms alta, y as sucesiva-
Lo siguiente es un registro MX que identifica el servidor de correo del dominio:
mente. Por tanto, proporcione una lista con ms de una pasarela de correo, como
MX 10 serverl.centralsoft.org. se muestra aqu:

Hemos usado MX 10 serverl.centralsoft.org.


un servidor de correo en nuestro ejemplo, pero la mayora
solo
MX 20 mail.someotherdomain.com.
de entornos de produccin ofrecen varios (bien para gran volumen de trfico o
como respaldo por si uno falla). El segundo campo de este registro (10 en nuestro Ahora correo va a centralsof t org, el MTA de origen primero intenta
si el .

ejemplo) puede usarse para indicar el orden en que debera intentar conectarse conectarse a serverl centralsof t .org, ya que tiene la prioridad ms alta
.

(10). Si serverl centralsof t org no est disponible, el MTA de origen


con los servidores MX, usar
es decir, prioriza los servidores. . .

el siguiente servidor, mal someotherdomain com, que tiene


una prioridad de
El registro MX de nuestro archivo de zona primaria va seguido por varios .
.

registros A: 20 .

centralsoft.org. A 70.253.158.42 Nota: DNS no especifica cmo tratar mltiples servidores de correo con la
www A 70.253. 158 42 .
misma prioridad. Muchas pasarelas eligen uno de manera aleatoria para
serven A 70.253.158.42
server2 A 70.253.158.45
implementar un tipo primitivo de balanceo de carga.

Un registro A asocia un nombre a una direccin IP. Debido a los mltiples Hasta ahora, hemos definido registros MX slo para el correo dirigido a
nombres que pueden asignarse a un equipo, puede tener mltiples registros A user@centralsof t .org. Qu sucede si quiere enrutar correo a distintos de-
apuntando a una nica direccin IR Sin embargo, cada nombre de equipo no partamentos de una compaa o a la seccin de una agencia gubernamental?
puede tener ms de un registro A. Nuestro archivo tiene cuatro registros A, aso- Puede hacerlo aadiendo subdominios a sus registros MX.
ciando tres nombres a una direccin otro nombre a otra direccin diferente.
y De esta forma, aadir accounting centralsof t org simplemente reque-
. .

rira otro registro:


Mejoras y caractersticas avanzadas accoanting.centralsoft.org. MX 10 serverl.centralsoft.org.

Fjese en el al final de accounting.centralsoft.org. Si no anade el


Si un archivo con los contenidos de la seccin previa, asegrese de in-
define
escribi:
punto, el origen de la zona se agrega al nombre. Por ejemplo, si
sertar los nombres de equipo apropiados a la direcciones IP de su entorno, tendr
funcionando un archivo de zona primaria (aunque necesitar los otros archivos accounting.centralsoft.org MX 10 serverl.centralsoft.org.
tambin, como explicaremos ms tarde). No obstante, deber tener en cuenta
sin el punto al final, esto se transformara en accounting centralsof t.

algunas cosas tiles que puede hacer con el archivo de zona primaria.
org . centralsof t org, . lo que es incorrecto.
. . .

El sistema de nombres de dominio 83


El sistema de nombres de dominio

Registros A
Los registros NS y MX usan nombres de equipo como centralsoft.org,
serverl centralsof t
.

Org y server2 centralsof t org, pero el archivo de zona primaria tam-


. .

bin debe especificar la direccin IP con la que se deben asociar estos nombres.
Los registros A realizan esta asociacin. Muchas personas los consideran los re-
gistros DNS ms importantes porque puede usarlos para crear direcciones como
www centralsof t org, donde www
. . es el equipo.

El siguiente registro A simple de nuestro archivo de zona primaria indica que


centralsoft.org tiene la direccin IP 70.253.158.42:

cenfcralsoft.org. A 70.253.158.42
Registros CNAME
(Recuerde aadir punto al final del nombre.)
el
CNAME es la abreviatura de nombre cannico; puede pensar que es un alias
En un navegador, probablemente estar acostumbrado a introducir
para un registro A. Por ejemplo:
www. centralsof t org en lugar de centralsof t .org. www. centralsof t org,
. .

que es tcnicamente diferente de centralsof t org, pero la mayora de los visi-


. ftp CNAME www
tantes esperan ver el mismo sitio Web, independientemente de si estn incluyen-
do www. o no. Por tanto, hemos creado este registro: quiere decir que ftp cent ralsof t org es
. un nombre alternativa para www
.

centralsof t org, por lo que ftp


. centralsof t org apunta a la misma m-
. .

WWW A 70.253.158.42 quina que www centralsof t org.


. Podra encontrar
. situaciones, especialmente

Las www no van seguidas de un punto, por lo que BIND aade el origen de la al descargar paquetes Linux, donde el repositorio fuera http / / f tp mirrors : . .

zona. El efecto es el mismo que especificar:


kernerl .org. En estos casos es casi siempre cierto que un registro CNAME se
ha usado para asignar la parte ftp del nombre del equipo a un sistema que tiene
www.centralsoffc.org. A 70.253.158.42 un nombre distinto en su registro A. Un CNAME debe siempre apuntar a un
registro A, no a otro registro CNAME. Adems, no debera usar nombres de equi-
Especifique la direccin IP de serverl.centralsoft.org y server2
centralsof t org: .
.

po CNAME en registros MX o SOA. Esto, por ejemplo, no est permitido:

MX 10 ftp
serven A 70 253 158 42
. . .

server2 A 70 253 158 45


. . .

El uso de registros CNAME tiene pros y contras. Muchos especialistas en DNS


El registro para server2 centralsof t .org apunta a diferentes direccio-
.
desaconsejan su uso. Aunque todava
se puede encontrar funciones para los re-

nes III lo que tiene sentido ya que es nuestro servidor de nombres secundario y gistros CNAME. su directorio DNS contiene muchos registros A
Por ejemplo, si

por tanto tiene que estar en un sistema diferente para el caso de que nuestro apuntando a la misma direccin IP y migra a otro servicio de alojamiento que
servidor de nombres primario se caiga. asigna una direccin IP distinta, tendr que actualizar cada registro A. Pero si
tiene un solo registro A y todos los otros nombres en registros CNAME, solamen-
te tendr que actualizar el registro A. Por lo que los registros CNAME todava
i
El problema del Bootstrapping y los registros pegamento; -

juegan un pequeo papel en el mundo del DNS.


i Podna preguntarse tomo serve-rl central? <if t
, 9 ser ver 2 ng Registros TXT y SPF
1 acostumbrados a; frasear registros de
putdejf estar
!
ct-n.tr '-i! cof or, si estn en la zona -ru debe buscarse, este es el clsico-
..

Los registros TXT le permiten aadir texto a una zona. La gente suele usar los
pi ohlema del bootstraping no puede usarl misma tcnica para iniciar la
j
registros TXT para embeber registros SPF (Framework de poltica de envos), que
controla si las pasarelas de correo deberan aceptar correo enviado a nuestro do-
. . . : ; ; .

El sistema de nombres de dominio El sistema de nombres de dominio

minio. Los grandes proveedores de correo como Yahoo! y Hotmail usan ios regis- Por qu querra alguien usar el archivo de zona inversa? En el pasado, mu-
tros SPF para evitar el spam que llega a su dominio. Si un correo electrnico llega chas organizaciones no le permitan usar sus servicios si no podan hacer un
procedente de un equipo que no est listado en el registro SPF, un MTA lo clasifi- ping inverso a su dominio. Hoy en da, muchos servidores de Internet usan el
car como spam. Puede encontrarse un asistente para crear registros SPF en ping inverso para verificar el origen del correo y as evitar el spam; este es el
http //www. openspf .org/wi zard.html ?mydomain=&x= 2 6 &y=8. Nosotros
: propsito de los registros SPF que se vieron antes. El sistema que hemos descrito
hemos usado este asistente para crear dos registros SPF para centralsof t org, . aqu tiene un problema a la hora de despachar correo que ser explicado ms
luego los hemos embebido en registros TXT y despus los hemos aadido a nues- adelante. El DNS indica qu MTA es responsable del correo para el dominio de la
tro archivo de zona: direccin de correo del remitente. Muchos difusores de spam intentan difundir el
correo usando distintos MTA, pero el agente de correo receptor no puede hacer
centralsoft.org. TXT "v=spfl a mx ~all" una bsqueda inversa, por lo que detecta una irregularidad y rechaza el correo
serverl.centralsoft.org. TXT "v=spfl a -all"
no deseado. Ya que no queremos que el correo originado en el domino
centralsoft.org sea clasificado como spam, crearemos un archivo de zona
inversa. Primero, para apuntar a este archivo, tenemos que colocar esta entrada
Ahora echemos un vistazo a nuestro archivo de zona, pri centralsof t .
en nuestro archivo named conf .

org.Fjese en que hemos aadido registros CNAME y TXT a las partes que
zone "158.253.70. in-addr arpa" {
.

comentamos antes: type master;


file "pri. 15 8. 2 5 3. 70. in-addr. arpa"
1N SOA serverl.centralsoft.org. root localho3t . . ( };
2006012103; serial-no
28800 refresh, seconds
; Los nmeros pueden parecer extraos, pero siguen un patrn simple, cen-
7200; retry seconds ,
tral -soft org est en la red 70.253.158, por lo que invertimos los elementos
604800; expiry, seconds
86400
70.253.158 para producir 158.253.70 y usarlos en la sentencia zona en
mnimum -TTL, seconds
named conf. El dominio in-addr arpa es el dominio de alto nivel usado para
)

.
.

NS serverl.centralsoft.org.; las bsquedas inversas.


NS server2.centralsoft.org.;
Llamaremos a nuestro archivo de zona inversa pri. 158. 253. 70. in-
MX 10 serverl.centralsoft.org. addr arpa y colocaremos el archivo en el mismo directorio que nuestro archivo
.

de zona primaria, pri centralsof t org. El comienzo depri 158 .253 70 in-
. .
. .

centralsof t org.
. A 70.253.158.42 addr arp se parece mucho a pri centralsof t org:
. . .

WWW A 70.253 .158.42


serverl A 70.253 158.42.
IN SOA serverl.centralsoft.org. root localhost . . (

server 2 A 70.253.158.45 **
2006012103; ser.ial-no
ftp CNAME www 28800; refresh, seconds
centralsof t org
. TXT "v=spfl a mx -all 7200; retry, seconds
server .centralsoft.org. TXT "v=spfl a -all" 604800; expiry, seconds
86400 mnimum- TTL, seconds
) ;

inversa NS serverl.centralsoft.org.;
NS server2 centralsof t org. . .

Con nuestro archivo de zona primaria completo, los programas pueden bus- Pero aqu no aadimos ningn registro A, MX o CNAME. En su lugar, crea-
car el dominio centralsoft.org y todos los subdominios DNS. Pero todava
mos registros PTR.
necesitamos un archivo de zona inversa. Un archivo de zona inversa asocia di-
recciones 1P a nombres. Es como si fuera un espejo del archivo de zona primaria, Registros PTR
en lugar de listar los nombres primeros, el archivo de zona inversa lista las direc- abreviatura de puntero, y es precisamente esto: un puntero a un
PTR es la
ciones IP primero.
nombre de dominio. Creemos uno que comience por la direccin de
: )

El sistema de nombres de dominio El sistema de nombres de dominio

centralsof t . org, 70.253.158.42. El archivo named conf ya ha


. indicado, a El comando rnde se discutir con ms detalle pronto.
travs de la sentencia zona que mostramos en la seccin anterior, que este archi- Ahora podemos probar nuestra configuracin haciendo una bsqueda con la
vo define los equipos del dominio 70.253.158. Por lo que todos los registros PTR herramienta de lnea de comandos dig. Primero, buscaremos la direccin P de
tienen que especificar la parte final de la direccin IP del equipo, 42: centralsof t org: .

42 PTR centralsoft.org. #dig centralsoft.org

Cree exactamente un registro PTR para cada direccin IP de su dominio. Para ; <<>> DG 9.2.1 <<>> centralsoft.org
nuestro ejemplo, la otra direccin IP que usamos es 70.235.158.45 (para ;; global options: printcmd
;; Got answer:
server2 centralsof t org), por lo que aadiremos:
. .

;; - >>HEADER - opeode QUERY, status: NOERROR, id: 48489:

;; flags: qr rd ra; QUERY: 1, ANSWER: 1, ATHORITY O, ADDITIONAL: : O


45 PTR server2.centralsoft.org.

;; QUESTION SECTION
Entonces esto es todo. Nuestro archivo de zona inversa se debera parecer a lo
; central soft org . . 1N A
siguiente:
;; ANSWER SECTION:
IN SOA serverl.centralsoft.org. root localhost . . {
centralsoft.org. 86400 IN A 70.253.158.42
2006012103; serial-no
;; Query tme: 198 tnsec
28800 refresh, seconds
;; SERVER: 81 169 163 104#53 (81 169 163 104)
;
. . . . . .

7200; retry, seconds Sat Mar 11 18:55:21 2006


;; WHEN :

604800; expiry, seconds


;; MSG SIZE revd: 49
86400 minimum-TTL, seconds
) ;

NS serverl.centralsoft.org.,- Como puede observar, esta bsqueda devuelve automticamente la direccin


NS server2.centralsoft.org.; IP 70.253.158.42.

42 PTR centralsoft.org.
Ahora podemos hacer una bsqueda inversa:
45 PTR server2.centralsoft.org.
# dig -x 70.253.158.42

; <<>> DiG 9.2.1 <<>> -X 70.253.158.42


;; global options: printcmd
;; Got answer:
Una vez que ha editado todos los archivos de configuracin y de zona, necesi- ;; - >>HEADER<< - opeode QUERY, status: NOERROR, id: 4096
:

ta que BINO conozca los cambios. Puede parar y arrancar named as: **
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, ATHORITY: 0, ADDITIONAL: 0

# /etc/init d/bind9 stop


. ;; QUESTION SECTION:
# /etc/init d/bind9 start
. ; ; 42 158 253 70 in-addr arpa
. . . . . . IN PTR

Si se produce algn error o si el servido BIND no hace que se espera, por


lo ;; ANSWER SECTION:
42. 158. 253. 70. in-addr. arpa. 5304 IN PTR centralsoft.org.
favor, dirjase a la seccin de resolucin de problemas para ver en detalle los pro-
blemas ms comunes. Query time: 2 rasec
;;
En el futuro, si el nico cambio que hace es actualizar el archivo de zona con ;; SERVER: 81 169 163 1C4#53 81 169 163 104
. . . { . . .

una nueva entrada DNS para el dominio correspondiente, es suficiente con que le ;; WHEN: Sat Mar 11 18:57:54 2006
;; MSG SIZE revd: 98
indique a BIND que recargue la informacin de zona (en lugar de reiniciar el
servicio entero):
La bsqueda directa y la inversa se complementan. Nuestro servidor primario
ffrndc reload centralsoft.org est completo.
; ; ; ;

El sistema de nombres ele dominio El sistema de nombres de dominio

Herramientas BINO
Ahora, levantaremos nuestro servidor de nombres secundario,
Como hemos mencionado anteriormente en este captulo, BINO se divide en
server2 centralsof t org. Actuar como copia de seguridad en caso
. .

tres partes: el demonio named, la librera resoluta y algunas herramientas.


de que el servidor primario (serverl centralsof t org) falle, por lo que . .

las personas todava podrn buscar centralsof t .org y sus subdominios.


Una herramienta que ya ha usado es dig, que los administradores usan para
consultar los servidores de nombres DNS. dig hace bsquedas DNS y muestra las
El archivo named conf para server2 centralsof t org es parecido al del
. .

respuestas devueltas por los servidores de nombres y las estadsticas sobre la


.

servidor de nombres primario con algunas diferencias:


consulta.

options La mayora delos administradores DNS usan dig para solucionar tos proble-
{

pid-file "/var/run/bind/run/named.pid" mas de DNS


debido a su flexibilidad, facilidad de uso y claridad. Otras herra-
directory "/etc/bind"; mientas de bsqueda suelen tener menos funcionalidad. Otra alternativa podra
// query- source address * port 53;
ser, no obstante, nslookup. Tambin echaremos un vistazo a rnde, una herra-
1 ;

mienta de administracin til que se incluye con BIND.


zone " " { .

type hint
file "db.root"; nstookup
} :

nslookup trabaja de manera similar a dig pero est obsoleto en Linux. Usarlo
zone " 0 0 127 in-addr arpa "
. . . .
{
requiere ms trabajo, pero debera serle familiar porque Microsoft Windows an
type master;
file "db local " .
lo usa como herramienta primaria de bsqueda.
}; nslookup consulta servidores de nombre de dominio de Internet en dos mo-

zone "centralsoft.org
dos: interactivo y no interactivo. El modo interactivo permite consultar los ser-
vidores de nombres para obtener informacin sobre varios equipos y dominios, o
{

type slave
file "sec.centralsoft.org"; para imprimir una lista de equipos en un dominio. El modo no interactivo sim-
masters 70.253.158.42; }; { plemente imprime el nombre y la informacin solicitada para un equipo o domi-
};
nio. Por ejemplo, podra ejecutar la siguiente bsqueda para encontrar informacin
sobre el servidor Google:
La diferencia ms importante es la que se coment antes en este mismo cap-
tulo. El tipo esclavo, quese indica en la sentencia final indica que es una zona #nslookup nsl.google.com
r
esclava. En la lnea del archivo especificamos el nombre del archivo donde se debe Server: 68.94.156.1
Address: 68 94 156 1#53
guardar la zona esclava, y en la lnea maestra especificarnos la direccin IP del
. . .

servidor de nombres primario. Non-authortative answer:


Esto es todo lo que tenemos que hacer para configurar el servidor de nombres ame: nsl.google.com
secundario. Address: 216.239.32.10

Reinicie named en server2 centralsof t org y luego debera encontrar el


. .
Enel modo interactivo, nslookup ofrece una interfaz donde se pueden ejecu-
archivo / etc/bind/ sec centralsof t org en su servidor de nombres secun-
. .
tar comandos. Por ejemplo:
dario. Qu ha ocurrido? El servidor de nombres secundario ha contactado con el
servidor de nombres primario que le ha transferido la zona. #nslookup
>
Ahora, cada vez que actualice una zona en el servidor de nombres primario,
asegrese de que el nmero de serie se incrementa. En caso contrario, la zona Desde la interfaz se pueden hacer varias bsquedas simples, como la de una
actualizada no se transferir al servidor de nombres secundario. direccin IP:
: . .

El sistema de nombres de dominio El sistema de nombres de dominio

> 70.253.158.42 Esta informacin viene de la direccin 1P 68.94.156.1, puerto 53, qu es el


Server: 172.30.1.2 servidor de nombres especificado en el archivo resolv.conf del equipo que
Address: 172 30 1 2#53
realiz la bsqueda. Puede usar host de nuevo para averiguar el nombre de este
. . .

Non-authoritative answer: servidor:


42 158 253 70 in-addr .arpa
. . . . ame = adsl- 70-253 -158 -42 dsl rcsntx
. .

> host 68.94.156.1


swbell .net
1 . 156 94 68 in-addr arpa domain ame pointer dnsrl.sbcglobal.net.
. . . .

Authoritative answer s can be found frorn:


158 253 70 in-addr arpa nameserver
. . . . = nsl.swbell.net.
Introduzca exit para cerrar la sesin de bsqueda interactiva.
158 253 70 in-addr arpa nameserver
. . . . = ns2.swbell.net. Tambin puede usar named para arreglar fallos en algunas situaciones. Por
> ejemplo, para averiguar el nmero de versin de su implementacin BND, eje-
cute el siguiente comando:
Puede ejecutar varios comandos, incluyendo Iserver (que usa su servidor local
para hacer una bsqueda), server (que usa otro servidor para hacer una bsque- ># named -v
da) y host. El comando Iserver produce una salida como la siguiente: named 8.4. 6 -REL-NOESW Tue Feb 1 10:10:48 UTC 2005
buildd@rockhopper /build/buildd/bind- 8 .4.6/ src/bin/named
:

> Iserver google.com


Default server: google.com
Address: 64 233 167 99#53. . . rndc
Default server: google.com
Address: 64 233 187 99#53. . .
BINO ofrece un comando rndc como parte de la instalacin, rndc permite
Default server: google.com
Address: 72 14 207 99#53
administrar named usando la lnea de comandos. La utilidad enva los comandos
. . .

introducidos mediante lnea de comandos al servidor que ejecuta server, que los
subcomando host ofrece una utilidad simple para realizar bsquedas. Cuando
El procesa. El script de inicializacin de BIND 9 tambin usa rndc.
no dan argumentos u opciones, host imprime un pequeo resumen en la lnea
se
Para evitar que los usuarios no autorizados accedan a su servidor de nombres,
de comando de los argumentos y las opciones. La gente lo usa principalmente debera usar una clave secreta para autentificar el acceso. Para que rndc ejecute
para convertir nombres a direcciones IP y viceversa. He aqu un ejemplo:
los comandos en un servidor de nombres, incluso en un equipo local, ambos

> host centralsoft.org


deben compartir la misma clave. Esta clave est almacenada en el archivo /etc/
centralsoft.org has address 70.253.158.42 bind/rndc .key, y tanto named como rndc leern la clave desde esta localiza-
cin. El archivo rndc key debera haberse creado durante
. la instalacin de BIND.
Cuando pone host en modo completo con la opcin -v, ofrece informacin
El comando rndc tiene la siguiente forma:
similar al comando dig:
r-

> host -v centralsoft.org #rndc rndc-options command command-options


Trying "centralsoft.org"
;; ->>HEADER<<- opcode QUERY, status: NOERROR, id: 43756 :
Ahora veremos algunas opciones de rndc comunes que podra necesitar (lea
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY 1, ADDITIONAL: : O las pginas-manual de rndc para ver la lista completa):

;; CUESTION SECTION -k key-file: Usa el archivo con la clave especificado en lugar del archivo
,-centralsoft .org . IN A por defecto /etc/bind/ rndc key. .

;; ANSWER SECTION:

-s server: Enva el comando al servidor especificado en lugar de al servi-

centralsoft.org. 86400 IN A 70.253.158.42 dor local.

AUTHORITY SECTION:
-V: Activa el modo de informacin completo.
;;
centralsoft.org. 29437 IN NS serverl.centralsoft.org. Aqu se muestran algunos de los comandos que rndc suele enviar a named (para
Received 71 bytes from 68 94 156 1#53 in 30 ms . . .
una lista completa de los comandos, simplemente introduzca el comando rndc):
. :

El sistema de nombres de dominio Ei sistema de nombres de dominio

a
halt: Para el servidor de nombres inmediatamente. nuestro servidor DNS. Probemos a entrar en el sistema como root y ejecutar ei

querylog: Activa o desactiva el log de todas las consultas hechas por los comando:
clientes a este servidor de nombres. Es un comando de conmutacin: con-
serverl -# rnde status
:

muta al estado activo si estaba desactivado y viceversa. number of zones: 6


reload [zone]: Recarga los archivos de zona, pero mantiene todas las res- debug level 0
:

xfers running: 0
puestas que se almacenaron previamente en cach. Esto permite hacer
xfers deferred: 0
cambios en los archivos de zona y que tengan efectos en sus servidores soa queries in progress: 0
maestros y esclavos sin perder todos los nombres ya resueltos. Si los cam- query logging is OFF
bios afectan a una nica zona, puede indicar que slo se recargue esa server is up and running
serverl ~#
:

zona.
retransfer zone: Obliga a volver a transferir la zona especificada sin te- El comando rnde depende de una clave compartida en el archivo /etc/bind/
ner que comprobar el nmero de serie. rndc.key para que named acepte sus comandos. Problemas con este archivo
s
stats: Vuelca las estadsticas actuales de named al archivo named stats .
pueden evitar que rnde enve los comandos.
status: Muestra Aqu un ejemplo de que deberamos ver si el archivo de la clave no existiera:
el estado actual del servidor de nombres.
stop: Detiene el servidor, guardando y actualizando dinmicamente los serverl:-# rnde status
datos antes de salir. rnde: neither /etc/bind/rndc conf or /etc/bind/rndc key was found
. .

serverl ~#
:

Podemos comprobar que el archivo no existe con este comando:


Resolucin de problemas en BINO
serverl:-# ls -1 /etc/bind/rndc key .

ls: /etc/bind/rndc .key No such file or directory


:

En este punto del captulo, debera tener un conocimiento funcional acerca de


DNS. Tambin debera saber cmo configurar sus archivos cmo corregir pro-
y Podemos solucionar el problema regenerando el archivo de la misma forma
blemas de sintaxis, como errores tipogrficos. que lo hace la instalacin de BIND:
En esta seccin, cubriremos algunos aspectos bsicos, problemas comunes que
serverl:-# rndc-confgen -a
puede encontrar cuando BIND y DNS estn funcionando. No es un tratado ex- serverl:-# ls -1 /etc/bind/rndc key .

haustivo, pero debera ayudarle a ejecutar DNS en su servidor Linux s tiene -rw 1 root bind 77 Jul 19 22:38 /etc/bind/rndc key .

problemas para que su dominio resuelva nombres de equipos o haga transferen- serverl
cias de zona.
Debido a que named no tiene esta nueva clave, debemos matar el proceso
named y reiniciarlo. Para ello, haremos uso del comando del sistema killall, que
Nota: diseo del sistema de nombres de dominio es robusto, pero en oca-
El coge la ruta completa del nombre del programa named.
siones pueden aparecer errores. Siguiendo estrictamente los patrones para
Para detener named de manera correcta, ejecutaremos el comando killall dos
crear archivos de zona descritos anteriormente en este captulo, puede evitar
veces en un intervalo de unos cuantos segundos, luego remidamos named:
problemas que estn fuera del alcance de este libro.

serverl:-# killall -TERM /usr/sbin/named


serverl:-# killall -KILL /usr/sbin/named
/usr/sbin/named: no process killed
serverl:-# /etc/init d/bind9 start
.

Starting domain ame Service: named.


Para empezar, veamos un consejo sobre resolucin DNS. Anteriormente, vi- serverl:-# rnde status
mos cmo el comando status de rnde muestra el estado actual de ejecucin de number of zones; 6
94 El sistema de nombres de dominio El sistema de nombres de dominio

debug leve! 0 :
/var/lib/named/etc/bind/
# ls
xfers runnng: 0 db.O db. local named. conf local

. pri centralsof t org
. .

xfers deferred: 0 db.127 db.root named. conf options .


pri opensourcetoday
.

soa queras in progress : 0 org


query loggir.g is OPF db.255 named. conf pri 156 18 67 in-addr arpa
. . . . . rndc key
.

server is up and running zones .rf cl918


db.empty named. conf- pri 156 18 67 in-addr .arpa
. . . .

serverl
#

named se inicia pero no resuelve nombres


Si estos archivos no existen, el entorno chroot no est configurado adecuada
Ahora, veamos algunas situaciones donde named no funciona correctamente. o completamente. Vuelva al comienzo del captulo y siga las instrucciones con
La localizacin incorrecta de los archivos BIND a menudo causa problemas, es- cuidado para asegurarse de que cada archivo est en su lugar.
pecialmente en entornos chroot donde los archivos BIND estn en un directorio Una vez arreglado el problema, necesitar parar y reiniciar named para que
aislado. Si named se inicia bien pero no carga ningn archivo de zona, puede que rndc pueda conectar con el servidor. Use la secuencia de comandos kiliall descrita
no estn en el directorio aislado. Necesitar mirar el archivo /var/log/syslog en la seccin previa:
para ver si este es el caso. He aqu un ejemplo de log:
serverl:-# kiliall -TERM /usr/sbin/named
starting BIND 9.2.4 -u bind -t /var/lib/named serverl:-# kiliall -KILL /usr/sbin/named
using 1 CPU /usr/sbin/named: no process killed
loading conf iguraton from /etc/bind/named conf ' .
'
serverl:-# /etc/init d/bind9 start
.

listening on IPv4 interface lo, 127.0.0.1#53 Starting domain ame Service: named.
listening on IPv4 interface ethO, 70 253 158 42#53 . . .
serverl ~# :

command channel listening on 127 0 0 1#953 . . .

command channel listening on ::1#953 Ahora, compruebe el archivo /var/log/ syslog para ver si los archivos de
running
zona se han cargado. Debera ver algo como esto:
log muestra que BIND se ha iniciado, pero no incluye lneas indicando que
El
starting BIND 9.2.4 -u bind -t /var/lib/named
losarchivos de zona se han cargado. Ya que named se ejecuta en un entorno using I CPU
chroot en / var/lib/named, buscar todos los archivos relativos del directorio. loading conf iguraton from /etc/bind/named conf
' .
'

Por lo que realmente est leyendo el archivo /var/lib/named/etc/bind/ listening on IPv4 interface lo, 127.0.0. 1#53
named conf para. de zonas que debe cargar. Cada uno de estos archivos
la lista
listening on IPv4 interface ethO, 70 253 158 42#53 . . .

command channel listening on, 127 0 0 1#953 . . .

de zona debe colocarse en la ruta relativa del directorio /var/lb/named.


command channel listening on ::1#953
Otro error comn es el fallo de una conexin que involucra a rndc al recargar zone 0 0 127 in-addr arpa/IN: loaded serial 1
. . . .

o reiniciar el servidor de nombres: r zone 158 253. 70. in-addr. arpa/IN: loaded serial. 2006070401
.

zone centralsoft.org/IN: loaded serial 2006070502


#/etc/init d/ bind9 reload
. zone supportcall.org/IN: loaded serial 2006062704
Stopping named: rndc: connect failed: connection refused running
EOK]
Starting named: [OKj
# No se reconocen los equipos
Este tipo de error tambin puede suceder como resultado de ejecutar BIND en
El siguiente paso es comprobar el correcto funcionamiento de DNS para ase-
un entorno chroot, cuando uno o ms archivos no est en el directorio aislado.
gurarse de que las consultas acerca de sus equipos se responden de manera ade-
Puede comprobar si los archivos estn en las localizaciones correctas as:
cuada. Primero, necesita asegurarse de que el archivo /etc/resolv. conf lista
# 1 s -1/var/lib/named/ etc /bind/ named. conf sus servidores de nombres con las direcciones correctas. La mayora de los pro-
-rw-r--r-- 1 root bind 1611 2006-09-07 12:21 /var/lib/named/etc/bind/ gramas usan las direcciones de este archivo para determinar qu servidores de
named conf .
nombres deben consultar y en qu orden:
: : . : : .. . . )

El sistema de nombres de dominio El sistema de nombres de dominio

serverl:-# cat /etc/resolv. conf www. centralsof t org . 86400 IN A 70.253.158.42


search centralsoft.org
nameserver 70.253.158,42 ; AUTHORITY SECTION:
;

centralsof t org 86400 IN NS serverl centralsof t org


. .

nameserver 70.253.158.45 .

serverl ~# :
centralsof t org . 86400 IN NS server2 centralsof t org
. .

El comando simple bsqueda DNS usando los servidores lista-


host hace 1111a ;; ADDITIONAL SECTION:
serverl centralsof t org . 86400 IN A 70 .253 158 42
. .

dos en el archivo /etc/resolv conf Necesita el equipo a buscar como


.

.
server2 centralsof t org
. . 86400 IN A 70 .253 158 .45
.

parmetro, y un segundo parmetro opcional hace que el comando consulte a


un servidor de nombres especfico. ie aqu dos ejemplos del comando host y sus
l ; ;Query time: 1 msec
resultados: ;; SERVER: 70 253 158 42#53 70 253 158 42 . . . ( . . .

;; WHEN Mon Jul 17 23:30:51 2006


:

serverl:-# host iiiww.centralsoft.org ; MSG SIZE rcvd 129


; :

www.centralsoft.org has address 70.253.158.42 serverl


serverl:-# host www.centralsoft.org server2.centraisoft.org
Using domain server: La primera parte de la salida indica varios cdigos de estado y banderas. Pres-
ame: serverl.centralsoft.org te atencin particular al valor del estado de la cuarta lnea. Es este ejemplo, el
Address: 70 253 158 45#53
valor es NOERROR. Cualquier otro valor indica algn tipo de problema.
. . .

Aliases
Los datos para la zona actual se dividen en cuatro secciones:
www.centralsoft.org has address 70.253.158.42
serverl ~# :
QUESTION: Esta seccin actualmente detalla una consulta. Se muestra
como un comentario porque no es la informacin que debera estar en un
Una alternativa a host es el comando dig, que es ms complejo pero ofrece archivo de zona.
respuestas ms detalladas. Tambin tiene ms opciones que le posibilitan realizar 8
ANSWER: Esta seccin contiene los resultados actuales solicitados por la
consultas ms especficas. La salida de dig est formateada segn la sintaxis del consulta. Mostrar los registros especficos solicitados, si estn disponi-
archivo de zona. Esto es una ventaja, puesto que una vez que haya aprendido
bles, o todos los registros si se est usando el tipo de consulta especial.
qu formato tienen los registros en un archivo de zona, puede comprender fcil-
AUTHORITY: Esta seccin identifica los servidores de nombres oficiales
mente los detalles de estos registros en la salida de dig. dig tambin ofrece infor-
macin adicional sobre los resultados de la consulta en los comentarios que para la zona de la que viene la transferencia.

empiezan por el carcter ADDITIONAL: Esta seccin ofrece las direcciones de algunos o de todos los
Echemos un vistazo al resultado del comando dig. Muchas lneas de la salida nombres de las secciones anteriores, para evitar el problema de hacer ms
de dig son muy largas y no caben en el diseo de pgina de este libro. En el consultas para obtener esa informacin. Ahora, veamos lo que debera
siguiente listado, las hemos divido en lneas. Podr ver un resultado similar cuando
' hacer si se produjera un error. El ejemplo anterior usaba un nombre de
lo ejecute en su lnea de comandos: equipo vlido para el servidor Web. Esta vez lanzaremos una consulta
para el nombre de un servidor FTP que no hayamos configurado en nues-
serverl:-# dig www.centralsoft.org a tro archivo de zona:

; <<>> DiG 9.2.4 <<>> www.centralsoft.org a serverl:-# dig ftp.centralsoft.org a

; global options: printcmd


;; Got answer ; <<>> DiG 9.2.4 <<>> ftp.centralsoft.org a
; ; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 1633 ; ;global options: printcmd
;? flags: qr aa ra ra; QUERY: 1, ANSWER: 1, AUTH0R1TY 2, ADDITIONAL: : 2 Got answer
;

;; - > >HEADER< - opcode; QUERY, status: NXDOMAIN, id: 6531


<

;; QUESTION SECTION: flags: qr aa rd ra; QUERY: 1, ANSWER: O, AUTHORITY: 1, ADDITIONAL: O


; ; www centralsof t org
. . . IN A
; QUESTION SECTION:
;

; ; ANSWER SECTION: ; ftp centralsof t org


. . . IN A
El sistema de nombres de dominio El sistema de nombres de dominio

;; AUTHORITY SECTION: encontrar en este captulo todo lo que necesitan, pero los administradores de
centralsoft.org. 86400 IN SOA serverl.centralsoft.org. admin.
centralsoft.org. 2006070502
sistemas empresariales seguro que se encontrarn con aspectos ms complejos
28800 7200 604800 86400
de los que puede tratar un nico captulo de un libro.
;; Query time: 1 msec Hay algunos libros que pueden ofrecer informacin mucho ms detallada para
SERVER: 70 253 158 42#53 (70 253 158 42)
;; . . . . . .
administradores DNS de grandes empresas. Entre estos libros destacan "DNS y
;; WHEN: Mon Jul 17 23:30:59 2006
; ; MSG SIZE rcvd: 87 B1ND" de Cricket Liu y Paul Abitz (O'Reilly), "DNS & BINO Cookbook" de Cricket
Liu {O'Reilly), "Pro DNS and BIND" de Ron Aitchison (Apress) y "DNS in Action: A
serverl ~# :
Detailed and Practical Guide to DNS Implementation, Configuraron, and
Administration" de L. Dostalek y A. Kableova (Packtj.
Fjese en que el estado para la consulta es NXDOMAIN, que en esencia significa
Ahora que ya tiene un nombres respondiendo consultas y un ser-
servidor de
"no existe tal nombre de dominio". Si usted no tiene o introduce mal el nombre de
vidor secundario o esclavo que acta como copia de seguridad, en el prximo
equipo en el archivo de zona, obtendr este error.
captulo podr aprender a instalar una aplicacin de servicios Web. Esta nueva
Otro tipo de error que podra ver con dig es cuando un nombre de dominio
aplicacin usar los servicios configurados en el captulo anterior. Una vez que
ha sido delegado a su servidor de nombres, pero el dominio no est configurado
llamada ISPConfig est configurada y se est ejecutando, podr ver
la aplicacin
en el servidor o falla al cargarse. Este error devuelve un estado dcSERVFAIL. Si
un ejemplo de un sitio Web completamente operativo. Podemos empezar explo-
ve este error para alguno de sus dominios, necesita aadir el dominio a su ar-
rando cmo administrar la suite completa de los servicios para Internet que ofre-
chivo named conf y asegurar que existe un archivo de zona vlido. Si el error
.

ce Linux.
ocurre despus de haber dado estos pasos, compruebe el archivo /var/log/
syslog para ver los mensajes que indican por que no se ha cargado la zona.
Demostraremos el problema con un nombre de dominio que est registrado,
pero que no est en uso:

serverl:-# dig linhelp.org a

; <<>9 DiG 9.2.4 <<>> linhelp.org a


; global options: printcmd
; ; Got answer:
; ;
- >>HEADER<<- opcode QUERY, status: SERVFAIL, id:
: 29949
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL : 0

;; QUESTION SECTION:
; linhelp.org. IN A

;; Query time: 2 ms'ec


; ; SERVER: 70 253 158 42#53 (70 25.3 158 42)
. . . . . .

; ; WHEN: Mon Jul 17 23:47:14 2006


;; MSG SIZE rcvd: 37

serverl ~# :

Por ahora, ya debera estar familiarizado con los aspectos bsicos de DNS y
BIND. Los administradores de negocios de pequeo y mediano tamao deberan
Una de las grandes ventajas de Linux es su flexibilidad. Las compaas comer-
como Cisco han ocultado Linux debajo
ciales de interfaces simples que hacen de
sus routers Linksys productos amigables. Nosotros tambin podemos hacer esto.
ISPConfig (http://ispconfig.org), un Linux amigable bajo licencia de
software libre (BSD), permite levantar servidores multifuncionales que trabajen
en Internet desde una aplicacin disponible para descargar. Una vez que lo he-
mos instalado, dispondremos de una herramienta que nos ayuda a configurar y
mantener fcilmente un servidor que nos permite gestionar sitios Web; ofrecer
servicios de nombres de dominio, realizar transferencias de archivos y de correo,
y aadir usuarios, administradores y otros para que puedan acceder al sistema y
realizar tareas administrativas. Adems, hemos mencionado que permite reali-
zar todas estas tareas de administracin desde una interfaz grfica?
Hemos seleccionado ISPConfig principalmente porque nos permite desplegar
servidores de aplicaciones muy potentes sobre Linux sin sacrificar su potencia o
su flexibilidad. Adems:
ISPConfig usa demonios estndar que vienen con las distribuciones Linux.
Usaremos Apache para servir sitios Web. Postfix para el correo electrni-
co. ProFTPD para el FTP, BIND para el DNS y MySQL como gestor de Bases
de datos.
La instalacin de ISPConfig configura de manera automtica varios servi-
dores de componentes.
Los paquetes incluidos en ISPConfig funcionan con la mayora de las dis-
tribuciones Linux disponibles.
Pueden usarse paquetes estndar de las distribuciones.
.

Un entorno inicia! listo para Internet Un entorno inicial listo para In te rn et

9
Puede encontrarse soporte en internet para cada componente. SSL
9
0
El equipo de ISPConfig ofrece soporte en lnea para la aplicacin entera. Acceso a la lnea de comandos.
9 Escner de correo (antivirus).
A medida que avance en el captulo, deberahacindose una idea de lo que
ir
9
un servidor necesita para y funcionar. Tambin aprende-
ofrecer varios servicios Firewall.
r cmo decidir s necesita usar un panel administrativo visual en lugar de una
interfaz de lnea de comandos. Requisitos
ISPConfig no ofrece una interfaz de lnea de comandos. En su lugar, le permi-
te gestionar a travs de una interfaz administrativa basada en Web, o un panel, En este momento, los requisitos del sistema son:
que se describir ms adelante en este captulo. Tendr que ejecutar algunas r- 9
Sistema Operativo: Linux (kernel 2.4 o posterior con la librera glibc).
denes desde la lnea de comandos al principio del capt ulo, al configurar ISPConfig
puesto que no instala todo secuencialmente, pero en las siguientes secciones, nos Las siguientes distribuciones lo permiten:
centraremos exclusivamente en la interfaz visual. 9 CentOS 4.1, 4.2, 4.3 y 4.4.
panel Web de ISPConfig simplifica la ejecucin de muchas tareas adminis-
El 9
Deban Versin 3.0 o posterior.
trativas de Linux, pero es importante saber cmo usar las utilidades de lnea de
0 Fedora Core de la 1 a la 6
comando para obtener los mismos resultados. Cubriremos estos aspectos en los
captulos posteriores. Esto no supone que tenga que estar atado a ISPConfig,
9
Mandrake Linux Versin 8.1o posterior.

pero si elige trabajar sin l, es conveniente que sepa para qu sirve. 9 Mandriva 2006 y 2007.
9 Red Hat Linux Versin 7.3 o posterior.
SIISE Linux Versin 7.2 o posterior.
Instalando ISPConfig
Ubuntu desde 5.04 a la 6.10.
9
Paquetes Linux: Los mantenedores del proyecto aseguran que son necesa-
ISPConfig viene del Projektfarm GmbH. La aplicacin fue desarrollada por Till
rios varios componentes en el sistema antes de instalar ISPConfig. Estos
Brehm y Falko Timme, que originalmente la vendieron como una aplicacin pro-
componentes son:
pietaria en http://4 2go.de. Ahora puede descargarla desde http://
sourceforge net/proj ects/ispconf ig.
.
Apache web server Versin 1.3.12 o posterior, o 2.0.40 o posterior.

El proyecto configura estos servicios:


9
BIND 8 o 9.
9
iptables o ipchains.
httpd (equipos virtuales, basados en dominio y basados enlP).
p
0
FTP.
9
MySQL.
6
BINO.
9
OpenSSL y mod_ssl para la creacin de host virtuales.
8 PHP 4.0.5 o posterior como modulo Apache.
9
POP3 de autorespuesta.
9 POP3/IMAP, demonio que soporta el formato de buzn tradicional de
9 Cliente de MySQJL
Unix (por ejemplo, gnu-pop3d, qpopper, ipop3d, popa3d o vm-pop3d)
Estadsticas Webalizer. o el format maildir (por ejemplo, Courier-Imap, Dovecot).
Cuotas de disco duro. 9 Proemail.
Cuotas de correo. ProFTP como versin independiente o vsftpd como versin inetd/xinetd/
Lmites de trfico. independiente.
9
Direcciones IP. Paquete de cuotas.
9
9
SSL. Sendmail o Postfix.
. . . .

Un entorno inicial listo para Internet Un entorno inicial listo para Internet
:V5

Es importante comprender que estos servidores y paquetes deben estar insta- En este captulo supondremos que comienza en un directorio de su sistema
lados en sistema como se describi anteriormente, antes de instalar ISPConfg.
el llamado /root. Puede descargar la distribucin ISPConfig con este comando (en
SPConfig no viene con estos servicios, pero necesita que existan en el sistema. La una lnea, sustituyendo la URL por la versin ms reciente ofrecida en el sitio
ventaja de esta solucin es que puede usar los paquetes por defecto de su distri- SourceForge):
bucin y actualizarlos despus usando las herramientas de su distribucin. No
tiene que compilar estos servicios a partir de las fuentes con opciones especficas # wget -c http://superb-west.dl.sourceforge.net/sourceforge/ispconfig/
ISPConf ig-2 2.

para ISPConfig, los paquetes por defecto ya lo hacen. 6 tar gz


.
.

ISPConfig configura dos directorios que contienen los archivos y los


el panel de aplicacin: /root/ispconf ig
Su terminal mostrar mensajes parecidos al siguiente:
subdirectorios que integran y /home/
admispconf ig. Puede desinstalar ISPConfig y volver al servidor basado en texto --16:20:48-- http: //superb-west .di sourceforge.net/sourceforge/
ejecutando /root/ ispconf ig/uninstall; algunos lectores harn esto despus ispconf ig/ISPConf .ig-2 .2.1. tar .gz
de leer este libro. => ISPConf ig-2 2 1 tar gz
1
. . .
.

Resolving superb-west.dl.sourceforge.net... 209.160.59.253


Connecting to superb-west di sourceforge.net |209.160.59.253 :80.
. .

Demonios especiales de ISPConfig connected.


HTTP request sent, awaiting response... 200 OK
Adems de gestionar as aplicaciones que ha instalado en el .sistema, Length: 26,633,490 (25M) [application/x-gzip]
ISPCon fig mantiene sus propias versiones de unas cuantas aplicaciones que 24% [========> 6,533,049
] 252.80K/s ETA 01:32
Bar. Puede encontrar las fuentes de estas aplicaciones en el directorio
ispconf i g/ compile aps. Estos servicios redundantes existen Descomprima el archivo con el comando:
puede continuar gestionando SPConfig incluso si ios servicios
# tar xvfz ISPConf ig* tar gz .
.

corno el servidor pblico Apache) se caen.


permite tanto a los servidores pblicos como a los internos i
que crea un directorio llamado install_ispconf ig. Muvase del directorio
usando un puerto no estndar. hr ejemplo, el servidor interno /root/ al install_ispconf ig. Compruebe el archivo dist txt y vea si los .

para ISPConfig escuc ha en e! puerto 81 en lugar de en el 80. que valores son apropiados para su servidor Linux.
es el utilizado normalmente por el servidor Web para ofrecer sitios Web
Para Deban 3.1, los valores de dist.txt seran:

di st_init_scripts=/etc/init d . ## # debia.n.31
dist__runlevei=/etc ## # debian31

El archivo contiene 1 9 valores adicionales para Deban que no estn listados


Al igual que muchos paquetes Linux y Unix, ISPConfig se ofrece como un con- aqu.-A menos que tenga cierta experiencia en administracin Linux y est fami-
junto de archivos comprimidos con la utilidad tar, el resultado de ello a menudo se liarizado con ISPConfig, respete los valores por defecto. Debera funcionar siem-
llama tarball. Al hacer clic en el enlace Download dehttp // sourcef orge net/
: .
pre y cuando est usando una de las distribuciones que se listaban con anterioridad.
projeets/ ispconf ig, le dirige a uno de los mirrors de SourceForge. Un sitio Los administradores con conocimientos pueden cambiar los valores, aunque res-
que normalmente tiene ISPConfig es http://superb-west.dl. petando el formato del archivo.
sourceforge net/sourcef orge/ispeonf ig/lSPConf ig-2 .2.6 tar .gz.
. .
Ahora inicie la instalacin. Ejecute el comando de instalacin /setup desde .

Puede hacer clic en el enlace Download para descargar el archivo, pero debido la lnea de comandos. El script de instalacin empezar a compilar Apache con
a que el archivo es muy grande, le ser ms til copiar la URL
y pegarla en una PHP 5 que escuchar en el puerto 81. Primero, tendr que decidir qu idioma
ventana de terminal a la hora de invocar el comando wget. La ventaja de usar quiere:
wget es que un archivo se puede recuperar a pesar de que se haya interrumpido
la descarga. Si usa el comando con la opcin ~c, puede reanudar la descarga sin server2 ~/install_ispconf ig # ./setup
:

SuSE 10.0
tener que volver a empezar: si la descarga se interrumpe, simplemente vuelva a
Neu installation eines XSPConf ig-Systems . / Installation of a new
ejecutar la orden wget y la descarga se retomar por donde se dej. ISPConfig system. /
: . :

Un entorno inicial listo para Internet Un entorno inicial listo para Internet
mam

Installation d'ISPConfig sur un nouveau systeme. that are allowed to run Perl/CGI scripts, the directory should be within
Whlen Sie Ihre Sprache (deutsch/englisch/spanisch/franzsisch/italienisch/ suExec 'sdocument root On Debian and Fedora/Red Hat, suExec 's default
.

niederlndisch/polnisch/ document root is /var/www, while on SUSE it's /srv/www. If you' re


enabling suExec, the document root is a good choice for the directory in
schwedisch) / Please choose your ianguage (German/English/Spanish/
:

French/Italian/ which to put ISPConfig:


Dutch/Polish/Swedish) / Merci de choisir votre langue (Aliemand/
:
########## WEB SERVER ###.##.#####
Anglais/Espagnol/ Checking for program httpd. .

Francais/Italen/Nerlandais/Polonais/Sudois) /usr/sbin/httpd
OJC
1} de
2) en Checking the syntax of the httpd.conf...
Syntax OK
3) es
The syntax is ok!
4) fr
it
Web-Root: /home/www
5)
ni Is this correct? [y/n] n
6)
Web-Root: /var/www
7) pl
8) se
Ihre Wahl / Your Choice: / Votre Choix:
Nota: suExec es una mejora de seguridad en un servidor Web que necesita
:

CGI para poder ejecutarse por parte de ciertos usuarios.


scripts
Ver una pantalla de advertencia:

With the system installation, sorae system files are replaced where En este punto la instalacin comienza compilando el servidor Apache que se
adjustments were
made. This can lead to loss of entries in httpd.conf, named.conf as usar para presentar la interfaz Web ISPConfig en el puerto 81. Cuando el Apa-
well as in the che para ISPConfig est completo, ver un certificado SSL compilado. El progra-
Sendmail conf iguration. ma de instalacin le preguntar varios valores. Puede aceptar los valores por
Do you want to continu with the installation? [y/n] y defecto o introducir los suyos propios. La pantalla ser similar a esta:

El sistema mostrar una licencia, debera leerla y aceptarla: SSL Certifcate Generation Utility (mkcert.sh)
Copyright (c) 1998-2000 Ralf S. Engelschall, All Rights Reservad.
Do you accept the license? [y/n] y Generating custom certifcate signed by own CA [CUSTOM]
The system will display a license, which you should read and then accept:
El programa de instalacin proceder a preguntarle cuestiones acerca de la Do you accept the license? [y/n] y
configuracin del sistema (p. Ej, por el MTA, servidor FTP, servidor Web, logs,
etc...) debido a que tiene que tener instalados todos los paquetes en su sistema,
STEP 0: Decide the signature algorithm used for certif icates
The generated X.509 certif icates can contain either
debera ser capaz de responder a todas las preguntas.
* RSA or DSA based ingredients. Select the one you want to use.
Durante la primera parte de la instalacin, el script le preguntar en qu modo Signature Algorithm ((R)SA or (D)SA) [R]
quiere ejecutar la instalacin. Seleccione el modo experto: [ca.keyT
STEP 1: Generating RSA prvate key for CA (1024 bit)
1) standard
1698765 semi-random bytes loaded
2) expert Generating RSA prvate key, 1024 bit long modulus
Your Choice: 2 ++++++

En modo experto, tendr que elegir algunas opciones que ISPConfig asigna e is 65537 (0x10001)
por defecto en el modo estndar.
STEP 2: Generating X.509 certifcate signing request for CA [ca.csr]
When prompted for a default directory, you can choose any directory You are about to be asked to enter Information that will be incorporated
you like, but make sure it is on a partition with enough disk space for into your certifcate request.
the web sites you plan to host. Furthermore if you want to configure What you are about to enter is what is callad a Distinguished ame or a DN.
,

quotas with ISPConfig, make sure you enabled quotas for that partition There are quite a few fields but you can leave some blank
as described in Chapter 2. If you want to enable suExec for web sites
For some fields there will be a default valu,
..
. : ) :: :: ::
: : :

108 Un entorno inicia! listo para Internet Un entorno inicial listo para Internet

if you enter ' .


the f ield will be left blank.
' , snakeoil dom/emailAddress=www@snakeoil dom
. .

Country ame (2 letter code) [XYJ : Getting CA Prvate Key


2 State or Province ame (full ame) [Snake Desertj : Verify: matching certifcate signature
3 Local i ty ame (e.g, city) [Snake Town] ./conf /ssl crt/server crt OK
. . . :

4 . Organization ame (e.g, company) [Snake Oil Ltd] ,

5 . Organizational Unit ame (e.g, section) [Certifcate Authority] En los pasos 7 y 8 del proceso de creacin del cert ificado, se le preguntar si
6 . Common ame {eg, CA ame) [Snake Oil CA] quiere encriptar las claves respectivas:
7. Email Address (e.g, name@FQDN) [ca@snakeoil.domj :

8. Certifcate Validity (days [365] :

STEP 7: Enrypting RSA prvate key of CA with a pass phrase for security
STEP 3: Generating X.509 certifcate for CA signed by itself [ca.crt] [ca.key]
Certifcate Versin (1 or 3) [3] The contents of the ca.key file (the generated prvate key) has to be
Signature ok kept secret. So we strongly recommend you to encrypt the server. key file
subject=/C=XY/ST=Snake Desert/L=Snake Town/0=Snake Oil, Ltd/OU=Certif icate with a Triple-DES cipher and a Pass Phrase.
Authority/ Encrypt the prvate key now? [Y/n] n :

CN=Snake Oil CA/emailAddress=ca@snakeoil dom .


writing RSA key
Getting Prvate key Enter PEM pass phrase
Verify: matching certifcate & key modulus Verifying - Enter PEM pass phrase:
Verify: matching certifcate signature Fine, you' re using an encrypted prvate key.
. ,/conf/ssl .crt/ca.crt: /C=XY/ST=Snake Desert/L=Snake Town/0=Snake Oil, Ltd/
OU=Certf icate Authority/CN=Snake Oil CA/emailAddress=ca@snakeoil dom .
STEP 8: Enrypting RSA prvate key of SERVER with a pass phrase for
error 18 at O depth lookup:self signed certifcate security [server. key]
OK The contents of the server. key file (the generated prvate key) has to be
kept secret. So we strongly recommend you to encrypt the server. key file
STEP 4: Generating RSA prvate key for SERVER (1024 bit) [server. key] with a Triple-DES cipher and a Pass Phrase.
1698765 semi-random bytes loaded Encrypt the prvate key now? (Y/n) n :

Generating RSA prvate key, 1024 bit long modulus What email address or URL should be used in the suspected-spam report
++++++ text for users
++++++ who want more information on your fllter nstallaton?
e is 65537 (0x10001) (In particular, ISPs should change this to a local Postmaster contact)
default text: [the administrator of that system]
STEP 5: Generating X.509 certifcate signng request for SERVER [server. csr]
You are about to be asked to enter information that will be incorporated Responda n a estas preguntas. En caso contrario, siempre se le preguntar la
into your certifcate request. contrasea cuando quiera reiniciar el sistema ISPConfig, lo que significa que no
What you are about to enter is what is called a Distinguished ame or a DN. podr reiniciarse sin interaccin humana.
There are quite a few fields but you can leave sote blank
For some fields there will be a default valu, Si la compilacin falla, el proceso de instalacin se para y todos ios archivos
If you enter the field will be left blank. compilados se eliminan. El mensaje de error que obtenga debera indicar la razn
1 Country ame (2 letter code) [XY] :
del fallo. En la mayora de los casos, los archivos de cabecera para un paquete son
2 State or Province ame (full ame) [Snake Desert]
los que faltan.
.

3 Locality ame
. (eg, city) [Snake Townj
4 Organization ame
. (eg, company) [Snake Oil Ltd) ,
Sabiendo la razn, revise
configuracin del servidor y solucione el proble-
la
5. Organizational Unit ame (eg, section) [Webserver Team] ma. Si el directorio install_ispconf ig no
se ha eliminado, brrelo manual-
6. Common ame (eg, FQDN) [www snakeoil dom]
mente. Luego, descomprima las fuentes de nuevo, vaya al nuevo directorio
. .

7 Email Address
. (eg, naroe@f qdn) [wwwsnakeoil dom] .

8 Certifcate Validity
. (days) [365] :
install_ispconf ig y ejecute / setup. No puede instalar ISPConfig dos veces
.

desde el mismo directorio install_spconf ig despus de que haya ocurrido


STEP 6: Generating X.509 certifcate signed by own CA [server. crt] algn error.
Certifcate Versin (1 or 3) [3]:
Signature ok Si alguno de
paquetes necesarios no est presente, la rutina de instalacin
los
subject=/C=XY/ST=Snake Desert/L=Snake Town/0=Snake Oil, Ltd/ el paquete perdido, borre el directorio install_ ispeonf ig,
se detendr. Instale
OU=WebserverTeam/CN=www. descomprima !SP_Conf ig de nuevo y vuelva a comenzar.
. . / -

10 Un entorno inicial listo para Internet Un entorno inicial listo para Internet

El scriptde instalacin verifica la sintaxis de los archivos de configuracin de Llegados a este punto, puede indicar la direccin IP de su servidor y el nombre
Apache existentes. Un error provocar que la instalacin de ISPConfig se detenga. de dominio seguido por :81 en su navegador para acceder a la pantalla de login

Si todas las condiciones se cumplen, necesitar ofrecer los siguientes valores de ISPConfig.
durante la instalacin:

Please enter your MySQL server: localhost Estructura de directorios de ISPConfig


Please enter your MySQL user: root
Please enter your MySQL password: Su contrasea para MySQL
Como se mencion previamente, el directorio principal configurado por ISP-
Please enter a ame for the ISPConfig database: ispconfigdb
Please enter the IP address of the ISPConfig web: 192.168.0.1 Config se llama ispconfig y est situado en el directorio donde se instal (/root
Please enter the host ame: www en este captulo). Tambin puede encontrar otro directorio en /home llamado
Please enter the domain: xyz.de admi sp- conf ig. Cada directorio contiene los archivos necesarios para ejecutar
ISPConfig independientemente.
Luego el programa de configuracin le preguntar qu protocolo quiere usar.
Echemos un vistazo al directorio /root /ispconfig:
Seleccione el 2, HTTP:
!

Please select the protocol (http or https (SSL encryption) ) to use to -rwxr-xr-x root
1 root 33660 2006-04-26 12:28 cronolog
access the -rwxr-xr-x root
1 root 9673 2006-04-26 12:28 cronosplit
ISPConfig System: drwxr-xr-x 12 root root 4096 2006-04-26 09:55 httpd
1) HTTPS drwxr-xr-x 12 root root 4096 2006-04-26 12:28 isp
2) HTTP -rw-r- -r- 1 root root 8 2006-04-26 13 : 54 .oldpath httpd
Your Choice: 2 drwxr-xr-x 6 root root 4096 2006-04-26 09:50 openssl
drwxr-xr-x 6 root root 4096 2006-04-26 10:00 php
Ver que el sistema ejecuta los script finales y reinicia algunos servicios: drwxr-xr-x 4 root root 4096 2006-04-26 12:28 scripts
drwxr-xr-x 4 root root 4096 2006-04-26 12:28 standard egis
Connected successfully to MySQL server drwxr-xr-x 2 root root 4096 2006-04-26 12:28 sv
ls: /etc/apache2/vhosts d/* conf . No such file or directory
. : -rwx 1 root root 9389 2006-04-26 12:28 uninstall
Restarting soma Services...
which: no apachectl in /sbin /usr/sbin /usr/local/sbin /root/bin
( : : : :
Contiene los diferenntes archivos de configuracin de ISPConfig, Apache, PHP
usr/ local /bin /bin: /usr/bin /usr/XHR6/bin /usr/ local /libexec)
y OpenSSL, as como varias plantillas para todos los tipos de archivos de confi-
: : :

Shutting down mail servce (Postfix) done


Starting mail Service (Postfix) done guracin (para Apache, Postfix, Sendmail, BINO, proemail, etc.) ISPConfig usa
Shutting down mail Service (Postfix) done las plantillas para poder escribir los archivos de configuracin para los servicios
Starting mail Service (Postfix) done que configura.
Shutting down ProFTPD Server: done
Starting ProFTPD Server: - warning: "ProFTPD" address/port (70.253.158.45:21) Tambin encontrar muchas clases PHP que ofrecen funciones para escribir
already in use by "ProFTPD Default Installation" en los archivos de configuracin del sistema. Resumiendo, /root /ispconfig
done contiene el ncleo de ISPConfig. En el directorio /home / admi sp conf i g, podr
Shutting down ProFTPD Server: done
ver otro conjunto de directorios:
Starting ProFTPD Server: - warning: "ProFTPD" address/port (70.253.158.45:21)
already in use by "ProFTPD Default Installation"
done -rwxr-xr-x 1 admispeonf ig admispeonf ig 242006-04-26 12:28 .forward
Starting ISPConfig system. .
drwxr-xr-x 8 admispeonf ig admispeonf ig 4096 2006-04-26 13:53 ispconfig
/root/ispconfia/httpd/bin/apachectl startssl : httpd started drwxr-xr-x 2 admispeonf ig admispeonf ig 4096 2006-04-2 6 12:28 maiistats
ISPConfig system is now up and running! -rwxr-xr-x 1 admispeonf ig admispeonf ig 176 2006-04-26 12:28 .procmailrc

Los desarrolladores finalizan el script de instalacin con: Contiene la interfaz de ISPConfig, es decir la interfaz Web, adems de algunas
herramientas como SpamAssassin (http://spamassassin.apache.org) y
Congratulations Your ISPConfig system is now installed. If you had to
!

install quota, please take the steps described in the installation manual.
ClamAV (http //clamav. elektrapro. com). Puede configurar estos a travs
:

Otherwise your system is now available without reboot de ISPConfig para protegerse contra el spam y los virus.
.

Un entorno inicial listo para Internet Un entorno inicial listo para Internet

servidor y usuarios con https:// si seleccion HTTPS como el protocolo ISPConfig durante la instalacin).
En la pantalla de autentificacin (figura 4.3), introduzca el ID adrnin y la con-
trasea admin.
Configurar un sitio Web es uno de ios primeros pasos para conseguir un ser-
vidor de Internet completamente funcional. Esta seccin le mostrar todos los 'Administracin Gestor tSP Gestor DMS Web rr? P Factura .antas Ayuda --iaiMt
,

pasos necesarios.
Tal vez piense que puede ir al sitio Web de ISPConfig y leer los manuales, sin
m
Niusva fe/engedcr
a>
Nueve feote
&
Ffetevo po Pson
.
tfs
j ^
nasdng Mueva csrpety 9ustar
instor ISP xponrfir qo!aj>t>r 1

embargo tenga en cuenta que ios desarrolladores de ISPConfig escribieron la do-


(

<3'k / atfmln
.

/ evs>v*tfor
J '*99
cumentacin de usuario para sitios dedicados al alojamiento Web. Si esta es su de* mm mmm
intencin, le recomendamos que lea los manuales de http / /ispconf ig org. : .

Servidor en lina desde: Od, .3:35


En caso contrario, supondremos que desea usar su servidor con un nico admi- i

1 usrar
Usuarios en linea:
nistrador del sistema que gestiona sus propios sitios Web seguros, el correo y los
i

Carga de la CPU 1 Minuto: 0.35

servidos FTP Carga de la CPU 5 Minutos: 0.28

Carga de la CPU 15 Minutos: 0.58


ISPConfig necesita que configure un diente que tenga uno o ms dominios de
Filesystem Slze Used Avall Use% Moimted
internet. En nuestro ejemplo, configuraremos un cliente sencillo (de uno de ios
/dev/sda6 35G 3.3G 30G 10% /

autores del libro) que tiene cuatro dominios: varrun 506M 120K S06M 1%/var/run
varlock S06M 4 OK 506M 1 % /var/lock
centralsoft.org
udev S06M 112 K S06M 1% /dev
0
linuxnewswire.org devshrn 506M 0 S06M 0% /dev/shm

Irm 506M 19M 488M 4% /tib/modules/2 6.15-26-386/volatile


opensourcetoday.org
/dev/sdal 98G 63G 36G 64% /media/sdal
0
tadelstein.com /dev/sdaS 50G 320K 50G 1% /media/sda5

Cuando mire el contenido del directorio /var/www ver cmo ISPConfig con-
figura los siguientes dominios:

$ ls -a
apache2-default sharedip web2 web4 webalizer www.opensourcetoday.org Figura 4.1. Interfaz ele gestin de ISP.

localhost webl web3 www.centralsoft.org www.linuxnewswire.org


www. tadelstein.com
m Gestor ISP [
expandir colapsar

Compare el listado de este directorio con la lista de sitios Web de la figura 4.1 0-tjk # admin
S'd & Revendedor
Cada sitio Web contiene un directorio. El directorio www cuyos nombres mues- & Clientes
t-b-U / Sitios
tran los dominios (como www.opensourcetoday.org) son enlaces simblicos Papel era
central soft.orqj
que el sistema conoce como webl, web2, etc.
i

-
-5;
Tinhelp

|| tadlestein
da una mejor idea de la lista de dominios. Fjese que en la

La figura 4.2 le

figura 4.2 el domino aparece para cada directorio del listado de la lnea de co-
mandos.
Figura 4.2. Lista de dominios que gestiona ISP.

Aadiendo dientes y sitios Web


Luego, inmediatamente cambie la contrasea por una que slo usted conoz-
Para configurar el diente y los dominios, primero debe entrar en la interfaz de ca. Para poder cambiar la contrasea seleccione Herramientas desde la barra de
ISPConfig. En su navegador Web, teclee la direccin IP del servidor seguida del herramientas y seguidamente haga clic en el smbolo de contrasea (vase la
puerto para ISPConfig 8 1 En nuestro caso, http://70.253. 158. 45*. 81 (use
: . figura 4.4).
) .

Nuevo revendedor Nuevo cliente Nuevo sitio Pian de hosting Nueva carpeta Buscar

Gestor I5P I
expandir colapsar J

-Sg ? admin
Revendedor
'di / Clientes
ra OJ Sitios
-M Papelera
*} centralscfi.org
M. iadiestein

CS/r..x^ A Cl .i .. ten
Figura 4.3. Pantalla de autentificacin de ISPConfig. A.

Herramientas y Opciones Ahora veamos cmo hemos creado el cliente tadelstein y el sitio Web linhelp.
13-isD Genera
;

3
I

Cambiar c lava)
|
Haga clic en Nuevo Cliente en el men de gestin de ISP Ver un cuadro de dilo-
!
~ CamBiar1ega|e
go similar al de la figura 4.7.
i--) Move Wabsites
HD-
Wnois
f -p Escaneador de puertos
j
13 Versin del software Administracin Gestor ISP Gestor DMS VVeb-fTP ISP Factura Herramientas Ayuda Finalizar

Cji-'iJ Mane|ador de respaldos


ej) Respaldo
Q tt|J Exportar datos
!

H
Datos maestros Mjfr/o tyjevo c*tr< Niwvo PRin a Nuv carpeta R
j castor ISP colopssr
3-a '
3HJ / normo-!**
<3 ;J / cuento
9-0 J s*
Figura 4.4. Men Herramientas. -"y Papelero
- conuolsoft.orfl
Grupo: admin
-i tad-este- Titulo:

En la figura 4.5 se muestra el cuadro de dilogo Cambiar contrasea, all po- Ordenar: admin
dr rellenar el formulario. 0l94 ma**UO* $

Salga del sistema y entre con la nueva contrasea. diente Numero: Es asignada automticamente.
Empresa:
Ttulo: p
Cambiar clave :

Nombres:
Apellidos:
Clave
Calle:
anterior
Codigo postal:
Ciudad:
Clave nueva: Provincia:
Confirmar Pas:

clave: Telefono:
fax:
Save Cancel Email:
Direccin Web: ht p : // f Abrir)

Figura 4.5. Formulario de ISPConfig para cambiar contraseas. Figura 4.7. Formulario de informacin del cliente.

Antes de configurar un sitio Web, tendr que crear un propietario del sitio. Introduzca la informacin relevante del cliente. La figura 4.8 muestra cmo
Seleccione la barra de herramientas Gestin de ISP Ver un men de navegacin hemos rellenado el formulario. Fjese en que hemos usado Linhelp.org
como
similar al de la figura 4.6. compaa.
el nombre de la
Un entorno inicia! listo para Internet Un entorno inicial listo para Internet 117

Sib

S aodtffl IMVB
Gestor SP |
expandir colapser {
Grupo: admira-
& .? 3*111.-1

$H,J 1/ Sowandedor Titulo: linhelp


'I-v^J J Clientes
fit-p Sitios Ordenar: admin [A
Wijif Pajxtfera
-i fstiafsot.org
Grupo; adfflin
[bSosTr!^
Titulo: tadlestein
tadles
Ordenar: adra n
Servidor mal: Servidor Local de Correo
m<js r?v*as!f
Tama o lo del log: 30%
Directorylndex: ndex html -W!
ClienteNumero: 251 .

impresa: ndex .ht y


ndex php .
Titulo:
ndex php .

Nombres: Tora Aldelstein ndex php4 .


J1
Apellidos:
Webalizer
!*
Statistics:
Codicio postal:
Ciudad;
Provincia (..e.wardar j L.e.anqglaL. J LB.Qttarj

Pas;
Telefono:
fax: Figura 4.9. El formulario usado para crear el sitio Web linhelp.org.
Email:
Direccin Web:http:// (Abrid
Ayuda f matizar
Administracin Gestor Sp" Gastor DNS VVfab-FTP ISP Factor*

Figura 4.8. Formulario completo para el cliente administrativo.

En la parte izquierda del men de navegacin, ver un nuevo icono represen-


tando una persona y acompaado por el nombre del diente. Ahora ya puede
Exceso de trafico: Suspender
configurar un sitio Web. Simplemente seleccione Nuevo sitio desde la barra de
Usuarios (Max): . i
herramientas y ver el cuadro de la figura 4.9. Dominios (Max): . j

Proporcione al sitio web un nombre y la direccin IF^ y cree un registro DNS.


Acceso Shell: O
Fjese tambin en las solapas del formulario, en la parte de arriba de rea donde
Scripts CG1:
hay que introducir el nombre: CCS estndar: G
Scripts de PHPs C
8
Base PHP Safe Mode:
SSS:
Usuario y correo
Acceso FTP;
Co-Dominios MySQl;
Base de datos (Max): i i
8
Estadsticas
SSL:
Opciones FTP annimo:
FTP annima MB;
31
Cuenta WAP:
Paginas de error;
Cada una de estas solapas ofrece varias funciones de configuracin y gestin. MaiSoset tagln:
La figura 4.9 no muestra las opciones de la solapa Base. Tambin encontrar
algunas otras opciones que le puede dar al administrador de sitio. Para nuestro (Opcional):
sitio, hemos
ofrecido acceso por lnea de comandos, base de datos, creacin de
FTP y opciones de autentificacin, como se muestra en la figura 4.10. Figure 4.10. Opciones del sitio Web.
Un entorno inicial listo para Internet Un entorno inicial listo para internet

Fjese tambin en
la figura 4.10 debajo de FTP Annimo, el sistema pone por
defecto - Esto permite al sitio ofrecer espado ilimitado para FTP Esto sera til
i.

si quisiera ofrecer acceso como mirror de un sitio de descargas, por ejemplo. En

caso contrario, es mejor definir un lmite de manera que nadie pueda subir tan- Linhelp Com mere ia! Suppcrt Canter
tos datos como para saturar el espacio en disco necesario para otros servicios. En
este punto, ya tiene un sitio Web til. En la figura 4.11 se muestra, adems, una Navigation
wiat's Vw
forma fcil de aadir pginas usando un cliente FTP grfico como gftp para trans- Pay-per-incident
ferir un sitio que ha sido creado en su escritorio. Linux Help Desk
Linhelp provides complete Ycu wl I rvi

Leve! 1, Leve! 2 and Levei 3 rjumerous new


nux support fot RPMs built

spefically for Sun's


English-tanguage customers.
ETP i,ocai ge moto Marcadores Transferencias informe Herramientas Ayuda We spec/alite in Debian, JOS and SUSE
mpbyrnent
Novel'sSUSE Oisttibutions SLES9 at the JDS
and Federa Core. Por more Commumty Web
Puerto-,
Select Area of infor maci n.
Site Repository.
Interert Bfijjalfifflte

i/home/ljarevalo
No conectado' Download Sun's
EoSeipnse
!"(}" Archivo ''amafio Usuario < A flj Archivo Tamao Usuario Gru Training
We offer single or muti-day
Linux Java Desktop
System
%. f 1
dfsMMMWaKiMMSg&M 1
1

i
Govefivpent Jsssrs
training sessions and course
1 .gftp 4036 Ijaravalo ii

Sal kde 4096 Ijarevaio ij Expime sise S curricula to heip enterprise, System
53 .local 4096 Ijarevaio ij unux Besito govemment and educabonal
63 .meop 409(5 ijarevaio ii
(OReiliy Sool.J oigani2abons spaed their

O .netbeans 4096 Ijarevaio i adaptaon of open software Oistrowatch has an


exceilent summary
SS -qt 4096 Ijarevaio i) standards. For saca
M .thumbnails 4096 Ijarevaio ii

.vnc 4096 Ijarevaio


Tm Dpskron
1 4096 harpval l>; r.J
Figura 4.12. El sitio web Linheip.org.
bi 1 i. Id
Archivo Progreso La figura 4.13 ofrece un ejemplo del directorio raz de un sitio Web. La pgina
de inicio semuestra siempre que ei navegador especifique ei nombre del directo-
rio, debido a que tiene el ttulo por defecto. La pgina de inicio contiene enlaces a
ugerencias sobre este programa, por favor envemelas. Puede obtener en cualquier momento las ltimas noticias
sobre el grTP de mi pgina web en http://ww.Mgftp.org/
otras pginas del sitio.

figura 4.13. puede tratarse como un


gfTP se entrega sin ABSOLUTAMENTE NINGUNA GARANTA: para ms detalles, lea el archivo COPVING, Esto es
software libre, y usted puede redistribuirlo bajo ciertas condiciones: para ms detalles. ea ei archivo COPYING, El diagrama de ejemplo de la grfico de
Francisco Javier F, Serrador serrsdor@gnome.org>
sectores. El cdigo actual con la pgina de inicio se parece a esto:
Gustavo D. Vranjes <gvranjes@abaconet.com, ar>
i

i
, <a href =" /about us html." >About Us </axbrxbr>
. .

Figura 4.1 1. Usando gftp para transferir archivos al directorio raz linhelp.org.
i

<a href = " ./produces. html ">Products </axbrxbr>


<a href = ". /services html ">Services </axbrxbr>
.

Poniendo en un navegador http / /linhelp org ahora podr ver nuestra .


<a href =". /support .html ">Support </axbrxbr>
:

pgina index.html. Puede ver dicha pgina en la figura 4.12.


Normalmente,el equipo Web al que le d soporte crear la estructura de di-
Ahora ya tenemos un sitio Web simple y funcional. Echemos un vistazo a Ja rectorios pginas Web. Probablemente necesite ofrecerles una base de datos
y
figura 4.13 para comprender lo que estamos configurando.
tambin, pero esto se tratar en otro captulo. Por ahora, slo necesita saber
ISPConfig usa un modelo jerrquico con /var/www/webl/web como el direc- cmo establecer un sitio Web y un dominio de Internet.
torio raz para el puerto 80.En cada directorio que cree en esta ruta. Apache crea
otra rama donde puede poner pginas. Por defecto, cuando un navegador solicita
el directorio. Apache busca el archivo HTML llamado index.html para mostrarlo.
Si no ha creado un archivo ndex html, se mostrarn los nombres de los archi-.
lina de las tareas ms importantes a ia hora de administrar sistemas Linux es
vos que estn en el directorio raz. la gestin de usuarios y sus cuentas. Puede usar el panel grfico ISPConfg. Una
Un entorno inicial listo para Internet

vez que haya configurado los dominios, al seleccionar uno de ellos en la seccin
de gestin de ISP de la barra de tareas traer al primer plano la pantalla del sitio
que se mostr en la figura 4.9. Volvamos atrs para verla.

O'KFJUY

Pgina Web enlazada desde Index.btm

Figura 4.13. Estructura de un sitio web simple.

El formulario tiene seis solapas. La segunda solapa de la izquierda se llama


Usuario y Correo. Desde esta solapa podr aadir nuevos usuarios gestionar los
y
existentes. Cuando selecciona Nuevo, podr ver otro formulario como el de la
figura 4.14.
En este formulario, puede introducir los detalles de nuevos usuarios y esta-
blecer los lmites de almacenamiento. Un valor de -1 ofrece espacio ilimitado,
pero puede gestionar las cuotas de la manera que prefiera.
En solapa Opciones Avanzadas (figura 4.15), puede usar una opcin para
la
permitir que el correo enviado a un usuario sea redirigido a otra direccin. En
otras palabras, si el usuario tiene una direccin de correo alternativa que desea
usar, puede usar dicha opcin para enviarle el correo a esa cuenta.
Un entorno inicial listo para internet Un entorno inicial listo para internet

Alias de correo: Si no quiere exponer su buzn de correo pblicamente, los filtrar spam. Muchos administradores prefieren esta estrategia inicialmente,
el
visitantes del sitio pueden enviar correo a un nombre genrico, tal como hasta que el usuario tenga una base de datos de correo identificado como spam.
info@centralsoft.org o webmaster@centralsoft.org. Puede ha- Despus, el usuario puede cambiarse al modo de descarte, donde el correo iden-
un alias de correo.
cer esto ofreciendo tificado como spam se borra del servidor.
Coger todo el correo: Esta opcin redirige al buzn especificado todos los Ahora echemos un vistazo a las opciones para el spam:
correos que se hayan enviado a cuentas de usuarios inexistentes. La gente
Aciertos de spam: El filtro de spam ejecuta un determinado nmero de
normalmente escribe a direcciones usadas frecuentemente como editor@
pruebas sobre correos entrantes y asigna puntos a cada prueba. Si la suma
centralsof t org o publicidad@centralsof t org sin verificar que
de los para estas prueba alcanza o supera el valor especificado por los
. .

estas direcciones son vlidas. Puede recoger estos mensajes en una cuenta
Aciertos de spam, el correo se clasifica como spam y se maneja de acuerdo
de usuario creada a tal efecto.
con la estrategia definida por el usuario.
Escanear correo: Si quiere escanear el correo en busca de virus o cdigo
Reescribir asunto: En el modo aceptar, escoger esta opcin significa que la
JavaScript para servidor, use esta opcin.
lnea que identifica el asunto de cada correo se identificar como spam
Autoresponder: Esta opcin le permite enviar una respuesta automtica a aadiendo un prefijo identificativo (por defecto ***SPAM***). Esto permi-
los mensajes enviados a un usuario especfico, esto es til, por ejemplo,
te al usuario ordenar el correo electrnico segn el asunto.
cuando el usuario va a estar fuera de la oficina por un perodo de tiempo.
Para permitir que un usuario haga cambios en su cuenta de correo electrni-
Con respecto a la solapa Filtro de Spam & Antivirus, mostrada en la figura
s mismo (incluso la contrasea, el filtrado de spam y las
co por opciones de
4.16, puede considerar qu estrategia de spam usar. Activando el filtro de spam para dicho usuario en la so-
spam), debe seleccionar la opcin Usuario de correo
para una cuenta, puede especificar el comportamiento del filtro. 4.10). Para hacer cambios, el
lapa Base del formulario del sitio (Vase la figura
usuario de correo puede autentificarse en el sistema a travs de la direccin:

http //centralsof t org 81/mailuser sci.


:
. : .

Directorios pblicos, de usuario y de inicio

Cada usuario de un dominio gestionado por ISPConfig tiene su propio direc-


torio de inicio en el directorio de usuarios. Si el acceso FTP est permitido, los
usuarios aparecern en su directorio de inicio al autentificarse va F R Cada di- i

rectorio de inicio tambin contiene una carpeta llamada Web a la que los usua-
rios pueden acceder visitando una URL del tipo: http / /www centralsof t
org/ :
. .

-usr o http / / www centralsof t


:
.
org/users/ user. .

La figura 4.1 7 muestra la estructura de un directorio de inicio para el usuario


creado en centralsof t org. .

Configuracin del cSienie de correo electrnico

En punto, debera comprender los aspectos bsicos a la hora de configu-


este
rar un sitio Web, crear un usuario y manejar el correo. Pero adems, tendr que
Figura 4. 16. La solapa Filtro de spam & Antivirus. ser capaz de ayudar a sus usuarios a configurar sus clientes de correo electrni-
co, especificando los servidores de correo entrante y saliente. En nuestro
sistema,
Si selecciona la estrategia de aceptar spam, permite que el spam entre en el ISPConfig usa serverl.centralsoft.org tanto como servidor SMTP como
buzn del usuario, siendo el agente de correo del usuario (MUA) el encargado de servidor POP3/IMAR
Un entorno inicia! listo para internet Un entorno inicial listo para Internet

Otras veces, no obstante, tendr que adaptarse a la situacin en funcin del


momento, sin tiempo para la preparacin. Esto requiere improvisacin. Para ser
completamente adaptable, hay que ser capaz tanto de anticiparse como de im-
provisar.

No importa lo riguroso que sea a


la hora de salvaguardar su servidor de
Internet, por alguna extraa combinacin de razones, su sistema podra fallar.
En un mundo perfecto, podra monitorizar cada servicio y el sistema le alertara
inmediatamente del fallo. Pero, no vivimos en un mundo donde todas nuestras
expectativas puedan verse cumplidas.
Figura 4.1 7. Vista de tipo navegador para el directorio de usuario.
Imagine que aloja su servidor en un ISP a muchos kilmetros de su base de
En los dientes modernos de correo electrnico, existe la opcin de elegir la operaciones. Si este servidor se viene abajo, alguien podra llamar al ISP y conse-
capa de transporte seguro (TLS). Seleccione TLS cuando sea posible para configu- guir que personal de servido vuelva a dejarlo funcionando. La persona encar-
el

rar e! servidor de correo saliente. Debido a que la mayora de los clientes de co- gada puede que no est disponible inmediatamente, por lo
del soporte tcnico

rreo usan su ISP como servidor SMTP, puede seleccionar TLS si su ISP lo usa. En tanto tendr que esperar un tiempo con una aplicacin crtica cada.
la gran mayora de casos, su ID de usuario
y contrasea viajan sobre las lneas de En una empresa grande, podra sentirse aislado si su servidor est situado a

su ISP en forma de texto plano. muchos kilmetros. Los operadores de los centros de datos no suelen conceder
Para recibir correo, configure el servidor de entrada (nosotros usamos acceso a la sala de ordenadores, ni siquiera a los administradores de sistemas

serven . central soft org) y seleccione o POP3 o 1MAP Use su nombre de


.
independientemente de su ubicacin, por lo que es muy importante que un ad-
sistema (por ejemplo: webl_adelstein) y especifique la direccin de correo como ministrador sepa gestionar sus sistemas remotamente.
el alias (por ejemplo: tom@centralsoft.org). Un demonio monitorizador de demonios (DMD) es una utilidad que observa
Si aparece un mensaje de error como "-ERR Unknown AUTHORIZATION state sus servicios y automticamente intenta reiniciarlos cuando fallan. Si un servi-
command" al intentar obtener el correo va POP3, probablemente se haya olvida- do falla, normalmente tiene que autentificarse en el servidor y abrir una consola
do de activar la encriptacin SSL/TLS. Reconfigure su cliente de correo, active para ejecutar un comando como /etc/init d/mysql restart. Un
- DMD puede,
POP3-sobre~SSL e intntelo de nuevo. sin embargo, ejecutar este comando sin intervencin por su parte.

problema. Si no se reinicia satisfactoriamente,


Si el servicio se reinicia, fin del
el DMD har un determinado nmero de intentos (por ejemplo 5) y luego
contactar con usted va mensaje de texto, correo electrnico u otra forma de
comunicacin que pueda alertarle del problema. En este punto, tendr que inter-
En el entorno actual de los negocios a veces ocurren cosas inesperadas. Algunas venir para averiguar por qu el servicio ha fallado. El DMD se ejecuta como otro
personas escanean direcciones IP en busca de fallos. O usan sofisticados diccionarios servicio de su servidor. Tiene un archivo de configuracin para elegir la opcin

de contraseas para intentar conseguir acceso como root a los servidores, de mane- que mejor se ajusta a sus necesidades. Puede hacer que se inicie manual o auto-
ra que puedan usarlos como plataformas de spam, virus o gusanos. Las situaciones mticamente.
que los administradores de sistemas tienen que afrontar tienen su raz en una com- En la siguiente seccin, configuraremos un DMD llamado monit, que tiene
binacin de factores con precisin o certeza. Por lo tanto, los administradores tienen una interfaz Web sencilla como se muestra en la figura 4.18.
que aprender a adaptarse rpidamente a las nuevas (y hostiles) situaciones. Fjese bien en que hay cinco servicios bajo vigilancia. En la figura 4.19, se
Hay dos formas de adaptarse. Primero, si est lo suficientemente concienciado, puede ver claramente cmo el sistema gestiona cada proceso. En este caso, esta-
puede tomar precauciones. Nosotros llamamos a esto anticipacin. mos mostrando sshd.
2 Un entorno inicial listo para Internet Un entorno inicial listo para Internet

lf
desde http://www.tildeslash.com/monit. Si est usando Deban, simple-
c.y tjarc aoerei nerra-mentas Eiste'ewia
mente introduzca:

moS ervke manqer - Konqturrar


Marcadores Her?<v?enas -prefe/e/cj

O * htp//IOa*IO!<: ->! 2|d-BV.*oO.'lVtc;i


lunnjQg on Ijarevaio-tSssktep with uptime. Orn and monitorl'-g:

Hcrr.e >

Load Memory

HassSasssfiB ?0.4S. t0.30.3j) 2.9%us. a.5%sy. 0.0%wa


iValue

Ijarevalo -desktop

Monltoring mode active

Monltoring status
Copyright 2000-2007 by the monlt oro iect oroup. Al! Rights Reserve'!
Check Service
Data coilected

Load average

6.5%us 4 3%sy 0.0%wa


i
Memory usage 35s6*kB 34496J

Ds&le rnonoring

O Copyright 2000-2007 by the monlt. prolect CII OUP- All Rights Resolved,
Figura 4.18. Interfaz Web para monit ejecutndose en centraIsoft.org.

que en la figura 4.19 el estado de sshd muestra que se est ejecutando y


Fjese
que sistema lo est monitonzando. En las fres lneas de la parte de debajo de la
el

pantalla, puede ver las instrucciones que se harn si sshd falla:

If failed localhost:22 [SSH] with timeout 5 seconds then restart else Figura 4.19. Inspeccionando sshd.
if recovered
then alert Despus de que haya instalado monit, edite /etc/monit/monitrc. El archi-
vo creado durante contiene montones de ejemplos y puede encon-
la instalacin
un servicio que ha fallado y enva un men-
Esta poltica simplemente reinicia
saje cuando remida satisfactoriamente.
se
ms
trar ejemplos de configuracin en http / /www. tildeslash com/monit/ : .

doc/examples .php. En nuestro caso, nosotros queremos:


Finalmente, monit ofrece cuatro botones en la parte de debajo de la pgina
para la intervencin manual. Ahora, veamos cmo funciona el sistema.
e Activar la interfaz Web de monit en el Puerto 2812.
8
Monitorizar los servicios proftpd, sshd, mysql, apache y postfix.
Crear una interfaz Web basada en Secure Sockets Layer (https) donde po-
Para poder instalar monit tiene dos opciones igual de vlidas. Puede utilizar der autentificarnos como admin.
tanto el gestor de paquetes del sistema como tambin descargar la distribucin a
Indicarle a monit que manda alertas de correo a root@localhost.
Un entorno inicial listo para Internet Un entorno inicial listo para Internet

Nuestro archivo de configuracin /et c /moni t /moni tro es: Esto significa que monit intenta conectarse con www. cent ral soft .org en
set daemon 60 el Puerto 80 e intenta acceder al archivo /monit/token. Debido a que el docu-

set log file syslog fcil ifcy log_daemon mento raz del sitio Web est en /var/www/www centralsoft.org/web, el .

set ma lserver localhost nombre del archivo se extiende a /var/www/www. centralsoft org/web/ .

set mail- forma t { from-. monit@serverl.centralsoft.org }


monit/token. Si monit no se ejecuta, significa que Apache no se est ejecutan-
set alert root@localh.ost
set httpd port 2812 and do, por lo que monit intentar reiniciarlo.
SSL ENABLS Ahora debemos crear el var/www/www. centralsoft org/web/
archivo .

PEMFILE /var/certs/monit pem .


monit/token y escribir una cadena de texto arbitraria:
allow admin: test
check process proftpd with pidfile /var/run/proftpd.pid # mkdir /var/www/www. centralsoft .org/web/monit
start program = " /etc/init d/prof tpd start"
. # echo "helio" > /var/www/www. centralsoft org/web/monit/ token .

stop program = "/etc/init d/prof tpd stop"


.

if failed port 21 protocol ftp then restart Puede seguir un procedimiento similar en su sistema.
if 5 restarts within 5 yeles then timeout Luego, cree un directorio para albergar el archivo de certificado f/var/certs/
check process sshd with pidfile /var/run/sshd.pid monit pem) necesario para interfaz Web SSL de monit:
.
start program "/etc/init d/ssh start"
.

stop program "/etc/init d/ssh stop"


. # mkdir /var/certs
if failed port 22 protocol ssh then restart # cd /var/certs
if 5 restarts within 5 eyeles then timeout
check process mysql with pidfile /var/run/mysqld/mysqld. pid Necesitar un archivo de configuracin OpenSSL para crear el certificado. El
group database resultado /var/certs/monit .pem debera ser como este:
start program = " /etc/init d/mysql start"
.

stop program = "/etc/init d/mysql stop"


.
# create RSA certs - Server
if failed host 127.0.0.1 port 3306 then restart RANDFILE = /openssl rnd
. .

if 5 restarts within 5 yeles then timeout l req ]

check process apache with pidfile /var/run/apache2 .pid i


default_bits 1024 =

group www encrypt_key yes =


start program = " /etc/init d/apache2 start"
.
distinguished_narae = req_dn
stop program = " /etc/init d/apache2 stop"
.
x509_extensions = cert_t.ype
if failed host www.centralsoft.org port 80 protocol http
i

[req_dn ]

and request "/monit/token" then restart countryName = Country ame (2 letter code)
if epu is greater than 60 % for 2 eyeles then alert countryName_default = MO
if epu > 80% for 5 eyeles then restart stateOrProvinceName State or Province ame (full ame)
if totalmem > 500 MB for 5 eyeles then restart stateOrProvinceName_default Monitoria
if children > 250 then restart localityName Locality ame (eg, city)
if loadavg (5min) greater than 10 for 8 eyeles then stop local ityName_def ault Monittown
if 3 restarts within 5 eyeles then timeout organizationName Organization ame {eg, company)
check process postfix with pidfile /var/spool/postf ix/pid/master .pid organizationName_def ault Monit Inc.
group mail organizatonalUnitName Organizational Unit ame (eg, section)
start program = " /etc/init d/postfix start"
.
organizationalnitName_default = Dept of Monitoring Technologies.

stop program = "/etc/init .d/postfix stop" commonName = Common ame (FQDN of your server)
f failed port 25 protocol sratp then restart commonName_deault server monit rao . .

if 5 restarts within 5 eyeles then timeout email Address = Email Address


emailAddress__def ault = root@monit mo .

Las sentencias y las opciones se describen en la documentacin de monit en [ cert_type ]

http / /www tildeslash com/monit/doc /manual php.


. .
nsCertType = server
: .

En la seccin de apache de la configuracin de monit, ver la sentencia: Ahora cree el certificado:

if failed host www.centralsoft.org port 80 protocol http # openssl req -new -x509 -days 365 -nodes -config . /monit. enf -out \
and request "/monit/token" then restart /var/certs/monit .pem -keyout /var/certs/monit .pem
130 Un entorno inicial listo para internet

# openssl gendh 512 >> /var/certs/monit peni .

# openssl x509 -subject -dates -fingerprint -noout -in /var/certs/


moni t .pem
# chmod 700 /var/certs/monit pem .

Luego edite /etc/def ault/monit para activar el demonio rnonit. Cambie


startup a 1 y configure CHECK INTERVALS con el intervalo en segundos que quiere
que se compruebe el sistema. Nosotros hemos elegido 60. El archivo debera que-
dar as:

# Defaults for monit initscript


# sourced by /etc/init d/ monit
.

# installed at /etc/default/monit by maintainer scripts


# Fredrik Steen <stone@debian org> .

# You must set this variable to for monit to start


startup=l
# To change the intervals which monit should run uncomment
# and change this variable.
CHECK_ I NT ER VALS = 6 0
Este captulo muestra cmo levantar un servicio de correo electrnico para
Finalmente, inicie monit:
un sitio de pequeo o medio tamao. Los elementos del servicio son:
# /etc/init. d/monit start * El servidor Postfix como agente de transferencia de correo SMTP (MTA),
que acepta correo de otros usuarios e interacta con otros sitios a travs
Ahora haga que su navegador apunte a https //your_domain 2812/ (ase-: :

de Internet para enviar el correo.


grese de que el puerto 2812 no est bloqueado por su cortafuegos) y
* Servidores Post Office Protocol (POP) y el Protocolo interactivo de acceso
autentifquese con el usuario admin y la contrasea test. Debera ver la interfaz
al correo (IMAP) para entregar el correo a sus usuarios.
Web de monit, tal y como se mostr anteriormente en la figura 4.18.
* La capa Simple Authentication and Security Layer (SASL) sirve para auten-
tificar el correo y evitar el spoofing.

Configuraremos Postfix para usar el tradicional sistema de autentificacin


basado en archivos, que puede soportar miles de usuarios. Las grandes instala-
Empezamos levantando el servidor y configurndolo de manera que pueda ciones de correo pueden almacenar nombres de cuentas de correo y contraseas
usarse como una plataforma para Internet. Hemos instalado un servidor basado en bases de datos relacinales o en directorios LDAP. Para ver un ejemplo de un
en texto sin el sistema de X Windows (por razones de seguridad y de rendimien- servidor de correo muy escalable basado en Postfix con autentificacin LDAP vase
to) y luego hemos configurado interfaces basadas en Web que le permitan ges- Zimbra (http / /www zimbra com).
: . .

tionar de manera segura y monitorizar sus servicios. Las soluciones de este captulo intentan juntar diversos componentes para ha-
En los restantes captulos, vamos a profundizar nuestra exploracin del siste- cer un sistema de gestin de correo eficiente, robusto y seguro. Hoy en da, perso-

ma de administracin de Linux. En el captulo siguiente, aprender a instalar nas como Wietse Venema (el inventor de Postfix) han conseguido reducir mucho
software administrativo que no se instala automticamente. Configuraremos la la complejidad de configuracin de los sistemas de correo electrnico. En lugar de

mayora de las aplicaciones Linux que la gente usa cada da en la empresa y en vrselas con complejas configuraciones de servidores de correo, los administrado-

negocios de pequeo y medio tamao. res de sistemas Linux tienen otros problemas ms importantes que resolver:
e Cmo asegurar el correo, una forma de comunicacin que no fue disea-
da teniendo en cuenta la seguridad, ni siquiera contra los ataques de su-
plantacin de identidad u otros ataques maliciosos.
132 Correo Correo 133

Cmo proteger datos sensibles para la compaa. por 100 de los servidores de Internet. Aunque los defensores de Sendmail defien-
Cmo dar acceso a usuarios que estn fuera de la red de la compaa. den que es flexible y escalable, muchos administradores de sistemas lo conside-
ran extremadamente complejo y difcil de configurar y mantener.
Sendmail se desarroll antes que aparecieran el spam y el software daino,
por lo tanto tiene algunas debilidades en cuanto a seguridad. Uno de los proble-
mas ms serios de Sendmail es que, por defecto, permite que la pasarela quede
abierta, es decir, que procesa cualquier correo originado por un extrao. Este
Los agentes de transferencia hacen la parte ms dura de la comunicacin en
i

problema de seguridad est ilustrado en la figura 5.1.


Internet, moviendo el correo de un sitio para otro en Internet. Para enviar un s

correo electrnico, el remitente liga su sistema a un MTA, que luego usa SMTP i

para transferir el correo al MTA responsable de entregar dicho correo a su desti-


natario.
El destinatario tiene distintas formas de recuperar el correo desde un MTA,
ninguna de ellas usa SMTO: puede autentificarse como usuario del sistema y
ejecutar el MTA, indicarle al MTA una
conexin directa (al igual que se le ndica
al ISP una un tnel en Internet desde un MTA
lnea telefnica) o a travs de
remoto. (Estamos ignorando otros mtodos como hacerlo desde una interfaz Web
como Gmail o usando un telfono mvil.) Independientemente del mtodo que el
receptor use, este recupera su correo a travs de un agente de entrega de correo
(MDA) como Courier IMAE El MDA habla con el MTA para obtener el correo y
ofrece un buzn para almacenar el correo. El correo puede mostrarse al usuario
a travs de un agente de usuario de correo (MUA), como Outlook, Evolution o
Thunderbird.
Los usuarios normalmente recuperan su correo usando o POP3 o IMAP4 so-
bre TCP/IP Casi todos los MUA
modernos soportan tanto POP3 como IMAP4. i

Los MUAenvan el correo pasndoselo a una MTA y transfirindolo sobre SMTP.


La mayora de la gente mantiene listados de las direcciones de sus contactos
en su MUA, de modo que puedan buscar la direccin de correo de la gente. En
entornos empresariales, los contactos se suelen almacenar en servidores de direc- Remitentes de correo no solicitado (UBE), tambin conocido como spammers
torio LDAP. Un montn de usuarios ignoran que pueden encontrar sus contactos
o remitentes de correo no deseado (UCE) son los responsables de ms del 50 por
en los sistemas LDAP. 100 del trfico de correo de Internet. Esto provoca que las colas de correo, los
servidores DNS, la capacidad de procesamiento y de almacenamiento y las
infraestructuras se resientan. Los UBE tienen una variedad de tcnicas que les
permite esconder su identidad real, incluyendo la suplantacin de direcciones
IP, la creacin de correo basura
y su dispersin a travs de los servidores SMTP
Quiz qu hemos escogido Postfix como MTA en lugar de
se pregunte por abiertos.
Sendmail, servidor de correo para Internet original y que fue desarrollado a
el Los MTA bien configurados aceptan correo saliente slo para las direcciones
principios de la dcada 1980 por Eric Alman en la Universidad de California- que pertenecen a sus usuarios legtimos, esto est normalmente limitado a una
Berkeley. Sendmail estuvo presente en la mayora de las instalaciones de MTA en subred determinada. Pero, por defecto, Sendmail procesa el correo de cualquiera. Si
Internet, pero no estamos seguros de que esto siga siendo as. Muchos sondeos usa Sendmail y no deshabilita esta opcin, los UBE pueden usar su MTA para
indican que la popularidad de Sendmail ha cado rpidamente, hasta llegar al 40 ocultar su origen. Su servidor de correo podra estar en listas negras para pasare-
13 Correo Correo

las abiertas, lo que podra provocar que correo legtimo fuera tratado como spam.
En teora, puede tener problemas legales si facilita la distribucin de correo basura.
La base de usuarios de Sendmail a menudo opera con versiones obsoletas, sin Use la ltima versin estable de Debian y configrela con el nmero mnimo
parchear y sin documentar, por lo que facilitan las cosas a los UBE. Los desa- de paquetes. Si todava no tiene un disco de instalacin en red para Debian, des-
rrolladores de Sendmail son conscientes del problema y trabajan duro para ha- crguelo de http: / /www. us debian org/CD/netinst. Despus haga una ins-
. .

cerlo ms seguro, pero los mejores avances de seguridad se consiguen con cada talacin de red y asegrese de que proporciona un nombre de dominio correcto.
versin de pago del producto. Aaron Weiss aclara algunas dudas entre la versin Luego, configure Debian como se sugiere en esta seccin.
gratuita y la versin de pago de Sendmail en el artculo "The Fee vs. Free Divide"
El instalador de conduce por un script estndar antes de la configu-
Debian le
(http / /www serverwatch com/ tutorials/article php/3580006):
. .
: .
que tenga que elegir el tipo de
racin, siga la rutina de instalacin estndar hasta
Para comercializar Sendmail y ofrecer productos de valor aadido que mejor el instalacin que desea. La pantalla que podr ver ser as:
desarrollo, se cre Sendmail Inc. Su producto estrella, Sendmail Switch est basa-
do en la versin libre de Sendmail. Se asienta en su ncleo e incluye una consola ( ) Entorno de escritorio
grfica de gestin, facilidades para la seguridad, soporte tcnico, filtros de gestin ( ) Servidor Web
Servidor de Impresin
de contenidos (incluyendo defensas anti-spam y antivirus), soporte para SSL, SASL ( )

{ ) Servidor DNS
y directorios LDAP, y capacidades de auditora, clustering y gestin remota. Todo { ) Servidor de archivos
ello acompaado de un instalador grfico y asistentes para tareas. Servidor de correo
{ )

Adems, Sendmail Consortium (responsable de la versin libre del MTA


el ( ) Base de datos SQL
Sendmail) est patrocinado por Sendmail Inc. Ofrece mdulos anti-spam, antivirus ( ) Seleccin manual de paquetes

y para la gestin remota del MTA. Lo siguiente es una descripcin del modelo de
negocio de Sendmail Inc (obtenida en http //www. sendmail com/company):
:
.
No seleccione ninguna opcin, no va a usar el servidor de correo por defecto
(Exim) puesto que en su lugar va a instalar Postfix. Slo presione el fabulador y
Sendmail ofrece diferentes soluciones empresariales para mensajera segura
haga clic en el botn OK. El instalador de Debian proceder a descargar y a insta-
entre las que se incluye correo electrnico, voz y mensajera instantnea. Las lar los paquetes. Durante las descargas, mostrar una o ms pantallas grficas
soluciones Sendmail controlan correo entrante, saliente e interno. Sendmail es
el
donde preguntar si quiere configurar Exim (Exim-config). Elija Sin configura-
una implementacin portable, que puede desplegarse sobre gran variedad de soft-
cin. Luego responda S cuando le pregunte De verdad que desea dejar el siste-
ware y aplicaciones. Los productos de Sendmail funcionan en las infraestructuras
ma de correo sin configurar?.
de correo heterogneas como Exchange, Notes, Groupwise y otras soluciones de
El instalador de Debian continuar descargando y configurando paquetes,
correo.
cuando Debian acabe su trabajo, ver una pantalla agradeciendo el uso de Debian.
Postfix se dise desdeel principio como un sustituto robusto y seguro para
En este punto debera eliminar algunos programas innecesarios usando la utili-
Sendmail. El MTA
por defecto para Deban es Exm 4, pero preferimos Postfix
dad apt-get. Si decide usar otra distribucin, puede eliminar los paquetes usando
porque Exiin tiene algunos problemas de escalabilidad. Carece de una cola cen-
otros procedimientos. Bajo Debian, ejecute:
tral de gestin y capacidad de carga balanceada. Adems, existen indicios de que
los desarrolladores de la distribucin Deban van a convertir a Postfix en el MTA
# apt-get remove Ipr nfs-common portmap pidentd pcmcia-cs pppoe \
por defecto en un futuro cercano. Al mismo tiempo, es fcil migrar de Exim a pppoeconf ppp pppconfig
Postfix, como veremos en la siguiente seccin.
Ahora, deshabilite algunos Scripts de servido:

# update-inetd --remove daytime


# update-inetd --remove telnet
# update-inetd --remove time
Para levantar nuestro servidor, vamos
a hacer uso de una instalacin reciente # update-inetd --remove finger
de Deban. Si elige otra distribucin, puede hacer lo mismo que lo que indicamos # update-inetd --remove talk
y conseguir los mismos resultados. # update-inetd --remove ntalk
. . ) } .. .

Correo Correo

# update-inetd --remove ftp This is by design: mail is not delivered to externa! delivery agents as root.
# update-inetd --remove discard If you already have a /etc/aliases file, then you possibly need to add this
entry. {I will only add it if I am creating a new /etc/aliases .

What address should I add to /etc/aliases, if I create the file?


y ahora remide el superservidor inetd:
(Enter NONE to not add one .

# /etc/init d/inetd reload


.
Where should mail for root go
NONE _____
<Ok> <Cancei>

La prxima pregunta durante la instalacin est relacionada con FQDN. Postfix


El siguiente comando instala los paquetes necesarios para ejecutar Postfix,
necesita queel comando hostname devuelva un FQDN como mail centralsof t .

junto con la seguridad TLS y SASL que permite autentificar a los usuarios:
org. Pero por defecto, hostname en Deban slo devuelve mail. Para permitirle

# apt-get install postfix postfix-doc postfix-tls libsasl2 \


configurar el FQDN, el script de instalacin ofrece el siguiente dilogo:
sasl2-bin libsasl2 -modules
Your 'mail ame' is the hostname portion of the address to be shown on
outgoing news and mail messages (following the username and @ sign)
Cuando instala estos paquetes, Deban debe elegir entre instalar libidap2 al
This ame will be used by other programs besides Postfix; it should be the
mismo tiempo. Libsasl2 ya debera estar instalado en el sistema. single, full domain ame (FQDN) from which mail will appear to orignate.
En este punto, la utilidad de instalacin de Deban empezar a descargar y Mail ame?
configurar varios archivos. Fjese en que le aparecer un dilogo durante el pro- mail centralsof t org
. .

<Ok> <Cancel>
ceso que empezar con las siguientes lneas:
Responda <Ok> para aceptar el valor por defecto que aparece en el cuadro de
Reading Package Lists... Done
Building Dependency Tree Done . . .
texto azul.
El siguiente dilogo muestra los valores por defecto de los dominios de su
Luego, ver una pantalla con mensajes que empieza as: servidor:

You have severa! cholees for general conf iguration at this point . .
Give a comma-separated list of domains that this machine should
consider itself the final destination for. If this is a mail domain
En la parte de abajo de la pantalla encontrar una pregunta que nos interesa: gateway, you probably want to inelude the top-level domain.
Other destinations to accept mail for? (blank for none)
General type of conf iguration? server2.centralsoft.org, localhost.centralsoft.org, localhost ,
No conf iguration <0k> <Cancel>
Internet Site
Internet with smarthost
Satellite system Ls dominios listados aparecern en su archivo de configuracin main cf .

Local only La pregunta final est relacionada con los sistemas que tienen sistemas de
archivos que no son un estndar:
<0k> <Cancel>
If synchronous updates are forced, then mail is processed more slowly.
Elija "Internet Site" incluso si planea usar Postfix para correo local.
If not forced, then there is a remte chance of losing some mail if the
Luego, un
dilogo de informacin le indicar que el proceso de instalacin system crashes at an inopportune time, and you are not using a journaled
el archivo de configuracin de Postfix. Si ya tiene un servidor en
est escribiendo filesystera (such. as ext3).
The default is "off".
produccin usando Sendmail, ya tendr un archivo de alias. En este captulo
Forc synchronous updates on mail queue?
supondremos que est empezando desde cero, por lo que introduciremos NONE <Yes> <No>
en la siguiente pantalla.
Debido a que casi todas las distribuciones usan el sistema de archivos ext3 por
The user root (and any other users with a uid of 0) must have mai.l
defecto,puede responder <No> aqu.
redirected via an alias, or their mail may be delivered to /var/mail/nobody
i
:

138 Correo Correo

En punto, la instalacin finaliza y escribe el archivo de configuracin de


este Tabla 5.1. Parmetros claves para la configuracin de Postfix.
Postfix. Los parmetros y los valores imprimidos no tendrn sentido para usted ?

por el momento, pero tendr que ser capaz de encontrarlos en el archivo de con- i

figuracin y cambiarlos si fuera necesario.


.smtpd_banner = Especifica el textoque identifica este servidor
$myhostname ESMTP cuando se est comunicando mediante SMTP
$mail_name (Debian/GNU) con otro servidor. El uso de texto como estan-
darte es obligatorio segn todas las especifica-
mnima ciones SMTP.
El siguiente archivo es un archivo con la configuracin de Postfix, /
etc/postf ix/main cf . biff = no biff es un pequeo proceso que puede
Postfix
notificar a los usuarios locales que tienen
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU) correo Nuevo. Si no tiene usuarios locales,
biff = no
debera desactivarlo. Por defecto en Debian
append_dot_mydomain = no
myhostname = est desactivado.
mydoraain =
myorigin =$mydoman append_dot_mydomain = no En un entorno como el nuestro, aadir el
net__nterf aces = nombre de dominio a una direccin de correo
mydestnation = $mydomain, localhost $mydomain, iocalhost . es tarea del MUA. Este valor significa que
mynetworks = 127.0.0.0/8 Postfix no aade el sufijo @centralsoft.org.

Si estuviera configurando Postfix a mano, tendra que rellenar muchos de #delay_warning_time = 4h Quite el comentario de esta lnea para generar
estos valores manualmente. Por ello es de apreciar el trabajo que ahorra el proce- mensajes del tipo "correo retrasado". Nosotros
so de instalacin de Debian. no activaremos esta opcin porque empezare-
Postfix usa una que cada lnea consiste en un parmetro
sintaxis simple en la i
mos con un volumen bajo de usuarios y no se
de configuracin seguido por un signo igual y un valor, lina vez que el parmetro esperan retrasos.
est definido, las lneas posteriores del archivo pueden referirse al parmetro siem- i
myhostname = Especifique el nombre de equipo de Internet
i

pre que tengan como prefijo el smbolo del dlar:


server2 centralsof t org
. . de este sistema de correo. Por defecto se suele
usar el nombre de dominio cualificado.
i

mydomain centralsoft.org
=
$ myhostname se usa como valor por defecto
niyorigin = $mydomain
para otros muchos parmetros de configuracin.
Este ejemplo asigna el valor centralsof t org tanto . al parmetro mydomain alias_maps = Especifica el alias de la base de datos usada por
como a myorigin hash: /etc/aliases el agente local de entrega.
Un archivo bsico de configuracin realiza reparto local nicamente. Espera alias__database = Un alias es simplemente un nombre alternativo
que haya receptores de correo que tengan cuentas y directorios locales en el ser- hash /etc/aliases
:
que alguien usa en lugar del original. Por
vidor de correo. No necesita que el sistema aada el sufijo (que debera @ ejemplo, debera especificar el alias admin
especificarse con el parmetro append dot mydomain). Esto es por lo que el pro- para root. Los papeles de estos dos parmetros
ceso de instalacin de Debian tambin pregunta por dominios, nombres de equi- no son importantes para comprender este
po y direccin de destino. captulo, slo tenga en cuenta que Postfix
El muchos parmetros /etc/postf ix/
gestor de paquetes de Debian configura mantiene una lista con todos los alias en un
main cf por
. muestra las lneas maestras. Una lista completa
usted. La tabla 5.1 archivo simple y que estos parmetros le
de parmetros puede encontrarse en el sistema archivo de ejemplo /usr/share/ indican al sistema dnde est situado y cul es
postf ix/main cf dist. . .
el formato del archivo de datos usado.
: 2

Correo Correo

Puede que necesite algunas personalizaciones sencillas pero tiles, he aqu


algunas de ellas:
myorigin = mydoman Especifica el dominio que aparecer en los * Normalmente, mydestination dominios que aparecen en las di-
lista los
correos enviados. recciones de correo de los usuarios locales, es decir, los dominios para los
cuales Postfix acepta y procesa el correo. Por defecto, Postfix acepta correo
mydestinaton = una lista de equipos y nombres de
Especifica
destinado a Smyhostname y a localhost. Smydomain, el equipo en el que
server2 centralsof t org,
. dominio, separados por comas o espacios en
.
su do-
Postfix se est ejecutando. Puede especificar que el sistema acepte
localhost central soft org, blanco, para los cuales este servidor aceptar
. .

minio entero aadiendo Smydomain a la lista:


localhost correo.
mydestination = $myhostname, localhost $mydomain,
.
$mydomain
relayhost = Especifica un equipo por defecto que este
Puede indicarle a Postfix qu equipos quiere que procesen el correo confi-
servidor usar para devolver correo cuando
gurando el parmetro mynetworks. (Si establece mynetworks, Postfix ig-
no sepa localizar al receptor. Nosotros lo
nora el parmetro mynetworks style.) Puede ofrecer una o ms direcciones
hemos dejados en blanco, confiando slo en el
1P y/o usar su notacin de red o de mscara de red (por ejemplo
parmetro mynetworks.
151 164 28 0 / 28 ).
. . .

mynetworks = 127.0.0.0/8 Especifica los equipos que este servidor no Este parmetro es til cuando desea dirigir correos a equipos que estn fuera
considera spammers. Aqu, hemos especifica- de su red, por ejemplo, para ejecutivos que trabajan desde casa, viajantes, etc.
do solamente nuestro equipo local. En su Haremos algunos otros cambios en /etc/postf ix/man. cf ms tarde en
tambin puede especificar el parmetro
lugar,
y encriptacin de contraseas.
este captulo para aadir autentificacin
mynetworksstyle = clase donde Postfix
debera confiar en todos los clientes SMTP
pertenecientes a la misma clase de red (A/B/C) Probando e! correo
que la mquina local. No confe la clase entera
en un servidor de acceso telefnico, ya que Con configuracin apropiada, puede recibir y enviar correo desde su cuenta.
la

esto provocar que Postfix est abierto para El un ejemplo de dos mensajes de prueba enviado por uno de los
siguiente es
todos los proveedores de la red. autores de este libro. Primero, usamos una cuenta de Gmail para enviar un
mensaje de correo a una cuenta de usuario en el sistema server .

mailbox_command = Especifica el comando externo que se usa para


centralsof t .org. Leimos el mensaje desde la lnea de comandos usando el
proemail -a "$EXTENSION" entregar el correo en el buzn del usuario.
comando estndar de Linux mail:
Este comando se ejecuta cuando el receptor
tenga definidas las variables de entorno ~$ mail
HOME, SHELL y LOGNAME. Message 1
Date: Tue, 11 Jul 2006 17:38:32 -0500
mailbox__size__limit = 0 Define una cuota para el correo almacenado From: "Tom Adelstein" <tadelstein@gmail com> .

por cada usuario. 0 desactiva la cuota. To: tadelste@server2 centralsof t .org .

Subject: Prueba de SMTP


recipient_delimiter = + Especifica el separador usado entre los nom- Estamos enviando este correo para probar la funcionalidad del servidor
bres de usuario y las extensiones de direccin de correo a la hora de enviar y recibir correo SMTP simple.
en una tabla de bsqueda.
Luego contestamos al correo original y lo recibimos en la cuenta de Gmail:
inet_interfaces = all Especifica la interfaz de red (tarjeta de red) a
travs de la cual el sistema recibe el correo. Delivered-To tadelstein@gmail com
: .

Received: from server2.centralsoft.org


Esto es muy til slo si tiene ms de una Tue, 11 Jul 2006 16:10:44 -0700 (PDT)
tarjeta de red. To.-tadelstein@gmail.com
.

Correo Correo

Subject: Re: Prueba de SMTP llamado Extensin del servicio SMTP para autentificacin. Ver este trabajo con el
In-Reply-To acrnimo de ESMTP, por ejemplo, est en la primera lnea de archivo /etc/
tadeIste@server2.centralsoft.org (Tom Adelstein)
postf ix/main cf (vase Tabla 5.1). ESTMP evita que una gran cantidad de re-
.

Estarnos enviando este correo para probar la funcionalidad del servidor mitentes y/o atacantes usen MTA desconocidos como pasarelas. Tambin ofrece
de correo a la hora de enviar y recibir correo SMTP simple seguridad autentificando a los usuarios y sus actividades. La IETF bas la exten-
sin ESMTP en SASL. Como parte del protocolo SMTP, ESMTP simplemente aade
Usar el comando mal es una manera primitiva de gestionar grandes volme-
un comando llamado AUTH a los comandos del servidor usados para intercam-
nes de correo, incluso desde una cuenta local. Una alternativa es mutt, que tiene
biar datos. El framework de autentificacin SASL permite una variedad de for-
una interfaz robusta y bastantes ms funcionalidades. Como administrador, po- mas para almacenar e intercambiar credenciales de usuario. Puede usar
dra usar algunos de estos agentes de lnea de comando cuando reciba correo en
contraseas Linux (/etc/passwd, /etc/shaclow o Mdulos de Autentifica-
su cuenta de servicio.
cin independientes), archivos independientes, o servicios externos como LDAP,
Kerberos o sasldb (un directorio creado por el proyecto Cyrus e incluido con SASL).
En este captulo, mostraremos dos formas de usar Postfix con SASL. Primero,
Aadiendo autentificacin y encrip faetn configuraremos un mtodo simple que funciona bien en sitios pequeos donde
puede dar a cada usuario de correo una cuenta de usuario en el servidor Linux,
Ahora que ya hemos configurado un servidor SM TP por defecto, qu pode- este mtodo usa PAM, la autentificacin por defecto usada en estos casos. Luego,
mos hacer con Postfix? En esta seccin aadiremos a identificacin (usando SASL) configuraremos un sistema ms complejo que le permite autentificar usuarios
y encriptacin (usando TLS) a nuestro archivo de configuracin, /etc/postf ix/ que no tienen cuentas en el servidor.
main. cf. Con autentificacin, nos aseguraremos que slo usuarios con las cre-
i

denciales adecuadas puedan usar nuestro servidor SMTP Con encriptacin, nos Nota: La autentificacin puede considerarse un proceso de dos etapas.
aseguraremos que no enviamos ni ID de usuario ni contraseas a travs de la red Primero, hay que asegurarse de que el usuario es quien dice ser. Luego, hay
en texto claro. que ofrecerle el servicio pedido, que puede ser una interfaz de comandos
(bash, tesh, zsh, etc.) o una sesin X Window ejecutndose bajo su identidad.

Configurando Postfix con SASL para autentificar usuarios con cuentas


La figura 5.1 representa un grupo de usuarios mviles que necesitan obtener
Afortunadamente, Deban incluye SASL con Postfix. Puede usar las libreras
elcorreo a travs de un servidor de correo fuere de la red local del servidor. Este es
SASL de Deban para permitir a los usuarios mviles autentificarse desde fuera
un escenario comn. Para distinguir a estos usuarios legtimos de los spammers, de la red. En el siguiente ejemplo, usaremos SASL para verificar que las personas
necesita un mecanismo de seguridad. La capa SASL desarrollada como parte del
que estn intentando conectarse tienen cuentas vlidas en el servidor Linux, es
proyecto Cyrus de la Universidad de Carnegie Mellon, ofrece Postfix con un me- decir, nuestro sistema permitir conectarse y enviar correo slo a las personas
dio para identificar las fuentes de correo enviadas al servidor y control del correo
con cuentas en el servidor. Usaremos PAM, el mecanismo por defecto para la
procesado.
autentificacin en Linux para hacer esto.
Cuando instal los paquetes anteriormente, incluy las extensiones y las libre-
Nota: Los administradores del sistema pueden usar SASL para aadir ras SASL necesarias (postfix-tls, Iibsasl2, sasl2-bin y libsas2-modules). Ahora ne-
autentificacin en muchas de las operaciones cliente/servidor, pero cada
cesita configurar /etc/postf ix/main cf Primero, le mostraremos cmo aadir
. .

servicio que use SASL en un sistema operativo Linux necesita un archivo de


parmetros al archivo usando comandos posteonf; luego, le mostraremos una al-
configuracin diferente. No puede instalar SASL y configurarlo para todo
ternativa consistente en editar /etc/postf ix/man.cf directamente. Active la
el sistema.
autentificacin en el servidor SMTP Postfix aadiendo los parmetros smtpd (ser-
vidor) a su archivo de configuracin main cf con este comando posteonf:
.

Cmo se convirti SASL en parte de lasolucin Postfix? Para encontrar una


respuesta, hemos de remontarnos hasta 1 999, cuando la IETF escribi un estndar # posteonf -e ' smtpd_sasl _auth_enable = yes'
'

Correo Correo E

Luego, aada un parmetro para ajustar los clientes no estndar que no pro- Cree el archivo smtpd conf con estas dos lneas:
.

cesan la autentificacin SMTP correctamente:


pwcheck_method saslauthd
:

# posfcconf -e 'broken_sasl_ authclients = yes' mech_list: plain login

parmetro smtod_sasl__security_options le permite controlar todos


El Ahora puede reiniciar Postfix:

los mecanismos de autentificacin cuando los diversos clientes se conectan a su


# postfix reload
servidor SMTP. El siguiente bloque de configuracin bloquea completamente la
autentificacin annima: El demonio saslauthd
# posfcconf -e * smtpd_sasl_security_opfcions = noanonymous En el archivo smtpd conf, hemos especificado saslauthd como nuestro m-
.

todo para verificar las credenciales del usuario. Por qu?


Postfix no permite el envo de correo sin autorizar por defecto. Por lo que,
Nuestro sistema de contraseas usa PAM, y los procesos sin privilegios no tienen
para permitir a sus usuarios de correo trabajar en Internet, necesita aadir otro
acceso a los archivos de contrasea. Debido a que la cuenta de servicio de Postfix se
parmetro (nota: esto debera aparecer en una sola lnea):
ejecuta con privilegios limitados, no puede autentificar directamente a los usuarios.

# postconf -e smtpd recipientrestrictions =


' Las libreras SASL que se distribuyen con Deban solventan esta situacin aa-
permit_mynetworks parmi t_sasl_authenticated, rejectunauth destination'
, diendo un demonio de autentificacin llamado saslauthd, que maneja las peti-
ciones por Postfix. El demonio se ejecuta con privilegios de superusuario en un
Finalmente el parmetro smtpd_sasl_loca_domain establece el nombre del
proceso separado de Postfix, por lo que alguien que comprometa la seguridad del
dominio local de autentificacin. Por defecto, Postfix considera el nombre de la servidor de correo no podr disfrutar de los privilegios de saslauthd.
mquina como el nombre de dominio local de autentificacin. Para usar el com-
saslauthd no se comunica fuera de nuestra red, el impacto de seguridad del
portamiento por defecto, especifique una cadena nula:
demonio es mnimo incluso si se usaran contraseas en texto claro, saslauthd

# postconf -e smtpd_ sasl_local_domain =' necesita las contraseas actuales porque usa el mismo servido de autentificacin
que el que usted usar para abrir una sesin de consola en Linux.
Esto completa la configuracin SASL para Postfix. De manera alternativa, en
Ahora, vamos a configurar saslauthd para ejecutar el servidor de correo. Las
lugar de ejecutar los diferentes comandos postconf anteriores, tiene la opcin de siguientes direcciones corresponden a Debian, pero puede hacer ms o menos las
editar el archivo /etc/postf ix/main cf aadir las siguientes entradas
.
,
y fi- mismas cosas con los directorios y los comandos de otros sistemas Linux.
nalmente recargar Postfix.
El puerto de Postfix en Debian se ejecuta en entorno chroot en /var/spool/

smtpd_sasl_local_domain = $myhostname postfix. Por consiguiente, necesita poner el demonio saslauthd en el mismo
smtpd_sasl__auth_enable = yes espacio de nombres. Siga los siguientes pasos:
broken_sasl_auth_clients = yes
smtpd_sasl_security__options = noanonymous 1 . Cree el directorio necesario para el demonio:
smtpd_recipient__restrictions =
permit_sasl_authenticated, permit _mynetworks reject_unauth_destination
,
# mkdir -p /var/spool/postf ix/var/run/saslauthd
smtpd_sasl_local jiomain =
2. Edite /etc/def ault/ saslauthd para activar saslauthd. Elimine la marca
Ha terminado de configurar SASL y ahora ya puede empezar a usarlo. Antes de comentarios de la lnea START=yes y luego aada la lnea:

vamos a ver los ltimos pasos, ejecute este comando para crear un archivo de
PARAMS=" -m /var/spool /posfcf ix/var/run/saslauthd -r"
configuracin SASL en el directorio donde Postfix buscar (la -p evita un error si
el directorio ya existe): 3. Su archivo debe quedar as:

# mkdir -p /etc/postf ix/sasl # This needs to be uncommented before saslauthd will be run automatically
# cd /etc/postf ix/sasl START=yes

j;

"

Correo Correo I

PARAMS="-m /var/spool/postf ix/var/run/saslauthd -r"


En una red de ordenadores pequea, sasldb puede ofrecer una solucin simple
# You must specify the authenticaton mechanisms you wish to use.
# This defaults to "pam" for PAM support
vlida paraunos cuantos usuarios. Para sitios ms grandes, con ms usuarios,
but may also inelude
,

# "shadow'' or "sasldb", lke this: probablemente MySQL sea la solucin ms escalable y ms fcil de gestionar.
# MECHANISMS= "pam shadow" El mtodo sasldb y el MySQL necesitan que instale un tipo especial de plugin
MECHANI SMS = " pam
llamado auxiliary property. Si configura sasldb o MySQL, tiene que editar el ar-
4. Lo siguiente que tiene que hacer es editar /etc/init d/saslauthd para . chivo smtpd conf y cambiar la lnea:
.

cambiar la ubicacin del archivo con el ID del proceso de saslauthd. Cam-


pwcheck_method : saslauthd
bie el valor de P1DFILE por lo siguiente:
por la siguiente, que ofrece un framework para el citado plugin:
PIDFILE=" /var/spool/postf ix/var/run/ $ {AME} /saslauthd. pid"
pwcheck_method: auxprop
5. Luego ejecute saslauthd:

# /etc/init d/saslauthd start


.
Encriptacin TLS

usa una distribucin Linux distinta de Debian, trabajar con comandos,


Si inconveniente de usar el mtodo auxprop para la validacin de usuarios es
El
directorios y archivos diferentes. Bar ejemplo, en muchos sistemas la forma que, sin protecciones adicionales, usa validacin de texto plano. Cuando es usted
estndar de iniciar saslauthd por primera vez es el comando: el que entra en su propia estacin de trabajo, no hay ningn
problema, pero
cuando enva un ID de usuario y una contrasea a travs de una red en texto
# saslauthd -a pam plano para acceder al correo, ya sea una red local o Internet, cualquiera puede
obtener de manera fcil sus credenciales. Anteriormente ya discutimos acerca de
De no hacerlo as, Debian especificar el uso de PAM a travs del archivo de
usar TLS, una versin actualizada de la encriptacin SSL, para enviar contraseas
configuracin.
desde su estacin de trabajo a su servidor de correo de manera segura. Aqu, va-
Configurando Postfix con SASL para autentificar usuarios sin cuentas
mos a extender esa solucin para encriptar informacin de identificacin creando
un certificado a travs de Open SSL.
Usar archivo de contraseas para la autentificadn en un sistema Linux
el

requiere que cada persona que recibe el correo a travs del servidor tenga una
Nota: La seccin previa de SASL y la seccin actual tratan de la seguridad,
cuenta de usuario. Obviamente, esta solucin carece de escalabilidad requiere aunque con diferentes objetivos. Mientras que la seccin de SASL maneja la
y
mucho tiempo administrativo. Para soportar usuarios que no tienen cuentas en autentificadn, que determina quin tiene el derecho de enviar correo a
el servidor SMTP,
SASL le permite usar otras opciones de almacenamiento; las travs de su servidor. Esta seccin trata la proteccin de contraseas, que
opciones ms populares son sasldb, LDAg Kerberos y MySQL. El demonio saslauthd asegura que los intrusos potenciales no pueden leer las credenciales secretas
no se ejecuta cuando Postfix usa uno de estos mtodos: no se necesita un progra-
'
de los usuarios. Necesitar ambos servicios para un correo electrnico seguro.

ma distinto con privilegios de superusuario porque SASL no necesita acceder al


archivo de contraseas del sistema operativo. Cuando usa saslauthd, est limita- Empiece por crear un directorio para los certificados SSL. Cree un subdirectorio
justo debajo de la ubicacin de Postfix en Debian:
do a la transmisin de contraseas en texto plano
y a la autentificadn va Iogin.
Por tanto, Postfix tambin ofrece un mtodo auxprop alternativo, que soporta
# mkdir /etc/postf ix/ssl
los mtodos de autentificadn de texto plano, login, CramMD5, DigestMD5, OPT # cd /etc/postf ix/ssl/
y NTLM. De todos los mecanismos de autentificadn discutidos en este captulo,
LDAP es el ms robusto y escalable, pero tiene la limitacin de que usa contrase- Luego, genere dos certificados y dos claves de encriptacin. Necesita una clave
as en texto claro. Para solucionar este problema, los administradores normal- primaria que nadie conoce y una clave pblica que le permite a los otros enviarle
mente usan la capa TLS para encriptar las contraseas y transmitirlas desde el credenciales seguras. Comience con la clave del servidor:

diente al servidor (como se discutir en la siguiente seccin). La combinacin de


# openssl genrsa -des3 -rand /etc/hosts -out smtpd. key 1024
LDAP y TLS actualmente es la mejor opcin de seguridad. 293 semi-random bytes loaded
: : : : : : : : : : '

Correo Correo

Generating RSA prvate key, 1024 bit long modulus writing RSA key
# mv -f smtpd. key. unencrypted smtpd.key
# chmod 600 smtpd.key
e is 65537 (0x10001) # openssl req -new -x509 -extensiosis v3_ca -keyout cakey.pem -out \
Enter pass phrase for smtpd.key; cacert.pem -days 3650
Verifying - Enter pass phrase for smtpd.key: Generating a 1024 bit RSA private key
++++++
Cambie los permisos del archivo resultante que contiene la clave OpenSSL del ++++++
servidor: writing new private key to 'cakey.pem'
Enter PEM pass phrase:
# chmod 600 smtpd.key Verifying - Enter PEM pass phrase:

Luego, genere otra clave y otro certificado You are about to be asked to enter information that will be incorporated
into your certifcate request.
What you are about to enter is what is called a Distinguished ame or a DN.
# openssl req -new -key smtpd.key -out smtpd.csr
You are about to be asked to enter Information that will be incorporated There are quite a few fields but you can leave some blank
into your certifcate request. For some fields there will be a default valu,
If you enter the field will be left blank
What you are about to enter is what is called a Distinguished ame or a DN.
There are quite a few fields but you can leave some blank Country ame (2 letter code) [AU]
For some fields there wili be a default valu, State or Province ame (full ame) [Some-State]
If you enter the field will be left blank. Locality ame (eg, city) []
Country ame (2 letter code) [AU] Organization ame (eg, company) [Internet Widgits Pty Ltd]
State or Province ame (full ame) [Some-State] Organizational Unit ame (eg, section) []
Locality ame (eg, City) (] Common ame (eg, YOUR ame) []
:

Organization ame (eg, compahy) (Internet Widgits Pty Ltd] centralsoft.org Email Address []
:

Organizational Unit ame (eg, section) [] web :

Common ame (eg, YOUR ame) [} Ahora necesita indicarle a Postfix las claves y los certificados de los siguientes
Email Address [J : comandos posteonf:
Please enter the followng 'extra' attributes
to be sent with your certifcate request # posteonf -e 'smtpdtls auth_only = no'
A challenge password [] :
# posteonf -e 'smtp_use_tls = yes'
An optional company ame [] eso:
# posteonf -e 'smtpd_use_tls = yes'
# posteonf -e 'smtp_tls_note_starttls_of f er = yes'
# posteonf -e 'smtpdtls key_file = /etc/postf ix/ssl/smtpd. key
Nota: Existe un debate para dirimir si los certificados que se autogeneran smtpd_tls_cert_f ile = /etc/postf ix/ssl/smtpd. crt'
# posteonf -e '

deberan pedir informacin o no. Nosotros recomendamos que introduzca # posteonf -e 'smtpd_tls_CAf ile = /etc/postf ix/ssl/cacert .pem'
la informacin apropiada para su sitio de produccin. # posteonf -e 'smtpd_tls loglevel = 1'
# posteonf -e 'smtpd tls_received_header = yes'
# posteonf -e * smtpdtls session_cache_timeout 3600s'
Los siguientes comandos generan un clave de firma y cambian las claves exis- # posteonf -e 'tls random source = dev: /dev/urandom'
tentes por las nuevas:
El archivo /etc/postf ix/main. cf debera quedar as:
# openssl x509 -req -days 3650 -in smtpd.csr -signkey smtpd.key -out \
smtpd.crt # See /usr/ share/postf ix/main. cf .dist for a commented, more complete versin
Signature ok smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
subject=/C=US/ST=Texas/L=Dallas/0=centralsof t org/OU=web/CN=Tom_Adelstein/
. biff = no
emailAddress=tom. adelstein@gmail cora . # appending .domain is the MUA' s job.
Getting Private key append_dot_mydomain = no
Enter pass phrase for smtpd.key: # Uncomment the next line to genrate "delayed rtiail" warnings
# openssl rsa -in smtpd.key -out smtpd. key unencrypted . #delay_warning_time = 4h
Enter pass phrase for smtpd.key: myhostname = serverl.example.com
Correo Correo

alias_maps = hash: /etc/aliases Originalmente creado en la Universidad de Washington, el paquete ipopd-ssl


aiias_database = hash: /etc/aliases
myorigin = /etc/mai Iname est mantenido por Debian. Slo necesita instalarlo, bsicamente configura el
mydestnation = serverl.example.com, localhost.exaraple.com, localhost uso del directorio de correo que existe en el servidor de correo al igual que el que
relayhost = configuramos en el captulo anterior. Los ISP an continan usando POP3, pero
mynetworks = 127.0,0.0/8
las empresas no suelen usarlo.
mailbox_commaRd = proemail -a "$ EXTENSION"
mailbox_size__limit = 0 uw-imapd-ssl ofrece un servidor IMAP Aunque requiere ms espacio en dis-
recipent_deii.miter = + co, IMAP es superior a POP porque deja el correo en el servidor y permite a los
inet_interfaces = all usuarios ver mensajes desde cualquier ubicacin con acceso a Internet y un cliente
smtpd_sasl_local _domain =
de correo. No conocemos ningn cliente de correo actual que no pueda procesar
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_optons = noanonymous IMAL por lo que la mayora de los usuarios pueden usarlo.
broken_sasl_auth_clients = yes Tambin puede ofrecer correo Web en su servidor de correo usando SSL (https),
smtpd_recipient_restrictions = permit_sasl_authenticated,
permitiendo as que los usuarios accedan a su correo desde un navegador Web.
permi.t_mynet works reject
,

unauth_destination
smtpd_tls_auth_only = no Nota: En nuestra configuracin, los usuarios necesitan cuentas de Linux
smtp_use_tls = yes estndar en su servidor de correo, incluso aunque lean su correo desde un
sratpd_use_tls = yes
cliente en otro sistema. Postfix normalmente permite entrega local en un
smtp_t.ls_note__starttls_of fer = yes
dominio, pero requiere una pasarela (como se discuti en la seccin previa)
smtpd_tls_key_f ile = /etc/post f ix/ssl/smtpd key ,

smtpd_tls_cert_f ile = /etc/postf ix/ssl/smtpd crt si los usuarios estn fuera del dominio.
.

smtpd_tls_CAf ile = /etc/postf ix/ssl/cacert .pera


smtpd_tls__loglevel = 1 uw-imapd tiene ventajas y desventajas. Por una parte, usa el estilo Unix para
smtpd_tls_received_header = yes
el buzn de correo, lo que mantiene el correo de todos los usuarios en un
archivo
smtpd_t 1 s_s e s s i on_cache_t imeout = 3600s
tls_random_s ource = dev /dev/uran'dom nico en su directorio de inicio. Este servicio es fcil de administrar.
:

Por la otra parte, uw-imapd no permite a los usuarios virtuales o a aquellos


Ahora ya puede reinidar el demonio Postfix: que no tenga cuenta y directorio de inicio acceder al correo. Adems, a muchos
administradores no les gusta el formato de almacenamiento de rnbox, y prefie-
# /etc/init.d/postfix restart
Stopping mail transport agent Postfix.
:
ren el formato jerrquico de maildir. Al ser un formato de archivo nico mbox
Starting mail transport agent: Postfix. permite acceder a la vez a una sola aplicacin, lo que implica bloqueos y hace
que el sistema vaya ms lento.

Configurando los agentes de entrega de correo POP3 e IMAP Nota: El bloqueo de archivos es un mecanismo que obliga a que slo un
usuario o proceso pueda acceder al archivo en un momento dado. El
En esta seccin aadiremos agentes de entrega de correo para complementar propsito del bloqueo es evitar actualizaciones conflictivas.
a Postfix. Use el siguiente comando en Deban para aadir un servidor IMAP
y
uno POP3. Muchas personas consideran que el bloqueo de archivos es un problema en el
# apt-get install ipopd-ssl uw-imapd-ssl caso del correo. Muchos sistemas de archivos distribuidos carecen de mecanis-
mos de bloqueo. Algunas personas creen que incluso el bloqueo de archivos es
Hemos escogido ipopd-ssl para ofrecer agentes de entrega de correo POP2 y insuficiente para evitar fallos ocasionales en mbox. Con Linux, el fallo es posible
POP3 y uwimapd-ssl para IMAP. No se preocupe por el sufijo ssl, tanto los pa- si un proceso de correo falla en medio de la actualizacin de
un buzn.
quetes que ofrecen servicios sin encriptar como los que los ofrece encriptados. El Elformato maildir, sin embargo, permite acceso concurrente a mltiples apli-
IMAP estndar usa el puerto 143 y POP3 usa el puerto flO. Los protocolos caciones y no necesita bloqueo de archivos. Otros servidores IMAP, como Cyrus,
encriptados y los puertos son POP3S (puerto 995) e IMAPS (puerto 993). Courier y Dovecot, usan el formato maildir para permitir a los usuarios virtuales
152 Correo Correo

y a los usuarios sin cuenta ni directorio de inicio acceder al correo. Configurado


junto con Postfix, las cuentas de usuario slo tienen buzones de correo. Esto
permite a los administradores mantener el MTA el MDA si tener que gestionar
y
cuentas de usuario estndar en el servidor. En este punto, ha instalado y configurado Postfix y un servicio IMAP y otro
Otros servidores IMAP distintos de uw-imapd son difciles de configurar
POP 3. Ya tiene los componentes esenciales de un sistema de correo que puede
y usarse en un entorno corporativo.
necesitan una buena dosis de experiencia, por lo que decida por usted mismo si el
tamao de su organizacin justifica su uso. De ser as, necesitar buscar otros Si esta es su primera toma de contacto con el correo, ahora podr comprender

como el libro "The Book of Postfix" por Ralf Hildebrandt


recursos para informarse, por qu las empresas gastan grandes cantidades de dinero en comprar licencias
de sistemas. Tambin podr comprender por qu pagan a una docena o ms de
y Patrick Katter.
administradores de sistemas para que gestionen las infraestructuras de comuni-
cacin por correo electrnico. Esta rea requiere una experiencia especial. Des-
Configuracin del cliente de correo pus de que haya asimilado la informacin de este libro, podr estudiar los dems
componentes de los sistemas de correo avanzados. Debera saber cmo instalar y
configurar un servidor de correo escalable y seguro y cunto esfuerzo es necesa-
En nuestra introduccin previa al archivo de configuracin de Postfix /etc/ rio para adquirir experiencia en este campo. Tambin necesitar aprender a ges-
postf ix/main cf dejamos en manos del cliente de correo del usuario la deci-
.
, tionar servicios de directorio, como OpenEDAP o Fedora Directory Server, para
sin de aadir el nombre de dominio cuando un usuario escriba un correo desde validar una gran cantidad de usuarios y ofrecer un listado de los usuarios de
su cuenta de correo: correo de su empresa.
El prximo captulo revisa el ser vicio que mucha gente considera como el ms
append_dot_mydomain = no
crtico deuna organizacin: un servidor Web. Despus, introduciremos la confi-
Este es el comportamiento de la mayora de los clientes, que pueden aadir un
guracin de uno de los servidores Web ms populares, Apache, y procederemos a
dominio como @centralsof t org cuando el usuario introduce un nombre de instalar un amplio rango de funcionalidades importantes, como soporte para
.

sitios Web dinmicos y recoleccin de estadsticas, adems le proporcionaremos


cuenta en el campo Para de un mensaje de correo electrnico.
algunos consejos para resolver problemas.
configura Postfix para usar encriptacin, como se mostr anteriormente en
Si
este captulo, el usuario de corro tambin tiene que configurar su MIIA para
usar encriptacin TES a la hora de enviar correo. Los clientes ms modernos
soportan esto y ofrecen una interfaz grfica para activar TES
y usarlo con el
servidor de correo saliente.
Cuando no est en una red definida por Postfix
y es cliente esttico (al con-
trario que el cliente mvil), use el servidor SMTP de correo saliente de su SP. En
este caso, debera seleccionar TES su servidor ofrece su uso. En la gran mayo-
si
ra de los casos, su IS y su contrasea viajarn en texto claro a travs de las
lneas de su ISP. Para el servicio de recepcin de correo, necesitar configurar un
servidor entrante con DNS, como se vio anteriormente. Como breve recordato-
rio, deber usar registros MX para hacer esto. Un registro MX normal sera:
MX 10 serverl.centralsoft.org.

Este registro indica claramente que el correo enviado al dominio


central sof t org debera ser entregado al serverl centralsof t org (que
.
.
.

es el servidor de correo del dominio).


En este captulo, un servidor Web Linux desde cero. Aprender
levantaremos a:

8 Instalar y configurar Apache, FHP y MySQJL.


* Gestionar mltiples sitios Web con hosts virtuales.
8 Encriptar pginas sensibles con SSL.
Activar tecnologas de servidor y Scripts CGI.
Hacer pruebas de rendimiento y de seguridad.
8 Instalar vlogger y Webalizer para ver las estadsticas del sitio.
8 Instalar Drupal, un sistema gestor de contenidos que ser muy til en
muchos entornos y que usa muchos de estos elementos.
Este captulo describe un entorno con un servidor Web, en el captulo siguien-
te, veremos cmo configurar un par de servidores Web para balancear
el trabajo.

Los servidores Web son grandes y complejos, y al configurarlos no est claro


cmo o por qu se hacen determinadas cosas. A lo largo del camino, le mostraremos
por qu hemos elegido algunas alternativas en detrimento de otras. Para que las
explicaciones sean breves y claras, usaremos los procedimientos estndar de Deban.
Dotaremos de seguridad al entorno a medida que avancemos, para resaltar que la

seguridad es un aspecto que debe tenerse en cuenta desde el principio. Al final del
captulo, podr encontrar una seccin para la solucin de errores comunes.

Archivos estticos y dinmicos

Un sitio Web bsico est compuesto por archivos: HTML, grficos, JavaScript,
hojas de estilos y otros tipos. El contenido de estos archivos es esttico, no cam-
bian en el servidor, y el nico trabajo del servidor Web es devolverlos cuando el
Administrando Apache Administrando Apache 157

navegador lo solicite. Un servidor Web necesita slo una pequea configuracin na muy bien y es fcilmente escalable, aunque todo tiene sus lmites. Apuntare-
para servir archivos estticos. mos algunos de esos lmites en este captulo, pero puede saltarse estas secciones
Muchos sitios tambin tienen contenido dinmico, incluso generacin auto- si Ya tenemos la L, ahora exploraremos las A;
prefiere aprender de la experiencia.
mtica de contenido, control de acceso y almacenamiento en bases de datos. La la My P vendrn
la un poco despus. Apache no es el servidor Web ms rpido,
manera ms fcil para hacer archivos HTML dinmicos es usar la tecnologa de ni el ms fcil de configurar, ni el ms seguro, pero es muy superior al resto de
servidor (SSI), que equivale a aadir comentarios formateados mediante HTML servidores. Segn Netcraft, ms del 60 por 100 de los sitios Web pblicos usan
que Apache interpreta para mostrar su valor o incluir contenidos de otros archi- Apache (http //news .netcraft com/ archives/ web_server_survey.html).
:
.

vos HTML. La inclusin de archivos SSI es una forma fcil para definir una cabe- Apache se ejecuta en Linux, Mac OS X y otros sistemas basados en UNIX, adems
cera y un pie de pgina comn a todo el sitio, por ejemplo. de casi todas las versiones de Microsoft Windows.
SSI tiene lmites, aunque una gran mayora de sitios dinmicos usan progra- AI igual que otros programas Unix, Apache puede levantarse con todos sus
mas Common Gateway Interface (CG). Estos programas ejecutables pueden escri- mdulos, obteniendo as un programa muy grnele (con ligadura esttica) o puede
birse en cualquier lenguaje que Linux soporte, aunque las opciones ms populares trabajar con mdulos que se cargan en memoria a medida que se necesitan (obje-
son los lenguajes de script como Perl, PHJ Python y Ruby, seguidos de Java. CGI es tos dinmicos compartidos o DSO). El mtodo OSO es ms fcil y ms flexible,
un protocolo que especifica cmo deben intercambiar las peticiones y las respues- puesto que le permite aadir mdulos una vez que Apache ha sido levantado. La
tas el diente y el servidor. Cuando los primeros CGI aparecieron en la Web, eran instalacin de Deban para PHP y para otros mdulos usa el mtodo DSO.
totalmente independientes de los servidores Web. Cada peticin provocaba que el
servidor Web iniciara un nuevo proceso CGI. El coste de arranque incrementaba el
tiempo de respuesta del sistema, por lo que se desarrollaron alternativas. La gente Instalacin
a menudo confunde el protocolo CGI con este mtodo de implementacin anticua-
do y por ello piensan que CGI es lento. Sin embargo, el estndar CGI no define la
implementacin. Existen mtodos ms rpidos que siguen el mismo protocolo CGI. En esta seccin, instalaremos Apache, PHP y MySQL. Usaremos la instalacin
por defecto para cada uno de ellos para asegurarnos que se ejecutan correcta-
LIn mtodo ms rpido es FastCGI, que inicia el programa CGI como un proceso
mente. En la seccin siguiente, exploraremos los archivos de configuracin de
aparte y gestiona dos vas de comunicacin entre dicho proceso y el servidor Web.
Evitando as el coste de recarga, adems la separacin del proceso asegura que en el Apache y cmo personalizar nuestra instalacin.
caso de que el CGI falle, no llevar asociada la cada del servidor. No obstante, FastCGI

tiene un
inconveniente: al igual que otros programas CGI, no puede acceder a los Apache
entresijos del servidor Web, algo que es necesario en aplicaciones complejas.
Algunos programas CGI han evolucionado en forma de mdulos Apache que Necesita ser usuario root para instalar paquetes. Primero consiga el servidor
se como parte del propio servidor Web: el intrprete de Perl se convirti en
cargan Apache:
m d_perl o PHP se ha convirti en mod__php. El rendimiento de los programas
FastCGI y de los mdulos Apache es similar, y los mdulos tienen tanto ventajas # apt-get install apache2

como desventajas. Tienen acceso a todas las estructuras de datos


y funciones Esto debera instalar Apache e iniciarlo. Funcion? Para saberlo, introduzca su
internas del servidor, por lo que pueden usarse en varias etapas de la transaccin
URL en un navegador Web. Para los ejemplos de este captulo, usaremos el nombre
Web, pero no para generar contenido HTML. Sin embargo, los mdulos (http : / /serverl centralsof t org). Cuando
de nuestro servidor de pruebas . .

incrementan el tamao y el uso de la memoria del servidor Web, y un fallo en sustituirla por la URL de su propio servidor. Si
el vea esta URL en los ejemplos, debe
mdulo puede provocar la cada del servidor Web. navegador en misma mquina en que est alojado el servidor
est ejecutando el la
Web y problemas con la resolucin DNS de su servidor de nombres, puede
tiene

LAMP usar http //localhost o http //127 0 0 1 Si lo est probando desde fuera,
: : . . . .

puede usar la direccin IP del servidor, en este caso http://70.253.158.41.


La instalacin estndar de LAMP (Linux, Apache, MySQL, PHP/Perl/Python) Introduzca la URL del servidor en un navegador Web y podr ver una pgina
usa mdulos Apache para ejecutar las funciones CGI. Esta aproximacin funcio- que empieza as:
;

Administrando Apache Administrando Apache

Si puede ver esto, es que la instalacin del servidor Web de Apache se Entre tanto, si usted es novato, acaba de escribir su primer script CGI. (En la
ha instalado de manera satisfactoria en su sistema. Ahora tiene que
seccin de CGO, ofreceremos ms detalles acerca de cmo los servidores Web eje-
aadir contenido a este directorio y reemplazar esta pgina.
cutan programas externos y Scripts.)
El navegador debera mostrar que Apache ha redirigido la pgina que intro-
dujo por otra: http / /serverl centralsof t org/apache2-default.
: . .

Explicaremos esto un poco despus cuando indaguemos en los archivos de


configuracin de Apache pero, por ahora, nos conformaremos con crear nuestro Si no necesita una base de una plataforma LAP y podr saltarse
datos, tendr
primer archivo Web. Vaya al directorio que Apache considera el directorio raz de esta seccin. Para obtener la plataforma LAME obtenga el servidor de base de
su sitio y cree un archivo simple de texto: datos MySQL y el mdulo PHP para MySQL:

# cd /var/www # apt-get install mysql-server


# echo probando > test.html # apt-get install php4-mysql

Luego introduzca la URL (por ejemplo, http //serverl centralsof t org/


: . . Esto es todo lo que necesita para crear Scripts PHP que accedan a un servidor
test html) en su navegador. Podr ver la palabra probando en la pantalla. Su
.
de bases de datos MySQL, pero tambin instalaremos el cliente estndar de lnea
servidor Apache se est ejecutando sin restricciones de acceso, es decir, sirviendo de comandos para MySQL (mysql) para que nos ayude a probar la base de datos
cualquier archivo y directorio que exista en /var/www. sin tener que usar PHP o Apache.

# apt-get install mysql-client


PHP
Nota: mysql pero no especifica un nombre de cuenta de
Si ejecuta el cliente
PHP es el mdulo CGI de Apache ms popular. En este captulo, usaremos PHP MySQL con opcin -u, intentar usar el nombre de su cuenta Linux. En
la
4, que todava es ms popular que su sucesor, PHP 5. Usar PHP es una buena nuestros ejemplos, hemos accedido como root, por lo que el nombre sera
forma de crear pginas dinmicas, y la gran librera de mdulos PHP ofrece mu- root. Sucede que la cuenta de administrador de MySQL tambin se llama
chas funciones tiles. Comience obteniendo el programa PHP las libreras: root, y tiene el control completo de la base de datos. Sin embargo, las cuentas
y
root de MySQL y de Linux no tienen nada que ver la una con la otra. MySQL
# apt-get install php4 almacena los nombres de cuenta y las contraseas en la propia base de datos.

Ahora consiga el mdulo PHP para Apache, mod_php. Este comando instalar
mod php y le indicar a Apache que le permite ejecutar archivos con sufijo .php: LIsc este comando para ver si el servidor de la base de datos se est ejecutando:

# apt-get install libapache2 -mod-php4 # mysql -u root


Welcome to the MySQL monitor. Commands end with or \g. ;

Your MySQL connection id is 5 to server versin: 4 0.24_Debian-10sarge2-log


.

Cree este script PHP de prueba y gurdelo en /var/www/inf o php:


.

Type ' he Ip ; ' or '\h' for help. Type '\c' to olear the buffer.
<?php
phpinf o { )
mysql > show databases;
?>
j
+ +
Database
Luego introduzca la URL del script (http // serverl centralsof t org/
: . . +
j

+
inf o php) en su navegador. Debera ver una pgina con tablas de informacin
. |
mysql
sobre la configuracin de PHP. Esta informacin ofrece mucha informacin acer- |
test
+ +
ca de su equipo y que no tiene que compartir con el resto del mundo, por lo que
2 rows in set (0.00 seo)
puede borrarlo despus de probarlo. Si no es capaz de ver nada, chele un vistazo
al final de este captulo. mysql > quit;
: : : > : >> ; : :

T
Administrando Apache Administrando Apache

configuracin de Apache por el sistema de archivos, lo que hace difcil saber qu f # Disables .htaccess files in subdirectories
opciones tienen efecto sobre un directorio en un momento dado. Si no necesita f AllowOverride None
</l)i rectory>
archivos .htaccess, no los use. Estn desactivados por defecto.
itDocumentRoot itself
<Directory /var/www/
Options Indexes FollowSymLinks MultiViews
Forbids .htaccess files:
ti

Cada archivo de configuracin de Apache est divido en secciones que contie- AllowOverride None
Order allow,deny
nen directivas Apache (comandos u opciones) y sus valores. Algunas directivas
allow from all
son parte del ncleo de Apache, mientras que las otras slo las usan mdulos # Maps / to /apache2-def ault the initial welcome
,

especficos. Si una directiva se refiere a un mdulo que no ha configurado. Apa- # page that says "If you can see this...":
che fallar al iniciarse y se escribir un mensaje que indique las lneas incorrec- RedirectMatch */$ /apache2-def ault/
</Directory>
tas en el archivo log de errores.
Cuando Apache se est ejecutando correctamente, podr ver las directivas que # Permits CGI Scripts:
se estn usando si introduce este comando: ScriptAlias /egi-bin/ /usr/lib/cgi-bin/
<Directory " /usr/lib/ egi -bin"
# /usr/sbin/apache2 -L AllowOverride None
Options ExecCGI -MultiViews +SymLinksIf OwnerMatch
Al final de este captulo encontrar la ayuda para diagnosticar problemas en Order allow, deny
Allow from all
el servidor Web.
</Directory>
Suponiendo que el archivo de prueba funcion, ahora puede pasar a configu- :

rar Apache. Lo siguiente es el contenido por defecto del archivo de configuracin # Error log for a single site:
ErrorLog /var/log/apache2/error log
.

/etc/ apache2/ sites -enabled/ 000-def ault. Las secciones comienzan y


terminan con etiquetas al estilo HTML, como se puede observar aqu: # Possible vales inelude: debug, info, notice,
# warn, error, crit, alert, and emerg
<VirtualHost *> LogLevel warn
j

</VirtualHost> # Access log for a single site:


CustomLog /var/log/apache2 /access log combined
.

Aqu hay una copia del archivo comentado:


# Sends Apache and PHP versin information to browsers;
Answer to any ame or IP address
# # Set to Off if you' re paranoid, or have reason to be:
NameVirtualHost * ServerSignature On

# Por any virtual host at any address, any port # Shows Apache docs (only to local users)
cVirtualHost *> # if you installed apache2-docs
# If Apache has problems, whom should it contact? # to suppress showing the documents,
ServerAdmin webmaster@localhost # you can comment these lines or delete them:
Alias /doc/ "/usr/share/doc/"
# Our web site files will be under this directory: <Directory "/usr/share/doc/"
DocuraentRoot /var/www/ Options Indexes MultiViews FollowSymLinks
AllowOverride None
# Overall directives, in case we move DocuraentRoot Order deny, allow
# or forget to specify something later: Deny from all
<Directory /> Allow from 127.0.0.0/255.0.0.0 ::1/128
# tets Apache follow symbolic links </Directory>
Options FollowSymLinks ,
</VirtualHost>
Administrando Apache Ad m nistrando Apache

La mayor parte de los cambios que haremos en los archivos de configuracin visitante. La autorizacin determina lo que el visitante puede hacer, como por
de Apache en esta seccin se harn sobre este archivo. Ei archivo de configura- ejemplo;
cin /etc/ apache2/apache2 conf contiene muchas opciones de la parte ser-
.

vidora que no necesitan cambiarse, con algunas excepciones notables que sern
Leer un archivo.

las que veamos aqu. Usar tecnologa de servidor.


Ejecutarun programa CGL
Generar un ndice para un directorio que carezca de l.

Estas importantes opciones indican a Apache que se ejecute para un ID de


le
En Apache, el lugar habitual para almacenar la informacin de autentifica-
usuario y un ID de grupo particular. El archivo /etc/apache2/apache2 conf .
cin es un archivo de usuario en texto plano (a menudo llamado archivo
por defecto contiene:
.htpasswd, despus de que el programa lo modifique). El archivo de usuario con-
User www-data tiene los ID de usuario y las contraseas cifradas. El archivo de grupo opcional
Group www-data contiene los ID de grupo y los ID de usuario en texto plano. Es til para sitios
grandes debido a que permite especificar permisos para un grupo entero, en lu-
Cualquier archivo y directorio servido por Apache necesita ser ledo por este
gar de especificarlos para cada uno de los usuarios individuales.
usuario y este grupo. Los permisos de archivo y de directorio incorrectos son
una de las causas ms comunes de errores en Apache, como la incapacidad de ver
Archivos de usuario
una pgina (o la posibilidad de ver algo que no debera verse).
Como ejemplo, cree un directorio protegido por contrasea y coloque, un pe-
Directiva Listen
queo archivo de texto dentro:
Apache normalmente responde a las peticiones en Puerto TCP 80, pero puede
# cd /var/www
escuchar en otros puertos, adems del 80. Es muy comn usar otro puerto para
# mkdlr secret
pruebas, muchas personas usan el 81 porque es fcil de recordar porque no se usa # cd secret
y
para otra cosa, para especificar uno o ms puertos, use una o ms directivas Listen: # echo "puedes verme > file.html

Listen. 81 Puesto que no lo ha protegido todava, el archivo debera ser visible desde el

navegador (http //serverl centralsof t org/secret/f ile html):


:
. . .

Si va a usar encriptacin SSL para algunas pginas, necesitar incluir esta


directiva para usa el puerto seguro estndar: puedes verme

Listen 443
Ahora haga un archivo de usuarios:
Directiva DocumentRoot # cd / tmp
# htpasswd -c /tmp/users jack
Cada sitio Web tiene su raz, que es el directorio que tienen los archivos de New password: blackpearl
contenido y los Scripts. Est especificado por la directiva DocumentRoot. En la Re-type new password: blackpearl
configuracin por defecto de Deban, est especificado en /etc/apache2/sites~ Adding password for user jacte
enabled/OOO-def ault:
Su contrasea no se mostrar cuando la introduzca. Necesitar incluir el
DocumentRoot /var/www/ parmetro -c la primera vez que ejecute el programa htpasswd en el archivo,
para crear el archivo.

Algunas partes de su sitio Web estarn abiertas a todos, pero quizs quiera Nota: No use d parmetro -c cuando aada ms usuarios, porque esto
restringir el acceso a ciertos visitantes. La autentificacin determina quin es un provocar que d archivo se sobrescriba.
Administrando Apache Administrando Apache

Si quiere cambiar la contrasea de jack despus, introduzca: Enter username and password for "test" at serverl.centralsoft.org
Username
# htpasswd /tmp/users jack Password
New password: kraken
Re-type new password: kraken Introduzca el nombre y la contrasea (ver los asteriscos cuando introduzca
Updating password for user jack la contrasea) y haga clic en O'K. Debera ver:
Elarchivo de usuario consiste en una serie de lneas que contienen un nombre
puedes verme
de usuario y una contrasea encriptada, separados por dos puntos {:), como se
muestra aqu:

jack :OSRBcYQOd/qsI Otra forma de manejar muchos usuarios es usar el archivo de grupo. Cree un
archivo /tmp/groups que contenga un nombre de grupo, dos puntos y uno o
Ahora edite el archivo de configuracin del sitio Apache /etc/apache2/
ms nombres de usuario separados por espacios:
sites-enablecl/OOO -def ault y aada (antes del final de la lnea
</
VirtualHost>): piratee: jack will elizabeth

<Location /secret> grupo y cada usuario individualmente:


Tambin se puede poner el
AuthName "test"
AuthType Basic pirates: jack
AuthUserFile /tmp/users pirates: will
Order deny,allow
pirates: elizabeth
require valid--user
</Location>
Luego aada una directive AuthGroupFile a OOO-default:
AuthName es obligatorio y debe ir seguido por una cadena de texto. Nosotros
cLocation /secret>
hemos usado "test", puede usar ""
si quiere, pero por alguna razn no puede
AuthName "test"
omitir la directiva. AuthType Basic quiere decir que estamos usando un archi- AuthType Basic
vo de usuario de tipo htpasswd. AuthUserFile especifica la ubicacin de dicho AuthUserFile /tmp/users
archivo. La directiva Order indica que Apache debera denegar el acceso por de- Order deny al low
,

AuthGroupFile /tmp/groups
fecto, y permitir el acceso slo si el usuario est especificado en el archivo de require group pirates
usuarios. Por ltimo, la directiva require indica que cualquier usuario del ar- </Locat
chivo de usuarios tiene permitido el acceso. Para permitir que slo el usuario
jack pueda ver el archivo que hemos creado, debera poner: Reinicie Apache como de costumbre para que los cambios surtan efecto:

require jack # /etc/init d/apache2 reload


.

Y si quiere permitir ms de un usuario, debera poner algo parecido a esto:

require jack will Elizabeth


Apache aplica restricciones de autorizacin a los contenedores, o a archivos y
Apache debe volver a leer su archivo de configuracin para que los cambios Un
ejemplo de contenedor se discuti en secciones ante-
directorios del servidor.
tengan efecto:
riores. Ahora revisaremos varias directivas de contenedores.
# /etc/nit d/apache2 reload
.

Rutas absolutas: Directorio


Ahora, intente acceder al archivo (http://www.example.com/secret/
file html) desde alguna de las cuentas listadas en el archivo de usuario. Podr
. Esta directiva especifica un directorio del servidor. Aqu mostramos un ejem-
ver un cuadro de dilogo donde pone algo parecido a esto: plo de los contenidos originales del archivo de configuracin de Apache:
Administrando Apache Administrando Apache

<Directory / En la directiva, primero va el (nombre alternativo), seguido de la ubicacin


alias
Options Fol lowSymLinks actual del directorio. El directorio puede estar fuera de la raz. En este caso, el ar-
AllowOverride None
< /Directory>
chivo tmp/test/ bu tton.gif estara accesible desde la URL http://
www. example . com/test/button gif . ,
incluso aunque no estuviera en /var/
www/test.

Esta directiva especifica los archivos y los directorios relativos al directorio


raz. Por ejemplo: Lmites

<Location /cgi> En un servidor ocupado, Apache puede crear muchos procesos hijos simult-
Options ExecCGI neos y usar mucha memoria. Esto puede incrementar la carga media y hacer que
</Location>
el sistema se vuelva ms lento, incluso que no responda. La tabla 6.2 muestra

permite programas CGI situados en /var/www/cgi. Veremos esto de nuevo cmo puede limitar algunos valores de ejecucin de Apache en el archivo de con-
figuracin del sitio.
en la seccin CGI.

Tabla 6.2. Directivas de recursos Apache.

Puede que necesite un archivo o un directorio especfico basndose en algn


Directiva Valor por defecto Uso
patrn de texto. Aqu mostramos un ejemplo de cmo evitar que las personas MaxClients 256 Mximo de peticiones simultneas.
descarguen imgenes de su sitio sin autorizacin, para ello comprobamos dnde ms peticiones, se rechazan.
Si llegan
se origin la peticin. Se usa la directiva RlesMatcb, que permite especificar ex- MaxRequestsPerChild Mximo de peticiones ser vidas antes
0 (infinito)
presiones regulares (patrones) sin marcas de comillas:
de que un proceso hijo se reinicie.
# Sorae notes on the regular expression:
Para evitar prdidas de memoria.
# \.means a literal dot character. KeepAlive on Reaprovecha las conexiones TCP
# (gif jpg] jpeg |png)
means any of these four strings.
|
entre diente Web y Apache.
el
# $ means the end of the f i leame.
# The regular expression will match files with the suffix
Incrementa la velocidad de descarga
# gif
. jpg,
, jpeg, or .png.
. .
de la pgina, puesto que devuelve
cFilesMatch \. {gif jpg jpeg |png) $"
| |
todos los contenidos de la pgina a
'
# Set the environment variable local to 1
travs de la misma conexin.
# if the referring page (the URL this image
was called from) is on this site.
tt KeepAliveTimeout 15 Segundos que se deben esperar
# Set local to 0 if the URL was on another site antes de que otra peticin use la
# that wants to steal our lovely images
SetEnvlfNoCase Referer " A http //serverl centralsof t org/ " local=l
misma conexin.
: . .

Order Allow, Deny


# This checks the local variable and
# allows access only if the referrer was local.
Allow from nv=local
</FilesMatch> La SSI puede usarse para incluir archivos de contenido, salida de programas, o
contenidos de variables de entorno como parte de un archivo HTML. La sintaxis
para especificar SSI en los archivos de configuracin de Apache puede ser confu-
sa. Por ejemplo, para permitir tecnologa de servidor en /var/www/ssi, pero no
La directiva Alias asigna un nombre a un directorio:
otras opciones, cree un. directorio:
Alias /test /tmp/test # mkdr /var/www/ssi
170 Administrando Apache Administrando Apache 171

e indique a Apache que permita esta tecnologa: Ahora cree el archivo middle shtml con
. este contenido:

cLocation /ssi> <!--#include virtual "top.html 11

Options Ineludes En el medio


</Location> < ! --#.include virtual "bottom.html " -->

Fjese en que el la inclusin (middle shtml) necesi-


archivo que est haciendo
Para aadir SS a las opciones existentes, use: .

que se estn incluyendo (top.html y


ta la extensin, .shtml, pero los archivos
cLocation /ssi> bottom html) no. Ahora ponga en la barra de direcciones del navegador http /
. :

Options +Includes /serverl centralsof t org/middle shtml y podr ver:


. . .

</Location>
arriba
SSI permite incluir archivos de contenido, pero tambin puede ejecutar cual-
le en el medio
quier programa e incluir su salida. Esto puede no ser muy seguro, por lo que abajo
para restringir la inclusin de archivos de contenido solamente, use:
opcin Ineludes est definida corno contenedor, SSI tambin puede ejecu-
Si la

cLocation /ssi> tar comandos, pero el usuario (normalmente un navegador Web) no puede pa-
Options IncludesNoExec sarle ninguna directiva. La ejecucin de comandos SS se sude usar para hacer
</Location> algunas cosas como listado de directorios:
fciles el

Si quisiera tener archivos SSI en varios lugares en lugar de tenerlos todos <!--#exec cmd="ls -1 /tmp"-->
confinados en este directorio, puede indicarle a Apache que asocie a tipo de archi-
vo el sufijo SSI: Otro funcionalidad de SSI mostrar variables de entorno CG1 y otro
es la de
tipo de variables. Una forma rpida de imprimir todas estas variables es:
AddHandler server-parsed . shttnl
< ! - - #printenv- * >
Para que SSI funcione, el mdulo de Apache correspondiente tiene que estar
Para una variable determinada, sera:
cargado, puesto que no se carga con la instalacin por defecto de Apache o de
PHP, tendremos que teclear lo siguiente: <!--#echo var = " DATE_GMT " - -

# a2enmod inelude lo que mostrara:


Una vez instalado el mdulo inelude; ejecute /etc/ init d/apache2 .

force-reload para activarlo. Tuesday, 01-Aug-2006 02:42:24 GMT


# /etc/init d/apache2 force-reload
.

Si slo tiene archivos estticos, o una mezcla de archivos estticos y Scripts


Los comandos SSI parecen comentarios HTML. Tienen la forma: CGI, es ms seguro desactivar la ejecucin de comandos SSL

< !
--#command argument=" valu" -- cLocation />
Options IncludesNoExec
Los posibles valores del comando son indude (incluye archivos), echo (mues- </Location>
tra variables de entorno), exec (incluye la salida de un comando) y config (da
formato a las variables de echo). CGI
Primero vamos a probar la inclusin de archivos. Cree dos archivos: CGI es una forma mucho ms flexible (y peligrosa) de ejecutar programas en
servidores Web, puesto que los usuarios pueden pasar informacin a los progra-
# cd /var/ww/ssi
# echo "top stuff" > top.html mas. Apache tiene dos formas de especificar qu programas pueden ejecutarse
# echo "bottom stuff > bottom.html como programas CGI.
1 72 Administrando Apache Administrando Apache 1 73

Location Ahora vamos a intentar hacer algo ms interesante, nos conectaremos al ser-
vidorMySQL, ejecutaremos una consulta MySQL e imprimiremos los resultados
Las dos siguientes directivas sirven para asociar los programas CGI del direc- como HTML. De nuevo, necesitaremos la contrasea del usuario root para MySQL.
torio/var/ cgi con la URL que comienza porhttp : / / serverl . centralsof t Guarde este archivo como /var/www/db .php:
org/ cgi/:
<?PftP
$link = mysql_connect "localhost" "root", "newmysqlpassword"
(
)
ScriptAlas /cgi /var/cgi ,

if ( $link) {
S

echo "Can't connect to database. Drat.\n";


O exit { )
}
<Location /cgi> $result = mysql_query "show databases"); (

Options ExecCGI if $result)


! {
</Location> echo "Arggh, a database error: ", mysql_error { );
exit ( )

# print_r prints all of a variable' s contenta


El mtodo del sufijo asocia un tipo MIME (nombre estndar para tipos de while ($row = mysql_fetch_assoc ($result)
print_r {$row)
archivos) con un sufijo. El mdulo php usa este mtodo para conseguir que Apa-
?>
che pase los archivos .pho al intrprete de mod php:
Introduzca la URL http://serverl.centralsoft.org/db.php en su
AddType application/x-httpd-php .php
navegador y podr ver:

Aqu le mostramos los contenidos del archivo de configuracin de Apache Array { [Database] => mysql ) Array { [Database] => test )

para mod__php (/etc/apache2/mods-enabled/php4 conf ), que trata los ar- .

Si hubiese usado el mismo comando SQL desde el cliente de lnea de coman-


chivos con el sufijo .phtml o .php como Scripts PHP:
dos, habra obtenido los mismos resultados (dos bases de datos, llamadas mysql
<If Module mod_php4 c> . y test), pero con un formato diferente:
AddType application/x-httpd-php .php .phtml ,php3
AddType application/x-httpd-php- source .phps $ mysql -u root -p
Enter password:
</lfModule>
Welcome to the MySQL monitor. Commands end with or \g ;

Your MySQL cormection id is 2 996 to server versin: 4.0. 24__Debian~


La primera lnea AddType indica que los archivos que terminen en .php, .php
10sarge2-log
o .phtml se ejecuten como programas CGI. La segunda lnea AddType le indica a
Apache que imprima el contenido de los archivos con sufijo .phps en lugar de Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
ejecutarlos y devolver su salida. Los autores de sitios Web pueden usar esto para
mysql > show databases;
ejecutar un script (.php) y permitir que los usuarios vean el cdigo fuente (.phps). + +
Si de manera accidental usa el sufijo .phps en lugar de .php, su script: no se ejecu- Database I
|

tar, sino que su contenido se mostrar por pantalla. 4 +


mysql
Nunca ponga un intrprete de Perl, PHP o una shell de Linux en un directorio |

|
test
CGI. Cualquiera podra ejecutarlos con permisos de usuario y de grupo de Apache.
Cuando probamos la instalacin PHP anteriormente, creamos un pequeo 2 rows in set (0.00 sec)
programa PHP:

<?php
phpinf o ( ) ;
Las directivas PHP deben colocarse en su propio archivo de configuracin PHP
(/etc/php4/apache2/php ini) o en el archivo de configuracin de Apache.
.
174 Administrando Apache Administrando Apache 1 75

Normalmente, no tendr que manipularlas, a menos que instale un mdulo PHP indicado en la peticin del navegador con el directorio donde se almacenan los

de extensin o quiera modificar dnde se deben buscar las libreras o configurar archivos que se servirn:
algunas opciones (como el modo seguro). Los mdulos Apache normales tienen
# Accept any site ame on any port
archivos de configuracin con una extensin .conf, ubicados en el directorio / NameVirtualHost *
etc/apache2/mods~enabled. cVirtualHost *>
ServerName wwwl example cora
. .

DocumentRoot /var/www/vhosts/wwwl example com"


. .

Hoss Virtuales </VirtualHost>


cVirtualHost *>
Aunque un servidor Apache dedicado para un nico sitio, proba-
podra tener ServerName www2 example com
. .

# A virtual host can have mltiple ames:


blemente querr manejar ms de un sitio. Apache llama a esta caracterstica ServerAlias backup.example.com
"hosts virtuales", y hay ms de una manera para especificarlos. Cuando un dien- DocumentRoot " /var/www/vhosts/www2 example com"
. .

te Web contacta con un servidor Web va http, enva la direccin IP de destino y </VirtualHost>
(en HTTP 1.1, el protocolo Web estndar actual) el nombre de un servidor de esa
direccin.
En laconfiguracin por defecto de Apache, no hay host virtuales indepen- Si quiere administrar mltiples equipos sin necesidad de especificar los nom-
dientes. Apacheservir las pginas Web sin importar cuntos nombres tenga el bres de cada uno en los archivos de configuracin, puede activar el mdulo
servidor, y todos los nombres de dominio comparten la misma configuracin. mod_vhost__alas de Apache:
En los siguientes ejemplos, supondremos que necesita alojar cada sitio en su
# a2enmod vhost_alias
propio directorio en /var/www/vhosts.
y configurar los nombres que se servirn en el archivo designado. El elemento
Hosts virtuales basados en IP vhost alias del comando anterior sustituye al archivo /etc/apache2/mods-
enabled/vhost alias conf. El contenido de ejemplo es:
.

Si tiene ms de una direccin en su servidor y quiere dedicar ciertas direccio-


IP
nes a ciertos sitios, debe usar host virtuales basados en IP (o basados en direccin): UseCanonicalName Off
VirtualDocumentRoot /var/www/vhosts /%0
cVirtualHost 192. 168. 6. 1>
S e rve rName " www 1 La directiva VirtualDocumentRoot es muy flexible. El %0 especificado aqu
DocumentRoot " /var/www/vhosts/wwwl example com"
. .
sustituye ainombre entero del sitio ( server 1 centralsof t org). Podramos
. .

</VirtualHost>
haber usado 962 para obtener la segunda part e de la izquierda (centralsoft), 96-2
cVirtualHost 192. 168. 6. 2>
ServerName "www2" para la segunda parte de la derecha (tambin centralsoft), 962 + para la segunda
DocumentRoot " /var/www/vhosts /www2 example com"
. . parte del nombre (centralsoft org), etc. Estas alternativas son tiles si tiene
.

</VirtualHost> muchos hosts virtuales. Si siempre tiene el mismo nombre base de dominio, como
centralsoft.org, y los sitios se llaman wwwl.centralsoft.org, www2 .

Esto era lo ms comn en los primeros das de la Web, debido a que HTTP 1.0
centralsoft org, etc., podra usar 961 para obtener los directorios /var/www/
.

no tena forma de especificar qu servidor quera consultar en esa direccin, ahora,


vhost s/wwwl, /var/www/vhosts/www2, etc.
con HTTP 1.1, el alojamiento basado en nombres es ms popular.
Por ahora, solo use 960 para obtener el nombre completo y cree un directorio
Hosts virtuales basados en nombres para cada host virtual:

# cd /var/www/vhosts
Con este mtodo, la directiva NameVirtualHost define qu direcciones pueden
# mkdir wwwl.centralsoft.org
ser hosts virtuales; * significa cualquier nombre o direccin de este nombre, in- # echo "test wwwl centralsof t . org"
. > wwwl.centralsoft.org/index.html
cluyendo localhost, 127.0.0.1, www.centralsoft.org, www2 centralsof t . # mkdir www2.centralsoft.org
org, u otros. Las directivas ServerName asociadas con el nombre del servidor # echo "test www 2 .centralsoft.org" > www2.centralsoft.org/index.html
Administrando Apache Administrando Apache

Luego reinicie Apache: Por defecto, todos sus hosts virtuales comparten los mismos logs de acceso y
de error. Si tiene ms de un host, no obstante, ser conveniente dividir los logs
# /etc/init d/apache2 reload.

para ofrecer anlisis diferentes para cada uno.


Si tiene registros DNS que apuntan a wwwl.centralsoft.org Apache tiene dos formatos estndar para archivos logs de acceso: comn y
y
www2 centralsof t org desde su servidor, puede poner en el servidor http /
. .
: combinado. Encontrar sus respectivas definiciones en el archivo de configura-
wwwl centralsof t org/ ndex html y http / /www 2 centralsof t org
. . .
: . . cin maestro de Apache, / etc/apache 2 /apache conf .

para ver los contenidos de los archivos ndex html de prueba que acaba de .

hacer. # The followng directives define some forma t nicknames for use with
# a CustomLog directiva (see below)
LogFormat "%h %1 %u %t \"%r\" %>s %b \"%{Referer} i\" \"%{ser-Agent}i\"
combined
LogFormat "%h %1 %u %t \"%r\" %>s %b" comrnon
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{ser~agent}i" agent
Apache escribe archivos ASCII de log de dos tipos: acceso (peticiones que se
hacen al servidor) y error (errores que ocurren durante las peticiones). Puede Todos los % en los archivos de configuracin de Apache representan variables;
controlar qu se escribe en estos archivos, dependiendo de lo que quiera saber por ejemplo, %h significa nombre de equipo. El formato combinado es el formato
sobre los visitantes de su sitio, cunto espacio tenga en disco (los logs pueden comn pero incluye el visitante y el agente de usuario (navegador). Desgraciada-
hacerse muy graneles) y qu herramientas de anlisis de logs quiera usar. mente, ninguno de los dos formatos incluye el nombre del host: virtual (una
Un mensaje de acceso tpico (divido en varias lneas para que quepa en la variable %) que necesita para dividir el log por equipos. Por tanto, si quiere hacer
pgina) es: esto ltimo, tendr que definir un nuevo tipo de log.
En lugar de dejando huellas por todos los archivos de configuracin de Apa-
ir
192.168.0.1 -
[22/Sep/2006 15 04 05 -0400] "GET / HTTP/1.1"
- : :

200 580 "Mozllla/5 0 (Windows; U; Windows NT 5.0; en-US;


.
cambios en el sitio como lo hemos hecho hasta ahora
che, contine haciendo los
rv 1 8 0 7
: . . . ) Gecko/20060909 Firef ox/1 5 0 7 . . . (/etc/apache 2 / sites -enabled/ 000-def ault). Ponga estas lneas encima de
sus directivas VirtualHost:
Un mensaje de error tpico es:

[Fri Sep 29 10:13:11 2006] # Define a new virtual host comrnon log format:
[error]
LogFormat "%v %h %1 %u %t \%r\" %s %b" veommon
[client www.centralsoft.org]
File does not exist: /var/www/ ndex. html

Los logs por defecto son /var/log/apache2/access log y /var/log/ .

apache2 /error log. .

Se estar preguntando si dividir la informacin de los logs en los archivos de


Apache a medida que se va accediendo, o dividir el archivo de acceso una vez al
da con una utilidad para dividir los archivos log de Apache. Preferimos la prime-
ra opcin, debido a que coloca las lneas en el log adecuado inmediatamente, y no
La configuracin por defecto de Apache incluye una tarea diaria que hace
rotar los logs de acceso y de errores. La rotacin consiste en:
necesitamos escribir tareas cron. Un buen programa es vlogger. Apache le per-
mite conectar el log con algunos programas externos, que es justo lo que quere-
1 . Renombrar access log a access log . . . 1 y error log a error log 1
. . . .
mos. Aada toda esta informacin debajo de la lnea LogFormat que introdujo
2. Incrementarel nmero de la extensin de logs rotados anteriormente (por previamente:
ejemplo,access log 1 se incrementa a Access log 2 ).
. . . .

# Split log on the fly into virtual host directori.es


3. Borra access log 7 y error log 7. . . .
.
# under /var /log /apache 2
4. Crea un nuevo access log y un error log. . .
CustomLog "| /usr/sbin/vlogger -s access.log /var/log/apache2 " veommon
Administrando Apache Ad m i nistrando Apache

Ya que vlogger no forma parte del paquete estndar de Deban, instlelo: aplicacin, por la misma razn. Encriptar los datos sensibles como los nmeros
# apt-get install vlogger de tarjeta de crdito y las contraseas es esencial.
Cuando solicita una pgina desde un servidor Web con el prefijo http://, to-
Luego reinicie Apache:
dos los datos que circulan desde el servidor hasta el navegador estn sin cifrar.
# /etc/init. d/apache2 restart Cualquiera con acceso a las redes que intervienen en la comunicacin puede cap-
turar los contenidos. Piense que el acceso Web (como el correo electrnico estndar)
vlogger crear un archivo en el directorio /var/log/apache2 para cada host
es una postal en lugar de una carta.
virtualque ha definido. Se crear un log de acceso diario con marcas de tiempo, y
con un enlace simblico al archivo access log ms reciente: .
El estndar Secure SocketsLayer fue desarrollado para encriptar el trfico Web,
y ha sido un factor decisivo en la explosin de sitios comerciales y del comercio
# cd /var/log/apache2/wwwl example com . .
electrnico en la Web. Apache tiene la capacidad de encriptar el trfico Web con
# ls -1
total 4 SSL, que con ligeras modificaciones se conoce como la capa Transport. Layer Security.
-rw-r--r- - 1 root root 984 Aug 3 23:19 08032006-access.log Este cifrado se obtiene cuando accede a un sitio con el prefijo https://. Imagine
lrwxrwxrwx 1 root root 19 Aug 3 23:19 access.log -> 08032006-access.log que el trfico Web cifrado es como un sobre sellado.
Vamos a configurar SSL para Apache. Edite /etc/apache2/ports conf y .

aada esta lnea:

Hay muchos analizadores de logs libres y comerciales: Nosotros pensamos Listen 443
que Webalizer es una buena opcin porque es fcil de instalar y genera una sali-
da muy til: Luego active el mdulo SSL de Apache e indique a Apache que debe usarlo:

Introduzca:
# a2enmod ssl
# apt-get install webalizer
El mdulo ssl est instalado; ejecute /etc/init d/apache2 force-reload
.

Which directory should webalizer put the output in? para activarlo.
/var/www/webalizer
Enter the title of the reports webalizer will generate. # /etc/init. d/apache2 force-reload
Usage Statistics for serverl.centralsoft.org
What is the filename of the rotated Webserver log?
/var/log/ apache2 /access log
Ahora intente acceder a su pgina de inicio con https / / URL (por ejemplo, :

. .

https //serverl centralsof t org).


:
. .

Acceda a l a travs del URLhttp //serverl centralsof t org/webalizer.


: . . Para que SSL funcione, su servidor necesita un certificado. Este certificado es
Al da siguiente (despus de que se ejecute la tarea croo de Webalizer /etc/ un archivo encriptado que prueba que el usuario es quien dice ser. Cmo sabe el
cron da i ly/ webalizer) podr ver pginas con tablas que describen el acceso a
.
navegador en quin debe confiar? Los navegadores Web disponen de listas de
su servidor Web. No necesita editar el archivo de configuracin (/etc/ autoridades de certificacin (CA). La cadena de comandos para ver estas listas es:
webalizer . conf), a menos que quiera cambiar las opciones que proporcion
Pirefox 2.0
durante la instalacin.
Herramientas Avanzadas Cifrado
* > Ver certificados Autoridades
>

Nota: Los spammers tienen formas de manipular los logs Web, por lo que Internet Explorer 6.0
buena prctica restringir el acceso a las pginas de salida de Webalizer.
es uia Herramientas Opciones
de Internet Contenido
> Certificados
Certificado de confianza raz

Encrlptacin SSL/ILS Los CA son empresas que venden a las organizaciones un certificado y se en-
cargan clel trabajo legal para verificar su identidad. Los sitios Web comerciales
WillieSutton dijo que robaba bancos porque era "donde estaba el dinero". Los casi siempre usan CA comerciales, porque el navegador sude aceptar los certifi-
ataques en Internet se estn incrementando, sobre todo los ataques a nivel de cados que expenden. De manera alternativa, usted puede ser su propio CA y crear
Administrando Apache Admi nistrando Apache

un certificado como con certificados comer-


propio. Esto funciona tanto con SSL Como mnimo se necesita un archivo HTML esttico para evaluar el rendimien-
ciales, pero el navegador Web
preguntar al usuario si desea o no aceptar el
le to. Cree un archivo llamado /var/www/bench.html. Debera ser aproximada-
certificado. Los certificados propios son comunes en proyectos de cdigo abierto mente del tamao que cabe esperar para una pgina de su sitio. Puede impresionar
pequeo y durante las pruebas de proyectos grandes. a sus amigos generando texto en Latn desde el sitio http / /www lipsum.com y
:

pegndolo en bench html. El programa que evala el rendimiento es ab, pertene-


.

ciente al paquete apache2-uts, y debera instalarse junto con Apache. Hagamos


suEXEC 1000 peticiones distintas para el mismo archivo, con concurrencia 5 (5 peticiones
simultneas):
Apache puede servir mltiples sitios al mismo tiempo, pero hay sitios que
tienen pginas distintas, scripts CGI, usuarios, etc. Debido a que Apache se eje- # ab -n 1000 -c 5 http://serverl.centralsoft.org/bench.html
cuta con los permisos de un determinado usuario y grupo (por defecto www- This is ApacheBench, Versin 2.0.41-dev <$Revision$> apache-2.0
Copyright (c) 1996 Adam Twiss, Zeus Technology Ltd,
data), el usuario puede escribir
y leer el contenido de todos estos sitios. Pero http: //www. zeustech.net/
nosotros queremos asegurarnos que slo los miembros de un sitio determinado Copyright (c) 1998-2002 The Apache Software Foundation,
pueden ejecutar los programas de ese sitio y acceder a los datos de ese sitio. Como http://viww.apache.org/
de costumbre, hay ms de una forma de hacer esto, usando varias combinacio-
Benchmarking serverl.centralsoft.org (be patient)
nes de Apache, PHP y otras herramientas. Completed 100 requests
Un mtodo popular es usar suEXEC, un programa que se ejecuta con permi- Completad 200 requests
sos de root y hace que los Completed 300 requests
programas CGI se ejecuten con el ID de usuario y de
Completed 400 requests
grupo de un usuario especfico, no el usuario y el grupo del usuario que ejecuta Completed 500 requests
el servidor Apache. Por ejemplo, al usar nuestro segundo host virtual Completed 600 requests
www2.example.com, con la cuenta de usuario www-user 2 y el grupo www- Completed 700 requests
group2, cambiaremos los permisos del host virtual especificando: Completed 800 requests
Completed 900 requests
cVirtualHost www2 example com> Finished 1000 requests
. .

SuExecUserGroup www-user 2 www-group 2


Server Software: Apache/2 .0.54
</VirtualHost>
Server Hostname: serverl centralsoft.org
Server Port 80

Document Path: /bench html


.

Document Length: 1090 bytes


Nuestro principal objetivo es instalar y configurar nuestro servidor Web de Concurrency Level: 5
manera correcta y segura. Adems de esto, queremos asegurarnos que puede Time taken for tests: 2.799386 seconds
soportar la carga de trabajo que suponen nuestros sitios Web. La Web tiene mu-
Complete requests: 1000
chas partes dinmicas, es muy fcil que estas partes produzcan
bloqueo del el
Failed requests: 0
sistema. Para evaluar rendimiento de nuestro sistema, vamos a usar herra-
el
Write errors: 0
mientas especializadas que simulan cientos de usuarios activos (que por otra par- Non-2xx responses: 1000
te es mucho ms barato que pagar a cientos de usuarios para hacer las pruebas). Total transferred: 1425000 bytes
HTML trans f erred 1090000 bytes
Requests per second: 357.22 [#/sec] (mean)
Nota: Apache puede ejecutarse con diferentes versiones, llamadas modelos. Time per request: 13.997 [ms] (mean)
La instalacin por defecto de Deban es el modelo tenedor, en el cual varios Time per request: 2.799 [ms] (mean, across all concurrent requests)
procesos Apache atienden las peticiones. Este suele ser el modelo que mejor Trans fer rate: 496.89 [Kbytes/sec] received
funciona bajo Linux.
Connection Times (ms)
Administrando Apache Administrando Apache

min mean [+ /-sd] median max # apt-cache search drupal


Connect 0 0 0.1 0 3 drupal - fully-f eatured content management/dscussion engine
Processing 6 11 2.2 1 22 drupal -theme-marvinclassic - "Marvin Classic" theme for Drupal
Waiting 5 10 2 . 11 18 drupal -theme-unconed - "UnConeD" theme for Drupal
Total 6 11 2.2 11 22

El primero es el que nosotros queremos, por lo que vamos a instalarlo de la


Percentage of the requests served within a certain time {ms
50% II siguiente manera:
66 % 12
75% -13 # apt-get install drupal
80% 13
90% 14
El proceso de instalacin indica que necesita varios paquetes que no tiene,
95% 14
98% 15 consgalos e instlelos. Luego se le preguntar por la configuracin de Drupa! a
99% 16 travs de una secuencia de mens. Use el fabulador para moverse entre las op-
100 % 22 (longest request) ciones, la barra espadadora para seleccionar una opcin o ntro para ir a la
siguiente pgina. Solamente incluiremos la ltima lnea de cada pantalla aqu,
Normalmente, la gente quiere ver las peticiones por segundo o su inverso, el
eso s, con la respuesta recomendada:
tiempo por peticin. Estos nmeros le indicarn qu debe mejorar en relacin
con el hardware del servidor y con la configuracin de Apache. Automatically create Drupal datbase?
Yes

Instalando y administrando Drupa! Run database update script?


Yes

Ahora ya tenemos Apache, PHP y MySQL ejecutndose, instalemos un pa- Database engine to be used with Drupal
quete para usarlos. Desgraciadamente, no vamos a pagar por un producto co- MySQL
mercial, por lo que escogeremos algn producto de cdigo abierto, que represente
Database server for Drupal' s database
un ejemplo tpico de software real y que sea bastante til. Vamos a visitar por
localhost
ejemplo http //www drupa! org:
: .

Drupal es un software que permite a un individuo o a una comunidad de usuario Database server admnstrator user ame on host localhost
publicar, gestionar y organizar una variedad de contenidos en un sitio Web. root

Entre estas funcionalidades se incluyen foros, gestin de documentos, gale- Password for database server admnstrator root on localhost
ras, grupos de noticias y otras formas de colaboracin basadas en Web. newmysqlpassword
Las siguientes dos secciones describen los dos mtodos de instalacin de Drupal:
Drupal database ame
* ms fcil, as es que intntelo en primer lugar. Sin embargo,
apt-get: Es lo Drupal
nosotros hemos tenido problemas con los paquetes Deban de Drupal.
Remove Drupal database when the package is renoved?
0
Desde las fuentes: Supone ms trabajo, pero puede ver qu est ocurrien- No
do, intntelo de esta forma si el mtodo apt-get falla.
Remove former database backups when the package is removed?
Yes

Web server (s) that should be configured automatically


apache
ms fcil de instalar Drupal es con apt-get. Puede ir al sitio Web de
La forma [ ]

apache- ssl
[ }
Drupal y buscar un paquete listo para descargar o puede ver mediante apt-cache apache -perl
[ ]

si est en el repositorio de Deban: [*] apache2


Administrando Apache Administrando Apache

La instalacin copiar los archivos de programa, crear una base de datos Query OK, 0 rows affected (0.01 sec)
MySQL y crear un archivo de configuracin Apache (/etc/apache2/conf . d/
drupa 1 conf ):
.
mysql > FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
Alias /drupal /usr/share/drupal
<Directory /usr/share/drupal/ mysql > quit;
Options +FollowSymLinks Bye
AllowOverride All
order allow, deny Luego, cargue la definicin de la base de datos de Drupal en MySQL:
allow from all
</Drectory> # mysql -u root -p drupal < database/ database 4 . . 0 .mysql
Enter password:
S aparece un mensaje parecido a este: #

An override for "/var/lib/drupal/f iles already exista, but -forc Despus edite el archivo def ault/conf ig php y cambie
.
la lnea:

specified so lets ignore it.


$db url = 'mysql //username :password@localhost/databasename'
:

puede quebrarse la cabeza buscando una solucin, o instalarlo desde las fuen-
tes. Si todo ha ido bien, sltese la siguiente seccin.
por:

$db_url = 'mysql //drupal : drupalpwOlocalhost /drupal


:
'

Instalrselo Drupa! desde las fuentes

Descargue la ltima distribucin y vaya al directorio raz de su servidor Web:


En su navegador Web, vaya a http //serverl centralsof t org/ drupal.
:
. .

# wget http://ffcp.osuosl.Org/pub/drupal/files/projects/drupal-4.7.3.tar.gz
# tar xvzf drupal -4.7.3. tar gz La primera pgina (en la versin que hemos probado) dice:
.

# mv drupal -4. 7. 3 /var/www/drupal


# cd /var/www/drupal Welcome to your new Drupal webs i te!
Please follow these steps to set up and start using your website:
Create your administrafcor account
Seguiremos los pasos indicados en INSTALL.txt
y en INSTALL.mysql.txt. Crea- To begin, create the first account. This account will have full
remos labase de datos Drupal (la llamaremos drupal), un usuario administrador administration rights
(tambin drupal, puesto que no tenemos mucha imaginacin) and will allow you to configure your website.
y una contrasea
(por favor, no use drupal tambin):
Haga clic en el enlace Crear la primera cuenta. En esta segunda pgina, teclee
el nombre deseado para su cuenta (o su nombre completo) en el campo de
# mysql -u root -p texto
Enter password: botn Crear una
Username y su correo en el campo E-Mail. Luego presione el
Welcome to the MySQL monitor. Commands end with or \g.
;
nueva cuenta. Ser redirigido a la primera pgina, donde en la parte de arriba
Your MySQL connection id is 37 to server versin: 4.0. 24_ Deban- 10sarge2-log
podr leer:
Type 'help;' or '\h' for help. Type \c' to clear the buffer. si le ha llegado la contrasea gene-
Compruebe su correo electrnico para ver
mysql > creafce database drupal; rada y autentifquese en Drupa! en el rea "User login". Ser redirigido a una
Query OK, 1 row affected (0.00 sec) pgina para establecer una contrasea permanente. Despus de esto, puede ir a
la pgina de inicio, donde ver las siguientes opciones:
mysql> GRANT SELHCT INSERT, UPDATE, DELETE, CREATE, DROP,
,

-> IHDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLEE 1 . Cree su cuenta de administrador.
-> on drupal.* to
Para empezar, cree la primera cuenta. Esta cuenta tiene plenos derechos
-> n drupal"@"localhost'' identified by "drupalpw";
ele administracin por lo que le permitir configurar el sitio Web.
Administrando Apache Ad m inistrando Apache

2. Configure su sitio Web. serverl.centralsoft.org. 106489 IN A 192.0.34.1 66


Una vez en el sistema, visite la seccin de administracin, donde puede
personalizar y configurar todos los aspectos de su sitio Web. Luego vea si el servidor puede alcanzarse desde Internet. Si su cortafuegos
3. Active la funcionalidad adicional. permite pings, sondee si el servidor responde a la los pings desde fuera:
Luego, visite la lista de mdulos y actvelos en funcin de sus necesidades # ping serverl.centralsoft.org
especficas. Puede encontrar mdulos adicionales en la seccin de descarga PING serverl.centralsoft.org (192.0.34.166) 56(84) bytes of data.
64 bytes from serverl.centralsoft.org (192.0.34.166): icmp_seq=l ttl=49
de mdulos de Drupal.
time=81.6 is
4. Personalice el diseo de su sitio Web.
Compruebe que el puerto 80 est abierto y no est bloqueado. Pruebe con
Para cambiar la apariencia de su sitio Web, visite la seccin de temas.
nmap desde una mquina externa:
Deber elegir uno de los temas incluidos o descargar temas adicionales de
la seccin de descarga de temas de Drupal. # nmap -PO -p 80 serverl.centralsoft.org

5. Comience a publicar contenido. Starting nmap 3.81 http://www.insecure.org/nmap/


(
at 2006-07-25 )

Finalmente, puede crear contenido para su sitio Web. Este mensaje des- 23:50 CDT
Interesting ports on serverl.centralsoft.org (192.0.34.166):
aparecer una vez que haya publicado por primera vez.
PORT STATE SERVICE
Para ms informacin, vaya a la seccin de ayuda, o a los libros en lnea 80 /tcp open http
de Drupal. Tambin puede enviar una pregunta al foro o usar un amplio
rango de opciones de soporte. Nmap fnished: 1 IP address (1 host up) scanned in 0.186 seconds

Puesto que ya ha creado la primera cuenta (la de administrador). Ahora ya Si no tiene nmap, use telnet para conectarse al puerto 80 y haga la peticin
puede probar todas las funcionalidades. HTTP ms simple posible:

# telnet sarverl.centralsoft.org 80
Trying 192.0.34.166. . .

Connected to serverl.centralsoft.org.
,A
Escape character is ]'.
Si le gusta diagnosticar problemas, probablemente le gustar la Web. Hay
HEAD / HTTP/ 1.0
muchas cosas que fallan, en muchos lugares y de muchas formas, por lo que
estara ocupado durante muchos aos. Echemos un vistazo a algunos problemas HTTP/1.1 200 OK
Web clsicos. (Los mensajes de error del navegador que usa Firefox, aunque los Date: Wed, 26 Jul 2006 04:52:13 GMT
de Internet Explorer son similares.) Server: Apache/2.0.54 (Fedora)
Last-Modified: Tue, 15 Nov 2005 13:24:10 GMT
ETag " 63f f d- lb6 - 80bf d280
:

Accept-Ranges bytes :

Content-Length: 438
Supongamos que el directorio raz es /var/www, su archivo es test.html y Connection: cise
Content-Type text/html; charset=UTF-8
:

su servidor es serverl.centralsoft.org. Cuando usa un navegador Web


externo http://serverl.centralsoft.org/test.html, obtiene una p- Connection closed by foreign host.
gina de error en la ventana del navegador. Un mensaje de error del navegador
como "Servidor no encontrado" implica un problema DNS. Primero, asegrese Si no funciona, asegrese de que esta, lnea est en /etc/apache2
de que serverl centralsof t org tiene entradas DNS en un servidor de nom-
. .
ports conf .

bres pblico:
Listen 80
# dig serverl.centralsoft.org
y tambin, que puede ver algo muy parecido a esto en el puerto 80, como lo
ANSWER SECTION: siguiente:
Administrando Apache Administrando Apache

# Isof -i j 8 # df
COMMAND PID USER FD TYPE DEVICE SIZE NODE AME Filesystem IK-blocks Used Available Use% Mounted on
apache?. 10678 www-data 3u IPv6 300791 TCP * WWW : (LISTEN) / dev/hdal 193406200 4S5292 183126360 1% /
apache2 10679 www-data 3u IPv6 300791 TCP * www : (LISTEN) tmpfs 453368 0 453368 0% /dev/shm
apache 2 10680 www-data 3u IPv6 300791 TCP * WWW : (LISTEN)
apache2 20188 root 3u I Pv6 300791 TCP * www : (LISTEN) Si ha usado una directiva User o Group diferente en la configuracin de Apa-
apache 2 20190 www-data 3u I Pv6 300791 TCP * www (LISTEN)
:
che, compruebe que el usuario y el grupo existen:
apache2 20191 www-data 3u IPv6 300791 TCP * WWW : (LISTEN)
apache2 20192 www-data 3u IPv6 300791 TCP * www : (LISTEN)
# id www-data
apache2 20194 www-data 3u I Pv6 300791 TCP * WWW (LISTEN)
uid=33 (www-data) gid=33 (www-data) groups=3 3 (www-data)
:

apache2 20197 www-data 3u IPv6 300791 TCP * www : (LISTEN)


apache2 20198 www-data 3u IPv6 300791 TCP * WWW (LISTEN)
navegador devolvi un mensaje de error de Apache, todava tiene campo
:

Si el
apache2 20199 www-data 3u IPv6 300791 TCP * www (LIS TEN)
:
1

para seguir investigando. S lo que se muestra es:


Si no ve apache2 en esta salida, compruebe que Apache se est ejecutando:
Not Found
# ps -efl j
grep apache2 The requested URL /wrong.html was not found on this server.

Si la salida contiene lneas como esta: la URL probablemente no existe. Si puede ver:

5 S root 7692 1 0 76 0 - 2991 415244 Jull6 ? 00:00:00 Forbidden


/usr/sbin/apache2 -k start -DSSL
You don't have permission to access /permissions html on this server. .

Apache se est ejecutando. Si no es as, reincielo:


el archivo est ah, pero el usuario Apache no puede leerlo.

# /etc/init.d/apache2 start
# cd /var/ww
Luego ejecute el comando ps de nuevo. Si Apache sigue sin aparecer, mire el # ls ~1 permissions.html
-rw 1 root root 0 Jul 26 00:01 permissions.html
log de errores:

Los problemas de permisos pueden solucionarse cambiando el propietario del


# tail -f /var/log/apache2/error.log
archivo ai proceso que ejecuta Apache.

Si no tiene permisos para ver este archivo, definitivamente hoy no es su da.


Si el log de errores est vaco, quiz tenga los permisos equivocados. Confirme
que el directorio /var/log/apache2 y /var/log/apache2/error logf ile .

existen: LIse

# ls -1 /var/log/apache 2 # apache2ctl -S
total 84
-rw-r 1 root adm 31923 Ju.l 25 23:09 access.log Para comprobar las directivas de host virtual.
-rw-r 1 root adm 32974 Jul 22 20:50 access.log.
-rw-r 1 root adm 379 Jul 23 06:25 access log 2 gz
no funciona
. .

-rw-r 1 root adm 1969 Jul 25 23:09 error.log


.

SSI
-rw-r 1 root adm 1492 Jul 23 06:25 error.log.
-rw-r 1 root adm 306 Jul 23 06:25 error log 2 gz . .
Si ve lneas como estas en el log de error {/var/log/apache2 /error log): .

[error] an unknown filter was not added INCLDES


de errores muestra otra informacin ms antigua, probablemente
Si el log
:

quede poco espado en disco. Es sorprendente el nmero de veces que olvidamos comando:
es que no activ rnod_include. Ejecute el
comprobar esto antes de investigar cosas ms esotricas como los cortafuegos.
Teclee: # a2enmod inelude
Administrando Apache

Un programa CGI
Si no consigue que un programa CGI se ejecute, pruebe las siguientes soluciones:
e
Se ha activado el CGI usando alguno de los mtodos ya descritos ante-
riormente?
8 Est el programa CGI es un directorio CGI como /var/cgi-bin o tiene
un sufijo como .php?
Se puede leer el archivo? Si no, use chmod.
0
tXu dice el log de errores de Apache?
Qu dice el log de error del sistema, /var/log/messages?

Compruebe que tiene activado el mdulo SSL de Apache (a2enmod ssl) e indi-
que a Apache que escuche en el puerto 443 en /etc/apache 2 /ports conf . Hace ms de 10 aos, las personas descubrieron que podan conectar mlti-
ples mquinas baratas para realizar tareas de computacin que en condiciones
Listen 443
normales requeriran un mainframe o un supercomputador. El clster Beowulf
Si la directiva no estuviera ah, adala y reinicie Apache. Luego intente acce-
de la NASA fue uno de los primeros ejemplos y an hoy se sigue utilizando
der a esta URL desde su navegador: https //serverl centralsof t org. Si
: . .
(http //www. beowulf org). En la Wikipedia (http //en wikipedia org/
: . : . .

sigue sin funcionar, puede que el puerto 443 est bloqueado por un cortafuegos. wiki/Computer_cluster) estn recogidas algunas de las caractersticas prin-
Puede comprobarlo con nmap: cipales de un clster: un clster es un grupo dbilmente acopiado de ordenado-
res que trabajan juntos y que en muchos aspectos puede verse como un nico
# nmap -P0 -p 443 serverl.centralsoft.org ordenador. Los clusters a menudo, pero no siempre, estn conectados mediantes
redes de rea local de alta velocidad. Los clusters se suelen desplegar para mejo-
Starting nmap 3.70 http://www.insecure.org/nmap/ at 2006-08-01
rar la velocidad o la fiabilidad que ofrece un nico ordenador, puesto que ofre-
( )

22:38 CDT
Interesting ports on ... (...): cen una relacin efectvidad/coste mucho mejor que un nico ordenador con las
PORT STATE SERVICE mismas prestaciones.
443/tcp open https
Los clusters son una buena solucin cuando lo que busca es mejorar la veloci-

Nmap run completed -- 1 IP address (1 host up) scanned in 0.254 seconds dad, fiabilidad y escalabilidad a un precio razonable. Amazon, Yahoo! y Google
basan sus negocios en miles de servidores configurados como clusters. Es ms ba-
rato y ms fcil, ampliar su negocio horizontalmente (aadiendo ms servidores)
que verticalmente (comprando mquinas ms caras). Hay muchas soluciones Linux
para clusters, tanto libres como comerciales. En este captulo describiremos algunos
clusters basados en Linux Virtual Server (http / / www linuxvirtual - server org)
el : . .

que es libre. Le mostraremos cmo combinar tres ordenadores en un clster de


carga balanceada para el servidor Apache. Tambin describiremos sus capacidades y,
finalmente, las alternativas que existen. No pretendemos cubrir clusters de alto ren-
dimiento, computacin en grid, paralelismo o computacin distribuida; en estos
campos, tanto el hardware como el software estn mucho ms especializados (por
ejemplo, para prediccin meteorolgica o renderizado de grficos).
192 Ciusters de carga balanceada Ciusters de carga balanceada 193

Con http, por ejemplo, si se necesita mantener una sesin de datos


del servicio.
con autentificacin o cookies, hay que asegurarse de que el diente siempre se
conecta al mismo servidor. Para cumplir estas necesidades, usaremos dos herra-
El balanceo de carga (LB) ofrece escalabilidad: la distribucin de las peticiones
mientas un poco sofisticadas:
en varios servidores. LB consiste en el reenvo de paquetes y en el conocimiento
del servicio cuya carga va a balancearse (en este captulo, HTTP). Se basa en un
Servidor de 1P virtual (IPVS): Un mdulo balanceador de carga de nivel de
monitor externo que recoge las estadsticas de carga de los servidores fsicos para transporte (TCP) que ahora es un componente estndar de Linux.
decidir dnde se deben enviar los paquetes. Idirectord:Una utilidad que monitoriza el estado de los servidores fsicos.
La alta disponibilidad (HA) ofrece fiabilidad: mantiene los servicios ejecutn- Las instrucciones de instalacin estn basadas en la distribucin de Linux
dose. Se basa en servidores redundantes, intercambio de mensajes del tipo "Estoy Deban 3.1 (Sarge).
vivo", y un procedimiento para que en caso de fallos se sustituya el servidor
donde se produjo el error por otro.
En este captulo, vamos a concentrarnos en LB, puesto que los administrado-
Ya que IPVS est ya en el ncleo de Linux, no necesitamos instalar software,
res tendrn que enfrentarse a ello ms a menudo. Para un sitio que pase a ser
pero s configurarlo.
sensible dentro de una organizacin, la HA tambin es necesaria. Al final de este
captulo, ofreceremos varios enlaces tiles para configurar sistemas que combi-
En Ib, aada estas lneas a /etc/modules.
nan balanceo de carga y alta disponibilidad. ip_vs_dh
ejemplo de balanceo de carga que vamos a usar en este captulo es un ejem-
El ip vs_f tp
ip_vs
plo simple que consiste en tres direcciones pblicas y una virtual. Todas ellas se
ip_vs_lblc
listan en la tabla 7.1. ip_vs_lblcr
ip_vs_lc
Tabla 7.1. Direcciones y roles de los servidores en nuestro clster. ip_vsjnq
ip_v s_rir
ip_vs_sed
Nombre Direccin IP Descripcin
ip_vs_sh
Lb 70.253.158.44 Balanceador de carga servicio con direccin ip__VB_WlC
ip_vs_wrr
pblica
web! 70.253.158.41 Primer servidor web una de las IP reales (RIP) Luego cargue los mdulos en el ncleo:

web2 70.253.158.45 Segundo senador web otra RIP # modprobe ip_vs_dh


# modprobe ip_vs_tp
(VI P) 70.253.158.42 IP virtual (VIP) compartida por lb, webl y web2,
# modprobe ip_vs
adems de sus direcciones IP reales # modprobe lp_vs_lblc
# modprobe ip_vs_lblcr
VI P es # modprobe ip_vs_lc
la direccin que el balanceador de carga expone a los dientes, desde
# modprobe ip_vs_nq
donde se distribuirn las peticiones a ios servidores Web. # modprobe ip vs_rr
# modprobe ip_vs _sed
# modprobe p_vs_sh
# modprobe pvs wlc
# modprobe ip_vs_wrr
La forma ms simple
de balanceo de carga es un round-robn de DNS, donde
Para activar el reenvo de paquetes en el ncleo de Linux de Ib, edite el archivo
mltiples registros A
se definen con el mismo nombre, el resultado es que los
/etc/sysctl conf y aada
. esta lnea:
servidores esperan su turno para responder a las peticiones. Esto no funcionara
bien si un servidor falla, adems, no tiene en cuenta las necesidades especficas net ipv4 ip _forward
. . = 1
Clusters de carga balanceada Clusters de carga balanceada

Para cargar esta opcin en el ncleo: Vamos a usar DR porque es fcil, rpido y escalable. Con este mtodo, desig-
namos una VIP que comparten el balanceador de carga y los servidores reales.
# sysctl -p Esto provoca un problema: si todas las mquinas tienen la misma Vg cmo se
net ipv4 ip_f orward = 1
asocia dicha VIP a una direccin MAC fsica? Esto se llama el problema ARP, debi-
. .

do a que los sistemas de la misma LAN usan el Address Resolution Protocol (ARP)
Idirectord para encontrarse, y ARP espera que cada sistema tenga una direccin IP nica.
Muchas soluciones necesitan parches o mdulos del ncleo que cambian jun-
Aunque podramos obtener Idirectord de manera independiente, lo obtendre- to con el ncleo de Linux. En la versin 2.6 y superiores, una solucin muy
mos como parte del paquete Ultra Monkey, que adems incluye software para popular es permitir que el balanceador de carga maneje el ARP de la VIP y, en los
HA. Debido a que Ultra Monkey no forma parte de la distribucin Deban estndar, servidores reales, configurar la VIP como alias del bucle local. Por esta razn, los
necesitar aadir dos lneas a su repositorio de archivos de Deban (/etc/apt/ dispositivos locales no responden a las peticiones ARP.
sources list) en
. la mquina Ib:
Esta es la solucin que adoptaremos. Configuraremos todos los servidores Web
deb http://www.ultramonkey. 0 rg/download/ 3 / sarge main
primero.
deb-src http://www.ultramonkey.Org/download/3 sarge main

luego, actualice el repositorio y obtenga el paquete:


En cada servidor real (web I
y web2) hay que hacer lo siguiente:
# apt-get update
# apt-get install ultramonkey 1 . Si el servidor Apache todava no est instalado, instalarlo:
# apt-get install apache2
El proceso de instalacin le har algunas preguntas:
Si todava no tiene los archivos de contenido para su sitio Web, puede
Do you want to automatlcally load IPVS rules on boot? hacerlo ahora o despus de configurar el sistema de balanceo de carga.
No 2. Instale iproute (un paquete de Linux para trabajo en red con ms
Select a daemon method.
funcionalidades que herramientas antiguas como ifconfig y route):
none
# apt-get install iproute
Nuestra configuracin tendr un servidor virtual (la direccin que ven los 3. Aada estas lneas a /etc/sysctl conf .

clientes, ejecutando Idirectord), que llamaremos director, y dos servidores reales


net . ipv4 . conf . all arp_ignore = 1
.

(ejecutando Apache). Los servidores reales pueden conectarse con el director de net . ipv4 . conf . ethO arp_ignore = 1
.

tres formas: net . ipv4 . conf . all arp_announce = 2


.

net . ipv4 . conf . ethO arp_announce = 2


.

8 LVS-NAT
4. Actualice los cambios en el ncleo:
Los servidores reales estn en una subred NAT detrs del director que es el
# sysctl -p
quien enruta las respuestas. net ipv4
. . conf . all arp pignore = 1
.

net ipv4 conf ethO arp_ignore = 1


8
LVS-DR . . . .

net ipv4
. . conf . all arp_announce -
. 2
Los servidores reales envan las respuestas directamente ai cliente. Todas net ipv4
. . conf . ethO arp_announce =
. 2

las mquinas estn en la misma subred y pueden comunicarse mediante 5 . Suponiendo que su servidor real es Deban, edite el archivo /etc/ network/
direcciones Ethernet No es necesario que se pueda hacer ping desde fuera
.
interfaces, asociando la VIP (70.253.15.42) con el alias lo:0:
de la subred. auto lo :

8
LVS-TUN iface lo: O inet static
address 70.253.15.42
Los servidores reales pueden estar en una red distinta de la del director. Se netmask 255.255.255.255
comunican mediante tcnicas de tunneling IP sobre IP (IPIP). ,
pre-up sysctl -p > /dev/null
196 Clusters de carga balanceada Clusters de carga balanceada 197

6. Active dicho alias: Se deberan haber creado archivos de inicio en / etc para ldirectord durante la
# ifup lo: instalacin. Ultra Monkcy tambin instal Heartbeat, como no lo vamos a usar,
7. Cree el archivo /var/www/ldirector html con . el contenido: lo desinstalamos:

Estoy vivo! # update-rc.d heartbeat remove


8. En web 1: update-rc.d: /etc/init d/heartbeat exists durng rc.d purge
.

(use -f to forc)
# echo "X'm webl" > /var/www/which html
.

9. Enweb2: El balanceador de carga monitoriza el estado de los servidores Web, para lo que

# echo "I'm web2" > /var/www/which. html regularmente solicita el archivo que hemos especificado en ldirectord cd request . (

"director, htmf).
10. Inicie Apache, o remdelo si ya se est ejecutando:
Puesto que este servidor responder las peticiones Web que se hagan a travs
# /etc/init.d/apache2 restart
de la direccin VIP (70.253. 158.42), debemos indicrselo al servidor. Edite /etc/
Los logs de acceso de Apache no deberan mostrar actividad, puesto que ib network/ interfaces y aada estas lneas para crear el alias eth0:0:
todava no se ha comunicado con ellos.
auto eth0:0
iface eth0:0 inet static
address 70 253 158 42 . . .

netmask 255.255.255.248
# These should have the same vales as for ethO:
En Ib, cree el archivo de configuracin del balanceador de carga, /etc/ha d/ . network . . .

ldirectord. cf broadcast . .

gateway . .

checkt imeout = 1
check interva 1=2 Ahora active esta nueva direccin P:
autoreload=no
logfile="localO # ifup eth0:0
quiescent=no
vi rtua 1=70. 253. 158. 42:80 Finalmente, inicie los ldirectord en Ib:
real=70. 253. 158. 41:80 gate
real=70. 253 .158.45:80 gate # /etc/init d/ldirectord start
.

service=http Starting ldirectord. succees . .

request= "di rector html


.

receive="I'm alive!"
scheduler=rr Probando el sistema
protocol=tcp
checktype=negot iate
Comprobemos si el balanceador de carga se est ejecutando en Ib:
Si quiescent fuera yes, un
servidor real que fallara dejara de contar para el
balanceador, pero continuara en la tabla LVS de routing; lo hemos puesto a no, # ldirectord ldirectord. cf status

por lo que los servidores cados se eliminan de la tabla. El peso de un servidor


Debera ver algo parecido a esto:
reflejasu capacidad en relacin con los otros servidores. Para un esquema simple
como el nuestro, todos ios servidores operativos tienen un peso de 1 y los cados ,
ldirectord for /etc/ha a/idirectord cf is running with pid:
. .

un peso de 0. Si checktype es negotiate, el director har una peticin http a cada 1455
uno de los servidores reales de la URL solicitada, y ver si sus contenidos tienen el
valor recibir. Si el valor fuera check, slo se hara una comprobacin TCP rpida,
Si viera algo como esto:

y las peticiones y las respuestas se ignoraran. ldirectord is stopped for /etc/ha d/ldirectord cf . .
198 Ciusters de carga balanceada Ciusters de carga balanceada 199

habra un problema. Puede parar el director y reiniciarlo con la bandera de depu- Sep 11 22:59:45 mail ldirectord [8543] : Deleted fallback server: 127.0.0.1:80
racin -d y ver los errores que se estn produciendo: { X 70.253.158.44:80)
Sep 11 22:59:46 mail ldirectord [8543] : Added real server: 70.253.158.45:80
( x 70.253.158.44:80) (Weight set to 1)
# /usr/sbin/ldirectord /etc/ha d/ldirectord cf stop . .

# /usr/sbin/idrectord -d /etc/ha. d/ldirectord. cf start


DE3UG2 : Running exec {/usr/sbin/ldirectord -d /etc/ha. d/ldirectord. cf start) De regreso a webl y web2, comprobamos los logs de acceso de Apache. El
Running exec /usr/sbin/ldirectord -d /etc/ha d/ldirectord cf start)
( . .
director solicita director.html cada checkinterval segundos:
DEBG2 Starting Linux Director vi. 77. 2. 32 with pid: 12984
:

Starting Linux Director vi. 77. 2. 32 with pid: 12984 70.253.158.44 - - ll/Sep/2006 22 49 3 7 -0500]
f : : : "GET /director.html
DEBUG2 Running system (/sbin/ipvsadm -A -t 70.253.158.42:80 -s rr
: ) HTTP/1 .1"
Running system /sbin/ipvsadm -A -t 70.253.158.42:80 -s rr
( ) 200 11 " libwww-perl/5 803 .

DEBUG2 Added virtual server: 70.253.158.42:80


:
70.253.158.44 - - [ll/Sep/2006 22 49 39 -0500] : : : "GET /director.html
Added virtual server: 70.253.158.42:80 HTTP/1 .1"
DEBUG2 Disabled server=70 253 158 45
: . . . 200 11 "libwww-perl/5 803" .

DEBUG2 Disabled server=70 253 158 41


: . . .

DEBUG2 Checking negotiate: real


: En su navegador, vaya a la URL del sitio virtual http://70.253.158.42/
server=negotiate http tcp 70 253 .158.41:80: \/director\ html I\ m\ alive\
: : : . :
: . : '
which html y. debera ver:
(virtual=tcp:70 .253 .158.42:80)
DEBUG2 check_http: url= "http //70 253 158 4 1 80/director .html
: . . . :
:
Yo soy webl
virtualhost= " 70 253 .158.41" .

LWP UserAgent new


: : : : : { )

o:
LWP UserAgent request
: : : : : { )

LWP: UserAgent send_request GET http //70.253.158.41: 80 /di rector html


: : : : .

LWP :: UserAgent :__need_proxy Not proxied: :


Yo soy web2
LWP: Protocol :: http :: request
: : ( )

LWP Protocol collect read 11 bytes


: : : : :
Si el balanceador de carga no funciona o uno de los servidores Web est cado,
LWP :: UserAgent :: request Simple response OK : : siempre obtendr la respuesta del mismo servidor Web.
45 80/director html is up
Ahora, pare Apache en webl
; .

La salida ser ms corta si checktype est definido como check.


# /etc/init.d/ apache stop
Para curiosear, podemos ver los mensajes de bajo nivel del servidor de IP virtual:
Actualice la pgina del navegador http://70.253.158. 42 /which. html.
# ipvsadm -L -n respuesta:
Siempre debera obtener la
IP Virtual Server versin 1.2.0 (size=4096)
Prot LocalAddress Port Scheduler Flags :
Yo soy web2
-> RemoteAddress Port Forward Weight ActiveConn: InActConn
TCP 70.253.158,42:80 rr
-> 70.253.158.45:80 Route
-> 70.253.158.41:80 Route
1
1
1

0
2
3
Aadiendo HA a LB

Esto muestra que nuestro primer servidor real est activo, pero el segundo no. El balanceador de carga representa un nico punto de fallo. Si falla, lo servi-

Tambin podemos comprobar


dores Web que dependen de l dejarn de ser accesibles. Para hacer el sistema ms
los logs del sistema en Ib:
seguro, puede instalar un segundo balanceador de carga en configuracin HA
# tail /var/log/syslog con el primero. Para instrucciones ms detalladas (se usa el paquete Ultra Monkey
Sep 11 22:59:45 maii Idirectord [8543] : Added virtual server: que ya hemos instalado) puede consultar http://www.howtoforge.com/
70.253.158.44:80 high_availability_loadbalanced_apache _cluster. No necesitar HA para
Sep 11 22:59:45 mail ldirectord [8543] Added fallback server: 127.0.0.1:80 :

los servidores Apache, puesto que ldirectord los sondea todos cada checkinterval
( x 70.253.158.44:80) (Weght set to 1)
Sep 11 22:59:45 mail ldirectord [8543] Added real server: 70.253.158.41:80 :
segundos y ajusta todos los pesos, que tienen un efecto muy similar al hearbeat
( x 70.253.158.44:80) (Weight set to 1) de HA.
2 Ciusters de carga balanceada Ciusters de carga balanceada

Aadiendo otros servicios LB Otras lectoras


Hemos usado servidores Web Apache como ejemplo para este captulo porque
es uno de los
servicios que puede necesitar una granja de servidores. Otros servi- Ms detalles sobre el software usado en este captulo estn disponibles en las
cios tambin podran beneficiarse de LB/HA, por ejemplo MySQL, servidores de siguientes pginas Web:
correo o servidoresLDAP Consulte http://www.howtoforge.com/ Linux Virtual Server Project (http : / /www linuxvirtualserver org). .

loadbalanced__mysql__cluster__debian para un ejemplo de MySQL. Ultra Monkey (http: //www.ultramonkey org).


.

-Ieartbeat/The High-Availabi Jity Linux Proj ect (ht t p / / 1 inux - ha orgS)


: .

Tambin tiene otra opcin, y puede echar un vistazo a la Red Hat Cluster
Suite(http / /www. redhat com/
: .

Si ofreciera un magnfico servicio, sera el servidor capaz de soportar gran-


software/rha/cluster), un producto LB/HA comercial para Linux que usa
des picos de actividad? Si no es as, su credibilidad se vera afectada
y muchos LVS. El mismo software est disponible gratuitamente (pero sin soporte) en
visitantesno volveran. Pero debido a que LB y HA necesitan un importante es-
CentOS.
fuerzo e inversin en hardware, no est de ms considerar otras posibilidades.
Hay otras formas de conseguir un mayor rendimiento del equipo actual. Por
ejemplo, puede desactivar los archivos .htaccess en su configuracin Apache
(AllowOverride None), o usar mod_expires para evitar llamadas de actualiza-
cin de los archivos como imgenes. Hay muchos libros de Apache con trucos de
optimizacin.
Una vez que se alcancen los lmites del software del servidor Web, pueden
considerarse otras alternativas. En muchos casos, servidores Web como lighttpd
(http / /www. lighttpd.net), Zeus (http: //www. zeustech.net) litespeed
:
y
(http / /litespeedtech com) son ms rpidos que Apache y consumen me-
: .

nos memoria.
Tambin puede mejorar el rendimiento por otros mtodos. Caches de cdigo,
que incluyen aceleradores PHP como e-accelerator {http //eaccelerator net): .

y APC (http / / apc coramunityconnect com), guardan PHP como bytecode y


: . .

as evitan tener que usar tiempo de cmputo en cada acceso a una pgina. Gachs
de datos, como la cach de consultas de MySQj guardan los resultados de consul-
tas idnticas. La replicacin es una forma de LB. Memcached (http://
danga.com/memcached) es una forma rpida de almacenar resultados de bs-
quedas. Squid (http / / www squidcache org), cuando se usa como proxy in-
: . .

verso, es un cach de pginas que puede almacenar todo el contenido del servidor
Web.
Cuando los servidores estn separados en varias aplicaciones (por ejemplo
MySQL ? PHP ? Apache), las mejoras son multiplicativas; por ejemplo "Getting

Rich with PHP 5 " (http / /talks .php.net/show/oscon06) indica cmo con-
:

seguir que una aplicacin PIIP que soporta 1 7 llamadas por segundo pueda pa-
sar a soportar 1.100 llamadas por segundo en una nica mquina. Si ya est
usando ests tcnicas pero no solucionan sus problemas, definitivamente intn-
telo con balanceo de carga, y si la estabilidad es crtica incorpore tambin HA.
En este captulo repasaremos algunas de las destrezas que un administrador
de sistemas necesita para gestionar un equipo situado detrs del cortafuegos o la
pasarela de una compaa, una organizacin o incluso una rpd local.
Algunos de nosotros preferimos referirnos a tecnologas de Internet en lugar
de a redes de rea local, puesto que creemos que no presenta ningn desafo. Pero
cuando necesitamos configurar o arreglar algo en nuestro entorno de trabajo, la
red de rea local adquiere mucha importancia. Por ejemplo, piense que sucedera
si el correo electrnico del directorio no funcionase.

Una red local se puede llevar la mayor parte del tiempo del administrador de
sistemas si no sabe manejarla. Por lo que, si acaba de empezar en la administracin
de sistemas, necesitar aprender cmo instalar, configurar y mantener los servicios
de una red local. Para la primera toma de contacto, eche un vistazo a la edicin ms
reciente del libro "Linux Network Administrator's Cuide Terry Dawson", (O'Reilly).
Tanto si posee conocimientos bsicos como usuario de Linux, como si nunca ha odo
hablar sobre los temas de este captulo, le aseguramos que son muy interesantes.
En este captulo,exploraremos sistemas de archivos distribuidos, como
los
configurar los servicios de DHCP y de pasarela (incluyendo el routing entre la
LAN e Internet), Jos sistemas de impresin corporativos y la gestin de usuario.
Los servicios de correo electrnico local, tambin estn bajo el paraguas de las
LAN. Pero ya cubrimos esos aspectos en captulos anteriores. Usaremos la distri-
bucin Fedora Core para este captulo. Red Hat patrocina el proyecto Fedora y
normalmente lo usa para probar la prxima distribucin empresarial estable.
Fedora no es la versin ms estable de Red Hat, pero s es razonablemente estable
y robusta. Red Hat ofrece paquetes nativos de muchas herramientas para Fedora,
dejando a Fedora en la vanguardia de las distribuciones libres de Linux, que pue-
204 Servicios de red de rea loca; Servicios de red de rea loca! 205

den usarse para uso comercial. Si no le gusta el modelo de Red Hat, puede aplicar Hoy en da, muchos sitios almacenan sus usuarios en archivos crticos en
el material de este captulo a otras distribuciones de Linux. Le sugerimos que servidores centrales, que controlan los permisos de acceso a los archivos. Habla-
profundice en este material: necesitar ponerlo en prctica en un entorno de remos sobre gestin de usuarios ms tarde en este mismo captulo.
trabajo, adems no encontrar este material en otro sitio.

La comparticin de archivos y de impresoras con SMB evolucion de la mano


Es difcil tiempo en que los PC trabajaban de manera autnoma
imaginar el de Microsoft en el protocolo Common Internet File System (CIFS). CIFS ha sido
sin los beneficios del trabajo en red o la conexin a Internet. Pero los PC no fue- publicado como un estndar, pero est poco documentado y contiene muchos
ron originalmente diseados para trabajar en red. Puede que recuerde la poca en comportamientos secretos que Microsoft sigue desarrollando. Sin embargo, un
que la gente transfera archivos entre equipos con disquetes, o usaban un con- grupo intrpido de desarrolladores ha estado haciendo un trabajo de ingeniera
mutador para poder compartir una impresora. Eran tiempos difciles. inversa con el protocolo, y ha creado uno de los proyectos de software libre ms
Despus de introduccin del PC, se tard varios aos en crear tecnologa
la populares y que puede usarse tanto desde sistemas Microsoft como otros siste-
bsica para el como los sistemas de archivos distribuidos. Estos
trabajo en red mas: Samba. Samba est llegando a ser muy popular; puesto que se usa
sistemas de archivos distribuidos transformaron el paisaje de los negocios, debi- significativamente en Windows, en Linux e incluso en Mac OS X.
do a que permitan compartir lo que cada uno tena en su escritorio. Ya no haca Como administrador de sistemas Linux, necesitar comprender Samba. Si de-
falta rellenar manualmente un formulario para que el operador de un sistema sea profundizar en Samba que tratan
(debera hacerlo), existen excelentes libros
mainframe le dejara hacer su trabajo. El trabajo en red se hizo ms popular cuando la materia, incluyendo guas de documentacin en lnea http://samba.org.

un investigador de IBM, Barry Feigenbaum, convirti un sistema de archivos Para usar una cita comn, "Una descripcin ms a fondo de este tema sobrepasa
DOS en uno distribuido. Sus esfuerzos ayudaron a crear el protocolo de aplica- el mbito de este libro". Actualmente, no tenemos una razn para duplicar el

cin Server Message Block (SMB). La era de los administradores de sistemas y de excelente material que ya est disponible. Sin embargo, queremos describir Sam-
los ingenieros de red haba comenzado. ba con suficiente detalle para hacer funcional su entorno. Afortunadamente, la
Los sistemas de archivos distribuidos permiten a los usuarios abrir, leer y es- mayora de las distribuciones ofrecen interfaces grficas muy sencillas que per-
cribir archivos que estaban almacenados en otros ordenadores distintos al suyo. miten administrar Samba, describiremos algunas de ellas aqu.
En algunos entornos, un nico ordenador de altas prestaciones almacena los ar- Algunas funciones principales de las redes CIFS (sobre todo la forma en que
chivos, y los usuarios acceden a ellos a travs de una IAN; el ordenador central los sistemas se buscan unos a otros) tienen lugar en controladores de dominio:
puede incluso almacenar los directorios personales de los usuarios, por lo que servidores que ofrecen archivos, impresoras y varas operaciones de control.
todo el trabajo se almacena en l. En otros entornos, los usuarios almacenan ar- Samba puede integrar mquinas Linux en redes de Microsoft como servidores
chivos en sus PC, pero permiten a los otros usuarios acceder a estos archivos. Los de archivo e impresoras, controladores de dominio o miembros de un grupo de
dos entornos pueden combinarse. A esta prctica se la suele conocer como trabajo.
comparticin de archivos, y a los directorios (o carpetas) a los que los usuarios La ltima versin de Samba puede operar con el Active Directory de Microsoft .

pueden acceder desde mquinas remotas se les conoce como directorios comparti- Samba combina LDAP con funciones como un servidor de autentifcacin robus-
dos. Los PC se convirtieron en los protagonistas de los negocios a finales de la ta, sustituyendo tanto a los controladores de dominio de Microsoft NT como a
dcada de 1980, y las redes de rea local se dieron a conocer a medida que los PC los servidores Active Directory.
evolucionaban y la gente se dio cuenta de que necesitaba compartir sus recursos. Samba tambin puede desempear un papel de compartidor de archivos en
Intente imaginar qu supuso la introduccin de la LAN para un grupo de entornos ms simples, donde los miembros de pequeas oficinas o departamen-
usuarios que nunca antes haba trabajado en red. De repente, los compaeros de tos de una gran organizacin usan redes punto a punto. Los usuarios de escrito-
trabajo podan compartir documentos, imprimir en impresoras que no estaban rio pueden compartir sus impresoras y archivos con otros sin que stos tengan
en su despacho y responder a correos enviados por gente de su oficina, de su que autentificarse. Si funciones sensibles como contabilidad financiera o almace-
campus o de pas. Todo esto supuso una verdadera revolucin. namiento de personal se gestionan en una mquina, pueden implantarse polti-
Servicios de red de rea loca!
Servicios de red de rea local

cas de seguridad que sirvan de escudo para otros usuarios sin comprometer la
En la parte derecha de la pantalla en la figura 8.1 destacan los directorios
disponibilidad de los recursos de la red punto a punto. compartidos del nodo llamado Dallas, que es un sistema Windows XE Tambin
Ahora, echaremos un vistazo a las redes Linux/Windows puede ver el archivo de un procesador de textos llamado xp_network_setup sxw, .

3/ veremos cmo
puede configurar Samba para sus usuarios de escritorio. que se ha guardado en el formato nativo del OpenOffice Writer (Versin 1).
Fue difcil configurar la red? Aparte del cableado estndar, las conexiones
Ethernet y la instalacin del cortafuegos y del modem, el sistema se instala por s
solo.Hemos seguido los procedimientos estndar para Windows 98. Los siste-
mas usan DHCP para obtener sus direcciones 1P, servidores DNS y la direccin
La figura 8.1 representa una red y puede verse desde un sistema Linux (la hasta la pasarela. El router ofrece servicios DHCP y una direccin privada de
distribucin Xandros, que es un entorno Linux de escritorio adecuado para entor- Internet usando una red de clase C (desde 192.168.0.0 hasta 192.168.0.255).
nos corporativos). DHCP en la siguiente seccin.)
(Describiremos
La vista de rbol de la parte izquierda de la pantalla muestra cuatro equipos Windows han establecido la configuracin de la red
Una vez que los sistemas
llamados Athlon, Atlanta, Dallas y Dell. Dallas ofrece una impresora, junto con haga clic con el botn derecho del ratn sobre el
y pueden conectarse a Internet,
una impresora. Uno de
varios directorios, a los otros sistemas; Dell tambin aloja
icono Mis sitios de red, seleccione Propiedades y cambie las direcciones dinmi-
los otrosordenadores ejecuta Windows XV, y los otros dos ejecutan Windows 98.
cas por estticas. Esto permite a los ordenadores actuar como servidores de im-
Linux los agrupa a todos por igual. El sistema Linux hace lo mismo que un siste- presin y ofrecer acceso compartido a Internet.
ma Windows con la opcin Mi entorno de red o Mis sitios de red. Configurar sistemas Windows XP es ligeramente ms complicado, puesto que
XP y Windows 98 son incompatibles entre s. Para asegurarse de que se entien-
den, active el Simple FileSharing accediendo al Panel de Control de Windows XP y
M'.htvo CtfOM P.iiv'tHw MWKrtTiW/tt.*# Ayi.rT'i

(ict om/joor :to


ejecutando Asistente de Configuracin de Red. Este asistente nos pregunta si
el

queremos activar la comparticin con otros equipos, refirindose a ordenadores


Internet
TorertH de red

con Windows 98. Al responder que s se permite crear un disquete que podra-
mos usar para instalar los protocolos de Windows XP en ordenadores con Windows
MAM*
98. Este proceso actualiza los sistemas ms viejos a protocolos ms nuevos, ofre-
Luw C-tormol nn
< 192 168 i. 180)
. .

lUBLICO enhoqu Oocurriontos c en MINE


ciendo la posibilidad de que XP y Windows 98 puedan comunicarse. (El progra-
(Boqutque) (VUr-5000682e74)
ma ofrecido por Microsoft se llama netsetup.exe.)
Otro* flNios Luego Xandros y se activa el Windows Networking,
se instala la distribucin
tal y como muestra la figura 8.2.
se

Fjese en que hemos sido capaces de configurar Windows Networking a travs


del cuadro de dilogo. El escritorio Linux nos ha permitido activar la comparticin
de archivos y de impresoras, dar un nombre al equipo, definir el grupo de trabajo
y activar el nivel de seguridad compartida, que permite a los nodos usar la
funcionalidad CIFS.
Ubuntu tambin da la opcin de configurar el NetWork File System (NFS),
le

un sistema de archivo Unix-a-Unix a muy popular que es incompatible con CIFS.


El cuadro de dilogo de la figura 8.4 le permite escoger entre ambos sistemas;
puede usar Samba para operar con Windows y Mac OS X, mientras usa NFS para
operar con otros sistemas Unix/Lmux. Los servicios de comparticin no se insta-
lan por defecto con Ubuntu, pero si selecciona Carpetas Compartidas (en el men
Figura 8.1. Los archivos y los directorios compartidos por un sistema Linux, de administracin de Ubuntu 6.10), Ubuntu descargar los archivos necesarios;
tal y como se ve desde un PC con Windows. ahora ya est listo para ser miembro del dominio o del grupo de trabajo.
Servidos de red de rea local Servicios de red de rea local

Xi
Necesita nstaJar Sarfi&a o NFS p
Puede Instalar estas wramfeBte
y Samfes para compartir crpete
:v NFS para compartir carpetas c

X giost. 4 &9P P:
.

Figura 8.4. Pantalla de configuracin de los servicios de comparticin de archivos


en Ubuntu.

Los servicios de Dynamic Host Configumtion Protocol (DHCP) pueden ayudarle


a solucionar un gran nmero de problemas asociados con entornos de rea local,
incluyendo problemas de asignacin de direcciones 1P y otros aspectos de admi-
difcil imaginar una red sin DHCP.
nistracin. Es
Veamos algunos aspectos que debe conocer y prestemos atencin a cmo pue-
den ayudarnos:
Los PC y las estaciones de trabajo necesitan una direccin 1P nica, infor-
macin DNS y conocer la ubicacin de las pasarelas.

La asignacin manual de direcciones IP provoca excesivo trabajo.


La duplicacin accidental de una direccin fP crea conflictos en la red.

La resolucin de problemas de red (como la duplicacin de direcciones) y


los cambios de ubicacin provocan trabajo innecesario.
0
Los cambios de personal significan que alguien tendr que comprobar cada
ordenador y configurar una nueva base de datos de asignaciones de IP.
/'
Carpeta compartida
;.y':;pj^wwM< coi?l|gfUnKn 'M El movimiento frecuente de los usuarios mviles necesita que se reconfigure
FtaSfl jjjjj|lMK;e
Opciones efe
la red en los equipos porttiles.
;

Oft!tpi:iQ!> v:}
Osa VV-.
:
:
-
SMB i:.*! ...

oimmi DHCP soluciona estos problemas asignando direcciones IP a medida que cada
:mn sistema de la LAN arranca. El servidor DHCP asegura que todas las direcciones IP
vv'JS .
Coroomaiio son nicas. El servicio necesita una pequea intervencin humana relativa a la
asignacin y al mantenimiento de las direcciones IR Los administradores pueden
:
'

'
:
feciur.

: ;'{:''|
Osai':ose:

escribir archivos de configuracin y dejar el resto del trabajo al servidor DHCP


VRfriwffi fiavetjfidof

'

(dhcpd). Este servidor gestiona el conjunto de direcciones IP, liberando al admi-


o : Jo i
'
Y/; S ^^aaegi/f .* #gS

nistrador de red de esta tarea.


.3. Configurando los recursos compartidos de Ubuntu en un entorno
Windows.

Profundizaremos un poco ms en aspectos de Samba ms adelante en este Para comenzar con DHCIJ primero necesita instalar el servidor DHCP. Puesto
mismo captulo. que este captulo se basa en Fedora, puede instalar el paquete RPM con Yum o
Servicios de red de rea ocai Servicios de red de rea loca!

con el gestor de paquetes /usr/bin/gnome-app-install; la versin actual


La primera lnea define el rango del conjunto de direcciones IP disponibles
delpaquete es dhcp-3.0.3-28.i386. (Los usuarios Deban pueden instalar el pa-
para los usuarios de la subred de la LAN. En este caso, hemos usado la red priva-
quete dhcp3-server y editar el archivo de configuracin /etc/dhcp 3 /
da de Clase C 192.168.1.0 que ofrece 254 nodos (desde el 192.168.1.1 hasta el
dhcpd conf ). El software fue creado por Internet Systems Consortium.
.
192.168.1 .254). Esta mscara de red debe coincidir con la mscara de red usada
Una vez lo haya instalado, configure DHCP en / etc /dhcpd. conf Como pri-. para definir su LAN.
mer paso, copie el archivo /usr/share/doc/dhcp/dhcpd. conf sample a / .
Hemos especificado la direccin de la pasarela en la segunda lnea (option router)
etc/ dhcpd conf. Luego, edite el archivo para que se ajuste a su red. El siguien- domain-name-servers). La direc-
y el servidor de nombres en la tercera lnea (option
.

te ejemplo es tpico. La sintaxis usa almohadillas (#) para los comentarios: cin IP es la misma en las dos lneas, puesto que es una prctica comn hacerlo as.

ddns--update-style interim; Un servidor simple con dos tarjetas de red a menudo acta como pasarela de
ignore client-updates; una red de rea local. Una tarjeta, representada por un nombre de dispositivo
como ethO, tiene una direccin en Internet, mientras que la otra tarjeta (supon-
subnet 192.168.1.0 netmask 255.255.255.0 { gamos que es ethl) tiene una direccin en una red privada. Cuando el reenvo de
# default gateway paquetes y el cortafuegos iptables estn activados, cualquier servidor Linux pue-
option routers 192.168.1.1; de actuar como pasarela/cortafuegos. En este caso, tambin se puede activar BIND
option subnet-mask 255.255.255.0,- en modo cach para que funcion como el servidor DNS de la red.
Las ltimas dos lneas especifican la cantidad de tiempo que un cliente puede
# -- option nis-domain "domain.org";
# -- option domain-name "domain.org"; mantener la direccin, se mide en segundos.
option domain-name-servers 192.168.1.1; En nuestro archivo de configuracin DHCP, tambin hemos aadido una clu-
--
sula para especificar la direccin esttica de un servidor DNS corporativo.
# option time-offset -18000; # Eastern Standard Time
# option ntp-servers 192.168.1.1; address
# we want the nameserver to appear at a fixed
# option netbios -ame -servers 192.168.1.1; host ns {
# --- Selects point-to-point node (default is hybrid) Don't change Chis .
next- server serverl centralsof t .org;
.

# -- unless you understand Netbios very well


hardware ethernet 00: 16 :3E: 63 :C7 76; :

# option netbios-node-type 2;
f ixed-address 70.253.158.42;}
# -- range dynamic-bootp 192.168.0.128 192.168.0.254;
default- lease-time 21600;
En la prxima seccin describiremos cmo usar dhcpd para asignar direccio-
max-lease-time 43200;
nes P estticas basadas en la direccin MAC de la tarjeta de red del cliente. Pero
# we want the nameserver to appear at a fixed address antes de hacer eso, veamos una versin sencilla de /etc/dhcpd. conf
host ns {

next- server serverl centralsof t org;


. .
ddns-update-style interim;
hardware ethernet 00 16 3E 63 C7 76: : : : ;

f ixed-address 70.253.158.42; default-lease-time 600;


}
max- lease-time 7200;
}
subnet 192.168.1.0 netmask 255.255.255.0 {

option routers 192.168.1.1;


Hemos configurado unos cuantos elementos de nuestro archivo de configu- option subnet -mask 255.255.255.0;
racin despus de haberlo copiado al directorio /etc: option domain-name-servers server.centralsoft.org,
server2 centralsof t org
. . ,-

subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.2 192.168.1.254;


option routers 192.168.1.1; )

option domain-name-servers 192.168.1.1;


option subnet-mask 255.255.255.0;
default-lease-time 21600; Nota: Para servidores DHCP sencillos, el mantenimiento ser ms sencillo
max-lease-time 43200; siomite los comentarios y hace que el archivo de configuracin sea pequeo.
Servicios de red de rea local Servidos de red de rea local

Iniciando el servicio DHCP permite especificar direcciones IP estticas para sistemas particulares en
dhcp.conf. Vamos a hacerlo. Primero, configure la subred, la direccin de
Algunos servicios DHCP necesitan un archivo dhcpd.leases. Use el comando broadeast y los routers:
touch para crear un archivo vaco en el mismo directorio que el archivo
dhcpd.conf subnet 192.168.1.0 netmask 255 255 2S5 . . .

option broadcast-address 192.168.1.255;


# touch /var/lib/dhcp/dhcpd leases .
optiorx routers 192.168.1.1;

Antes de iniciar el servidor DHCP,


compruebe que la configuracin es correc- Luego, aada una seccin host por cada mquina de la red. Para hacer esto,
ta. Tambin sera recomendable configurar que el servidor se inicie al arrancar. necesitar saber la direccin hardware (a menudo llamada direccin MAC.) de
Para iniciar el servidor, introduzca: cada tarjeta de red, que podr averiguar usando el comando ifconfig en cada
equipo. Aqu mostramos un ejemplo de una seccin host:
[root@host2 -]# service dhcpd start
Starting dhcpd: ethernet MAC address as follows (Host's ame is " laser-printer" :
OK ] [
# >

[root@host 2 ~3#
host laser-printer {
Tambin puede comprobar si el proceso DHCP se est ejecutando con el si-
hardware ethernet 08 00 2b 4c 59 23
: : : : :

f ixed-address 192.168.1.10;
guiente comando (si el servido se est ejecutando, se mostrar una lnea con las
}
estadsticas del proceso):
hostl.centralsoft.com {
# ps aux grep dhcpd
|

hardware ethernet 01 0 cO 2 d 8c 33
: : : :

root 9028 0.0 0.0 2552 636 Ss 09:40 0:00 /usr/sbin/dhcpd f ixed-address 192.168.1.5;

Use d comando chkconfg para conseguir que DHCP se inicie a! arrancar:


}

Cree una clusula de configuracin como esta para cada servidor que necesite
# chkconf ig dhcpd on
# chkconf ig --list una direccin IP esttica y adala al archivo de configuracin.
.... f rom the list
dhcpd 0 off :lsoff 2:on 3:on 4 : on 5 : on 6:off

Al igual que sucede con los otros servicios de Linux, tendr que reiniciar el
A finales de995, Stcve Deering y Robert Hinden se dieron cuenta de la nece-
1

demonio DHCP siempre que haga cambios en los archivos de configuracin. Pue-
sidad de un nuevo protocolo de direccionamiento para Internet. Su primera espe-
de establecer otras opciones en el archivo dhcpd conf de manera global o para
cificacin de IPv apareci en 1995, en el IETF Request Ror Comments (RFC) 1883;
.

el cliente de un equipo o para una subred. Esto quiere decir que puede
establecer la segunda apareci en 1998, en el RFC 2460. Deering y Hinden argumentaban
una configuracin por defecto para su red, luego sobrescribirla para un cierto
y lo que mucha gente ya saba: que el espacio de direcciones de !Pv4 de 32 bits iba
grupo de mquinas e incluso para mquinas individuales. Aqu hay un ejemplo
a limitar el crecimiento explosivo de Internet.
de una seccin de configuracin global en la parte de arriba del archivo
Algunos administradores de sistemas se han dado cuenta de que Pv y sus
dhcpd. conf:
mtodos para asignar direcciones P han empezado a ganar popularidad, Aun-
option doraain ame "host2.centralsoft.org"; que mucha gente duda de IPv, argumentando que es innecesario o que en nun-
ca se va a imponer en la prctica real, hay muchas aplicaciones y muchos entornos
que estn girando en esta direccin.

Las estaciones de trabajo suelen funcionar bien con direcciones dinmicas (es Nota: Una descripcin exhaustiva est, de nuevo, fuera del alcance de este
decir, direcciones que pueden cambiar peridicamente o despus de reiniciar), libro; para ms informacin sobre el protocolo IPv y su demonio, as como

pero los servidores normalmente necesitan direcciones estticas, por lo que sus para saber cmo obtener direcciones Pv pblicas, tendr que buscar en
otros sitios.
direcciones no cambian mientras estn atendiendo a un cliente. Por ello, DHCP
Servicios de red de rea local Servicios de red de rea local

Las direcciones Pv a menudo incluyen la direccin hardware de la tarjeta de como iptables. Tambin hay disponibles otros servicios de pasarela, como el en-
red. Esta propiedad permite a los usuarios de IPv obtener la direccin IP esttica mascaramiento o el Network Address Translation (NAT).
sin necesitar ninguna configuracin en la parte del servidor que soporte estas
En organizaciones pequeas y en redes locales, una pasarela puede implan-
tarse en un nico servidor incluyendo seguridad bsica, un cortafuegos, DHCP,
direcciones. La asignacin automtica de direcciones !Pv6 puede hacerse con la
ayuda del demonio router-advertising radvd. Los usuarios de Fedora pueden insta- DNS cach y servicios de correo. En organizaciones ms grandes, tales servicios
lar el paquete radvd-0.9.1 desde los repositorios Yum. Los usuarios Deban pueden
estn normalmente repartidos por varios servidores, con una zona desmilitari-
instalar el paquete radvd y leer el archivo /usr/share/doc/radvd/
zada (DMZ) actuando como pasarela.
README. Deban.
radvd escucha las peticiones que se hacen al router y enva mensajes tal y
como se describe en el RFC 2461, "Neighbor Discovery for IP Versin 6 (IPv)".
En seguridad informtica, se conoce con el trmino zona desmilitarizada a
Los equipos pueden configurar automticamente sus direcciones
y escoger sus una red perimetral, que es una subred o una red situada entre la red interna e
routers por defecto basndose en estos mensajes.
Internet. Por ejemplo, su red privada debera usar una red privada del tipo
radvd soporta un protocolo sencillo. Su instalacin tambin es sencilla. Un 192.168.1.0, la DMZ 10.0.0.0 y el bloque pblico de Internet 70.253.158.0.
ejemplo de configuracin para el archivo /etc/radvd. conf sera este:
Las DMZ se usan para contener servidores que necesitan ser accesibles desde
interface ethO fuera, tales como servidores de correo, servidores Web o servidores de DNS. Las
{
conexiones desde Internet a la DMZ suelen controlarse usando la funcin Port
AdvSendAdvert on;
prefix 0 70 IfOQ 96
: : : : /64
Address Transa tion (PAT).
:

{ Una DMZ se suele situar en el medio de dos pasarelas o cortafuegos y conecta


};
a ambos, con una tarjeta de red conectada a la red interna y otra conectada a
b Internet. Una DMZ puede evitar fallos de configuracin accidentales que po-
Si quiere usar radvd, necesitar cambiar el prefijo por uno de su red y confi- dran permitir el acceso desde Internet a la red interna. A esto se le llama
gurar el servicio. Tambin tendr que configurar el DNS en las estaciones de cortafuegos de subred apantallada.
trabajo clientes de forma separada. Para nuestros propsitos, ser suficiente con limitar la configuracin de la
Puede encontrar variada informacin sobre el proyecto radvd en la pgina pasarela para el reenvo de paquetes; no gastaremos tiempo en la DMZ, que ne-
http / /www. litech.org/radvd.
: cesita mucho equipamiento y esfuerzo. Para levantar una pasarela necesitar:

Un ordenador dedicado que acte como pasarela.

Una conexin a Internet y dos tarjetas de red.


8
Un pequeo conmutador para que las mquinas clientes se conecten a la
Linux ofrece facilidades a los usuarios para que naveguen por Internet sin
pasarela.
exponer sus direcciones IP individuales al pblico. La configuracin tpica oculta
iptables instalado.
a una organizacin del pblico usando Linux como router. En la parte privada
del router, las actividades locales no pueden ser detectadas por nadie de la parte Supondremos que ethO es su conexin de Internet y ethl es su pasarela interna
pblica. en esta configuracin. Edite el archivo de configuracin para ethO, que est en /
La gente a veces se refiere a una pasarela como a un bastin host. Lo correcto etc/sysconf ig/networking/devices/if cfg-ethO para incluir las siguien-

es pensar que es una entidad de red que ofrece una nica entrada tes lneas:
y una nica
salida hacia Internet. El bastin host ayuda a evitar que se comprometa la segu-
0NB00T=yes
ridad de una red ofreciendo una barrera entre las reas pblica
y privada. Nos USERCTL=no
referiremos a los servidos que ofrece como servicios de pasarela. IPV6INIT-HO
PEERDNS=yes
Los administradores de sistemas Linux implantan servidos de pasarela usan-
GATEWAY=7 0 .253.158.46
do una combinacin de reenvo de paquetes y reglas de cortafuegos conocidas TYPE=Ethernet
Servicios de red de rea local Servicios de red de rea loca

DEVICE=ethO
HWADDR=00 04 61 43 75 ee ddn s - upda t e - s t y 1 e interim;
: : : :

BOOTPROTO=none
def ault- lease-time 600;
NETMASK=25S .255.255.248
max-lease- time 7200;
IPADDR=70 .253 158 .43 .

subnet 192.168.1.0 netmask 255.255.255.0 {

Asimismo, option routers 192.168.1.1;


la configuracin para ethl debera ser: option subnet-mask 255.255.255.0;
ONBOOT^yes option doraain-name-servers serverl centi'alsof t org
. .

server2 centralsof t org


. .

USERCTL=no

IPV6INIT.no range 192.168.1.2 192.168.100.254;


PEERDNS=yes }

TYPE=Ethernet
DEVICE=ethl
HWADDR=00 13 46 e6 e5 83
: : : : :

BOOTPROTO=none
NETMASK=255 255 255 . . . Esta seccin cubre el uso de productos que son combinacin de pasarela y
I PADDR= 192.168.1.1
cortafuego y que ofrecen conjuntos de mltiples funcionalidades. Existen varios
La informacin de estos parmetros de configuracin puede encontrarse en el paquetes gratuitos como Firestarter, IPCop, Netfilter y Shorewall. Ver como en
archivo sysconfig.txt, que encontrar en /usr/share/doc/initscripts- Linux tambin se menciona Smoothwall y ClarkConnect, pero son
la literatura

7.93.7. Con las tarjetas de red configuradas, necesitar asegurarse de que ha productos comerciales que instalan una distribucin Linux entera, no aplicacio-
instalado iptables. Debera ver el siguiente resultado: nes independientes.
Para su uso correcto en este captulo, hemos elegido Firestarter. No obstante,
[roothost2 devces]# rpm -q iptables
puede que quiera echarle un vistazo a Shorewall, una utilidad de configuracin
iptables- 1 3 5-1 . . .

[root@host 2 devces]# para Netfilter (una herramienta de lnea de comandos). Puede descargar
Firestarter desde los repositorios de Fedora. Nuestra instalacin necesita el si-
Si no tiene iptables instalado, instlelo ahora y cargue los mdulos. guiente paquete:

[root@host2 ~J # rpm -q firestarter


Nota: Fedora 5 instalar iptables usando la aplicacin
Instalar/Desinstalar firestarter-1 0. 3-11. fc5
.

Software, ubicado en el directorio por encima del men Aplicaciones [root@host2 ~]#
en el
panel GNOME. Tambin carga mdulos del kernel como parte del
proceso
de instalacin. El asistente para Firestarter (figura 8.5) se lanza cuando un administrador
inicia el programa por primera vez.Puede relanzar el asistente desde el men del
Luego ejecute: cortafuegos en la interfaz principal, as como cambiar las opciones desde la op-
cin Preferencias.
# iptables -t nat -A POSTROTING ~o ethO -j MASQUERADE
# Service iptables save Despus de la pantalla de bienvenida inicial, habr una serie de pantallas de

# echo 1 > /proc/sys/net/ipv4/ip_forward configuracin, comenzando por la pantalla de configuracin del dispositivo de
red (figura 8.6), que puede configurar tarjetas de red duales.
Ahora edite / etc/ sysctl conf, cambiando net ipv4 ip_ f orward =
0 La funcin principal de Firestarter es la de compartir conexiones. Sin embar-
. . .

por l para mantener esto activo tras reimciar. Puede hacer que el sistema
relea / go, desde que usa NAT, funciona corno una pasarela, por lo que los PC de una
etc/ sysctl conf tecleando:
.

LAN es como si fueran una nica mquina con una nica direccin IP para
# sysctl -p Internet. Esto es evidente, por ejemplo, en la pantalla de preferencias mostrada
en la figura 8.7. Fjese en que la descripcin del primer dispositivo se refiere a un
Finalmente, si tiene una pequea organizacin, puede aadir DHCP segunda descripcin se refiere a una
al servi- "Dispositivo de red conectado a Internet" y la
dor usando una versin sencilla de dhcpd. conf
"Red local conectada a un dispositivo".
Servicios de red de rea focal Servicios de red de rea local

default-lease- time 21600;


max-lease-time 43200;

is wt.yn

Interface Network Setttngs


Evens internet connected netsyorr (Invite :

Policy '
Detectad devisis);:! Ethernet devisa (ethoii i !v.

Firewail

Detectad devsete };
Ethernet devics (ethFJij
,
ICMP Ftering j

ToS Filtering [j Snahfe Internet cdhnecton sharng

Advanced Options 3 Einabl DHCP for the local networfeV ;


r.wws
v DHCP server defails
O Kaep existrng DHCP confijurahon
Figura 8.5. Asistente para el cortafuegos Fircstarter. f Oeste rew DHCP conhgorat en.
lovwft&t P acoros to assig-- |
J.r.8 .lC'J

'g~.es; i aderes* :c asvgr- 7:>t


NetWork device setup Jarre server- < 3/-am,c>

Xvt' te & : : :*>"

Picase select your Interne! connected network rievica from the drop-down
llst of available duvcies,
Figura 8.7. Pantalla de preferencias para Firestarter.
Detecten deyiee(s)- Ethernet devise (etho) I

Tip )f you use mdem the device ame is likoly pppO. If you heve a tobl mdem or o
DSl onnectiori. choose etht! Choose ppp) rF you know your cable or DSl. operator uses
the PPPoE' pinteen!. El archivo resolv conf . de la pasarela contiene la configuracin DHCP de las
Start the nrewall on dial out mquinas client es, por lo que Firestarter lee el archivo y coloca las direcciones del
IP address is assmned va DHCP servidor DNS en dhcpd conf. .

La interfaz principal de Firestarter ofrece una vista del estado de la pasarela y


r/nfwWrr.ir
las conexiones a ios equipos DHCP Tambin ofrece un resumen de eventos y de
gack j
Porward
actividad, tal y como se muestra en la figura 8.8.
Figura 8.6. Pantalla de configuracin del dispositivo de red. En la figura 8.9, puede ver una vista de la segunda pestaa de la interfaz
principal. En esta vista, puede ver las conexiones bloqueadas.
Tambin se puede ver en la parte de abajo de la figura 8.7 que Firestarter
El panel Eventos ofrece un log de intentos de saltarse el cortafuegos. Puede ser
permite al administrador usar una configuracin DIICP existente para crear una
til para saber que hay intrusos que intentan entrar en sus sistemas. Si los in-
nueva. Aqu mostramos el archivo dhcp conf de Firestarter:
tentos son reiterados, aada sus direcciones fP al archivo /etc/host deny. Si
.
.

# DHCP conf iguration generated by Firestarter alguien intenta entrar mediante ssh por el puerto 22 usando un ataque de dic-
ddns-update-style interim; cionario, simplemente puede cerrar el puerto con Firestarter.
ignore ciient -updates
El icono de Firestarter se vuelve rojo cuando detecta algn riesgo potencial.

subnet 192.168.1.0 netmask 255.255.255.0 { Fjese en el mensaje de la figura 8.10: "Detectado intento de conexin..." Merece
option routers 192.168.1.1; la pena investigarlo.
option subnet-mask 255.255.255.0;
option domain-name- server s 70.253.158.42, 70.253.158.45, 151.164.1.8;
La tercera pestaa de la interfaz principal permite definir las polticas para los
option ip-forwarding off; servicios que se deben permitir y los que no. Por ejemplo, permitimos conexiones
range dynamic-bootp 192.168.1.10 192.168.1.254; SSH, por lo que establecemos la poltica de permitir SSH en el puerto 22.
Servicios de red de rea local 221

Figura 8.10. Icono mostrando un intento de intrusin.

Firestarter usa un asistente para configurar las polticas de pasarela. Puede


hacerse una idea decmo funciona viendo la figura 8.11.
La figura 8.11 muestra una ventana llamada "Aadir una nueva regla de
entrada". Esta regla aparece despus de que seleccione Aadir Regla en la pestaa
Poltica. En esta ventana, puede ver una seleccin de opciones que pueda usar
para permitir servicios dentro de la red. Tambin existe una pantalla similar para
ofrecer servicios externos a los usuarios.
Ver que Firestarter es una aplicacin muy fcil de configurar. La comunidad
que soporta el proyecto ha hecho un gran trabajo; ha documentado los procedi-
mientos suficientemente y ha creado una gua del usuario que puede encontrar
en http / / f s-security com/docs .php.
:
.

Figura 8.8. Interfaz principal de Firestarter.

:
&row8ii a; Eyerr.s Soncy belp-

Claar aeicart

Iver;*.

Bloc.ked Connectlon*

Per Srxr:e Protocol) Service

138 Ir 3S$BM8&
jjn 3 12:07 2S 80 192.168.1.34 TCP HTTP
v.- 9 .2 . . 3t 137 192.168.1.34 UDP Samba SMB) SSH |
|

Jan 3 12- 12-.10 . > 132. 168. 1.34 UOP Samba SMB) Tenas i
j

o- ; to 137 192.168.1.34 UDP Samba SMB) i /.Windows i

;Un S 12.12

.r S .2 .2 .0 :37 :92 :68 : 34 J.IP Samas tSM3 Figura 8.11. Configuracin de polticas para Firestarter.
jvir 12: 12: 10 Samba

Nota: Llegados a este punto, puede preguntarse por qu hemos incluido


una aplicacin dependiente del entorno grfico GNOME. Recuerde que
cuando escogimos Fedora como distribucin para el trabajo en red local, lo
hicimos debido a su gran conjunto de herramientas. Aadir Firestarter encaja
dentro de nuestra filosofa, tngase en cuenta la posibilidad de usar la interfaz
de lnea de comandos.
Figura 8.9. Panel de eventos de Firestarter.

i;

1
!

222 Servicios de red de rea local Servicios de red de rea local

como comenzar. Puede empezar el proceso


suficiente informacin prctica para
haciendo un inventario del hardware y tomar decisiones respecto al software y a
los sistemas operativos.
Como administrador de sistemas Linux, debe saber que las impresoras pueden
darle ms de un quebradero de cabeza. A menudo encontrar que el hardware, el Debido a que hay muchos tipos de impresoras y combinacin de dispositivos,
software y el sistema operativo son incompatibles. Debido a la amplia variedad sistemas operativos y software, tendr que aprender la mayor parte de lo rela-
cionado con la configuracin de impresoras mientras practica. La mejor manera
de sistemas y de mtodos para configurar las impresoras, esta rea de adminis-
tracin puede conseguir ponerle de mal humor durante unos meses, o al menos
de aprender sobre impresin en red es intentar desarrollar una estrategia sobre
hasta que se haga con la situacin. una infraestructura propia. Eso reduce la cantidad de informacin que necesita
procesar.
Vamos empezar por el hardware. La mayora de los administradores descu-
a
brirn cuatro tipos de hardware para impresoras en red. En las redes existentes,
puede encontrar algunos de ellos ya configurados:
8
Impresoras asignadas a equipos PC.
Linux y Windows empezaron a trabajar con modelos de impresin completa-
8
PC dedicados como servidores de impresin.
mente diferentes. Afortunadamente, se han hecho progresos de cara a que pue-
8
Impresoras de red con tarjetas Ethernet. dan cooperar. Pero hasta que no configure las impresoras de su red, no se dar
* Dispositivos servidores de impresin conectando directamente impresoras cuenta de que no son totalmente compatibles.
a la LAN. Originalmente, Linux sola usar el estndar Unix para impresin conocido
En oficinas de tamao medio, probablemente ver varias de estas soluciones como el Line Printer Daemon (LPD); ms tarde, se aadi un demonio actualiza-
muy a menudo. La flexibilidad ofrecida por los sistemas de escritorio modernos a do llamado LPRng. Las distribuciones Linux tambin solan usar herramientas
menudo causa problemas. LPD para imprimir e interoperar con variantes de Unix. Los distribuidores Linux
Supongamos que uno de sus usuarios, Sally Jean, compra una impresora de continan incluyendo LPD y sus herramientas, pero tambin han aadido so-
inyeccin de tinta, solicita la compra como un gasto menor y la consigue. Luego, porte para un nuevo sistema conocido como Common Unix Printing System (CUPS).
la conecta directamente a su PC. Billy Bob, que se sienta en la mesa de al lado, le Al contrario que LPD, CUPS es compatible con Windows y con Mac OS. CUPS y
pregunta que si puede usar su impresora, por lo que ella hace clic con el botn LPD usan diferentes protocolos de impresin. As como LDP no puede consultar
derecho del ratn sobre el icono de la impresora y selecciona Compartir. Billy Bob aspectos bsicos de un trabajo de impresin, CUPS s puede. CUPS tambin tra-
se intenta conectar a la impresora de Sally, pero no lo consigue. Por qu? l no baja directamente en redes heterogneas y puede adaptarse a Samba si fuera ne-
tiene el driver instalado. cesario. No todas las distribuciones Linux activan la interfaz, pero Red Hat incluye
Fedora por defecto.
As es que, estos dos usuarios llaman ai administrador de sistemas (es decir, a
usted) para que les solucione el problema. Usted instala el driver en el PC de Billy Como administrador de sistemas, tendr que familiarizarse con las herramien-
Bob, y de repente, como por arte de magia, funciona. Ms tarde, Sally Jean le tas administrativas de CUPS. En Fedora, simplemente teclee http : //localhost 631
:

llama y se queja de que su PC necesita ms memoria y un procesador ms rpi- en un navegador y podr ver la interfaz de gestin presentada en la figura 8.12.
do. Por qu? Hay diez personas usando su impresora porque la ha compartido, La interfaz es auto-explicativa, por lo que le dejaremos la exploracin a usted.
Si no tiene familiaridad con CUPS, eche un vistazo a la interfaz de gestin o vaya
y eso hace que todo vaya ms lento.
Cuando usted comprueba al sitio Web http //www cups org/book/ ndex .php y lea el libro.
la puede ver que hay una impresora l-
situacin, :
.

ser que soporta grandes cargas de trabajo en la esquina y que nadie la utiliza.
Por qu nadie la utiliza? Slo hay que investigar un poco para darse cuenta de
que nadie la ha agregado al controlador de dominio.
Lo que esta hipottica ancdota muestra es que usted, como administrador de Ahora consideremos algunos dilemas a hora de imprimir con los que ten-
la
sistemas, necesita preparar una estrategia para gestionar la infraestructura de dr que enfrentarse cada da en entornos empresariales. Casi seguramente se
las impresoras. Esta seccin del captulo le ofrecer una. visin de alto nivel, as encontrar con situaciones donde necesitar compartir impresoras Linux con
Servicios de red de rea loca Servicios de red de rea ocai 225

mquinas Windows. (De hecho, probablemente necesite usar Linux como ser- [printers]
vidor de impresin en una red Windows para ahorrarse el precio de las licen- comment = All Printers
printng = cups
cias.) Tambin puede necesitar compartir impresoras Windows en mquinas
printcap ame - cups
Linux Cmo hacerlo?, echemos un vistazo a cmo los usuarios de Windows
acceden a las impresoras Linux. Bsicamente, necesitar definir un grupo de Su PC Windows ahora puede acceder a las impresoras de la red. Probablemen-
trabajo o un dominio Samba, y necesitar instalar CUPS en su PC Linux. Tam- de impresin de Windows, incluso los drivers que entra-
te necesitar los drivers
bin necesitar configurar CUPS para Samba, que puede hacerse usando el si- ron con su impresora.
guiente comando: En ei siguiente escenario, necesitar permitir a los usuarios Linux que usen las
impresoras conectadas a los servidores Windows. De nuevo, necesitar CLIPS y
# ln -s 'which smbspool' /usr/lib/cups/backend/smb
Samba para hacer esto. En los PC con Windows, comparta las impresoras como lo
hara normalmente: en Windows NT, 2000 y/o XP active la cuenta de invitado y
otorgue permisos a cualquiera que quiera acceder a la impresora compartida. Luego
instale CUPS en el servidor Samba y configrelo como se describi previamente.
Ahora Windows que quiera que estn disponibles en
instale las impresoras de
el Samba con CUPS, usando para ello la interfaz Web.
servidor
Necesitar autentificarse como root En algunos sistemas Linux, es necesario
definir al root como el administrador del sistema CUPS. Puede hacer eso con el

estas pginas web permiten monftarlnr sus impresoras y trabajos asi como restar tareas de admirstracin dal sistema. Haga tlick
comando adduser:
|
I cualquiera de las pestaas de la parte superior o en tos botones de la parte inferior para reatar la tarea correspondiente

~$ su
Paesword:
f
5/ s le pide un nombre de usuario y contrasea, Introduzca su nombre de usuario y su contrasea o el usuario y contrasea de
# adduser cupsys shadow
Adding user 'cupsys' to group 'shadow' . .

I Acerca de CUPS Done


CUPS proporciona una caps de impresin portable para sistemas operativos basados en UNIX" # /etc/init.d/cupsys restart
Est desarrollado y mantenido por Easy Software Products para favorecer una solucin de Restarting Common Unix Printing System: cupsd [ ok ]
i,n Presi'> estndar. CUPS as ei sistema de impresin standar usado en MacOS* X de
y la mayora
distribuciones Linux* #

CUPS usa el Protocolo Je Impresin de Internet CIPP") como basa para gestionar tos trabajos y colas c
impresin y anade bsqueda de impresoras en red y opciones da mprasidr basadas en archivos de dascripc Luego ya puede autentificarse como root.
de impresora PostScript ("PPD-i pa.-a soporte de impresin dK murcio real
Haga clic en Aadir impresora y luego introduzca el nombre de la impresora
Para controladores de impresoras y asistencia
desde el sistema Windows. Vamos a usar BrotherHL1440 (vase figura 8.13).
Q6QW Roi e CUPS ptfra controladoras oe esoraj y as>strvc^ Luego, introduzca la ubicacin y la descripcin. Cuando llegue a la ventana del
vwv. cups.ffl dispositivo, haga clic en la lista desplegable y seleccione Impresora en Windows
Soporte comw:i y ana versar mejorada Pe CUPS Samada ESP Print pr G estar disponibles en va Samba.
V*v ys*.<;wn
En la siguiente ventana, Dispositivo UR! para, introduzca ia URI del dispositi-
vo. Brotherl-ILl 440-2 est conectada a Philadelphia en Windows 2003, por lo
Figura 8.12. Interfaz de configuracin de CLIPS. que debe introducir el nombre de usuario "guest y el nombre del equipo:
smb //guest@philadelphia/brotherhll440-2
:

Edite / etc/ samba/ smb conf para compartir una impresora en un servidor
.

Samba. En una situacin de la vida real es necesario restringir el acceso a ciertos Llegados a este punto, tiene que seleccionar el driver de la impresora. Tambin
sistemas o usuarios para cada impresora, pero en el siguiente ejemplo el PC Linux debera imprimir una pgina de prueba. En su. cliente Linux, abra la interfaz
compartir todas sus impresoras con cualquier sistema de la red en el que se haya CUPS y podr ver la impresora. Los clientes Linux de la LAN ya pueden usar esta
configurado Samba: impresora.
Servicios de red de rea loca! Servicios de red de rea loca!

Ippasswd: Cambia la contrasea de CUPS usada por el sistema. Establece


AuhType como Digest en el archivo de configuracin cupsd. conf.

* enable y disable: Inicia o para la cola especificada. El comando usado con


mayor frecuencia es disable con la opcin -e, que para una cola y cancela
todos los trabajos de dicha cola.
Tipo de conexin de 8rotherHLI440-2 accept and reject: Hace que la cola de impresin empiece a aceptar o a

.Cfcyt
rechazar nuevos trabajos.
Conexin: fr
i

!
' i .
'
a
Iprm: Elimina un trabajo de la cola. Puede especificar la cola (-P cola) y el
3'Wi'
Hoetoct".
re
identificador del trabajo (obtenido mediante lpstat).
r-ts're; P.- r',r< "<xc' (r-.-.p;

I'ie-no: 9i rcrg Proloco! fep) lpmove: Mueve un trabajo de impresin desde una cola a otra con
LPO/LPR Host or Primer
IPT #\ y un nombre de cola (por ejemplo lpmove queucl-
identificador de trabajo
Poraitel Port #1 (CANON)
Ptireil.il Pon: *1<EPS0N) 46 queue2).
Puede introducir estos comandos usted mismo. Aqu le mostramos un ejem-
plo deuna impresora que hemos configurado usando la interface CUPS:

# Ipc status
B.rotherHL1440 :

printer is on device
queuing is enabled
printing is enabled
no entries
daemon present

Figura 8.13. Aadiendo impresoras Windows

En Linux, puede gestionar usuarios (aadir, cambiar, eliminar) de muchas


formas. Al comienzo de la seccin, vamos a asumir que cada servidor que tenga
que administrar tiene su propia base de datos de usuarios, ubicada en el archivo
Puede hacer ssh a un servidor Linux de impresin remoto y usar los coman- /etc/passwd.
dos CUPS para controlar las colas de impresin. Los comandos CLI de CUPS sue- Tambin vamos a asumir que conoce los aspectos bsicos de aadir y eliminar
len necesitar privilegios de root. cuentas de usuario con los comandos adduser y useradd para cualquier distribu-
Repasemos estos comandos: cin que use, puesto que varan segn la distribucin.

Permite varias formas de control sobre las impresoras. Con estado Las distribuciones Linux han cambiado el comportamiento por defecto de los
Ipc: lpc,
puede ver una lista de colas disponibles y el estado de cada una.
comandos adduser/useradd. Puede consultar las pginas de manual para ambos
comandos. Tendr que experimentar cmo se comporta su distribucin. En Fedora,
0
lpstat: Muestra una lista de trabajos en cola de impresin en las impresoras
los dos comandos parecen comportarse igual: ambos aaden una cuenta y crean
del sistema. Puede usar varias opciones para poder modificar la salida de
un directorio de usuario. Si teclea adduser tadelste o useradd tadelste, ambos
este comando.
comandos aadirn al usuario y crearn su directorio personal, pero no le pedi-
Ipq : Muestra el estado de la cola actual o de la cola especificada con la op- rn una contrasea temporal o le harn algunas preguntas estndar que quiz
cin -P. cabra esperar.
Servicios de red de rea loca! Servicios de red de rea local

Eli otras distribuciones, podra ver una salida como esta: La salida indica que el comando passwd ha cambiado la contrasea del usua-
rio, pero no es as; no ha preguntado por la (inexistente) contrasea original.
... # adduser tadelste
Adding user 'tadelste' . .
Como usuario, una vez que se le haya asignado una contrasea, podr cambiar-
Adding new group 'tadelste' (1001) .
la usted mismo:
Adding new user 'tadelste' (1001) wth group 'tadelste'.
Creating home directory /home/tadelste' $ passwd
Copying files from '/etc/skel' Changing password for user tadelste.
Enter new UNIX password: passwdl Changing password for tadelste
Retype new UNIX password: passwdl (current) UNIX password: passwdl
passwd: password updated successfully New UNIX password: passwdl
Changing the user information for tadelste Password unchanged
Enter the new valu, or press ENTER for the default New UNIX password: passwd2
Pul ame (] New User
:
Retype new UNIX password: passwd2
Rootn Number [] :
passwd: all authentication tokens updated successfully,
Work Phone [] 999-555-1212
:
$
Home Phone [] :

Other [] :
Fedora primero verifica que tiene una contrasea (de no ser as, no podr
Is the information correct? [y/N] y autentificarse en el servidor). Tambin verifica que la nueva contrasea que ha

introducido es distinta de la ya existente. Si introduce la misma contrasea, Fedora


En Fedora, no obstante, la salida se para en la lnea "Copiando archivos..." no la acepta y le pide una nueva.
Luego, el administrador puede introducir la primera contrasea del usuario. Pero,
Puesto que Fedora usa el protocolo Red Hat, necesitar saber que existen algu-
qu pasa si el administrador no asigna inmediatamente una contrasea a un
nos aspectos de seguridad a la hora de aadir usuarios u opciones de contraseas.
nuevo usuario? Podra el nuevo usuario acceder al servidor va ssh, por ejem-
Cuando instal Fedora, el script de instalacin le pidi que proporcionara una
plo? Vemoslo:
contrasea para la cuenta de root y que creara de manera opcional una cuenta
$ ssh tadelste@host2.centralsoft.org
de usuario adems de la de root. Adems de eso, slo debe tener un poco de expe-
tadelste@host2 centralsof t org' s password
. . riencia aadiendo usuarios y quizs en la administracin de grupos.
Permission denied, please try again.
Los administradores de sistemas necesitan saber:
tadelste@host2 centralsof t org' s password
. .

Permission denied, please try again. 0


Cmo crear y definir cuentas.
tadelste@host2 centralsof t org' s password:
. .

Permission denied (publickey,gssapi-with-mic, password)


0
Cmo eliminar y desactivar cuentas.
$ 0
La amenaza que suponen los exploits de seguridad a la hora de gestionar
usuarios y cmo combatirla.
Como puede ver, la respuesta es no. El usuario no slo no tiene una contra-
Debera saber que las cuentas de usuarios sirven para mltiples propsitos en
sea en blanco; sino que no tiene contrasea. El archivo ssh_conf ig tiene
los sistemas Linux, y que algunos "usuarios" no son personas. Veamos los tipos
activado el requisito de contrasea, por lo que el usuario no podr acceder va
principales de cuentas:
SSH.
Elusuario root debe proporcionar una contrasea para el usuario, para lo
8
Cuentas para personas reales.
que puede hacer lo siguiente: A cada usuario se le proporciona una cuenta que est asociada con varias
opciones de configuracin, tales como una contrasea, un directorio per-
(root@host2 -]# passwd tadelste sonal y una shell que se ejecuta cuando el usuario se autentifica. Ofrecer
Changing password for user tadelste. cuentas separadas para cada usuario permite a las personas establecer los
New UNIX password: passwdl
Retype new UNIX password: passwdl permisos de sus archivos, por lo que puede controlar quin accede a ellos.
passwd: all authentication tokens updated successfully. Cuentas para servicios del sistema, tales como servidores de correo o bases
[root@host2 -]#
de datos.
230 Servicios de red de rea loca! Servicios de red de rea local 231

Estas cuentas aseguran que los servicios se ejecutan con privilegios muy alguien ha conseguido acceso sin autorizacin adivinando su contrasea. El co-
restringidos y tienen acceso slo a los archivos necesarios, en caso de que mando passwd -1 es til para estas situaciones.
errores de programacin o intrusos malintencionados los creen e intenten Luego, tiene que decidir qu hacer con los archivos de usuario. Recuerde que
afectar a otras partes del sistema. Normalmente, cuando se instala un hay usuarios que tienen archivos fuera de su directorio personal. El comando
servicio, el proceso de instalacin o el administrador del sistema crea un find puede encontrarlos:
usuario y un grupo con el mismo nombre (postfix, mysql, etc.) y le asig-
# find / -user tadelste
na todos los archivos y directorios controlados por el servicio. A los servi- [root@host2 ~] # find / -user tadelste
dos no se les dan contraseas, ni directorio personal ni Shell, debido a que /home/tadelste
los intrusos podran usarlos. /horae/tadelste/ zshrc .

/home/tadelste/ .bashrc
Como se mencion anteriormente, si est leyendo este libro, debera saber /home/tadelste/ bashjprof ile
.

cmo aadir usuarios, establecer contraseas, etc. Ahora, vamos a fijarnos en /home/tadelste/ .gtkrc
/home/tadelste/ ,bash_logout
los aspectos que un administrador necesita conocer sobre los usuarios desde el

punto de vista de la seguridad. Luego ya puede decidir entre mantener estos archivos o eliminarlo. Si decide
eliminarlos,haga una copia de seguridad por si se necesitaran despus.
Eliminando a un usuario Como seguridad extra, puede cambiar la shel de autentifcacin del usuario
por un valor sin sentido. Simplemente cambie el ltimo campo del archivo passwd
En muchas ocasiones, los empleados duran poco tiempo en sus puestos. Por lo por /bin/false.
que a menos que administre una pequea tienda con una base de empleados esta- Si su organizacin usa sbell seguras como SSH (a menudo se ofrece el Open

ble, necesitar aprender cmo eliminar un usuario despus de que se baya ido. SSHServer junto con Linux) y permite la autentifcacin remota mediante claves
Demasiados administradores de sistemas no comprenden los riesgos que con- RSA o DSA, un usuario puede conseguir acceso al sistema incluso si la contrase-
lleva gestionar usuarios. Los empleados disgustados a menudo suden provocar a est desactivada, esto se debe a que SSH usa claves separadas.
problemas serios para una compaa si mantienen el acceso a la red. Por ejemplo, incluso una vez que haya desactivado la contrasea de Tom
Eliminar a un usuario no es un proceso de un nico paso, involucra muchos Adelstein, l puede coger otro ordenador
y ejecutar el siguiente comando:
archivos de usuarios, buzones de correo, alias de correo, trabajos de impresin,
$ ssh -f -N -L8000 intranet. yourcompany com: 80 my.domain.com
: .

procesos personales (como el encargado de hacer copias de seguridad o el de


sincronizacin remota de usuarios) y otros aspectos. Es una buena idea empezar Esto redirige el trfico ai puerto 80 (el puerto donde suele escuchar el servidor
por desactivar la cuenta de usuario en /etc/passwd; despus de ello, puede Web) de su servidor interno. Obviamente, si su sistema ofrece SSH, debera elimi-
buscar archivos del usuario y otras referencias. nar las claves autorizadas de los directorios adecuados (por ejemplo -tadelste/
.

Una vez que todas las trazas del usuario se hayan borrado, puede eliminar al -ssh o - tadelste/ ssh 2 para evitar que el usuario vuelva a conseguir acce-
. .
)

usuario completamente (si elimina ia entrada de /etc/passwd mientras existan so a su cuenta:


referencias al usuario, lo pasar mal). Cuando elimina un usuario, es una buena cd ssh
$ .

idea seguir una serie preestablecida de pautas para as no olvidar ningn paso; :~/.ssh$ ls
puede hacerse una lista o puede programar un script que lo haga. La primera authorized_keys known_hosts
tarea es desactivar la contrasea de usuario, as se cortar el acceso de manera
ssh$ rm authorized_keys
:~/.ssh$ ls
efectiva. Puede hacer esto con: known_hosts
~/ ssh$
:

# passwd -1 tadelste
.

Algunas veces es necesario desactivartemporalmente una cuenta sin elimi- Asimismo, busque los archivos .shosts y .rhosts en el directorio personal del
narla. Por ejemplo, un usuario tiene una baja por maternidad o se va a un viaje usuario (por ejemplo, tadelste/. shosts y -tadelste/.rhosts). Tambin compr ue-
de 90 das a otro pas. Cuando revise los logs del sistema puede descubrir que be si el usuario tiene algn proceso ejecutndose en el sistema. Tales procesos
Servidos de red de rea loca Servicios de red de rea local

podran servir como puerta trasera y permitiran al usuario acceder a la red. El que son ms fciles de usar. Aunque normalmente descubrir que son menos flexi-
siguiente comando le indica si un usuario tiene procesos ejecutndose: bles que usar la lnea de comandos. Echemos un vistazo a una de estas herramien-
tas, originalmente desarrollada para StISE, se llama YaST2.
A
# ps aux grep -i tadelste
j
El configurado!" del Escritorio Java de Sun se muestra en la figura 8.14. La des-

Algunas otras preguntas que un administrador de sistemas debera hacerse cripcin de las funciones que puede realizar con la herramienta se muestra en el

acerca de un usuario que ha abandonado la compaa seran: panel de la izquierda.

Podra usuario ejecutar scripts CGI desde su directorio personal o desde


el

alguno de los servidores Web de la compaa?


Existealgn archivo de reenvo de correo tal como tadelste/.forward?
Los usuarios pueden usar reenviadores de correo para sus cuentas, lo que
puede provocar problemas a un sistema que se supone que les permite el
acceso.

A menudo se administrador necesita mantener la in-


dar cuenta de que el

formacin usuario que se fue. Todo el correo y otros


del directorio personal del
documentos de la cuenta personal del usuario pertenecen al usuario. En caso de
que el empleado y la compaa se vean enfrentados en un juicio, tal vez pudiera
ser necesario acceder a estos archivos. Muchos analistas consideran que mante-
ner los directorios personales es una buena prctica. Puede guardar los conteni-
dos del directorio de usuario renombrndolo. Simplemente ejecute el comando
move:
Figura 8.14. Gestor de usuarios JDS de Sun Microsystem.
# mv /home/tadelste /home/tadelsfce locked .

Fjese en que el cuadro de dilogo en la parte de arriba le pregunta si quiere


Esto evita que un usuario pueda autentificarse o hacer uso de archivos como eliminar el directorio /home/taldeste. Como se dijo previamente, su compaa
el archivo .forward que se discuti en la seccin previa. El contenido se conserva puede desear mantener los directorios personales de los empleados que se han
intacto en el caso de que se necesitara despus. ido. En este caso, la herramienta grfica le da slo dos opciones: o borrar el direc-
torio o no borrarlo. No le ofrece la opcin de renombrar el directorio, que como
se coment antes, era la forma ms segura de proceder.
En la figura 8.15, puede ver otro ejemplo tomado de un sistema Fedora.
Amedida que Linux se fue introduciendo en el Mercado se fue haciendo ma- Con la herramienta grfica de gestin de usuarios de Fedora, puede realizar
yor, compaas como Sun Microsystems, Novell, Computer Associates, HP e IBM las mismas operaciones bsicas que con la que se mostr en la figura 8.14. Pero
empezaron a portar sus paquetes administrativos a Red Hat, SEISE y otras plata- tampoco ofrece todas las opciones que necesita para gestionar adecuadamente
formas Linux. Adems, las herramientas administrativas incluidas en las distri- las cuentas de los usuarios que se fueron.
buciones Linux empezaron a madurar, lo que increment tanto la funcionalidad Aunque tcnicamente no se trata de un gestor de usuarios, Fedora ofrece otra
como la usabilidad. herramienta que se puede usar para configurar servicios relacionados con los
Puesto que ahora ya tiene cierto conocimiento de los comandos y los procesos usuarios. Vea la figura 8.16, la herramienta grfica ofrecida por Fedora cuando
necesarios para limpiar una cuenta de usuario personal, puede descubrir utilidades introduce el comando.
Servicios de red de rea local

Captulo 9
(A *
Virtualizacin en la empresa moderna

MI:
mana
apache
ton
asenten

jamet
tclfn

<f!$X

pac he
Wn
daemen

wm
ad
Amanda user
Apache
Wn
asenten

games
/bm/bssh
/biit/teis*
ivssmm
/var/lib/amanda
/vei/www
/b
/sbin

/ust/games
|
i


s'sj

i||l
J

j|c|
gclm i'sbln/notojilfi /var/gdm

jjopher gppnw Per /us;/ib/go!)hei- dla |f


hall reot hall /sisiri/ial! /sbin !

S
;

nans han s rttm/besh /ftproe/hans


ident ffi pideni i.ist; rtnn/alse i
f|
iimUnml IwrtK'WSl /bin/b&sh /slc/junkbustei
idap wap I.AP User /bin/false /varrtlMdap ||S

ip ip ip /var/spool/lpd
mar1 man roaw /vsii/spool/ml
mailm an maHrwfi GNU Mailing Usl Mam rtnnrtaise /var/matiman
maulnull meilnuii /oev/nuil A/sr/*pool/inqueue
marcos marcos ,'bin/bash /home/matCD!
mStfl mano /bifrtiasJi /hoBie/mario &
Figura 8.15. Herramienta grfica de gestin de usuarios de Federa. a repasar un rea que empiece a popularizarse dentro
vamos
En este captulo,
de la administracin de sistemas Linux. Hoy en da, la virtualizacin juega un
papel crucial en la consolidacin de los centros de datos, la computacin de alto
rendimiento, el abastecimiento rpido, la continuidad comercial y la gestin de
la carga de trabajo. Las empresas estn viendo que la virtualizacin
puede hacer-
les ahorrar en costes, los analistas estn notando que la tecnologa est cam-
y
biando el paisaje de los negocios.
La virtualizacin es un concepto que ha ganado popularidad gradas a la exitosa
compaa VMware (http //www vmware com) y el proyecto de cdigo abierto
:
. .

Xen (http://www.cl cara.ac .uk/research/srg/netos/xen). Se refiere a una


.

mquina que ejecuta varios ncleos (que algunas veces son el mismo y otras
veces pertenecen a diferentes sistemas operativos) y encima una capa muy fina
de software que gestiona el acceso al hardware. Cada ncleo se llama
invitado y

acta como si todo el procesador fuera suyo.


Figura 8.16. Configurador de autentificacin Red Hat. Los diferentes invitados son mucho ms independientes con respecto a los
otros que si fueran procesos independientes en un mismo sistema operativo.
Este
Este es otro ejemplo de las mltiples formas en que Linux permite gestionar debido a que fallo de uno de los invita-
aislamiento ofrece seguridad y robustez el
las cuentas de usuario. No necesita que ejecute sistema X Window.
dos no afecta a ios otros. La capa de virtualizacin realiza muchas de las funcio-
el

nes de un sistema operativo, gestionando el acceso al procesador, los dispositivos


y la memoria para cada invitado.
En la actualidad, Sos distintos desarrolladores Linux estn trabajando en. un
nuevo sistema llamado Kernel Virtual Machine (KVM), que formar parte del
ncleo.
Virtuaizacin en la empresa moderna Virtuaizacin en la empresa moderna

Por qu la virtuaizacin es tan popular Buena parte de la culpa la tienen las normas del mercado, que provoca que los
gastos se incrementen: tiene que aumentar su capacidad de almacenamiento para
recuperar documentos, que en muchos casos deber conservar hasta ms de 25 aos.
Para comprender quin est usando la virtuaizacin y el entorno en la que es
De no ser as, sus sucesores no tendrn la tecnologa para generar toda esa
valiosa, debera comprender las necesidades actuales en el mundo de los nego-
informacin, que por otra parte puede ser muy til para abogados o auditores,
cios. Esta seccin ofrece una introduccin antes de comenzar a explicar cmo
por ejemplo.
funciona la virtuaizacin en Linux.
Echemos otro vistazo a los resultados del crecimiento de la informtica:
Todo el campo relacionado con las tecnologas de la informacin ha crecido de
manera exponencial desde que aparecieron los primeros sistemas de archivos dis- Los servidores y las aplicaciones con una nica funcin (normalmente
tribuidos. Las organizaciones han visto cmo sus infraestructuras se expandan llamados "silos") tienen su capacidad infrautilizada.

ao tras ao. Mucha culpa de este crecimiento lo tiene la constante mejora de los Los costes adiciones se incrementan debido a la complejidad del software y
componentes informticos y del software. Pero no todo son ventajas. a la necesidad de manejar grandes cantidades de datos.
Las tecnologas informticas han evolucionado desde la gestin de transac- La necesidad de personal especializado en reas funcionales donde existe
ciones hasta la gestin de los procesos de negocio. Algunas corporaciones estn una carencia de documentacin y grandes niveles de incompetencia.
especializadas en la gestin de recursos humanos, otras en las finanzas y en la 0
La necesidad de guiar y dar soporte a los usuarios y a los administradores
contabilidad, otras lo estn en las manufacturas y en las cadenas de suministro. adems de mantener actualizado el software.
Esta especializacin ha creado una relacin de dependencia entre los centros de Ahora ya puede hacerse una idea de por qu la virtuaizacin empresarial ha
datos y el personal dedicado a las tecnologas de la informacin. ganado popularidad y ha pasado a ser una de las reas donde la tecnologa est
Las redes tradicionales ahora son capaces de capturar y gestionar diferentes cambiando el paisaje de los negocios.
tipos de transacciones que antes no podan, y ha surgido la necesidad de incre- Con las imgenes virtuales, puede fcilmente comprimir los datos junto con
mentar la potencia computacional y por tanto la capacidad de almacenamiento. todos los programas, opciones de configuracin, libreras del sistema operativo y
Este crecimiento tambin ha tenido lugar en la forma de almacenar datos, para otros metadatos que conforman el sistema entero. Restaurar una imagen hace
lo que se ha creado el trmino deslocalizacin de servidores (vase la figura 9.1).
que el sistema vuelva a quedar exactamente igual a como estaba cuando se hizo
la imagen, lo que facilita la reproduccin de los documentos. La virtuaizacin

Servidores desaprovechados tiene los siguientes beneficios:

Iti * i


Sustituye enormes conjuntos de sistemas que apenas se usan por unos
cuantos sistemas mejor utilizados.
Simplifica la administracin, porque separa los ncleos conuna aplica-
aumentando as la seguridad y facilidad de
cin ejecutndose en cada uno,
gestin. Tambin mantiene un entorno en el que los documentos que se
generan mantienen una serie de requisitos.
Reduce el hardware y la complejidad, por lo que las plantillas de personal
pueden ser ms pequeas.
Figura 9.1. Granja de servidores deslocalizados, con un sistema operativo por torre. La virtuaizacin puede ayudar a invertir la tendencia de infrautilizacin
de los servidores.
Vayamos un paso ms all: hay aplicaciones especializadas para campos como
el de la contabilidad
y el de las finanzas que necesitan ejecutarse de manera sepa-
rada, se necesitan pues servidores con una gran disponibilidad y con hardware rendimiento
redundantes para asegurar la continuidad comercial. Esta combinacin de facto-
res ha transformado el paisaje de las TIC en una combinacin de servidores fsi- Linux ha convertido en el sistema operativo preferido para alojar mquinas
se
cos demasiado grande y aislada, y donde muchos recursos estn infrautilizados. virtuales debido a su capacidad para ejecutar y gestionar ciusters y grids de PC.
Virtualizacin en ia empresa moderna Virtuaiizacin en la empresa moderna

Los grandes vendedores de hardware tardaron en comprenderlo, pero una vez hardware fsico requiere mucho tiempo, espacio, dinero y gastos indirectos. Tam-
que se convencieron, vieron en ello un jugoso negocio. Durante varios aos, Linux bin necesitar hacer copias de seguridad y restaurar datos, prever catstrofes y
ha visto como grandes benefactores han contribuido al avance de su tecnologa hacerse con el hardware que mejor se ajusta a su trabajo.
en un loable esfuerzo de desarrollo. Entre estos contribuidores estn IBM, Intel,
Con la virtualizacin Linux, puede hacer dividir un nico servidor fsico en
AMD, Novell, Red Hat, Unisys, Fujitsu y muchos otros. un grupo de varios servidores virtuales. Cada servidor virtual es como si fuera
Por ejemplo, IBM necesitaba un sistema operativo para su iniciativa OpenPovver. un servidor fsico para los administradores de sistemas. Puede crear una instan-
De repente, Linux sac su Big Blue Virtualization Engine en la forma de un cia de servidor separada para cada servicio que quiera ofrecer: correo electrnico,
hipervisor de cdigo abierto. El motor de IBM permite crear y gestionar particio- DNS, servidor Web, etc. Si uno falla, los otros no lo notarn.
nes y asignarles dinmicamente recursos de entrada/salida.
Al dividir el equipo fsico tambin se posibilita la creacin de diferentes confi-
Los desarrolladores del ncleo de Linux han anunciado una nueva tecnologa guraciones para cada servidor virtual, a pesar de que comparten el mismo
multi-hilo (SMT) e hiper-hilo. Linux ahora puede hacer que dos hilos se ejecuten hardware. En un entorno, por ejemplo, liemos creado mquinas virtuales ms
de manera simultnea en el mismo procesador, esta tecnologa es esencial para pequeas (VM) para nuestros servidores DNS y otras ms grandes para el correo
equipos que van a alojar sistemas operativos invitados. Adems, VMware se eje-
y el servidor Web. Esto nos permite repartir la carga de trabajo y mantener el
cuta bien en Linux y ofrece una capa de virtualizacin para otras instancias de mismo hardware. La figura 9.2 le da una idea de lo que puede hacer con un
Linux u otros sistemas operativos. El User Mode Linux (UML) es otro ejemplo de nico servidor fsico.
virtualizacin para Linux.
La versin 2.6 del ncleo de Linux funciona bien con la tecnologa SMT de Servidores virtuales
IBM. Antes de esta versin, Linux no tena una buena planificacin de hilos ni un
buen arbitraje. El ncleo 2.6 solucion este problema e hizo crecer el nmero de
procesadores en los que poda ejecutarse dicho ncleo.
Esto es importante por dos razones. Primero, como equipo que soporta m-
quinas virtuales, Linux tiene que realizar de manera eficiente la gestin de su
hardware. Segundo, como los invitados son independientes del hardware fsico,
tiene que mantener su capacidad de manejar varios procesos a la vez. Hoy en da,
Linux hace ambas cosas de manera extraordinaria. Gestiona el hardware y el
particionamiento virtual y se ejecuta bien en las particiones invitadas gracias a
HP y a IBM.
Si alguna vez se ha preguntado por qu compaas corno XenSource y
Virtuallron han aparecido de la nada, ahora ya lo sabe: debido a sus contribucio- Figura 9.2. Dividiendo un nico servidor fsico en mltiples mquinas virtuales.
nes al hipervisor de cdigo abierto. Al igual que los vendedores de hardware se
percataron de que podan aumentar las ventas de PC y de componentes, los ven-
dedores de software tambin pensaron que podan aumentar sus ventas. Incluso
Microsoft se dio cuenta de que necesitaba entrar en el negocio de Linux, por lo Primero hemos hecho la virtualizacin en nuestra red creando una instala-
que contribuy a XenSource y a Virtual ron. cin mnima de Deban en VM. Una vez que hemos cubierto nuestras necesida-
des, la hemos comprimido y la hemos grabado en un CD. Luego, hemos
configurado nuestras mquinas virtuales adicionales usando VMware con dis-
tintas configuraciones y hemos copiado la imagen comprimida en cada directo-
Incluso a pequea escala, su organizacin se beneficiar de separar el correo rio especificndolo a VM.
electrnico, DNS, servidores Web y directorios, pasarelas y bases de datos. Colo- Tambin hemos configurado las mquinas virtuales Xen usando Fedora con
car cada uno de estos servicios en un nico servidor asegura que si un servidor se instalaciones mnimas. Luego, hemos aadido ios componentes que necesitba-
cae, no cae tambin la infraestructura entera. Pero separar los servidos dd mos para cada servido que queramos ofrecer. Por ejemplo, nuestro servidor DNS
Virtuaiizadn en la empresa moderna Virtuaiizadn en la empresa moderna

primario se ejecuta en una mquina virtual Xen, mientras nuestros servidores Estamos usando Fedora Core 5 (FC5) como el sistema operativo que aloja Xen,
de correo electrnico y de pginas Web se ejecutan en instancias separadas de puesto que soporta Xen 3.0. Preguntemos a Yum (un gestor de paquetes similar
VMware. al apt-get de Deban y al up2date de Red Hat) sobre Xen:

# yum info xen


Nota: Cada VM reside en un directorio. Por ejemplo, nuestro directorio
Loading " nstallonlyn" plugin
Setting up repositori.es
principal /var/lib/vmware/Virtual Machines contiene varios 1/3
core [

subdirectorios como deb an- 3 Ir Oa - i 3 8 6 -ne t ins t - kernel2 6 [2/3]


.
updates
Simplemente hemos comprimido ese subdirectorio y lo hemos usado para extras [3/3J
la creacin de otros subdirectorios con nombres ligeramente diferentes. Reading repository me t adata in from local files
Available Packages
ame xen:

Despus de que tenemos un servidor (por ejemplo de correo) ejecutndose, Arch 386
:

hemos hecho una copia comprimida y la hemos volcado a un CD. De manera Versin: 3.0.2
regular y sistemtica hacemos copias de seguridad de cada servidor volcndolas Release: 3.FC5
Size 1.4 M
a CD o DVD. Tambin hemos intentado mover las imgenes a distribuciones Linux
:

Repo updates
:

distintas y se han ejecutado como esperbamos. Summary: Xen is a virtual machine monitor
Description:
This package contains the Xen hypervisor and Xen tools, needed to
run virtual machines on x86 systems, together with the kernel-xen*
packages. Information on how to use Xen can be found at the Xen
project pages.
Qu decamos que aportaba la virtuaiizadn? Primero, hemos eliminado la
necesidad de varios servidores fsicos. Hemos convertido nuestro sistema opera- virtualisation can be used to run mltiple versions or mltiple
tivo preferido en una imagen, por lo que solo hemos necesitado lanzar el proceso Linux distributions on one system, or to test untrusted applications
in a sandboxed environment. Note that the Xen technology is still
de instalacin una vez. Luego, hemos creado mquinas virtuales y hemos copia- and this RPM has received extremely little testing.
in development ,

do sistemticamente nuestras imgenes virtuales para permitir una recupera- Don' t be surprised if this RPM eats your data, drinks your coffee
cin rpida en caso de que el sistema fallara. or makes fun of you in front of your friends.
La virtualizacin funciona bien para pequeas compaas, a las que permite Mimos a probarlo, pero primero revisemos los requisitos:
Esto parece alentador.
levantar su infraestructura con software libre. Imagine los gastos en licencias
que se han evitado. Ahora, imagine qu tipos de estrategias pueden adoptar
El sistema debe tener por lo menos 256 MB de RAM.
las
grandes compaas usando Linux. 9
Su gestor de arranque debe ser grub.
Llegados a este punto, quizs tenga ganas de aprender a realizar este t rabajo. SELINUX debe ser disable o permissive, pero no enforcing.
Por lo que vamos a empezar por el proceso de instalacin y configuracin de Xen Ejecute el programa system-config-securitylevel o edite /etc/selinux/
y VMware y hacer una demostracin de cmo virtualizar una red de servidores. conf ig que debera ser as:

# This file Controls the State of SELinux on the system.


# SELINUX* can take one of these three vales:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux. prints warnings instead of enforcing.
# disabled - SELinux is fully disabled.
En esta seccin, vamos a mostrar cmo instalar Xen en una nica mquina SELINUX=Disabled
para gestionar dos sistemas operativos. Puede que algn da Xen convierta esta # SELINUXTYPE* type of policy in use. Possible vales are:
# targeted - Only targeted network daemons are protected.
forma en el estndar de las distribuciones Linux y haga as ms fcil las instala- # strict - Ful 1 SELinux protection.
ciones. Pero por ahora, se necesita una labor manual: SE'LINUXTYPE= targeted
Virtualizacin en la empresa moderna Virtualizacin en ia empresa moderna

Si cambia el valor SELNUX por enforcing, necesitar reini'ciar Fedora antes de Ahora ya puede reiniciar. Xen debera iniciarse automticamente, vemoslo:
proceder.
# /usr/sbin/xm list
Este comando instalar
hipervisor X.en, un ncleo Fedora modificado por
el
ame ID Mem(MiB) VCPUs State Time(s)
Xen y llamado dominio 0, adems de varias utilidades: Domain-0 0 880 1 r 20.5

install kernel -xenO


La salida debera mostrar que Domain-0 se est ejecutando. Domain 0 con-
# yuro,

trola todos los sistemas operativos invitados que se ejecutan en el procesador, de


Nota: La necesidad de un ncleo de Linux modificado por Xen desparecer
en un futuro cuando Intel y AMD introduzcan soporte para virtualizacin
manera anloga a como el ncleo controla los procesos de un sistema operativo.

en sus chips. Tambin se espera que Windows Vista soporte la virtualizacin


a nivel de procesador.

Esto aade xenO como primera eleccin en el archivo /boot /grub/grub conf, .
Xen es procesador, pero necesitar aadir al menos un
ahora quien controla el
pero no como ncleo por defecto:
sistema operativo invitado. Empezaremos instalando Fedora Core 5 como invita-
# grub.conf generated by anaconda do, porque facilita la labor, y luego ofreceremos algunos consejos para otras va-
#
riantes de Linux.
Note that you do not have to rerun grub after making changes to
#
ths file
# NOT ICE You have a /boot part t ion. This means that
: Fedora Core 5
# all kernel and nitrd paths are reltive to /boot/, eg.
# root hd 0 0 ( }
Fedora Core 5 tiene un script de instalacin como invitado de Xen que facilita

# kernel /vmlinuz -versin ro root=/dev/VolGroupOO/LogVolOO el aunque slo instala invitados FC5. El script espera acceder al rbol de
proceso,
initrd /initrd-version. img
instalacin de FC5 va FTP, Web o NFS; por algunas razones, no puede especificar
#
#boot=/dev/hda
def ault=l un directorio o un archivo. Usaremos nuestro DVD de instalacin de K 5 que
timeout=5 serviremos a travs de Apache.
splashimage= (hdO, 0) /grub/splash.xpm.gz
hiddenmenu # mkdir /var/www/html/dvd
title Fedora Core (2 6 17-1 2 1 57_FC5xenO . . . # mount -t iso9660 /dev/dvd /var/www/html/dvd
root (hdO 0 ) # apachectl start
kernel /xen.gz-2 .6.17-1 2157_FC5 .

module /vmlinuz-2 6 17-1 2157_FC5xenO ro root=/dev/VolGroupOO/LogVolOO


. . . Ahora vamos a ejecutar el script de instalacin y a responder a sus preguntas:
module /initrd-2 6 17-1 2157_FC5xenO img
. . . .

title Fedora Core (2.6.17-1.2157 FC5 # xenguest-install .py


root (hd 0 0 , ) What is the ame of your virtual machine? guestl
kernel /vmlinuz-2 6 17- 1 2157_FC5 ro root=/dev/VolGroup00/LogVol00
. . . How much RAM should be allocated (in megabytes)? 256
initrd /initrd-2 6 17- 1 2157_FC5 img
. . . . What would you like to use as the disk (path) ? /xenguest
title Fedora Core (2 6 15-1 2054_FC5) . . . What is the install location? http //127 0 0 1/dvd: . . .

root hd 0 0 , )

kernel /vmlinuz-2 6 15- 1 2 054_FC5 ro root=/dev/VolGroup00/LogVoi00


. . .
Llegados a este punto, comienza la instalacin de FC5. Elija entre el modo
initrd /intrd-2 .6 15-1 .2054_FC5. img
texto o el modo grfico (si se est ejecutando X) va vnc. Si elige modo texto, se
.

def ault =0
conectar a una consola. Proceda como lo hara normalmente con una instala-
Para hacer que Xen sea el ncleo por defecto, cambie esta lnea: cin de Fedora o de Red Hat. En la pantalla de direccin IP, proporcione al invitado
default=l una direccin distinta que la del equipo, si usa DI-1CP (si escogi dhep="dhcp" en
ei archivo de configuracin de Xen, como se explica en la siguiente
seccin). La
por:
ltima pantalla le preguntar si quiere reiniciar. Desmonte el DVD y extrigalo.
def ault =0 Ahora se reiniciar slo el nuevo sistema invitado, no Xen ni el equipo.
Virlualizacin en a empresa moderna Virtuaizacin en ia empresa moderna

uuid = "bc2cl684-c057-99ea~962b-de44a038bbda"
Xen no sistema operativo invitado automticamente. Necesita intro-
inicia el
bootloader= " /usr/bn/pygrub"
ducir este comando en el equipo:
on reboot = 'restart'
# xm create guestl on crash = 'restart'
guestl)
Llegados a este punto, tendremos dos sistemas operativos (hostl y Esto contiene algunas, pero no todas, de las directivas que el invitado necesi-
funcionando independientemente y viviendo en armona, cada uno con sus pro-
Para probar que ambos ta. Un archivo de configuracin mnimo para el invitado debera quedar as:
pios sistemas de archivos, conexiones de red y memoria.
servidores se estn ejecutando, pruebe estos comandos: 1 . Un nombre nico de dominio invitado:
name="vm01"
# xm list
ame ID Mem(MiB) VCPUs State Timis) 2. Una ruta para la imagen del ncleo del dominio invitado:
Domain-0 0 128 1 r 686.0
14.5 kernel = ',/boot/vmlinuZ"2 .6.12. 6-xenU"
guestl 3 256 1 -b
# xentop 3. Un dispositivo raz para el dominio invitado:
xentop -21:04:38 Xen 3.0-unstable
0 crashed, 0 dying, 0 shutdown
root= " / dev/hdal
2 domains: 1 running, 1 blocked, 0 paused,
1 @ 2532MHz
Mem: 9 8 2 3 3 2 k total, 414900k used, 567432k free CPs :

4. Reserva de memoria inicial para el invitado, en megabytes:


VCPUS NETS
AME STATE CPU(sec) CPU(%) MEM (k) MEM % ) MAXMEM(k) MAXMEM (%) {

NETTX(k) NETRX(k> SSID


memory=128
Domain-0 r 686 0.3 131144 13.4 no limit n/a 1 8

1488528 80298 0
Nota: La suma de la memoria para todos los invitados de Xen no debe
guestl --b- - 14 0.1 261996 26.7 262144 26.7 1 1
memoria
exceder la fsica, adems hay que tener muy en cuenta que Xen
129 131 0
usa 64 MB.
Para que los dominios de Xen se inicien automticamente, use estos comandos:
5. El espacio en disco para el dominio invitado. Esto est definido en uno o
# /sbin/chkconf ig --level 345 xendomains on
/sbin/service xendomains start
ms dispositivos de bloque, cada uno debe ir entre comillas simples:
#
disk = [ 'stanzal' , 'stanza2' ]

Donde los dispositivos se representan mediante una cadena de tres

distinto de fC5, necesitar parmetros ('host dev, guest_dev, mode')- host_dev es el rea de
Si quiere instalar un sistema operativo invitado
Xen, que un archivo de texto (actual- almacenamiento del domino tal y como es vista por el equipo. Puede ser:
editar el archivo de configuracin de es

mente, un script de Python) en el directorio / etc /xen. file:pathname


xmexamplel xmexample2 son archivos de ejemplo comentados. Para ver la
y Un archivo de imagen (un archivo local que Xen tratar como sistema
sintaxis del archivo completo, teclee: de archivos); este archivo se crea cuando ejecuta el programa ron create
o xen-create-image.
# man xmdomain.cfg
* phy:device
Cuando ejecutamos xenguest-install .py en la seccin previa, se gener Un dispositivo fsico.
una configuracin de invitado de Xen /etc/xen/guestl, con algunas lneas
guest dev es el dispositivo fsico tai y como lo ve el dominio invitado, y
extra:
los modos son o bien r para lectura o w para lectura y escritura. Por ejem-

# Automatically generated Xen config file plo, una directiva de disco de ejemplo para dos invitados es:
ame = "guestl" /vserver/
disk= f ile /vserver/images/vmOl img, hdal,
S
' :
. w' ,
1
ile :

memory = "256"
images/vrnOl-swap
disk = file /xenguest xvda, w'
[ ' :
, ]
img, hda2 w'
'mac = 00 16 3e 63 c7 76
,

vif = [ : : : : : '
]
Virtualizacin en la empresa moderna Virtualizacin en la empresa moderna

. La interfaz de informacin de red es una directiva vif, Esta directiva debe


hipervisin de IBM. En una dura competicin con Xen, VMware tambin ha en-
contener la especificacin de un dispositivo de red. La red por defecto se
viado sus propias propuestas de cdigo abierto a los desarrolladores del ncleo,
especifica con:
destacando el hecho de que VMware se ejecuta mejor en Linux si es el propio
vif = '
[ '
]
WMware el que proporciona una pequea ayuda al ncleo.
Una dhcp controla si se usa DHCP o se usa
directiva la interfaz de infor- Mientras ejecutamos Xen usando Fedora Core 5, hemos decido instalar VMware
macin. Lo siguiente especifica el uso de DI ICP:
en un servidor Ubuntu y como sistema operativo invitado Deban. Tambin he-
dhcp="dhcp" mos gestionado instancias remotas de WMware del escritorio Ubuntu usando la
Si la directiva dhcp no aparece o est definida como "off", debe especificar la consola WMware. Luego, hemos instalado FC5 en la mquina virtual VMware.
informacin de red de manera esttica, hgalo cuando configure el sistema: Hemos descargado Vmware-server-I .0. 1-29996. tar.gz y lo hemos
ip="192. 168. 0.101" descomprimido en un directorio de instalacin llamado vmware-server-distrib.
netmask="255 .255.255.0" Dentro del directorio hemos encontrado vmwareinstall.pl y lo hemos ejecutado
gateway= "192 168 .0.1"
con /vmware- ins tal 1 .pl. Al poco tiempo, el programa de instalacin ha em-
.

hostname= "vmOl example com" . .


.

pezado y ha mostrado los siguientes mensajes:


La ayuda de xm proporciona el siguiente ejemplo de un invitado mnimo, con
Creafcing a new installer database using the tar3 format.
un archivo de imagen del equipo apareciendo como dispositivo raz del invitado:
Instal ling the content of the package
kernel = "/boot/vmlinuz-2 6-xenU" .

memory = 128
In which directory do you want to insta!! the binary files?
ame = "My Linux"
[/usr/bi.n]
root = "/dev/hdal ro
disk = "f ile /var/xen/mylinux img, hdal w"
[ : . , ]
VMware comienza con varias preguntas como esta,
La instalacin del servidor
Una vez que tiene el archivo de configuracin del invitado, cree que sebasan en informacin relativa al sistema operativo y a los archivos de
un invitado
de Xen con este comando: configuracin capturada por el script de instalacin.
Durante el proceso de instalacin, el script le pedir que acepte la licencia del
# xm create -c gues bname
producto VMware. Debera leerla antes de aceptar. Despus de que acepte la li-
donde guest_name puede ser una ruta completa o un nombre de archivo cencia, VMware verifica el compilador y que los archivos de cabecera de su siste-

relativo (en cuyo caso Xen lo coloca en / etc/xen/guest_name). Xen crear el ma sean compatibles unos con otros para obtener el programa VMware binario
dominio invitado e intentar arrancarlo desde el dispositivo o el archivo dado. La usando el compilador. Ver mensajes del tipo:
opcin ~c adjunta una consola al dominio al iniciarse, por lo que puede respon- The path "/usr/lib/vmware" does not exist currently. This program is going
der a las preguntas que el proceso de instalacin le haga. to create it, including needed parent directories. Is this what you want?
[yes]

Adicionalmente, ver compilaciones de cdigo como las del siguiente ejemplo:

Entering directory /usr/src/linux-headers - 2 6 15 - 26 -k7


'

make 1] [ :
' . .

VMware ofrece su servidor gratuitamente, e incluso


el cdigo se distribuye CC [M] / tmp /vmware -conf igO/vmnet -only/ driver
.

bajo de cdigo abierto. Puede encontrarlo enhttp / /www vmware com/


la licencia
: . .
CC [M] /tmp/vmware-conf igO/vmnet-only/hub.o
products/server. Ver que es robusto y amigable. Puede leer ms acerca del CC [M] /tmp/vmware-conf igO/vmnet -only/userif .o
CC [Mj / tmp/vmware-conf igO/vmnet -only/netif
.

cdigo de VMware y su comunidad de iniciativas de cdigo abierto en ese mismo /tmp/vmware-conf igO/vmnet -only /bridge.
CC [M]
sitio Web. CC [M] / tmp/ vmware -conf igO/vmnet -only /proefs
.

Como mencionamos anteriormente, arranques como el de XenSource CC [M] /tmp/vmware-conf igO/vmnet -only/smac_compat.
y Vir- SHIPPED /tmp/vmware-conf igO/vmnet -only/ smac_linux x386
. .

tual ron se benefician del soporte que el ncleo de Linux ofrece a la tecnologa de
LD [M] /tmp/vmware-conf igO/vmnet -only/vmnet .o
Virualizacin en la empresa moderna Virtualizacin en ia empresa moderna

Building modules, stage 2 .

MODPOST

Hacia el final de la instalacin, el script le informar que la compilacin del


cdigo ha terminado y le ofrecer un comando que puede usar para desinstalar
el servidor:

The installation of VMware Server 1.0.1 build-29996 for Linux completea


successfully. You can decide to remove this software from your system at any
time by invoking the following comraand: " /usr/bin/vmware-uninstall pl "
.

El script de instalacin tambin le pedir que ejecute el comando de configu-


racin de la siguiente forma: Figura 9.3. Conectando con un host virtual remoto.

Despus de que nos hemos conectado al host remoto, VMware nos ha pre-
Before rurming VMware Server for the first time, you need to configure it by
invoking the following command: '/usr/bin/vmware-config.pl Do you want
guntado si queramos crear una mquina virtual. Debido a que ya hemos creado
1
'
.

this program to invoke the command for you now? [yes]


una, hemos hecho clic en el men Archivo y hemos abierto el directorio que con-
Cuando el proceso de instalacin finalice totalmente, podr ver los siguientes tiene la instancia de Deban. Esta accin ha aadido Deban al inventario de VM.
mensajes: Nuestra consola luego se ha vuelto parecida a la de la figura 9.4, lo que nos da
una idea de las funciones operativas disponibles.
Starting VMware Services:
Virtual machine monitor done
Virtual Ethernet done
Bridged networking on /dev/vmnetO done
Host-only networking on /dev/vmnetl (background) done
Host-only networking on /dev/vmnet8 {.background) done
NAT Service on /dev/vmnet8 done
Starting VMware virtual machines done
The conf iguration of VMware Server 1.0.1 build-29996 for Linux for this
running kernel completed successfully.

Puede descargar una imagen que ya exista de un sistema operativo, lo que


VMware llama aplicacin desde la direccin http / / www vmware com/vmtn/
: . .

appliances/ directory. Nosotros hemos escogido debian-31r0a-i386


netinst- kernel 6 zip que est ubicada en el directorio /var/lib/vmare/
. .

virtual Machines y la hemos descomprimido.


Una vez que ya tenemos nuestra imagen bsica, hemos iniciado una consola
de gestin de VMware desde un equipo remoto con Ubuntu de escritorio detrs
y
del cortafuegos de la ubicacin remota. Hemos ejecuta el comando:

$ gksu vmware- server-console

Luego, hemos configurado la consola para conectar nuestro sistema operati-


vo remotamente. Con la consola servidor de VMware ejecutndose, nos hemos
conectado a la mquina virtual remota y nos hemos autentificado como root,
como se muestra en la figura 9.3.

!
Vrtualizacin en a empresa moderna Virtuaiizacin en la empresa moderna

Hemos sido capaces de iniciar Deban. Cuando d sistema ha arrancado, Deban de mquinas virtuales y la hemos descomprimido como hicimos con
al directorio
ha empezado a ejecutar las ltimas fases del script de instalacin. Hemos permi-
Deban. Luego, la hemos aadido a travs del men Archivo. La figura 9.8 mues-
tido que se ejecutase, y en un breve lapso de tiempo hemos obtenido la pantalla
tra una pregunta sobre un identificador nico, puede mantener el existente.
de la figura 9.5.
Eift Vtew Hx>t m Pow*r 5n<iphol Windows

28 !
i> : l\1, .11 IiH
Pp, debJmv y\i i i ;
X
?d.sbian- Silla Q Kfc

: piZ?. 8 .i.;-
m:jiSWSjikis'.''.



w
* iactetsi
#,#).
fxf.
fi.-
:
Sf .!toii:.;S! l
hsmc':X:
OSli -fWS '

:'i 77' : 'p-PhPPM ;


/fe'1hSctesig-.ftrfc! %:Wfhi0i ".I ) :
'

S7
.
; r?(< :s t ?. ;
j-
'-

1 i. i qs,
# y.-.

P Hit.'-.8 w; p i

liMriili^/jiijs -5V:p !

i :

s'.'S i'jMijj;
:< iSiirf :t \ lsii^i^ 933' 938 '.?? v
'
pp:
ife iiSfi.ft': ;b!38: 3i;t v.;: Xieij .

:if WWiWi'.MIMINK >nv>mv i MpUtel ...


'.V 7;..: 77:7. 7.|
;

:-A totMs-S 1
Sinoj'si
'

?!:#!
:
s.-.|'i'jV<jiri' . .
.;

''TjK **, ti Sif :$ 77 7'.'


77
't -i fijo iviii
.'
5XWSS '
: .

<3 j yW ; i %7 7 : :
tfsiVS;:'
, ti :3B. ;
; i
7, 7 \j{ ;;

v. K! fc'ito' AvjsTiteg.; :

tfo 7 7
:
tjjrtffiiiaJ.'fl %S<p:3B5 'iji':'
'
#(}" i'j'ift :

i|i ifiirifiFiq' pJW . ^i-iCid''


X liMrtfrb 9.' fairi
' ' : i 'rtr8*.' :
: .jWIftiinl i ; /:ii
: ' ''$ .W(:tet! 'ti ;bV' 0 .M/fatn/ d .(itf.'.'.blii'if; :b f.i.'trfbjisfl '.W ; .
-
:
V:.: 1

"
''."lil.SBifciS.- <f .
: imkx.Vj; M.
j>;
ti H) V
7
Figura 9.5. El script de instalacin de Deban se ejecuta bajo una mquina virtual remota. j

Hemos optado por configurar Deban manualmente en lugar de escoger una


configuracin predefinida. Esto nos permite crear un servidor Deban por defecto Figura 9.6. La instancia instalada de Deban en su equipo remoto.
para implantar instancias adicionales del servidor VMware. La figura 9.6 mues-
tra cmo se ejecuta Deban en el sistema.
La captura de pantalla nos muestra cmo se est ejecutando el comando ipconfig.
Hemos probado esta instancia para asegurarnos de que las tarjetas Ethernet
virtuales apuntaban correctamente a las direcciones IP que hemos configurado.
Una vez que tenemos nuestra imagen bsica de Deban, la hemos comprimido
y hemos volcado a un CD. Luego, hemos implantando esa imagen en otros
la
equipos, despus hemos determinado el papel de cada sistema invitado
y los re-
quisitos en cuanto a recursos.
La figura 9.7 ofrece un resumen de la imagen Deban. En la parte derecha de
la pantalla,puede ver la configuracin del equipo. Podemos alterar el servidor
virtual dinmicamente para aadir memoria, espacio en disco, tarjetas Ethernet,
procesadores y varios dispositivos a medida que las necesidades se incrementen
y
tengamos que configurar mquinas adicionales.

Para nuestra tarea, final, es decir instalar otro sistema operativo, hemos des-
cargado Federa Core 5 desde el sitio de la comunidad VMware, la hemos copiado
Figura 9.7. Sumario de consola de nuestra imagen Deban invitada.
252 Virtualizacin en ia empresa moderna Virtualizacin en la empresa moderna

Figura 9.8. VMware pregunta sobre el identificador nico de la imagen


de una mquina virtual.

La consola de gestin de VMware se percata de que hemos aadido una ima-


gen. Para distinguir entre posibles mltiples imgenes, hemos preguntado por el
identificador nico (UUID) en el dilogo que se muestra en la figura 9.8. Debido
a que hemos copiado Fedora 5 y tenemos todos los archivos comprimidos en la
imagen, no importa la opcin del cuadro de dilogo que escojamos. Cuando abre
una nueva mquina virtual, VMware le da la posibilidad de verificar la configu-
racin virtual del hardware. La figura 9.9 le da una idea del inventario de hardware
virtual disponible para Fedora Core 5.
Adems de descargar imgenes y cargarlas en la consola de gestin, puede
un sistema operativo Linux desde un CD de distribucin
instalar estndar.

Muchos analistas dicen que la virtualizacin Linux pasar de moda. Como


administrador de sistemas, debe sopesar las ventajas las desventajas de especia-
y
lizarse en esta tecnologa. La virtualizacin no es el equivalente a la introduccin
del PC por parte de IBM, o a la introduccin de los sistemas de archivos distribui-
dos por parte de Microsoft. 1 impacto de la tecnologa de bipervisin no puede
compararse a losprogramas ERP tales como SAP, PeopleSoft u Oracle Financiis.
En cualquier caso, tecnologas como Xen y VMware tienen beneficios
incuestionables. La virtualizacin mejora la utilizacin de los servidores
y reduce
Como administrador de sistemas Linux, usar dos herramientas con ms fre-
cuencia que el resto: un editor de texto para crear y editar archivos de texto, y
una sheli para ejecutar comandos. Llegados a un cierto punto, empezar a estar
cansado de introducir comandos repetitivos y buscar formas de cuidar sus de-
dos y reducir errores. Aqu ser cuando tendr que combinar el editor de texto
con la Shell para crear los programas Linux ms simples: los sheli Scripts.
Linux usa por s mismo Scripts para casi todo, especialmente para tareas
personalizabas como la gestin de servicios y de procesos. Si comprende cmo
estn escritos estos scripts, puede interpretar los pasos que hay que tomar para
adaptarlos a sus propias necesidades.
La sheli (una intrfaz del sistema operativo) es una de las muchas innovacio-
nes heredadas del bisabuelo de Linux, Unix. En 1978, El investigador de los La-
boratorios Bell Stephen Bourne desarroll la Bourne Shell para la versin 7 de
Unix. Se llam sh (Unix valoraba la concisin), y defini las caractersticas estndar
que hasta el da de hoy presentan todas las sheli. Las shells evolucionaron desde
su comienzo, amparadas en el desarrollo de la Korn Shell (ksh por supuesto), por
la C Shell (csh) y por la Bash Shell (bash) que ahora mismo es la estndar de los
sistemas GNII/Linux. Bash es un acrnimo de Bourne-Again Shell, y soporta
scripts que fueron escritos originalmente para la Bourne Shell.
Este captulo comienza con los aspectos bsicos de la bash: los sheli prompts,
los comandos y parmetros, las variables, las expresiones, la redireccin de E/S.
Si ya est familiarizado con esto, no se perder mucho si se salta unas cuantas
pginas (excepto quizs una cura de insomnio). Cada herramienta tiene sus l-
mites, y en muchas ocasiones puede resultar que bash no sea la mejor solucin a
sus problemas. Al final del captulo examinaremos una pequea aplicacin escri
Scripting Scripting

ta en varios lenguajes de script: bash, Perl, PHP y Python (las tres P estn asociadas # /bin/bash
!

con la P del acrnimo que mencionamos en captulos anteriores). Puede comparar echo helio world
echo bonjour monde
su estilo, sintaxis, expresividad, facilidad de uso y aplicabilidad a diferentes domi-
nios. No todos ios problemas sern tan pequeos, pero pueden servir de ejemplo. Este archivo no es un script que funcione todava. Le ensearemos la forma
de ejecutarlo en la siguiente seccin, pero antes necesitamos explicar algunas
reglas sintcticas bsicas.
Comenzando eon bash |

La Shell /bin/bash interpretar el script lnea por lnea. Espera que cada co-
mando est en una nica lnea, pero si termina una lnea con una barra inclina-
Muchos sistemas operativos ofrecan interfaces de lnea de comandos en los da (\), bash tratar la siguiente lnea como una continuacin:
primeros y normalmente
das, ofrecan la posibilidad de almacenar los comandos
en archivos de texto y ejecutarlos como programas de procesamiento por lotes t/bin/bash
!

(un concepto que penetr muy bien en aquel tiempo). Pronto se hizo normal la echo \
hel.lo\
forma de enviar parmetros a los scripts y de hacer que cambiaran su compor- j

world
tamiento en funcin de diferentes condiciones. La Shell de Unix hizo grandes
avances en cuanto a flexibilidad se refiere, convirtindose en un verdadero len- Esto supone una buena forma de hacer las lneas complejas ms legibles.
guaje de programacin. La Shell ignora las lneas con espacios en blanco (espacios, tabulaciones, l-
Nuestros ejemplos interactivos mostrarn un ejemplo de shell prompt, un co- neas vacas). Tambin ignora todo lo que vaya desde el carcter # hasta el final
mando con parmetros opcionales y la salida del comando. Aqu se lo mostramos: de la lnea. Cuando bash lee la segunda lnea del script (echo helio world), trata
la primera palabra (echo) como si fuera el comando a ejecutar y el resto de pala-
adminOserverl ~$ date:

bras (helio world) como los parmet ros. El comando echo slo copia los argu-
Thu Aug 24 09:16:56 CDT 2006
mentos a la salida. La tercera lnea tambin lee otro comando echo, pero con
Mostraremos el contenido de un shell script como este: distintos parmetros.
Para ver qu hay en el archivo helio, puede imprimir todo su contenido en la
# /bin/bash
!

pantalla:
contents of script...

adtnin@serverl ~$ cat helio


:
La primera lnea es una lnea especial: comienza con los dos caracteres #!, el
si
# /bin/bash
!

resto de la primera lnea es el nombre del comando que ejecutar como proceso el echo helio world
resto del script. (Si el carcter # no va seguido por i, se interpretar como un echo bonjour monde
comentario que continua hasta el final de la lnea). Este truco le permite usar
cualquier programa para interpretar sus scripts. Si el programa es una Shell
tradicional como sh o bash, el archivo se Shell script. Al final del captulo le
mostraremos scripts para Perl, PHP y Python. El archivo helio puede ejecutarse lanzando el comando bash con el argument
helio:

Nota: Microsoft Windows usa la extensin del archivo para definir el tipo
admin@serverl. : ~$ bash helio
de archivo y qu intrprete debera ejecutarlo. Si cambia la extensin, deja helio world
de funcionar, fin Linux, los nombres de los archivos no tienen nada que ver bon j our monde
con la ejecucin (aunque suelen seguirse algunas convenciones tiles por admn@serverl ~$
:

otras razones).
Ahora intentemos ejecutar helio sin poner bash delante:
Use su editor de texto favorito (o incluso uno que no le guste) para crear este admin@serverl ~$ helio
:

archivo de tres lneas y gurdelo en un archivo llamado helio: bash: helio: command not found
258 Scripting Scripting 259

Por qu faash no puede encontrarlo? Cuando especifica un comando, Linux admin@serverl ~$ chmod u=rx,g=rx helio
:

busca en una lista de directorios la ruta de un archivo con ese nombre y ejecuta admin@serverl ~$ ls -1 hallo
:

el primero que encuentre. En este caso, helio no estaba en estas listas de directo-
-rwxr-x-- 1 admin admin 50 2006-08-03 15:44 helio
rios. Si le indica al sistema en qu directorio est helio, lo ejecutar. La ruta
Para aadirse permisos a s mismo, a su grupo o a los otros de forma rpida,
puede ser absoluta (/home/admin/hello) o relativa { /helio significa que el
.
introduzca:
archivo helio est en este directorio). Describiremos cmo especificar los direc-
torios en su ruta en la prxima seccin, pero antes tenemos que tratar los permi- adminOserverl ~$ chmod +xr helio
:

sos. admin@serve.ri -$ ls -1 helio


:

-rwxr-xr-x 1 admin admin 50 2006-08-03 15:44 helio


Una shell script no se ejecutar sin ciertos permisos de archivo. Comprobe-
mos los permisos de helio: Ahora, podemos ejecutar el script desde la lnea de comandos:
admin@serverl ~$ ls -X helio
:

adminOserverl ~$:
. /hallo
-rw-r--r-- 1 admin admin 48 2006-07-25 13:25 helio
helio world
bonjour monde
Un - indica que la bandera no est activa. El primer -- es
bandera de directo-
la

rio, es una d para los directorios y un - para Luego vienen los per-
los archivos.
misos para el propietario del archivo, luego los del grupo y por ltimo, los de
cualquiera. El propietario (admin) puede leer (r) y escribir (w) el archivo, mien-
tras que el grupo (en este caso tambin se llama admin) y el resto de la gente slo La lista de directorios en la cual bash debera buscar los comandos estn es-
puede leerlo (r-). Nadie puede ejecutar el archivo, puesto que el tercer carcter de pecificados en una variable de entorno llamada PATH. Para ver qu hay en su
cada grupo de tres marca un - en lugar de una x. PATH, introduzca:
Ahora, intentemos ejecutar helio con una ruta relativa:
admin@serverl ~$ echo $PATH
:

admin@serverl ~$ ./helio
:
/bin /usr/bin
:

bast.: ./helio: Permission denied


Linux reserva los nombres para el directorio actual y
especiales . para el ..

Esta vez Linux lo encontr pero no archivo no tena


lo ejecut. Fall porque el directorio padre actual. Si quiere que Linux siempre encuentre comandos como
permisos de ejecucin. Necesita decidir quin podr ejecutarlo: slo usted (el pro- helio en su directorio actual, aada el directorio actual a PATH.
pietario), cualquiera del grupo, y/o los usuarios de otros grupos. Esto es una
decisin de seguridad prctica que los administradores deben hacer con frecuen- admin@serverl : PATH=$PATH:
cia. Si los permisos estn muy repartidos, otros pueden ejecutar su script sin
Para hacer cambios tales como ste, necesitar hacer un cambio permanente
conocimiento; si son demasiado restrictivos, el script no se ejecutar.
en PATH. Esto puede hacerse por un usuario individual en el archivo .bashrc ubi-
El comando para cambiar los permisos se llama chmod (viene del ingls change cado en el directorio personal, o por el administrador del sistema en un archivo de
mode) y puede usar el estilo de nmeros octales de los antiguos LInix o letras.
configuracin que abarca todo el sistema (normalmente ubicado en el directorio /
Intentmoslo de las dos formas, proporcionndose permisos de lectura/escritura/ etc); slo aada una sentencia al archivo como el comando que hemos mostrado.
ejecucin a usted mismo, lectura/escritura/ejecucin al grupo y nada a los otros
De forma alternativa, podra mover el script helio a uno de los directorios
(qu comparten ellos con usted?). Para el estilo octai, lectura 4, escritura=2 y
que ya estn en el PATH. Sin embargo, estos directorios normalmente estn pro-
ejecucin=l. El nmero de usuario ser 4+2 + 1 (7), el grupo 4 + 1 (5) y otros 0:
tegidos, por lo que slo el usuario root puede poner archivos all, para mantener
admin@serverl ~$ chmod 750 hallo
:
la seguridad.
admin@serverl ls -1 hallo
:

-rwxr-x-- 1 admin admin 50 2006-08-03 15:44 helio


Para un script ms complejo que helio todos los scripts), ambos mtodos
(casi
tienen implicaciones de seguridad. Si su PATH, corre el riesgo de que si al-
. es
El otro tipo de parmetros de permisos es usar letras, lo que probablemente es guien pone un script diferente llamado bello en otro directorio y usted comete
ms intuitivo: el error de entrar en ese directorio y teclear bello, ejecutar el helio del otro usua-
2 Scripting Scripting

rioy no es io que quera ejecutar. La correccin del script tambin supone una El nada elegante 2 > es la redireccin de errores. La redireccin de errores pue-
preocupacin. Estamos seguros de que sabe qu hace su script, pero no lo esta- de ser til en procesos largos como compilaciones, por lo que puede revisar cual-
ramos tanto despus de aadir cientos de lneas. quier mensaje de error ms tarde en lugar de buscarlos en la pantalla.
Una prctica comn es poner sus propios script en un directorio como /usr/ Si quiere redirigir la salida estndar y la salida estndar de errores al mismo
local /bin o ~/bin en lugar de un directorio del sistema como /bin, /sbin o / archivo, haga esto:
usr/bn. Para aadir este directorio a su PATH de manera permanente, aada
un lnea como la siguiente al final de su archivo .bashrc: admin serverl : ls -1 > files.txt 2 >&l

export PATH=$PATH /usr/local/bin


:
&1 significa "el mismo lugar que la salida
El estndar", que es el caso de
files, txt. Un atajo para el comando anterior es:

admin@serverl ~$ ls
: -1 >& files.txt

La redireccin de E/S y las tuberas son innovaciones Unix que Microsoft y Use > > en lugar de > donde quiera aadir en lugar de sobrescribir.
muchos otros han copiado descaradamente. La Shell le da acceso a estas Slo se suele redirigir la salida estndar. Aqu mostramos un ejemplo que busca
funcionalidades de manera muy intuitiva. los nombres de los archivos en los que est contenida la cadena foo:
Cuando un comando en la consola o en una ventana de texto,
est tecleando
sus dedos son la entrada estndar de comandos y sus ojos leen la salida estndar admin@serverl ~$ ls -1 > files.txt
:

adminserverl ~$ grep foo < files.txt


:

o la salida de errores estndar. No obstante, puede producir entradas o capturar


adrain@serverl ~$ rm files.txt
:

salidas en sustitucin de sus dedos o sus ojos con un archivo. Ejecute el comando
Is con la pantalla como salida estndar
y luego redirjala (con >) a un archivo: El primer paso crea el archivo temporal files txt. El segundo paso lo lee, y
.

en el tercero somos limpios y lo borramos. La vida de los archivos temporales es


admin@serverl ls:

corta pero productiva.


helio
admin@serverl ~$ ls:
> files.txt estos tres tipos de pasos en uno y evitar el archivo tempo-
Podemos combinar
admin@serverl ~$ :
ral conmejor invencin de Unix, la tubera. Lina tubera conecta la salida de
la
un comando con la entrada de otro comando. El smbolo de la tubera es y
En el segundo ejemplo, la redireccin sucede silenciosamente. Si ocurre algn
j ,

tambin un > o < y consigue mucha velocidad. La salida estndar del primer
error, no obstante, debera verlo en la pantalla en lugar del archivo (es decir, por
comando se convierte en la entrada estndar del segundo comando, simplifi-
qu se ha producido el error):
cando nuestros primeros pasos:
adminOserverl ~$ ls ciao > files.txt
:

ls: ciao: No such file or directory admin@serverl : ls -1 |


grep foo
admin@serverl ~$ :

Tambin puede encadenar varias tuberas:


Tenga en cuenta que si el archivo files.txt existe antes de ejecutar estos
admin@serverl : ls -1 grep foo wc -1
comando. Se sobrescribir. Si quiere aadir nuevo contenido al archivo en lugar | |

de sobrescribirlo, use los caracteres (>>): Este comando contar el nmero de veces que la cadena foo aparece en algu-
admin@serverl ~$ ls -1 >> files.txt
:
no de los archivos del directorio.

Si files txt no existe, se crear antes de que se produzca la anexin. Tam-


.

bin puede redirigir los errores estndares. Aqu se muestra un comando que
Variables
redirige la salida estndar y la salida de errores estndar al mismo tiempo:
bash es un lenguaje de programacin y los lenguajes de programacin tienen
admin@serverl ~$ ls -1
:
> files.txt 2> errors.txt funcionalidades comunes. Una de las ms bsicas es la variable: un smbolo que
262 Scripting Scripting 263

contiene un valor. Las variables bash son cadenas a menos que especifique otro $0 es el nombre del script. La variable $* contiene todos los argumentos
variable
tipo con la sentencia "declare". No necesita declarar o definir variables bash antes como un valor de cadena. Estas variables pueden pasarse junto con los comandos
de usarlas, como sucede en otros muchos lenguajes. que el script ejecuta:

Un nombre de variable es una cadena que comienza con una letra y contiene
admin@serverl ~$ cat files
:

nmero o guiones bajos (_). El valor de una variable se obtiene poniendo el


letras, # /bin/bash
i

smbolo $ antes del nombre de la variable. Aqu mostramos un shell scrpt que ls -Alv $*
asigna un valor de cadena a la variable hw y luego la imprime: admin@serverl ~$ ./files
:
helio hello2 today
-rwxr-xr-x 1 admin admin 48 2006-07-25 13:25 helio
# /bin/bash
-rwxr-xr-x 1 admin admin 51 2006-07-25 14:45 hello2
!

hw= "helio world" -rwxr-xr-x 1 admin admin 45 2006-07-25 14:49 today


echo $hw adminoserverl

La variable hw se crea con la asignacin de la lnea 2. En la lnea 3, los conte- La variable especial $$ contiene el ID de proceso actual. Puede usarse para
nidos de la variable hw sustituyen a la referencia $hw. Debido a que bash y otras crear un nombre de archivo temporal nico. Si se estn ejecutando varias copias
en blanco (espacios y tabulaciones) como un separador del mismo script al mismo tiempo, cada una tendr un ID de proceso diferente
shell tratan los espacios y
de parmetros en lugar de cmo parmetros normales, para conservarlos debe tambin un nombre de archivo temporal distinto.
encerrarlos con comillas dobles (") o simples {'). La diferencia es que las varia- Otra variable til es $?, que contiene el valor que devolvi el comando ejecu-
bles shell (y otra sintaxis especial) se expanden con comillas dobles y se tratan tado ms recientemente. Usaremos esto ms tarde en este captulo para compro-
literalmente como comillas simples. Vea la diferencia en la salida de los dos co- bar el xito o el fallo en la ejecucin de un programa desde un script.
mandos echo del siguiente script:

admin@serverl ~$ cat hello2


:

# /bin/bash
!

hw= "helio world"


echo "$hw" Hemos introducido los elementos bsicos para bash que usar a diario a la
echo '$hw' hora de ejecutar comandos interactivos. Ahora, veamos algunas cosas que le ayu-
admin@serverl ./hello2
helio world
darn a escribir Scripts efectivos.
$hw
admin@serverl ~$ :

Puede asignar la salida estndar de un comando a una variable con la sintaxis


Las expresiones bash contienen variables y operadores como = = (igual) y >
$(comando) o 'comando' (usando las tildes):
(mayor que). Estos actualmente se usan en comprobaciones, que pueden
admin@serverl cat today especificarse de varias formas:
# /bin/bash
!

dt=$ (date) test Sfile == "test"


dttoo= 'date [ $f ile == "test" ]

echo "Today is $dt" [ $f ile == "test "


[ ]

echo "And so is $dttoo"


admin@serverl ~$ ./today
: Si usa el comando test, recuerde que algunos smbolos tienen mltiples sig-
Today is Tue Jal 25 14:56:01 CDT 2006 nificados (por ejemplo, en una seccin anterior, hemos usado > para la redireccin
And so is Tue Jul 25 14:56:01 CDT 2006
de la salida) por lo que necesitan ir entre comillas. No tiene que preocuparse
admin@serverl ~$ :

sobre las comillas si usa el corchete o el doble corchete. Los dobles corchetes ha-
Las variables especial representan parmetros de lnea de comandos. El carc- cen lo mismo que uno slo y un poco ms, por lo que es seguro usar dobles
ter $seguido por n parmetros de la lnea de comandos, empezando por 1. La corchetes con sus expresiones, bash tiene algunos operadores tiles:
)
) :::: ) " " )

Scripting Scripting

-a file # true si el archivo existe


-d file # true si el archivo existe y es un directorio
-f file # true si el archivo existe y es un archivo
-r file # true si el archivo existe es legible Puede ejecutar diferentes porciones de cdigo dependiendo del resultado de
y
-w file # true si el archivo existe y se puede escribir las comprobaciones. Bash usa la sintaxis if ...f (sentencia condicional) con elif
-x file # true si el archivo existe y es ejecutable como opcional y la seccin else:

if expressionl ; then
(commands)
elif expression2 then
bash est bastante inclinado al tratamiento de texto como comandos, (commands)
parmetros y nombres de archivos. Puede evaluar las expresiones aritmticas
elif expressionN ; then
normales (usando *,/ y otros operadores) pero encerrndolos entre un par
commands
(

de parntesis: ((expresin)). Debido a que muchos caracteres aritmticos -inclu- else (commands)
yendo *, (, y se interpretan de manera especial por parte de la shell, es mejor
)
fi
entrecomillar los parmetros de las shell si se pretende que sean tratados como
La construccin then al final de una lnea tambin puede expresarse como
expresiones matemticas en el script:
;

un then plano en la lnea siguiente:

admin@serverl ~$ cat arith :

if expression
# /bin/bash
!

answer=$ $* then
( ( )

echo Sanswer commands


(

admin@serverl ./arith " (8 + 1) * <7 -1) - 60 fi


-6
adminOserverl ~$ ./arith "2**60" :
Si est en el mismo directorio que el script helio que hicimos antes, pruebe esto:
1152921504606846976
adm.in@serverl ~$ :
admin@serverl ~$ if [ -x helio :
[ ]]
> then

> echo "helio is executable"


La ltima versin de bash soporta los enteros de 64 bits (desde -
> fi
9223372036854775808 hasta 9223372036854775807). Las versiones ms an- helio is executable
tiguas soportan slo enteros de 32 bits (con un rango desde -2147483648 hasta admin@serverl ~$ :

2147483647). Los nmeros en coma flotante no se soportan. Los scripts que


necesitan coma flotante u operadores ms avanzados pueden usar un programa Aqu mostramos un script que busca en el archivo /etc/passwd un nombre
externo como be. de cuenta:

En puede usar variables con


las expresiones aritmticas, el carcter $ que de- # /bin/bash
!

bera usarse para sustituir sus valores por otras opciones: USERID= " $1
DETECTED=$ egrep -o "$USERID: " < /etc/passwd
( )

admin@serverl cat arithexp if -n ${DETECTED} " ]]


[ [ then ;

# /bir./bash
!
echo "$USERID is one of us :-)"
a=$l else
b=$ a+2 ( ( )
echo " $USERID is a stranger :-("
echo "$a + 2 = $b" fi
c = $(a*2 ) (

echo $a * 2 = $c" Llame a este script friendf oribe, hgalo ejecutable y ejectelo primero con
adminOserverl ./arithexp 6 una cuenta del sistema (root) y luego con otra cuenta (sasquatch):
6 + 2 = 8
6 * 2 = 12 admin@serverl ~$ /friendorf oe root :
.

admin@serverl ~$ root is one of us :-)


266 Scripting Scripting 267

admin@serverl ~$ /friendorfoe sasquatch


: .
rmdir: hello2': No such file or directory
l

sasquatch is a stranger - :
(
adinin@serverl mkdir hello3
:

admin@serverl ./delete hello3


rm: cannot remove 'hello3': Is a directory
El primer parmetro se asigna a la variable shell USERID. El comando egrep se directory hello3 deleted
ejecuta con $() para asignar la salida a la variable shell detectada, egrep ~o impri- adral n@serverl ~ :

me slo la cadena que coincide, en lugar de la lnea entera. " ^ USERID:" coincide
con los contenidos de la variable USERID slo si los contenidos de la variable Usando estos mensajes de error, vamos a intentar arreglar el script. Primero,
aparecen al inicio de una lnea y vienen seguidos despus por un punto. La ex- vamos a usar redireccin de E/S para guardar ios resultados en un log y en archi-
presin if est encerrada en corchetes dobles para contenerla, evaluarla y devol- vos de error que podemos revisar cuando tengamos un hueco. Luego, capturare-
}
ver el resultado. La expresin -n " $ { DETECTED " devuelve true si la variable mos el valor del comando rm para generar un mensaje de logro o de fallo. Tambin
shell DETECTED no es una cadena vaca. Finalmente, la variable DETECTES est capturaremos la fecha y la hora actual para incluirlos en el log de salida:
entrecomillada ("$ {DETECTED}") para tratarla como una siguiente cadena. All
admin@serverl -$ cat removefiles
:

donde la sentencia if coge una expresin, puede poner un comando o una se- # /bin/bash
!

cuencia de comandos. Si el ltimo comando de la secuencia tiene xito, la senten- # removefiles deletes either files or directorios
cia if considera que la expresin ha devuelto un valor verdadero. S el ltimo echo "$0 ran at" $(date) >> delete.log
if rm $1 2 >> delete~err.log
comando de la secuencia falla. Se considera que la expresin devolvi un false, y then
se ejecutar la expresin else. Veremos ejemplos en las siguientes secciones. echo "deleted file $1" >> delete.log
elif rmdir $1 2 delete-err.log
then
echo "deleted directory $1" >> delete.log
else
Vamos a seccionar un script que se supone que borra su parmetro (un archi- echo "failed to delete $1" >> delete.log
fi
vo o un directorio) pero tiene algunos problemas:

El script todava tiene algunos fallos: no comprueba si el archivo existe y no


admin@serverl ~$ cat delete
:

# /bin/bash
I
distingue entre archivos y directorios. Podemos usar algunos operadores de los
if rm $1 ya mencionados para arreglar estos problemas:
then
echo file $1 deleted admin@serverl cat removefiles
else ff/bin/bash
!

if rmdir $1 # removefiles deletes either files or directories


then echo "$0 ran at" $ (date) >> delete.log
echo directory $1 deleted if [ ! -e $1 ]

fi then
fi echo "$1 does not exist" >> delete.log
elif f $1 [ ]

El script est archivo que se le ha pasado como parmetro


intentando eliminar el then
echo -n "file $1 " >> delete.log
usando rm e imprimir un mensaje diciendo que se ha logrado. Si rm falla, el
if rm $1 2 >> delete-err.log
script asume que el parmetro se refiere a un directorio e intenta ejecutar el
then
comando rmdir. echo "deleted" >> delete.log
Aqu mostramos algunos resultados: else
echo "not deleted" >> delete.log
fi
admin@serverl ~$ ./delete hello2
:

file hello2 deleted elif -d $1 [ ]

admin@serverl ~$ ./delete hello2


:
then
echo "directory $1 >> delete log
.

rm: cannot remove hello2': No such file or directory


Scripting Scripting

if rmdir $1 2>> delete-err.log echo -n "directory $1 " >> delete.log


then if rmdir "$1" 2>> delete-err.log
echo "deleted'' >> delete.log then
eise echo "deleted" >> delete.log
echo "not deleted" >> delete.log else
fi echo "not deleted" >> delete.log
fi fi
fi
Esto parece muy bonito, pero todava hay ms dificultades: qu pasa si ei
archivo o el directorio contiene espacios? (Est garantizado que los ver en siste- Ahora, por ltimo, cuando ejecute el comando:
mas como Windows o Mac.) Cree un archivo llamado my file y luego intente admin@serverl -$ ./removefiles "my file"
:

eliminarlo con nuestro script:


la ltima lnea de dele te log ser: .

admin@serverl : /removef ilea my file


file my file deleted
La ltima lnea de de le te log contendr: .

my does not exist

Puesto que no hemos entrecomillado el nombre del archivo, la shell dividir Si quiere hacer algo ms de una vez, necesita un bucle, bash tiene tres tipos de
my y file en dos variables $1
y $2. Por lo que debemos intentar mantener my file bucles: for, while yuntil.
en $ 1 El bucle for es amigable y muy potente, tiene esta apariencia general:

admin@serverl ~$ /removef iles "my file"


:
. for arg in list
./removef iles [: my: binary operator expected
: do
./removef iles [: my: binary operator expected
: commands
done
Ahora hemos incluido la cadena my file en la variable shell $ 1 pero necesita-
Ejecuta una accin (que puede ocupar tantas lneas y comandos como quiera)
,

mos quitarle las comillas dentro del script para que las comprobaciones y las
eliminaciones funcionen bien: especificada entre do y done para cada elemento de una lista. Cuando los co-
mandos se ejecutan, pueden acceder al elemento actual de la lista a travs de la
admin@serverl ~$ cat removef iles
: variable $arg. La sintaxis puede ser un poco confusa al principio: en la sentencia
# /bin/bash
!
for debe especificar arg sin el smbolo del dlar, pero en los comandos debe
# removefiles delates either files or directories
especificar $arg con dicho smbolo.
echo "$0 ran at $(date) >> delete.log
if [ ! -e "$1" ]
Algunos ejemplos sencillos son:
then
echo "$1 does not exist" >> delete.log admin@serverl ~$ for stooge in moe larry curly
:

elif -f "$1"
[ ]
> do
then > echo $ stooge
echo -n "file $1 " >> delete.log > done
if rm "$1" 2 >> delete-err.log moe
then larry
echo "deleted" >> delete.log curly
else
admin@serverl ~$ for file in *
echo "not deleted" >> delete.log
fi > do
elif -d "$l"
[ ]
> ls -1 $f ile
then > done
270 Scripting Scripting

-rw-r--r-- 1 admin admin 48 2006-08-26 14:3.2 helio while true


[ [ ] ]

do
admin@serverl ~$ for file in $(find
:
/ -ame \*.gif) echo -n "Your commmand ($gameover to quit)? "

> do
read cmd
> cp $file /tmp if [[ $cmd == $gameover j) then break; fi ;

> done $cmd


done
El bucle loop se ejecuta mientras que la condicin de prueba sea cierta:
Para saltarse el resto del bucle y volver al inicio, use continu:
whiie expression
do
# /bin/bash
stuff !

gameover="q"
done
while true
[ [ ]

do
Aqu le mostramos un script de ejemplo que usa expresiones aritmticas que echo -n "Your commmand ($gameover to quit)? "
ya se han mencionado para crear un bucle while al estilo C (las sangras no son read cmd
necesarias, pero nos gustan): if [[ $cmd = $gameover ]]; then $cmd; continu; fi
!

.break
# /bin/bash
!
done
MAX=100
((cur=l)) # Treat cur like an integer
while (cur < MAX)
(

do
echo -n "$cur "
(cur+=l) { # Increment as an integer
)
Los shell scripts a menudo se usan para juntar programas. Un ejemplo muy
done comn en Linux es la definicin de tareas cron. cron es el planificador de tareas
estndar de Linux. Si quiere que algo suceda el tercer martes de cada mes a la
El bucle until es el opuesto al while. Itera hasta que la condicin de prueba
1:23, puede hacer que una tarea cron lo haga por usted y as ahorrarse la mal-
sea cierta:
humorada respuesta que obtendra por parte de un ser humano. El demonio cron
until expression comprueba cada minuto si es hora de hacer algo, o si alguna especificacin de
do tarea cron ha cambiado. Puede especificar las tareas cron editando el archivo
stuff crontab. Puede ver el contenido de su crontab, si es que hay algo, de esta forma:
done
admin@serverl ~$ crontab -1
:

Un ejemplo es:
no crontab for admin
# ! /'bin/bash
Para editar su crontab, introduzca:
gameover="q"
until ([ $cmd == $gameover ]]
admin@serverl ~$ crontab -e
:

do
echo -n "Your commmand ($gameover to quit)? "

read cmd Cada lnea de un archivo crontab contiene la especificacin del da/hora y un
if ti $cmd = $gameover ]]; then $cmd; fi
! comando en este formato:
done
minuto hora da_del mes mes da_de_la_s emana comando
Para escapar de un bucle, use break. Vamos a reescribir nuestro ejemplo de
until como un bucle while con un break:

Esto requiere algo ms que una pequea explicacin:

# ! /bin/bash
9 minuto es un valor entre 0 y 59.
gameover-- "q" hora usa de 24 horas es un valor entre 0 23.
el reloj y y
272 Scripting Scripting

* da_del_mes es un valor entre 1 y 31 como realizar clculos aritmticos son ms duras, puesto que el texto necesita
* mes un nmero entre como protegerse de la divisin de palabras y de la expansin mediante *. En shell Scripts
es 1 y 12 o un nombre Febrero.
9
da_de_la_semana es un nmero entre 0 y ms complejos, la pila de parntesis, corchetes y otros smbolos puede llegar a ser
7 (0 o 7 es domingo, 6 es sba-
catica.
do) o un nombre como martes.
En tiempos pasados (cuando tenamos ceros y unos, y podamos sentirnos
8
da del mes y da de ia semana funcionan como una QR, que puede
lo
afortunados por tener unos) los artculos how-to a menudo proporcionaban
provocar sorpresas.
grandes shell Scripts a los usuarios: para descargar y compilar paquetes, hacer
Por ejemplo, si cada campo contiene un 1, cron ejecutar e! comando en
copias de seguridad, etc. Hoy en da, es preferible hacer estas tareas usando len-
Enero, pero tambin los lunes. Normalmente, la lnea crontab contiene un
guajes de script ms avanzados, por varias razones:
solo valor especfico en estos campos.
Con el tiempo, aplicaciones como adduser y apt-get han automatizado
0
En un campo, un valor significa una coincidencia exacta; por ejemplo,
algunas tareas tradicionales de los shell Scripts.
un 1 en el campo mes significa slo Enero.
a Los shell scripts no son fciles ni de ampliar ni de mantener.
s
Un asterisco (*) significa cualquier valor.
* Dos valores separados por un guin indican un rango. Es decir, Los shell scripts son ms lentos.
1 1-12 en
el campo mes significa desde Noviembre hasta Diciembre. La sintaxis Shell induce a errores.
* Para especificar ms de un valor, separe los valores con comas. Una lista Perl inicialmente vino a llenar el hueco para los administradores que busca-
de meses 2, 3, 5-6 significa Febrero, Marzo y desde Mayo hasta Junio. ban herramientas ms productivas, pero ahora PHP le ha arrebatado el nicho
0
Un modificador debe llevar valores y una barra inclinada (/), c indicar Web, y Python ha ganado reputacin y productividad. Escribiremos una aplica-
cuntas unidades se incrementan entre valores. Un valor de mes de */3 cin en cada uno de estos lenguajes, algunos otros como ruby y Tcl tambin
significa cada 3 meses. Un valor para mes de 4-9/2 significa los me- estn disponibles en Linux.
ses 4, 6 y 8. Nuestra aplicacin buscar en el archivo /etc/passwd el nombre, ID de usua-
La shcll ejecuta los comandos, por lo que puede usar las funcionalidades des- rio, tallao cualquier cosa que haya all. Ver cmo abrir un archivo, leer regis-
critas en este captulo. tros, parsear formatos, buscar patrones e imprimir patrones. Luego buscaremos

Algunos ejemplos que usan comandos directos en lugar de formas de evitar parte de este trabajo puesto que sudor !- productividad. Ser
Scripts son:
capaz de aplicar estas tcnicas a otros archivos, como logs o pginas Web. Esto es
5 * * *
rm /tmp/*.gif # elimina todos los archivos GIF cada 5 minutos
* un ejemplo de reutilizacin y seguramente ya lo haya hecho otras veces.
* * *
rm -v / tmp/* gif >> /tmp/gif.log # lo mismo, pero quedando
5 *
. Inventmonos algunos requisitos para nuestras aplicaciones y expresmoslos
registrado en un log
en forma de pseudocdigo:
Cuando cron ejecuta el comando, enva por correo electrnico lasalida estndar
leer una cadena de bsqueda introducida por el usuario
y de errores estndar al propietario del archivo crontab. Para evitar que
la salida
abrir el archivo
el correo se sature con correos, puede redirigir la
salida estndar y la salida de por cada lnea:
errores estndar a otro lugar: parsear los campos (columnas)
buscar la coincidencia entre los campos
command > /dev/null 2>&1 si hay alguna coincidencia
imprimir los otros campos en un formato legible

En momento, muchos programadores se habran puesto ya a teclear (sin


este
ni siquiera haber ledo los requisitos o el formato de los datos). Los lectores de
este libro son ms disciplinados, adems de ms avispados. Han tenido que co-
El principal uso de una shell es ejecutar comandos y trabajar con archivos, rregir los fallos que otros programadores han cometido y no quieren repetir es-
y
las shells fueron diseadas para hacer estas operaciones ms fciles. Otras tareas tos mismos errores.
Scripting Scripting

Luego, restringiremos la bsqueda a las lneas en que el valor del campo uid
es mayor que 500. En nuestro caso, ID de usuario normales empiezan por el
El archivo de contraseas a menudo contiene cuentas estndar del sistema 501, por lo que excluiremos cuentas del sistema y de otros autmatas.
adems de la cuenta de root, cuentas de aplicaciones como Apache y cuentas de En este punto, estaremos ya cansados de los pasos previos, por lo que busca-
usuarios. Aqu mostramos porciones de dicho archivo: remos algunas herramientas que puedan hacer este trabajo por nosotros.
# System
root x 0 0 root /root /bin/bash
: : : : : :

bin x 1 1 bin /bin /sbin/nologin


: : : : : :

daemon :x: 2:2: daemon /sbin / sbin/nologin : : La mayora de los lenguajes ofrecen libreras de funciones para varias tareas.
Los programas desempean esta funcin para Ja shell, y los codificadores de
# Applications
postgres :x 26 26 PostgreSQL Server /var/l.ib/ pgsql /bin/bash
:
shell Scripts expertos estn familiarizados con la mayora de las utilidades Linux
: : : :

apache :x: 48 48 Apache /var/www: /bin/false


: :
:
(cat, head, tai!, awk, cut, grep, egrep y otros). Usaremos algunas de estas para
nuestro bash script.
# Users
adedarc x 500 500 Alfredo de Darc /home/adedarc /bin/bash
: : : :
Aqu mostramos una versin rpida y poco legible (f induser sh) que lee la .

cadena de bsqueda del usuario como parmetro, busca coincidencias en cual-


:

rduxover :x: 501 501 Ransom Duxover /home/rduxover /bin/bash


: :
: :

cbarrel :x 502 502 .-Creighton Barrel /home/cbarrel /bin/bash


: :
: :
quier lugar de la lnea e imprime cualquier lnea que coincida:
cmaharias x 503 503 C Maharias /home/cmaharias /bin/bash
: : : :
: :

pgasquette :x: 504 504 Papa Gasquette /home/pgasquette /bin/bash


: :
: : # /bin/bash
!

bf rapples x 505 505 Bob Frapples /home/bf rapples /bin/bash


: : : :
: : grep -i "$1" /etc/passwd
admin@serverl ~$ chmod +x f induser. sh
:

Los campos separados por puntos son: admin@serverl /f induser sh alf


: . .

adedarc :x: 500: 500: Alfredo de Darc /home/adedarc /bin/bash : :


0
Nombre de cuenta,
0
Contrasea encriptada, o x si est usando /etc/shadow. Sera ms rpido si solo tecleramos:
8
User ID (uid).
Admi.n@serverl ~$ grep -i alf /etc/passwd
:

* Group ID (gid).
Pero qu pasa si alf tambin coincide con una cuenta del sistema llamada
0
Nombre completo o descripcin.
gandalf?, o una cadena en algn otro campo? Si queremos restringir la bsque-
Directorio personal.
da al campo nombre para cuentas de usuarios normales (por ejemplo, cuentas
8
Shell.
con ID de usuario mayores que 500), nuestro script va a crecer un poquito.
Estamos interesados en el quinto campo (nombre completo o descripcin). En Si profundizamos un poco en la documentacin bash descubriremos que bash
losantiguos Unix, este campo se llamaba gecos, por razones que estaban obsoletas puede dividir la entrada en caracteres que no sean espacios, usando la variable
incluso entonces. IFS. En la siguiente versin del script, leemos el archivo /etc/passwd lnea por
lnea, dividiendo cada lnea en variables de campos. Si encontramos una coinci-
dencia, necesitamos reconstruir la lnea para imprimirla en su forma original:

# /bin/bash
Empezaremos cada una de las siguientes secciones con un script mnimo que !

pattern=$l
busca una cadena en el archivo /etc/passwd e imprime la lnea que coincida. I FS= "
:

Sabemos que esto es demasiado grande, pero queremos que lo que ms nos inte- while read account password uid gid ame directory shell
resa es que el script funcione. do
# Exact case-sensitive matches only!
Luego, dividiremos las lneas de entrada en campos y restringiremos la bs- if $name == $pattern
[ (
then ] ] ;

queda de patrones al campo gecos que contiene nuestros nombres de usuario. echo Saccount $password $uid $gid $name $directory $shell
: : : : : :
Scripting 277

fi
while {<>) {
done < /etc/passwd if /$pattern/i)
( {
print
Pero ahora tenemos
un problema con la bsqueda de coincidencias, al contra- }

rio que grep, bash no tiene una bsqueda parcial de cadenas que sea sensible a }

maysculas y a minsculas. Tendremos que usar un patrn de bsqueda ms son muy complicados, pero otros han
Muchos elementos de la sintaxis de Perl
sofisticado con ayuda externa, egrep:
sido heredados de la sintaxis de Shell (o de otras herramientas Unix comunes) y
# /bin/bash
!
por tanto no son tan difciles de recordar una vez que conoce esas herramien-
pattern=$l tas. En particular, puede ver sentencias while e if en el script anterior, y se
IFS= :

comportan de la misma forma en que lo haran los equivalentes Shell. La sin-


while read account password uid gid ame directory shell
do
taxis o es tambin una herencia de la < redireccin > shell; provoca que cada

if [[ $ {echo $name egrep -i -c "Spattern") ~gt 0 ]]; then iteracin de un bucle while lea una lnea de la entrada. Fjese en que a diferen-
cia de bash, las variables en Perl necesitan el $ inicial incluso cuando est asig-
|

echo " $account $password $uid $gid $name $directory $shell


: : : : : :

fi nando valores. La sentencia de impresin muestra lo que <> encuentra.


done < /etc/passwd
Perl tiene una forma alternativa de sintaxis que ahorra unos cuantos caracte-

Para nuestro script final, aadiremos una comprobacin de los nmeros uid:
# /usr/bn/perl
# /bin/bash
!

my $pattern = shift;
!

pattern=$l
"
while (o) {
I FS = " :

while read account password uid gid ame directory shell print if /$pattern/i;
do }

# Exact matches only!


El script (llamado finduser.pl) asume que el archivo de contraseas se lee
if [[ $uid -gt 500 && ${echo $name egrep -i -c "$pattern")
entrada estndar, por lo que debera ejecutar algo como esto:
|

-gt 0 J then] ;
desde la
echo " $account $password $uid $gid $name $directory $shel 1
: :
/ induser .pl alf < /etc/passwd
: : :

fi
admin@serverl ~$ :
.

done < /etc/passwd


La siguiente versin abre el archivo de contraseas directamente:
Si ejecuta un shell script con una opcin -v o -x, bash imprimir cada co-
# /usr/bin/perl
!

mando antes de ejecutarlo. Esto le ayudar a ver lo que actualmente est hacien- my $fname = "/etc/passwd"
do el script. my $pattern = shift;
open(FILE, $fname) or dieCCan't open $fname\n");
while (<FILE>) {
if (/$pattern/i) {
print
Perl es conciso, y es realmente bueno trabajando con texto. Un equivalente
para nuestro primer bash script es: }

cise (FILE)
admin@serverl ~$ perl -ne 'printf if 7al/i' /etc/passwd
:

Para restringir las coincidencias al nombre del campo como hicimos en la sec-
/patrn/ coincide con la cadena de bsqueda mientras que ignora si son
El i
cin bash, jugamos con algunas de las fortalezas de Perl:
maysculas o minsculas. Aqu mostramos un equivalente a la versin del script
que usaremos como programa que cumple nuestros otros requisitos. # /usr/bin/perl
!

my $fname = "/etc/passwd"
# /usr/bin/perl
!
my $pattern = shift;
rny$pattern = shift; open FILE, $fnarne) or dieCCan't open $fname\n")
( ;
; ; ;; ) ;

Scripting

while <FILE> (
) {
# /usr/bin/perl
!

$line = $_;
$pattern = shift;
@fi.elds = split/:/;
while {fields = getpwent) {
if ($f ields [4] =~ /$pattern/i> { if ($f ields [6] =~ /$pattern/i and $f ields (2] > 500) {
print $line; print "$f ields [6] \n"
}
}
}
1
cise (FILE)

El parmetro proporcionado por el usuario se lee en la variable Spattern usando


El script PHP
lasentencia shft. El script tambin define otro tipo de variable: un vector lla-
mado @fields. La funcin de divisin de Perl pone cada elemento separado por los PHP puede por un servidor Web (usando CG) o de manera aut-
ser ejecutado
dos puntos en una celda del vector. Podemos extraer el elemento nmero 4 (que noma (usando CU). Nosotros usaremos la versin CLI. Si no tiene la versin CU,
realmente es el quinto elemento, porque los elementos se empiezan a numerar puede instalarla en sistemas basados en Debian con apt-get install php4-cli.*
desde o) y compararlo sin atender a maysculas ni minsculas con el parmetro Nuestro primer script PHP se parecer mucho a los primeros script Perl:
proporcionado por el usuario.
# /usr/bin/php
Todos estos Scripts han necesitado leer lneas de texto y buscar patrones, De-
!

<?
bido a que /etc/passwd es un archivo muy importante en Linux, se le debera $pattern = $argv[lj;
haber ocurrido pensar que alguien pudiera haber automatizado este trabajo. Afor- $file = fopen "/etc/passwd"(
"r"); ,

tunadamente, as ha sido: el viejo Perl ofrece una funcin llamada getpwent que while ($line = fgets($file, 200 )) {

if (eregi (Spattern, $line)


devuelve el contenido de /etc/passwd proporcionando una lnea cada vez que
echo $line;
se llama y en la forma de un vector de cadenas. En la siguiente versin de nues-
}

tro script, asignamos a cada campo su propia variable; en la siguiente, usaremos fclose ($f ile)
el vector @.list para capturarlos todos. En cada caso, queremos el campo gecos ?>

(llamado gcos en la documentacin de Perl). Fjese en que este es el campo 6


Gracias a que en su origen era un complemento para pginas Web, PHP supo-
devuelto por getpwent, no el campo 4, porque getpwent soporta otros dos cam-
ne que el contenido por defecto del archivo debe ser interpretado como texto pia-
pos que aparecen en los archivos de contraseas de slo algunos sistemas:
no, y el cdigo PHP se reconoce porque est comprendido entre smbolos <? o
# /usr/bn/perl
! <?php y ?>. Muestra texto en la salida estndar. La funcin eregi hace una com-
$pattern = shift; paracin de expresiones regulares sin tener en cuenta las maysculas y las mi-
while (Snarae, $passwd, $uid, $gid,
nsculas. Debido a que PHP ha tomado cosas prestadas de Perl, no es una sorpresa
{

Squota, $comment $gcos $dir, , ,

$shell, $expire) = getpwent) {


que tenga una funcin de divisin:
if ($gcos =- /$pattern/i) {

print "$gcos\n" ,- # !
/usr/bin/php
}
<?
$pattern = $argv[lj;
$file = fopen "/etc/passwd"
(
"r"); ,

# /usr/bln/perl
!
while ($line = fgets($fiie, 200)} {
$pattern = shift; $f ields = split $line)
while (@fields = getpwent) { if (eregi ($pattern, $fields[4])}
If ($f ields [6] =~ /$pattern/i) echo $line;
{

print "$f ields [6] \n" }

}
fclose ($f ile)
}
?>

Para flagelarnos un poco ms, restrinjamos las bsquedas a los usuarios nor- Pero, podemos invocar una funcin como getpwent de Perl para trocear el
males (uid > 500). Es una adicin fcil. archivo de contraseas para nosotros? PHP no parece tener un equivalente, por
; )) ; : : : )

Scripting Scripting

1que procederemos con parsep para restringir ia bsqueda para los valores uid Python tiene un equivalente a la funcin getpwent de Perl que permite res-
por encima de 500: bsqueda a los campos que contienen nombres. Guarde el siguiente
tringir la
script como finauser . py:
# /usr/bin/php
!

<?
# /usr/bin/python
1

Spattern = $argv[l] ;
import re sys pwd , ,

$file = f open /etc/passwd"(


"r"); ,
pattern = " (?i) " + sys.argv[i]
while ($line = fgets($file, 200 ))
{ for line in pwd getpwal 1 ): . {
$f ields = split " " $line) if re search (pattern 1 ine pw_gecos
( : ,
. )
, .

if (eregi ($pattern, $fields[4]) and $f ields [2] > 500) print line
echo $line;
}

fclose ($f ile) Ahora veamos cmo trabaja:


?>
admin@serverl ~$ :
. /f induser .py alf
( ' adedarc '
,
'x' , 501, 501, 'Alfredo de Darc' ,
' /home/adedarc' , '/bin/bash')

En que hemos imprimido es una lista Python en lugar de


este script, la lnea
los script Python son distintos de los de Perl
y de los de PHP, porque las una cadena, de esta forma queda mejor pintada. Para imprimir la lnea en su
sentencias terminan con espacios en blanco en lugar de con puntos coma o
y formato original, use esto:
llaves al estilo C. Todas tambin tienen sentido. Nuestro primer
las tabulaciones
script Phyton, al igual que nuestros primeros intentos en los otros lenguajes, # !
/usr/bin/python
busca el archivo de contraseas e imprime cualquier lnea que contenga el texto import re, sys, pwd
coinri dente: pattern = " ? i " + sys.argv[l] { )

for line in pwd getpwall ): . (

if re search (pattern line ,pw_gecos)


.

# /usr/bin/python
i
print " " join( ["%s" % v for v in line]
:
.
import re sys ,

pattern . " (?i) " + sys.argv[l]


file = open " / etc/passwd"(
La ltima lnea es necesaria para convertir cada campo en una cadena (pw_uid
for line in file: w
Y P _gkl son enteros) antes de juntarlos en una cadena larga separada
por (:).
if re. search (pattern, line): Aunque Perl y PHP le permiten tratar una variable como una cadena o un nme-
print line ro, Python es ms estricto.

El paso final es restringir todas las bsquedas para que busque en cuentas
Python tiene espacios de nombres (Perl tambin) para agrupar funciones, que
con uid > 500:
es por lo que las funciones del script estn precedidas por cadenas del tipo
sys. y
re.. Esto ayuda a mantener la modularidad del cdigo. La /usr/bin/python
"(i)" en la tercera lnea t !

del cdigo del script hace que la bsqueda no distinga entre


maysculas y mi- import re, sys, pwd "

nsculas, similar a la /i en Perl.


pattern = "{?!)" + sys.argv(l)
for line in pwd getpwall .
( )

La siguiente iteracin divide la lnea de entrada en campos: if line.pw_uid > 500 and re search (pattern line pw__gecos) . . :

print " " join "%s" % v for v in line])


:
.
(
[

# ! /usr/bin/python
import re, sys
pattern = " (?i) " + sys.argvfl)
file = open "/etc/passwd
(

for line in file:


fields = line split .
La eleccin de un lenguaje de programacin, al igual que la eleccin de un
if re. search (pattern, fields [4]): editor de texto o un sistema operativo, depende del gusto. Algunas personas creen
print line que Perl es ilegible, y otras se resisten a usar las reglas de espacios de Python. A
. 1

Scripting

menudo la comparacin no suele ir ms lejos; si no le gusta la remolacha, por


qu comerla. Captulo 1
Si est agusto con el estilo del lenguaje, el criterio ms importante es la pro-
ductividad de la tarea, bash es una forma rpida de crear script cortos, incluso Haciendo copia de seguridad de ios datos
de una lnea, pero se hace ms pesado cuando son cientos de lneas. Perl puede ser
difcil de leer, pero es muy
potente y se beneficia de la gran librera CPAN. PHP
se parece a G, carece de espacios denombres, el cdigo y la salida es amigable, y
tiene algunas libreras muy buenas. Python es quizs el ms fcil de leer
y escri-
bir, lo que supone una ventaja especial para scripts grandes.

Otras lectoras

El apndice contiene algunos scripts ms grandes que pueden ser tiles para
administradores de sistemas. "Linux Shell Scripting with Bash de Ken Burtch
(Sams)" y "Advanced Bash- Scripting Cuide" (http //www tldp org/LDP/abs/
: .

html) son buenos recursos. Si se quiere aventurar con otros lenguajes de script,
cualquier libro con un animal en la cartula ser una apuesta segura (a menos Los ordenadores fallan, los discos se rompen, los chips se funden, los cables
que quiera buscar COBOL en la seccin de nios). tienen cortocircuitos y la bebida cae sobre los aparatos. Algunos ordenadores se
roban o son vctimas de errores humanos. Puede perder ya no slo el hardware y
el software, sino lo que es ms importante, los datos. Restaurar los datos perdi-

dos lleva tiempo y dinero.


Mientras tanto, sus clientes no estarn contentos, y el gobierno investigar si
los datos que almacena cumplen con la legislacin. Hacer copias de seguridad de
todos los datos importantes es un seguro barato contra potenciales desastres que
pueden salir muy caros, y la continuidad comercial requiere un plan de salva-
guarda y restauracin.
En este captulo cubriremos varias herramientas para hacer copias de seguri-
dad, pues puede ser til en determinadas circunstancias:

rsync: Suficiente para la mayora de los archivos de usuario; transfiere


archivos eficientemente por una red a otro sistema, desde el cual puede
recuperarlos en caso de que le ocurra un desastre al sistema local.
tar: Programatradicional Unix para crear colecciones comprimidas de ar-
chivos; crea convenientes bloques de datos que puede salvaguardar usan-
do otras herramientas de este captulo.

cdrecord/cdrtools: Graba archivos en CD o DVD.


Amanda: Automatiza las copias en cinta, til en entornos con graneles
cantidades de datos.
MySQJL tools: Ofrece formas para solucionar los requisitos particulares de
las bases de datos.
Haciendo copia de seguridad de los datos Haciendo copia de seguridad de os datos 285

-a:Archivo. Esta opcin cumple la mayora de los requisitos mencionados


previamente, y es ms fcil de teclear y de pronunciar que su equivalente,
-Dgloprt.
6 -b: Hace copias de seguridad de todos los archivos destino en lugar de
Los datos ms para salvaguardar son los datos que es imposible, o
crticos sustituirlos.Normalmente no tendr que usar esta opcin, a menos que
muy costoso, recomponer. Normalmente suelen ser datos de usuario que han quiera mantener las versiones antiguas de cada archivo. Puede provocar
ido creciendo durante meses o aos de trabajo. Normalmente puede restaurar que el servidor de copias de seguridad se sature rpidamente.
los datos del sistema de manera relativamente fcil reinstalando la distribucin
original.
49
-D: Esta opcin se usa cuando se replican sistemas de archivos; no es ne-
cesario para archivos de usuario. Funciona slo cuando rsync se ejecuta
Nos centraremos en hacer copias de seguridad de datos de usuario de equipos
Linux de escritorio. Un servidor de copias de seguridad necesita suficiente espa-
como root. Est incluida en --a.

cio en disco para almacenar todos los archivos de usuario. Se recomienda un


-g: Preserva lospermisos de grupo de los archivos que se estn duplican-
equipo dedicado. Para una oficina grande, los discos deberan tener una configu- do. Es importante para las copias de seguridad. Est incluida en -a.
racin en RAID Redundant Array of Independent Diste) para protegerse contra
(

-H: Preserva los enlaces. Si dos nombres han sido replicados refirindose ai
fallos.
mismo inodo de archivo, esto mantiene la misma relacin en el destino.
La utilidad Linux rsync es una copia de un programa diseado para replicar
Esta opcin hace que rsync vaya ms lento, pero se recomienda su uso.
grandes cantidades de datos. Puede saltarse archivos copiados previamente frag-
y
mentos y encriptar las transferencias de datos con ssh, haciendo copias de segu- -1: Copia enlaces simblicos como enlaces simblicos. Casi siempre tendr
ridad remota con rsync de manera ms rpida ms segura que con herramientas que incluir esta opcin; sin ella, un enlace simblico podra copiarse como
y
tradicionales como cp, cpio o tar. Para comprobar si rsync est en su sistema, un archivo normal. Est incluida en -a.
introduzca: -n: Ejecucin seca: muestra los archivos que se transferirn, pero no mues-
# rsync -~help tra los que se estn transfiriendo.
basht rsync: command not found
-o: Preserva la autora de usuario de los archivos que se estn replicando.
Si ve este mensaje, tendr que conseguir
Es importante para las copias de seguridad. Est incluida en -a.
el paquete rsync. Para instalarlo en
Deban, introduzca:
-p: Preserva los permisos de archivos. Es importante para las copias de
seguridad. Est incluida en -a.
# apt-get install rsync
-P: Activa partial y progress.
Normalmente, har copias de seguridad para preservar los permisos origina-
les. Es decir, necesitar asegurarse de que todos los usuarios tienen cuentas
9
partial: Activa las transferencias de archivos parciales. Si rsync se para,
y
directorios personales en ser capaz de completar el resto del archivo cuando rsync vuelva a iniciar-
el servidor de copias de seguridad.
se.

B
progress: Muestra el progreso en la transferencia de archivos.

-r: Activa la recursividad, transfiriendo todos los subdirectorios. Incluido en


La sintaxis del comando rsync es: -a.

rsync opciones origen destino


rsh= ssh': Usa SSH para transferencia de archivos. Se recomienda su
,

uso debido a que el protocolo de transferencia por defecto (rsh) no es se-


Algunas de las principales opciones de lnea de comandos para rsync son las guro. Tambin puede definir la variable de entorno RSYNCJRSH como ssh
siguientes: para obtener el mismo efecto.
. : S
s

286 Haciendo copia de seguridad de ios datos Haciendo copia efe seguridad de ios datos 287

s -t: Preserva la hora de modificacin de cada archivo. Incluido en -a. La variable de entorno RSYNC__RSH contiene el nombre de la shell que rsync
usar. Por defecto es /usr/bin/rsh, por lo que la cambiaremos por /usr/bin/
-v: Lista los archivos que se estn transfiriendo. ssh.
~vv: Igual que -v, pero tambin lista los archivos que se ignoran. Ejecutar este script replica todos los archivos del directorio personal del usua-
rio que lo ejecuta desde su directorio personal en el servidor de copias de seguri-
-vw: Igual que -vv, pero tambin imprime informacin de depuracin de
dad.
rsync.
Veamos cmo funciona para un usuario de ejemplo (despus de haberse
8 -z: Activa la compresin, ms til sobre Internet que sobre una LAN de autentificado en su escritorio):
alta velocidad.
amy@deskl2 ~$ ./backup
:

Hay muchas ms opciones para rsync que pueden ser tiles en situaciones Password
concretas. Podr encontrarlas en las pginas-manual. building file list . . .

14 files to consider
Despus de las opciones, vienen los parmetros origen y destino. Tanto uno
/
como otro pueden ser rutas locales del ordenador donde rsync se est ejecutando, new- brochare sxw .

las designacin de un servidor (normalmente usado para descargar servidores de .37412 100% 503 91kB/ 0:00:00 (1, 62.5% of 16
.

archivos) o designaciones del tipo user@host:path para ssh. Debido a que rsync sales -plan- 2 006 -08 sxw .

595.13 100% 1 .46MB/S 0:00:00 (2, 68.8% of 16


toma muchas opciones y argumentos muy largos que no cambian regularmen-
sales -plan- 2 006 -09. sxw
te, luego escribiremos un bash script para ejecutarlo. 43900 100% 691. 47kB/ 0:00:00 (3, 75.0% of 16
sales-plan -2006-10. sxw
41285 100% 453 OOkB/s 0:00:00 (4, 81.2% of 16
.

Haciendo un script para copias de seguridad vacation-request sxw .

15198 100% 154 60kB/s 0:00:00 (5, 87.5% of 16


de usuario .

sent 185942 bytes received 136 bytes 24810.40 bytes/sec


total size is 210691 speedup is 1.13
Esta seccin presenta un bash script sencillo que hace una copia de seguri- amy@desk. 12 ~$ :

dad desde el escritorio de un usuario al servidor de copias de seguridad. El nom-


bre del servidor de copias de seguridad est asignado a la variable dest en el rsync nos indica que est considerando 14 archivos. Hace copia de seguridad
script. La variable user est asignada al nombre de usuario de la cuenta que slo de 5, puesto que los otros nueve ya estn en el servidor de copias de seguridad
ejecuta el script, puesto que invoca el comando whoami y captura la salida y no han cambiado.
como cadena. Esta salida muestra que el progreso es del 100 por 100 cuando todos los archi-
El comando cd cambia el directorio actual al directorio personal del usuario. vos estn completos, e indica cunto tardar cada transferencia. En una LAN de
La condicin lgica OR que sigue al comando cd aborta el script si hay algn alta velocidad el tiempo de transferencia ser menos de un segundo para archivos
fallo. El punto {.) especifica que el directorio actual es el parmetro origen. de tamao pequeo o medio.
Para el parmetro destino, especificamos el nombre de usuario y el nombre de En conexiones ms lentas o de archivos muy grandes, ver el estado del pro-
equipo para autentificarse va ssh, seguido de un punto para especificar que el greso que proporciona el tamao y el porcentaje transferido y una estimacin de
directorio personal actual es el destino en el equipo. tiempo que falta hasta completarse.
Este es el script:

# ! /bin/'bash
export RSYNC_RSH=/usr/bin/ssh
dest=backupl
rsync puede ofrecer una de los archivos que hay en el servidor de co-
lista
user=$ (whoami)
cd exit 1
| |
pias de seguridad. Es til para, verificar cuando hay archivos nuevos o impor-
rsync -aHPvz ${ user }@$ dest }:
. { tantes, as como para encontrar archivos que necesitan restaurarse debido a
: - ) " " : :

Haciendo copia de seguridad de ios datos Haciendo copia de seguridad de ios datos

que han estado perdidos o debido a que el usuario necesita recuperar una ver- Para restaurar archivos, simplemente ejecutamos el script, le pasamos los
sin antigua. nombres de los archivos que se van a restaurar como parmetros de lnea de
Para obtener este listado, omita las opciones y los parmetros de destino. Aqu comandos.
mostramos un bash script sencillo que obtiene los resultados deseados: En el siguiente ejemplo, eliminaremos intencionadamente uno de nuestros
archivos y luego veremos cmo se restaura:
# /bin/bash
!

dest=serverl amy@desk.12 ~$ rm sales-plan-2006-10 sxw


: .

user=$ (whoami) amy@deskl2 ~$ . /backrestore sales-plan-2006-10 sxw


: .

cd exit I Password
rsync "${user}@${dest} :
.
more receiving file list ...
1 file to consider
Ejecutar este script produce resultados parecidos al siguiente: sales-plan-2006-10 sxw.

41285 100% 6 56MB/ S


. 0:00:00 {1, 100.0% of 1)
amy@deskl2 ~$ ./backlist :

Password sent 42 bytes received 39299 bytes 6052.46 bytes/sec


drwx 4096 2006/08/09 13:20:41 total size is 41285 speedup is 1.05
-rw 10071 2006/08/09 12:35:21 .bash history amy@deskl2
-rw-r--r-- 632 2006/07/27 23:03: 06 .basn_prof ile
-rw-r--r-~ 1834 2006/07/26 19:59:08 .bashrc Tambin podemos restaurar todos los archivos a la vez usando un punto como
-rwxr-xr-x 108 2006/07/27 23:06:51 .path
nombre de archivo.
-rwxr-xr-x 79 2006/08/09 13:18:34 backlist
-rwxr-xr-x 137 2006/08/09 13 1 9 2 9
: : backrestore
-rwxr-xr-x 88 2006/08/09 13:03:46 backup
-rw-r--r-- 37412 2006/07/17 14 4 0 52
; : new-brochure sxw .

-rw-r- -r~- 59513 2006/07/19 09:16:41 sales-plan-2006- 08 sxw .

-rw-r- -r- 43900 2006/07/19 22:51: 54 sales-plan- 2006 - 09. sxw Las copias de seguridad pueden automatizarse usando script similares a estos
-rw-r- - r- 41285 2006/07/17
--
16:24:19 sales-plan-2006 - 10 sxw .
ejecutados como tareas cron (descritas en el captulo anterior). SSH requiere que
-rw-r~~r- 15198 2006/07/10 14:42:23 vacation-request sxw .

drwx 4096 2006/08/09 13 12:25 se introduzca la contrasea de usuario, por lo que necesitar incluir las claves
.ssh
amy@deskl 2 ~$ : pblicas de sus usuarios en la configuracin SSH para hacer que la autentifica-
cin remota funcione cuando los usuarios no estn presentes (por ejemplo, a las
3:00 a.m.).
Tiene muchas opciones para crear copias de seguridad. Puede ejecutar un script
Ningn sistema de copias de seguridad es bueno si los archivos perdidos no de tarea cron en el servidor diaria o semanalmente, para hacer copias de seguri-
pueden restaurarse. No slo debe estar listo para el caso de que se produzca un dad en otro servidor. Los negocios con oficinas remotas necesitarn hacer copias
desastre, sino que tambin debe comprobar que los planes de recuperacin
y res- regulares de los datos de dichas oficinas por Internet. Las copias tambin se pue-
tauracin funcionarn en caso de necesitarlos. de volcar a un CD o un DVD, a una cinta y despus archivarlas y transportarlas
Nuestro script de restauracin es solamente un poco ms complicado que el a un lugar seguro.
Hemos aadido una forma de especificar los archivos individuales
script previo.
que deben restaurarse:
Archivos lar
# /bin/bash
!

dest=serverl
user=$ (whoami El comando tar crea un archivo a partir de uno o ms archivos o directorios.
cd exit 1
j |
Tambin puede listar todo el contenido de un archivo, o extraer varios archivos y
Eor file in. "$@" do
;
directorios de un archivo. A los archivos tar tambin se les suele llamar tarfile o
rsync -aHPvz "$ (user}@$ (dest }:./${ f ile} 11 "
. /${ f ile}
done tarball.
Haciendo copia de seguridad de los datos Haciendo copia de seguridad de los datos

Un archivo tar ofrece algunas ventajas sobre un directorio con archivos sepa- 9 -v: Al crear o desempaquetar archivos, lista el contenido. Con la opcin -
rados. Por ejemplo, es ms fcil enviarun directorio completo a travs de correo t se ofrecen ms detalles acerca de los archivos listados.
electrnico. Los directorios contienen muchos archivos similares que pueden com- -x: Extrae (lee) archivos desde un archivo existente.
primirse ms eficientemente cuando la compresin opera en todos los datos de
un nico archivo. 9
-z:Comprime o descomprime el archivo usando gzip o gunzip. Los archi-
Un uso comn para un archive tar es ayudar en la distribucin del cdigo vos comprimidos con gzip normalmente tienen el sufijo .gz.
fuente del software libre o de cdigo abierto. En la mayora de los casos, los ar-
chivos tar estn comprimidos con programas como gzip o bzip2. Sin embargo, si
todos los archivos que se estn almacenando estn comprimidos (lo que es cierto Creando un nuevo archivo
en archivos de audio, video y Open Office), comprimir el archivo no producir
mucho beneficio. Puede crear un archive tar slo para guardar el grupo de archivos para sus
Puede llamar a un archivo tar como quiera, pero se usan ciertas extensiones propios propsitos, para enviarlos por correo electrnico, o para hacerlos pbli-
cos (por ejemplo, en un servidor FTP). Algunos comandos tpicos para archivar
de archivo de manera convencional para indicarle a los receptores cmo
descomprimir el archivo.
los documentos de trabajo de un directorio son:
Las extensiones ms comunes son: 9
Para crear el archivo work-docs.tar a partir de ios distintos documentos
de un directorio:
8
.tar: Para archivos tar descomprimidos.
$ tar -cf work-docs.tar work-docs
.tar.gz or .tgz: Para archivos tar que han sido comprimidos con el progra-
ma de compresin gzip. 0
Para crear el archivo comprimido work-docs. tar.gz a partir de los docu-
mentos de un directorio:
.tar.bz2 or .tbz: Para archivos tar que han sido comprimidos con el pro-
grama bzip2. $ tar -czf work-docs . tar .gz work-docs

La sintaxis del comando tar es: * Para crear el archivo comprimido work-docs. tar. bz2 a partir de los docu-
mentos de un directorio:
tar opciones argumentos
$ tar -cjf work-docs tar .bz2 work-docs
.

Las opciones no vienen precedidas por el tradicional guin (-), aunque mu-
chas versiones de tar si aceptan el guin.
Las opciones ms tiles son:

0
-b: Especifica el tamao de bloque (por defecto son 512 bytes). Algunas veces, puede necesitar extraer archivo de un archivo que ya ha crea-

-c: Crea (escribe) un nuevo archivo. do (como una copia de seguridad), a partir de un archivo que alguien le ha envia-
do, o a partir de un archivo que se ha descargado de Internet (por ejemplo, el

-f filename: Lee desdeo escribe en un archivo. Si el nombre del archivo se cdigo fuente de algn tipo de software que necesita).
omite o es el archivo se escribir en la salida estndar o se leer de la
Antes de extraer un archivo, debera listar y revisar todo el contenido. No
entrada estndar. querr sobrescribir accidentalmente los archivos existentes en su sistema con ios
9 -j:Comprime o descomprime el archivo usando bzip2 o bunzip2. Los ar- archivos del archivo, ni volver a tener archivos que haba borrado previamente.
chivos comprimidos con bzip2 normalmente tienen el sufijo .bz2. Los archivos de un archivo deberan estar organizados en un directorio, pero
8
casi nadie lo hace, por lo que tendr que tener cuidado para evitar extraer archi-
-p: Preserva los permisos de archivo.
vos en su directorio actual. Normalmente, es una buena idea crear un nuevo
-t: Lista los archivos en un archive existente. directorio en su equipo en el que extraer el archivo tar. Esto mantiene los archi-
292 Haciendo copia de seguridad de los datos Haciendo copia de seguridad de tos datos

vos extrados separados de los otros archivos, por lo que no llegarn a mezclarse. amy@deskl2 ~$ ls -1 monthly- reports
:

De esta forma se evita que la extraccin sobrescrba archivos existentes. total 228
-rw-r- -r- - 1 amy amy 50552 2006-05-09 11:09 mr-2006 - 04 sxw .

La opcin -t lista los nombres de los archivos y de los directorios que se crea- -rw-r- -r- - 1 amy amy 51284 2006-06-06 15:44 mr-2006 - 05 sxw .

rn al descomprimir el archivo. Aadir la opcin -v incrementa la aparicin de -rw-r- -r- - 1 amy amy 51428 2006-07-06 14:30 mr -2006 - 06 sxw .

mensajes que ofrecen detalles acerca de cada archivo del archivo tar, incluyendo -rw-r- -r- - 1 amy amy 54667 2006-08-07 10:06 mr-2006-07 sxw .

el tamao de cada archivos y su ltima fecha de modificacin. Aqu mostramos


amy@deskl2 : tar -czf monthly-reports-aug. tar .gz monthly-reports
amy@deskl2 : ls -1 monthly-reports- aug tar gz .
.

algunos ejemplos de comandos: -rw-r~-r-~ 1 amy amy 199015 2006-08-14 12:46 monthly- reports -aug tar gz .
.

Para listar los archivos del archivo coliection.tar:


La siguiente sesin shell muestra el listado del contenido del archivo tar:
$ tar -tf coliection.tar
amy@deskl2 ~$ ls -1 monthly-reports-aug tar gz
:
.
.

Para listar los archivos del archivo collection.tar.bz2 con detalles extra: -rw-r r-- 1 amy amy 199015 2006-08-14 12:46 monthly-reports-aug tar gz .
.

amy@deskl2 ~$ tar -tzf monthly-reports-aug tar gz


: . .

$ tar -tvjf collection tar bz2


. .
monthly-reports/
monthly -reports/mr-2006-04 sxw .

0
Para extraer los archivos de coliection.tar en el directorio actual, conser- monthly- reports/mr~ 2006 -OS sxw .

vando los permisos originales: monthly-reports/mr-2006 -06 sxw .

monthly-reports/mr-2006-07 sxw ,

$ tar -xpf collection. tar amy@deskl2 : tar -tvzf monthly-reports-aug. tar .gz
drwxr-xr-x amy/amy 0 2006-08-11 14:15:12 monthly-reports/
I-a opcin ~x extrae los archivos en el directorio actual, tar funciona de -rw~r--r-- amy/amy 50552 2006-05-09 11:09:12 monthly-reports/mr-
manera silenciosa a menos que opcin -v que se usa para
se especifique la 2006 -04 sxw .

listar los archivos. La opcin -p mantiene los permisos originales, por lo -rw-r--r-- amy/amy 51284 2006-06-06 15:44:33 monthly-reports/mr-
2006 05 sxw --
.

que los archivos extrados tendrn los mismos permisos que los archivos
-rw-r--r-- amy/amy 51428 2006-07-06 14:30:19 monthly-reports/mr-
que fueron archivados. 2006 -06 .sxw
Para extraer los archivos de collection. tar. gz en el directorio actual man- i -rw-r--r-- amy/amy 54667 2006-08-07 10:06:57 monthly-reports/mr-
2006-07 sxw .

teniendo los permisos orignales:


amy@deskl2 ~$:

$ tar -xpzf collection. tar. gz


La siguiente sesin shell muestra la extraccin del contenido del archivo tar:
Para extraer los archivos de coliection.tar. bz2 en el directorio actual man-
teniendo los permisos originales: amy@deskl2 : mkdir extract.dir
amy@deskl2 : cd extract.dir
amy d e s k TZ -/extract d i r $ tar -xzf
: . . . /monthly- repares -aug CST gz . .

amy@deskl2 :~ /extrae t .dir$ tar -xvzf . ./monthly-reports-aug. tar .gz


Para listar y extraer los archivos de collection. tar. bz2 en el directorio ac- monthly- reports/
tual manteniendo los permisos originales: monthly-reports/mr-2006- 04 sxw .

monthly-reports/mr-2006 -05 sxw .

$ tar -xpvjf collection. tar. bz2 monthly- reports /mr-2006 -06 sxw .

monthly-reports/mr-2006-07 sxw .

amy@desk!2 -/extract dir$ tar -xvvzf


: . /monthly-reports-aug tar gz
.. .
.

drwxr-xr-x amy/amy 0 2006-08-11 14:15:12 monthly-reports/


amv/amv 50552 2006-05-09 11:09:12 monthly- reports/mr-
La siguiente sesin shell muestra la creacin de un archivo tar a partir de un 2006 - 04 sxw .

directorio de archivos: -rw-r-'-r-- amy/amy 51284 2006-06-06 15:44:33 monthly-reports/mr-


2006- 05 sxw .

amy@deskl2 ~$ ls -di monthly- reporte


:
rw-r--r-- amy/amy 51428 2006-07-06 14:30:19 monthly-reports/mr-
drwxr-xr-x 2 amy amy 4096 2006-08-11 14:15 tnonthly- reports 2006 - 06 sxw .
Haciendo copia de seguridad de los datos Haciendo copia de seguridad de los datos

-rw-r--r-- amy/arciy 54667 2006-08-07 10:06:57 monthly-reports/mr- estn disponibles cuando el lser se dispone a grabarlos, el lser se parar y se
2006 - 07 sxw .
romper as la continuidad del grabado. Los mtodos usados para grabar CD
amy@deskl2 -/exfcract di r$ cd
:
.
fueron diseados para sistemas informticos ms lentos, para maximizar la fia-
amy@deskl2 ~$
:

bilidad de estas grabaciones. Los ordenadores actuales asumen el reto de conse-


guir que no falten datos que grabar y a la vez ser ms rpidos; no obstante
Resumen muchas grabadoras disponen de mecanismos contra la insuficiencia de datos en
el buffer. Los archivos que se grabarn se suelen agrupar en un archivo llamado
Las cosas ms importantes de recordar sobre tar son:
archivo de imagen ISO, que normalmente tiene la extensin .iso. Este archivo se
-c lee sus archivos y crea (escribe) un archivo tar.
graba posterior y directamente sobre el CD-R. Es posible grabar directamente

~x extrae (lee) un archivo tar y escribe sus archivos. sobre el CD-R sin crear un archivo .iso primero, pero este mtodo incrementa el
han combinando estas op- riesgo de que ocurra algo en el computador y el proceso falle.
La mayora de los administradores Unix y Linux
ciones alguna vez. El software necesario para grabarun CD o un DVD en Linux, est ubicado en
un paquete llamado cdrecord en que este paquete puede formar parte de
(fjese
otro llamado cdrtoois). Si este paquete todava no est instalado en su sistema,
debera instalarlo usando los mtodos que ya ha aprendido. En Deban Sarge,
debera ejecutar el comando:
Los CD y DVD grabables, llamados CD-R, DVD- R y DVD+R, le permite guar- # apt-get install cdrecord mkisofs
dar archivos de una forma compacta y conveniente. Pueden usarse para hacer
copias de seguridad que pueden almacenar un sitio, para distribuir software o paquete cdrecord por otro llamado wodim. Otros pa-
Deban 4.0 sustituy el

datos a los usuarios o a los dientes. Un CD-R puede almacenar hasta 700 MR de quetes incluyen dvd+rw-tools (descrito en at http //www
debianhelp co uk/
: . . .

datos, mientras que un DVD-R o DVD+R pueden almacenar 4.7 GB. Tambin burningdvd.htm) y K3b (http: //www. k3b org). .

existe una versin de capa dual para DVD+R, con una capacidad de 8.55 GR.

La diferencia entre un DVD-R y un DVD+R


es la tecnologa usada para ubicar
Accediendo a su unidad CD-R
el mtodos son incompatibles, por lo que si
lser en la pista de grabado. Los dos
su unidad soporta o slo DVD-R o slo DVD+R, deber usar el medio adecuado Linux soporta el grabado en unidades IDE ATAPI CD-R a travs del driver
(existen unidades que soportan ambos formatos, permitiendo usar cualquiera de llamado ide-sesi. La mayora de las distribuciones Linux tambin incluyen este
los dos). driver en el ncleo. Si su sistema no tiene el driver, necesitar cargar el mdulo
Grabar archivos en un CD o DVD no es tan sencillo ni tan flexible como gra- del driver (instalndolo si fuese necesario) o posiblemente recompilar el ncleo.
barlos en un disco duro. Los medios regrabables pueden saltarse algunas limita- El driver ide-sesi emula un dispositivo SCSI por software que est diseado
ciones, pero tienen un coste mayor y una compatibilidad ms reducida. En esta slo para dispositivos SCSI. Su unidad IDE ATAPI CD y su unidad de DVD debern
seccin, nos centraremos en guardar archivos en CD-R. Los mtodos para los
aparecer como si fueran dispositivos SCSI cuando el driver ide-sesi est activo.
DVD son similares. El siguiente comando mostrar los dispositivos SCSI de su sistema, por lo que
Un CD de datos consiste en un vector de sectores de 2048 bytes cada uno. Un podr ubicar el nmero de driver emulador de SCSI de su unidad CD-R. Tambin
sistema de archivos especial conocido como 150-9660 que se usa para organizar se listarn otros dispositivos, incluyendo dispositivos SCSI reales si su computa-
los archivos en el CD por lo que puede leerse en un amplio rango de computado- dor realmente los tiene. Ejecute este comando como root:
res y otros dispositivos. Los reproductores de C D de msica ms modernos tnm
bien soportan CD de datos escritos en e! formato ISO 9660, por lo que pueden # cdrecord -scanbus
acceder a los archivos de msii a en formatos comprimidos como MP.L Los DVD La salida ser similar a esta:
usan un sistema de archivos ms moderno llamado Uti'nrrs. Pisk iorm.il (UDi ).
\k\\"\ 4WIJ.U LSiiih, laTCTrri^nTiTi'ffPTrmTrrD i u muiii'TTrwriv-Fiw
J&#246,-rg Schilling
necesitan que haya un flujo continuo de datos liana la unidad. Si los datos no
: . . . . , d

Haciendo copia seguridad de ios datos Haciendo copia de seguridad de los datos 297
296 ele

sesidev: 'ATA' Pondremos las siguientes lneas de texto en este archivo para que coincidan
devname ATA de la salida anterior generada por cdrecord-scanbus. Necesi-
'
: '
con ios dispositivos
sesibus: -2 target -2 lun: -2
para que coincidan con los de sus propios dispositivos.
:

tar cambiar estos valores


Linux sg driver versin: 3.5.27
Using libscg versin schily-0 8 ' . '
Elijaalgunos nombres para poner en lugar de cd y dvd. Los espacios en blanco
scsibusl entre campos deben ser tabulaciones, no espacios:
1,0,0 100) 'SONY 'CD-RW CRX195E1 ' '
' ZYS5 ' Removable CD-ROM
1.1.0 101) 'DVD-16X 'DVD-ROM BDV316E ' '
'0052' Removable CD-ROM CDR_DEV I CE = c
1 2.0 102 * -1 "
. ) Cd=l ,0,0 - 1 11

1.3.0 103) * dvdl 1,0 -1 -1 ""


1.4.0 104) *
1.5.0 105) *
versin de su ncleo es la 2.6, necesitar especificar el dispositivo con el
Si la
1.6.0 106) *
1,7,0 107) * prefijo ATA; debido al rediseo del driver. En este caso, el archivo de configura-
cin debera quedar:
Busque la descripcin del dispositivo que coincide con su grabador CD-R. Si
tiene ms de un dispositivo, el nombre de la marca y el modelo debera ayudarle CDR_DE V I CE = c d
cd=ATA: 1,0,0 -1 -1
a identificar el dispositivo correcto. La salida debera mostrar ai menos CD-R o -1 -1
dvd =ATA 1 1 0: , ,

CD-RW en la En este ejemplo, nuestra grabadora de CS est en dis-


descripcin.
positivo SCSI emulado 1,0,0. Tambin puede definir la velocidad de grabado por defecto de cada unidad, a la
Si el driver ide-sesi no est instalado o no est activo, puede obtener una sali- derecha despus del nombre del dispositivo. -1 indica que se usar el valor por
da como esta: defecto.
El siguiente nmero es el tamao de buffer FILO, una vez ms, - 1 especifica
Cdrecord-Clone 2.01 i686-pc-linux-gnu) Copyright (C) 1995-2004
(

J&#246 rg Schilling
;
el valor por defecto del sistema Linux. El ltimo elemento de la lnea permite
cdrecord: No such file or directory. Cannot open '/dev/pg*'. Cannot que le pase una opcin especfica del driver; la hemos dejado corno una cadena
open SCSI driver. vaca.
cdrecord: Por possible targets try 'cdrecord -scanbus'
cdrecord: For possible transport specifiers try 'cdrecord dev=help' Las nuevas versiones del soporte cdrecord soportan la opcin driveropts=
cdrecord burnfree para protegerse contra los desbordamientos de buffer.
cdrecord: For more information, install the cdrtools-doc
cdrecord: package and read /usr/share/ doc/ cdrecord/README ATAPI setup . .

Si obtiene este tipo de salida, necesitar activar el driver icle-scsi antes de pasar
a la grabacin. El comando mkisofs un archivo de imagen ISO. Debera contener todos
crea
los archivos que se grabarn en el CD-R. Hay muchas opciones para este coman-

do, pero las ms importantes que usaremos son:

0
-J: Incluye nombres Joliet para compatibilidad con Windows.
Pueden configurarse varios parmetros cdrecord. Por ejemplo, puede configu- -r: Incluye nombres Rock Ridge para compatibilidad Unix/Linux.
rar cdrecord para reconocer los nombres de los dispositivos de grabado (por lo
que no tiene que memorizar los nmeros de dispositivo) y puede designar un 8
-v: Activa el modo de palabra completa que muestra el estado del progre-
dispositivo por defecto. so.

Para configurar cdrecord, autentifquese como (o use su - para cambiar a) o -V id_string: Especifica un ID de volumen para el disco que se crear.
root.Luego cree el archivo de texto con su editor:

-o filename: Especifica el nombre de archivo de la imagen ISO que se est

# vi /etc/def ault/cdrecord creando.


" "

Haciendo copia de seguridad de ios datos Haciendo copia de seguridad de los datos 2

Aqu mostramos un comando de ejemplo para incluir todos los archivos de debido a que a veces, durante la lectura ocurren problemas, debera incluir est
un directorio especfico: opcin para asegurarse de que las unidades ms antiguas tambin pueden leer
sus grabaciones. En caso contrario, ver cmo sus archivos de copia de seguridad
# mkisofs - JrvV "clise ame" -o backup.iso /home/amy
pudieran no funcionar en un hipottico ordenador de reemplazo.
Podr ver una salida bastante grande para este comando. La salida es til para
archivos de colecciones grandes porque ayuda a estimar el tiempo que queda. Si
prefiere no tener esta salida, omita la opcin -v del comando.

Despus de que haya grabado un CD o DVD, es una buena idea verificar que
la grabacin puede leerse correctamente. El disco puede estar
defectuoso, o el
ordenador puede haber sufrido un golpe durante la grabacin, provocando que
Puede grabar un CD-R con la imagen ISO que ha creado. Para realizar la gra- el lser se salga de la pista de grabado.
bacin actual, autentifquese como (o use su- para cambiar a) root. Los permisos
La forma correcta de verificar una grabacin es comparar todos los sectores
de root son necesarios para que el programa cdrecord pueda acceder a la capa
grabados y los sectores originales del disco duro o generar sumas de comproba-
SCSI, para modificar las prioridades del proceso y para bloquear el espacio en
cin de estos sectores y comprobarlas: Ambos mtodos deberan usarse slo con
RAM y as evitar equivocaciones. La escritura de CD tiene dependencias tempora- los sectores de datos actuales, no los sectores de relleno. El siguiente Shell
script
les que son crticas, por tanto ayuda a mantener la actividad del sistema tan
hace esta verificacin bastante fcil cuando el archivo de imagen ISO original
plana como sea posible. Si est usando un CD-RW en una unidad CD-RW, nece-
est disponible:
sitar borrar el CD-RW antes de efectuar el grabado:
W !
/bin/bash
# cdrecord blank=fast padsize=63s -pad -dao -v -eject if [ $# -lt 1
[
then 3 ] ;

echo "usage: isomd5 <f ile__or_device> ... 1>&2


exit 1
Nota: Algunas unidades necesitan que el CD sea retirado para reiniciar la
fi
unidad y dejar la lista para la siguiente operacin. A menos que haya for ame in. "$@" do ;

descubierto que su unidad no necesita eso, use la ejecucin -eject como se isoinfo -di " $ ame } " l>/dev/null | exit { 1
muestra aqu. done
for ame in "$@" do ;

count=( $( isoinfo -di $ { ame } " \ 11

Para grabar la imagen ISO creada en la seccin previa, introduzca: egrep "'Volume size is: " ) )
|

count="$ {count [3] }


11

# cdrecord padsiza=63 -pad -dao ~v -eject backup.iso bsize^t $( isoinfo -di ${name} \
,,A
egrep |
Logical block size is: ) )

con su equipo mientras se est grabando un CD o un


Evite hacer otras tareas bsize="${bsize [4] }
DVD. Algunas unidades modernas tienen una funcionalidad especial que ayuda md5=$ dd \ (

a resolver problemas relativos a que el ordenador no est respondiendo todo lo if=${name} " \
ibs="$(bsize} \
rpido que debiera. Los discos grabados con este mtodo pueden no ser compati-
obs=4096 count= " $ { size " \ }

bles con algunos dispositivos ms viejos. Si ve que las grabaciones algunas veces 2>/tmp/isomd5 $$ .err \ .

fallan, reduzca la velocidad. Puede cambiar la velocidad incluyendo la opcin md5sum |


)

speed=, que est documentada en las pginas manual de cdrecord. Rebajar la if [[ $? != 0 ]3 then ;

cat /tmp/isomd5 $$ err


velocidad puede ser muy importante si la imagen que se est grabando est en
.
.

rm -f /tmp/isomd5 $$ err . .

un sistema de archivos en red. exit 1

necesario para que algunos lectores de CD IDE ATAPI funcionen


El relleno es fi

rm -f /tmp/isomd5 $$ err . .

correctamente con operaciones de lectura de cabezales que Linux


y otros siste- echo "${ mds 0 3 2 } " " " " $ { ame
: :
}

mas usan. Puede or que las unidades ms modernas funcionan sin relleno, pero done
:

3 3-
Haciendo copa de seguridad de ios datos i iaciendo copia de seguridad de los dalos

el nmero de sectores usado por el sistema de archivos ISO


Este script obtiene paquete de cdigo abierto que gestiona las copias de seguridad en cinta. Desarro-
en archivo de imagen. Limita el nmero de sectores ledos por el programa de
el llado en la Universidad de Maryland, est incluido en muchas distribuciones de
suma de comprobaciones MD5 al nmero de sectores usados exactamente. Esto Linux, incluyendo Deban. Las funciones de Amanda son:
evita leer sectores de relleno, que podran variar en nmero. e
El uso de formatos de copia de seguridad tradicionales en Unix como tar y
Hemos llamado isomd5 a este script. Puede darle el nombre del archivo de dump.
imagen ISO, as como el nombre del dispositivo de CD que normalmente usa
para leer CD-R (con el nuevo CD-R reinsertado). Debera obtener un resultado
Operaciones sobre una LAN, haciendo copias de seguridad de datos de un
similar a este: diente con un servidor de cinta central.
Soporte para replicar clientes Windows va Archivos Compartidos.
amy@deskl2 ~$ isomd5 backup.iso /dev/srO
:

d41d8cd98f 00b204e9800998ecf 8427e backup.iso


8
Soporte para dispositivos de cinta estndar, tocadiscos y apiladoras.
d41d8cd98f00b204e9800998ecf8427e /dev/srO 8
Posibilidad de balancear copias de seguridad enteras en un ciclo de varios
amy@deskl2
das.

La suma de comprobacin del programa MD5 es la parte de 32 caracteres Soporte para copias incremntales con escritura diaria de cambios.
hexadccimales. Si no es la misma para el archivo de imagen ISO Compresin de datos tanto en el diente como en d servidor, o va disposi-
y para el conte- 8

nido de la unidad de CD-R, la grabacin es defectuosa.


tivos que soportan compresin hardware.
Lina grabacin fallida suele llamarse un coaster que es un trmino ingls que
Prevencin de sobreescritura accidental en el medio equivocado.
hace referencia a las marcas en forma de anillo que dejan las bebidas sobre una
mesa.
Una estrategia de escritura en grupos de discos que permite la escritura

retardada o por etapas.


Cuando un disco falle, intente:
Autentifcacin a travs de Kerberos o con su propio esquema de autenti-
1 . Repetir la grabacin sobre otro disco virgen.
fica dn.
2. Grabar a una menor velocidad.
Encriptacin de datos para la proteccin en redes inseguras.
3. Usar diferentes marcas de discos vrgenes.
Si los fallos persisten, probablemente tendr una unidad de grabacin que es
defectuosa.
Instalando Amanda
Amanda tiene componentes de cliente y componentes de servidor. El cliente se
usa en sistemas cuyos datos necesitan replicarse. El servidor se usa en los siste-
Los pasos que se muestran en esta seccin son especficos de los discos CD, mas que realizan la copia de seguridad y escriben datos en la cinta.
pero los discos DVD tambin pueden grabarse de manera anloga, usando el Ejecute el siguiente comando para instalar Amanda en el servidor de copias de
mismo software proporcionado por cdrecord o por el paquete edrtools. Algunos seguridad:
DVD, sobre todo los DVD RAM, pueden funcionar como discos duros, pero re-
quieren una unidad especial que soporte este modo de operacin. # apt-get install amanda-server

Ejecute el siguiente comando para instalar Amanda en cada mquina Linux


cliente:

# apt-get install amanda- Client

Cuando instala estos paquetes, los otros paquetes que se necesitan se inclui-
j
Las Cintas todava son un medio para hacer copias de seguridad bastante po~ rn automticamente. Si desea usar el programa amplot en Amanda, tendr que
,
pular. El Advanced Maryland Ati totnnted NetWork Disk Archiver (Amanda) es un instalar el paquete gnuplot.
: .

Haciendo copia de seguridad de ios datos Haciendo copia de seguridad de ios datos

Amanda usa archivos en muchos directorios diferentes. Estas opciones son Amanda se ejecuta como
usuario de copia de seguridad con permisos del
el
configurables, pero por defecto son: grupo disco. Necesitar establecerpermisos para todos los archivos que quiera
replicar para que puedan, ser ledos por Amanda.
/etc/ amanda Archivos de configuracin (servidor)
El servidor Amanda necesita estar bien conectado a la red local, con suficiente
:

8 / root : El archivo /root/ amandahosts.


. ancho de banda para el volumen de todos los datos que van a transferirse. Debe-
ra tener un disco lo suficientemente grande como para contener el espacio sufi-
e
/usr/man/man8: Las pginas manual.
ciente para poderalmacenar dos veces el tamao de la memoria a duplicar. Tambin
8 / usr/ s har e / do c/ amanda -common: Archivos de documentacin. es necesario una CPL rpida por si el servidor va a realizar compresin hardware.
Amanda soporta mltiples y diferentes configuraciones. Cada configuracin con-
0
/usr/ share/doc/amanda-client: Archivos de documentacin espec-
siste en un conjunto de tres archivos en un subdirectorio de /etc/ amanda:
ficos del cliente.

9
/usr / 1 ib: Libreras compartidas usada por programas Amanda. * amanda conf:
. archivo de configuracin principal. Edtelo para especi-
El
ficar la lista de discos (vea el siguiente elemento), el dispositivo de cinta, la
/ usr / 1 ib/ amanda Programas demonio y utilidades internas.
frecuencia de copiado, su direccin de correo, el formato de los informes y
:

/usr/sbin: Programas de comandos. un gran vector de otras opciones.


/var/lib/amanda: Estado de ejecucin, log
9
disklist: Este archivo especifica los equipos y los discos que se replica-

y otros archivos.
rn.

tapelist: Este archivo lista las cintas activas, incluyendo las fechas en
las que se escribi. Amanda gestiona este archivo, por lo que podr verlo,
El /etc/services debera tener entradas con los siguientes nom-
archivo
pero no debera editarlo.
nmeros de puerto. Si estas entradas no estn presentes, edite el archivo /
bres y
etc/services y luego adalas al final. Los comentarios son opcionales:
Nota: Mostrar todos opciones de Amanda nos
ios detalles acerca de las
/etc/services exploracin en sus manos.
que dejaremos
llevara muchas pginas, por lo la
amanda 10080/udp # amanda backup Services
Los archivos de ejemplo pueden ser muy tiles debido a la gran cantidad de
amandaidx 10082/tcp # amanda backup Services
amidxtape 10083/tcp comentarios que ofrecen, podr encontrarlo en el directorio /etc/amanda/
# amanda backup Services
DailySet l cuando instala el paquete Deban amanda-server. Para detalles
Tambin necesitar editar el archivo /etc/inetd. conf, que debera conte- ele estos archivos de configuracin, vea las pginas manual de Amnela o
ner las siguientes entradas: visite http://wiki.zmanda.com.

/etc/inetd. conf (para clientes)


amanda dgram
:

udp wait backup /usr/sbin/tcpd /usr/ 1 ib /amanda/ amandad


Amanda genera un informe por cada copia de seguridad que efecta. Estos
informes detallados se mandan por correo electrnico al usuario especificado en
/etc/inetd. conf (para el servidor)
: la opcin mailto del archivo de configuracin amanda conf. Debera revisar los
.

amanda i dx stream tep nowait backup /usr/sbin/tcpd /usr/lib/amanda/amindexd informes regularmente, sobre todo para comprobar errores y revisar las ejecu-
amidxtape stream tep nowait backup /usr/sbin/tcpd /usr/lib/amanda/amidxtaped
ciones.
La primera entrada, llamada Amanda, se necesita en todos los clientes. Las
otras dos entradas se necesitan slo en el servidor. Si estas lneas no estn presen-
tes, edite el archivo /etc/inetd. conf y adalas al fina!.
Amanda usa puertos aleatorios despus de la comunicacin inicial. Debera Amanda usa el formato estndar de Llnix para copias de seguridad (tar o dump),
usar Amanda en Internet slo a travs de una VPN. Esto evita la necesidad de que debera especificar en el archivo de configuracin. Esto permite usar las cin-
abrir un amplio rango de puertos de Internet en su LAN. tas con las copias de seguridad para restaurar ios archivos incluso si el sistema
, ..
. , , ,, . . , . , , ,,,

Haciendo copia de seguridad de ios dalos Haciendo copia de seguridad de ios datos

Amanda no est presente. Esto puede ser crucial a la hora de restaurar archivos # mysqlhotcopy -u user -p password drupal /tmp
despus de que se estropee un disco por completo. Locked 57 tablea in 0 seconds
Flushed bables 'drupal '. 'access drupal accesslog 'drupal'.
{

Amanda tambin ofrece herramientas de reconversin indizada que permiten


'aggregator_
' , ' ' ,

la restauracin de los archivos seleccionados. Asegrese de configurar el ndice category 'drupal 'aggregator_category_feed'
' , 'drupal 'aggregator_ '
.

, '
.

para hacer que Amanda cree los archivos de ndice. Las pginas manual de category_item '

amreeover le ofrecern todos ios detalles. 'drupal' aggregator_ f eed 'drupal' 'aggregator_tem'
.
'drupal' ' ,
.
,

'authmap', 'drupal'.
'blocks', 'drupal '. 'book' drupal '. 'boxes 'drupal '. 'cache , ' ' , '

'drupal 'client '


.
' ,

'drupal client_system'
' 'drupal
.
comments
' 'drupal contact , '
1
' , '
.
' '

'drupal f ile_ '


.
'

revisions', 'drupal '.' files 'drupal '.' f ilter_f ormats 'drupal'. ' , ' ,

Hasta ahora, hemos estado replicando archivos y directorios. Las bases de da- 'f ilters'
'drupal flood' 'drupal '.' forum' 'drupal 'hstory' 'drupal'.
, ,
tos tienen aspectos especiales que deben tener en cuenta. Nuestros ejemplos usan
,

'locales_meta '

MySQJL, pero los mismos principios pueden usarse con PostgreS QJL y otras bases 'drupal locales_source '
.
'drupal
' locales_target , 'drupal 'men ' , '
.
'
'
'
.
'

de datos relacinales. 'drupal '

'node', 'drupal' 'node_access 'drupal' 'node_comment_stat.i.stics


Si nuestro servidor MySQL no necesita estar disponible 24 horas al da, 7
'drupal 'node_ '
.
. '
, . '

horas a la semana, una forma muy fcil y rpida para replicar los datos es: counter', 'drupal '. 'node_revisions 'drupal . 'permission' 'drupal'. ' , ,

'poli
1 . Pare el servidor MySQL: '

'drupal 'poll_choices , 'drupal


'
.
'poll_votes 'drupal 'prof ile_f ields ' '
.
' , '
.
'

/etc/init.d/mysqld stop 'drupal '


#
'prof ile_values' 'drupal '. 'role' 'drupal search_dataset , 'drupal'. , ' ,

2. Copie los archivos de datos y los directorios de MySQL. Por ejemplo, si su ' search_
ndex', drupal search_total ' '
.
drupal '.' sequences 'drupal'.
directorio MySQL de datos es /var/lb/rnysql y quiere copiarlo a /tmp/
' ' ,
'
' ,

'sessions', 'drupal'.
mysql-backup: 'System', drupal '.' term_data , '
' 'drupal ' termjhierarchy ' , 'drupal'.
'term_node '

# cp -r /var/lib/mysql /tmp/mysql-backup 'drupal term_relation


' .

' , 'drupal ' .
' terrrysynonym ' ,
'drupal ' . 'url_al.ias '
,

'drupal '

En lugar de cp, puede usar rsync, tar, gzip u otros comandos menciona- 'users ' , ' drupal users yoles
'
.
drupal
' variable drupal ' , ' '
.
' ' , ' . ' vocabulary '

dos anteriormente en este captulo. 'drupal '


.
' vocabulary_node_types 'drupal '. 'watchdog' in ' , ) 0 seconds.
3. Inicie el servidor de nuevo:
Copying 171 files...
Copying indices for 0 files...
# /etc/init.d/mysqld start Unlocked bables.

mysqlhotcopy ha copiado 57 tablas (171 archivos) en 1 segundo.


Las copias en lnea se prestan a ms trucos. Si tiene dos tablas MyISAM mu-
Mysqlsnapshot es incluso ms fcil. Copia todas las tablas ISAM o MyISAM en
tuamente independientes (sin claves ajenas o transacciones), podra bloquear-
su servidor con un archivo tar por base de datos:
las, copiar todos sus archivos y desbloquearlas. Pero podra tener tablas InnoDB,

o alguien podra ejecutar una transaccin que involucre varias tablas. Afortu- # ./mysqlsnapshot -u user -p password -s /tmp --spl.it -n

nadamente hay varias soluciones no comerciales bastante razonables, entre las checking for binary logging. ok . .

backing up db drupal done . . .

que se incluyen mysqlhotcopy, mysqlsnapshot, repication y mysqldump. backing up db mysql done . . .

Mysqlhotcopy es un script de Perl que hace copias de seguridad en lnea para backing up db test done . . .

tablas ISAM o MyISAM. snapshot completad in /tmp


Las pginas manual incluyen muchas opciones, pero vamos a mostrar cmo
Ver mysqlsnapshot en http://jeremy.zawodny.com/mysql/
realizar la copia de seguridad de una base de datos sencilla llamada drupal:
mysqlsnapshot.
306 Haciendo copia de seguridad de los datos
Haciendo copia de seguridad de los datos 307

Si ha configurado la replicacin MySQjL para que est disponible 24 horas al


9
Maneja todos los tipos de tablas, incluyendo InnoDB.
da los 7 das de la semana, puede replicar los datos desde un servidor esclavo
usando alguno de los mtodos descritos. Tambin necesitar guardar informa- No ofrece nuevos
mtodos de replicacin. En cambio, permite escoger en-
cin de replicacin (Iogs, archivos de configuracin, etc). Vea los captulos ante- tre mysqldump, mysqlhotcopy, MySQL replication o LVM snapshots.
riores para ms detalles. Soporta la restauracin de una transaccin determinada o de un punto en
Para una proteccin extra contra fallos en el hardware (pero no contra errores el tiempo.
humanos), configure la replicacin y configure un esclavo (y/o maestro) como Zmanda
un RAID (en espejo).
ofrece archivos .tar.gz y .rpm para muchas distribuciones Linux.
1
Para un how-to de la instalacin en Deban, visite: http / /www howtof orge
: . .

Muchos sitios MySQL migran muchos datos desde tablas MyISAM a tablas com/mysql__zrm__debian_sarge.
InnoDB para conseguir verdaderas transacciones y un mejor rendimiento de es-
critura. Los autores del mdulo InnoDB tienen un producto comercial para las
copias de seguridad en lnea llamado InnoDB Hot Backup que puede pedirlo des-
de http //www. innodb com/order .php.
: .

El ltimo mtodo es el que normalmente se menciona el primero en la mayo-


ra de las documentaciones: mysqldump. En lugar de una copia en crudo,
mysqldump hace un volcado ASCII de las bases de datos y de las tablas especifi-
cadas. Funciona con todos los tipos de tabla MySQjL, incluidas las InnoDB. Es
relativamente lento y los archivos de texto que se generan son grandes, aunque
se comprimen muy bien. Es til crear volcados de vez en cuando, puesto que
contienen un script que permite restaurar sus bases de datos y tablas desde cero.
Puede usar editores, grep y otras herramientas de texto para buscar en o modifi-
car los archivos volcados.
Para bloquear todas las tablas y volcarlas a un nico archivo, introduzca:

# mysqldump -u user -ppassword -x - -all-databases > /tmp/mysql dump .

Puede crear una tubera a travs de gzip para ahorrar algo de tiempo y de
espacio:

# mysqldump -u user -ppassword -x --all-databases |


gzip > /tmp/
mysql.dump.gz

Una nueva herramienta de cdigo abierto (descarga gratuita, pago por sopor-
te) llamada Zmanda Recovery.
Manager para MySQL ofrece una interfaz til para muchas de estas alterna-
tivas. El sitio Web de Zmanda (http //www zmanda com/backup-mysql html)
:
. . .

tiene todos los detalles, pero seguidamente mencionaremos algunas de sus dis-
tintas funcionalidades:

Tiene una interfaz de lnea de comandos.


s
Replica bases de datos locales o bases de datos remotas sobre SSL.
Enva por correo electrnico el estado del procedimiento de replicacin.
"

Este apndice contiene varios Scripts que pueden serle til en su trabajo dia-
rio, as como para modelos para escribir otros script. Puede descargar
servir de
los Scripts (comentados en ingls) desde http //www. centralsof t org.
: .

Si usted tiene mucha tarea (como en una universidad, donde entran nuevos
estudiantes al mismo tiempo o varias veces al ao), este script puede ayudarle a
aadirlos al sistema de forma rpida. Lee un archivo que contiene informacin
sobre cada usuario e invoca useradd con los parmetros adecuados (vea captu-
los anteriores para ms detalles sobre useradd y sus variantes):

# /bin/bash
!

expiredate=2009- 02 ~ 18

if [[ -z "$1" ]] ; then
" "
echo
echo "Please give exactly one file ame.' 1

echo "The file will have one user per line."


echo "Each line will have:"
echo " usernarae"
echo " group"
echo " personal real ame"
"
echo
echo "Sample line:
echo "alfredo marketing Alfredo de Darc"
" " " "

310 Bash scripts de ejemplo 311


Bash scripts de ejemplo

[ [ -n -$n" ] ] n=12
exit 1
| ]

if [ $n -lt 8
[ 3 ; then 3
fi
echo "A password of length $n would be too weak"
exit 1
cat "$1" while read username groupname realname
|

fi
do
p=$ dd if =/dev/urandom bs=512 count=l 2>/dev/null \
# Skip blank Unes.
(

if [[ -z $username -z $groupname -z $realname ]] ; then


j | j j
tr -cd 'a-zA-ZO-9' \
continu |

cut -c l~$n )
fi |

echo "${p}"
#Check whether the user already exists.
# If so, report this and skip chis user.
A
result=$ egrep " $username " < /etc/passwd
(
:
)
Si es capaz de mejorar la funcionalidad, merece una recompensa. Mientras
if n -n " $result" ]] then ; que usted est fuera, nosotros seremos un poco ms puntillosos con los fallos de
echo "User $usernatne' already exists" este cdigo. Este cdigo es el tpico que suele heredarse de un desarrollador ante-
continu
rior: sin comentarios, con nombres de variables poco descriptivos y algunos con-
fi
juros mgicos. Si quiere hacer del mundo un lugar mejor, hay unas cuantas
# Check whether the group already exists. cosas que puede hacer cuando escriba scripts como este.
# If not, add the group.
A Por ltimo, puede escribir comentarios describiendo el propsito dd cdigo.
result=$ egrep " $groupname " < /etc/group
(
:
)

if [[ -z "$result" 3] then ;
Estos comentarios deben dividirse en dos partes: una gran cabecera de propsito
grotipadd " $groupname general (por ejemplo, indicando los parmetros que se le pasan al script, y los
fi
valores que se tomaran por defecto), y explicaciones explcitas para comprender
# Add the user.
la dificultad de los procesos.
useradd -c "$realname" \
-d "/home/$username" \ No pierda tiempo ejecutando los comandos bsicos usados, debido a que el
-e "$expi redate" \ que lo mantenga puede mirarlos si no est familiarizado con ellos. No obstante,
-f 365 \
donde emplee una variante extica de un comando, debera describir explcita-
-g "$groupname" \
-m \
mente su efecto y cmo puede ejecutarlo.
-s /bin/bash \ Despus de todo, el objetivo es que documente los resultados que persigue con
"$username
los conjuntos de comandos y por qu se obtienen estos resultados de la forma

if f[ $? == 0 ]]; then
que ha ideado.
echo "Successfully added user $username' '
,

Ahora, vamos a dar una explicacin al cdigo del generador de contraseas en


else
detalle, al contrario de lo que encontrar en el mundo real. El script comienza
echo "Error adding user '$username' (group \
$groupname
'
real ame $realname'
' ,
1 ) con el comentario de inicio usual que le indica ai sistema que ejecuta el intrprete
exit 1 bash. Luego, asignamos el primer parmetro a la variable n, que ser el nmero
fi de caracteres a generar. Lo ponemos entre comillas porque puede ser una cadena
done
nula si el script se ejecuta sin parmetros. Esta cadena se prueba para determinar
si es una cadena nula. El parmetro -n significa "longitud distinta de cero" por lo

que si la comprobacin es verdadera se ha proporcionado una cadena.


Las dos barras verticales ejecutarn la asignacin que contina si la compro-
Aqu mostramos un script que genera una contrasea de una longitud dada, bacin falla. Esto obliga a que la longitud por defecto de nuestra contrasea sea
en caracteres ASCII: de 12. Las siguientes lneas comprueban si la longitud dada es muy pequea;
hemos decidido (basndonos en las recomendaciones clsicas de los expertos en
# /bin/bash
seguridad) que la longitud mnima debera ser 8.
!

n= " $ 1
"

Bash Scripts de ejemplo Bash scripts de ejemplo

La primera sentencia del bucle usa tres comandos del sistema en una tubera # mx [ ames . . . ]

# ns ames
para generar una contrasea de prueba. Las tres lneas de la tubera estn en un [

# ptr [ ames
$() para capturar la salida como una cadena que luego se asignar a la variable p. # soa [ ames . . . ]

Para generar una contrasea aleatoria, necesitamos una fuente de datos # txt [ ames . . . ]

aleatorios; el sistema ofrece esto combinando una variedad de fuentes estadsti- #


# author Philip Howard
cas en el pseudodispositivo /dev/urandom. El comando dd lee datos binarios del #
dispositivo. El comando tr con la opcin -cd borra todos los caracteres que no
estn en los rangos a-z, A-Z y 0-9. El ltimo comando de tubera, cut, extrae el # For use with ptr query.
f une t ion inaddr {
nmero deseado de caracteres.
awk -F. '{P rint $ 4 $3 $2 "
" $1 ".in-addr.arpa.";}'
}

Nota: No intente ejecutar este comando en su terminal y ver los resultados


en la pantalla. Se quedar ciego 10 minutos y su perro empezar a maullar.
query_type=$ exec basename "${o) n
( )

# Get and query for each host.


Todava tiene la tentacin? Deber ejecutar un comando normal en la stty
for hostname in "$@" do ;
para restaurar la pantalla a un estado til.
if ti "${query_type} " == ptr ]] then ;

# A typical scripting trick: when a case can begin


# with a numeral, place a dummy character such as x in
# front because the case syntax expeets an alphanumeric
# character.
case x${ hostname }y" in
11

El script usa el comando dig que se describi en el al comienzo para bsquedas x[0-9]*\- [0-9] *\. [0-9]*\. [0-9] *y
( )

DNS, consultando la cach del servidor DNS cach local. Una funcionalidad de hostname=$( echo "$ {hostname " inaddr }
j
)

este script es que usa su propio nombre para especificar el tipo de registro DNS
que busca. Si el script se llama a, busca registros A. Si se llama soa, busca regis-
tros DNS SOA. El nombre ptr es un caso especial que coge una direccin IPv4 y la esac
convierte en la forma adecuada in-addr.arpa para hacer la bsqueda actual. De- fi
bera hacer una copia de este script con el nombre apropiado para cada uno de los
# Execute the query.
tipos de registro comunes en DNS que podra necesitar buscar; a, aaaa, mx, etc.
dig +trace +noall +answer ${query_type} "
"$ {hostname} "
\
Tambin puede usar enlaces duros o enlaces simblicos para crear los alias. egrep " A $ {hostname }

Independientemente del nombre, el script acepta una lista de equipos a buscar done
como parmetro: exit

# /bin/bash
!

#
# Copyright &#169; 2006 - Philip Howard - All rights reserved
#
# script a, aaaa, cnarae, mx, ns, ptr, soa, txt Puede usar eipresentado en esta seccin para enviar un archivo, o un
script
#
purpose Perform direct DNS lookups for authoritative DNS directorio de archivos (incluyendo todos los subdirectorios), desde un sistema a
#
# data. This lookup bypasses the local DNS cache otro usando una sesin sheli en cada sistema. El script funciona creando un de-
# server. monio rsync (rsync se describi en el ltimo captulo) de fondo para enviar el
# archivo especfico o directorio. Muestra varias formas distintas de cmo puede
# syntax a ames ... ]
usarse para recibir un archivo o directorio. Este script no necesita estar en el
[

# aaaa [ ames ... ]

# any [ ames ... )


sistema receptor, por lo que puede usarse para enviarse una copia de s mismo. El
# cname [ ames ... ] paquete rsync, sin embargo, debe instalarse en. ambos sistemas.
. " "" " " " " "

Bash scripts de ejemplo


Bash scripts de ejemplo

#
# -s inelude sparse in the rsync command lines
Nota: El sistema remitente debe tener acceso a la red por el nmero de # -u user to run as, if started as root
puerto que se usa para aceptar las conexiones rsync entrantes. El nmero # -v show extra Information
de puerto se escoge de manera aleatoria entre el rango 12288 y 28671. #
#
# author Philip Howard
Puede sobrescribir la eleccin aleatoria de puerto usando la opcin -p seguida
de un nmero de puerto. Si las reglas de su cortafuegos slo permiten unos
umask 022
cuantos puertos a los que conectarse, debe elegir uno de estos puertos en hostname=$( exec hostname -f )

este script. whoami =$ exec whoami ( )

uid=" $ {whoami }

Para transferir datos, primero ejecute ei script en el sistema remitente. Una


#-
vez que se muestren los comandos de ejemplos, seleccione qu comando es el
# Set defaults,
apropiado para usarse basndose en la direccin 1P o el nombre del equipo que - -

puede alcanzar el sistema remitente, y la ubicacin donde el archivo o directorio checksum= "

se almacenar en el sistema receptor. Copie la lnea de comando seleccionada y delete="


delmsg="
pegue el comando en la Shell del sistema receptor para ejecutar el comando rsync dryrun= "
que recibe los datos. El demonio se continuar ejecutando cuando la transferen- padding=" "

cia est completa, permitindole transferir un archivo o directorios muchas ve- port="
ces entre computadores diferentes. Pare el demonio cuando las transferencias sparse="
verbose="
estn completas presionando Control-C en la ventana de la shell del sistema remi-
"
tente. barl="
barl= "#$ {bar }$ {bar }$ {bar}

Nota: Este script no que sepa la direccin y el


tiene seguridad. Cualquiera
bar2= "##########################
nmero de puerto en el que
escuchando, puede obtener los datos
se est bar 2="#$ bar2 } $ { bar 2 } $ { bar2
{
}

que se estn transfiriendo. No debera usar este script para transferir datos
secretos o confidenciales, intente scp o sftp en su lugar. Asegrese de parar #-
el demonio una vez que las transferencias deseadas estn completadas. # inelude paths for ifeonfig.
#- -

export PATH= " $ { PATH } /usr/sbin /sbin" : :

El nombre que se sugiere para este script es rsend:


#---
# !
/bin/bash # Sean options.
# #-
# Copyright &#169; 2006 - Philip Howard - All rights reserved While [[ $# -gt 0 && "x$ { 1 : 0 : 1
}
" - "X-" ] 3 ; do
# case x${l}" in
# script rsend x-c ( x-~ checksum j
)

# checksum="c"
# purpose To start an rsync daemon in the shell foreground
# to send a specified directory or file when ( x--delete )

# retrieved using one of the rsync command lines delete=" --delate"


# shown, by pasting it in a shell session on another delmsg= " / delete
# host padding= "
#
# usage rsend [options] directory |
file ( x-d x- -directory
|
)

# * shift
# options -c inelude checksum in the rsync command lines cd ${l} " || exit 1
# -d change daemon to the specified directory
# -n inelude dryrun in the rsync command lines ( x- -directory=* )

# -p use the specified port number, else random


" " } . . " "" " '

Bash scripts de ejemplo Bash scripts de ejemplo

cd "${1:12} | j
exit 1 local str
str=$ echo "${l} { tr -d |
'
)

{x-n x-~dry-run >


if "${str) " != "${1}"
[ [ ] ] ; then
|

dryrun= *'n" echo " $ { 1 } '

return
(x-p x--port )
fi

#
shift str=$< echo "${l}" |
tr -d )

port = "${l) if [[ "$ str " = {


}
!
]]; then
"
echo ''*'${ X '

(x--port=* ) return
port= "$ { 1 7 :
n fi
echo "${l}"
(x-s x--sparse
|
)
return 0
sparse="S }

# - -
( x-u. |
x~~user )

shift # Only one ame can be handled.


- -
uid="${ 1 }

if [ [ then
$# -gt 1 ] ] ;

(x--user=* ) echo "Only one ame (directory or file)" 1>&2


#
uid= " $ { 1 7 } :
exit 1
elif [[ $# -eq 1 ]]; then
(x-v x--verbose
|
) name="${l}
verbose=l else
name=$ exec pwd ( )

esac fi
shift
#- - - -
done
# Set up a temporary config file.
# - #
# Get a random number f or a port # Arguments:
# $1 Directory transferred, or where transfer is starting
if [[ -z ${port}"
|| "${port|" = 0 j| "${port} n = ]]; then . # $2 Not used {AO: Should be removed)
port=$ dd if=/dev/urandom ibs=2 obs=2 count=l 2>/dev/null
( \ # $3 File transferred (if single file specified)
od -An -tu2
|
tr -d |
1 '
) #--
port=$ $port % 16384
[ ] function conf igout {

port = $ $port + 12288


[ ] echo "lock file = ${lockfile}"
fi echo "log file = /dev/stderr"
echo "use chroot = false"
# -
echo "max connections = 32"
# Make up ames for temporary files to be used. echo "socket options = SO_KEEPALTVE"
echo "list = yes"
conf f ile=" /tmp/rsync-$ (whoami -$ {port -$$ conf } }
.

echo " [ -
J

lockf ile="/tmp/rsync-$ { whoami } -$ {port -$$ lock" }


.

echo "path = ${l}"


- -
echo "read only = yes"
echo "uid = ${uid}"
# This function adds quotes to strings that need them.
echo "corament = ${2}"
# Add single quotes if it has one of these: space $ "
if (! -n "${3} ] then ] ;
# Add double quotes if it has one of these: '

echo "inelude = **/${3}"


# Note: not all combinat ions will work
echo "exelude = * *
fi
function strquote {
" d
" " " " "" " . " " " " " ' .

Bash Scripts de ejemplo Bash Scripts de ejemplo 3

}
echo -n "rsync ${ rsyncopt} "
#
if -n "${oldfmt}
[ [ then j ] ;
# Get directory and file. }
strquote "${3}"
echo " - -port=$ (port } " $( strquote "
${1 } : : $ {
2 " } $( )

el se
if [[ -e "${name}" ]]; then }
${ strquote "${3}"
echo $( strquote "rsync ://${ 1 }:$ {port }/${ 2
!
" ) )

echo "does not exist:" $( strquote "${name}" ) 1>&2


fi
exit 1
return
elif [[ -d ${name}" ]],- then
}
P=$ exec dirname "${name}"
( )

b=$ exec basename "${name}"


( )
#--
d= " $ { ame }

# These functions show rsync commands for hostname and IP address


f= " #---
r=$( cd "${name} && exec pwd )
function getip {
announce = " $ } {
in
case $( exec name ~s )

rsyncopt = " - a$ { checksum $ dryrun H$ sparse } vz$ { delete }


{ } {
}
SunOS
( )

configout "${d}/." "directory :$ {d} / " >"${conf f ile} awk {print $4;}'
netstat -i -n j

elif [[ -f "${name}" ]]; then


p=$ exec dirname "${name}"
( )
Linux
( )
b=${ exec basename "${name}" awk if ($1 = = inet ") print substr ($2, }
i f config 6)
) 1
-a |
{ " ;
d= -${p}"
f="${b}" #
r=$ cd
(
"
$p " && exec
{
}
pwd )
netstat -i -n awk '{print $4;}'
|

r= "$ { r } /$ {b}
announce " $ {d } /$ { f } esac
rsyncopt " -a$ { checksum} $ {dryrun} $ sparse vz {
}
return
configout "${d}/." "f ile $ { d /$ f " >"${conff ile} : } {
}

}
elif [[ -L ${name}" ]]; then
p=$( exec dirname ${name}" )
function ipaddr {
b=$ exec basename "${name}"
( )
getip \
d"${p} A
[0-9] *\ [0-9] *\ [0-9] *\ [0-9] *$'
egrep '
. . . \
f="$(b}" |

A A
127\
egrep -v 0\ \
'
. |
. '

r=$( cd "${p}" && exec pwd |

)
head -2 \
r="${r}/${b} |

while read ipv4 more do ;


announce "${d}/${f }

showrsync ${ipv4}"
rsyncopt " - a$ checksum} v" {
done
configout "${d}/. "symlink $ { d} /$ f " "${}" > $ { conf f ile } {
}
:
return
fi
}

function showcmd {
# Show config file if verbose is requested.
ipaddr "${2}" "${3}"
showrsync ${l}" "${2}" "${3}"
i i: if [[ -n "${ verbose}" ]]; then
return
echo "${bar2}
}
|{ {
is -Id "$ {conf file}
echo " $ {bar 2 } #---
cat "${conf f ile} 7
# Announce the shell commands to receive this data.
J![
f

echo ${bar2}"
echo "# sending ${ announce }
This function outputs example receive commands
echo paste ONE of these commands in a remte shell to receive
S

function showrsync then


{
if [[ -d "$ {ame} " ]];
$ " " . "" "

Bash scripts de ejemplo

echo "${barl}"
tilque permite que una sesin Shell quede en un estado activo, con la pantalla
showcmd "${hostname} "
cuando desconecta del ordenador remoto. La sesin capturada podr
. .

intacta
echo "$ {bar} 11
retomarse despus, incluso desde un equipo diferente. Tambin es posible tener
showcmd "${hostname} " . "${b}" dos o ms conexiones en ia misma sesin Shell.
El siguiente script hace e inicia una sesin llamada screen
una conexin ssh
if [[ "
$ { <2 } " ! = "
$ {b} " && "
$ {
d} " != " " ]]; then
$ {
r}
echo "${barl}" en un comando. usar este script es que es ms rpido para conec-
El beneficio de
showcmd "${hostname} " . "
${d
}
tarse y desconectarse cuando se est trabajando con mltiples servidores.
fi
Este script se usa de manera similar ai comando ssh. La sintaxis ssh que espe-
echo ${barl}" cifica el nombre de usuario y el equipo de la sesin remota se expande para in-
showcmd ${hostname} " ${r}" . cluir el nombre de sesin. Puede crear mltiples sesiones en un equipo remoto
else
con el mismo nombre de usuario y diferentes sesiones. El nombre de sesin es
echo "$ {bar}
opcional. Si no se proporciona, el script ejecuta el comando ssh de una manera
showcmd "${hostname} " "${b}'
s=$ exec basename "${d}"
( )
normal, sin ejecutar screen. La sintaxis completa de este script, incluyendo las
# s= "${s }/${} opciones ssh que soporta, pueden verse en los comentarios del script.
if f "${s}" 1 = "${b}" ]] then
echo "${barl}"
;
El nombre sugerido para este script es ss:

showcmd "$ {hostname} "


"./${}" ${s}"
# !
/uer/bin/env bash
fi
#
# Copyright &#169; 2006 - Philip Howard - All rights reserved
if [ ame " = " $ b " \
t
"
$ {
}
! {
}

#
&& " ame } " != "${sj" \
{

&& " $ { ame " != -${rj" ]]; then }

# command ss (secure screen)


echo "${barl}"
#
showcmd "$ {hostname} " "./${}" ${name}"
# purpose Establish a screen based background shell session
fi
# via secure shell Communications.
#
echo "${barl}"
# syntax ss [options] se ssion/username@hos trame
showcmd "$ {hostname} "
"./${}" "${r}"
# ss [options] session@username@hostname
fi
# ss [options] username@hostname/ session
echo "${barl}" # ss [options] usernameOhostname session
echo "# press A C here when done" #
echo "${bar2}" # options -h hostname
# -h=hostname
#
# -i identity
# Start rsync in daemon mode # ~i=identity
# -1 loginuser
S=" DONE" # -1= loginuser
trap s= "SIGINT ... DONE"' INT
1

# -m Multi -display mode


trap s= "SIGTERM ... DONE"' TERM
1

# -p portnum
rsync --daemon -~no-detach " - -conf ig=$ { conf f ile} "
P= portnum
" -
-port=$ {port }
# -
rm -f "$ { conf file} " "${lockfile} # -s session
echo "${s}" # -s=session
# -t Use tty allocation (default)
# -T Do NOT use tty allocation
# -4 Use IPv4 (default)
# -6 Use IPv6
Debera estar familiarizado con el comando ssh, que se conecta a otro equipo -46 -64 Use either ,T.Pv6 or IPv4
# |

una shell all de manera segura. El comando screen es una herramienta


e inicia #
" ""
" "" }"" "

Bash scripts de ejemplo


Bash Scripts de ejemplo

( x*@*@* )

# requirements The local system must have the OpenSSH package Example: sessionl@lisa@centrhub
#
# installed. The remte system must have the cut -d @ -f 1
s-$ echo "x${l}-'
(

# OpenSSH package installed and have the sshd }


I

S="$- s ( : 1
# daemon runnng. It must also have the screen(l) U=$( echo "X${1} " cut -d @ -f 2
# program installed. Configuring a screenrc .
|

cut -d @ -f 3
h=$ echo "X${1}"
{ j

# file on each system is recommended.


shift
#
break
# note The environment variable SBSSI0N_NAME will be set
# in the session created under the screen command
( x*@* )

# for potential use by other Scripts.


# Example: lisa@centrhub
#
# cut -d @ -f
u=$ echo "x${l}"
(
1 )

# author Philip Howard |

U= " $ { U 1 } " :

h=$( echo "x${l} " j


cut 2 )

whoami=$ exec whoami ( )


# Next argument should be session ame,
hostname=$ exec hostname ( )
shift
if [f $# -gt o ]]; then
h= " s="${l)
i=( )
shift
m<= " 11

fi
p= )
(

'
break
s='
t=( -t )
( x-h=* >

u="${whoami} "
h= " $ { 1 : 3 }
v={ -4 )

x-h
( )
#
shift
# Parse options and arguments.
h " $ l } {

while $# -gt 0[ tdo ] 3 ;


{ x-i=* )
case "x${l}" in
i= "$ { 1 3 } :

x*/*@*
{ )
then
if [ [ -z "${i} " 3 3 ;

# Example: sessi.onl/1 isa@centrhub


i=( )
u $ echo "x${l} "
( cut -d -f 1 )
|

else
u="$ { u : 1
}

i-( -i "${1:3}" )
s=$ echo "x${u}"
( cut -d / -f 2 )
j

fi
u=$ echo "x$ u } "
( {
cut -d / -f 1 )

u= " $ {u 1 } :
x-i
( )
h=$ echo "x${l}"
( cut -d & -f 2 )
j
shift
shift
i=( -i "${1}" )

break
x~l=*
{ I
x-u=* )

( )
u= " $ { 1 3 :
11

# Example: lisa@centrhub/sessionl
u=$ echo "x${l} "
( cut -d -f 1 )
]
( x-1 x-u )
u = " $ { u l}
|

shift
h=$( echo x${ 1} " cut -d -f 2 )
j
u=${l}
s=$ echo "x${hj"
(
]
cut -d / -f 2 )

h=$ echo "x$ jh} " cut -d / -f 1 >


{

( x-m x--mu.lt i )

h=${h:l}" |

shift
break
( x~p=* )
"" . "

Bash scripts de ejemplo Bash Scripts de ejemplo

p= " $ { 1 3 } :
if [[ -z ${h}" 3 then ] ;

if [ [ -z ${p} " ] ] ; then echo "Host ame is missing"


#
P=( >
die=l
else fi
p=( -p "${1:3}" )

fi -z "${die}" )l exit 1
[[ 3 3

x-p
( ) #
shift # Run screen on the remte only if a session ame is given.
p={ -p "${1}" ) ---

c=( ssh ${v[@] }


"
"${i[@]}" "${p[@]}" "${t[@}}" "
$ (u }@$ {h} " )

( x-s=* ) if f [ -n "${s) " 3 ] ; then


s= " $ { 1 3 } :
o="-DR"
[ -n "$ {m} "]] && o=" -X"
t

( x-s )
x "exec /usr/bin/env SESSION_NAME=' $ s} { ' screen $ {o} '${s}'
shift c=( "${c[@]}" "${x}" )

S="${1}

fi
exec "${c [@]
}

( x-t )

t-( -t )

( X-T )

t=( )

( X-4 )

v= ( -4 )

( x-6 )

v=( -6 )

( x- 46 |
x- 64 )

v= ( )

( x-* )

echo " Inval id option: '${l}'"


die = l

echo "Invalid argument : '${!}' "

die=l

esac
shift
done

*
Make sure essential information is present

if [ -z ${u} " ]]; then


[

echo "User ame is missing"


die=l
fi
.conf, 174 alto rendimiento, 191
.htacccss, 161, 200 Amanda, 283, 300-301, 303
.htpasswd, 165 amanda.conf, 303
.rhosts, 231 amanda-server, 303
.shosts, 231 Amazon, 20, 61, 191
.tar, 290 AMD, 238
.tar.bz2, 290 ANSWER, 97
.tar.gz, 290 anti-spam, 134
.tbz, 290 antivirus, 102
.tgz, 290 Apache, 28, 54, 102, 111, 118, 127, 153,
000-default, 161 155, 157-158, 161-162, 164, 167,
169-170, 172, 177-182, 188,
190-191, 194, 196, 243
A apache2, 188
A, registro, 77, 80, 82, 85, 192 apache.2--utils, 181
a2dismod, 161 APC, 200
a2enmod, 161 apt-get, 35
ab, 181 archivo
accept, 227 Hints, 76
aceleradores PHR 200 Local Host, 76
Active Directory, 205 zona inversa, 76, 84
ADDITIONAL, 97 de. grupo, 167

AddType, 172 aritmtica, 264

adduser,227 ARP (Adress Resolution Protocol),


admin, 113 ASCII, 160, 176, 306
alertas de correo, 127 ATA, 297
alias, 45, 167 ataques, 1 79
de correo, 122 Athlon, 206
AllowOverride, 161, 200 Atlanta, 206
6 . 8 6 9 1

ndice alfabtico ndice alfabtico 329

auditora, '134 Computer Associates, 232 diagrama, 119


config, 170 dig, 64, 87
autentifieacin, l i , 164
framework 143 consultas, 71 DigestMDS, 146
de, C, 280, 282
annima, 144 contenedores, 1 6 7 Direccin
C. Shell, 255
Continuidad comercial, 238 Ethernet, 194
AUTH, 143 CA (Certification Authority), 179
cookies, 193 dinmica, 212
AUTHORTY, 97 cach, 74
copia de seguridad, 286, 291 esttica, 212
AuthType Basic, 166 de cdigo, 200
automatizada, 289 directivas, 162
AuthU ser File, 166 200
de consultas,
correo electrnico directorio, 167
autorizacin, 164 200
de datos,
seguro, 43, 147 de inicio, 123
awk, 275 de pginas, 200
retrasado, 139 ele. usuario, 123
capa SCSI, 298
cortafuegos, 73, 187 DNS, 68
carga balanceada, 191
Courier, 151 pblico, 1.23
Camegie Mellon, 58
cp, 284 raz, 118
backbone, 25 cat, 275
CPAN (Comprehensive Perl Archive disable, 227, 241
Balanceador de carga, 192, 195 CD-R, 294
Network), 58, 282 disids t, 303
balanceo de carga, edrecord, 283
epio, 284 dist.txt, 105
Base, 1 1 edr ecord-scanbus 2 9 ,

CramMDS, 146 distribucin de peticiones, 1 92


bash, 255 edrtools, 283
crontab, 271 djbdns, 63
Shell, 255 centralsoft.org, 112
179 csh, 255 DMD, 125
bastin host, 214 certificado, 49, 107, 109, 129, 148,

Bea WebLogic, 62 CGI (Common Gateway Inter face), 107, Cuenta, 116, 120 DMZ, 215
Beowulf, 191 155, 159, 168, 171, 190 cuotas, 36 DNS (Domain ame System), 33, 40, 59,

CHECKJNTERVALs, 130 CLIPS (Common Unix Printing System), 61, 63, 69-73, 77, 82, 89, 92, 95,
Berkeley, 132
223-227
15, 98, 116, 133-1.34, 186, 207, 211,
238
Big Bine Virtualization Engine, checktype, 196, 198
cut,275 215, 21.9, 239, 312
BIND (Berkeley Internet ame Domain), chkconfig, 212
CVE (Common. Vulnerabilities and autoritativo, 68
28, 38-39, 63, 65-67, 71, 74, 77, 86, chroot, 66
Exposures), 43 cach, 215
89, 91-92, 94, 98, 102, 211 CIFS (Common Internet File System), 205
Cyrus, 142 local, 312
BIND cinta, 283
primario, 72
4, 63 Cisco, 15, 101
secundario, 72
8, 63, 102 ClamAV, 111
DocumentRoot, 164
9, 63, 75, 102 ClarkConnect, 217
dornain-name-servers, 211
BlueGene, 23 Class, 78 206
Dallas,
dominio, 1 1
Bootstrapping, 82 cliente FTR 1 1
26
DASD (Dircct Access Storage Device), nombres de, 69
Bourne Shell, 255 clster, 191
Deban, 29, 48, 65 servidores, 21
break, 270 clustering, .1 34 Dell, 206 DOS, 204
Brothe:rHL1440, 225 CNAME, 77, 83, 85
depuracin, 198
Dovecot, 151
BSD (Berkeley Software COBOL, 282 DHCP (Dynamic Host Configuration
DR,
Distribution), 101 Co-Dominios, 116
Protocol), 29, 32, 203, 207, 209, 212,
226 Drupa!, 155, 182-186
bucles, 269 cola de impresin,
215-216, 218-219, 243 DSA, 231
buffer FIFO, 297 coma flotante, 264 dhcp.conf, 210, 212, 216, 218-219
bunzip2, 290 comandos CLI, 226, 279
DSO (Dynamic Shared Object), 157
dhcp3-server, 210 DVD+R, 294
buzn local, 121 computacin dhcpd, 209 dvd+rw-tools, 295
bytecode, 200 distribuida, 191
212
dhcpd.leases, DVD-R, 294
bzip2, 290 en grid, 191
8 9

ndice alfabtico
ndice alfabtico
331

Gestin ISAM (Indexecl Sequential Access


HTTP 1.1, 174
de. usuarios, 227 54 Method), 304
httpd,
e-accelerator, 200 remota, 134 ISO-9660, 294
HTTPS (HyperText Transfer Protocol
Ebay, 20 gestor
113 ISP (Internet Service Providcr), 27, 45, 113
Secure),
echo, 170 de paquetes, 126 SPConfig, 59, 99, 101-103, 106,
egrep, 275 grfico, 232 109-110, 112, 114, 118, 123
eject, 298 getpwent, 278, 279
enable, 227 gftp, 118
IBM, 26, 204, 232, 238, 252
enlaces gid, 274
IDE ATAP1 CD-R, 295
duros, 312 Gnuiil, 141
ide-sesi, 295-296 Java, 156
simblicos, 312 GNOME, 221 JavaScript, 155
IETF (Internet Engineering Task Forc),
ERP (Enterprise Resource Planning), 252 gnuplot, 301
Jboss,62
69, 143
esclavo, 72 gnu-pop3d, 102 JDS (Java Desktop System), 233
ifconfig, 195, 213
Escritorio Java, 233 Gocldard, 22
imagen ISO, 297, 300
ESMTR 44, 1 43 Google, 20, 61-62, 89, 191
imgenes virtuales, 237 K
Estadsticas, 1 1 GPL (General Public License), 31
IMAP (Internet Message Access Protocol),
Ethernet, 222 grfico de sectores, 1 1
28, 43, 123, 131, 150-151, 153 K3b, 295
Exchange, 21, 134 grep, 275
IMAP4, 132 KeepAlive, 169
exec, 170 grids, 237
IMAPS, 150 KeepAliveTimeout, 169
Exim, 30-31, 134-135 Groupwise, 1 34
impresin, 222 herberos, 143, 146, 301
Expiry, 79 grub, 241
index.html, 1 i 8 killall, 93
expresiones, 263 gzip, 290
136
inetd, 36, Korn Shell, 255
ext3, 137
InnoDB, 304-306 ksh, 255
H InnoDB Hot Backup, 306 KV.M (Kernel Virtual Machine), 235
F instaUJspconfg, 105
HA (alta disponibilidad), 192, 194, 199-200
Intel, 238
Fast CG1, 156 halt, 92 L
Interfaz
FDQN, 137 head, 275
de red, 140 LAMP (Linux, Apache, MySQL, PHP), 156
Federa, 31, 65 Heartbeat, 197, 201 203-204,
web, 127 LAN (Local Area NetWork), 21,
Federa Directory Server, 152 Hipa-visor, 238 Systems Consortium, 210
Internet 209, 217, 225, 287
fiabilidad, 191 Hoja de estilos, 155
invitado, 235 lser, 299
FilesMatch, 168 HOME, 140 IP (Internet Protocol), 29, 32, 83, 87, 90, LB (balanceo de carga), 192
finduser, 275 host, 90
102, 112, 116, 124, 197, 207, 209, LDAP (Lightweight Directory Access
Firefox, 186 hosts, 1 75
213-214, 217 205
Protocol), 24, 131, 143, 146, 200,
Firestarter, 217-218, 220-221 virtuales, 155, 174, 189
ipehain, 102 Idirectord, 193
formato nativo, 207 virtuales basados en ip 174
217
IPCop, Idirectord.cf, 196
FTP (File Transfer Protocol), 24, 56, 77, 102 virtuales basados en nombres, 1 74 Tunneling sobre 194
IPIP (IP IP), Libe, 30
FTP annimo, 1 1 Hotmail, 83
IPL (Internet Public Librar y), 26 libsas!2, 143
Fujitsu, 238 HP 232 ipop3d, 1.02 libsasl2-modules, 143
HTML, 57, 118, 156, 169-170, 173
ipopd-ssl, 150 200
lighttpd,
htpasswd, 165
iptables, 102, 216 linhelp.org, 115, 117
HTTP (HyperText Transfer Protocol), 110,
213
IPv4, Linksys, 101
gecos, 274 187, 193 213-214
IPv, Linux Virtual Server, 191
gestin de la carga de trabajo, 238 HTTP 1.0, 174 193
IPVS (Servidor de IP virtual), Linux Virtual Server Project, 201
1

332 ndice alfabtico ndice, alfabtico

linuxnewswire.org, 112 Minimun-TTL, 80 Notes, 134 php.ini, 173


Listen, 164 mirror, 118 Novell, 232,238 phpinfo, 1 72
litespeed, 200 mod NS, 77, 82 ping, 187
Jog, 106, 177 mod expires, 200 nslookup, 89 planificador, 271
176
log, divisin de, mod_perl, 156 NTLM (NT LAN Manager), 146 plataforma cruzada, 223
log, rotacin de, 176 raodphp, 156m 172 NTR 57 POP2, 150
log de acceso, 176 mod_vhost_ alias, 1 75 nuil, 67 POP3, 28, 43, 102, 124, 131-132,
log de errores, 176 modelo tenedor, 1 80 NXDOMAIN, 98 150-151, 153
LogFormat, 177 modo seguro, 174 POP3S, 150
LOGNAME, 140
lpc, 226
mod s-enbled 6
monit, 126, 128
,
1

O popa 3 el, 102


posteonf, 143
LPD (Line Printer Daemon), 223 monit.pem, 129 Open Office, 290 Postfix, 24, 28, 30, 43-44, 48, 50, 111,
lpmove, 227 monitorizador, 125 OpenLDAP, 153 127, 136, 139, 144, 149, 151, 153
Ippasswd, 227 monitrc, 128 OpenOffice Writer, 207 postfix-tis, 143
ipq, 226 MP3, 294 Open Power, 238 PostgreSQL, 304
lprm, 227 MTA (Mail Transfer Agent), 25, 43, 81, opensourcetoday.org, 112 proemail, 102
LPRng, 223 84, 106, 132-134, 143, 152 OpenSSL, 34, 102, 111, 147-148 ProFTPD, 28, 56, 127
lpstat, 226 MUA (Mail User Agent), 122, 132, 139 OPT 146 progress, 285
lserver, 90 mutt, 142 Oracle, 61 protocolo Web, 174
LVM snapshots, 307 MX, 77, 80-83, 85, 152 Oracle Financiis, 252 proxy inverso, 200
LVS, 201 MyISAM, 304 Order, 1.66 PTR, 77, 85, 312
LVS-DR, 194 MySQJL, 41-42, 61, 102, 127, 146, 155, O'Reilly, 25 publicacin de contenido, 1 86
LVS-NAT, 194 159-160, 173, 184-185, 200, 304-306 puerto
LVS-TUN, 194 mysqldump, 304 puerto (TCP) 22, 218
mysqlhotcopy, 304 puerto (TCP) 2812, 127

M Mysqlhotcopy, 304
mysqlsnapshot, 304
pginas-manual, 286
PAM (Pluggable Authentication
puerto (TCP) 80, 118, 187
puerto (TCP) 81, 103, 105
MAC fsica, 211, 213 Modules), 143 puerto (TCP) 443, 190
Mac OS, 157, 205, 207 panel grfico, 119 puerto (UDP) 53, 71, 73
maildir, 102 paralelismo, 191 Python, 156, 244, 256, 273, 280-281
main.cf, 138, 143 ame, 78 parsep, 280
MaxClients, 169 named.conf, 74 pardal, 285
MaxReqnestsPerChild, 169 Nameserver, 78 pasarela, 29, 133, 214
mbox, 151 NameVirtualHost, 1 74 PAT (Port Address Translation), 215 qpopper, 102
MCSE, 26 NASA, 22, 191 PATH, 259 querylog, 92
MD5, 300 NAT (Network Address Translation), 194, patrones, 1 68 QUESTION, 97
MDA (Monochrome Display 215, 217 PeopleSoft, 252
Adapter), 132, 152 negotiate, 196 Perl, 58, 156, 256, 273, 277-278, 280-281
Memcached, 200 Netcraft, 157 permisos, 258
Microsoft Netf'lter, 21 7 permissive, 241 radvd, 213
205
NT, 29
Netlnstall, PHR 111, 155, 158-160, 172-173, 256, RAID (Redundant Array of Independen!
Windows, 89 NFS (Network File System), 34, 207, 243 273, 279-281 Disks), 284
MIME (Multipurpose Internet Mail nmap, 187 PHP 4.0.5, 102 random, 67
Extensions), 172 Nodos Apache, PHP 5, 105 recompilar el ncleo, 295
5

Indice alfabtico 335


334 ndice alfabtico

SSH, 31, 219, 226, 228, 289, 321 transacciones, 236


Reconocimiento de patrones, 168 SASL (Simple Authentcation and Security sshd, 125, 127 TTL, 73
recursos infrautilizados, 236 Layer), 44, 131, 136, 142, 144, 146 SSHServer, 231 Tuberas, 260
red de rea local, 203 sasl2-bin, 143 TXT, 83-84
SS1 (Server Side Includes), 102, 156,
Red Hat, 29, 31 saslauthd, 53, 145 169-171, 189 Type, 78
Red Hat Cluster, 201 sasldb, 143 SSL (Secure Sockets Layer), 43, 102, 107,
Redireccin scriptAlias, 172
de E/S, 260, 267 SCSI emulado, 296
179, 190
startup, 130
u
de errores, 261 seguridad, 76
stats,92 LIBE,133-134
reenvo de paquetes, 1 92 seguridad bsica, 2 1 92
status, UCE, 133-134
Refresh, 79 SELINUX, 241 stop, 92 UDF (Universal Disk Format), 294
227 Sendmail, 22, 31, 111, 132-133
reject, subred, 194 UDP (User Datagram Protocol), 71
reload, 92 Sendmail, Inc., 134
suExec, 107 uid, 274
reloj, 57 Sendmail Consortium, 1 34
SuExecUserGroup, 1 80 Ultra Monkey, 194, 199, 201
Rendimiento, 1 80 sentencia condicional, 265 Sun Microsystems, 232 UML (User Mode Linux), 238
replicaron, 304 Serial-no, 79
Suse, 29, 65 Unisys, 238
rcquire, 166 ServerName, 174 sysconftg.txt, 216 Universidad
retransfer, 92 SERVFAIL, 98 sysctl.conf, 195 de Maryland, 301
Retry, 79 servidor de copias de seguridad., 286
system-config-securitylevel, 241 de Washington, 150
RFC (Request For Comments), 20 sh, 255 up2date, 241
RFC 1032, 62 shadow, 143
LIRL (Universal Resource Locator), 104-105,
RFC 1035, 62, 77 SHELL, 140 I
157-158, 190, 196, 199
RFC 1883, 213 shell prompts, 255
tabla LVS, 196 UseCanonicalName, 1 75
RFC 2460, 213 Shorewall, 217 useradd, 227
tadelstein.com, 112
RFC 2461, 214 silos, 232
tail, 275 IISERID, 266
RFC 882, 62 Simple File Sharing, 207
tapelist, 303 LIUID, 252
rndc, 91 SMB (Server Messagc Block), 204-205
283-284, 289, 292-293 uw-imapd, 151
tar,
round-robin, 192 Smoothwall, 217 uw.imapd-ssl, 150
tarball, 103, 290
route, 195 SMT (Surface Moun t Technology), 238 tareas CRON, 271 uwimapd-ssl, 150
router, 211 SMTP (Simple Mai Transfer Protocol),
tarfile, 290
router-advertising, 214 24, 43, 123, 131-133, 139,
routing, 196 142-143, 146, 152
tarjeta de red, 211
V
tcl, 273
RPM, 209 SMTP-AUTH, 53
TCP (Transmission Control Protocol), variables de entorno, 1 70
RSA, 48, 231 smtpd, 143
73, 193 vhost __aIias.cor.tf, 1 75
rsend, 314 smtpd.conf, 145
Tecnologa V1P (IP virtual), 192, 195, 197
rsync, 283-284, 287, 313 smtpd_sasl_Iocal domain, 1 44
de servidor, 169 Virtual
RSYNC_RSH, 287 SOA, 77-80, 83, 312
hipo- hilo, 238 Host, 177
Ruby, 156, 273 software daino, 133
multi-hilo, 238 VirtualDocumentRoot, 1 75
sources. list, 194
TFLOPS, 22 Virtuallron, 238, 246
spam, 111
Thunder, 23 virtualizacin, 235-236, 240, 242, 252-253
s spara, filtrado de, 121-122
Thunderbird, 1 32 virus, 1 11
SpamAssasim, 58
TIC, 236 vlogger, 155, 177-178
Samba, 15, 205, 208, 224-225 spammers, 140
SAP 252 SPF (Sender Policy Framework), 83, 84
TLD, 61, 69-70, 136 VM 249
(Virtual Machine), 239,

Sarge, 193 TLS, 43, 124, 142, 146, 152 VMware, 235, 240, 246-250, 252
SCIUID, 200
Indice alfabtico

VolP, 24 Xen, 235, 239-240, 242-243, 246-247, 252


VPN (Virtual Private LAN), 303 xenguest-install py, 244
.

XenSource, 238, 246

WAN (Wide Area NetWork), 27


Webalizer, 54, 57, 102, 155, 178 Yahoo, 62, 83, 191
Webcraft, 54 Yast2,233
Websphere, 62 Yum, 209, 241
wget, 103
whoami, 286
Windows, 205, 224-225
wm-pop3d, 1 02 Zeus, 200
wodim, 295 Zimbra, 21, 131
Zmanda, 306
X Zmanda Recovery, 306
zona, 68
X Window, 27, 130, 234 zSeries, 26
Xandros, 206

You might also like