You are on page 1of 271

UNtil SERVER.

lOS MEJORES TRUCDS



Los administradores de sistemas de ho 111111111.1111111111111111111111111111111111111 IIII

con numerosas y variadas situaciones, 41120738 · I II·· s

de software, y todo tipo de problemas) peru Clicman con L1UCilUS irucos, consejos practices y tecnicas para resolver dichas situaciones a las que se tienen que enfrentar.

Esta obra aborda soluciones y consejos que son esencialmente maneras inteligentes

de resolver los problemas con los que se encontrara un administrador de sistemas Linux, ya sea descubrir c6mo recuperar datos perdidos, realizar la autenticacion distribuida, ajustar sistemas de ficheros en general, () hacer las tareas de administracion mas eficientes, fiables y repetibles.

Linux.Seruer. Los mejores truces no solo le ayudara a aumentar su productividad como administrador de sistemas, sino que adernas le enseriara un nuevo rnerodo de trabajo aplicando conocimientos de software, gesti6n de tiernpo, y toda la potencia de Linux.

Esta obra le ensenara c6mo:

.. Controlar el proceso de autenticaci6n de Linux usando ficheros de cuenta locales, LDAP, Kerberos, e incluso Windows Active Directory.

• Usar VNC, LTSP, Y FreeNX para ejecutar rernotamente una sesion grafica en Linux, facilitandole Ia administraci6n y proporcionando un entorno de escritorio seguro y estable al usuario final.

.. Crear su propia estacion NAS y otras tecnicas para gestionar el almacenamiento de su red usando cuotas de disco, donaci6n, imagenes, RAID, y gestion

de volumenes .

.. Monitorizar su red y localizar intrusos, gestionar sus ficheros de bitacora, y obtener informaci6n de los servidores y dispositivos de su fed desde su puesto de trabajo .

.. Resolver fallos en discos y sistemas de ficheros para recuperar los datos perdidos,

La serie Los mejores trucosreclama la palabra "experto", para los innovadores que quieran explorar y experimentar, descubrir nuevas funciones y aplicaciones, crear herrarnientas utiles y conseguir soluciones divertidas que puedan probar personalmente.

2327243

O'REILLY®

z--',-

ro;:':'::":'··- • if)

·:;mJMU ~TUvrtD ~/--\~ hltp:llwww.AnayaMultimedia.es

Bill von Hagen Brian K. Jones

O'REILLY

Tftulo de la obra original:

Linux Server Hacks

Responsable editorial:

Victor Manuel Ruiz Calderon Nayra Suarez Guimera

Traducci6n:

David Montero Gilarranz

Bill von Hagen & Brian K. Jones

AGRADECIMiENTOS

Reservados todos los dercchos. EI contcnido de esta obra esta protegido por la ley, que cstabtece pen as de prision y/o multas, adernas de las correspondientes indemnizaciones por darios y perjuicios, para quienes reprodujeren, plagiaren, distribuyeren 0 comunicasen publicamente. en todoo en parte, una obra litcraria. artistica 0 c:ientifica, 0 su transforrnacion. interpretacion 0 ejecucion artrsuca (ijada en cuaiquicr tipo de soporte () comunicada a troves de cualquier medio, sin la preceptiva autorizacihn.

Bill: Ami mujer, Dorothy Fisher, sin quien la vida no serfa en ningun modo tan buena 0 tan divertida, y a Mike Bauer, Hill Gaussa, y Larry Weidman, que me dieron tantas oportunidades profcsionales y me animaron a extender mis horizontes. Querrfa agradccer adernas a David Brickner, sin el que nunca habria acabado este Iibro (bueno, al menos no este afio). Sin las sugerencias de David, sus cornentarios, yen general sin su apoyo. este libro no habrfa sido tan bueno.

Finalmente, ningun Iibro que tenga que ver sobrc GNU/Linux estaria complcto sin agradecer a Richard Stallman, Linus Torvalds, y a toda la comunidad de c6digo abierto en general. O.uerria agradecer adernas ami co-autor, Brian Jones, pOl' hacer este libro mejor de 10 que habrfa sido sin el.

Brian: A mi mujer, Natasha, que me ha apoyado y anima do en todas mis aspiraeiones y metas. y ha tenido que aguantur todos mis disparates en la persecuci6n de dichas aspiraciones y metas. Tarnbien a mis herrnanas y hermanos:

Heather, por obligarrne a ejercer la informatica como profcsion: Jessica, por ser radicalmentc positive y esperanzadora: Jon, por rnantenerme aIerta; y Russel, sin d cual me habria auto-destruido haec tiempo.

Gracias de todo coraz6n a David Brickner, que me ofreci6 Ia oportunidad de escribir estc libro, y cuya cstabilidad, mano firrne, y para diligencia han hecho de esta una maravillosa experiencia. Me gustar.ia agradecer adernas a toda la gente de OSTG, TtiLUG, y php I architect, por su amistad; Matt Appio, por hacerme tomar ocasionales descansos de pesca: y a mis cornpafieros en Princeton por ensefiarrne mucho mas de 10 que podrfa enurnerar aqui.

A Linus Torvalds y el resto de la comunidad de c6digo abierto: muchisimas gracias par todo vuestro trabajo.

Todos los nombres propios de prograrnas, sistemas operativos, equipos hardware, etc., que aparecen en este libro son rnarcas registradas de sus respectivas cornpafifas u organizaciones.

"Authorized translation of the English Edition of Linux Server Hecks, Volume Two. © 2006 O'Reilly Media Inc. This translation is published and sold by permission of O'REilly Media, Inc. , the owner of all rights to publish and sell the same".

SOBRE EL AUTOR

© ED1ClONES ANAYA MULTIMEDIA (CRUPO ANAYA, SA), 2006 luan Ignacio l.uca de Tena, 15. 2H027 Madrid.

Deposito legal: M·20.H47~2006

ISBN: 1l4-4 T 5-2034·1l

Printed in Spain.

Imprime: Artes Craficas Cuemo, S.L. Febrero, 32. 2il022 Madrid.

Bill von Hagen ha sido adrninistrador de sistemas Unix durante veinte afios y un fanatico de Linux dcsde 1993. Ha trabajado adernas como programador de sistemas, manager de producto, escritor, desarrollador de aplicaciones, percusionista, y manager de contcnidos.

Bill ha escrito 0 co-escrito Iibros sobre t.ernas tales como sistemas de ficheros Linux, SUSE Linux, Red Hat Linux, Gee, SGML, Mac OS X, administracion de sistemas Linux, y trucos sobre Tfvo. Ha cscrito numerosos articulos sobre Linux, Unix, y ternas sobre c6digo abierto para diversas publicaciones, incluyendo Linux Magazine, Linux Journal, Li.l1UX Format y Mac Format. Un avido coleccionista de ordenadores, especializado en estaciones de trabajo. tiene mas de 200 ordena-

Linux Server, Los mejores truces

7

do res de distintos tipos y arm qmere mas. Sf le pu ede contactar en vonhagen@vonhagen.org

Brian IC Jones (Jonesy) ha sido administrador de sistemas y redcs tanto Unix como Linux durante seis afios. Ademas, ha sido consultor y administrador de bases de datos, desarrollador Web, manager de proyccto. instructor, escritor y editor tccnico, y rnrisico de estudio, tanto para grandes como para pequefias compafiias.

En el pasado, Brian ha escrito extensamente sobre ternas que giran en torno a Linux y software de codigo abierto para Linux.com, Newsforge, y Linux Magazine, y ha trabajado como autor y editor jefc de la rcvista php I architect.

En su copioso ticmpo Iibre (esto es cierto), Brian disfruta jugando .'11 billar, tocando Ia guitarra, practicando la carpinteria, y escribicndo codigo. ria trabaiado ademas como administrador de redes y sistemas para cl departamento de informatica de la Universidad de Princeton desdc 2001, y como consultor sobrc infraest'ructura de computadores a tiempo parcial des de el afio 2000. Se le puede contactar en jonesy(Cf) Iinuxlaboratory.org.

redes inalarnbricas, y encontrar nuevas aplicaciones para el sistema operativo Linux. A ella de hayes administrador profesional de Unix/Linux, y por las neches escrifor tecnico y un avido mountain biker, Vive en Virginia con su futura esposa Jennifer, su fie! perro Max, y su, no tan fiel, gata Jackie. Brian ha contribuido en los tr'ucos numeros 19, 55,64,66,67,73, 75, 76, 79,85,86, Y 87.

David Brickner (Truco numero 42) no es administrador de sistemas Linux, pero como usuario Gentoo, ha aprcndido un par de cosas sobre como compilar software. David confta en que Linux sera elsisterna operative dominante en PC, y, para fornerrtar esta opinion, ha escrito "Test Driving Linux" y "Linux Desktop Pocket Guide", ambos de O'Reilly.

COLABORADORES

A continuacion le presentamos C1 los distintos colaboradores que han contriImido escribiendo, programando, y con SLl inspiracion, a Ia crcacion de cste libro: e Jon Fox (Truces numeros 33 y 62) (jon.fox(ajgnu,org,uk) usuario de Linux y defensor del software libre. Lleva utilizando Linux desd« '1996.

o Tom Limoncelli (Truce numero 45) cuenta con mas de quince afios de expericncia como adrninistrador de sistemas, y lleva trabajando como instructor en talleres sobre gesti6n de tiernpo en confercncias desde 2003. Tom es cl autor de 'Time ManagementforSystem.Ailministrators" (O'Reilly) y "The Practice of System and Network Administration" (Addison Wesley), Puna del t rabajo, Tom ha ganado prernios por su activismo defendiendo los dercchos de los homosexuales, y ahora ayuda a las causas progresistas a usar la tecnologia para conseguir sus objetivos.

gLance Tost ha sido usuario de Linux desde los dtas del kernel 0.98, mientras consegufa su licenciatura en Informatica, Ha eiercido de programsdor, administrador de bases de datos, y administrador de Unix. Lance es un "Ingcnicro Certificado Red Hat" asf como un "Administrador Certificado de Sistemas Solaris". Lance ha contribuido COIl en los truces numeros 29,41,48,59,63, Y 72.

G Brian Warshawsky es un cntusiasta partidario de todo 10 rclacionado con Linux y el codigo abierto. Sus interest's principales incluycn seguridad,

Contenido

Prologo " " ", , 23

(,Por que Linux Server. Los mejores tr ucos? 25

Como usar este libro 25

Como esta organizado este libro , .. , 26

Convencioncs utilizadas en este libro 28

Capitulo 1. Autenticacion en Linux , 31

1. Desactivar cuentas de usuario instantaneamente 32

Dcsact ivar cuentas en sistemas con autenticacion local. c , 32

Desactivar cuentas en sistemas con autenticacion distribuida 33

2. Edite su fichero de contrasefias para tener mayor control de acceso 35

3. Denegar cualquier acceso en menos de un segundo " .. 38

4. Personalizar la autcnticacion con PAM 39

Vision general sobr e PAM , , 40

Fichrros de configuracion I'iiM pOl' aplicaciort/scrvirio , 41

Modules PAM usados pOl' cl proceso login , , .. , .. '" 42

Configuracion y mas configuracion " 45

LY si faltan ficheros de configuracion PAM? ",.,,', .. , 46

5. Autenticar usuaries Linux con un controlaclor de Dominic Windows 47

Requisitos software 48

Configuracion crttica de Samba para usar autenticacionVvindows 48

Actualizar /etc/nsswiLch.conf ., , 49

10

Contenido

Contenido

6.

lntegrar d 1~\M pam_winbind.so en la autenticacion de sistema 50

lniciar el dernonio winhindd 51

Llnirse al dominio 51

Probar la autenticacion Windows 51

Depurar problemas de antcnticacion Windows : 52

Centralizar inicios de sesion con LDAP 53

lnstalar clientes y servidores LDAP 54

Configurar un servidor LDAP 55

Migrar entradas de usuaries. contrasefias y grupos a un servidor LDAP 57

Actualizar sistemas clientcs para usar autenticacion LDAP 59

Proteger su sistema con Kerberos 61

lnstalar Kerheros 62

Instalar y configurar un servidor Kerberos 62

Instalar y configurar clientes y aplicacioncs Kerberos 66

Usar Kerberos para autenticaci(m de inicio de sesion 67

Autenticar a 105 amantes de NFS con NIS 69

70

1:3. Iniciar auromaticament« servidores VNC bajo dernanda 95

Integrar Xvnc con inetd 0 xinetd 96

Activar XDMCP 98

Iniciar el visor .. .. .. 102

Solucion de problemas con el inicio de Xvnc ." 103

14. Poner sus estaciones de trabaio a dicta de cliente ligero 103

Entender cl proceso de arranque del clicnte ITSI' 104

Descargar c instalar el software LTSP '106

Configurar e iniciar el servidor LISP H16

Preparar el rncdio de arranque del cliente LTSP .

[12

7.

Arrancar un cliente ITSI' J 13

15. Ejecute Windows sobre In reel 114

Abril' su concxion 115

Corresponder los dispositivos locales con su sesion remota 116

16. Conexiones X seguras y ligeras con freeNX 118

lnstalar cl servidor de FreeNX .. 119

Instalar el clicnte de NX . 121

Config urar e iniciar su cliente NX 122

17. Conexiories VNC seguras con FreeNX 125

Crear una configuraci6n del clientc NX para VNC 126

18. Conexiones Scg uras a Windows Terminal con FreeNX ] 27

Crear una configuraci6n del cliente NX para un Windows Terminal Server '12B

19. Adrninistrarion Remota con Webmin 130

8.

9.

Instalar clientes y servidores NIS ..

Configurar un servidor NIS 70

Configurar un diente NIS 72

Sincronizar datos LDAP con NIS 74

EI codigo ::: .. :: .. :: .. :.::: .. :: ::::'.: ~~

Ejccutar el c6digo ..

Capitulo 2. Conectividad remota con interfaz grafica (GUI) 79

10. Acceder a sistemas remotes can VNC 80

Entender el proceso de inicio de VNC 81

lniciar su servidor VNC 82

Ccncctarse a un servidor VNC 83

Personalizar e1 entomo X Window de su servidor VNC 84

Dctencr su servidor VNC 85

Optimizar cl rendimiento de VNC 86

11. Acceder a servidores VNC via Web · 89

Instalar clasts Java y ficheros asociados para el servidor VNC · .. · .. · 90

12. VNC seguro via SSH 91

Reenviar puertos VNC remotos a Sll equipo actual · .. · · .. 92

Reenvto VNC publico 0 privado 93

Reenviar puertos sin inicio de sesion rernoto 93

Mejorar eI rendimiento usando com presion 94

Optimizer las actualizacioncs graficas entre el servidor y el visor 94

Instalaci6n

130 131

il.anzar la configuraci6n! .

Capitulo 3. Servicios de sistema " 135

20. Configuraci6n rapida y sencilla de DHCP 13 6

Instalar un servidor DHCP ...... Configurar servicios simples DIICP ....

137 138 141

iEnciendalo! .

21. Integrar DJICP y DNS con actualizaciones DNS dinamicas 141

Configurar cl scrvidor de nombres BIND 9 142

Configurar el servidorDHCP de [SC 144

lniciar los servicios y resolver problemas.......................................................... 146

22. iSincronice sus relojes: 147

iTley!iMis servidores han desaparccido! . . 150

23. Ccntralizar los recursos de fucntes de X Window 150

Billones y billones de fuentes 15]

12

Contenido

Contenido

13

Configurar un servidor de fuentes X 152

Copiar fuentes al servidor 154

Iniciar 0 reiniciar el servidor de fuentes X 155

Actualizar sistemas de escritorio para usar un servidor de fucntes X 156

Diagnostico y solucion de problemas : 157

Resumen ' 159

24. Crear un servidor de irnpresi6n CLIPS ···· 159

Definir una nueva imp res ora en CUPS ······································ 161

Probar la imprcsion CUPS 165

Afinar la configuraci6n de la impresora en CUPS 166

Activar irnpresion remota en el servidor CUPS 167

Diagnostico y soJuci6n de problemas de impresi6n con CUPS 168

Resl-unen 169

25. Configurar conexiones Linux a impresoras remotas CUPS 169

Dcfinir una imprcsora remota en CUPS "170

Resumen 171

26. Integrar la impresi6n en Windows con CLIPS 172

Configurar la imprcsion desde sistemas Windows 2000/XP I 72

Configuraci6n del servidor para impresion HTTP 174

AnMisis y soluci6n de problemas en impresion Windows

con servidores CUPS 175

27. Centralizar la irnpresion Macintosh con CUPS 1 76

Configurar acceso a un servidor CUPS rcmoto 176

Configuraci6n del servidor para irnpresion HTTP ". 1 7 8

Proba~ la impresion desde Mac OS X Ell su servidor CUPS "[79

Diagn6stico y solucion de problemas con la imprcsion de Mac OS X

en servidores CUPS 180

28. Definir una impresora CUPS segura 180

Activar irnpr csion remota en un servidor CUPS "." 181

Restringir el acceso a la irnpresora a direcciones IF cspecfficas 182

Restringir el acccso a la impresora a usuaries especificos 183

32. Darle cntrenarniento a la tecla Tab : 193

33. Mantener procesos ejecutandose tras salir del interprete de comandos 196

Usar nohup para ejecutar comandos 196

Usar disown con trabajos en segundo plano 197

34. Desconectar su consola sin finalizar S1.1 sesion 198

Programacion script con screen 199

35. Utilizar script para ahorrarse tiempo y entrenar a otros 200

36. Instalar Linux simple mente arrancando 202

Preparatives '" 203

Configura!" DHCP '" 204

Configurar un scrvidor TFTP 204

Ponerlo en funcionamiento 207

Solucion rapids de problemas 207

37. Convierta su portatil en una consola improvisada 208

Le presentamos a minicom 208

Probandolo 2"[ 0

Analisis y solucion de problemas '" 211

38. Documentacion util para el intrfnsccamente perezoso 212

39. Explotar la potencia de Vim 215

Grabar una macro Vim 215

Crear teclas de aeceso directo de Vim " . . . . . . . .. . .. . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . .. 21 8

40. Traslade SL1S habilidades de programaci6n de script F:HP en Web

a la linea de comandos 219

El codigo " 219

Ejecutar el codigo , 221

41. Activar rapidas conexiones telnetlS5H desde el escritorio 221

42. Acelerar compilaciones 224

Usaf distcc 225

Compilaciones distribuidas a maquinas Windows 226

43. Evitar errores comunes de principiante 226

No tomara cl nombre del super-usuario en vano 226

No se ponga muy comedo 227

No rcalicc comandos de produccion sin pcnsarlo 229

Pregunte " 229

44. Lleve Linux mas alla del guardian 230

No hable de dinero 230

No hable sobrc Linux en el vacio 231

No diriia Linux a algo para 10 que no es ideal 232

Capitulo 4. Algunos truces geniales " 185

29. Ejecutar comandos simultaneamente en multiples servidores 186

30. Colaborar con confianza con un Wiki segura 187

lnstalar Media Wiki 189

Configurar MediaWiki 189

Cornenzando: cstructura de datos 191

31. Editar su configuraci6n de GRUB con grubby 192

14

Contenido

Contenido

15

Compiler partimage «, «« ,

.. 265 ... 266

51, Libere espacio de disco ahora "" " """""""""."." ",,""",,. 2 7 9

52. Cornpartir ficheros usando grupos Linux .",,,,,,.,,,., .. ,,,,,,,,,,,,.,,,,, ,,,,,,.280

Protecciones Linux '101 "., ' ' '"'' , " , 281

Establecer urnask para crear ficheros compartibles , , 282

Llsar perrnisos de dircctorio para establecer pertenencia a grupos 283

5.3. Rcfinar perrnisos con ACL .. """""""" """".""."."""" .. ".,,",, 284

Instalar y activar soportc ACL , .. , ., , , .. , , 285

Soporte ACt del nucleo de sistema , " , .. , 285

Soporte /\CL en fstab , , ,,,', 286

Sopor!c ACL de espacio de usuaries " , , " , 287

Vision general de las ACL y utiJidades Linux ,.. . 287

Mostrar ACt actuales ,", .. , .. , .. , , , ,'" ", 28B

Establecu ACL " "."'" ,, " " 2B9

54, Encontrar ficheros facilrnente usando atributos extendidos ,', 291

Conseguir e instalar d soportr a atributos extendidos " ,,, 292

Configurar su nuclco de sistema para atributos extendidos " " 2 9 3

Configu-ar fstab para atributos extendiclos 293

Instalar aplicaciones de espacio de usuaries para atributos extendidos , 294

MosLrar atributos extendido5 y sus valores 294

Establecer atributos extendidos .. , , .. , .. , , , , ,' 296

Eliminar atributos extcndidos .. ,'".,,, ' , .. , .. , ,',.. .. , 296

Busqueda usando atributos extendidos , , , " .. ' 297

55. Evite los glotones de disco cstableciendo cuotas "" 2 9 8

Establecer cuotas de disco , " " 298

Instalar el software de cuotas " .. , .. , , , 299

Entrar en modo rnono-usuario "',, 299

Editar /etc/fstab , , , , ", ,", , , , .. " 300

Inicializar 105 ficheros de configuraci6n de cuotas " 300

Configurar sus cuotas , """ .. , , " , , 301

No sea impacicnte , .. , 233

45. Priorice su trahaio ,.,', , .. """ ,,,,, .. ,,,,.,"",., , ,'", , 233

Priorizar larras , ,' , ,,, , , 234

Hacer las tareas en orden de lista , ,,,. 234

Priorizar bas.indos« en las expectativas del cliente ,,, " , .. , 235

Priorizar proyectos , , .. , ''', 237

................. "" 237

................................... , 238

Priorizar pcticiones de su jefc.. , ..

Resumen ,"'" ..

........................ , " 239

Capitulo 5. Gestion de almacenamiento y copias de seguridad 241

46, Crear almacenamiento flexible con LVM "" """"",,,, ,,'" 242

Topicos sobrc volumenes logicos " .. " " " " 243

Asignarvolnrnenes ttsicos , , , , , .. , 244

Asignar volumcncs thieos a grupos de volumen .. , ,,, 247

Crear uri volumen 16gico desde un gruJlo de volumen "............... .. 248

Sugcrencias . " .. " " "..... ..251

47. Cornbinar LVM con .RAID por software ." """""" "",,,, .. ,,"",," 252

Espejos y rcdundancia . ", 253

Vision general de los nivelcs RAID ,,, ,, ,,,.,, "" 254

Cornbinar RAID software j/ LVM , ..

....................................... 255

Crear dispositivo- RAID , 255

Combinar RAID y LVM " " " " 257

48. Crear una instantanea de "copia en escritura' de un volumen LVII/i 259

Soporte del nucleo de ,[sterna a instantancas ""'" , .. 260

Tomar una inslant anca .. .. "......... .. " .. "" 261

Montar una instantanca , " , , .. , ,,",._ """'''''''' 262

49. Clonacion de sistemas rapida y sencilla """ "" ,,"" 264

Clonal' parLiciones usando partimage ,.,.,' , .. , .

50.

Restaurar particiones usando partimage , 26[)

Resumen .. 270

Haga copias de seguridad disco a disco para unidades grandes '''''''''''' 2 71

Tccnologias practicas de medius extratbles para copias de seguriclad .. " 272

Escoger el cornando de copia de seguridad ackcuado ".. .. 274

EI c6c1igo " " , 275

Capitulo 6. Estandarizar, compartir y sincronizar recursos 305

Ejecutar d c6digo , ..

277 .... 278

56. Centralizar recmsos usando NFS """" """ " "." " ........ " .. , 305

Configurar cl servidor NFS , , , "', "., .. ,, 306

Configurar los clientes NFS ." " ""." 309

Configurar el servicio ,."., ".,"',." " , ,',.,.,., 310

Una consideraoion final, '" '" '" , ,., ,., ,. "" , 311

57, Montar automaticarnente directories personates NFS con autofs , 312

Escoger de que hacer una copia de seguridad

Resumen y consejos ,,' " " 278

Contenido

Contenido

17

58. Mantenga los sistemas de fichcros a rnano, pero sin que estorbcn 315

La configuracion arnd en dos palabras 316

59. Sincronizar entornos de supcr-usuario COIl rsync .318

60. Cornpartir ficheros entre distintas plataformas usando Samba 320

Configurar simples recursos Samba 321

61. NAS rapido y "sucio" .325

Sclcccionar el hardware ' ' " 326

Instalar y configurar Linux " 328

Configur.u' almacenamiento de usuario 329

Configurar scrvicios de sistema " ' ' '" 331

Dcsplcgar el almacenarniento NAS 332

Resumen " " 332

62. Compartir ficheros y directories pOI' Web 332

lnstalar y configurar el soporte para WebDAV en Apache 333

Crear usuaries y directories WebDAV 334

Ejecutar su primers comprobaci6n de integridad de sistema 359

Consejos score Tripwire 359

67. Verificar la intcgridad de los sistema de ficheros con Afick 360

Instalar Afick 361

Configurar Afick para que armonice con su cqui po 361

Ejecutar Afick 363

Proteger Afick 364

Actualizar su base de datos 365

Conclusion 365

68. Buscar rootki t y otros ataques 365

Tipos de rootkit 367

Ohtcner; com pilar e instalar chkrootkit 368

Ejecutar chkrootkit , , .. :3 69

Autornatizar chkrootkit :3 71

Resumen 372

Capitulo 7. Seguridad 339

Capitulo 8. Solucion de problemas y rendimiento 375

6:3. Incrementar la seguridad desactivando servicios innecesarios 340

Examinar /etc/inittab 340

Optimizar los script de inicio por nivcl de cjecuci6n 341

Harer que los servicios cjecutados pOl" cl demonio de Internet sean

mas eficientes 341

Resumen ' 342

64. Perrnitir 0 denegar acceso por direccion IP 342

Proteger su rnaquina con hosts.allow y hosts.deny ' ' 343

Configurar hosts.allow y hosts.deny para su uso 344

Trucar cl truco 345

65. Detectar intrusos de red con snort 346

Instalar snort 346

Configurar snort 347

lniciar snort ' ' 350

Probar snort ' 351

snort avanzado .

........................... 352

69. Encuentrc acaparadores de recurs os con comandos estandar 375

i.Clue haccr con los acaparadorcs de disco! 379

Acaparamiento de ancho de banda " 380

70. Reduzca tiempos de reinicio con sistemas de ficheros transaccionales , 381

Sistemas de ficheros transaccionales "101. . 381

Sistemas de ficheros transaccionales bajo Linux 382

Convertir sistemas de ficheros existcntes a transaccionales 384

Resumen 385

71. Optimice y cornprenda cornpletamente su sistema con sysctl .3 8 6

72. No pierda detalle, con pantallas multiples 389

73. Maximice los recursos con un gestor de ventanas minimalists 393

Obtener e intalar Fluxbox . ., .3 93

ilniciame Scotty! 394

Configurar Fluxbox , 395

El "S.lit" ., 397

iAd6rnelo! ., 397

Minimas dificultades 398

74. Retrate sus sistemas usando /proc 398

EI c6digo 402

75. Mate procesos demanera correcta 403

Matar proccsos en el orden correcto 404

Resumen 353

66. Tripwire dornado 354

Instalar Tripwire 354

£1 fichero de configuracion de cjecuciCm de Tripwire 355

El fie hero de configuracion de politica de 'Iripwi-e 356

Prcparar Tripwire para su uso 358

18

Contenido

Contenido

19

Parar y reiniciar un proceso 405

E1 {lltimo recurso '" '" 405

76. Use una consola scrie para centralizar el acceso a sus sistemas 406

Las opciones 407

Cornicnce por el principio: EI gestor de arranque 407

Ponerlo todojunto : 409

Adonde ir desde aqui : 410

77. Limpie NIS tras la marcha de usuaries 410

EI codigo 411

Ejecutar el c6digo 412

87. Centralice las bitacoras de sistema con seguridad 451

Para ernpezar 452

Crear sus certificados de codificacion . 452

Configura r stunnel .

. 454

Configi Ira!" syslog-ng 454

Probar . . . . 455

L5iguientc paso? 455

88. Controle sistemas y servicios . 456

Nagios entre en escena . 457

Equipos, servicios y contactos. ioh, Dios rnio l . 458

Capitulo 9. Ficheros de bitacora y monitorizacion 415

78. Evite fallos catastroficos de disco 415

79. Monitorice trafico de red con MTRG 421

Requisites 421

Instalaci6n 421

Autornatizar MRTG 423

80. Mantenga una vigilancia constante en los equipos 424

8"[. Monitorice remotarncnte y configure diferentes equipos en red 427

El c6digo 430

Ejecutar el c6digo '" 431

82. Fuerce a las aplicaciones autonomas a utilizar syslog 433

83. Monitorice sus ficheros de bitacora 435

Utilizer log -guardian 436

Usar logcheck 437

84. Envie rnensajes de bitacora a S1.1 cliente Jabber 439

El c6digo 441

Ejecutar el c6digo '" 442

85. Monitorice 13 disponibilidad de servicio con Zabbix 442

Dependencias '" 443

Instalar Zabbix 443

Monitorizar equipos 445

Hacer un mapa de la red 446

Los detalles 446

86. Afinar el demonic syslog 447

Dando sentido a syslog.conf 448

Alertas en ticmpo real dcsde la bitacora de sistema 449

Centralizar las bitacoras para comedo acceso 450

Capitulo 10. Rescale, recuperacion y reparacion de sistema 463

89. Resuclva problemas cornunes de inicio y arranquc 464

Compruebe la confi.guraci6n de la BIOS .. 464

Solucionar problemas de nivel de ejecuci6n 0 del sistema X Windovv .. . 467

Regenerar un fichcro ele configuracion pOl' defccto de X Window..... . 468

Arrancar en modo mcno-usucrio.. . 469

Resolver problemas de convist.cncia de sistemas de ficheros 470

ikcscateme: 4Tl

90.

Descargary grab'lr c] disco de rescale .

Usar cl CD de rescale......... . .

............................... 473

........ 474

91. Saltese Ia secuencia estandar de init para hacer reparaciones rapidas 474

92 . Descubrapor que no puede desmontar una particion 476

Esrena .

........ 476

Encontrcr procesos que est.in usando un sistema de fichcros

Listar ficheros abicrtos .

.47[1

....................... 479

Resumen. 480

93. Recupere particiones perdidas 480

Buscar par+icioncs . 482

Escribir la labia de particiones , . 484

94. Recupero datos de discos avcriados 484

Modos de fallo de disco populares .. . 485

"Attempt to Read Block from Filesvstern Resulted in Short Read ''. . 4B6

Diagnosticos y reporacion estandar de sistemas de fie heros . 486

Eliminar el diario de un sistema de ficheros ext3 488

Clonal' un disco defcctuoso usando ddrcscue '" . 490

Cornprobar el disco rccuperado . 492

95. Rcpare y rccupere sistemas elf ficheros ReiserFS 493

Corregir un sistema de ficheros ReiserFS danado .

. 494

20

Contenido

Identificar ficheros en ellost+found de ReiserFS 499

96. Reconstruya datos dellost-l-found 500

Explorar d lost +found 501

Recuperar dircctorios del lost + found 503

Recuperar grupos de ficheros reconocibles 504

Examiner ficheros individuales 50S

Resumen " 509

9 7. Recupere ficheros borrados 509

Evitar carnbios adicionales en la parlicion " 510

Buscar datos desaparecidos " 510

98. Bonar ficheros permanenternente 511

Usar la utilidad shred 513

99. Harre discos duros permanentemente 514

Utilizar shred para Iirnpiar discos duros 515

Utilizar Darik's Boot and Nuke 516

Resumen 51 7

HJO .Recuperc ficheros perdidos y realice analisis forenses 518

Compiler e instalar The Sleuth Kit 519

Compilar e instalar Autopsy y software relacionado 520

Usar The Sleuth Kit para recuperar ficheros borrados 523

Resumen 525

lndice alfabetico 529

Prologo

Los autores de este Iibro hemos sido administradores de sistemas durante un tiempo. Cuando surgio la oportunidad de escribirlo, nos centramos inicialmcnte en truces bastante atractivos que habiamos desarrollado 0 usado en nuestras carreras de administraci6n de servidores y sistemas. Adernas preguntamos a amigos, que, a su vcz preguntaron a sus amigos, y fuimos, por tanto, capaces de conseguir estupendas contribuciones para aumentar asf las cosas que se nos iban ocurriendo. Todo el mundo tienc problemas que quiere resolver. A Bill le gusta tener Ia autenticaci6n distribuida, recuperar archivos borrados, y ajustar sistemas de ficheros en general. A Brian hacer las tarcas de administraci6n mas eficientes, fiables y repetibles: tiene un manton de scripts geniales para hacer varias tareas; y adora tomar y usar datos de fuentes remoras. Cada administrador de sistemas tiene sus tecnicas favoritas para resolver problemas, asi que truco es al que haec truces 10 que buen consejo 0 tecnica es al adrninistrador de servidores 0 sistemas. Los trucos de administraci6n de sistemas son esencialmente maneras inteligentes de abordar cualquier problema que Sf intenta resolver, ya sea descubrir como recuperar datos perdidos. intentar recopilar informaci6n de clientes distribuidos en un solo lugar, de rnanera que se pueda tcner facilmente una idea del contenido, 0 cualquier otra cosa que surja

Segun fuimos trabajando en este Iibro, esc primer planteamiento sobre los trucos mas practices sobre administracion de sistemas mut6 en uno sobre consejos y trucos generales que consideramos titiles para simplificar nuestras vidas como administradores, Notamos. ademas. que no habfa realrnente ningun libro disponible en la Iinea de "Lo que habrfamos deseado que los anteriores adminis-

24

Linux Server. Los rnejores trucos

Prologo

25

tradores de sistemas nos hubieran contado." Dejando a un lado preguntas obvias del tipo "zdonde esta la dave de la cadena RAID?" y "z quc era la contrasefia de root (superusuario) en <inserte el nornbrc de sistema aqui> '?," decidimos "trucar" Ia seric de libros sobrc truces, un poco, e incorporar alguna informacion general sobre administracion de sistemas y consejos, como otro de los ternas primaries de este libro. Esto significa que ofrcccmos un poco mas de conocimicnto basico que el que se ve norrnalmente en los Iibros de trucos.

No herira nuestros sentimientos si decide saltars« las cosas que ya conoce. pero esperamos que todo el material sea encontrado de utilidad pOl' algunos de nuestros lcctores. Nosotros 10 podriamos haber usado hace arios, y como Mr. Rogers solia decir: liEs bello compartir",

A veces, dernasiado software y demasiadas opciones pucden ser un problema. l.Deberfamos usar MTRG, Ethereal, Ether.Ape, 0 alguna otra aplicacion para observar el trafico de red? iDeberiamos crear volurnenes logicos usando RJ\ID linear, LVM, LVM2, 0 EVMS? lDeberiamos hacer nuestros currfculum en rl'tX, La'IeX, troff lout, SGML, 0 XML? Se hace a la idea. Si necesita resolver un problema, pero no sabc que herramienta utilizar de entre el millar de opciones disponiblcs, puede gastar exponencialmente mas tiernpo seleccionando cl software cor recto y desarrollando, que el realrncnte necesario para resolver el problema. Por esta r'azon, un Iibro sobre soluciones practicas para problemas comunes ha sido muy divertido de escribir, y deberia ahorrarle mas de una noche de sesion Google, ast como ofreccrle informacion complernentaria y que es actual en el memento de su escritura. Todos los trucos de este libro son tecnicas que hernos usado en varias ocasiones, que vernos COlTlO un ahorro de ticmpo tv de problemas) y que son por 10 general, francarnente Miles, a la par que iriteresantes.

Aparte de Ia cuestion del "dernasiado software" recien mencionada, un concepto relacioriado (y el profundo, oscuro secrete del c6digo abierto) es que no todos los proyectos de codigo abierto estrin siempre "cornpletados", (iiPor cl amor de Dios, no se 10 diga a Microsoft!!) No solo se tiencn muchas, muchas opciones en el espacio del c6cligo abierto, sino que las que se cncuentran hacen tan s610 el 95 por 100 de 10 que se quiere, faltando el verdaderamente crttico 5 por 100. A pesar de que hay por ahi mucho software de codigo abierto de aspecto muy 1110- derno y Ilcno de asistentes, a veces cl tirachinas que da fielmente en el blanco es preferible al cromado rayo mortal de fusion que funciona solo d 75 por 100 de las ocasiones,

De alu, libros Como este en el que la gentc explica como realizar las cosas usando paquetes que dIns han usado realmente, y de los que a menudo todavia dependen, incluso si cstos paquetes no son perfectos.

Las herramientas discutidas en estos trucos son general mente buenos complementos a 1a caja de herramientas/librerfa de conscjos y trucos de enalqlliera, y mostraremos como usarlas para gran variedad de prop6sitos.

De nuevo, mas que sirnplemcnte cxplicar como hacer tareas espccificas, hemos intentado afiadir un pequefio conocimiento basico y de contexte a nuestro enfoque. Este es un libro de tr ucos, pero ustedmercce un poco de informacion extra para poner dichos truces, herrarnicntas y solucioncs en el contexte adecuado. Siernpre que ha sido posible hemos identificado adernas otros paquetes y procedimientos que podrfan alcanzar el mismo objetivo, pero nos ccntramos en nuestras soluciones prefcridas para difercntes tipos de problemas.

iPor que l.inux Server. los mejores trucosr

El terrnino truco (hack) tiene mala rcputacion en la prcnsa especializada, donde Sf usa para hacer referenda a alguien que irrurnpe en sistemas y causa estragos, usando un ordenador como arma. Entre Ia gente que escribe codigo, en carnbio, el termino truro hace referencia a una solucion "rapids y sucia" a un problema 0 a una mancra inteligcnte de hacer algo. Y el que los haec recibe todo tipo de elogios, como alguien creative), que Liene los conocirnicntos tecnicos necesarios para hacer las cosas. Las series de libros sobre truces de esta editorial, son un intcnto de recuperar la palabra, docurnentar las bucnas mancras en las que Ia gente usa los truces, y pasar esta ctica de participacion creativa a los no iniciados. Vel' como otros abordan sistemas y problemas es a menu do el modo mas rapido de aprender una nueva tccnologia. Linux Server. Los rnejores tr ucos, surgio porgue los administradores de sistemas de hoy en ella necesitan lidiar con un vasto numcro de situaciones, sistemas operatives. paquetes de software, y problemas, pero bay aun muchos mas truces, consejos practices. y marieras de resolver las situaciones a las que los adrninistradores de sistemas se tienen que enfrentar, que los que Sf pueden incluir ell un solo volumen (esto es, en uno que un simple mortal pueda levantar). La potcncia y flexibilidad de Linux implica que hay una incretble cantidad de software fantastico ahi fuera, esperando a resolver sus problemas de adrninistracion de sistemas, si llega a conocerlo. De ahi Linux Server. Los mejores truces. Este libro discute alguno de nucstros paquetes de software favorites. c6mo usarlos para hacer su vida como administrador de sistemas mas facil, Ia mejor rnanera de mantener los sistemas de los que ustcd es responseble funcionando Con suavidad y como tener f'elices a sus usuaries (aunque punk que nunca lleguen a saber 0 a aprcciar 10 ingenioso y "magico'' que usted ha sido).

Como usar este libro

Puede leer cstc libro d.e principio a fill si 10 prefiere, pero eada truco es independiente, asi que sicntase libre de navegar y saltar directamenle a las diferentes

26

Linux Server, Los mejores trucos

Pr61ogo

27

secciones que mas Ie intercsen. Hernos intentado ademas no ser timidos 0 dernasiado centrados en "nuestro Iibro": si cxisten otros recursos sobre algun tcma que nos gusta particular mente 0 que encontrarnos de valor, hemos puesto refcrencias adios al final del truco. Algunos de ellos son otros libros de csta misma editorial, pero no los recomendamos por ninguna otra raz6n que el hecho de que los hemos encontrado utiles. Tan solo rccomendamos aquello en 10 que creemos.

Capitulo 1 - Autenticacion en Linux: Use los truces de este capitulo para explorar las opciones de autenticacion que cstan disponiblcs en los cntornos hderogeneos de red, y simplifique Ia administracion de cuentas de usuario y contrasefias. Este capitulo adernas ofrece algunos trucos "rapidos y sucios" para aquellos desafortunados mementos en los que, por una razon u otra, tiene que blcquear usuaries en deterrninados sistemas rapidsmente.

e Capitulo 4 -l\lgunos trucos geniales: Este capitulo presents una variedad de consejos y tecnicas muy Miles sobre administracion de sistemas que hernos acumulado a 10 largo de los aiios, induyendo como mantcner procesos ejccutando sin tcner que escribir un proceso demonic 0 perrnanec-r con la sesion abierta, como usar PXE para iniciar Linux por red, como compartir informacion con nuestros colegas administradores de man era centralizada, como sacar el maximo provecho de las d~1sicas pero incrcfblemente utiles aplicaciones orientadas a terminal (tales comominicom, screen, y vi) etc. Discutiremos adernas como crcar documentacion sobre sus pohticas y procedimientos adrninistrativos de manna rapida y facil, de tal manera que sus sucesores puedan comprender como funcionan las cosas despues de que Googlc le contrate y tenga que dejar su empresa actual.

Capitulo 5 - Gestion de almacenamierrto y copias de seguridad: Si tan s610 todo Sf mantuviera ejccutando eternarnente. el almaccnarniento fuera infinite, y los usuaries no ejecutaran riunca el cornando rm con los argumcntos equivocados, este capitulo seria innccesario. iHienvenido a La Tierra! Las cosas realmente no funcionan de esc modo. Sin embargo, los tTUCOS en este capitulo exploran algunas muy buenas maneras de facilitarle 1£1 gesti6n del almacenarniento. dcsplegar nuevos sistemas, hacer copias de scguridad de los gigantcscos discos actuales, e induso rcducir la necesidad de algunas de las pcticiones de rccuperacion de datos que ocasionalrnentc atascan la bandeja de entrada de todo administrador de sistemas.

Capitulo 6 - Estandarizar. compartir y sincronizar recursos: Los entornos de red, Iacilitan el almacenarnieut» de datos en diferentes cquipos 0 en servidorcs centralizados, Este capitulo ofrece varios consejos y truces para gestionar cl almacenarniento distribuido y ascgurarse de que los cntornos adrninistrativos de nuestros sistemas estrin sincronizados.

Como esta organizado este Iibro

Este Iibro esta dividido en 10 capftulos, organizados pm materia:

Capitulo 2 - Coriecttvtdad remota a interfaces grMicas (GUI): Estc capitulo explora maneras de conectarse a sistemas remotes. Cuando simplcrnerite no se puede estar en todas partes al mismo tiernpo, cs incrcfblerncnte util ser capaz de accedcr a multiples consolas y terrninales grMicos desde 1a comodidad de su oficina 0 sala de rnaquinas. Encontrarn que muchos de los truces en cstc capitulo son consrjos practices que podria querer pasar a aquelios usuaries que a su vcz necesitcn trabajar sobre multiples sistemas, sin importer d sistema operative qUf esten ejecutando.

Capitulo 3 - Servicios de sistema: Las rcdes Iacilitan el configurar servidores en determinados sistemas para satisfacer las I1fccsidadcs de los clientes a 10 largo de su entorno inforrnatico. Los truces en este capitulo explican corno config urar servidor es centr alcs para que hagan cosas corno sincronizar Ia hora en todos los sistemas de su cntorno (via NTP), asignar dirccciones IP a equipos rccien conectados (usando DHCP), e integrar cstos servicios con los ya cxistcntcs (con DlICf y busquedas de nombres hcchas por DNS, por ejemplo). Este capitulo disc ute adernas la configuracion de acccso centralizado a impresoras dcsde ambos extremes: esto ('S, como configurar sus scrvidorcs de impresion, y como acceder a ellos des de los diversos sistemas operativos que sus usuaries pueden estar ejecutando en su puesto de trabajo.

Capitulo 7 - Segurrdad: La seguridad no es solo un trabajo, es una aventura sin fin en el horizonte. Los piratas inforrnaticos estan siempre trabajando en nuevas maneras de asaltar las maquinas y reeks existcntes, y se necesita, bien bloquearlos 0, como minirno, averiguar 10 que rompieron cuando entraron. Los trucos en este capitulo discutcn una amplia gama de herramientas de seguridad y de tecnicas que pueden ayudarle a dormir pOI' las noches y proteger sus sistemas al mismo tiernpo.

Capitulo 8 ~ Solucion de problemas y rendimiento: Este capitulo ofrece tecniras para optimizer el rendimiento de los sistemas, ya sea descubrir qulen esta ocupando toda Ia CPU (Central Processing Unit, Unidad Central de Proceso) para cerrur las sesiones "satura-redes" de est' usuario, usar controles muy efectivos en el sistema de ficheros /proc para ajustar el rendimiento del sistema, 0 bien usar sistemas de ficheros con iourneling para

28

Linux Server. Los rnejores trucos

Pr6Jogo

29

minimizar el tiempo de reinicio del sistema. Adcmas ofrece algunos "truces X", tales como una manera sencilla de usar rrniltiplesmonitores en un solo sistema, y una discusion de c6mo reducir la sobrecarga del escritorio descartando KDE a GNOME en favor de gestores de X Windows mas simples que eliminan los "hips" y los silbidos de alarrna intensidad de CPU y que, en realidad, tan solo gestionan ventanas.

Capitulo 9 - Ficheros de bitacora y monitorizacion: Los ficheros de bitacora (log) son sencillamente como un diario para el sistema y sus aplicaciones principales: son un registro muyutil que pucde usar para rcconocer problemas emergentes y corrcgirlos antes de que maduren en catastrofes. Este capitulo incluye truces que le capacitan para centralizer la informacion de bitacora de varias maneras, ser avisado cuando los problemas surgen, y sacar el maximo provecho de Ia informacion de estado del sistema, ya sea la propia informacion de bitacora, los datos de controlador del disco interne. 0 la informacion de cstado de hardware remote que puede recoger via SNMP. Adcmas discute herramicntas para monitorizar su red y dcscubrir al usuario BitTorrent que esta ralentizando Ia navegacion por Internet de su jefe.

Capitulo 10 - Rescale, recuperacion y reparacion de sistema: Tarde 0 temprano, algun sistema del que usted es responsable se caera. Si no puede arreglar sus problemas carnbiando placas, los trucos de este capitulo Ie cnsefiat-an como arrancar sistemas mutilados, de tal manera que pueda diagnosticar problemas, reparar sistemas de ficheros enmohccidos. e incluso (si tiene suertc) recuperar ficheros borrados 0 datos que cstaban almacenados en discos que habian pasado a mejor vida. Prucbe los truces y consejos de: este capitulo si esta teniendo problemas, siempre hay tiernpo para entrar en panico mas tarde.

Utilizaremos un tipo de Ietra en negrrta para indicar entradas literales de campos 0 variables, para los nombres de los botones y para las combinaclones de teclas.

Ademas del contenido mencionado, en cada capitulo se induyen una ser'ie de notas que diferenciamos en funcion del tipo de icono que las acornpafia:

Este icono mucstra un truro, un conscjo 0 una nota general con informacion adicional de utilidad sobre el tema en cuestion.

Este icono indica una advertencia 0 un aviso importante que no debe dejar de leer. A veces indica que su dinero 0 intirnidad podrian estar en riesgo.

Los iconos de tcrmornetro, encoritrados al lado de cada truce, indican la cornplejidad relativa del truco:

r .. ]1 Nivel Iniciacion

(~

I~.:I Nivel Medio (~)

I.~.·· Nivel Avanzado II

Convenciones utilizadas en este libro

Se han ntilizado las sigllientes convcnciones tipograficas:

Los nombres de instrucciones 0 de cornandos de prograrnacion, para ejemplos de c6digo, rutas de archives y direcciones de Internet, apareceran en un tipo de Ietra monoespacial.

Para los menus, submenus y menus contextuales: cuadros de dialogo y sus secciones: barras de herramientas: fichas, solapas y pestafias: cuadros de lista y sus opciones: casillas de verificacion, botones de opcion y cuadros de texto, utilizarcmos el tipo de letra Arial.

CAPITULO 1

utenticacion en Linux

Truces 1 a 9

La seguridad es la principal preocupacion de cualquier adrninistrador de sistemas, espccialmente en los entornos de red completamentc conectados de hoy' en dia. Despues de bloqucar redes y sistemas para minimizar eI numero de oportunidades que los intrusos puedan tener de seceder a sus sistemas (como se discute mas adelante en este libra), proporcionar mecanisrnos seguros para habilitar el inicio de sesion de los usuarios en sus maquinas es crttico para su seguridad. Asumamoslo, cuaiquiera con acceso fisico 0 por red a un dialogo de inicio de sesi6n en una de sus maquinas, normalmente tiene unas cuantas ocasiones de intentar piratcar el nombre de usuario y la contrasefia de alguien para ganar acceso.

Muchas organizaciones intentan asegurar los inicios de sesion simplemente asignando contrasefias que pareccn ruido de linea 0 comandos de TECO. Dcsgraciadamcnte, csta estrategia apunta a s610 un aspecto de Ia autenticacion y ticne el desagradable ef'ecto secundario de hacer que la mayoria de la genre escriba sus contrasefias, ya que tan s610 E1 Increfble Kreskin podrta recordarlas.Asf que, 2.cu<iles son las alterriativas? Como se explica en este capitulo, los mecanisrnos de autenticacion flexible, tales como los PAM (Pluggable Authentication Modules) hacen que Ia secucncia de inicio de sesion invoque multiples controles de seguridad, mas alla de una simple contrasefia, para ayudar a minimizar las ocasiones de inicios de scsion no autorizados. De manera similar, los rnecanismos de autenticacion por red pucden elevar Ia scguridad del inicio de sesion centralizando los controles de autenticacion en scrvidores seguros y pueden proporcionar otros beneficios organizativos, tales como cornunicaciones de red codificadas y proveer de informacion de inicio de sesion a difcrentes sistemas operatives, no 5610 a sus

32

Linux Server. Los mejores trucos

1. Autenticacion en l.inux

33

maquinas Linux. Los mecanismos de aut enticacion en red bcnefician intrfnsicarnente a los adrninistradorcs de sistemas proporcionando una Iocalizacion fiable donde crear V gcstionar Ia informacion sobre sus usuaries. Por supuesto, todavia tendra que convencerles de no usar su cumpleafios, su numero de matricula, 0 los nornbres de sus seres queridos como contrasefias, pcro no podernos ayudarle demasiado en esto.

Los trucos en estc capitulo discutcn varias maneras de lidiar con el amplio cspectro de cuestiones existentcs sobre Ia autenticacion de usuaries, des de los diversos metodos que un administrador de sistemas puede usar para desactivar rapidamente todos los inicios de sesion 0 cuentas cspecificas, pasando por algunos buenos ajustes que le pucde hacer a su fichero de contrasefias local, hasta los mecanisrnos de red que puede usar para centralizer la autenticacion para diferentes tipos de sistemas. Proporcionar mecanismos de autenticacion seguros para sus sistemas no tiene por que SCI' una pesadilla, deje que los truces de este capitulo le ensefien unas cuantas tretas, V clija el mecanisme de autenticacion que mejor se adapte al entorno infonnMico del que es responsable.

Desactivar cuentas de usuario instantaneamente

del fichero / etc /pas swd contienc una x, su sistema esta usando el fichero / etc I shadow para almacenar Ia informacion sobre las contrasefias. Si ve otros caracteres entre los primeros y los scgundos dos puntos, su sistema esta todavia alrnacenando la informacion de contrasefias en el fichcro I etc /passwd.

Para desactivar rapidarnente cuen las en un sistema de ficheros Linux 0 en una estacion de trabajo de usuario, edite el fichero / etc I shadow e inserte un asterisco (*) como primer caracter en el segundo campo del fichero (despues de los primeros dos puntos), que es donde Ia contrascfia esta almaccnada. Esto (vita los siguientes inicios de sesion, pero deja la contrasefia existentc intacta. S1 las circunstancias le exigcn una vuelra atras y se Ie solicita re-activar la cuenta de usuario, simplemente clirnine el asterisco para re-activar los inicios de sesion con la contrasefia existente. Esto es similar al uso del cornando usermod -L user, que inserts un signo de exclarnacion (!) al inicio de Ia entrada correspondiente a la contrascna de un usuario para bloqucarlo. En realidad, si su sistema propor~ ciona el comandousermod, puede simplemente usar este comando para desactivar una cuenta, siemprc V cuando lusr I sbin cste en su variable PATH, sin embargo es bueno saber como funciona realrnente d comando.

Nunca qucrra eliminar los datos de un usuario hasta que se les hava heche una copia de scguridad, asi que utilizar userdel -r user con el usuario seria el cornando equivocado si 10 que se neccsita es simplernente bloquear a un usuario. Eliminar una cucnta de usuario existente con el comando userdel ademas a menudo deja abierto el rcutilizar el antigun identificador de usuario (UID) Ia proxima vez que se crca una cucnta, 10 que deberfa de 11' en contra de las poltticas de IT por razones de seguridad V confidencialidad.

La reutilizacion de un UID es una mala idea, va que si crea una nueva cuerita con un UID de cxistencia previa en su sistema, el nuevo usuario tendra posesion de algunos ficheros que todavia permanecen ell cl sistema y que fueron propiedad del usuario anterior al que correspondia dicho urD. Esto puede adernas OC(1- sionar un problema si los ficheros 0 directories propiedad del usuario anterior son recuperados de copias de scguridad por alguna raz6n. Adoptar una politics de no rcutilizacion de los UID evita que los usuaries obtengan derechos "accidentalmente" sobre ficheros a los que realrnente no deberian tencr aceeso.

En una ernergencia, he aquf como desactivar rapidamente una cuenta de usuario usando tan s610 un editor de texto,

Tarde 0 temprano todo administrador de sistemas recibe una Hamada para desactivar una cuenta de usuario. Tanto si es debido a una finalizaciou como por motivos de seguridad general, debe moverse rapidamente para satisfacer al departamento de Recursos Humanos 0 a Ia capa de gestion que esia al otro lado de la linea. Si esta acostumbrado a las herramicntas graficas para gestion de usuarios, esto puede llevar un poco de tiempo, pero, afortunadamente, existe una solucion rapida y sencilla para satisfaccr esta peticion que tan solo requiere uri editor de texto.

Desactivar cuentas en sistemas con autenticacion local

En los sistemas Unix antiguos las contrasenas Sf almacenaban en d fichero / etc /passwd, pero fueron rnovidas al fichero /etc/shadow (que tan solo puede ser letdo por cl super-usuario) en los sistemas mas recientes, por motives de seguridad, para evitar que los usuarios comunes tuvieran acceso a 1£1 forma codificada de la contrasefia de un 'usuario. La mavoria de los sistemas Linux que usan autcnticacion local almacenan las contrasefias en el fichcro / etc I shadow, aunque algunos todavia usan I etc /passwd pOl' motivos de compatibilidad con aplicaciones antiguas. Si d segundo campo separado por dos (Juntos (:) en cada entrada

Cuando des active una cuenta de usuario no olvide cambiar 0 desactivar las contrascfias de inicio de sesion para las otras cuentas que pudiera conocer d usuario.

Desactivar cuentas en sistemas con autenticacion distrihuida

Si su sistema usa un mecanisme de autenticacion distribuida, tal como LDAP (Lightwight Directory Access Protocol) 0 NIS (Network Information Service, d1sefia-

34

Linux Server. Los mejores trucos

'1. Au ten ticaci6n en Linux

35

do originalmente pOl' Sun Microsystems para usar con el sistema de ficheros en red NFS (Network File System)), dcsactivar rapidamente una cucnta de usuario es ligeramentc mas cornplicado, pero es mucho mas importante que sea capaz de haccrlo. 5i se esta utilizando autenticacion distribuida, hasta que la cuenta sea desactivada, un usuario tiene acceso a todos 105 equipos de su sistema que compartan cste mecanisme de autenticaci6n. Los sistemas que usan NI5 para validar usuarios dependen de ficheros password y shadow centralizados, que son distribuidos a los clicntes de NIS por medio de un servidor NIS. Muchos sistemas NI5 alrnacenan la informaci6n sobre contraseiias directamente en el fichero de C011- trasefias NI5 (/var /yp/ypetc/passwd), ya que usar NIS para cornpartir los ficheros shadow (/var /yp/ypetc / shadow) compromctc seriamcnte la seguridad irnplicita de dichos ficheros. En los sistemas que usan autenticacion local, solo el super-usuario pucde leer el fichero / etc / shadow, pero en los sistemas que utili zan NIS, cualquier usuario que solicita informacion del servidor NIS pucdc ver este fichero.

Para desactivar rapidamcnte una cuenta de usuario en un sistema que usa NIS, puede editar dircctamerrte el fichero maestro de NIS correspondicnte al fichero password 0 shadow exactarnente de In misma manna que edito In copia local en Ia seccion previa de este truco, poniendo un asterisco delante de la entrada correspondientc al usuario en cucstion. Los ficheros maestros de NI5 se almacenan en el directorio /var /yp/ypetc/ de su servidor NI5. Si cl segundo campo separado par dos puntos (:) en cada entrada del fichero /var /yp/ypetc/passwd contienc una x, 5U sistema usa el fichero /var/yp/ypetc/shadow para almaccnar Ia informacion rclativa a claves de usuario. 5i ve otros caracteres entre los primeros dos puntos y los segundos, su sistema todavia guarcla la informacion de contrasefias en el fichero /var /yp/ypetc/passwd.

Una vez que ha modificado bien el fichcro /var /yp/ypetc/passwd 0 el /var/yp/ypetc/shadow debe pasar todo a los clicntes de NIS cambiando al directorio /var /yp y usando el comando make:

relative a cuentas de usuario. Sin embargo, ya que los sistemas que usan LDAP para autcnticacion no usan un fichero password 0 shadow estandar para almacenar la informacion relative a contraseiias de usuario, tan solo puede desactivar [as cuentas de LDAP cambiando la informacion en Ja base de datos. Puede desactivar una cuenta de usuario ya sea cambiando Ia informacion d~l registro refercnte a una cuenta especffica (conocido como "atributos") en la base de datos; carnbiando la lista de control de acceso (ACL, Access Control List) en Ia informacion sobre la cuenta, de tal manera que el usuario ya no tenga acceso a ella; 0 bien cambiando directamente Ia contrasefia del usuario en la base de datos.

A mcnos que este cornpletamente familiarizado con los esquernas usados en su base de datos LDAI~ desactivar una cucnta cambiando su contrusefia es d metodo mas facil y rapido.

Esto no exige que rccuerde cada caracteristica de su esquema de usuaries /cnentas en LI)AP, y puede ser realizado usando el comando ladppasswd. Para cambial' una contrasefia de usuario usando autcnticacion por LDAI~ ejecute este cornando como super-usuario, e introduzca una nueva contrasefta cuando asf se le solicite:

# Idappasswd -1 user

Edite su fichero de contrasenas para tener mayor control de acceso

# cd /var/yp;make

Coo tan solo editar una linea a unos cuantos ficheros, puede controlar quien puede tener acceso a sus servidores.

No pucdo citar estadfsticas, pero rni cxperiencia echando una mano a amigos y clicntes me ha llevado a la conclusion de que la mayoria de las organizaciones tienen una vision de "todo 0 nada" para crear y gestionar cuentas de usuaries en sus maquinas. Si 1.'1 organizacion nccesita NIS, su fichero nsswitch.conf did que use NIS para obtener la informacion referente a cuentas de usuario. Si la organizacion usa LDAP, usaran LDAP para la informacion de cuentas de usuario. El problema aquf reside en que esto implica que cada una de las cuentas en el directorio es en realidad una cuenta valida en cada maquina, tanto si los usuarios perrenecen a ella como si no.

Por supuesto, hay cortafuegos. listas de control de acceso (ACL) en los rourer. y todo tipo de dispositivos y software de seguridad entre los servidores y los usuaries que no deberian tener acccso a ellos, pero los centres de datos Son gestionados por human os , y los humanos cometernos errores, especialmcnte en redes extcnsas y complcjas. Una errata en la ctiqucta de una VLAN (Virtudl Local Area Network, Red Virtual de Area Local) en el puerto de un switch, 1'01' ejemplo, y de repente nadie en el departamento de ingenieria podra tener acceso por 55H

Por supucsto. siemprc puede carnhiar la contraseita de uri usuario en NI5 ejecutando el comancioyppasswd user, pero si en algim memento necesita reactivar la cucnta tendril que hacer que el usuario introduzca una nueva contrasefia.

LDAP es una tecnologfa distribuida, mucho mas poderosa que NIS, ya que proporciona una fuerrte central desde Ia que gran cantidad de aplicaciones de todo tipo pueden obtener distintas clases de informacion. Como se discutc con mas detalle posteriormentc. los directorios de informacion de LDAP, tambien conocidos como bases de datos de LDA1~ proporcionan una fantastica solucion para tener una Fuente centralizada, cxtendida a toda la cornpafiia. de donde obtcner informacion rclacionada con cl inicio de sesion, las contrascfias. y otro contenido

36

Linux Server. Los mejores trucos

al servidor de aplicaciones de produccion. Este trueo le muestra c6mo unas simples edicioncs de texto pueden perrnitirle Iimitar que usuaries en un directorio NIS pueden acccder a la maquina local.

Las entradas en el fiehero /etc/nsswitch. conf de un sistema Linux deterrninan c6mo estc resuelve las peticiones de informacion sobre usuaries. grupos de usuaries. y otra informaci6n del sistema.

Concentremonos tan 5610 en la linea passwd, Si esta usando NI5, tendra el siguiente aspecto:

passwd

fi.les ni.s

Esto signifiea que cuando el sistema esta intentando cncontrar informacion sobrc una cuenta de usuario, tal como el interprete de comandos de inicio de sesion, 0 a que nombre referencia un uro, primero buscara en el fichero / etc /passwd, y si no Io encucntra probata con NIS. 5i un usuario Sf encucntra en uno de cstos medios, es una cucnta valida y (a menos que haya otro tipo de proteccion) la operacion tendra exilo.

Pero suponga que s610 quiere que un grupo de gentc tenga cuentas validas en las maquinas, en vez de todo el mundo en el dominio NIS al complete. iPodemos hacerlo! Como ejernplo, vamos a afiadir dos Iineas al final del fichero / etc /passwd:

+@ad.'Uins +jonesy

La primera linea hace que todos los usuaries en el grupo de red admins tellgan cuentas validas en cste equipo. La segunda Iinea haec de jonesy una cucnta valida.

£1 resto de cuentas seran no validas cuando completcmos la configuracion. 1,0 unico que nos queda pm hacer es editar el fichero /etc/nsswitch.conf para qne hacer que tenga e1 siguicnte aspecto:

passwd: compat passwd_compat: nis

La primera linea hace una Hamada al modulo nss_compat, y Ia segunda linea le dice al modulo nss_compat que use NIS para la busqueda (otros valores validos aqui sedan nisplus 0 ldap). Ahora, para probar, ejccutamos el siguiente comando:

$ getent passwd jonesy

Esto consultara el fichero / etc/nsswi tch. conf para descubrir de donde conseguir la informacion. Cuando yea la palabra clave compat, ira al fichcro / etc

1. Autenticaci6n en Linux

37

/passwd para ver si jonesv esta incluido en d. 5i la cuenta no se encuentra aht, no mostrara ninguna salida pm pantalla. Si sf que esta, solicitara 5U registro de cucnta asociado al servidor NI5, dicho registro sercl del estilo:

jonesy:x:l001:100:Brian Jones:/home/jonesy:/bin!bash

Adicionalmente, ejecutar getent passwd sin argumentos devolvera los registros para cada cuenta valida en el sistema, 10 que en nuestro ejemplo incluirta a todos los usuaries del gnrpo de red admins, la cuentajonesy, y (por supuesto) toda In informacion sobre cuentas de usuario que se encontraba en cl fichero /etc/passwd antes de que 10 hubieramos modificado .

. A vcces se puede dcsear ser capaz de seceder a la informacion de usuario de cuentas que no son validas en Ia rna quina, si bien, en otras circunstancias. las cuentas que debet-ian ser validas en una maquina en particular no debertan, en realidad, ser capaccs de iniciar sesion en esta maquina, Por ejemplo, pongamos que no quiero que los usuarios tengan sesion en rni servidor de cor reo, pero mi servidor de correo necesita ser capaz de hacer corresponder el correo entrante con los Hombres de cuenta para aceptarlo. En cas os COlno estos, puede ariadir csta Iinea al final de su fichero /etc/passwd:

+: : : : : :! sbin!nologin

Ahora. ejccutando el cornando getent passwd obtendra un listado de todas las cuentas del sistema, scguidas de las cuentas que afiadio antes, y, pm ultimo, de cualquier otra cuenta, Le mostrara registros completes para todas las cucntas, pero el interprete de cornandos para las del final sera I sbin/nologin, 10 que evita que estos usuaries puedan obtener un interprcte de comandos dentro del sistema.

Tenga en cuenta que esta linea necesita scr Ia ultima del fichero de contrasefias, ya que las linens se ken e interprctan en orden. 5i la linea mencionada fuera anterior a la linea +jonesy (rni cuenta), por ejernplo, me encontrarta antes un registro con un interprete de cornandos /sbin/nologin, y no serfa capaz de iniciar una sesion en el sistema, incluso cuando +jonesy aparece mas tarde en el fichero, Fijese que, adernas de usar el signo mas (+) para afiadir usuaries validos, puede usar el signo menos (-) para excluir usuaries. Si quierc que todas las cuentas sean validas menos un grupo de ellas, es facil de haccr, Pur ejemplo, si quisiera que todas las cuentas fueran validas excepto aquellas cuentas en el grupo de red chicosrnalos, podria agregar una linea como csta al fichero / etc /passwd:

-@chicosmalos

Estas cuentas ya no podrfan ser capaces elf iniciar una scsion en 13 maquina en cuestion.

38

l.inux Server. Los mejores trucos

Denegar cualquier acceso en menos de un segundo

He aqui un metodo seguro para mantener alejados a todos los usuarios mientras se realiza mantenimiento temporal 0 se soluciona un problema.

Todo administrador, eventualmentc, neccsita tcner una maquina ejccutando en modo rnulti-usuario complete, con todos los servicios 1evantados, pero al mismo tiempo denegando por complete el acceso de sesi6n a In maquina. E~to es n~~rmalmente con cl proposito de solucionar aIg(m problema, probar la instalacion de un nuevo software, 0 realizarmantenimiento 0 actualizaci6n de software. Hay un par de metodos rcalmente rapidos para hacer esto.

El primer metodo es, con diferencia, el mas rapido. Tan s610 cjccutc cl siguicnte comando (como super-usuario):

# touch letc/nologin

Esto dcnezara el acceso a cualquicra que intente iniciar una sesion en cl cquipo. O_uerra e:tar seguro de mantcner una sesi6n activa. en~a muq~iI:~ despue~ :Ie crear este fichcro 0 asegurarse de que d sllper-usuano ilene el irucio de sesion permitido en In consola local () via 55H, ya que UI: inicio de sesi~n como ~~perusuario se saltara cste mecanisme. Sabra que funciona porque la informacion de bitacora para ciertos servicios le dira que el acccso fue denegado debido a la presencia del fichero nologin. Otros tan 5610 diran "failed password."

Este metodo se puede mejorar por medio del uso de un fi~bcro nol.o?i~l.txt, donde pucde escribir un texto quc los usuaries venin cuando rntc~ten irucrar su sesi6n. Si tiene un pcriodo de inactividad ya prograrnado, por ejemplo, pucde incluir los detalles en este fichcro, de tal manna que los usuarios tengan un amistoso recordatorio de que la maquina no cstara disponible durante dicho periodo de inactividad.

El segundo metodo funciona solo si los servicios que esta ejecutando se hayan enlazados con libwrap, en cuyo caso puede desactivar lTIUY rapidamentc el acceso al sistema. Para comprobar que un servicio estu enlazado con libwrap. usc el comando Idd sobre el fichcro binario correspondiente al servicio. POl' ejemplo. para asegurarrne de que mi servicio SSH esta cnlazado con Iibwrap, he heche 10

siguiente:

# ldd /usr/sbin/sshd

linux-gate.so.l ~> (Ox004abOOO)

libwrap.so.O => lusr/libll.ibwrap.so.O (Ox0072fOOO) ... (mucho mas contenido no incluido)

La salida por pantalla anterior muestra todas las librerfas a las que el binarlo sshd esta enlazado. y Ia ruta al fichero de la librcria que se esta usando. Clara-

1. Autenticaci6n en Linux

39

mente, Iibwrap esta enlazado aqui. Una vez que ha confirmado que estc es el caso para los otros servicios que csta ejecutando, esta listo para el siguiente paso.

Cree un fichero llamado I etc Ihosts . deny. ALL, que deberfa consistir en 5610 una linea:

##### /etc/hosts.deny.ALL ALL:ALL@ALL

Ahora, cada vcz que necesite desactivar el acceso a la maquina. simplerncnte mueva sus fichcros /ete/hosts.allow y hosts.derry a otra parte Y mueva su fiche- 1'0 hosts.deny.ALL en su lugar.

He aqui una linea de comando que haec todo esto:

# cd letc; mv hosts.allow hosts.allow.bak; mv hosts.deny hosts.deny.bak # mv hosts.deny.ALL hosts.deny

Aflora Sf ha quedado con un solo fichero hosts.deny, que denicga el acceso a todo. Tenga en cuenta que no Ie avudara simplcmente mover aparte ambos ficheros, ya que tcpwrappers trata la ausencia de un fichero exactarnente como un fichero vacio. 5i no hay ficheros, tcpwrappers aetna como si tuvicra dos fichcros sin ningun control de aCCfSO para un servicio dado, iy pm defecto garantizara el acceso al serviciol

Personalizar fa autenticacion con PAM

los sistemas l.inux modernos usan Pluggable Authentication Modules (PAM) para proporcionar autentlcacion a servicios y aplicaciones. He aqui los detalles mas escabrosos que necesitara saber para usar los PAM para

asegurar sus sistemas de rnanera rapida y flexible.

Muchos sistemas Linux rcquieren autenticacion de un tipo u otro. En tiernpos pas ados, cada aplicacion nccesitada de autenticacion era compilada incluvendo informacion precisa sabre e] mecanisme de autcnticacion usado pOl' el sistema sobre cl que era ejecutada. El cambio 0 arnpliacion de un mecanismo de autenticacion, por tanto, requcna que tales aplicacioncs fueran actualizadas y recompiladas, 10 que es tedioso incluso cuando se tiene el codigo Fuente de todas las aplicaciones rclevantes del sistema.

Presentamos los PAM, que proporcionan un mecanisme flexible y dinarnico para autenticar cualquier aplicacion 0 servicio que los utilice. Las aplicaciones a servicios compilados con Ia librerta Linux-PAM usan ficheros de configuracion en formate texto para identificar sus requisites de autenticacion. Usar los PAM en su sistema le permite modificar requisites de autenticacion 0 integrar nuevos mecanisrnos de autenticacion, simplemente agregando cntradas al fichero de configuracion de PAM que se usa para una aplicacion 0 scrvicio cspecffico.

40

Linux Server. Los mejores trucos

Si bien la informaci6n aqni contenida puede parecer exagerada a primera vista, el conocimiento sohre los PAM y sobre c6mo funcionan los ficheros de configuracion de PAM es necesario para los siguientes euatro pr6ximos truces, que explican como integrar tipos especificos de autenticacion moderna en su sistema Linux sin tener que reescribir 0 recornpilar la rueda. iSigalllcyelldo, administradoresl

Vision general sobre PAM

Los PAM son modules de lihrcria compartidos, que son abiertos autornaticamente por las aplicaciones que han sido cornpiladas con la libreria de autcnticacion Linux-PAM primaria.

A las aplicaciones que usan los PAM (modules PAM, se les llama a veces) tfpicamcntc se II's haec rcferencia como aplicaciones PAM.

Los PAM satisfacen difcrentes partes de los requisites de autcnticacion para las aplicaciones PAM, mas 0 menos eomo el c6digo reutilizable y las librertas hacen para las aplicaciones en general. Por ejemplo, una version PAM del programa de inicio de scsion login puede invocar una variedad de modulos PAM que comprueben cosas tales como si cl usuario quc esta iniciando su sesi6n C01110 super-usuario 10 haec desde un terminal considerado como seguro, si los usuarios tienen perrniso para iniciar una sesion en el sistema en cse memento. y otros requisites similares de autenticacion.

Puesto que los PAM son modules de libreria compartidos, una version PAM del programa :csh puede reutilizar el mismo "ztiencn perrniso losusuarios para iniciar sesi6n en el sistema ahora?" m6dulo PAM que la version PAM de login, pcro aplicando otras reglas de mayor rdevancia para r s h que para logir:. ~os modules PAM tipicamente Sf almacenan en el directorio /lib/seeu:city, 51 hicn algunas distribucioncs mas antiguas de Linux alrnacenaban los PAM ell /usr / lib/ securi ty.

Los PAM usados pm diterentcs aplicaciones PAM puedcn ser dcfinidos de dos maneras diferentes. En implernentaciones PAM modernas, son controlados por ficheros de configuraci6n cspccfficos de la aplicacion localizados en el dircctorio fetc/pam.d.

En implcmcntaciones mas antiguas de PAM, todos los modules Pi\M usados pOI' las aplicaciones de un sistema eran dcfinidos en uri solo fichero central de configuracion, (etc/pam. conf. EI enfoque antiguo todavia se adrnite para mantener la eompatibilidad con las versiones antiguas mientras se prornueve el enfoque mas modcrno, pero esta obsolete, se usaran los contenidos del directorio /etc/apm.d en vcz de los del fichcro /ete/pam.conf si ambos existen en su sistema. Este truce se centra en los ficheros de configuracion PAM localizados ell / ete /pam. d, ya que esa es la manera en la que se usan los PAM en los sistemas mas modernos.

1. Autenticaci6n en Linux

41

Ficheros de configuracion PAM por aplicacion/servicio

Cada fichero de configuracion PAM en /etc/pam.d tiene el misrno nombre que el scrvicio 0 aplicacion PAM asociado y eontiene las reglas PAM usadas durante su proceso de autenticacion. El nombre del fichero de configuracion a usar Sf deriva del primer parametro pasado a la f'uncion pam_startO de la libreria Linux~·PAM, que es el nombre del servicio que esta sicndo autenticado (a menudo cl mismo de la aplicacion pm comodidad). Estes ficheros pueden adernas contener comentarios (cualquier caracter en una linea a continuaci6n del tradicional signo almohadilla (#) se interpreta como un comentario).

Cada lfnea que no es un comentario en uno de los fichcros en / etc /pam. d define como un modulo PAM es usado como parte del proceso de autenticacion para cl servicio 0 aplicac.i6n asociado, Cada uno de estes ficheros puede contener cuatro campos separados por cspacios en blanco, los primeros trcs de los cuales son obligatorios. Estos campos tienen el siguicnte significado y contenido:

module-type: El tipo de modulo PAM definido en la linea. Un tipo de modulo PAM define como es usado durante cl proceso de autenticacion. Valores validos son:

au th: ldentifica una comprobacion de autenticecion para verificar, bien Ia identidad del usuario, 0 bien que los requisites del sistema Sf han cumplido. Requisitos de sistema comunes son que un servicio pueda ser iniciado en el momento actual (por cjernplo, que / etc /nologin no existe cuando un usuario esta intcntando iniciar una sesion), que se cste usando un dispositive aceptable (0, 10 que es 10 mismo, que el dispositive cste incluido en /etc/securetty), si el usuario cs el slIpcr-usuario, etc.

account: Verifies S1 el usuario puede autenticarse en base a rcquisitos del sistema tales como si eI usuario posee una cuenta valida, d numero maximo de usuarios admitido en el sistema, el dispositive que se esta usando para acceder al sistema, si el usuario hene acceso al scrvicio 0 aplicacion solicitado, etc.

password: Verifica Ia capacidad de un usuario para actualizar mecanismos de autenticacion. Normalmcnte hay un modulo tipo password por cada entrada auth Iigada a un mecanisme de autenticaci6n qtlC pucde ser actualizado.

ses s ion: Identifica los rnodulos asociados con tarcas que deben Set hechas antes de que el servicio 0 aplicacion asociado sea activado, 0 Justo antes de terminer su ejecucion. Losm6dulos de este tipo normalmente realizan funcioncs tales como montar directories. llevar rc-

42

l.inux Server. Los mejores truces

gistro de la informacion de un proceso de auditoria de sistema, 0 garantizar que los recurs os del sistema cstan disponibles.

control-flag: Las consecuencias del valor devuelto por el modulo PAM especificado. Valores validos son:

e. required: Indica que el exito en la ejecucion ell' un modulo PAM.es obligatorio para cl tipo de modulo espccificado. £1 fallo de cualquier PAM marcado como required para un tipo de modulo cspecffico (.'lSI como eI de todos los etiquetados con auth) es cornunicado al servicio 0 aplicacion asociado solo despues de que todos los PAM requcridos para esc tipo de modulo han sido ejecutados.

$ requisite: Indica que un fallo del modulo PAM sera inmcdiatamente comunicado 0'11 servicio 0 aplicacion asociado.

e sufficient: Indica que el exito en la ejccucion del modulo PAM satisface los requisites de autenticacion de este tipo de modulo. Si ning(m otro PAM previo identificado como required ha fallado, ningun otro PAM para el modulo asociado sera ejecutado. E1 fallo de un PAM identificado como sufficient es ignorado mientras los posteriores modulos identificados como required para ese tipo de modulo tengan cxito. 5i un PAM anterior con el valor required falla, el exito de un PAM marcado como sufficient se ignora.

e optional: Indica que el exito de un modulo PAM no cs crttico para el servicio 0 aplicacion, a mcnos que sea el unico PAM para un tipo de modulo especifico. Si es aS1, su cxito o falIo deterrnina d exito 0 fallo del tipo de modulo especificado.

module-path: El nombre del modulo PAM asociado con esta entrada. Por defecto los modules PAM se cncuentran en / lib/securi t.y , pero este campo puedc identificar adernas modulos localizados en otros directories con especificar 1a ruta absoluta y cl nornbre de fichero de un modulo PAM ..

$ arguments: Opcional, argumentos espectficos del modulo.

..

Bien, esto probablemente ha sido dernasiado pesado pero una informacion de referencia necesaria.

Para ver todo esto en accion, veamos un ejemplo.

M6dulos PAM usados por el proceso login

E1 fichero de configuracion para los PAM usados por el programa login es /etc/pam.d/login.

1. Autenticar.ion ell Linux

43

En un sistema Red Hat de cosecha reciente, este fichero contiene las siguientes entradas:

#%PAM-l.0 auth

auth

auth account password session session

pam_securet ty. so

pam_stack.so service~system-auth pam ....... nologin. so

pam_stack.so service~system-auth pam_stack.so servi,ce=system-auth pam_stack..so service=system-auth pam_console.so

required required required requi.red required required optional

La primera hnea es un corncntario que identifiea a este PAM, conforme con Ia especificacion de PAM 1.0.

La segunda, tercera, y cuarta linea definen los requisites de autenticaci6n (auth) para los inicios de sesion de sistema, todos los cuales deben tener exito porqne estan identificados como required. La segunda linea invoca el modulo PAM pam_securetty.so para combrobar si el usuario ha iniciado sesion en un terminal seguro, como Sf define en el fiehero / etc / securet ty. La tercera lfnea invoca al modulo PAM pam_stack. so, un modulo ingenioso, usado ante todo en sistemas inspirados en Red Hat, que Ie capacita para llarnar al conjunto entero de requisitos PAM definidos para un servicio 0 aplicacion diferente (y asi descrito pOI' esc nornbre en un fichero aparte en /etc/pam.d.)

En este caso llama al conjunto (stack, pila) de requisites definidos pOl' el servicio system-auth. Le ccharernos uri vistazo mas tarde. Por ahora. cs suficicnte con saber que los requisitos de autenticacion especificados en esc fichero deben ser satisfechos. Finalrnentc, para envolver las entradas de modulo tipo auth para el programa login, la cuarta linea invoca al modulo PAM pam_l1ologin.so para comprobar si los inicios de scsion estan permitidos en el sistema en este mornento .

La quinta linea en este fichcro identifies los requisites para el tipo de modulo account, que en este caso utiliza el modulo PAM pam_stack. so, para verificar que el conjunto de requisites para el servicio sys tern- au th ha sido satisfecho.

De rnanera similar, la sexta linea en este fichero identified los requisites para cl t~l~.o de modulo password, que usa tambicn el modulo PAM pam_slack,so, para verificar que el conjunto de requisitos para e1 servicio sys tem-auth ha sido satisf'echo.

Finalmcnte, las lfneas septima y octava en cste fichero identifican los requisitos de scsion para el prograrna login. La linea septima usa cl, ya familiar, modulo PAM pam_stack. so, para verificar que el conjunto de requisites para el servicio system-auth ha sido satisfccho. La linea octava en este fichero determina un requisite opcional que es, que d usuario debe estar ejecutando en Ia consola, Si este modulo tiene exito, al usuario se Ie concede cualquier privilegio adicional

44

Linux Server. Los mejores trucos

asociado can este modulo PAM. Si este modulo falla, la autenticacion tiene exito, siernpre y cuando aquellos modules anteriorcs idcntificados como required hallan completado su ejecucion satisfactoriamente, pero el usuario no conseguira los privilegios extra.

Vamos a ver ahara d fichero lete/pam.d/system-auth en el mismo sistema, que contiene 10 siguiente:

#%PAM-l.O

# This file is auto-generated.

# User changes will be destr'oyed the next time authconfig is run.

auth required !lib!secur i ty !pam_env. so

autb auth account password password

sufficient required required required sufficient

/lib!security!pam_unix.so likeauth nullok

!lib/security/pam_deny.so

password session session

required required required

!lib!security/pam_unix.so /lib/security/pam_cracklib.so retry~3 type~

/ 1 ib/ securi ty /pam,_unix. so nullok use authtok mdS shadow

!lib/security/pam_deny.so /lib/security/pam_limits.so /lib/security/pam_unix.so

Ahora que ha cchado una ojeada a los ficheros de configuracion PAM, podra ver que el modulo tipo auth nccesita primero que el modulo pam_env.so tenga exito, luego intcntara ejecutar cl modulo pam_unix.so, que es un modulo generico que pucde realizar funciones para los tipos auth, account, password, y session, dependiendo de SLlS parametres.

Cuando se utiliza para el modulo tipo auth, verifica la idcntidad del usuario, establece credcnciales si ticnc exito, etc. Si este modulo tiene exito, la siguientc entrada necesaria para el modulo pam_deny. so no Sf ejccuta. Si el modulo pam_unix.so falla, pam rleny.so es ejecutado devolviendo un codigo de error para asegurarse de qne el tipo de modulo cspecificado falle. En nuestro ejemplo, cuando otra peticion de auth (para pam _ nologin.so) sigue a la invocacion de los contenidos de la pila PAM para system-auth, dicha peticion de auth es ejecutada. pcro su valor no cs importante porque pam_deny.so era necesario y ha indicado fallo.

A continuacion, cl modulo tipo account requiere que el modulo pam jrnix.so tenga exito. En este caso, pam_unix.so proporciona comprobaciones pm defccto de Ia cuenta de usuario.

Siguiendo a Ia comprobacion de la cucnta, el primer modulo tipo password especifiea que pam_cracklib.so se usara al establccer las coritrasefias para seleccionar una que no pueda ser forzada facilmente, basandose en los contenidos de la base de datos de contrasefias vulnerables (lusr/lib/cracklib __ dict.pwd en sistemas Red Hat). Los argumentos para este modulo ofrecen al usuario tres oportunidades para scleccionar una contrasena (con el argumento rctrv=B) y especifica que esta contrascfia no es para ningun tipo espccifico de autentica-

1. Autenticaci6n en Linux

45

cion, tal como LDAP 0 NIS (pasando un valor de nornbre nulo usando el argurncnto type=). 5i este modulo tiene exito, la segunda linea del modulo tipo password invoca al modulo cstandar pam_unix.so, can argumentos que especifican que las contrasefias vacias son aceptables pero que no pueden ser establecidas par los usuaries (nullok): no preguntar por una contrasefia pern usar en su Ingar cualquier contrasefia que tuvo exito en un PAM anterior de tipo password (usc_authtok); que las corrtrasefias usen mdS por defecto (mdS); y que el sistema use el fichero lete/shadow para almacenar las contrasefias (shadow). Si este modulo falla, se le denicga el acccso al usuario al servicio 0 aplicacion que invoco al servicio system-authen la siguicnte linea, que invoca al modulo pam_deny.so para asegurar el fallo del tipo password.

Finalmentc, session comprueba el conjunto de limitaciones del sistema usando el modulo pam jimits.so, que proporciona funciories para iniciar y terminal' sesiones,

Si necesita tornar unas cuarrtas aspirinas tras analizar sintacticarnente cada entrada en estos ficheros, bienvcnido al club. Pero, aunque sea molesto, Ia seguridad cs una de las responsabilidades mas importantes de cualquicr administrador de sistemas. Si Ie sirve de consuelo, lpiense en 10 complicado que habria side el codigo para implementer todo esto sin Ia flexibilidad que los PAM ofrecenl

Configuracion y mas cenfiguracion

Los ficheros de texto en / etc / pam. d controlan los PAM asociados con cada servicio 0 aplicacion que requiera autenticacion. Algunos de estos PAM usan fichcros de configuracion opcionales para rcfinar aun mas su comportamiento. Los ficheros de configuracion para PAM particulares se cncuentran en cl directorio / etc Is eeur i ty. Aunque estes ficheros deben existir no tienen por que contener ninguna informacion util, cstan ahf en caso de que quiera aprovechar las opciones de configuraci6n avanzada que ofreccn, He aqui una lista de los ficheros de este directorio que Sf encuentran en gran variedad de sistemas Linux:

access. conf: Proporciona un minucioso control de acccso a los inicios de sesion. Usado pOl' el modulo pam _ access.so.

console. apps: Un dircctorio que contiene un fichero por cada aplicacion privi1egiada que un usuario puede usar desde 1a consola, El nornbrc de cada fichero es cl rnismo que el nombre base de la aplicacion a la que esta asociado. Estos ficheros deben existir pero pucdcn estar vacios, Cuando tienen contenido, estos ficheros norrnalmente contienen variables de entorno asociadas con las aplicaciones que coinciden con sus nombrcs, Usado por el modulo pamconsole.so en los sistemas inspirados en Red Hat.

46

Linux Server. Los rnejores trucos

G console. perms: Define los perrnisos de dispositive otorgados a usuarios privilegiados cuando inician scsion en la consola, as! como los perrnisos a los que los dispositivos retornan cuando dichos usuarios terrninan su scsion, Usado por cl -rnodulo pam j.onsole.so en sistemas inspirados en Red Hal.

~ group. conf: Proporciona un control de pertenencia a grupo por sesion.

Usado por el modulo pamgroup.so.

limits. conf: Proporciona un mecanismo para establecer limitcs en los recursos del sistema por usuario. lIsado por el modulo parn Timits.so.

Q pam_env. conf: Ofrece un mecanisrno para asignar valores especfficos a las variables de cntorno Usado por el modulo pam_env.so.

Q pam_pwcheck. c on f : Proporciona opciones para idcntificar el mccanismo usado cuando Sf evalua la consistcncia de una contrasefia. Usado por cl modulo pam jrwcheck.so en sistemas Linux inspirados en SUSE.

pam_unix2 . conf: Proporciona opciones para configuraci6n avanzada de 1<1 comprobaci6n tr adlcional de contr asefias. Usado por cl modulo parn_unix2.so en sistemas inspirados en SUSE.

" time. conf: Ofrece un mecanismo para imponer rcstricciones de ticmpo. ya sean generales 0 a un usuario especifico, para los servicios y aplicaciones del sistema. Usado pOI' el modulo pam_time.so

iY si faltan ficheros de configuracion PAM?

Las aplicaciones que usan PAM. SOIl muy potcntes. y una configuracion correcta csrnuy importante, No obstante, la libreria Lirrux-PsvM proporciona un fichero de configuracion pOl' defecto para cualquier servicio 0 aplicacion que no ticne los suyos propios, Este es el fichero I etc /pam. d/ other. Ya que la falta de ficheros de configuracion, por 10 general indica un sistema 110 configurado (0 que alguien ha importaclo un binario que necesita de PAM sin pcnsarselo dcmasiado); el fichero / etc /pam. dl other implementa un esquema de seguriclad extremadamcnte paranoica, como en cl siguicnte ejcrnplo:

#%PAM""l.O auth account password session

requir:ed r,equired requi]:ed r'equired

pam_deny. so pam_deny. so pam_deny.so pam_derry. so

En cstc ejemplo cada tipo de modulo al que se aplica este fichero de configuracion PAM devolvcra uri valor de fallo,

1. Autenticacion en Linux

47

Una version Iigeramente mas util de este fichero es Ia que se rnuestra a continuacion:

#%PAM-l.O auth

a u t.h

account account password password session session

required I·equir·ed required required required required required required

pam_deny. so pam_warn. so pam_deny. so pam_warn. so pam_deny. so pam_warn. so pam_deny. so pam"""warn. so

Puesto que las sucesivas cntradas neccsarias para un tipo de modulo dado, todavia Sf ejccutan, cada entrada corr-esporidientc primero ejecuta el PAM pam jleny.so, que deniega el acceso al servicio solicitado, y luego, ademas, ejecuta cl PAM pam_warn. so, que registra un mcnsaje de advertencia enla bitacora de sistema.

Vease tambien

man pam (donde pam es el nombre de un modulo PAM sin la extension .so.) http://www.ymhnet.lkams.kfrnel.OI'g/pub/linux/libs/parn/

Autenticar usuaries l.inux con un controlador de Dorninio Windows

Para un administrador ocupado, centralizacion es mas importante que filosoffa.

Mucho ha sido hecho en la prensa especializada de Linux sobre el 11S0 de Samba para cubrir el hueco entre entornos Linux/Llnix y 5MB/CIFS. Samba no es sirnplemente una de las obras mas imprcsionantes del software de c6digo abierto de todos los tiempos, es adernas un impresionantc trabajo de ingenierta inversa, tal como "modificar la Xbox",

Sin embargo, 'usar Samba para autenticacion es a menudo mas un tema filos6fico que una necesidad organizacional. Francarnente, si listed tuviera ya un enorrnc, bien disefiado y funcional, entorno Windows que soporta autenticacion, grupos, ACt, y Exchange (pOI' nombrar unos cuantos servicios Windows popularcs), convertir todo ello a Linux puede dar mas trabajo del que merece. Si esta cornenzando a integrar equipos Linux en sus estaciones de trabajo de una manera coherente, J.por que no nadar en contra de Ia corriente estandar de Linux y configurar los rnecanismos de inicio de sesion en los equipos Linux, para usar

48

Linux Server. Los mejores trucos

la autenticacion proporcionada por sus, ya existentes. controladores de dominio Windows? Siernpre podra convertirlos mas adelanto, cuando Microsoft le envie su peticion de rescate anual.

Requisitos software

Para intcgrar autcnticacion Linux y dominic Windows, necesitara tcner los paquetcs PAM, samba-winbind y smb-client instalados en su sistema. Las piczas ccntrales de software que necesitara son el demonic que le capacita para cornunicar con uri coritrolador de dorninio Windows, conocido como el demonic winbindd (norrnalmente instalado en I usr I sbin/winbindd), un fichero I etc I samba; smb , conf corrcctament« configurado (usado por el dernonio winbindd para obtener informacion sobre su dominic y Sll controlador de dominic), y el PAM para autcnticacion de dorninio por medic de estc demonic (11 ibl securi ty ;pam~winbind. so). EI demonic winbindd y el modulo parn-winbind.so son proporcionados ambos por cl paquete samba-winbind, aunquc para usar cl PAM debe tener el paqucte PAM instalado y funcionando en S11 sistema. Las versiones actuales de estos paquctes en cl momento en que este libro fue escrito eran pam- 0.73-8, samba-winbind<3.0.13-1.1, y samba-client-3.0. 13-1. I.

POI' supuesto, si su entorrio tiene suficientes dependencies Windows, para hacerle querer autenticar sus equipos Linux usando Windows, probablerncnte estara usando Samba para acccder a sus recursos compartidos en Windows desde su sistema Linux 0 a sus sistemas de ficheros Linux desdc sus sistemas Windows. Actualmente, la mayoria de sistemas Linux vienen con Samba instalado. Para tcner soporte complete a Ia autenticacion de dominioWindows, guerra asegurarse de que su sistema esta ejecutando Samba 3.x 0 superior.

Si esta usando un gestor de paquetes, puede ejccutar el comando rpm +q nombr ej paque t e para descubrir que version de cada uno de cllos esta instalado en su sistema.

Si ccha de menos alguno de los paquetes que necesita, puede, bien consultar su repositorio de paquetes favorite (se me ocurren RPMBone y RPMFind.net) para encontrar paquctes prccompilados para su sistema, o descargarse el codigo fuente complete de Samba de http://www.samba.orgycompilarloustedmismo.Es bastante facil.

Configuracion critica de Samba para usar autenticacion Windows

Como Sf menciono en la seccion anterior, el demonic winbindd obticne Ia informacion que neccsita para comunicarse con su controlador de dominio primario del fichero de configuracion cstan dar de Samba (normalmente ; etc ; samba I smb. conf, a menos que haya instalado Samba en otro lugar.)

1. AutenticacicSn en Linux

49

A continuacion se mucstran las entradas crlticas usadas por el dernoriio winbindd, todas sacadas de la seccion [global] del fichero de configuracion de Samba:

workgroup: El Hombre del dominioWindows con el que quiere que se autentique el sistema Linux.

winbind u i d: Un rango de identificadores de usuario (UfD) para los usuarios que quierc que puedan dutenticarse usando autenticacion Windows. Un rango de ejemplo es 1000-9999, que actualmcnte es el rango tipico de UID para usuaries Linux que no son de sistema.

winbind gid: Un rango de identificadores de grupo (GID) para los grupos que quiere que puedan autenticarsr usando autcnticacion Windows. Un nlngo de cjernplo cs "100-999, que actualmentc es el rango tfpico de GID para grupos Linux que no son de sistema.

securi ty: El tipo de seguridad que quiere USf su sistema. Cuando Sf usa autenticaci6n de dominic Windows, su valor deberia ser siempre domain.

username map: El Hombre del fichero que cont:iene las correspondencias entre los nornbres de usuario Windows y 105 Hombres de usuario Linux. Este es normalmente el fichero I etc I samba; smbusers. En general, si va a estar autcnticando usuarios Linux con un controlador de dorninio ejecutando en Windows, 10 mas facil es simplementc usar los mismos nombres de inicio de sesion en ambos sistemas, Windows y Linux (incluso si bill.vonhagen cs todavia mas horrible y necesita mas pulsaciones que otros nornbres mas tradicionales como wvh).

obey pam restrictions: Si esta usando cl rnecanismo PAM de Linux para autenticar sus usuarios Linux, esto deberia siemprc tener el valorycs para forzar a Samba a usar todos las ventajas de la autenticacion PAM.

Actualizar /etc/nsswitch.conf

Para hacer que su sistema consulte al demonic winbindd para autenticacion de contrasefias y grupos, debera adcmas tener que modificar el servicio de nombres de su sistema para integrar autenticacion de dominic Windows.

Para ello, modifique 511 fichero ; etc Insswi tch. conf para especificar que el sistema obtiene informacion de contraseftas y grupos del controlador de dorninio Windows.

Los valores de entrada correctos sedan los siguientes:

passwd: files winbind group: files winbind

50

Linux Server. Los mejores trucos

Esto Ie dice al conmutador de servicios de nombres que debe comprobar primero la contrasefia y grupn local en el sistema cliente, para conseguir la infermarion de autenticacion, y despues comprobar cl demonio winbindd. Esto le perrnite crear cucntas locales cuando sea necesario, dando a estas cucntas locales prioridad, mientras que se sigue usando autenticacion de dominic Windows para la mavoria de las cucntas.

Integral' el PAM pamjwinbind.so en 1£1 autenticacion de sistema

A mcnos que cste usando una distribucion Linux como Red Hat. que ofrece una herramienta grafica para configurar Ia autenticacion de sistema (sys t.emconfig-auth, mostrado en la figura 1.1), necesitara modificar manualmente los ficheros de configuracicn PAM para 105 servicios que se autenticaran usando e] controlador de dominio Windows. Como minimo, el fichero de configuraci6n de login (! etc/pam. d/login), y probablemente adcmas el fichero de configuracion PAM para los inicios de sesion par SSI-I (/ etc Ipam. d/ sshd),

He aqui un ejemplo de un fichero de configuracion PAM que usa autenticacion VVinclows para habilitar los inicios de sesion:

#%PAM-l.D auth

auth

auth

sufficient required required

/lib/securi.ty/pam~,wi.nbind. so /li.b/security/pam_securetty.so

/libl securi. ty Ipam_stack. SO service=system-auth debug use_first_pass

/lib/security/pam_nologin.so /lib/security!paffi_stack,so service=system-auth /lih/security/pam_stack.so service=system-auth /lib/security/pam_stack,so service=system-auth /lib/security!pam_console.so

auth account password session session

requi.red required required required optional

Figura 1.1. Aplicaci6n grafica de Red Hat para configurer autenticacion Windows.

1. Autenticaci6n en Unux

51

Ffjese que este fichcro de configuracion PAM acepta Ia autenticacion Windows como suficicnte para habilitar un inicio de scsion, pero lucgo entra en Ia secuencia estandar de autenticacion Linux si esta falla. Esto le perrnite usar una rnezcla de autcnticacion central (por medio del controlador de dominio Windows) y autenticaci6n local (usando los ficheros de contrasefias y grupns tradicionalcs de Linux/Unix.)

Iniciar el demonic winbindd

Uno de los ultimos pasos en integral' sistemas Linux con autenticacion Linux es asegurarse dc que el demoniowinbindd inicia automaticamente cada vcz que arranque su sistema. Para esto asegllrese de que existe un enlace simbolico al script de inicio / etc / ini t . d/winbind para el nivel de ejecucion por defccto de 5U sistema. Para iniciar el demonio winbindd manualmcnte (esto es, Ia primcra vez), puede simplernente ejecutar este script con el argumento start como en:

# letc/init.d/winbind start

Unirse al dominic

E1 paso final es unirsc realmerite al dominio desde su sistema Linux. Punic haccr esto usando el comando net, que forma parte del juego de cornandos de Samba y se cncuentra en el paquete samba-client mencionado con anterioridad en cste truce:

$ net join member -u Administrador

Se Ie pedira la cont rasefia del usuario Administrador en el dominic de destine.

No tiene pOl' que unirse al dorninio como usuario Administrador, cualquier usuario con suficientes privilegios puede hacerlo.

Prohar 1£1 autenticacion Windows

Dcberia probar siempre cualquier cambio fundamental en la secuenria principal de autcnticacion de su sistema antes de cerrar su sesion en tL La mancra mas faril de hacer esto es activando un servicio que requiem. autenticacion de inicio de sesion, y usarlo para iniciar scsion por rnedio de una concxion de red con su sistema micntras todavia ticne su sesion abierta en la maquina. Mi servicio favorite para esto es d scrvicio telnet, pem ssh cs igual de facil (si bien tendra que modificar cl fichero de configuracion PAM letc/pam.d/sshd para probar Ia autenticacion s sh via el controlador de dorninio de su dominic Windows.}

52

Linux Server. Los mejores trucos

Depurar problemas de autenticacion Windows

Tanto Samba como el PAM pam_winbind proporcionan excelentes herramientas de depurado. Para poner el demonic winbindd en modo de depuracion, inicie sesion como super-usuario usando una cuenta local, afiada la palabra clave debug a la entrada parn jvinbind en el Iichero de configuracion de servicio PAM que este usando para depurar, V reinicic el demonio winbindd manualmente con Ia opcion -d nivel-de-depuracion. que muestra toneladas de informacion util.

Personalmente, prefiero usar el nivel cinco de depuracion, que muestra cada byte en cada paquete intercambiado entre el demoniowinbindd y el controlador de dorninio con el que esta dialogando. Si esto no le proporciona suficiente infermacion para idcntificar V resolver su problema, y sospecha que pucde ser un error en la configuracion de Samba, puede incrementar el nivel de registro de eventos (logging) en el fichero de configuracion de Samba (/ etc / s aruba / smb. canf) afiadiendo el cornando log level winbind: NN y rciniciando Samba. Esto Ie permite cspecificar cl nivel de registro de informacion para las activiclades Samba relacionadas con la autenticacion winbindd. Si esta usando una version antigua de Samba 0 quiere obtener informacion de mils bajo nivel, puede eliminar la restriccion winbind, y simplemente incrernentar el nivel general de registro de eventos de Samba usando cl comando log_level NN en su fichero de configuraci6n V reiniciando Samba despues. Un nivel de registro de eventos de valor cinco es suficiente para lamavoria de las depuraciones. (Rccuerde desactivar cl registro de eventos cuando haya rcsuelto sus problemas de autenticacion, va que crea un fichero de bitacora enorrne y tiene un impacto negativo sobre eI rcndimicnto de Samba.)

Otro cornando util cuando se analizan 0 depuran problemas al usar autenticacion en dominies Windows para usuaries Linux es el comandowbinfo. Puede usar este comando para ascgurarse de que csta realmente dialogando con cl controlador de dominio V para solicitarl« a dicho coritrolador varios tipos de informacion. EI siguiente ejernplo de salida muestra las opciones disponibles en cl comando wbinfo y un comando de ejemplo que recibe los nombres de usuaries conocidos del controlador de dorninio:

$ wb i.nf o

Usage: wbinfo -ug I -n name I -sSY sid I -UG uid/gid user%password

Version: 2.2.7-security-rollup-fix

lists all domain users lists all domain groups converts name to sid conve.rts sid to name

converts NetBIOS name to IF (WINS) converts IF address to NetEIOS name (WINS)

-tm I -[aAJ

-u
-g
-n name
_·s sid
-N name
-I IF
-u uid converts uid to sid

1. Autenticaci6n en Linux

53

-G gid
-s sid
-Y sid
-t
-rn converts gid to sid
converts sid to uid
converts sid to gid
check shared secret
list trusted domains -r user get user groups

-a user%password aut.h en t Lc a t.e user

-A user%password store user and passwor"d used by winbindd (root: only)

-p 'ping' winbindd to see if it is alive

--sequence show sequence numbers of all domai.ns

-" set-auth-user DOMAIN\user%password set password for re s t.r i ct;

anonymous

$ wbinfo -u

TempJate

Administrator bill.vonhagen build

( ... salida adicional eli.m.inadal

Centralizar inicios de sesion con lDAP

Crear cuentas en equipos individuales es cosa del pasado: centralice informacion de autenticacion y mas usando un servidor de directorio.

E1 protocolo ligero de acceso a directorio (Lightweight Directory Access Protocol, LDAP) proporciona una coleccion jerarquica de informacion que puede ser accedida a traves de Ia red. LDAP es un ejemplo de un servicio de directorio. En estc contexte, el terrnino directorio se refine a un recurso central de informacion (tal como un dircctorio de telefonos 0 un libro de direccioncs accesible pOl' red) pero adernas aprovecha Ia idea de las estructuras de dircctorio jerarquicas. Los directorios LDAP son esencialmente bases de datos jcrarquicas que son accedidas usando claves que identifican las porciones de Ia jerarqufa de directorio a atravesar para localizar una unidad especifica de informacion.

La idea central de elementos V atributos jerarquicos es Iacil de entender V de trabajar con ella, y deberia ser familiar a los usuarios de sistemas de informacion similares, tales como XML. EI protocolo LDAP es ademas independicnte del modelo de almacenamiento subyacentc, sicndo facil hacer cor responder los datos LDAP COIl bases de datos existentes. 0 rnigrar 11 modelos nuevos, mas pequenos.

Como todos los servicios de directorio, LDAP es una tecnologfa clientc/servidor, Los clientes puedcn bien solicitar 0 bien entregar informacion al servidor LDAE En caso de solicitar informacion, el servidor LDAP puede responder directamcnte o reenviar In peticion a otro servidor LDAF, que a su VfZ repetira cl proccso "responde 0 rcenvia". EI proyecto OpenLDAP (http;!/www.openldap.org), donde Ia mayo ria del desarrollo LDAP en Linux tiene lugar, es el origen del software que discutimos en este truce.

54

Linux Server. Los mejores trucos

lnstalar clientes y servidores lDAP

EI uso de LDAP en su cntorno rcquiere que tenga unos cuantos paquetcs basicos instalados en sus sistemas, 0 que compile e instale el software OpenLDAP de cero. 5i necesita compilarlo usted mismo puede descargar la ultima version del paquete OpenLDAP complete de http://www.openldap.org/software/download. 5i sus sistemas Linux usan un sistema de gestion de paquetcs, necesitara instalar:

Un cliente OpenLDAP en todos sus sistemas (incluido el servidor, por rnotivos de depuraciorn.Tistos paquetes normalmente tienen nombres como openldap-clicnt 0 openldapz-client.

Un servidor OpenLDAP en su sistema servidor. Algunas distribucioncs de Linux, tales como 5U5E, 10 incluyen en los paquetcs openldap o operldapz packages, rnientras otras ofreccn servidorcs cxplicitos en paquctcs con nombres como opcnldap-servers.

Librcrtas OpenLDAP en todos los clicntes y servidores. Algunas distribucioncs de Linux, tales como Red Hat Enterprise Linux y Fedora, dividen estas en paquetes separados que se Haman simplemente opcnldap, mientras que otras las integran dentro de los paquctes de los servidores y clientes OpenLDAP.

Estes paquctes Ie daran 1a funcionalidad basica de LDAP Sin embargo, para integrarlos con busquedas de usuaries y autenticacion en sus sistemas cliente, necesitarti ademas 10 siguicnte:

El modulo de servicio de Hombres, nss_Iclap, para intcgrar peticiones de busqueda de usuarios y grufJos con un servidor OpenLDAP.

EI modulo PAM, parrrIdap, para intcgrar autenticacion LDAP en los procesos de autenticacion de sus clientes

Si pretcnde compilarlos usted mismo, el codigo fuerite esta disponible para descargar de PADL Software Pty Ltd la gente que los escribio, en el siguiente enlace: http://www.pacll.com/C:ontenls/OpenSource5oftware . html.

Finalmentc, ncccsitara algunas utilidadcs que pucden venir bien para migrar Ia informacion existente sabre contrasefias, contrasefias cifradas, y grupos en su directorio LDAE Estas herramientas cstan tambicn disponibles en PADt Software Pty Ltd, en el enlace: http://www.padl.colll/download/MigrationTools.tgz.

Muchas distribuciones LiI1uX proporcionan utilidadcs graficas para configurar LDAP y autenticacion LDAI~ tales como In aplicacion authconf ig de Red Hat y d applel de configuracion de clientes LDAP en la herramienta YaST de 5U5E. Este trueo explica como hacer todo desde la linea de cornandos, en caso de que no

1. Autenticacion en Linux

55

tenga acceso a tales utilidades. 5i csta usando alguno de estos sistemas, las utiliclades graficas simplifican los procesos de instalacion y configuracion, pero siempre esta bien conocer que es 10 que realmente se necesita pDf dcbajo. En cualquier caso. todavia tcndra que migrar rnanualmentc sus datos de usuarios, contrascfias y grupos en su servidor LDAP

En el resto de cste truro, asumire que ha instalado todo cste software en localizacioncs estandar de sistema y que pucde. pOl' tanto, encontrar los ficheros de configuraci6n de LDAP en / etc / openldap. Si los ha compilado ustcd rnismo, puede haberlos instalado relatives a /usr (local, y, por tanto, neccsitara buscar 105 ficheros de configuracion en Iocalizaciones tales como /usr / .Lo c a 1/ etc / openldap.

Configurar un servidor lDAP

Los ficheros de configuracion para los clientes y servidores LDAF, que se encuentran tradicionalment« en el directorio / etc / openldap, son:

Idap. conf: Establece los valores por defecto usados pOl' los clientes LDAP en su sistema.

slapd. conf: Contiene informacion de configuracion para el servidor OpenLDAP, slapd que esta ejecutandose en el sistema actual, Estc fichero nunca deberta poder ser Iefdo por usuarios no privilegiados, ya que COI1- ticne contrasefias y orra Informacion de scguridad para su servidor OpenLDAP.

Configurar un servidor es un procCso bastante simple. Primero, debe carnbiar la entrada suffix, de tal mancra que identifique su dominic de rnanera correcta. Por ejcmplo, la entrada por defccto en letc/openldap/slapd.conf cs normalrnente:

suffix

"dc=rny-domain,dc=corn"

Cambie esta entrada para que reflejc su nombre de dominio. Por ejemplo. para configurar un ser vidor OpenLDAP para el dominio vonhagen.org, cambie esta linea con el siguiente valor:

suffix

IF dc=vorihe.con , d c=o r q "

Siguiente paso, cambie la entrada rootdn para que refleje el nornbre del usuario privilegiado que posee acceso no restringido a su directorio OpenLDAP Por ejemplo, la entrada pOl' defecto en I etc / openldap / slapd. conf es norrnalmente:

rootdn

"cn~Manager, dc.~my-domain. dc=com"

56

linux Server. Los majores trucos

Continuando con el ejemplo anterior, deberia carnbiar esto a alga ast para el dorninio vonhagen.org:

rootdn

"cn=ldapadmin, dc=vonhagen, dc=org"

Aunque este usuario sea cquivalente al super-usuario, por 10 que respecta a OpenLDAF, el nornbre no ticne por que SCI' cl de un usuario real de su sistema.

Finalmcnte, si bien opcional en algun sentido, podrfa querer establecer una contrascfia (mica para su servidor OpenLDAP modificando Ia entrada rootpw en su fichero de configuracion / etc / openldap/ slapd. conf. Esto Ie permitira COI1- Iigurar, probar, y corregir su sistema OpenLDAP a traves de su red local, si cs necesario. POI' ejemplo. la entrada por defecto en / etc / openldap / slapd. conf utiliza Ia contrasefia, en tcxto plano, "secrete" como se muestra aqui:

rootpw

secreto

Pucde introducir una contrasefia ell tcxto plano 0 codificada como valor para esta entrada.

Puede usar el comando slappasswd para gcncrar una contrascfia codificada que puede pegar en el fichero / etc/ openldap/ slapd. conf, como en el sisguiente ejemplo:

# slappasswa New password:

Re-enter new password: {SSHA}xOuoprqDBaylPdv3 z fj LqOSh'AUhSGgY

EI cornando s l.a.ppasswd le pide una contrasrfia nueva, solicita confirrnacion. y despues muestra por pantalla la cadcna de caracteres correspondicnte a la contrasefia cifrada, precedida por el mecanisme de cifrado usado en la contrasefia.

Ahora puede simplemcnte reemplazar el valor de la opcion rootpw cxistcntc COIl la cadena de caracteres gencrada, como en el siguiente ejemplo:

rootpw

{SSHA)xOuopfqDBaylPdv3zfjLqOSk!:'AlJh5GgY

Deberta activar la opcion rootpw s610 cuando configure su servidor OpcnLDAP pOl' prirncra vez, y solo es neccsario haccrlo si debe configurar su servidor OpenLDAP a traves de red. Es siernpre una buena idea establcccr una contrascfia (mica y cifrada para su servidor OpeuLDAP que difiera de su contrascfia de super-usuario estandar, incluso si el fichero /etc/openldap/s1.apd. conf no debiera ser posible de leer por usuaries no privilcgiados de su sistema. Una vez que ha completado su configuracion, deberia dcsactivar esta entrada corncnt andola. Para hacer esto, ponga un stmbolo alrnohadilla (#) al inicio de la lmea que contien« la entrada rootpw.

1. Autenticacion en Linux

57

Las contrasefias OpenLDAP se cnvtan en texto sin cifrar a 10 largo ell' Ia red, a mcnos que haya activado el cifrado SSL/TLS (Secure Socket l.aver/Tr.insectior: Layer Security) en su fichcro /etc/openldap / slapd. coni'. Discutir dicho cifrado para OpenLDAP esta fuera del alcance de este truco.

Una vez que ha modiflcado Sl1 fichcro / etc/ open1.dap/ slapd. conf y guardado sus carnbios, puede iniciar el servidor OpenLDAP usando el script / etc / ini t 0 d/ l.dap, como en cl siguiente ejemplo:

# /etc/init.d/ldap start

Como con todos los scripts de inicio en los sistemas Linux, debe ria hacer un enlace simbolico a los ficheros de inicio y fin de ejccucion asociados con el nivel de ejecucion por defecto de su sistema, para asegurar que inicia automaticamcnte cuando rcinicic su sistema.

Los ejemplos en el rcsto de este truco asumen que ha introducido el nombrc ldap como una entrada valida para su scrvidor LDAP en DNS.

Migrar entradas de usuarios, contraseiias y grupos a un servidor lDAP

Para configurar su servidor LDAP para que proporcione informacion de autenticacion, debe primero migrar su informacion de autenticacion cxistente al servidor LDAF. Puede hacer esto preparando ficheros LDfF (Formato de Intercarnbio de Datos de LDAF, LDAP Data Interchange Format) que induyan los contenidos de sus fichcros / etc /passwd, / etc / shadow, y / etc / group, para despues irnportarlos desde cl servidor LDAP.

Si tiene multiples fichcros password, shadow, y group en diferentes sistemas que quiere combinar en un 5010 repositorio LDAI~ pucde copiar todos ellos a su sistema servidor LDAp, concatenarlos. y ordcnarlos para producir ficheros sueltos. Puede en toners editar estes ficheros de

tal rnanera que tengan s610 una entrada para cada usuario y grupo, e instalarlos como los ficheros password, shadow, y group originalcs en su servidor, antes de ejecutar los scripts de rnigrncion. iVerifique que estes ficheros funcionan correctarnente antes de migrarlos a LDA!'!

La manera mas scncilla de crear ficheros LDlF a partir sus ficheros / etc /passwd, / etc / shadow, y / etc / group existentcs, cs usar los scripts

58

Linux Server. Los mejores trucos

migrate~passwd. p L Y migrate_group. pi que se incluyen en las herramientas de migracion disponibles en http://www.padl.com/download/Migration Tools.tgz. Si ha instalado OpenLDAP desde un paquete, estes scripts dcberian estar localizados en su sistema en el directorio lusr /share/openidap/migration.

Para rnigrar informacion de usuaries, contrasefias y grupos a S11 servidor LI)AP, y as! poder usarla de base para Ia autenticacion de un sistema clicnte, haga 10 siguiente:

1. Inicie sesion como super-usuario, y cambie al directorio deride 11.'1 desernpaquetado los scripts de migracion, 0 donde estaban ya instalados.

2. Edite eI fichero migra t e_common. ph, que establece las variables usadas por todos los scripts de migracion. Cambie el valor de Ia variable DEFAULT_BASE por el valor correcto para su entorno. Como ejcmplo. cl valor corrccto para Ia informacion de migracion al servidor LDAP usado como muestra durante todo este truco seria:

$.DEFAIJLT_BASE = "de=vonhagen,de~org";

3. Usc cl script migra te~pas swd. pI para generar un fichero LDIF para su informacion de usuarios y contrasefias, como en el siguiente cjcmplo:

. /rnigrate._passwd. pI / ete/passwd passwd. LDIE"

El script migra te_passwd. pi ademas extrae In informacion de contrasefias necesaria de su fichero / etc / shadow.

4. Gcnere un fichero LDIF para Sll informacion de grupos, usando el fichero de migracionmigrate~group.pl, como en el siguiente ejemplo:

./migrate_group.pl jete/group group.LDIF

5. Importe los ficheros que acaba de crear en su directorio LDAP, usando comandos como los siguientcs:

# Idapadd -x -h nombre~sistema -D "cn~ldapadmin,dc~vonhagen,dc~org" \ -w contrasena -£ passwd.LDIF

# Idapadd -x -h nombre_sistema -D "cn~ldapadmin,dc~vonhagen,dc~org" \ -w contrasena -f group.LDIF

En estos comandos, recmplace "nombre_sistema" por cl nombrc del sistema en el que se ejecuta su servidor LDAP, asegtirese de que las credenciales espccificadas siguiendo la opci6n -D coinciden con Ins del super-usuario para su servidor LDAP, y reernplace "corrtrasefia" con la contrasefia que cscribio en la entrada rootpw, ambas como se dcfinen en el fichero de configuracion de su servidor OpenLDAP (I etc I openidap I s lapd. conf).

Tras seguir estes pasos, ya esta listo para actualizar sus sistemas clicnte para que usen autcnticacion LDAP (y para probarlos, pm supuesto.)

1. Autenticaci6n en Linux

59

Actualizar sistemas clientes para usar autenticacion lDAP

En cada sistema gue quiera usar el nuevo servidor de autenticacion LDAI~ debe hacer 10 siguiente:

1. Modifique el fichero de configuraci6n / etc /pam __ ldap. conf, usado por cl modulo PAM pam~ldap. so, para que contcnga la informacion correcta sobrc su servidor LDAP. En la mayoria de los casos esto requicre simplemente configurar correctamente los valores de las declaraciones host y base en este fichero, como en el siguiente ejemplo:

host Idap.vonhagen.org base de=vonhagen,dc=org

2. Modifique el fichero de configuracion /etc/lib-nss-ldap. conf, usado para integrar LDAP con el servicio dcnombrcs en su sistema, para contener la informacion corrccta sobrc su servidorLDAP. De nuevo esto simple mente requiere configurar correctarnente los valores de las declareciones host y base en este fichero, como en el siguiente eiemplo:

host Idap.vonhagen.org base de~vonhagen,de=org

3. Ariada entradas para LDAP a los ficheros de configuracion PAM correspondientes en su sistema. Como se cxplico anteriormente, algunos sistcmas Linux usan ficheros individuales para configurar la autenticacion para servicios cspecfficos, rnientras que otros (tales como Red Hat/Fedora) crean un fichero centralizado para In autenticacion de sistema, Ilamado / etc /parn. d/ systern-auth. Si esta usando ficheros individuales, debe afiadir las entradas apropiadas para autenticacion LDAP a los scrvicios relacionados con el inicio de scsion tales como login y sshd. Deberfa inserter entradas auth y account para el modulo pam_ldap. so antes de las cornprobaciones genericas de autenticacion de su sistema, que son gestionadas norrnalmente pOl' pam~unix2 . so (SUSE) 0 pam_Jlwdb. so (la rnayorta de distribuciones). Un ejemplo de fichero PAM para el scrvicio sshd deberia asernejarse a 10 siguiente:

auth required

auth sufficient

auth required

account s'ufficient account required password required password required session required

/lib/security/pam~nologin.so Ilib/security/pam~ldap.so /1ib/seeurity/pam_pwdb.so shadow nodelay 11 ibl seeuri. ty /pam ... _ldap. so Ilib/security/pam~ .. pwdb. so Ilib/seeurity/pam_cracklib.so

/1 i.b/securi ty Ipam_pwdb. so shadow nu l Lox use_authtok Ilib/seeuri.ty/pam_mkhomedi.r.so skel~/etc/skel/ umask=0022

Ilib/seeuri.ty/pam_pwdb.so

session required

60

Linux Server. Los rnejores trucos

4. Si esta usando un sistema Red Hat 0 Fedora, modifique /etc/pam.d/system~ auth para que tenga el siguierite aspecto:

auth auth auth auth

required sufficient suffi.cient I·equired

account required account sufficient account [default=bad

account required passwordrequisite password sufficient

passwor"dsufficient password required session required session required session optional

/lib/security/pam_env.so Ilib/security/pam_unix.so likeaLl.th nulJ.oK / libl s ec ur i ty Ipam_ldap. so use_first_pass Ilib/security/pam_deny.so

Ilib/secur i ty Ipam_unix. so broken ... _shadow Ilib/security/paro_succeed_if.so uid < 100 quiet

success=ok user_unknown=ignore 1 Ilibl securi ty I pam_ldap.so

Ilib/security/pam_permit.so

/ lib/ secur· ity Ipam_cracklib. so retry~3 Ilib/security/pam_unix.so nullok use_ . .authtok rod5 shadow

Ilib/security/pam_ldap.so use_authtok Ilib/security/pam_deny.so /lib/security/pam_limits.so /lib/security/pam_unix.so

/ lib/ secud. ty/pam_ldap. so

5. Modifique su fichero I etc Ins swi tch. cant para indicar que d sistema busque informacion de contrasefias, coritrasefias cifradas y grupos en LDAP. He aqui un ejemplo de entradas corrcctas:

passwd: files ldap shadow: files ldap group: files Idap

Esto le dice al conmutador de servicios de nombres que debe primero comprobar los ficheros password, shadow, y group locales en el sistema cliente para consultar informacion de autenticacion, y despues comprobar LDAP.

Esto le perrnite crear cuentas locales cuando sea necesario, dando a estas cuentas locales prioridad mientras se sigue usando LDAP para la mavorta de las cucntas.

6. Haga una copia de scguridad de sus ficheros I etc /passwd, I etc I shadow, y lete/group locales, y cdite las copias primaries en el sistema oliente para eliminar todas las cuentas de usuario, de tal mancra qlle solo contengan cuentas de sistema y no de usuario.

La proxima vez que inicie sesion en su sistema cliente, este contactara a su servidor LDAP para obtener informacion de autenticacion. Cuando cree nuevas cucntas de usuario y de grupo, necesitara usar un interfaz de linea de cornando para que OpenLDAP (http://quark.humbug.org.au/publications/scripts/ldap/cIi/) cree la informacion de cucnta nccesaria, Existen ademas bastantes hcrrarnientas gnificas para crear y mantener cuentas LDAp, pero yo me siento mas comedo con la linea de comandos.

1. Autenticacion en Linux

61

Antes de terrninar In sesion en este sistema cliente y configurar otro, abra una nueva sesion en esta maquina usando telnet 0 ssh para asegurarse de que punic hacerIo correctamente usando LDAP. Si encuentra cualquicr tipo de problema, no cierre la sesion en este sistema hasta que los haya resuelto.

iEnhora"buena! Acaba de sacar el maximo provecho a su red y rararnente, tendra que gestionar informacion local de contrasefias y grupos en sistemas individuates de rruevo. Combinando estc truco con otros liberara aun mas a los sistemas individuales de los datos relativos a usuaries.

Proteger su sistema con Kerberos

Puede elevar la seguridad de cualquier red usando Kerberos para proteger la autenticacion y las comunicaciones cifradas,

Kerberos es UIl servicio distribuido de autenticacion y cornunicacion desarrollado en su origen en el MIT (Massachusetts Institute of Technology, Institute de Tecnologia de Massachusetts). Kcrbcros proporciona autenticacion y comunicacion segura para aplicaciones clientez'servidor usando una fuerte criptografia para perrnitir a los usuarios demostrar sus identidades en servidores a traves de la red.

Kerberos funciona intercambiando informacion de scguridad codificada entre clientes (que pueden ser usuaries 0 maquinas), eI servidor de autenticacion Kerberos, y el recurso al que esta tratando de acceder, La informacion que se intercambia inicialmente cuando se intenta dcmostrar la identidad de aIguicn se conoce como tique (ticket). La informacion usada para codificar tiqucs y las corrrunicacioncs sucesivas se conoce como clave (key). Una vez que In ideritidad de un cliente cs verificada, a ese cliente se it concede una ficha (token) Kcrberos. que puede ser usada para verificar su idcntidad en cualquier servicio que use Kerbcros, Por razones de scguridad, las fichas Kerberos tienen una marca de tiernpo, de tal manera que expiran automaticamenrc a rnenos que sean renovadas por un usuario o servicio, El sistema primario para conceder tiques (que aloja la coria maestra de Ia base de datos Kerberos) se conoce como KDC (Kerberos Key Distribution Center, Distribuidor de Claves Kerberos.)

Las marcas de tiempo contenidas dentro de las fichas Kerberos (y de los tiques) pueden ser verificadas solo si el tiernpo y la fecha estan sincronizados a traves de los scrvidores y clientes Kerbcros. La autcnticacion Kerberos fallara si los relojes del cliente y el servidor tienen un desfase de mas de cinco minutes el uno con el otro. Deberia siempre ejecutar dernonios NTP (Network Time Protocol, Protocolo de Tiernpo en Red) en todos los clientes y servidores Kerberos para garantizar que sus relojes perrnaneccn sincronizados,

62

Linux Server. Los mejores trucos

Kerberos usa el terrnino dominio (realm) para difcrcnciar entre dominios de autcnticacion y de Internet. Un dominic Kerberos es un conjunto de rnaquinas que dependen de un scrvidor Kerberos especffico para autenticacion y, por 10 tanto, connan en fl. En los ficheros de configuracion de Kcrberos, su dominic se define norrnalrnente cn mayusculas, con el fin de diferenciarlo de algirn otro dominio DNS similar con cl que este asociado.

La implernentacion de Kerberos del MIT es una de tantas. Muchas implcmentaciones alternatives de Kcrberos han sido creadas a 10 largo de los anos, normalmente para sortear las rcstricciones sobre politica de exportacion que han sido levantadas en los Estados LInidos desde cntonces. Por eiemplo, los sistemas SLlSE usan una implernentacion clientc/servidor alternative de Kerberos conocida como Hrirndal (http://www.pdc.kth.se/ heimdal/), Estc truco Sf centra en d Kerberos vanilli;l del Ml'I, cl cual prefiero usar por ser el que ofrcce mejor mantenimicnto y el mas usado en una gran varicdad de sistemas Unix y Linux,

lnstalar Kerberos

El uso de Kerberos requiere que tenga unos cuantos paquetcs basicos instalados en sus sistemas, 0 que los compile e instale ustcd misrno desdc cero. Si neces it a compilar lo s , pu edc d e scar g ar l a u lt im a version del MIT en http://Web.mit.edu/kerberos/www/. Si sus sistemas Linux usan un gestor de paquetes y quiere usar el Kerberos vanilla, nccesitara instalar:

krbfi-workstation en todos los sistemas cliente. Este paquete contiene programas basicos de Kerberos (kini t, klist, kde s t r oy, kpa.sswd) asf como versiones "Kcrberizadas'' de las aplicaciones telnet y ftp.

krbfi-servcr en todos los sistemas scrvidor y sus servidores csclavos. Estc paquete proporciona los programas que deben ser instalados en un scrvidor Kerberos 5 0 replica.

e krb'i-libs en todos los sistemas clicnte y servidor. Este paquete contiene las Iibrertas compartidas usadas por los servidores y clientes Kerberos,

e pam_krb5 en todos los sistemas cliente. Este paquete proporciona un PAM que activa la autenticacion Kcrberos.

lnstalar y configurar un servidor Kerberos

Tras compilar e instalar Kerberos, 0 instalar los paquetes krb'i-workstation, krbfi-server, y krb S-libs en el servidor que servira de KDC maestro, el primer

1. Autenticaci6n en Unux

63

paso para configurar su entorno Kerberos cs establecer su KDC maestro. El proceso para hacer esto es el siguientc:

1. Editc el fichero general de configuraci6n de Kerberos para su entorno (I etc Ikrb5 . conf). Este fichero identifiea los servidores KDC y de administracion en SU dominic Kerberos, y proporciona valores por defccto para su dorninio y aplicacioncs Kerberos, y para como sus nombrcs de sistema existentes seran incluidos en el dominio Kerberos. He aqui un fichero letc/krb5. conf de muestra para el dominio VONHAGEN.ORG (reemplace los elementos en cursiva Con los valorcs correctos para su sistema): [logging]

default = FILE:!var/log/krbSlibs.log

kdc = FILE:!var!log!krbSkdc.log admin_server = FILE:/var!log/kadrnind.log

l Li.bde f au Lt s j

default_r"ealm = VONHAGEN.ORG dns_J.ookup_realm = false dns_leokup_kdc = false ticket_lifetime = 24h forwardable = yes

[realms]

VONHAGEN.ORG = {

kdc = kerberos.vonhagen.org:88 admin_sex'ver = kerberos. vonhagen. org: 749 defaul t .... _domain = vOIlhagen. org

)

[domain_realm]

. vonhagen . org = VONHiiGEN. ORG venhagen. erg .= VONHAGEN. ORG [kdc]

profile = Ivar/kerberos/krb5kdc/kdc.conf r appdefalll ts]

pam = {

debug = false

ticket __ lifetime = 36000 renew~lifetime = 36000 forwaI'dable = true krb4_convex"t = false

Los valores pOT defecto proporcionados pOl' el fichero letc/krb5. canf generico son razonabIes, cxccpto que debe cambial' todos los cases en los que aparece EJEMPLO.COM por el nombrc de su dominic Kerberos, y to~ dos los cases en los que aparece ejemplo.corn por el nornbre de su dominic (VONliAGEN.ORG y vonhagcn.org, respcctivarncnte en cl cjcmplo anterior). Debe asegurarse adernas de que existen las entradas DNS 0 I etc Ihosts en todos los clientcs para los sistemas que ha identificarlo como su KDC y admin_server cn Ia seccion [realms}.

64

Linux Server. Los rnejores trucos

2. Edite cl fichero de configuraci6n de KDC (lvar Ikerberos /krb5kdc Ikdc. conf). La localizaci6n de este fichero la proporciona la seccion [kdc] del fichero I etc Ikrb5 . conf. Al igual que con el fichero I etc Ikrb5 . conf, cl primer cambio que debe llevar a cabo en cstc fichero cs cambiar EJEMPLO.COM por eI n ombr e de s u dominio Ke rb er o s , que cs VONHAGEN.ORG en el siguientc ejemplo:

[kdcdefaults]

dcl_file ~ Ivar Ikex'beros/krb5kdc /kadm5. acl diet file = (usrlshare/dict/words

admi; .. _keytab = Ivar /kerberos/krb5kdc / kadm5 . key tab v4_mode = nopreauth

[realms]

VDNHAGEN.ORC = { master_Key_type = des-cbc-crc

supported_enctypes = des3-hmac-shal:normal arefour-hmac:normal \ des -bmac-shal : normal des~'cbc-md5: normal des-cbc-cre: normal \ des-cbe-cre:v4 des-cbc-crc:afs3

3. Lo siguiente que deber hacer es usar In utilidad kdbS _lItH en el KDC maestro para crcar la base de datos Kerberos y su fichero de atesorarniento (stash). Tendril que introducir la contrasefia rnaestra de Ia base de datos dos vcccs, por motives de verificacion. E1 fichero de atesoramiento .es una copia local, codificada de Ia dave rnaestra que se usa. para. a~~enhn~r de mancra automatica al KDC como parte de su sccuencia de uucro de siste-

ma. Por ejernplo:

# /usr/kerberos/sbin/kdb5 __ util create -r VONHAGEN.ORG -s Loading random data

lui tial i zing database ' Ivar /kerberos (krb5kdc/principal ' for realm

, vonhagen . org , r

master key name 'K/M@vonhageu.org'

You will be prompted for the database Master Password. It is important that you NUl' FORGET this passwor·d. Enter KOC database master key:

Re-enter KOC database master key to verify:

Este comando crca varios ficheros en el directorio cspecificado en la seccion kdcdefaults de su fichero kdc , conf: dos fichcros de base de datos Kerberos (principal. db y principal. o k), el fichero de base de datos administrative Kerberos (principal. kadm5), el fichero cerrojo (principal. kadm5 . lock), y el fichcro de atesoramiento (. kSstash).

4. Ahora, edite el fichcro de definicion de la ACL (/var / kerberos I krbSkdc Ikadm5. ac L), cambiando el dominic por dcfccto (EJEMPLO.COM) con el nombre del dominic Kerberos que esta creando (VONHAGEN.oRG, en este

1. Aurenticacion en Linux

65

ejemplo). La entrada por defecto en este fichero, que cornienza con * /admin, da a cada usuario con una instancia de admin (tal como wvh/admin, que crearemos en el siguiente paso) acceso complete y control sobre la base de datos del domino Kerberos, Despues de actualizar este fichcro para nuestro dominio de ejemplo tendril el siguiente aspecto:

*/admin@VDNHAGEN.ORG

5. El siguiente paso es usar 13 utilidad kadmin.local para agregar cada uno de sus adrninistradores de sistemas a la base de datos Kerberos. kadmin . local cs una version Kerberos de la utilidad kadmin estandar que en un principia no se autentica con una base de datos Kerberos, yes por tanto usada para iniciar Kerberos en un KDC. Las entradas en la base de datos Kerberos se conocen como protagonistas. El siguiente ejcmplo afiade una instancia de admin para el usuario wvh:

# /usr/kerberos/sbin/kadmin.local kadmin.local' addprinc wvh/admin

WARNING: no po li.oy speci fied for wvh/admin@VONHAGEN.ORG; defaul ting to no policy

Enter password for principal "wvh/admin@VONHAGEN.ORG"; Re-enter password for principal "wvh/adffiin@VONHAGEN.ORG":

Principal "wvh(admin@VONHAGEN.ORG" created.

6. Despues, afiada una entrada de usuario estandar para la version no adrninistrativa del protagonist a que acaba de crcar y cicrr e Ia utilidad kadmin .local, como en d siguiente ejemplo:

kadmin.local: addprinc wvh

WARNING, no policy specified for wvh@VONHAGEN.ORG; d a f a uI ting to no policy

Enter password for principal "wvh@VONHAGEN.ORG":

Re-enter password for principal "wvh@VONHAGEN.ORG":

Principal "wvh@VONHAGEN.DRG" created. kadrnin .local: quit

Agregar un protagonists estandar activa Ia configuracion por dcfecto para 1"1 entidad asociada. Posiblernente deberfa necesitar crear un protagonists para cada usuario que quiere capacitar para autenticarse usando Kerberos. (En Ia mayorfa de las organizaciones se haec csto escribiendo un script que ademas crea protagonistas Kerberos a la vez que se crean cucntas estandar de usuario.)

7. Ahora, lcomienza Ia diversion! Inicie los diversos servicios relacionados con Kerberos usando los siguientes comandos:

# /sbin/service krb5kdc start # /sbin/service kadmin start # Isbin/service krb524 start

66

Unux Server. Los mejores truces

En estc purito, ya esta preparado para instalar e iniciar un clicntc Kcrberos.

Sin embargo, antes de hacer nada mas, deberia verificar que su servidor puede manejar riques usando cl comando kini t para solicitar cxplicitamente uno para el protagonista administrative que lIu creado antes. Punk por tanto usar el comando kini t para verificar sus contenidos, y despucs dcstr uir el tique (solo para Iimpiar) usando el comando kdestroy. El siguiente ejemplo muestra esta

secucncia:

$ ldnit wvh

Password for "1Vh@VONHAGEN, ORG:

$ klist

Ticket cache: FILE:/tmp/krbScc_O Default principal: ~h@VONHAGEN,ORG

Service principal Kxbtgt/VONHAGEN.ORG/VONHAGEN.ORG

Valid sta:ctin 05/03/05 22:09:04

Expires

05/04/05 22:09:04

Kerberos 4 ticket cache: /tmp/tktO klist: You have no tickets cached 1'; kdestroy

tnstalar y configurar clientes y aplicaciones Kerberos

Muchas distribucioncs de Linux ofrecen utilidades graficas para configurar clientes Kerberos, tales como la aplicacion au thconf ig de Red Fiat y los applets de eonfiguraclon de clientes Kerberos en la her ramienta Ya5T de 5U5E, Este truco explica como hacer todo dcsde la linea de cornandos, en caso de que no tenga acceso a dichas rrtilidades. Si est a utilizando cualquiera de cstos sistemas, las utilidades graficas simplifican los proccsos instalaci6n y configuracion. pew siernpre cs bueno conocer que es lo que realmente ocurre por debajo. Todavfa tendra que migrar sus datos de usuaries. corrtrasefias Y grupos a su servidor Kerbcros

rnanualmente en cualquier caso.

Para instalar Y probar cl software de clientc Kerbews, haga 10 siguientc:

1. Compile e ins tale Kerbcros en el sistema, 0 instale los paquetcs krb5-1ibs y krb5-workstation en todos los sistemas cliente.

2. Copie el fichcro / etc/krbS . conf de su KDC al dircctorio / etc del cliente.

3. Active una aplicacion de muestra. Yo tengo tendencia a usar krb-telnet, una version Kerberos de la aplicaci6n telnet clasica. El servidor krbtelnet (5 gestionado por el demonic xinet de su sistema. Para activar krb-telnet, modifique el fichero / etc/xinetd. d, cambiando la entrada disable de yes a no, como en el siguicntf ejemplo:

# default: off # description: #

The Kerberized telnet server accepts normal telnet, but can also use Kerberos 5 authentication.

1, Autenticaci6n en Linux

67

service t.elnet

flags REUSE

socket_type

stream .~ no

wait

us e r

root

server. /usr!kerberos/sb~n/te~netd

log_on falJure+= USBRID

disable

= no

4. Rcinicie el dernonio xinet de su sistema usan 1 I' .' t

,. . c • . (0 {" slgUlene cornando:

# /etc/init.dfxinetd.d restart

5, r:!a?i:1 telnet a su sistema para estar scguro de que puede ", ,."

sahsfactoriam. e. nte, Una vez (lUI' inicie sesit::'n]) :1 : l' c. irncrar s.eslon

" ... ficar cue ,","'" ueue usar e eomandoklist

pard vet 1 1.(<11 que 11a adquirido autornaticamente la . fi -h K b

". 1... . I '. ' . .. '.. . S IL as er eros apro-

plac as, como en e sig uiente cjemplo:

$ klist

cricket cache: FILE: Itmp/krb5cc._p497 9 Default principal, wvh@VONHAGEN.ORG

Valid starting Ex .

plres Service principal

05/07/05 10:00:46 05/08/05 10·00,t.6k bt t/VO .

K .... b . . ' ." . .r g NHAGEN, ORG@VONHAGEN OHG

.. t' er eros 4 t i c ke t; cache: Itmp/tkt500 '

kllst: You have no tickets cached

iEnl.l0rabuena, Kerberos esta funcionando) £'1" ',.. ,

. te T' J/' , . . cr. ,~sIgulente PdSO en este truco es

m lbrdr "eIber 05 en el proceso de autcnticacion de su sistema, '

Usaf' Kerberos para autenticacion de inicio de sesion

Para activar la autenticacion Kerberos en un sistema cliente, haga 10 siguiente:

1. Asegurcse ele que h~~ c.ompUado 0 instalado d modulo PAM narn k -I rr ( PAM en todos s t " t C .. I );),5,) •• ,'. 0 US SIS emas clicnte, Si no csta usando un sistema de ces-

non de paquetes, puede obtener la ultima version del PAM am krb5 so

en http://soureeforge,net/pn~jects/pam-krb5/. p -' ,.

2. Vcrifique que cl ficherc / t '/k b " .

." t .en ti . /' '.' '. J e c .r 5 .. conf contiene CD.·ustes v<lIidos nara

au en lennon PAM en 1'1 subs .. rd' r C c

/' .. ' . r .,.. c: ~:cclOn pam e la seccion Iappdefaults]. Aius-

dtes,vahdos para,l,i1 autenticacion Kerbcros via PAM para los ejcmplos~Sl~

os en esta seccion son: c

[appdefault.s] pam {

debug = false

68

Linux Server. los mejores trucos

ticket lifetime = 36000 renew_lifetime = 36000 forwardable = true

hosts = kerberos.vonhagen.org max_.timeout = 30

timeout shift = 2

initlal timeout = 1

3. Afiada entradas para autcnticari6n krbS a los fichero~ de configuraci6n PAM apropiados en su sistema. Como se explico ant:flormente, algu:lOs sistemas Linux usan ficheros mdividualcs para conhgurar la autenhcacion para scrvicios especificos, mientras que otros (como ~cd Hat/Ftcdora) crean un fichcro centralizado para la autenticaci6n d~ sl~t~ma llamado jete / am. d/ sys tem-auth. Si esta usando ficheros individuales, ?~he afiadir~as cntradas apropiadas para la autcnticacion LDA~ a los serv:c:o~ rdacionados con el inicio de sesion, tales como log 1 n y serVIClOS "Kerberizados" como r login y telnet.

Deberia insertar entradas auth y account para el modulo pa~_krb5 . so antes de las comprobaciones genericas de autenticaci6n de su SIstema, que son gestionadas normalmente por p~J1\_unix2:. sa (SU5E) 0 ~~n_pwdb: ~o (la mayoria de distribuciones). Un ejernplo de fichero PAM para el servtcio

telnet se asemejaria a 10 siguiente:

auth auth auth account account password password session

session

required sufficient required sufficient required required required required

/lib/security/parn_nologin.so /lib/security/pam_krb5.so !lib/secu,dty!pam_cpwdb.so shadow node lay

/lib/ secu,dty/pam_krb5. so /lib/security/pam_pwdb.so

/lib/ securi ty /pam_c:cacklib. so !lib/securcity/pam~pwdb. so shadow nu I l.ok use_authtok /lib/security/parn_mkhomedir.so skel=/etc/skell umask=0022

Ilib/security/pam_pwdb.so

required

4. Si esta usando un sistema Red Hat 0 Fedora, modifique /ctc/pam.d/systemauth para que se vea como 10 siguientc:

auth auth auth auth account account account

account password

required Ilib/security/pam_env. SO

sufficient Ilib/security!pam_unix.so likeauth nullok suff icient 11 ib/ securi ty/pam_krb5. so use_first_pass

required /lib/security/parn_deny.so

required Ilib/security!parn_unix.so broken_shadow ,

sufficient /lib/securi.ty/pam_succeed_if. so u i.d ~ 100 qU,let [de£ault=bad success=ok user_unknown=ignore] 11lb!securlty/

pam_krb5. SO ,

required Ilib/ securi.ty/parn_perml t , so

requisi te Ili.b/securi ty/pamc_cracklib. so retxy=3

1. Autenticacion ell l.inux

69

sufficient

/1 ib/ securi ty Iparncccc unix. so nul 10k use authcok mdS shadow

Ilib/security/pam_krb5.so use_authtok Ilib/security/pam_deny.so

/ libl securi ty Ipamc~_l imi ts. so Ilib/security/pam_unix.so /lib/security/pam_krb5.so

password

password password session

sufficient required required required opt:ional

session session

Esto cs todo 10 que deberia tener que hacer. Antes de cerrar In sesion en el cliente, haga telnet 0 ssh a eI e intentc iniciar una sesion. Si ticne algun problema con la autenticacion de inicio de scsion de Kerberos, puede activar Ia depuracion PAM en su fichcro / etc /krb5 . conf de tal manna que pucda identificar y resolver rapidamente problemas rclacionados con la autenticacion de login y otras aplicacioncs de sistema que usan PAM. Para hacer esto, simplemente ponga la entrada debug a true en la seccion PAM de la cstrofa [appdcfaults] y reinicie su scrvidor Kcrberos.

Desafortunadamcntc, no hay ninglm mecanisme automatico para migrar informacion de usuaries y contrasefias existente, a una base de datos Kerberos. Tendra que hacerlo manualmente y aiiadir protagonistas para todos y cada uno de sus grupos y usuarios a Ia base de datos Kerberos de su KDC, y asignarles contrasefias pOI' defecto. Los usuarios podran cambial' seguidamente sus contrascfias usando el comando kpasswd que Sf cncuentra en /usr /kerberos/bin.

Autenticar a los arnantes de NFS con NIS

Si esta usando NFS, utilizar el mecanisme de autenticacion que le acompaiia puede ser la mejor opcion,

NIS (Network Information System, Sistema de Informacion en Red) es un mecanisrno de autenticaci6n distribuido que fuc originalmente desarrollado por Sun Microsystcrns y sc usa comunmente junto con el protocolo de ficheros cornpartides NfS, que se explicara con mas detalle posteriormente.

NIS+, tarnbien (Tendo por Sun Microsvsterns, es el sucesor de NIS. MUy parecido a LDAP, organiza 11.1 informacion jerarquicamente. For dcsgracia, NIS+ nunca gan6 popularidad fuera de los sistemas Sun, y, por tanto, pocos sistemas operatives Unix 0 basados en Unix (como, por ejernplo, Linux) se molestan en dar soporte a NIS +.

NIS per-mite a todas las maquinas de un sistema inforrnatico cornpartir acceso a una coleccion centralizada de ficheros y servicios relacionados con Ia informacion de autenticacion, conocidos como "mapas". Cada mapa NIS norrnalmente se proporciona de varias maneras diferentes, cada una organizada para optimizer

70

linux Server. Los mejores trucos

un tipo especifico de acceso a esa informacion, tales como busquedas par Hombre a por algun componente numcrico unico (como POf ejemplo el poder acccder al mapa de grupas por medio del identificador de grujJo (GID), al mapa de equipos par media de la direccion If; etc.)

lnstalar clientes y servidores NIS

La mayoria de las distribuciones de Linux proporcionan paquetcs que incluyen el software de cliente y servidor NIS, pero si Ia suya no 10 haec, 0 simplemente quiere instalar uno mejor y mas nuevo, nccesitara cornpilar e instalar los siguientes paquetcs disponibles en ftp://ftp.kerne1.mg/pub/linux/utils/net/NI5:

@ ypbind-mt: El dernonio clientc de NJS e ypserv: The NIS server

e yp-tools: Las utilidades NIS estandar para mostrar ficheros NIS, cambial' su contrasefta NIS, carnbiar el nornbre complete 0 el interprete de comandos en su entrada del fichero de contrasefias NIS, y solicitar informacion sobre varios aspectos de un servidor NIS 0 de mapas NIS.

Los nombres de estos paquetes ademas incluyen numeros de version y una extension basada en el formate de archive en el que se descarga (gzip 0 bzip2).

Configurar lin servidor NUS

Como se ha mencionado anteriormente. NIS es el mecanisme de autcnticacion distribuida mas utilizado hoy en dia, en gran parte porque se distribuye gratuitarncnte con casi todos los sistemas Unix 0 basados en Unix. Otra razon para la prevalencia de NIS es que es increfblernerrte facil de configurar. Esta seccion le guia a traves del proceso de configuracion de un scrvidor NIS. Como C011- figurar un cliente NIS se explicara en Ia siguicnte scccion.

Esta scccion muestra como configurar rapidarnente un scrvidor NIS para ser usado con un servidor NFS. Dicho servidor NIS exporta los mapas (ficheros) de contrasefias, grupos por dcfecto y otros m.is encontrados en cl servidor NIS.

En un entorno en produccion, usted querra sustancialmente hacer unos cuantos retoques antes de iniciar NIS por todo su entorno informatico. Por ejernplo, podrfa querer ademas personalizar los ficheros de configuraci{)J1 /var /yp/ securenets, jete /yp. c on f'. y /ete/ ypserv. con f , Para mas informacion sobre como configurar NIS, vea cl "NIS IIOWTO" listado al final de este truco.

1. Autenticacion en Linux

71

. Para C(~nfigurar un servido~ NIS, inicie sesion (0 utilice su} como super-usuano en cl SIstema que va a configurar como scrvidor NIS, y haga 10 siguiente:

1. Asegurese de que el software de NIS esta instalado en su sistema Linux.

Como minimo, necesitara los prograrnas Ibin/domainname, /usr/ sbin Iypserv, y /usr/1ib/yp/ypinit.

2. A continuacion, asegurese de que el fichero /dc/passwd contiene una entrada para su cuenta personal, deberfa cncontrarse ademas en el fichero de contrasefias del sistema que va a configurar como clicnte NIS. En 1.'1 siguientc seccion, usara esta entrada para veriflcar que NI5 esta funcionando corrcctamente.

3. Establezca el nombre de dominic de su nuevo dominic NIS. Este no deberia scr,d mismo que su dominio TCP/IF, para evitar contundir al DNS y potencialmente cornprometer la seguridad en su dorninio. Para cstablecer el nombre de dominic de NIS, ejccute uri cornando como el siguiente:

# Ibin/domainname :foo.com

4. Inicie el proceso del servidor NIS usando el siguiente cornando:

# /usrlsbin/ypserv

5. Inicialice las bases de datos de NIS usando el siguiente cornando:

# /usr/lib/yp/ypinit -m

Vera una salida pOl' pantalla como la siguiente:

At this point, we have to construct a list of the hosts which will ru.n NIS servers.

64bit.vonhagen.org is in the list of NIS server hosts.

p] ease continue to add the names for the o t.ho r hosts, one per 1 ine. When you are done with the list, type a <contra] D>.

next host to add: 64bit.vonhagen.org

next host to add:

6. Cuando se Ie prcguntc pm el nornbre de cualquier otro servidor NIS en su dominio pulse Corrtr'ol-D. Vera una salida como Ia siguiente:

~~e current list of NIS servers looks like this: 64bit.vonhagen.org

Is this correct? [yin: y]

7. Pulse Intro para responder sf (yes). Vera entonccs texto de salida listando los ficheros que han sido generados y afiadidos a la base de datos N1S.

72

Linux Server. Los mejores trucos

Esta salida ticnc el siguiente aspecto (donde hava especificado el nombre de dominio aparcccra en lugar de la palabra "su_dominio"):

\file need some minutes to build the databases ... Building /var/yp/ws.com/ypservers ...

Running /var/yp/Makefile ...

gmake [1 J, Entering directory . Ivar /yp I su_domin.i o '

Updating passwd.byname .

Upda t ing passwd. byuid .

Updating group.byname .

Updating group.bygid .

Upda t ing ho s t s . byname .

Updating hosts.byaddr .

Upda t ing r pc , byname .

Updating rpc.bynumber .

Updating services.byname ... Updating services.byservicename ... updating netid.byname ...

Updating protocols.bynumber.,. Updating protocols.byname .. , Updating mail.aliases ...

gmake[lj: Leaving directory '/var/yp/su_dominio'

lEsto es todo ]0 que hay! Su nuevo servidor NIS estil en marcha y ejecutando.

Ahora puede comprobar que est"l funcionandiJ correctamente, siguiendo las

instrucciones de Ia seccion siglliente.

Configurar un cliente N IS

Un buen administrador "Zen" dirfa: "5i un servidor esUi cjeeutando y no ticne clicntes, (,esta realmente funcionando?" Esta seccion explica como configurar un clientc NIS del servidor montado en la seccion anterior, despues de haccr alguna configuracion inicial, de tal manera que pueda verificar que NIS esta realrncntc

hacicndo "10 cor-recto".

Para hacer alguna pre-conflguracion que verifiquc que NI5 es~it reaI.~nente funcionando, inicie sesion 0 ejecnte su COIl el sllper-usuario y cdite el fichero I etc Ins swi tch. conf en eI sistema que csta usando como clientc N[S. Encuentrc la linea que Ie dice a su sistema como ubicar las entradas de contrasefia y rnodifique dicha linea para que se yea como la siguiente:

passwd:

files nis [NOTFOUND=retur'n]

Esto le dice a su sistema que busque la informacion de contrasefias en el fichero de contrasefias local Y consultc despues NIS.

Si la contrasefia no se cncuentra en ninguna de estas ubicaciones, el comando [NOTFOUND=return] le dice a su sistema que se rinda antes de intcntar utilizer

1. Autenticaci6n en Linux

73

cllalquier otra de las fuentes de autcnticacion que podrtan aparecer en csta entrada nsswitrh.conf.

A eontinuaci6n, guarde una copia del fichero / etc Ipasswd de su sistema y eliminc todas las entradas de usuarios del fichero de contrasefias existentc, Deje las cuentas cor respondientcs al supcr-usuario (root) y a los servicios de sistema en el fichero, norrnalmente. es seguro eliminar cuentas con un UlD mayor que 200. Como 11!tima linea del nuevo fichero de contraserias abreviado, afiada 10 siguicnte:

+: : : ~ : :

Esto le dice a NIS que afiada los contenidos del mapa (fichero) de contrasefias obtenido del servidor NIS cuando Sf solicite informacion sobre contrasenas,

Fijese ell que las entradas para cada cucnta individual (incluyendo In suya propia) han sido elirninadas del fichero de contrasefias abreviado. Esto le per mite haccr una prueba bastante simple para deterrninar si NIS csta funcionando: S1 pucde iniciar scsion usando II ria cuenta que no esta prcsente en el fichcro de contrasefias de su sistema clicnte pero sf lo esta en cl de su servidor NIS, entonces NIS funciona correctarnente.

Para configurar un cliente NIS, inicic sesion 0 ejecute su con el super-usuario en el sistema que esta usando como clicnte NI5 y haga 10 siguiente:

1. Asegurese de que el software de cliente NIS esta instalado en su sistema Linux. Como minimo. necesitara los programas /bin/domainname y I sbinl ypbind.

2. Compruebe S1 cl directorio /var /yp existe y credo en caso contrario.

3. Estable~ca d nombre de dominic NIS al que este nuevo clientc va a pertcnecer. Este deberia ser el misrno nornbrc que el nombre de dorninio establecido en la anterior scccion de este truce. Para establecer el nornbre de dominic. ejecute un cornando como el siguiente:

# Ibin/domainname foc.com

4. Editc el fichero de confignraci6n de ypbind /cte/yp.conf, afiadiendo una entrada para su servidor NJS. Continuando con el ejernplo anterior, deberia afiadir la siguicntc Ifnca:

domain vonhagen. org server 64bi t;

Si 5U red no esta ejecutando servidorcs NIS antiguos, potencialmcnte incompatibles para otros grupos, podria rrcmplazar server 64bit por broadcast para hacer que el clicntc NIS lance una pcticion a toda la red local para localizar un ser vidor NIS.

74

Linux Server. Los rnejores truces

5. Inicie el proceso clicntc de NIS usando cl siguientc comando:

# Isbin/ypbind

6. Para verificar que NIS esta funcionando correctamente, haga te1net desde el cliente NIS a sl mismo e intente iniciar sesion su usuario. Recuerde que SlI entrada en el fichero de contrascfias esta prcsente en el fichero de contrasefias del servidor N[S pero no en el del cliente.

Deberta ser capaz de iniciar sesion con exito. iEnhorabuena, esta ejecutando NIS! Recuerde configurar el nornbre de dorninio y los procedimientos de inicio del cliente y de! servidor NIS para cada uno de sus sistemas cliente.

[J

I,-G~

Sincronizar datos lDAP con NIS

Ejecute un script desde cron para una elegante transformacion a lDAP

Una migracion de NIS a LDAP es un acontecimiento nada trivial en cualquier cntorno, Si el cambio fuera tan facil como mover los datos de un Iugar a otro, la mayoria de las organizaciones ya 10 habrfan heche. La rcalidad en muchos entornos de produccion. grandcs y pequefios, es que algunas aplicaciones (e in~ cluso dispositivos) no soportan LDAF todavia 0 no soportan LDAP hasta cl extrcmo que deseartamos, Finalmente, la mayorfa de las organizaciones se conforman con las limitaciones de LDAP e implemcntan una propuesta de "introduccion paulatina", que implica usar LDAP donde esta completamcnte soportado pero mantener NIS a mano para 10 que puedan necesitarlo.

En estos en tor nos donde sera NIS para algunos sistemas y LDAP para aquellos nuevos sistemas que 10 soportan, el reto estu en mantcner los datos sincronizados entre NIS y LDAP. Durante los dos ultimos afios, he encontrado varias herramientas que intentan solucionar cste problema. Una es un programa en C que, aunque es asombrosamente generico, necesita todo un hatajo de marcadores que pueden parecer bastante cnigmaticcs para algunos administradores de sistemas. Otra solucien consistta en un con junto de herramientas que intcntaban hacer demasiado y no eran demasiado configurables, Fui incapaz de cntablar amistad con estas herrarnientas, ya que parecian asumir cosas sobre mi entorno que no eran ciertas,

AI final, cncontre en Internet un script programado en Perl que tenia una estructura muy elemental que cualquiera podrfa cntender, Estaba clararnente escrito y bien comentado, pero por desgracia no estaba rcalmente programado para completar el trabajo que aseguraba hacer. En vez de continual' mi busqueda, me cans!': y decidi que, usando estescript en Perl como un esqueleto "suficienternente bueno", podna hacerlo funcionar para satisfacer mis nccesidades. He aquf rni truce en Perl para tomar los datos residerites en LDAP y crear mapas NIS

1. Autenticaci6n en l.inux

75

EI codigo

~!/usr/bin/perl use Net: ~ LDAP;

## CoNFIG

my $server ~, "servidor-ldap";

my $base "dc=ejemplo, dc=com";

my $bind = "uid=ldap2nis,ou=Gente,dc~ejemplo,dc=com";

my $bindpw ' con trasefia ' ;

my $groupf = "group";

my .o;;passwf ~ "passwd" i

my $buildyp = "false";

## CONNECT

my $ldap = Net::LDAP->new($server, onerror => 'die' I;

$ldaps = $ldap->start_tls(ver.ifY~>'none>1 ordie "Couldn't start t Ls : $@\D"i $ldap->bind( dn => $bind, password => $bindpw) or die "Bind failed: $@\n";

## PRINT PASSWORD FILE

my Sres = $ldap->search( base => $base,

scope => 'sub', # entire tree

timelimit => 600,

filter => '(& (objectClass=posixAccQunt)) , ,

attrs => [' uid', 'uidNumber', . gidNumber', 'gecos', fhomeDirectory', jloginShell', 'userPassword'j,

) ;

open (PASSWORD, ">$passwf");

while (my Sentry = $res->shift_entry) {

(my s u i d = $entry->get_ . ...value ( 'uid' ) I - s /: I ./g;

(my $uidnum = $entry~>get_ value ( 'ui.dNumber' )) =- s / : / . I g; (my $gidnum = $entry- >get_ value ( . gidNumber' )) ~- s / : / . / g; (my $gecos = Sentry' >ge t_ value I 'gecos ' )) =- s I: / . I g;

(my $homedir zr: $entr'y->get_ value ( 'homeDirectory' ) I =- s / : / . / g; (my $shell = $entry->get_valuel 'loginShell')) =_ s/:/./g;

(my Sup ~ $entry->get_val ue ( , userPassword' ) I =.~ s I: / . /q;

if (index($up, "{crypt)") '= ~l) { _

Sup substr($up, 7);

}else{

Sup crypt ($up, "bR");

$p~ssrecord join ( , : ' , $uid, $up, $uidnum, $gidnum, $CJecos, $homedir. $shell) ; p r i n t. PASSWORD "$passrecord\n";

close (PASSWORD); chmod(06QO, $passwf);

## PRINT GROUP FILE

my $res = $ldap->search(

76

Linux Server. Los mejores trucos

base => $base,

scope => • sub' , # entire tree

timelirnit => 600,

filter => '(& (objectClass=posixGroup)) , , attrs ::::;> ('en' r 'gidNumber1 r ~memberuid'] t

) ;

open (GROUP, "> $groupf" I ;

while (rny Sentry = $res->shift._ent:cy)

(my $g:cnarne = $entry->get_value (, en')) s/: I. Ig;

my $grpass = "*";

(my $grnurn = sen try->get_value I 'gidNurnber ' I I =- s I: I. Ig;

(@rnembers = $entry->get_value ('rnernberuid' I) ~. s/: I. Ig;

.i.f ($#members >= 0) I

$memusers }else{ $rnemusers

join (' , ' ,@mernbers);

$grprecord join I . : " $grnarne, $grpass, $grnum, $memusers) ;

print GROUP "$grprecord\n";

close (GROUP) ; chmod(0600, $groupf);

Ejecutar el codigo

Asumiendo que esta almacenando texto de contrasefias codificado en su mapa pilsswd de NIS, estc script, al que yo llamo dap2nis, deberta ser configurado usando las variables mas pr6ximas al inicio del programa, para Iigarlo a una ellen ta que tenga acceso de Iectura al atributo llserPassword para las entradas de usuario. De otro modo, no obtendrfa ning{m valor para esc atributo, y sus Inapas NIS resultantes no serian utiles como Fuentes de autenticacion cuando fueran cntregados.

Puedc probar el c6digo crcando primero un directorio de prucba y haciendo aI script ejecutable. A continuacion, asegurcse de configurarlo para dialogar con su servidor LDAP usando las variables de configuracion del inicio del programa. Una vez que cstri todo hecho, la ejecucion del programa deberia generar ficheros pesswd y group en el directorio de prueba. Estos debenan ser mapas 1\115 validos, list os para ser entregados. Sin embargo, antes de dar esc paso, deberia ejecutar diff can los mapas 1\I1S actuales para cornprobar cualquier anomalia que rd1eje errores en Ia generaci6n de los mapas, mas que simples cambios que hayan ocurrido en LDAP pero que no se han reflejado todavia en NIS. He aqui unos cuantos comandos de una sesion de prueba hiporetica:

II ./dap2nis

II ypcat pass~d > yppass.out

1. Autenticaci6n en Linux

77

II ypcat group> ypgrp.ont II diff yppass.out passwd II diff ypgrp.out group

La unica salida que deberia ver resultante de los cornandos d i f f debertan ser cambios validos que no han sido todavia propagados a NIS.

Una vez que ha comprobado todo minuciosarnente, punk poner el script en el fichcro crontab del super-usuario con una entrada como esta:

*/7***-k

Ivar/adm/bin/dap2nis

Esta entrada haec que se ejecute el script a diario todo el tiempo, cada side rninutos.Lo unico que cl script dap2nis no haec en su version actual es realizar realmcnte un cd var/yp/; make, que norrnalmente entrcgana los mapas NIS. Dependiendo de su entrono, puede no querer que se haga en este script en particular, En S~l Ingar, podrfa poner otra tareacron que entregue los mapas NIS cada cuatro mmutos, 10 que pcr mit i rfa que los carnhios fueran entregados aut~)mMicamente pa~a reflejar los cambios que han sido hechos a los mapas no cubiertos por cste script: Crear unatarea eron separada para entregar los mapas NIS ademas asegura que si este script es alguna vez retirado 0 puesto fuera de produccion, sus mapas seran todavfa entregados de modo automatico.

CAPiTULO 2

onectividad remota con inte az grafica ( I) Truces 10 a 19

Las reeks son Ia espina dorsal de la mayorfa de Ia cornputacion de hoy en dia. lnduso pequenos negocios depcnden de rcdes internas de PC y servidores para gcstionar servicios como el correo electronico, compartir ficheros y directories. deeeticr a servidores Web, tanto intcrnos como externos, etc. Para el administrador de sistemas, esto significa que normalrnente nccesita conectarse H diferentes tipos de sistemas durante el transcurso de un dia para realizer difcrentes tipos de tareas administrativas.

Si su red esta compuesta unicarnente de sistemas Linux, punk usar herramientas estandar de linea de cornandos para conectarse a sistemas remotes y hacer la mayorfa de su trabajo, pew afronternoslo, hoy en dia vivimos en el mundo grafico. Hay montones de estupcndas herramicntas administrativas pOT ahi que facilitan el hacer tareas cornplejas, que podrian ser facilmente descarriladas pur tan solo una errata en una larga linea de cornandos. Y si adernas administra sistemas Microsoft Windows 0 Mac OS X, necesitara tambien tener acceso a las her rarnientas graficas que se ejecutan en dichos sistemas.

Estc capitulo, ante todo, consiste en trucos que facilitan el establecer conexiones grMicas a maquinas remotes desde un sistema de escritorio, perrnitiendo a la gentc ejecutar paquetes graficos que estan iristalados en esos sistemas remotos sin levantarse de la silla.

Adernas proporciona un truco que le cuenta como usaf Webmin, una utilidad de administracion de sistemas, basada en Web que Ie per mite seceder a multiples recursos de servidor desd« un unico sistema y navegador,

Los truros en este capitulo no son s610 para administradores de sistemas, son para cualquiera que necesite usar interfaces graficas en multiples equipos. 1n-

80

Linux Server. Los mejores trucos

cluso si la suva es una empresa Linux, hay ocasiones en las que sus usuaries neccsitan acceder ocasionalmente a maquinas Windows para actualizar planes de proyecto, documentos de requisites, hojas de calculo, etc. Les podrta dar a todos un sistema Windows "por si acaso", pero no es ni razonable ni cconomico. En cambio, l.por que no sencillamente perrnitir a los usuaries conectarse a un sistema Windows remoto 0 a un Windows Terminal Server para esas ocasiones poco frecuentes en las que el software Windows es realmente necesario? De modo parecido, si los usuarios nccesitan comprobar su correo personal mientras estan en cl trahajo, puede configurar sus clientes de corrco para soportar perfiles adicionales, dejar cl correo en el servidor, introducir contrasefias personales, etc. A muchos negocios no les-importa este tipo de cosas, pcro la gente podrfa tv deberia) oponersf a tener ropias de cor reo personal y de informacion de autcnticacion en maquinas que no son las suyas. Usando algunos truces vistos anteriorrnente, la gente podrfa acceder rcmotamente a sus cquipos de casa y revisar el corrco ahi. Sin capias de correo personal, sin contrasefias locales, en definitive, sin pro~ blemas,

Acceder a sistemas remotes con VNC

VNC (Virtual Network Computing, Cornputacion Virtual en Red) es 101 meier alternativa para estar alii, y ademas es multiplataforma.

Las utilidades de ltnea de comando (tales como ssh y telnet) para seceder a sistemas remotes estan bien para muchas cosas, pero no son de rnucha avuda cuando necesita ejecutar aplicaciones grMicas en un sistema remoto. Puede juguetear con la variable de entorno estandar del sistema X Window DISPLAY para mostrar la salida de programas en diferentes pantallas, 0 puede aprovechar nuevas tecnologias mucho mejores como VNC para rnostrar el escritorio complete de un sistema remoto en una ventana en el sistema en el que esta trabajando actualmente. Este truco cxplica como usar VNC para hacer justo esto. VNC es una teenologta multiplataforrna de clientc ligero desarrollada originalmente por Olivetti Research Labs en Cambridge, Inglaterra, que fue mas tarde adquirida pOl' AT&T Un servidor VNC se tjeeuta en un sistema de escritorio 0 en un servidor y exporta un escritorio del sistema X Window que puede ser arcedido via un cliente VNC ejecutandose en otro sistema. Los servidores VNC estan normalmente protegidos por contrasefia y mantienen su estado a 10 largo de los accesos de los distintos clicntcs. Esto haee de VNC un entorno optimo para acceder a una consola grafica y ejecutar aplicaciones graficas de administracion y rnonitorizacion de forma remota.

Cualquier sistema puede ejecutar multiples servidores VNC, cada uno de los cuales exporta un entorno de escritorio independicnte y, pOl' tanto, mantiene un

2. Conectividad remota con interfaz grafica (GUI)

81

cstado separado. De modo parccido. multiples clientes se puedcn concctar e inleraduar con el mismo servidor, ofreciendo un excelentc cntorrio para forrnacion, ya que varios usuaries pueden ver el mismo escritorio.

VNC sigue el modelo cliente/servidor tradicional mas que el modele clicnte /servidor del sistema X Window. Un servidor VNC es en realidad un proceso del sistema X Window que export a un escritorio X desde el sistema en el que esta ejecuhindosc, usando una memoria grafica intcrmedia para mantener informacion de cstado sobre las aplicaciones grMicas que se estan cjecutando dcntro de esc servidor, VNC usa su propio protocolo RFB (Remote Frame Buffer, Memoria Crafica Intermedia Remota) para exportar camhios gn"ificos y manejar los eventos de raton y teclado. Si bien VNC exporta un cntorno grafico. el protocolo RFB esta muy optimizado, minimizando la cantidad de informacion de actualizacion de pantalla que debe ser transferida entre cliente y servidor,

VNC Sf publica bajo GPL (General Public License, Licencia General Publica). y muchos de los desarrolladores VNC originales ahora trabajan para una C0111pafiia llamada RealVNC (http://www.realvnc.com). que distribuve y da soporte a una implementacion comercial de VNC. Otra distribucion de VNC extremadamente popular es TightVNC (http://www.tightvnc.com). uri pequefio e incluso mas optimizado servidor y cliente VNC. l'ighlVNC hace mejor uso del ancho elf banda, utilizando cornpresion JPEG para Ia pantalla y diferenciando entre rnovimiento del puntcro local y movimiento de puntero que debe ser comunieado al servidor VNC. TightVNC ademas incluye tunel automatico SSH por motivos de seguridad, <1unque cualquier sesion VNC pucde ser ejecutada a traves de un t(}nelSSH.

Este truco se centra en el uso de Tightvr+C, aunqut: ReaIVNC es tarnbien una excelcnte eleccion. La mayoria de las distribucioncs de Linux instalan una de estas implernentaciones de VNC como parte de sus instalaciones clientc/servidor por defccto, pero siempre puede obtener la ultima version desde el sitio Web apropiado.

Entender el proceso de inicio de VNC

£1 binario del servidor VNC Xvnc, es iniciado normalmente por un script Perl llamado vncserver. El script vncserver un mecanisme mas flexible para pasar argumentos al servidor, muestra informacion de estado una vez que el set-vidor ha iniciado, y adcmas integra Ia habilidad de usar un script de inicio para identificar al gestor de ventanas y cualquier otra aplicacion X que el servidor VNC debiera iniciar, Elscripl de inicio del servidor VNC es el fichero -/ . vnc/xstartup. Si este directorio y d fichero de inicio no existen la primers vez que inicia una servidor VNC, el directorio cs creado y el script se dona del fichero de inicio pOl' defccto del sistema X Window (/etc/Xl1/xinit!xinitrc). En sistemas Red

82

Linux Server. Los mejores trucos

Hat y Fedora Core, eiscript por defecto ~/ . vnc/xstartup simplemente ejecllta elscript de comandos /etc/Xll/xini t/xintxc:

#!/bin/sh

# Red Hat Linux VNC session startup script exec letc/Xll/xinit/xinitrc

Esto perrnite que en los sistemas basicos Red Hat y Fedora Core, VNC siga la misma, un tanto enrevesada, cadcna de ficheros de inicio de X Window que Sf usa not-rnalmcntc: -1.Xclients, -I .xclients-$HOSTNAME$DISPLAY, ~ I. Xclients-default, y letc/Xll/xini t/Xclients. Los ficheros Xclicnt pueden iniciar varies entornos de escritorio y gestores de ventanas usando ajustes de variables de en torno. y, finalmente. ejecutar cl gestor de ventanas twm en caso de fallo (http://www.plig.org/xwinman/vtwm.hlmlJ .

En los sistemas SUSE, el script" I . vnc / xstartup es un poco mas dirccto:

#!/bin/sh

xrdb $HOHE/.Xresources xsetroot -solid grey

xterm -geometry 80x24+10+10 -Ts -·title "$VNCDESKTOP Desktop" & twm &

Este script de iriicio establece las configuraciones de recursos del sistema X Window espccificadas en el fichero $ HOME I . Xresources, cstablece el fonda como gris solido, inicia un xterm con los para metros especificados, y dcspues inicia el gestor de ventanas twm. Mas adelante en este truce. en 13 seccion "Personalizar d entorno X Window de su servidor VNC", discutire como personalizar estescript para 101 iniciar cl entorno X Window y las aplicaciones que usted elija, Por ahora, es simplemente util comprender como el scrvidor VNC determina que aplicaciones de sistema X Window ejecutar.

tniciar su servidor VNC

Para iniciar un servidor VNC ejecutc el script vncserver, que ar ranca el servidor Xvnc y el gestor de vcntanas del sistema X Window 0 el escritorio y las aplicaciones definidas en su script - I . vnc I xs tartup. La primcra vez que inicie un servidor VNC en su sistema, Sf if preguntara si quiere estahlecer una contrasefia de "s610 ver" (view-only) para el servidor VNC. Como el nombre sugiere, una COl1- trasefia de "solo ver" if perrnitira vel' puo no interactuar con cl escritorio remote mostrado en Ia ventana del vncviewer. La primera vez que ejecute el script vncserver, vera algo como 10 siguicnte:

$ vncserver

You will requi.re a password to access your desktops. Password;

2. Ccmectividad remota con interfaz grafica (GUI)

83

verify:

Would you like to enter a view-only pa s swo r d (yin)? n New 'X' desktop is 64bit:l

Starting applications specified in /home/wvhi .vnc/x:sta~·tup Logf:U_e is Ihomeh,vhf. vncl 64bi t: l.log

Sf habra dado cucnta de quc no me he molcstado en establecer una contrasefia de "solo ver": mmca 10 he encontrado 6tH en absolute. Puede cambiar su contrasefia VNC en cualquier HI0111ento utilizando el comando vncpas swd. Como la mavorfa de las utilidades de carnbio de contrasefia, primero Ie prcguntara por su antigua cont.rasefia VNC, luego por la nueva, y finalmente le pedira una confirmarion de la nueva contrascfia VNC.

Cuando inicie un servidor VNC en una consola de sistema o como un usuario privilegiado, ascgurese de haber estabiecido una contrascfia VNC que siga las reglas mas cstrictas para la seguridad de contrasenas. Cualquiera que descifrc su contraseria tendra aCCfSO virtual instantaneo

a uno de sus cquipos, con todas las aplicaciones que fste contenga. Esto serta el paraiso para un pirat» novato, que no sabrta manejarse de otra manna dentro de un cquipo Linux,

Una vez que 11a establecido una contrasefia y, opcionalrncnte, una contrasefia de "5610 ver", el script vncserver mostrara un mensaje como el siguicnte, en el memento en cl quc el servidor es iniciado con exito:

New 'X' desktop is home.lfonhagen.org:l

Starting applications specified in Ihome/wvh/.vnc/xstartup Logfile is Ihome/wvh/.vnc/home.vonhagen.org:l.log

Los servidorcs VNC exportan sus pantallas virtuales por puertos nurnerados con 5900 mas el numero de la pantalla que se exporta, POl' ejernplo, un servidor VNC ejecutando en la pantalla de sistema X Window numero uno (: 1) usara d puerto 5901, un servidor VNC eiecurando en la pantalla de sistema X Window numcro dos (:2) el puerto 5901, y asi sucesivamcntr. Si su sistema hace filtrado de paquetcs del nucleo de sistema (kernel), 0 si Sl1 red utiliza un cortafuegos, debe asegurarse de que no bloquea los puertos 590x (usados para exporter pantallas de servidor VNC), el puerto 6000 (usado para comunicar con el servidor de sistema X Window), 0 los puertos 580x (si quiere comunicar con el scrvidor VNC usando la Web).

Conectarse a un servidor VNC

Una vez que ha iniciado un servidor VNC, puede conectarsc a el, desde cualquier sistema remote, ejecutando el comando vncviewer equipo: pantalla,

Linux Server. Los mejores trucos

dondc "equipo" es la rnaquina en la que se esta ejecutando el servidor VNC y "pantalla" es el numero de pantalla de sistema X Window sobre la que el servidor VNC esta ejecutandosc. La figura 2.1 muestra una conexion a un sistema remote SUSE usando elscript por defecto xstartup mostrado en Ia seccion anterior. Como punk observer; Ia configuracion par defecto del servidor VNC es un poco austera, incluso para un intolerante de los gestores de ventanas 0 para un experto en simp licidad,

figura 2.1. El escritorio VNC por defecto,

Personalizar el entorno X Window de !ill servidor VNC

La mayo ria de las configuraciones del servidor VNC inician automaticamente por defecto el gestor de ventanas twrn en el entorno del servidor VNC. Sin embargo, d usa del script de inicio facilita el iniciar cualquier gestor de ventanas, entorno de escritorio, y aplicaciones del sistema X Window que prefiera usar en el entorno VNC.

Para condiciones de bajo ancho de banda, el gestor de ventanas twrn podrla ser la mejor elcccion: debido a su relativamente minimo conjunto dt~ caracteristicas,

2. Conectividad remota con interfaz grafica (CUI)

85

es relativarncnte ligero. En entornos de red con lllayor ancho de banda, sin embargo, podrta querer usar un gestor de ventanas 0 entorno de escritorio con el que se sienta mas c6modo. Puede hacer esto facilmcnte comentando la entrada twm en su fichero xstartup y afiadiendo los cornandos que quiera usar para iniciar otro gestor de vcntanas 0 entorno de cscritorio tal como GNOME 0 KDE. Por eiemplo, la Figura 2.2 muestra una conexion a un sistema SUSE remote cuando el script xstartup por defecto ha sido modificado para iniciar KD£, como en el siguiente:

#!/bin/sh

xrdb $HOME/.xresources # xsetroot -solid grey

xterm ~geometry 80x24+10+10 ··ls -title '"$VNCDESKTOP Desktop" & # twm &

lopt/kde3/hin/startkde &

Si Sf Ie indica al cerrar Ia sesion, [(DE recuerda su cstado a traves cada vcz que rcinicie. La figura 2.2 muestra dos xterm siendo iniciados: eI de la infor-macion guardada por KDE sobre la ultima sesi6n, y el espccificado en el script de inicio de VNC

Detener su servidor VNC

Como cualquier proceso. un servidor VNC siernpre ter minara cuando apague o rcinicie la maquina en la que csta ejecutando. (iNo es brornal) Sin embargo, no es el mecanismo de apagado mas Iimpio, ya que dejara ficheros PID inutiles en su directorio ~! . Vile y algunos ficheros temporales y sockets en varios 1 ugares del directorio / tmp de su sistema. Un modo mucho mas limpio de apagar un proceso servidor VNC es usar Ia opcion =kill del script vncserver:

$ vncserver -kill :numero~de~pantalla

Ademas de finalizar Iimpiamente los servidores VNC cuando esta planeando apagar 0 reiniciar sus sistemas, podria querer dar fin manualmente a un servidol' VNC si ha modificado su fichcro de inicio y quicre reiniciarlo con el nuevo gestor de vcntanas, escritorio, 0 aplicaciones del sistema X Window.

Si su sistema se cuelga mientras esta ejecutando un servidor VNC 0 cs d misrno servidor VNC el que se cuelga. deberta limpiar los ficheros asociados en los directorios /tmp y /tmp/ .Xll-unix. Pur ejemplo. si Sl1 servidor VNC estaba ejecutando en la pantalla mimero uno, deberta borrar los ficheros / tmp/ . Xl· .. ·lock y / tmp/ . Xl1-unix/Xl. Haciendo esto asegura que cada nuevo scrvidor VNC iniciado 10 hara en la primera pantalla disponible,

86

Linux Server. Los mejores truces

Fi.gura 2.2. Un escritorio VNC usando KDE.

Optimizar el rendirniento de VNC

Puedc optimizer el rcndimiento de VNC ados niveles difcrentes, ya sea minimizando las actualizaciones del sistema X Window que tiencn que ser comunicadas entre el cliente y el scrvidor VNC, U optimizando el modo en el que VNC cnvia dicha informacion.

Minimizar 1£1 cantidad de trafico grafico del sistema X Window enviado entre eJ clientc y el servidor VNC es en gran parte cuestion de reducir las actualizaciones a1 minimo, al mismo tiempo que se mantiene utilizable una sesion de sistema X Window.

tndcpendientemcnte del gestor de vcntanas 0 cntorno de escritorio que este usando en VNC, he aquf algunos consejos generales para mejorar el rcndimiento minirnizando las actualizaciones grMicas:

~ Minimice Ia profundidad de colores de! escritorio.

e Elimine la ilurninacion de las ventanas cuando se las apunta,

2, Conectividad remota con interfaz grafica (GUI)

87

No ponga las ventanas en primer plano automaticamente cuando se las apunta.

No usc movimientos opacos cuandornueva ventanas. En vez de eso configure su gestor de ventanas 0 entorno de escritorio para mover s610 los marcos de las ventanas.

Si puedc aguantar twm en sus 5(:510ne5 VNC, puede optimizar aun mas el rendimiento de VNC utilizando su capacidad para minimizar el intercambio de informacion grafica cuando no es necesaria. La pagina Web de /\T& T para VNC (http://www.uk.research.att.com/archive/

vnc/twrnideas.htrnl) proporciona algunos consejos espectficos sobrc la optimizad6n de t.wrn para VNC.

Optimizar Ia rnanera en Ia que cl cliente y el servidor VNC intercambian informaci6n de actualizacion es la otra manera posible de mejorar el rendimiento de VNC. Clientes y servidores VNC intentan cornunicarse usando instrucciories de actualizacion codificadas para minimizer el trafico de red. Todas las actualizaclones graficas entre el visor VNC y el servidor son cornunicadas como rectangulos de pixeles a actualizar, Los mecanismos de codificacion saportados dificrcn basandose en si esta usando el servidorvvisor VNC de RealVNC o el de TightVNC. E1 visor de TightVNC le perrnite cspecificar una secucncia de mecanismos de codificacion a medida para ir probando en orden usando la opcion -encoding. Esta opcion debe ir seguida de una scrie de codificaciones soportadas escritas entre commas.

E1 visor RealVNC le permitc especificar un s610 mecanisme de codificacion preferido :tsando La opcion -Preferr-edlincoding, que debe ir scguida del nombre del mecamsmo de codificacion que quiera probar primero. En cualquier caso, el mecanisme de codificacion cnviara toda la informacion de manera no codificada (conocida como codificacion crucial si no se pucde negociar ningun mecanisme

de codificacion soportado con el servidor. .

La siguiente lista muestra los mecanismos de codificacion soportados pOl' los paquetes RealVNC y TightVNC Diferentes mecanismos de codificacion mejoraran el rendimiento en diferentes situaciones, dependiendo de condiciones' tales como si el cliente y el servidor VNC estan ejecutando en el rnismo sistema, la c~rga de S1.1 red, etc. Puede que quiera volver a esta seccion mas tarde para experimentar con Ia personalizacion de las comuriicacioncs servidorvvisor VNC dependiendo de su entorno de red y de si esta rcalmente observando problemas en cl rendirniento. Los mecanismos soportados son:

CopyRcct (solo para TightVNC): La codificacion Copy Rectangle (Copiar rectangulo) s610 cnvia la ubicacion y el tamafio de un rectangulo en Ia

88

Linux Server. Los mejores trucos

pantalla, dcsdc cl cual los datos deberian ser copiados, asi como las coordenadas de su nueva ubicaci6n.

CoRRE (5610 para TightVNC): Copy Rise-end-Run-Lengtli Encoding (RRE) es una variacion de RRE que usa rectangulos de tamafio maximo 255 x 255. Limitar el numero de rectangulos a valores que pueden ser expresados en un solo byte reduce el tamafio del paqucte y mejora Ia eficiencia.

Hextile (ambos): La codificacion Hcxtile divide Ia porcion rectangular de la pan lalla a ser actualizada en 16 x 16 cuadros, que son enviados en un ordcn prcdcterminado. Los datos en cada cuadro SOIl codificados en el Iormato crudo 0 en cl CoRRE. Hextile cs la opci6n prefcrida para conexiones rernotas sobre una red de alta velocidad.

a Cruda (ambos}: Envia valores de pixel "ancho" x "alto" sin compresion 0 cuenta de repeticion. Este mecanisme de codificacion es el mas rapido para conexioncs servidorvvisor locales, ya que no hay Iirnitaciones de ancho de banda en cstc tipo de conexiones, y no requiere proceso especial. Todos los clicntes VNC deben soportar este tipo de codlficacion.

@ RRE (solo para TightVNC): Rise-nnd-Run-Lengtli Encoding es una version bidimensional ell' RLE iRun-Length Encoding) que aplica secucncias codificadas con RLE a 10 largo de los difercntcs sub-rcctangulos, Es extrernadamente eficiente cuando se codifican actualizaciones consistentcs en grandes bloques del mismo color.

Ajustada (solo TightVNC): La codificacion ajustada (tighO usa Ia libreria zlib para comprimir los datos de pixels, pero preprocesa cstos datos para maximizar Ia cornpresion, a la vez que se rninimiza cl tiempo de proceso. Usa compresion JPEG internamente para codificar porciones ricas en colorcs de las circus a actualizar.

Esta cs normalmentc lam~jor opcion para conexiones via modem y entornos de red de bajo ancho de banda.

Zlib (s610 TightVNC): La codlficacion Zlib utiliza la Iibrerfa zlib para comprimir datos crudos de pixel. Esto proporciona buena cornpresion a expcnsas del tiempo necesitado pOl' la CPU local para comprimir los datos.

ZRLE (solo ReaIVNC): Zlib Run-Length Encoding cornbina RtF. con la compresion Zlib. Secucncias de pixels identicos dcntro del rectangulo a ser ac~ tualizado son comprimidas en un s610 valor y cuenta de repeticion, y Ia informacion rcsultantc es comprimida despuesusando Zlib.

La tabla 2.1 rnuestra 101 secuencia en In que un visor TightVNC intenta estos diferentes mecanisrnos de codificacion al cornunicarse con un servidor VNC local o rernoto.

2. Conectividad remota con intorfaz grafica (GUI)

89

Tabla 2.1. Orden de mccanisrnos de codificacion us ados por TightVNC.

CopyRect CoRRE Hextile Cruda

1 5 .3 7

2 6 4 ']

7 :3 5

RRE

6

f\justada

2

Zlib

4

Acceder a. servidores VNC via Web

Con un poco de software extra, puede seceder a sus servidores VNC desde cualquier navegador.

Si usa VNC con Ia frccucncia suficiente, finalmente se cncontrara neccsitando acccder a un visor VNC desde un ordenador en el que no 11a sido instalado.

Pucde poner una copia del instalador 0 la aplicacion instalada en un directorio cornpart ido, pero conectarse manualmente cada vez es nmy pesado, especialmente si tan s610 necesita ~jecutar un comando rapidamente, 0 cornprobar el estado de la maquina remota que esta ejecutando su servidor VNC, y llevar siernpre un CD 0 un disco con la aplicacion del visor VNC es igual de fastidioso,

Afortunadamente la gcnte quc disei'i6 VNC cs gente Iista, y penso en una solucion para el problema del usuario crrante, una mancra, libre de lios. de hacer que sus servidores VNC estcn disponibles incluso S1 el sistema que csta usando no riene el software de clicnte VNC instalado.

Todos los servidores VNC incluven un pequcfio servidor Web integrado, que puede servir las clascs Java necesarias para que cualquier navegador can Java activado pueda conectarse al scrvidor VNC Esto Ie per mite acceder a cualquier scsion VNC que cstc ejccutandose en sus sistemas, usando cualquier navegador moderno COIl Java activado.

El servidor VNC escucha las conexiones HTTP en el puerto 5800 mas el' mimero de pan lana exportada. POI' tanto, para ver una sesion VNC ejecutando en la pantalla numcro uno del cquipo 64bit.vonhagen.org, deberfa acceder a la URL http://64bit.vonhagcn.org:5801/.

90

Linux Server. Los mejores trucos

Como con cualquier sesion VNC, las clases Java que implementan el cliente VNC le preguntaran por Ia contrasefia del servidor VNC antes de poder conectar-

Sf a el. .

La Figura 2.3 muestra una conexion al servidor VNC de mi portatil, en el que cstoy ejecutando el gestor de ventanas Fluxbox (http://fluxbox.sourceforge.net).

Figura 2.3. Un escritorio VNC en el navegador Firefox.

Instalar clases Java y ficheros asociados para el servidor VNC

Para activar el acccso Web a su/s scrvidorvcs VNC, debe instalar los ficheros JAR, las clases Java, y unos cuantos ficheros adicionales para cl servidor HTTP de VNC en el sistema en el que va a ejecutarlo.

Estos ficheros son instalados como parte tanto del paquete de servidor de Rca]VNC como del de TightVNC, pero se pucden obtener ademas sus paginas Web (http://www.realvnc.com y http://www.tightvnc.coU1, respectivamente) si no cstan instalados en su sistema pOl' alguns razon,

Donde est an instalados y como hacer saber al servidor VNC sobre e110s depende de In version del servidor VNC y del script vncserver asociado qu!:' estt ejeculando.

2. Conectividad remota can interfaz grafica (GUI)

91

Si esta ejecutando TightVNC, la ubicacion donde se encuentran estos ficheros esta especificada en Ia variable $vncClasses en es scrip; vncserver.

Deberfa asegurarse, adcmas, de que la siguiente ltnca no esta comentada en el script vncserver:

$cn~ .= ~! -httpd $vncClasses";

Si estu ejecutando un scrvidor RealVNC, 1a/s ubicacionz'es dondc estos ficheros puedcn encontrarse esta especificada en Ia variable $vncJavaFiles en el script vncserver:

$vncJavaFiles,"· (( ( .... d "/usr/share/vnc/classes") && »/usrlshare/vnc/classes>')

II

((-d "/usr/l()cal/vnc/classes") && "/usr/local/vnc/classes"));

Debe adernas asegurarse de que In siguiente linea no esta comentada en el script vncserver:

Scrod . = " - httpd $vnc,TavaFiles ,. if I $vncJavaFi les) ;

Una vez que ha configurado el script de inicio para los ficheros de Java y otros usados por el servidor VNC, deberfa reiniciar cualquier servidorzes que este ejecutando actualmcnte para ascgurar que toman los ficheros us ados por el demonio mini-HTTPD del servidor VNC.

VNC seguro via SSH

Codifique f<i.ciimente sus conexiones remotas estableciendo un tunel seguro.

VNC es un cstupendo metodo de tcner acccso a un escritorio grafico en un sistema remote. Sin embargo, una vez que csta conectado, VNC usa TCP/IP estandar para todo el trafico entre el visor local y el servidor remote. Cualquiera con un paquete sniffer en su red local puede tornar paquetes y monitorizar su trafico, 10 que es un mal asunto si esta usando la sesion remota para tareas administrativas que transmitan contrasefias. POI' fortuna, es bastant« facil utilizar la codificacion que proporciona SSH (Secure Shell, Interprcte de Comandos Seguro). en sus sesiones VNC.

Puede hacer csto configurando un tunel SSE, que es, esencialmente, establecer una correspondencia entre pucrtos locales y remotes, de tal manera que todo el trafico a un puerto especifico en una maquiria remota es recnviado via SSH a un puerto en su maquina local. Este truco explica como combinar la potencia de VNC con la scguridad de SSH para proporcionar conexiones seguras a maquinas remotes,

92

l.inux Server. Los mejores truces

Reenviar puertos VNC remotes a su equipo actual

Adernas de la funcionalidad como interprete de comandos segura para Ia que Ia mayorta de la gcnte usa SSH, SSH le perrnite rcenviar trafico desde un puerto cspccffico en una maquina remota a un puerto cspeciflco en su maquina local. Hacer esto rcquiere que un servidor VNC estc ejecutandosc en 13 mel quina rernota, y que usted establezca una conexion SSH estandar con dicha maquina pero aportando la opcion ~L (local) y un argumento apropiado cuando ejecute el CO~ mando ssh. La sintaxis para reenviar puertos usando una conexion SSH estandar es la siguiente:

$ ssh -L puerto-local:equipo-local,puerto-remoto equipo-remoto

Como se ha discutido anterior mente, d trafico VNC estandar con un equipo dado tiene Ingar sobre el puerto 590x, donde 'x' es Ia pantalla del sistema X Window que un servidor VNC especffico esta usando,

Por ejemplo, si se quiere usar SSH para reenviar trafico VNC desde el servidor VNC ejccutando en la pantalla de sistema X Window numero uno (: 1) del equipo nld.vonhagen.org al misrno puerto en su sistema local homc.vonhagen.org. usted deberia ejecutar el siguiente cornando:

$ ssh -L 5901:home.vonhagen.org:5901 nld.vonhagen.arg

Una vez que cst e hind csta creado, apuntc su vncv .i ewer a home. vonhagen.org: 1 para establecer una concxion. Una vcz Iacilitada In contrasefia VNC para cl scrvidor VNC ejecut£mclose en nld.vonhagcn.org, una vcntana YNC estaridar Sf mostrara en su sistema, pero esta vez 13 conexion es segura. Ahora puede introducir contrasefias. escribir cartas de amor, 0 navegar buscando UIl nuevo trabajo sin que nadie sea capaz de husrriear 10 que ustcd est a haciendo.

lncluso despues de reenviar un puerto VNC remote, cl servidor VNC todavia esta ejccutandosc en su puerto original.Cua1quiera que sepa la contrasefia VNC para el sistema remoto podra ser todavia capaz de conectar con el servidor VNC normalmente, sin el cifrado que 11a cstablecido a travcs de su tuncl recnviado localmcnte.

Si esta usando la version Java del visor VNC, necesitara reenviar adernas el puerto usado pOl' el servidor IITTP interno de su servidor VNC. Un servidor HTTP de un scr vidor VNC usa cl puerto 5 SOx, donde x es la pantalla del sistema X Window que estj usando un servidor VNC espccffico. Por cjernplo, en el cornando anterior, el servidor VNC estaba usando la pantalla de sistema X Window numero uno (: 1), 0, 10 que es 10 misrno, cstaba usando el puerto 5901 para conexiones VNC estandar, SlI servidor Web asociado estara, por tanto, usando el puerto SaOel

2. Conectividad remota con interfaz grafica (GUI)

93

Reenvio VNC publico 0 privado

Cuando reenvie puertos con SSH, puedc hacer referencia a su maquina local nsando bien 5U nornbre de equipo publico, que usa su direccion IP estandar, o su nombrc de loopback, que haec corresponder al puerto remote con la dircccion de loopback de su equipo, Cada propuesta tienc sus ventajas.

Llsar la dircccion de loopbeck es mejor por seguridad, ya que le exige estar conectado directarnente a su rnaquina para acceder al servidor VNC remoto a traves de su direccion de loopbeck. Nadie mas puede acceder al servidor VNC sin cstar conectado a su maquina, ya que una dircccion de Ioopbeck (127.0.0.1) es especifica de cada equipo. Por otro lado, puede que desee especificar su nombre publico de equipo si quiere sa capaz de acceder al VNC reenviado desde otras rnaquinas, 0 si quiere usar un sistema como colector para conexiones a multiples servidores VNC. Esto ultimo puede ser util en entornos de empresa donde usted quiere conexiones cifradas, pero no quiere establecer cada una individualmente en cualquiera que sea el sistema que est€ actualmente usando. Usar uri sistema espccffico como colector VNC le proporciona 1£1 comodidad de ser capaz de acceder a multiples servidores VNC por medic de un solo equipo a Ia vez, que sigue usando 13 seguridad facilitada por d cifrado de VNC, como se muestra en la figura 2.4.

-, •. ,.<"" ~''"''

(desktop 1. vonhagen .or~)

I'ignra 2.4. Multiples equipos usando un solo colcctor VNC.

Reenviar puertos sin inido de sesion remote

El usn del cornando ssh con la opcion ~-L exige que efcctivamcnte establezca una conexion SSH con Ia maquina remota, Iigando cualquier sesion de terminal

94

linux Server. Los mejores trucos

----------------------

que este usando para establecer el reenvio de puertos, 1\1[3 iniciar un rcenvfo de puertos SSH en segundo plano, puede usar las opciones -f !fork) y -N (no command) del comando ssh, como en el siguicnte ejernplo:

$ ssh -f -N -L 5901:Localhost:5901 nld.vonbagen.org

En este ejemplo, a mcnos que haya usado cleves SSH para cstablccer SSH sin contrasefias con el equipo nld.vonhagen.org, se le preguntara todavfa por su COI1- trasefia remota, Una vez que Ia introduzca, SSH establecera el reenvfo del puerto especificado y devolvera despues cl control al interprcte de comandos local, en lugar de iniciar un interprete de cornandos remote y concctarle a eL Para terminar el rcenvio de puertos SSH iniciado de esta manera, tendra que localizar y poncr fin al proceso, usando los comandos Linux ps y kill o equivalentes

Mejorar el rendimiento usando compresion

Conexiones lentas, tales como las conexiones via modern. y redes muy cargadas, pucden hacer el uso de aplicaciones graficas rcmotas bastante pesado. En estos casos, puede optimizar cl ancho de banda necesitado para cornunicar son su servidor VNC remote aprovechandose de la compresion SSH, EI cornando s sb proporciona una opcion --C (compression) que usa los mismos algoritmos ell' comprcsion us ados pOl' gz ip para reducir Ia cantidad de datos que ticne que transfet-ir de LIl1 Iado a otro, sea cual sea cl cable que estf usando. Para agregar cornpresion a su tuncl SSH, simplemente afiada Ia opcion -C a su lfnea de comando s sh ya cxistente, el comando en la seccion anterior se convertira en el siguiente para invocar cornpresion:

$ ssh -c -L 5901:home.vonnagen.org:5901 nld.vonbagen.org

Estc comando comprime todos los datos intercambiados entre home. vonhagen.org y nld.vonhagen.org a traves del hind SSH,

La comprcsion reduce la cantidad de datos que necesitan ser intercambiados a traves del tunel, pew afiadc cier'ta sobrecarga de proceso, tanto en el clicnte como en d servidor, para poder cornprimir y descomprimir los datos que Sf: intercambian pOl' el trine]. La compresion puede no ser una buena idea en sistemas lentos 0 muy cargados, pero es casi siernpre una buena idea en conexiones telefonicas. Cuando use concxiones reales de red, donde tanto In carga del sistema como Ia de la red son transit arias, d (mien modo certero para estirnar los posibles bcneficios de la cornpresion es experimcntar con ella, usandola.

Optimizar las actualizaciones graficas entre el servidor y el visor

Como se explico con detalle anteriormente, VNC soporta un cierto numero de maneras diferentes para codificar la informacion de actualizacion grafica mien-

2, Conectividad remota con interfaz grafica (CUI)

95

tras se intcrcarnbian datos entre un servidor y un visor VNc' Los visores VNC intcntan negociar diferentcs mecanismos de codificacion, dependiendo de si crecn que el servidor VNC esta ejecutando localmente 0 en una maquina remota, Las conexiones locales siernpre intentan usar codificacion cr uda antes de intcntar cualquier otra de las opcioncs de codificacion comprimida. La codificacion cruda cs cxtremadarncnte rapida si el servidor y el visor VNC cstan ejecutandose en Ia misrna maquina, ya que el ancho de banda local ('S, de hecho, infinito, pew es ineficiente al cornunicar un servidor remote y un visor local,

1\1 usar tunelcs 5SH para rcdirigir un servidor VNC remoto a un puerto local, quer ra hacer casu omiso de los ajustes por defccto de la codificacion para hacer la cormmicaci6n entre d servidor y el cliente VNC mas eficiente, ya que cl scrvidor es remote. Si esta usando el vncviewer de RealVNC, cspecifique Ia opcion .PrderredEncoding hextile en la tinea de cornandos de vncviewer. Si esta usando el vncviewer de TightVNC's, deberfa especificar -encodings "copyrect tight hextile" para aprovechar Ia codificacion optimizada de TightVNC's,

Para averiguar que visor VNC esta usando (y, por tanto, si puede probar Ia codificarion ajustada), pucde ejccutar cl cornando vncviewer - help, Si estzi usando TightVNC, vera una cadcna de caractercs como "TightVNC viewer version 1.2.9" como parte de la salida de este comando. Si esta usando un sistema Linux basado en RPM, puede ejecutar tambien el comando: rpm -qf 'which vncviewer' para ver que paqucte proporcion6 cl comando vncvi ewer,

lniciar automaticamente servidores VNC bajo dernanda

Himine la necesidad de iniciar manualmente servidores \INC en maquinas rernotas.

En csta era de iluminacion y genialcs dispositivos graficos, la mayorta de los servidores Unix tienen consolas graficas en vez de los VT100 0 LA123 de antafio. Par supuesto, csto tambien Sf cumplc en la mayorfa de los servidores Linux, si bien la mayoria de las salas de maquinas ahorran espacio instalando s610 un monitor y usando un KVM para conmutar entre los sistemas que se cstan realmente usando en ese memento. Como Sf explico anteriorrnente, el modo de operacion tradicional para VNC es hacer ssh/telnet/ o 10 que sea a un sistema remote, iniciar un servidor VNC rnanualmente, y despues volver al sistema que se esta rcalmente utilizando y usar el visor VNC ahf. Is suficienternente facil, pero Lno es irritante todo cste asunto del "haz 5511 ahi, ponte a la pata coja, inicia esto, reaparece aqui, inicia esto..;"?

Linux Server. Los mejores trucos

Este truco explica como evitar todo eso integrando el servidor VNC de sistema X Window directamente en su entorno grafico de inicio de scsion en X Window. La idea basica es qlH~ configure su maquina para usar el demonic de Internet de su sistema (xinetd 0 inetd) para iniciar el servidor Xvne, cada vez que se detecte una conexion VNC entrantc en uno 0 mas pucrtos. Puede ademas configurar su sistema para usar el XDMCP (X DisplayMani1ger Control Protocol, Protocolo de Control del Gestor de Pantalla X) para gestionar cualquier nueva pantalla X, tal como el servidor Xvnc. Cuando el servidor Xvnc inicia en respuesta a una peticion de puerto entrante, muestra una pantalla de inicio de sesion XDMCp, usted inicia sesion, y ivoila!

Integral" Xvnc con inetd 0 xinetd

E1 demonic de Internet de los sistemas Linux modernos xinetd (al igual que su predecesor inetd, que puede que todavta se use en algun sitio) inicia los demonios asociados con varies servidores en respuesta a las pcticiones entrantes por divers os puertos, como se define en el fichero / etc I services. Durante el resto de este truce, me referire a xinetd y a inetdjuntos como x/inetd, usando sus nombres especfficos cuando sea nccesario diferenciarlos.

A menudo se hace refercncia al demonio x/Inetd como uri "super scrvidor", porquc su funcion es gestionar otros procesos servidor, E1 uso de x/inctd reduce la carga de sus sistemas, ya que los demonios para estes servicios no tienen que estar todos ejecutandose todo el tiempo: x/inetd los inicia segun se nccesita cuando Sf detecta una peticion entrante. Usar x/inetd ademas incrementa la scguridad en sus sistemas, proporcionando 10 que Sf conoce comunmente como envoltorios TCP (Tep wrappers): un mecanismo central para activar 0 desactivar cl acceso TCP a un numero de servicios, por medic de entradas en los ficheros / ete /hosts. allow y / etc/hosts. deny, respectivamente.

E1 primer paso en la integracion de VNC con x/inetd es crear una entrada apropiada para VNC en el fichero de texto / etc/ services. En los sistemas riuevos que yo configuro, decide que las sesiones automaticas VNC empczaran en el puerto 5908.

Elegir un valor mayor que 5900 cvitara colisiones cuando un usuario inicie rnanualmente una sesion VNC en el servidor, usando un numero de puerto mas bajo. Una entrada apropiada en el fichero jete/services para iniciar VNC automaticamcnte en respuesta a peticiones de entrada en cl puerto 5908 es Ia siguicnte:

vne

5908/tcp

# Xvne

Una vez creada esta entrada en jete/services, debera definir que ocurre en respuesta a una peticion errtrante en este puerto.

2. Conectividad remota con interfaz grafica (GUI)

97

Si csta usando xinetd, debera crear el fichero /ete/xinetd. d/vnc, que debe contener varios aj ustes para saber como xinetd deberia responder a las peticiones de entrada, que aplicacion deberta iniciar, etc. He aquf una muestra de un fichero ! ete /xinetd. d/vnc:

# defaul t, on

# description: The vne server provides remote desktop connections

#

se.:cvice vnc

disable socket_type protocol

wa i t

no stream tcp

0' no

nobody /usr/bin/xvnc

:8 -inetd -once -query localhost -depth 24 \ -geometry 1280xl024 -securitytypes=none

user

server' server_args

La entrada server_args deberia estar en una sola linea, pero Ia he pucsto en dos en este eiemplo por Icgibilidad. Los argumentos que especifique al servidor Xvnc dcpenden en alto grado de Ia version y el origen del servidor Xvnc que este ejecutando. Los argumentos mostrados en cl ejernplo anterior significan 10 siguiente:

: 8: Especifica 1a pan talla del sistema X Window en la q lie el servidor Xvnc deberfa iniciar.

- inetd: Eiecuta el servidor Xvnc como un demonic, y cuenta con scr ejecutado por x/inetd,

+oric e: Inicia el servidor Xvnc desde cero cuando se inicia una conexion, y pone fin aI servidor cuando la conexi on acaba. Ademas bloquea a multiples copias del servidor Xvnc que quieran iniciar en el mismo puerto.

-query localhost: Le dice al servidor Xvnc que solicite a una rna quina cspecffica una sesion de inicio XDMCP (mas sobre esto en la siguiente seccion). En este caso, cl servidor Xvnc contactara el interfaz de loopback en el equipo local, cl cual tiene Ia direccion IP 127.0.0.1.

-depth 24: Especifica la profundidad de color del servidor X Window de Xvnc.

-geometry 12 80xl024: Especifica el tamafio de la pantalla virtual y 1£1 resolucion a la cual iniciar el servidor Xvnc. Algunos valorcs comunes son 800x600, 1024x768, 1280x1024, Y 1600x12S0. Como regla general, eI valor que especifique deberta ser rnenor que cl tamafio de la pantalla en el

98

l.inux Server. Los mejores trucos

sistema que este utilizando para concctarse al servidor Xvnc, 0 podr~a tcner problemas acccdiendo a los controles de Ia vcntana. Puede usar dimcnsiones disparejas como 1000 x 50 para tener Ia ventana mas ancha posible en una pantalla de 1024 x 768 que cncajc entre elementos grrificos tales como barras de tareas y barras latcrales.

e -securitytypes=none: Especifica que cl servidor Xvnc no deberia usar Sll propio mecanismo de scguridad interno (vncpasswd) para perrnitir el acceso al servidor VNC, ya que XDMCP manejara csto pOT H

Dcpendicndo de la version de Xvnc que eslc instalada en su sistema, podria necesitar otras opciones adicionales:

a -ac: Si esta usando la version TightVNC's de Xvnc, necesitara utilizar esta opci6n en vez de -securitytypes=none para evitar el uso del control de acceso por defecto de Xvnc. El argurnento -securitytypes=none se usa con el Xvnc de Real V NC.

e -fp fontpath: Algunas versiones dc xvric necesitan conocer la ruta para las fuentes del sistema X Window que deberian usar. Los sistemas Linux mas modernos ciecutan un servidor de fucntes X por defecto en el puerto 7100 de tal manera que un valor initial apropiado a probar serfa -fp unix: /7100. Si este valor no funciona 0 110 csta ejccutando un servidor de fuentes, puede enumerar cxplicitamente LlI1Cl lista de directories separados por comas, como un argumento a la operon -fp.

Si todavia esta usando inetd, el equivalcnte al flchero I etc/xinetd. d/vnc es una sola entrada en el fichero / etc I inetd . coni. He aqut una entrada de ejemplo que concuerda con el ejemplo anterior para xinetd:

vnc stream tCD nowait nobody /usrlsbin/tcpd iusr/bin/Xvnc :8 -inetd \ -once -qu~ry localhost -depth 24 -geometry 1280xl024 \

-securitytypes=none

Al igual que con la entrada server_args en el ejemplo de xinetd~.odo esto deberfa aparecer en una sola linea en su fichero I etc / inetd. conf f~Ie; la he partido en multiples Imeas 5610 por Iegibilidad. Las mismas advertcncias sabre posibles argumentos alternativos/extra se aplican a una entrada / etc / inetd. conf.

Activar XDMCP

XDMCP es uri protocolo de red usado para iniciar sesiones en dispositivos de pantalla dd sistema X Window. Dcsarrollado originalmente en 1989, XDr:.'lCP.se asocia principalmentc con terrninalcs X, pero puede ser usaclo eon cualquier dis-

2. Conectividad remota can interfaz grafica (GUI)

99

positivo X Window, tal como en estc caso, cl servidor X iniciado por Xvnc. La mayoria de los sistemas que van surgiendo, usan en modo grafico un gestor de pantalla de X Window para proporcionar un inicio grafico de sesion y posteriormente iniciar eI gestor de ventanas 0 entorrio de escritorio de su eleccion. EI modo grafico cs normalmente el nivcl cinco de ejecucion en la rnayoria de sistemas Linux, 0 cualquiera de los niveles de ejecucion del dos al cinco, si es un fan de Debian 0 Uburitu, POI' defecto el gestor de pantalla X gestiona el dispositivo de X Window asociado con la console, pero es opcionalmr-nte rcsponsable de responder a las peticiones XDMCp, al iniciar los inicios de sesion oportunos en los dispositivos X Window. La admision de XDMCP es una opcion de configuracion para todos los gestores de pan lalla X, pero norrnalmente esta desactivada por defecto, ya que la mayo ria de los gestures de pantalla s610 neccsitan admitir inicios de sesion en sus consolas,

C6mo activar el soporte de XDMCP depende de que gestor de pantalla est€: utilizando, 10 que vienc dcterrninado normalmentc POt el sistema de escritorio pOl' defccto usado en su sistema Linux. GNOME usa un gestor de pantalla llamado gdrn, que normalmcnte Sf encucntra en lusr Ibin I gdm (que a su vez llama a /usr/bin/gdm-binary) 0 en /opt/gnome/bin/gdm en sistemas basados en KDE tales como SUSE. KDE usa uno Ilamado kdm, que se encuentra normalmentc en I opt/kde3 /Ixi n z kdmEl gestor de pantalla clasico de X Window, a menudo utilizado en sistemas donde no esta instalado ni GNOME ni KDE, es xdm, y se cncuentra norrnalmentv en /usr /X11R6 /bin/xdm. Si csta ejecutando Red Hat Linux, puede inspeccionar ciscripl I etc/Xl1 /prefdm para ver como su sistema selecciona su gestor de pantalla por defecto y cual es cste. Puede ndemas avcriguar que gestor de pantalla csta usando su sistema realmente, bus cando Ia cadena de caracteres "dm" en un listado de los procesos del sistema, como en el siguiente ejernplo:

$ ps -af I root 5137 root 5167

-hr vt7 wvh 29664

grep dm

1 0 May2S? 00: 00: 00 /opt/kde3/bi.n/kdm

5137 65 May25 ? 3-01:52:35 /usr/X11R6/bin/X

-auth /var/lib/xdm/a.uthdir/authfiles/A:O_K7ItZv 24116 0 13:42 ptsi11.00:00:00 grep -i drn

En cste caso. cl sistema esta ejecutando kdm como su gestor de pantalla, as! que dcberri configurar kdm correctamente para admitir XDMCE No es necesario decir, que cada uno de estos gestores de pantalla del sistema X Window tiene su propio fichero de configuraci6n, en el que debe habilitar XDMCP de tal manera que, cuando Xvnc se 10 solicite al cquipo local, el gestor de pantalla inicie Ia sesi6n de iriicio X.

Si el sistema en el que esta configurando Xvnc ejecuta gdm, el escritorio GNOME pr~}l:orciona una c6moda aplicacion Hamada gdmsetup para configura- gdm. lnicic gdmsetup como super-usuario 0 usando sudo, abra Ia pestafia XDMCp, y

100

Linux Server. Los mejores trucos

selcccione "Enable XDMCP" para activar el soporte de XDMCP en gdm Ia proxima vez que reinicie el sistema X Window. La figura 2.5 muestra esta pestafia seleccionada en gdmsetup, con XDMCP activado,

Puede adernas modificar cl fichero de configuracion de gdm como una alternativa a ejecutar gdmsetup. En muchos sistemas Linux este fichero de configuracion es /etc/Xll/gdm/gdm.conf.

S1 el sistema en cl que estzi configurando Xvnc ejccuta kdrn, puede, bien usar las utilidades administrativas pl'oporcionadas pOl' su sistema, 0 modificar manualmente los ficheros de configul'aci6n de kdm y del sistema que coritrolan su comp o rt a m i e nt o .

Figura 2.5. Activacion de XDMCP en gdmsetup.

Por ejemplo, en sistemas SUSE, puede usar los modules adrninistrativos de YaST desde el Centro de Control (Centro de Control>m6dulos YaST>Dispositivos de red>Administraci6n remota) para activar acceso rcmoto al gestor de pantalla. La figura 2.6 mucstra este panel en el Centro de Control.

51 prcfiere ajustar los ficheros de configuracion ustedmismo, puedc modificar el fichero de configuracion primario de kdm (! opt / kde3 / share I c::mfi 9 / kdm /kdrrxc) con un editor de texto, carnbiando la entrada Enable en la scccion [xdmcpl a true y ascgurandose de que Ia entrada Port=177 no esta comentada. Puede tener que configurar adcmas el fichero /etc/sysconfig/displayma~ager, poniendo 1a variable DISPLAYMANAGER_REMOTE_ACCE5S ayes. Pl~ede.eJecu~ar despues / sbin/ SuSEconf ig para hacer que SUSE realicc las actualizaciones 1l1- ternas oportunas,

2. Conectividad remota can interfaz grafica (GUI)

101

Una vez que 11a modificado su gestor de pantalla para soportar XDMCp, necesitara rciniciarlo con la configuraci6n correcta. La manera mas facil de asegurar un reinicio complete es reiniciar su sistema, pero si est a ejecntando servicios crfticos en tl, puede tambicn usar los comandos tel .i ni t 0 .i.n i, t para Ilevar a su sistema a un nivel de cjecucion no grMico (telinit nivel-de-ejecuci6n 0 ini t n i, vel·-de-ej ecuci6n) y volver despues a un nivcl de ejccuci6n grafico, tal como e1 nivel dos para distribucioncs basadas en Debian, 0 el nivel tres para casi todas las dernas.

&_lIow Remt)t~ ;"~;m:,~;~, :'·1:·'~;il

Q_o No.t l?c!IQW R-I.:: n,,: .t,:j ;:-;~:;;t~ .'1< '~J!l

Figur-a 2.6, Configuraci6n de XDCMP con la utilidad Y~1ST de SUSE.

Puedc Iuego usar tel .i.ni t para volver al nivel de ejecuci6n numero cinco.

Algunas versiones de Linux proporcionan script (tales como el cornando rcxdm restart de SUSE) que apagan automaticarnente el sistema X Window y reinician el gestor de pantal1a sin andar cambiando de nivel de ejecucion.

Las actualizaciones del sistema X Window son una parte cornun de cualquicr actualizacion o rnejora de sistema. Si ha modificado los ficheros de configuracion manualmente, revise dichos ficheros dos veces antes de aplicar actualizaciones que modifiqucn ya sea X 0 el entorno

de cscritorio que este usando. para asegurarse de que el soporte de XDCMP esta todavia activado en Sll gestor de pantalla. Si no 10 esta, cste truce dejara de funcionar.

Linux Server. Los mejores truces

102

lniciar el visor

" _, ' i sistema ara iniciar XvnC en respucsta a peti-

Una vez que ha conhgm ado s~ SlS d P,t delJantaUa para responder, a

, ,t, lue ha configura 0 51..1 ges or '1 , ," 'f'

Clones de entral a, Y en. c, ' ' .. ' 1 anli cacion VISor de VNC avo,-

, , tro slstelna e l111U(' 51.. t .

peticiones XDMCp, vaya a ot. , ,""" 1 "1'1 let' c Ixinet, d/vnc, Tras unos

.. '1' t que 11'1 espechKsC 0 c,

rita, apuntando S puer o c fie 7 7 iEnhorabuena iniciar sesiones

, b ' c, > _ 19o COlno la 19ura~., " ,

Hlsta,' ntes, de eria ver a 'f 'f~ il runca V no tendra (lue arrancar

f " 'horamas an que I ' ' , J ,

VNC en sus InaqUlnaS es a c 1 nt > "S()S sisten13S como Sl fuera un

, . I _ VNC manua men e en.. o. " ,

nunca mas d saVle 01 f • • , .' 't'" >' VNC de entrada]

gllante de beisbol electronICO para IdS pe iciones ,

, 2 7 Lln: concxion xvnc exitosa usando XDMCP

Figura .' ,n., , '

.. ' 'ecutandose en VNC usa una pantalla

Ya que, I, a sesion X Window :Jt, asegurarse de (lUI.' ha estableddo, 1<,1

It tivr puede que neresi I.' c .• '

a' erna Iva, t nte en ella IJara poder uuciar

, ' t DlSPLi\Y corree arne", .t rc

variable de en orno " 'Po " ilo si csta eJ' ecutando Xvnc en el

I, ,,' 's X vvindovv. r ejemj s "0

otras ap leduonc. , > " rite ~10dificar la pantalla adccuadamrnte Jucrto 5908, pucdc que necesi c ' ' DISPLAY=: 8, O. lel" lc ru interpretc de eomandos con algo como export

esc e s

2, Conectividad remota con interfaz grafica (GUI)

103

Soilidon de problemas con el inicio de Xvnc

Si tienc suerte, estara mirando a la Figura 2,7 Y pensando'Yproblemas", I,que problemas?" Sin embargo, si su visor VNC sirnplemente se cuelga 0 finaliza con mensajes como "vncviewer: ConneetlbTcpAddr: connect: Conexion rechazada'' 0 "No es posiblc conectarse aI servidor VNC" no desespere. Estos problemas tienen faril solucion. 5i la conexion de su visor VNC con la maquina remota simplemente Sf cuelga, es decir, pulsa Intro y no pasa nada, hay posibilidades de que los puertos asociados a su configuraci6n de VNC csten siendo restringidos por un cortafuegos en la maquina remota, la maquina local o en algun punto intermedio. Revise, para estar scguro. que los pucrtos que puso en / etc I services en el sistema remote estan efcrtivamente disponiblcs y que hay un proceso escuchando en cl puerto de XDMCE Una rnanera facil de hacer esto es ejecutar el comando nets tat -an y filtrar su salida para el puerto 177, el puerto usado pOl' XDMCB como en el siguiente eicmplo:

$ netstat -an I grep 177

udp 0 0: : : 177

; ; : *

Si no ve ninguna salida de este cornando. asegurcse de que ha configurado correctamcnte el soporte para XDMCP en su gestor de pantalla, y que las cntradas para Xvnc en I etc I.xinet&, d/vnc no estan desactivadas. En el peor caso, puede rciniciar su sistema para asegurarsc de que todo Sf inicia correctamente.

Si todavia no puede establccer una conexi6n VNC a su sistema, ascgurese de que no hay ninguna regia de cortafucgos bloqueando cualquiera de los pucrtos usados por XDMCP 0 pOl' Xvnc, Una manera facil (pero completarnente insegura) de hacer csto es finalizar ternporalmente sus cortafuegos 0 deshacerse de todas sus reglas activas usando un comando como iptables -F, Primero intentc esto en el sistema al que Sf csta intentando conectar: despues, si todavia no puede conectarse, pruebelo en el sistema dcsde el que esta intentando conectarse. Si puede concctar con exito despues cle haber desactivado el cortafuegos, revise la configuracion del mismo y rclaje las reg las oportunas para perrnitir conexiones VNC remotes. Recucrde rcactivar sus cortafuegos despues de reconfigurarlos, ino querra que toda Ia clast de septimo curse de PSL'iO en Seul sea capaz de intentar inicios de sesion grafica en su maquinat

Poner sus estaciones de trabaio a dicta de diente ligero

Centralice la adrninistracion usando el proyecto Linux Terminal Server y sistemas de escritorio existentes 0 de bajo coste, para dar a sus usuarios hi potencia de computacion que necesitan a un precio que puede perrnitirse.

Si bien el coste del hardware est,,) en constante descenso, es todavla mayor que cero. Poner una potcnte estacion de trabajo en la mesa de cada uno es una bonita

1{14

Linux Server. Los mejores trucos

idea, pero no todo el mundo necesita un equipo Mac 0 Linux con procesador dual para hacer su trabajo. E1 requisito clave para la mavorta de usuaries es poder acceder a las aplicaciones y los datos con los que (stan trabajando y disponer de suficientc memoria para trabajar con ellos.

E1 Proyecto Linux Terminal Server (STSP, LimLX Terminal Server Project; http://www.ltsp.org) le pcrmite arrancar sistemas de cscritorio desde un servidor remote, da a los usuarios acccso a sus datos y aplicaciones cuando inician sesion y proporciona uri entorno de trabajo grMico X Window, 10 que es funcionalmcnte identico a arrancar desde el disco local. Esto puede ofrecer un sustancial ahorro en los cosh'S per mitiendolc utilizar o rcutilizar hardware menos costoso en los puestos de trabajo de sus usuaries. ya que reduce la cantidad de almaccnamiento local y otro hardware que cualquier sistema de escritorio rcquiere.

Un procesador que es demasiado lento para mantenerse al ritmo de las demandas de las aplicaciones de hoy en dia, puede f'uncionar todavta bastante bien cuando su {mica funcion es actualizar Ia pantalla y responder a In entrada dada por el raton y elteclado.

Centralizer los recursos de sistema en servidores de alta potencia, ademas proporciona substanciales beneficios a los adrninistradores de sistemas, eliminando la necesidad de mantcner y actualizar mdividualmente los sistemas operatives y el software de aplicaciones de los sistemas de eseritorio. Todo el software qLle un sistema de escritorio rcquiere, mas alla de un disco de arranque 0 informacion de arran que en red, esUi almacenado en el servidor,

LTSP proporciona adcmas una gran alternativa para utilizar y mantener sistemas de arranque dual en toda su empresa, 0 instalar software X Window en cada maquina MS Windows, si los usuaries solo tienen que ejecutar software Linux ocasionalmente.

De a sus usuarios discos de arranque de LTSP y hagales reiniciar el sistema con ellos. iProblema resuelto! Ya tienen sistemas Linux en sus eseritorios hasta que reinicien de nuevo.

La version 4.1 del LTSP era 1£1 ultima en el memento en el que se escribio este Iibro. La instalacion, configuraci6n e informacion conceptual deberta de ser similar para cualquier version mas nueva que pudiera cxistir cuando usted lea esto.

Entender el proceso de arranque del cliente lIS?

En caso de que la nocion de arranque y obtcncion de software de sistemas por red sea nueva para usted, esta seccion ofreee una vision general del proecso de arranque para un sistema clicntc de LTSP Ser capaz de visualizar como los clicn-

2. Conectividad remota con interfaz grafica (GUI)

105

tes y servidores LTSP interaccionan, minimizara los problemas de configuracion y, ademas, le sera util si necesita hacer un diagnostico de los problemas en el rendimiento 0 en la conectividad en un futuro.

Los clientes y servidores LTSP interaccionan de In siguiente manera cuando

arranea un clicnte Lrsp; .

1. EI cliente arranca y contact a un servidor DHCP para obtener su direccion IF, d nombre del nucleo de sistema (kernel) Linux que debe descargar y arrancar, y la ubicaci6n NFS de una cstructura de directories que deberia usar como sistema de ficheros raiz para esc nucleo de sistema.

2. EI cliente contacta cl servidor TFTP y descarga el ruiclco de sistema LTSP espccificado a su memoria local.

3. EI cliente arranca cl nucleo de sistema descargado, usando d sistema de ficheros NFS raiz como raiz para d.

4. E1 clicnte cjecuta el script estandar de inicio de Linux I etc I rc . sysini t, que inicia varies servicios requeridos por el sistema, establece 1a memoria de intercambio. etc.

Aunque pueda usar sistemas de mcnor potcncia como clientes LTSP; esto no quiere decir que cualquier PC que se este utilizando como cufia para la puerta en su oficina pueda ser rcciclado como un sistema de escritorio clicnte de LTSI~ Los PC que use como clientes LTSP deben tener los rccursos suficientes para ejecutar cl sistema XWinrlow, usar una resolucion de pantalla razonable, mostrar multiples ventanas que podrfan ser graficamcnte complejas, y ser Capi.E de intercambiar datos por red relativament e rapido. Sistemas Pentium a 166 MHz 0 superiores. con un minirno de 32 MB de memoria v una tarjeta de video de 4 MS, son bastante apropiaclos para usar co;no dientes LTSP. Afiadiendo tarjctasEthernet de 100 ME, mas memoria, y tarietas de video de 8 MB 0 mas, conseguira una meier experiencia de u;uario v Ie perrnitira configurar el sistema X VVindow para operar a mayorcs resolucioncs y con mayor profundidad de color.

5. E1 clicnte usa Ia informacion en el fichero I etc/l ts. conf del sistema de ficheros raiz montado por NFS, para contactar con el gestor de pantalla del sistema X Window que esta ejecutandose en el sistema especificado, y muestra una pantalla de inicio de scsion X en la pant alla del clientc.

Una vez que ha iniciado sesion, se encuentra en el sistema servidor ell' LTSP. EI s~stema cliente c.sta ejecutand~ s610 el software de X Window necesario para gestionar las conexiones de red, ejecutar un servidor de sistema X Window, etc.

106

Linux Server. Los mejores trucos

Descargar e instalar el software lIS P

Puede descargar las utilidades administrativas y de conflguracion LTSP como un fichero .tar can un instalador (http://www.ltsp.org/ltsp-utils-0.11. tgz) 0 como un paquete RPM (http://www.1tsp.org/llsp-utils-0.l1-0.noarch.rpm). Puede adernas descargarse Ia ul rima version del software LTSP siguiendo el enlace de descarga de su pagina de proyecto en Sourceforge (http://sourceforge.net /projects/lts/.)

Como parte del proceso inicial de configuracion, In utilidad de administracion LTSP descarga paquctes adicionales que necesitan el servidorv'es y los clientes LT5P Estos paquetes adicionalcs proporcionan cl nucleo de sistema, utilidad~s X Window v otros componentes del sistema de fie heros raiz usado cuando los chcntes arrm;(~an desde cl servidor para poder iniciar sus sesiones X.

Durante d proceso de configuracion, pucde. bien descargar es~os pa~uetes adicionales elf Ia red, 0 bien abrirlos des de un CD-ROM local 0 un dircctorio que los eontenga. Para ahor rar tiernpo durante el proceso de instalacion y simplificar este en general, deberta descargarse una imagen ISO de un CD-ROr:r que contenga todos estes paquctes de http://ltsp.mirrors.tds.net/pub/ltsp/lSOS/ltsp-4.1- l.iso.

Si se ha descargado un fichero .tar de las ufilidadcs LTSp, desernpaquetelo y ejecute el script install.sh para instalarlas uti1idades.en el sislem~ qu: quiere que sea su servidor LT5P. Si se ha descargado el RPM, simplementc instalelo con su invocacion RPM favorita. La min cs:

# rpm -Uvvh ltsp-utils-O.li-O.noarch.rpm

5i se ha descargado la imagen ISO de los paquctes requeridos por cl servidor LT5p, grabcla en un CD-ROM y monte este (0 monte Ia imagen ISO usando el dispositive de loopback si tiene prisa y no tiene una grabadora de CD a mana). IAhora cornienza 10 realrnente divertido:

Configurar e iniciar el servidor L TSP

Para instalar rcalmente los paquctes que necesita el servidor Lr5P y crear su propio fichero de configuraci6n por dcfecto, haga su a super-usuario (use su - para obtcner el ent orrio original de super-usuario) y ejecute el comando Itspadmin.

Este cornando proporciona un intcrfuz orientado a terminal que Ie perrnite instalar los paquetes y configurar los servicios del sistema requeridos por un scrvidor LTSP. La figura 2.8 muestra la pantalla inicial de la utilidad 1 sadmin en un terminal xterm.

2. Conectividad remota con interfaz grafica (CUI)

107

Figura 2.8. La pantalla inicial de Ia utilidad ltspadmin.

£1 primer paso para configurar un servidor LTSP es configurar el propio instalador, Use los cursorcs para seleccionar la opcion de menu Configure installer options. £1 instalador le prcguntara por la ubicacion desde la que obtener los paquetes que Ie sean necesarios, ofreciendo una fuente de reel por defecto. Si los ha instalado localmente, facilite la ruta al dircctorio que contiene los paquetes en forma de una URL que comicnce por file.z' I, seguida por la ruta absoluta. (Esto quicre decir que su URL debe comenzar con tres barras: dos para la espccificacion del protocolo y una mas para d inicio de la ruta al directorio que contiene los paquctes. POI' tjemplo, si grabo un CD-ROM y 10 mont6 como /mnt/cdrom, su URL serfa file.,' l/mnt/edrom.J

A continuacion, Sf Ie preguntara el directorio en el que quiere instalar estos paquetcs en su servidor, Necesitara tener alrededor de 350 ME libres en la particion donde este directorio esta ubicado, para poder hacer una instalacion complcta de todo el software LTSP

Finalmente, identifique cualquier proxy IITI'r oFTP que quiera usar (0 especifique none para ninguno), e introduzcaypara aceptar los valores sdeccionados. La pantalla mostrada en la Figura 2.8 Sf mosrrara de nuevo.

El siguiente paso es seleccionar fa opcion Install/Update LTSP Packages, que rnuestra la pantalla que Sf vc en la figura 2.9.

Pulse A para seleccionar todos los paquetes Iistados, y O, para salir de esta pantalla y comenzar a instalar, Tendra que responder .y a la pregunta "are you really, really sure" y In instalacion de los paq uetes en el directorio especificado dara comienzo. Una vez que todos los paquetes estan instalados, pulse Intro y selcccione Ia opcion Configure LTSP.

Esto inicia la utilidad 1 tspcfg y comicnza Ia configuracion de LTSP. 1 tspc fg primero cornprueba y muestra un resumen del estado de todos los servicios que LISP requiere en su sistema.

Pulse Intro para continual', y vera dos opciones: S para mostrar un resumen del estado de los servicios requeridos pOI' su servidor LTSl~ y C para configurarlos. La Figura 2.10 rnuestra la pantalla de resumen.

108

l.inux Server. Los mejores trucos

~,'.""'" .

'1" " ..... ' .. ' ..•..... " " ... ' .' .. '

~ ;n;~ I J 1 tsp __ debuz.. c.oc t $

[ ] 1 tsp_kernel

[ J j_ tsp_l oc.e i dev [ ] 1 tsP_-('d8Sk top [ l 1 b,p_x33:G

r 1 t,;;p~x_.a.ddtl_f'0nts:

[ itsp_x~corE

5280 Nat instelled 14035 Not installed

22435 Hot- installed

560 N0t installed 29448 Not installed 16848 Hot installed 88908 Not installed

Figura 2.9. La pantalla Select Packages de la ul.ilidad ltspadmin,

, '.

j .• ";C1I2. i!I~~

11~+lS~i.~;L:~5S ( -l'3~:+lGB. 30. 255 l'<:+lGB, 114. 2~:,5

Figura 2.10. La pantalla de resumen de In utilidad ltspcf'g.

Seleccionar C muestra 1'1 pantalla mostrada en 13 figura 2.11, la cual lista l~s divers os aspectos del servidor LTSP que tienen que ser configurados por el serv~dar de terrninales. Un servidor LTSP debe proporcionar o tener acceso a los siguientes servicios para poder funcionar correctarnente:

DHCP: Asigna Ia direccion IF del cliente y especifica valores tales como Ia ubicacion del nucleo de sistema que el cliente debe descargarse y arrancar, Ia ruta al sistema de fichcros NFS raiz usada pOl' cl nucleo de sistema del cliente, etc. £1 servidor DHCP no necesita estar ejecutando en el servidor LTSP, pero debe SCI' configurado correctamente donde este ejecutando. para proporcionar la informacion requerida por los clientes LTSP.

e NFS: Perrnitc al cliente acceder al sistema de ficheros raiz exportado por el servidor LTSP, usa ficheros de intcrcambio (swap) que habitan en el servidor via NFS, etc.

2. Conectividad remota COil interfaz grafica (GUI)

109

1 - RI)n.l8I-'>;;l1

2 - Inter'Face selectloll 3 - DHCP configur&t1on 4 - TFTP conf i gu r a tL on

5 PO·f'tMe1ppe,~ conf iguroi':t,i on

6 - ~jFS cQnFigu~"ation

7 ~ XDHCP 1'::"0nfiguratj_'~,n

B - Cr-e at.e /et.c/host:;;: errt.r'Le s

9 - <et.cvhoe cs ~ all ovr entries

10: - /f;;!tc/ exports en t. t- i ';:;--:1

11 - Lte i conf f".Lle

- Re I~U r-n to p t-ev j, 01):;'" roenu

- Qui t

Figura 2.11. La pantalla de configuracion de la utilidaclltspcfg.

Q cfFTP: Permifc al clicnte descargarse e1 nucleo de sistema que arrancara. E1 servidor TFTP no neccsita ser ejccutado en el servidor LTSP, pcro debe ser configurado correctarnente donde cstc ~jecutando, para proporcionar el nucleo de sistema de arranque requerido por los clierrtes LTSP.

XDMCP: Permite a los usuaries iniciar sesion en el sistema cliente y establecer una conexion X Window con el servidor LI'SP.

Personalmente considero mas facil ejecutar todos los servicios requeridos pOI' los cli erites LTSP en el servido r. para simplificar t arcas administrattvas, tales como actualizar Ia imagen de arranque del nucleo de sistema 0 cambiar los parametres DIICl~ La sobrecarga de mantener servidorcs cspeciales para DHCP y TFTP en el servidor r:rsp es normalmente menor que la de haccr actualizaciones en m(Iltiples sistemas. Sin embargo, como se ha discutido en la lista anterior, s610 NFS y XDMCP dcbcn rea lmerite estar eiecutando en el servidor LTSE

Aquf somos todos administradores, as! que mas que guiar por cada paso y listar las tedas que Sf deben pulsar, simplemente voy a resaltar los servicios que tiene que activar y los tipos de valoros que neccsita introducir:

Nivcl de ~iccuci6n: Establezca el nive! de ejecucion en el que inicia su servidor LTSP. E1 servidor LTSP normalmentenecesita ejecutar en el nivcl de ejecucion cinco para permitir inicios graficos de scsion via XDMCP, aunque cl nivcl de ejecucion asociado con los inicios graficos de scsion difiere de unas distribuciones Linux a otras. Puede usar tambien el nivel de ejccucion tr es (0 cualquicra que sea 5U nivcl de ejccucion no grdfico y rnultiusuario) e iniciar rnanualmentc el sistema X Window despucs de cada inicio de scsion, pero es menos divertido.

110

Linux Server. Los mejores truces

e

Seleccion de interfaz: ldentifique d interfaz Ethernet sabre el eual el.~~rvi~ dar LTSP acepta conexiones. Esta inform~ci61~ se usa ~I: la COn?g:lr~Cl(~n .d~

.. DlIep y NFS Algunas orgamzaoones utilizan l.nultlpks tarje los sdcr.v, Ut:l0Sf' 'd' l ('NIC', N'ctwo;'k InteJj.ace Card) en sus servidores.· L.TSP Y

tas e HI er az e reCl j ,. .' . ., . . f

adjuntan todos los clicntes LTSP a una ~l~br~d espeoah~~da,en un u.l~~r az l dicad mejorar el r"ndimiento vmmmuzer las ocaSlOnes de Co1151011e5

lie teac 0 a c ,. /

DEep.

"onfi '" '[1H('P' Afiada 1'15 entradas al fichero de configurad6n de Con 19uraclOn .. "He c cr: .. '. . "' '". ' b-

DHCP (J etc / dhcpd. con fl que sus clicntes U SP reqUli:T,Cn cuando 0 ,

tiencn direccioncs Ethernet de su servidor DECP, y. ase~l:rt'se de._q_\.~~ d servidor DHCP se inicia por defccto en el nivel de e)CClIClon espeuflcado

anteriormente. . la tT:l II t f . Si el fichero de configuraci6n DHCP todavia no existe, . L~ U 1.IC ac . sp: 9

, . ' plantilla de fichero de configuraci6n. Debera edl.tar poste .. no. rnea una . c .. ' c < f' , d ed

mente estc fichcro para refkjar su dominio local, con 19,:uaclOn e rl.,

etc. Hf aquf algunos ejernplos de las entradas clave en el fichero de confi-

guracion DECP para LTSP:

192.168.6.32; option routers

, me servers 192,168.6.32;

option domaln-na ~. "

"vonhagen. Org» ;

option domain-name "192.168.6.32:/opt2/1tsp-4.1/i386";

option root-path

sunnet 192.168.6,0 netmask 255.255.255.0 {

use-host-decl-names on;

192.168.6.32;

ontion log-servers r~nge 192.168.6.100 192,168.6.120; "/lts/vm1inuz-2.4.26-1tsp-2";

filename

. . . tOO ," Ietallada sobre como configurar

Mas adelante en cste libro hen~ m .ormacron ( t d . c ~'f

DHCP Y todas las entradas en el fichero / etc / dhcpd . can .

Si necfsita proporcionar ajustes cspedficos para dis~h~t.o.~ di~[ltes LI:S~ . Ic : lentifica rlos de forma unica por sus direcciones MAC '>

pure f IC· .' , . ,·t...·I,.1' te en su

.' ar j'nf'()J'rn'l('i6n de confloUraClOIJ ('speu .ica etc L ten C '

proporctone .; . .' c.,- ...,' '"

fichero de conflguraclOn DHC P

.. fiz .: c "['FT'P' A· seallrese de que d servidor TFTPest<'i.activadoen

Con l(Jurauon " I:> .•.. . 'of

b. d d/'" ftp 'y de que existe e! directono donde almacellc1: 1-

/etc/xlnet, c- .'

cheros.

., fie .' '. del PortmaTJp"!" Aseg(lrese de oue el portmap.per, neccsario

Con 19uraoon . t ~ .. , '.' '1 . '. . , .

para hacer corresponder pucrtos a ser~ic~os R:C (Re,mote, proce~lure Cll,l, Llamada a Procedimiento Remote). esta qccutandose en tl servldor L [SP

2. Conectividad remota con interfaz grafica (GUll

111

de tal manera que los servicios NFS (y opcionalmente, NIS) puedan funcionar correctarnente.

~ Configuracion NFS: Configure el servidor LTSP para iniciar NFS en el arranque si no 10 hace ya.

e Configuracion XDMCP: Determine cual de los gestores de pantalla disponibles (gdm, kdm, 0 xdm) estrin instalados en el servidor LTSP, e identifique el que esta siendo usado actualmcnte en el nivel de ejccucion cinco. Esta opcion, ademas. afiad« entradas al fichero de configuracion usado por ese gestor de pantalla, de tal manera que aceptara peticiones de conexion desde clicntes LTSP remotes,

Crear enrradas en jete/hosts: Cree entradas en el jete/hosts del servidor LTSP para el 1'ango de dirccciones lP usadas por los clicntes LTSP. La mayorta de los servicios basados en RPC, tales como NFS, necesitan ser capaces de hacer corresponder una direccion IF con un nombre de equipo y viceversa. Si esta usando DNS, puede afiadir tambien estas cntradas a su servidor DNS.

G Crear entradas en /etc/hosts. allow: Afiada entradas al fichero /etc /hosts. a Ll ow para el portmepper NFS y los servicios TFTP requeridos pOI' los clientes LISP. E1 fichero /ete/hosts.allow es usado por los envoltoriosTCP de xinetd para perrnitir acceso desde equipos 0 subredes es pecificados.

G Crear entradas jete/exports: Afiada cntradas .'11 fichero jete/exports usado por NFS para identificar los directories a exporter, los equipos que pueden montarlos, y como montar y acccder a dichos directories. Las entradas afiadidas pOI' el programs 1 tspc f g idcntifican el sistema de fiche- 1'OS raiz montado por NFS usado durante cl proceso de arranque del cliente L TSP Y el fichero NFS que contiene ficheros de intcrcambio para los clientes LTSP,

Crear el fichero 1 ts ' eonf: Cree un fichero de configuracion pOI' defecto para Linux Terminal Server en etc /1 ts. conf, relative a la raiz de su sistema de ficheros rafz montado por NFS (en otras palabras, relative al dircctorio nombrado en Ia directive root-path en su fiche ro /etc /dhcp. conf). Este Iichero proporciona valores iniciales que un cliente usa para configuracion local y para conectarse .'11 servidor LlTSP, Y Ie permite proporcionar ajustes especfficos para clientes cuando sea necesario. Puedc tener que modificar este fichero para reflciar diferencias entre sistemas tales como resoluciones gnificas 0 ratones PS/2, serial y USB. Yea la documentacion de LSTP para mas informacion sobre sus posibles contenidos.

112

Linux Server. Los rnejores truces

Llegados a este punto, dcbcrfa reiniciar su servidor LTSP y verificar que todos los servicios obligatorios han iniciado automaticamente (DHCI~ portmspper, NFS, y un gestor de pantalla X) y que otros servicios obligatorios tales como TFTP estan activados. i Ya casi estamosl

Preparar el medio de arranque del cliente lTSP

Una vez que el servidor LTSP estft configurado, el siguiente paso es plantease

como quiere arrancar sus clientes. Bay varias rnaneras de arrancar clicntes LTSl':

Via cl entorno de ~jecuci6n pre-arranque (Pre-hoot Execution Environment, PXE), si esta soportado por su tarjeta Ethernet. PXE esta limitado a ficheros de arranque menores de 32K (que no incluye e1 nucleo de sistema Linux), as! que tendra que configurarlo para abrir un prQgrama de arranque en red (network Boosirep Program, NBP) prirnero, que luego abrira el micleo de sistema. Algunas tarjctas de red 0 placas madre con red integrada requiercn el uso de PXE cspecializados. Las versiones 4.0 0 superior de LTSP proporcionan un programa de arranque PXE conocido como pxelinux.O. Para mas informacion sobre el uso de pxelinux. 0, yea http://www.ltsp.org/REf\DME.pxe. Otro programa de arranque l'XE de codigo abicrto usado a menudo con L TSP es bpba tch.

Puede obtencr informacion adicional sobre bpbatch en su pagina Web (http://www.bpbatch.org) 0 dcsde http://www.ltsp.org/contrib /bpbatch.txt.

Via Etherboot 0 Netboot, dos proyectos Linux de codigo abierto para crear una ROM de arranquc que pueda conectar en cualquicr tarjeta de red que soporte una ROM de arranque.

e Via disquetc, crcando una imagen Etherboot a medida para su tarjeta de red, escribiendola en uri disquete y arrancando con el.

De estas, la mas comun y mas facil para empezar es arrancar desde un disquetc. Simplementc escriba In imagen Etherboot a medida en un disquete, y despues asegurese de que el sistema clicnte esta configurado para arrancar primero desde disquete.

E1 cliente arranca la imagen en cl disquete, In cual inicializa la interfaz de red de su cliente, luego envta una pcticion DHCP y usa las imageries de Iichero de arranque y de ruta raiz, para dcscargarse el nucleo de sistema y arrancar usando d sistema de fichcros raiz espccificado.

Crear una imagen Etherboot a medida para Ia tarjeta de red de su clientc estaria cornpletamente fuera del alcance de este truce si no fuera por el sorprcndente ROM-O-Matic Web (http://www.rom~o-rnatic.net). Simplemente idcntifique su

2. Conectividad remora con interfaz grafica (GUI)

113

tarjeta de r~d y la ":"eb generara una imagen de arranque para usted y la descargara a su SIstema. INo puede ser mas senciUo!

Para crear la imagen ROM correcta, necesita saber el identificador PCI (PCI ID) de su tarjeta de red. 51 no esta scguro de que tarjeta tiene, 10 mas facil de hacer cs arr.ar~c~r su ~liente usan~lo un disco de rescate u otro CD de arranque. Desput'S de imciar sesl.6n, punic ejecutar el comando lspc i para identificar su tarjeta de red y luego cjecutar el comando lspci -n para rnostrar los identificadores PC! (dos nurncros de cuatro digitos separados por dos puntos) para su tarjeta. Puede entonces compararlos con las versiories de su tarjeta listadas ell ROM-O-Matic Web., seleccione G~t ROM, Y guarde 1a imagen ROM en su sistema. Ahora puede escribirla en un disqucte usando un comando como el siguiente (como superusuario):

# cat ROM-filename > /dev/fdO

Ahora esta a scgundos de convertir un viejo PC en un util terminal X.

Arrancar un cliente l TSP

Antes de an:ancar su cliente LTSp, asegrirese de que todos los servicios requeridos l?or el servidor nsp estan ejecutandosc en el servidor, y ele que cl clientc est a configurado para arrancar prirnero desde el disquete. iRedoblc de tarnborcs por favor!

Inserte el disqucte en Ia unidad de disco del cliente y cncienda el sistema. Despu.Cs de los mensajes~OST gencricos, deberta ver un mensajc sobre Ia apertura de la Imagen ROM, seguido pm alguna informaci6n de configurad6n Ethernet y el men~aje II(NJet.work Bo~t or (Q)Hit" Pulse N, y su sistema descargara y arrancara cl nucleo de SIstema L1l111X de su scrvidor LrSp. Tras los rnensajes estandar de arran que de Linux, vera una pantalla que muestra d dialogo de'inicio de sesion mostrado en la figura 2.12.

to

I·'igura 2.12. Un dialogo de inicio de sesion GeM en LIn clicnte LTSP.

114

Linux Server. Los mejores trucos

iEnhorabuena, su cufia para la puerta es ahora un util terminal X! Una vez que tienc su servidor ITSP configurado. lo unico que le queda para crear sistemas clientes adicionales es generar imagenes ROM para las tarjetas Ethernet oportunas. Ponga cada una en un disquete, e inicie el nuevo client.e con el disquete de arranque apropiado. Esto es cspecialmente facil si tiende a comprar sus PC en lotes 0 de un solo proveedor, Hay posibilidades de que muchos de ellos tengan las rnismas tarjctas Ethernet y puedan usar los mismos disquetes de arranque.

Ejecute Windows sobre la red

Deje de desplegar sistemas Windows y aplicaciones para gente que solo necesita acceso ocasional a un pufiado de aplicaciones.

A pesar de los sentimientos que tenga sobre Microsoft, no punk escapar del sistema operative Windows y de las aplicaciones que 10 requieren. Incluso compafifas que viven en Linux para pruebas y desarrollo, todavta necesitan proporcionar a sus dcsarrolladores un acceso a los sistemas de Windows, para que puedan compartir varios tipos de documeritos de gesti6n en forrnatos que los gestores puedan entender,

Esto se vuelve caro rapidamentc, y generalmente es muy pcsado para el administrador de sistemas que bene que desplegar y gestionar estas maquinas. configurar los fieheros compartidos de Windows en cada una de las maquinas, 0 en los perfiles de usuario, instalar los paquctcs de aplicaciones correctos. y mucho mas.

Muchas compafiias reciben su primera pufialada en el ahorro de dinero al poncr dos maquinas en muchos escritorios, y compartiendo un monitor, teclado y raton, ernplcando un selector KVM. Esto esta bien, excepto que la compafiia paga por cl sistema extra, las licencias de Windows, y los selcctores KVM y tiene que rcpartir los rollos administrativos y de scguridad inherentes al despliegue de dos escritor-ios pOl' usuario. Como una alternativa, algunas cornpafiias emplean el proyecto de codigo abierto WINE 0 su alternativa comercial Crossover Office (que es un gran paquete, por cierto), para ejecutar aplicaciones de Windows de forma nativa en maquinas Linux,

Si nccesita surninistrar s610 un acceso ocaslonal a aplicaciones de Windows, pero quierc minimizar los costes y los rolIos administrativos, una buena solucion es instalarWindows Terminal Services en un sistema Windows razonablemente robusto, y comprar un suministro de licencias de acceso clicntc (Client .Access Licenses) que se asignan a los usuarios que nccesitan ser capaces de emplear estas aplicaciones. Los clicntes remotes entonces pueden conectarse al servidor de 'Ierrninal Services y eiecutar sesiones virtualcs de Windows en las ventanas de sus escritorios. Ins tale las aplicaciones que la gente necesita emplcar en el

2. Conectividad remota COil interfaz grafica (GUI)

115

servidor de 'Ierrninal Services o en los directories compartidos definidos en sus perfiles de usuario, y cualquier usuario remoto conectado al servidor sera capaz de cjecutar la aplicacion que necesita. Afortunadamente, cl acceso al Windows Terminal Services ya ni siquiera requiere un sistema Windows. Los usuarios de Linux, incluyendo los que trabajan en un entorno LTSP pueden acccder facilmente a los servicios de Windows Terminal cmpleando rdesktop. un paquete de aplicacion de codigo abier'to que habla en el RDP (Remote Desktop Protocol, Protocolo de Escritorio Rernoto) cmplcado por Windows 'Ierrninal Services. Este truco le muestra como funciona esto.

Abrir su conexion

Como rdesktop cs una aplicacion grafica. debe ejecutarla des de un sistema Linux que este ejecutando un sistema de X Window. En estc trueo veremos las opcioncs que solo se encuentran en las versiones mas recientes de rdcsktop. Cuando se cscribio este libro era la version 1.4.0. A. pcsar de que se encuentra en muchas distribuciones de Linux, sicrnpre puede obtener la ultima y mejor version de rdesktop de los sitios listados al final de este tr uco.

Lo rnfnirno que debe cmplear para conectarse a un sistema que ejecutc los servicios de Windows 'Terminal es rdesktop nombr e+de-cequ i.po, donde nomhrc-de-equipo es cl nombre de la maquina 0 la dircccion IF del sistema que ejecuta los servicios de Windows Terminal. Una vez conectado, apareccra una vcntana es su escritorio de Linux mostrando Ia vcntana estandar de inicio de sesion en Windows, como mostrarnos en la figura 2.13.

Despues de que inicie sesion en cl dominic especifico que desee (si 10 necesita). su ventana de rdesktop mostrara el escritorio estandar de Windows, como mostrarnos en Ia figura 2.14.

Como pasa con rnuchos programas, rdesktop proporciona un numero de opciones que pueden sirnplificar el acceso a los servicios de Windows Terminal. A pesar de que Sf encuentran todas en la pagina de manual (manpage), aqui voy a repasar mis favoritas:

e

-d: E1 dominic en el que desea autenticarse.

-f: Modo pantalla completa. Esto muestra el escritorio en una vcntana sin

marcos que ocupa todo su escritorio.

Punk altcrnar entre e] marco de la ventana tv asi los controles de la ventana) pulsando Control-Alt-Intro.

-p: Su contrascfia en el dorninio remote.

-u: El nornbre de usuario que desea emplcar para iniciar la sesion.

"

116

Linux Server. Los mejores trucos

Figura 2.1.3. La pantnlla de inicio de sesion de Windows Terminal Services en rdesktop,

Si rcntraliza los servicios de Windows ejecutando Terminal Services en 51.1 ronrrolador de dominic, ascgurese de que los usuarios que de seen conectarse a el ticnen los privilcgios de "Iniciar sesion localmente" 0 pertcncccn a un grupo con esos pr ivilegios. De otra mancra, los usuaries rccibiran cl mensaje "La politica local de este sistema no le permite iniciar sesion interactivamentc" y serrin incapaces de conectar,

Corresponder los dispositivos locales con su sesion remota

Si eI sistema que ejecutn los servicios de Windows Terminal esta ~jccutando Microsoft Windows XI~ Windows Server 20030 una nueva version de Windows, una opcion especialmente chula que no hcmos listado en las seccion anterior es la opci6n ~r, que le perrnite cor-responder dircctamentc rccursos de su sistema Linux en su concxion a los servicios de Windows ~liTminal.

Esto es muy util cuando desea corresponder una impresora local con una impresora virtual en su sesion de Windows Terminal 0 seceder a su disco duro

2. Conectividad remota con interfaz grafica (GUI)

117

lc~cal en su scsi6n de Terminal (e~plcando ~r printer: nornbre-de-cola-local y -r disk: nombre-de- recurso-compartido = / dispositivo/ruta, respectivamentc).

Por ejemplo, para asignar PRNl a una impresora local Ilarnada Si!entwriter debe afiadir -r printer: Silcntwriter a las opciones de Ia linea de comandos cuando ejecute el mandate rdesktop.

Figura 2.14. Un inicio de sesion Windows Terminal Services con exito en rdesktop

. , La fi.gura 2:: 5 le mt~estra c6mo su impresora local aparece en cl dialogo genenco de unpresion de Wmdows. Para corresponder su CD-ROM local a un recur so compartido Ilamado cdrorn, debe afiadir -1' disk: cdrom =v dev/cdrom a su linea de comandos de rdesktop.

Si aun dcsea ~mpkar disquetes, punk cor responder su disquetera local a un recurso compartido llarnado floppy afiadiendo -r disk:f1oppy=/dev/fdO a su linea de cornandos de rdesktop.

EI nornbrc que espccifique como rccurso corn partido debe contener ocho caractercs 0 menos,

118

Linux Server. Los mejores trucos

Figura 2.15, Una cola de impresi6n correspondida por rdesktop.

Conexiones X seguras y ligeras con FreeNX

1:1 sistema estandar de X Window hace un uso rnuv intense de la red. freeN" comprime y optimize las comunicadones con las X, y esta. especial mente diseiiado para conexiones lentas como las de lin modem.

FreeNX es una implementaci6n libre y CPt del scrvicio NX de NoMachine (http://www.nomachine.com).NoMachinehadcsarrolladoun~1ste.cnicasde c?m~ presion que rcducen sustancialmente el tamafio de las comunlcaclO:le:~ del Slst~'~ rna X Window, y afiade otras habilidades de mcjora mediante memoria interrnedia y una optimizacion general del protocolo

NoMachine proporciona bastant e documentari6n, con infor-macion ~obre su tecnologta Y sus habilidades en http://www.nomachil:c.com/documentahon.ph~. Si us ted ya es admirador de VNC, deberfa echar un vistazo a NX, por sus capacidades, as! como pm cl heche de que cmplca mtrmsecamente SSH para est<~blecer las comunicacioncs entre el cliente y el servidor de manera segura. Las (hf~~en~ cias entre la version rnrnercial y la libre del servicio NX radican en sus habilida-

2. Conectividad remota con interfaz grafica (GUI)

119

des (y, por supuesto, en el precio). FreeNX proporciona todas las habilidades del sefvicio NX para conectar rcmotamente, pero hoy en dia no incluyc el soporte de 5MB ni de impresion (ClIPS) que sf proporcioria el servicio comercial de NX.

En estos mementos, las licencias de la edition personal de un servidor comercial de NoMachine cues tan unos 55 euros: cs barato, Ademas ofrecen pequefias liccncias para oficinas y empresas, rosa en Ia que puede estar interesado si quierc tcner asistencia del producto. conscguir actualizaciones. y el soporte de 5MB y CUPS actualmente, en Ingar de esperar a que aparezcan y madurcn en Fred"lX. Personalmcnte, si bien cmpleo FreeNX, compre una licencia del servidor, porque me parccia la accion cor-recta. Empleo el cliente fibre ckNoMachine en cualquier sitio. y adernas siento que la gente de NoMachine se rncrece mi apoyo por haber desarrollado una gran tccnologta, Y haberla lanzado como codigo abierto.

Este truco cxplica como instalar y configurar Ia version de codigo abierto del ser'vidor NX de NoMachine, d paquete de FreeNX, y el cliente NX comercializado de forma fibre de NoMachine.

Instalar el servidor de FreeblX

El servidor de FreeNX consiste en dos paquetes: el paquete nx, que consiste en los binaries y las Iibrerias cornpiladas desde los paquctes de codigo abierto de NoMachine; y d paquete freenx, que es un conjunto de scripts que invocan a los binaries de NX de Ia manera correcta.

Depcndiendo de Ia distribucion de Linux en que estc ejecutandose el servicio, puede obtener estes paquctes en distintos sitios:

Debian: Afiadiendo deb http://debian.tu-bs.de/knoppix/nx/slh-debian / ./ a su fichero /etc/apt/sources .list

Fedora: Desdc http://fedoranews.org/contributors/rick_stout/freenx/ Gentoo: Desde los foros de Gentoo en http://foruI11s.gentoo.o1'g/viewtopiep-1469066-highlight~nxssh.html# 1469066

Knoppix: Desde http.z /debian.tu-bs. dc/knoppix/nx/ (reves timien to pa 1'£1 el revcstimiento estandar del servidor de NoMachine)

Red Hat 9: Desdr http://apt.physikfu-berlin.de/redhal/9/en/i386/RPM5.aIbleeding/ 0 afiadiendo las entradas apropiadas a sus fichcros de configuracion de apt o yum, como se explica en http://atrpms.net/install.html

SUSE 9.2: En los DVD/CD de la distribucion 0 desde ftp:!/ftp.suse.com /pub/suse/i386/supplemcutary /X/NX

Ubuntu: Afiadiendo deb http://kanotix.com/files/dcbian/ ./ a su fichero /etc/apt/sources.list

120

Linux Server. Los mejores trucos

Si esta empleando una distribucion que no se cncuentra en la lista de Ia seccion anterior, 0 tienc la polttica de no instalar nada en sus servidorcs sin tener el codigo fuente. pucde construir la version GPL del scrvidor NX de NoMachine NX desde cer o, de var ias maneras d ist int as: obtenga eI codi g o fu e ntc dcsde http://www.nomachine.com/download/ snapshot/nxsources empleand~ wg e t - r y despues siga las instruccioncs en http://fedoranews.org/contnbutors Irick stoutzfreenx/frcenx.txt, 0 descargue el RPM de fuentes desde una de las distribuciones listadas arriba (el SRPM de SUSE para el c6digo abierto del servidor de NX esta en ftp://ftp.suse.com/puh/suse/i386/suppkmentary/X/NX/NX- 1.4.0-12.1. nosrc.rpm), instalc el paquete cmpleando rpm 0 extraiga el contenido a un paqucte .tar emplcando aJ.ien, y despues siga las instrucciones en el fichero n x . spec para vcr c6mo constr uirlo usted mismo.

Yo prcfiero laultirna propuesta, ya que los c6digos fuente induyen los parch~s obligatorios para construir el RPM oficial de SUSE, que es mi distribucion de eSCrItorio/ servidor preferida.

Como buenos ciudadanos de c6digo abierto, NoMachinc proporciona un documento accrca de la construccion de las partes de c6digo abierto de los productos de NX en el centro de documentacion en http://www.nomachine.eom/documentation /pdf/building-components.pdf.

Si descarga manualrnente los RPM, instalelos de la forma habitual, como en el siguientc cjemplo (en un sistema Red Hat 9):

# rpm -Uvvh n~-1.4.0-4.l.rhg.at.i386.rpm

* rpm -uvvh freenx-O.3.l-0.l.rh9.at.noarch.rpm

A continuacion, cmplee la aplicacion nxsetup para realizar la configuracion inicial de su servidor de NX especificando Ia opcion --install, como se mucstra a continuacion:

# lusr/bin/nxsetup --install Setting up letc/nxser'ver ... done

Setting up /var/lib/nxserver/db done

Setting up /var/log/nxse:r:veI.log done

Setting up known_hosts and authorized_keys2 ... done Setting up permissions ... done

Ok, nxse:r:ver is ready.

PAM authentication enabled:

All users will be able 1:0 login with their normal passwords. PAM au.thentication will be done through SSH.

please ensure that SSHD on localhost accepts password authent.ication. You can change this behaviour in the file.

Have Fun'

Estos paSDs crean el usuario nx en el archive /etc/passwd del servidor y configura los ficheros, directories y contrasefias empleadas por FreeNX. Despues,

2. Conectividad remota con interfaz grafica (GUI)

121

afiada cualquicr usuario que desee que sea capaz de emplear el servidor NX a la base de datos de usuarios y configure sus contrasefias, como en el ejemplo siguiente:

* ngserver --adduser wvh

NX> 100 NXSERVER - Version 1.4.0-03 OS (GPL) NX> 1000 NXNODE - Version 1.4.0-03 OS (GPL)

NX> 716 Public key added to Ihome/wvh/.ssh/authorized_keys2 NX> 1001 Bye.

NX> 999 Bye

# nxserver --passwd wvh

NX> 100 NXSERVER _. Version 1.4.0-03 os (GPL) New password:

Password changed. NX> 999 Bye

Ahora est a preparado para instalar y configurar el cliente NX en cualesquiera de los sistemas des de los q LIe desce acceder al servidor de FreeNX.

Instalar el clients de NX

Los clientes Iibres de NX de NoMachine para varias distribuciones de Linux, varies tipos de Microsoft Windows, Mac OS X de Apple, e incluso para Solaris de Sun estan disponibles en http://www.nomachine.com/download.php. E1 nombre del binario del cliente de NoMachine es. sorprcndentemente, nxclient. La idea de una version Iibre del cliente de NX de NoMachine para el entorno KDE (llarnado knx) sc encuentra actualmente en desarrollo, los clientes de NX de Nolvlachine estan bien hcchos, afinados, y son libres.

Tcndra que VfT ellogotipo de NoMachine cada vez que inicie uno de ellos, pero Sera un pequerio prccio que pagar.ty es un logotipo muy chulo)

Los fan de SUSE pueden obtcner el cliente knx dcsde los DVDs/CD o desde f'tp:/If'tp.suse.com/pub/suse/i386/suppiementarylx/NX/. Se puede suscribir a una lista de cor reo sobre cl clicnte knx y FreeNX en general en https:/lmail.kde.org/mailman/lislinfo/l'reenx_knx.

Si Sf ha descargado cl RPM para el cliente de NX de NoMachine, puede instalarIo emplcando una invocaci6n estandar a RPM as]:

# rpm -Uvvh rh9-nxclient-l.4.0-91.i386.rpm

FUese que la version del archivo que Sf ha descargado, y en consecuencia su nombre, punk haber cambia do desde que esto Sf escribio.

122

Linux Server. Los mejores truces

Despues de descargar e instalar el cliente en un sistema de escritorio, necesitara una copia de la contrasena del servidor de FreeNX para Ia instalacion de su clicnte, Esta contrasefia se encuentra situada en el fichero /var / lib/nxserver /home/ . ssh/ client. id_dsa. key en un servidor FreeNX en Linux, y deberia ser copiada al fichcro /usr /NX/ share/ client. id_dsa. key de cualquier sistema Linux donde haya instalado el clierrtc de NoMachine. Tambien debe hacer que este fichero sea legible por los mortales, asi que hagales chmod a 644. Los usuaries del clientc de Windows deben copiar este fichero al directorio c \ Program Files\NX Client for Windows\share.

Configurar e iniciar su cliente NX

Las aplicaciones clicnte y servidor deNX SOIl instaladas en lusr / b i n, que probablernente ya se encuentra en su ruta de busqueda, aSI que no necesitara modificarla para iniciar el cliente de NX. EI clicntr de NX de NcMachine le pennite crear ficheros de configuraci6n que especifican pararnetros con los que Ia aplicaci6n nxclient puede ser invocada, Para crear un fichero de configuracion, ejecute el siguiente rnandato:

$ nxclient --wizard

Una ventana amigable pero Iibre de contcnido dira "Click Next", y el dialogo de In figua 2.16 Sf mostrara. Introduzca un nombre 16gico para la conexion en el cuadro de texto Session, y especifique el nombre de 121 maquina 0 Ia direccion IP del servidor NX en el cuadro de texto Host.

-Session

connect.

Host SaI€Ct typB of your lnternet connection.

';.'i"'· ."".=. "",. w': "'I"'" ~~:~ ' ... : I":"

MODEM ISDN ADSL WAN

LAN

Figura 2.·j 6. El dialogo inicial de configuraci6n del clicnte NX.

2. Conectlvidad remota con interfaz grafica (GUI)

123

Despucs punic modificar el control deslizante para especificar el tipo de conexi6n red/Internet que esta empleando, asi el cliente NX seleccionar'a el conjunto apropiado de compresi6n y optimizacion para su velocidad de concxion.

Cuando pulse Next, se mostrara el dialogo que apareee en la figura 2. J 7. Para conexiones estandar a las X de un servidor Unix 0 Linux remote. deje el tipo de sistema como Unix, y haga clic en el menu dcsplegable KDE para eseoger el tipo de cscritorio que desee que el servidor de NX inici« para listed. Despues, haga die en Available Area, y seleccionc el tamafio del escritorio remote que le gustaria crcar,

Authorizaticl1 ~m::lBnt!a:I$ are al~J,W;; eac ~,!Dted at the timecon."oetion i'€'Mbli.~hed. 'J',:.;reased sooudty, YOLI can ettabie the f6l~oitJ;"U ccoon.

Enable SSl.oooryptiQG ofaillfi"'''''

Figura 2.17. Espccificando protocolos y dimensiones espectficas para el cliente NX.

Yo suelo elegir 1024 X 768, porque es siempre rnenor que el tarnafio del monitor de mi maq uina de escritorio. Emplear el aj uste Available Area predcterminado cs una eleccion mejor si esta emplcando el cliente de NX en un portatil que puede estar 0 no coriectado a un monitor cxterno.

Este dialogo, ademas, Ie per mite afiadir un nivel mas de seguridad activando el cifrado mediante sst.

Esto cifrar'a todo el trafico entre cl cliente y el servidor, incluyendo el intercambio inicial de contrascfias.

Los ajustes que especifique cuando configura un clieritr de NoMachine son guardados en un fichero de configuraci6n de texto en el dircctorio -I . nxl config, con el nornbre de su clicnte de NX y la extension . conf. Posterionnente puede editar estes ficheros con un editor ell' texto si decide rnodificar los ajustes cxistentes rapidamentc.

124

Linux Server. Los mejores trucos

Cuando pulse Next, se mostrara un ultimo cuadro de dialogo, que le permitira crcar un acceso dirccto en su cscritorio. 0 abrir cl cuadro de dialogo Advanced Configuration, mostrado en la figure 2.18.

I

·1

ID .... i .. SPI~y- .•...•............... ='-~.'.". . .-- '"~ I

, _ Usedefaultim"g~ "mooing !-~.'~. :, i-Ii

I (d Uee G'!etom .eltir,gs j'

L~~·~··--~-"·,~~~~~~'~-~==~',--.

Figura 2.18, El dialogo opcional de configuraci6n avanzada del clicnte NX.

Las pestafias de este cuadro de dialogo le perrnitcn optimizar mas las conexioncs entre su cliente y el servidor de FreeNX, personalizar las rutas de varios ficheros de su sistema, y mucho mas.

Una vcz que ha crcado una configuracion, se mostrara el dialogo estandar del cliente de NX. lntroduzca la contraseria del servidor de NX, y comienza In diversion. El clicnte de NX autentica al servidor rcmoto de NX, ncgocia los parametres de la conexion, y entonces aparecera una ventana con cl inicio de sesion del escritorio remota. Ademas vera el logotipo de NoMachine durante unos segundos, llo que Ie recordara a quien deberta (star agradccido por esta tecnologfa tan chula' La figura 2.19 muestra la conexion de un escritorio rernoto de Linux a un sistema Red Hat 9 que ejccuta cl escritorio GNOME.

Para finalizar su sesion con el cliente de NX, tan solo cier re la vcntana como si cerrara cualquier otra aplicacion. Como las conexiones de VNC, las conexiones del cliente de NX puedcn ser suspendidas en Iugar de solamente terrninadas, aSI

2. Conectividad remota con interfaz grafica (CUI)

125

vera un cuadro de di<ilogo que Ie preguntara si desea suspender la sesion, terrninar la sesion, 0 cancelar Ia peticion de finalizarion. Si selecciona Suspend, la conexion actual con el servidor de NX sera renovada la proxima vez que inicie el cliente de NX con la actual configuraci6n.

I.l_';p_.c!:,_~ ... i. }~1_;.1 lt~;t",d;!,.]. b~lP 1tstl-_<:fg_2". p.tlg l.ssp ... ("fs. .. J.bllll) ItsP..xf,, __ 3.pnjJ 1t:s.~ __ gd[l, berp

L 'f;.P.~~d~l, png ;,l'Sl'··'i'~8t

vnderccntruce iCH1. g_lf Lt---toj!=..yo __ h.ac:k,,_<lttE'I'rJ)? t . txt vtneo

V!H:.OLlt

vnc.sc:h._tunne.l. txi

)11;·C l:l en t -). . -]: . 0-~~2 • CX(:1 n:"_wjncb:~\".s_ txt

!\!!bDi\V

vsit'ldul-i$

writ.ing

l'iFl.TS4G XHH.K'r.mf-ig, ham" XH>6tot1f"ig.x21

Figura 2.19. Un escritorio rernoto de FreeNX mostrado en nxclient,

Conexiones VNC seguras con freeNX

FreeN~ no es s610 para el sistema X Window, tambien puede proporcionar conexiOlles seguras a VNC

Si anterio~me.nte Ie n~tusiasmaron las capacidades del servidor FreeNX para ~n?strar escritorios del SIstema X Window sobre conexioncs lentas, preparese, .aun hay mas! FreeNX tambien proporciona 13 traduccion de los protocolos empleados por VNC a los protocolos del sistema X Window, que pueden entonces mte~conectarse can el clientc de NX. Si instala uri cliente NX (como el excelente nxchent de NoMachine) en su sistema de escritorio, puede emplear una (mica

126

Linux Server. Los mejores trucos

aplicacion para ambas conexioncs, con una sesion de X Window remota en su servidor de NX y tarnbien conectarse a travcs de ella a cualquier servidor VNC al que pueda acccder desde el servidor NX. El servidor VNC no tiene por que que estar en el mismo sistema que el servidor de NX, tan 5610 necesita ser capaz de conectar con fl mediante la red.

Las comunicacioncs entre el servidor de VNC y d scrvidor de NX no estan . cifradas, pero las comnnicaciones entre su clicnte NX y el servidor NX si 10 cstan. Esto puede ser especialmente util si Sf cncuentra trabajando rcmotamcnte y quiere acceder a un servidor VNC que se encuentra en el interior de Ia red de su compailia, pero nccesita que cualquier comuriicacion que tenga lugar sobrc la red P1Iblica sea segura. El cortafuegos de su compafiia ya proporciona 5SH, asf qUf no necesita abrir ningun puerto para proporcionar el VNC

Crear una configuracion del cliente NX para VNC

En el truce anterior hemos explicado como obtener e instalar d excelente clicnte de NX de Nolvlachinc. Para crcer una configrtracion para acccder a un VNC ernpleando su cliente NX, haga die sobre el menu desplegable Unix mostrado en la Figura 2.17, y cli]a VNC. Aparecera el cuadro de diaIogo que se muestra en la figura 2.20.

Figura 2.20. Configuracion de VNC en el clientc NX.

En este, especifiquc el nombre de Ia maquina 0 la direccion IP del sistema y cl puerto en el que el scrvicio de VNC Sf esta ejccutando. Por defecto el puerto sera el 5900 mas el numero del cscritorio que el servicio VNC esta cmpleando. Por

2. Conectividad remota con interfaz grafica (GUI)

127

ejfmplo, si el servicio de VNC esta ejccutando en la pantalla nurnero uno (: 1) en el sistnna remote, deberta introducir el puerto numero 5901.

A continuacion. especifique Ia contrasena del servicio VNC rernoto, y marque Remember my password si des fa hacer esta parte de la configuracion permanenteo Haga clic en OK para cerrar este dialogo, continue con la configuracion estandar del cliente NX, y guarde su configuraci6n para NX/VNC.

Cuando inicie el nxclient con esta configuracion, vera una pantalla como la mostrada en In figura 2.21. Felicidades, lse ha conectado de manera segura:

Figura 2.21. Sesion remota de VNC en cl cliente NX.

Conexiones Seguras a Windows Terminal con FreeNX

:J

FreeN X no s610 sirve para VNC y el sistema X Window, ademas nos proporciona conexiones seguras a los servicios de Windows Terminal Services.

Si anterior mente le eritusiasrnaron las capacidadcs del scrvidor FreeNX para rnostrar escritorios mediante el sistema X Window y VNC a traves de conexiones

128

Linux Server. Los mejores truces

lentas, prcparese porque freeNX tiene mas trucos en la manga. FreeNX adernas proporciona la traducci6n del Remote Desktop Protocol (RDP) usado por los Windows Terminal Services, al protocolo del sistema X Window/de tal manera que puede intercornunicarse con cualquier cliente NX estandar,

Si instala un sistema cliente NX (como el excelentenxclicnt de NoMachine) en su escritorio, puede cmplear una (mica aplicacion para comunicarse con una sesion de X WindoweD su servidor NX, puede seceder a un servidor de VNC desdc el servidor de NX 0 a cualquier Windows Ter-minal Server desde el servidor de NX.

Al igual que ocurria COD el servidor de VNC, elWindows Terminal Server no tiene por que que estar ejecutandosc en el misrno sistema que cl servicio NX, esto es ast, porque el set'vicio de NX empleado por FreeNX y el NX de NoMachine is6lo funcionan en maquinas Unix y Linux!

Al igual qne el VNC mediante FreeNX, las comunicaciones entre el Windows Terminal Server y el servidor NX no son cifradas, pero las cornunicaciones entre el cliente NX y el servidor NX S1 10 son.

Esto puede ser especialmente iitil si se cncuentra trabajando rernotamente y requiere acceder a un Windows Terminal Server en el interior de la red de su compafila, pero necesita que las comunicaciones que tengan Iugar en la red publica scan seguras.

EI cortafuegos de su compafiia ya proporciona 5511, ast que no necesita abrir ningun otro puerto para el Wi.ndows Terminal Server.

Crear una configuracion del cliente NX para un Windows Terminal Server

Con anterioridad se expuso como obtener e instnlar el excelente cliente de NX de NoMachine.

Para crear una configuracion para aceeder a un Windows Terminal Server mediante su cliente de NX, haga die en cl cuadro clesplegable Unix que se rnuestra en Ia figura 2.17, y scleccione RDP.

Aparccera el dialogo mostrado en la Figura 2.22. En cste cuadro de dialogo especificarnos el nornbre de Ia rnaquina 0 la direccion IP de su Windows Terminal Server; si qui ere crnplear crcdcnciales para automatizar el inicio de scsion 0 ver la pantalla de inicio de sesi6n estandar de Windows, y si quierc ejecutar alguna aplicacion cspecifica del escritorio estandar de Windows.

Haga clir en OK para cerrar cste dialogo, continue con la configuracion estandar de su cliente NX, y guarde su configuracion de NX Windows Terminal.

Cuando irncie su nxclient con esta config uracion, vera una pantalla como la rnostrada en Figura 2.23. Fclicidades, iesta concctado de manera segura!

2. CO[1ectividad remota con interfaz grafica (CUI)

129

-A;jtheri1Jtatl'oo~~~~' --,------------.-.-. -.~. -.,,~~

. ., .. . ~

. :·}t '_!J~)~3 tl:1:6fotlq~ing-G[@:j~n1i8:ls

ti~ S~m'll the V-/ir,dows kgin _scre~n

.lS 0 .•. SSiOh Type _ . z., -.

.::) -Run desktop

(:i Run appl:iG aHem

-~~-- .. - ... -. ~~--

Hgura 2.22. Configuracion de Windows 'Terminal en un clientc NX.

Figura 2.23. Una conexion a Wi.ndows Terminal Server en nxclicnt.

130

Linux Server. Los mejores truces

Administracion Remota con Webmin

Web min nos proporciona lUI acceso seguro a los archives de bitacora, las estadisticas de! sistema, y a muchas tareas corrientes de administracion: todo ello desde nuestro navegador Web preferido.

Administrar un sistema puede ser una dura tarca. Can la creacion de cuerrtas de usuario, configuracion de servicios, comprobacion de bitacoras, y todos los dcmas deberes que un administrador debe encarar, Ia administracion pucdc ser un poco cargante. Afortunadamente, ha salida algun software que puede ayudar a hacer la vida mas sencilla para el cansado administrador, Uno de estes paquetes de software es Ilamado Webmin.Webmin nos perrnite controlar una gran parte de la funcionalidad de nuestros servidores desde una cornoda interfaz Web. Los principales servicios estan cubiertos, incluyendo Apache, BIND, 5SH, LDAJ~ Samba, WU~FTr: Sendmail, MySo..L, y rnuchos otros.

Instalacion

La instalacion de Webmin no podrfa ser mas facil, Si trabajarnos en una distribucion basada en RPM, como SUSE 0 Fedora Core, simplcmente obtencmos la ultima version de 1.'1 pagina de vvebmin en http://www.Webmin.col11. Instate Webmin con cl siguiente mandato. donde numero-version r es la version que ha descargado:

# rpm -install Webmin-numero-versi6n,rpm

Si estarnos usando una distribucion que no se base en RPM como Debian 0 Slackware podrcmos instalarlo desde los fuentes. Simplcmcnte descargue el ultimo fichcro .tar desdc http://www.Webmin.com y dcscornprimalo en 511 sistema como norrnalmcnte. Navegue hasta el recientemente creado dircctorio de '\tVebmin, y ejecute el siguientc mandate como super-usuario:

# ./setup.sh lusr/local/Wehmin

Esto iniciara el proccso de configuracion de Webmin. E15cript Ie ofreccra una serie de opciones. Para la mayorta de cstas opciones, la predefinida suele ser snficiente. Sin embargo, hay unas pocas que deben cambiarse por razones de scguridad. POl' ejcmplo, es ampliamentc conocido que el puerto predeter minado de Webmin es el 10000, asf que cuando cl script le prcgunte que puerto debe utilizar, escoja alguno original (s610 ascguresc de escoger lU1 puerto superior a11024, porquc los puertos menorcs que este est.'in normaJrncnte reservados para savi·· cios del sistema}. Normalmcntc usaria el5555. Calnbiar d puerto predcterminado ayuda a protegcrnos contra herramicntas automatizadas que sondcel1 Wcbmin y descubran eJ inicio de scsi6n de vVebrnil1 comprobando Sll puerto predderminado.

2. Conectividad remota COn interfaz grafica (GUI)

131

Ademas, elija un nombre de USII·lr·. . I

• .. . . " ,< to prec etc' ~ i· r .... .

dudar, espedfique una contras'>r-l~l S.' . I. L . rrrunar 0 ( IS .. tinto de adrnin y, sin

, ..• ,. ct . Ino OlllJce 1'1(' tr: .,,-. . I I

Y cualquiera que quieta iniciar se .'" .F' c .on rascna se quedara vacia

I sron sua capaz de h'lcerlo 'T' bi i 1

LIster asegurarse ele eleuir nnnlC·l "5S·! c . I . ," . c . . .• ram .len ue .ierfa

~. e» ... t .C I . ~ pdrd e clfr'ld() I~'l 'c " t d .onfi . /

solo mostrara esta o.P ". . itie '. l' ..', c. ~ ,<;1 uita« Con iguracror,

cton 51 rene ds Iibrerfas de SSt ,., PI'

asegriresc de Clue estan abie.rt~s ant.( .. -s d r t,",Pdrd cr. instaladns, asi que

cat C • (c cmnenzar S llas da Ia i .

transmitida de ida .y vuelta entrci ,t I WI" , 10 e as, to. a 1£1 mformaci6n

. . (. IS ec v enrrun sera t· . itid.

en claro, ll1cluyendo contraseilas t :.j .. .. e ransnu IC d ('01110 texto

, / '.. • I '. Y 0 ros datos valiosos del sistema.

tel ultima operon que el script le ex )()ndra es si ". .

cl arranque del sistema. Est() es gene ~ I ... , de::;e~1 que vvebrnin se lance en

. ... "'. erd DIenL!? una prefe ,', .

dencia es decir que no y concct··lr·· Iiant S " ~ nene.lR. P(.[5011a1. MI ten-

, .. c mec Ian c SH f Ul1cnr W 1· . .

necesitc, 10 que le perrnito nlir::;' d'l . i' .. . c e )111m siernpre que 10

1 . c • t. C rae dr cuando no 5(' esta tili .. · .. '

em )argo, su experiencia puedc (:11' scr 1 1 .5 a .. U 1 lzanc!o; SIn

. . . c . . . .• >. epar v tie )Crla ernl' I >, " ••

este tcrna. Si 10 rmp1ea en un entor d:' f <. . ) Cdl su proplO criterio en

li . ··1' .. no uc con ranz.a o no le pre .. I·

... nrntac 0 de dqarlo en marchn t d .. 1 ti .. ,,'. . . eocupa C rIesgo

.' . L 0 0 (' Ifmpo elI)' .'1" .. , "'

Wehmm para que se inicir aut .rmati .., dyes, e script. contlgUral'a

, ... eta JCEirl1ente.

[l.anzar Ia configuracion!

iEso es! Ahora tiene una int·c"rf"ll "'J ·1 .

c, • ve )1n111 compkhl11, tIT'. .

dose en su servidor. Puede ecceder a ellaii . ,·c. d.,.' >«n .e II1ClOllal ejecutan-

donde 555.5 es el puerto que cs .["",11(1.1<111 0 S. (5.1. on el.1 https:!!localhost:5555

,. .. pen lCO uurant j' f' '

mediante RPM, ellJUerto prcderer , .. d einre a con IgurdCl6n. Si ]0 instalo

." .l rnma 0 que se C1TIIJ1>'j f 110 . '.

sion con cl nombre de usuario \f j .•.. t.- ... ec ue e ... 00. 0, Inicie sc-

I .. . .. c J.d con .rasena ouc cs .ifi " I· •

xma vel' algo similar a la fin . 2 24. . .1 • pen leo dl1tenonnentcj de-

. . ",ura . ,Y eche lUl vistazo.

Figura 2 24 L' . .. .• d rnlerfaz de VVebll1in por defecto en un navegador Web.

132

Linux Server. Los mejores truces

Como puede ver, Ia interfaz de Webmin tiene varias secciones, ineluyendo System, Networking, Servers, Hardware, y Cluster. Cada una de csas pestafias COI1- tiene opciones relacionadas con su titulo. Si desea cambiar la direccion IP de su servidor, por ejemplo, eIija Networking, despucs Interfaces. I1aga clic en el Hombre de la interfaz que desea cambiar, e introduzca su nueva dircccion IE Puede afiadir nuevos usuaries, configurar sus registros, configurar DNS y Apache, y Ilevar a cabo las funciones administrativas de una maquina entcra U otras funciones con la misma facilidad que acabamos de mostrar,

La pestafia Servers es otra area donde Webmin es brillante, y es donde las verdaderas capacidades de Webmin se pucden ver, Bajo la pcstafia Servers, puede ver la Iista completa de las aplicaciones a las que Webmin da soporte de manna predeterrninada. Ya hemos mencionado algunas pocas, pero tomese un momento para examiner las capacidades de Webmin.

Haciendo dic en el icono de Apache se le mostraran muchas de las opciones que estan disponihles. Para este ejemplo, supongamos que quercmos afiadir un sitio virtual a Apache. Norrnalmcnte, esto tendrfa que requcrir una edicion manual del fichero h t tpd. conf, seguido de un reinicio del servicio de Apache. Can Web min, podcmos realizar todo esto con unos poem golpes de raton. Al final ell' 1a pagina de configuracion de Apache tcnemos las opciones para crear un servidor virtual, todo 10 quc ticne que hacer es rellenar los campos vacfos y pulsar Create Now. Todo Sf hara por us ted, incluyendo el reinicio de Apache para que tome el nuevo servidor virtual dcsde el fie hero de configuracion, sin tener que lanzar nunca rri emacs ni vi.

Como puede vcr, Webmin proporciona nurnerosas opciones y habilidades.

Wehmin incluso facilita a dcsarrolladores la creacion de sus propios modules para que los ernpleen con CI, perrnitiendo que sus habilidades crezcan y se extiendan por la comunidad.

vvebmin punk ser un salvavidas cuando necesite instalar con urgencia 0 trabajar con herramientas cornplicadas como Sendmail 0 DNS. Tambicn simplifica gestionar granjas de maquinas 0 servidores de alta disponibilidad. No importa como se mire, no se puede ncgar SlI utilidad como una herramienta de administracion muy versatil.

CAPITULO 3

-----~ ... - ........ ~~~ .. ~~ ... -- ..

Servicios de sistema

Truces 20 a 28

El tcrmino clicnte/servidor ha side usado y abusado durante tanto tiernpo que )fa no es tan cxcitante, a menos que, pOl' supuesto, sea uno de los rnuchos adrninistradorcs ocupados que necesitan proporcionar ciertas capacidades esenciales a sus comunidades de tropecientos usuaries. En estc C(lSD, Ia idea de configurar scrvidores ccntralizados para satisfacer los requisites de rnuchos clicntes no es tan 5610 un topico: en un uso eficiente de su tiempo y recurs os de sistema, y simplifica el administrar esos servicios en el futuro. Estc capitulo proporciona trucos que discuten la configuracion de servicios centralizados para dcstinar direcciones IP a nuevos clicntes via DHCP (Dynamic Host Configuration Protocol, Protocolo de Configuracion Dinamica de Equipos), integral' estas direcciones IP recien asignadas con un servicio de nombres de dorninio existente (DNS, Domain Name Service), sincronizar los relojes de todos sus sistemas via NTP (Network Time Protocol, Protocolo de Ticrnpo en Reel), e incluso cornpartir un conjunto consistente de fuentes XWinclow por toda su organizaciori, de tal manera que todos sus usuaries puedan hacer sus inf'ormes usando la misma version de Computer Modern Ransom Note Oblique.

Otro de los focos de este capitulo csta en centralizar servicios de irnpresion y sistemas por toda Ia organizacion de la que es responsable. Los mccanismos usados para imprimir ficheros en diferentcs tipos de sistemas han sido tradicionalmente especificos de los sistemas operativos que usan. Est.o estaba bien cuando cada usuario tenia una impr esora encadenada a su sistema con un cordon umbilical paralelo, 0 cuando las organizaciones usaban un solo sistema operativo para hacer su trabajo. Sin embargo, este tipo de vision de tunel es completamente impracticable en los cntornos de cornputacion hetcrogeneos en red de hoy en dfa. POI' fortuna, ahora estan disponibles soluciones de impresion unificadas,

136

Linux Server. L.os mejores truco~

gracias en gran parte a Michael Sweet y a 1a genle ~kEasySoftware.~rodu{:ts.,Su crcacion de CUPS (Common Unix Printing System, SIstema de Impresion Un.lx Comun), que dcberfa ser dcscrita mejor como el Completamente .un~versal SIstema de Impresion (Completely Universal Printing System), prOp~)rClOnO UI~ potente y cerrtralizado sistema de impresion que funciona ell cualquier par~e. CUPS puede manejar y gestionar trabajos de impresi6n para sistel~as opcr ativos I~o~ern~s tales como Linux, Microsoft Windows, y Mac OS X, aSI como para eqlllpos Unl~ de Ia vicja escuela. Todo 10 que tiene que saber es que ~~justar, donde, por que i:ljustm'l:}, y como hacerlo. Este capitulo proporciona truces que Ie dan toda esa

informacion y mas.

COl1figuracion rapida y sencilla de DHCP

Tome eI control de sus servidos DHCP para integrarse mejor con otras harramientas en su entorno.

Hay much os lug ares en los que los clientes t:jecutan infraestructl_~ras de. s.er~ vicios basadas en Linux en entornos SOHO (Small Office Home 0111(:e, OflCll:d pcquefia o casera). Yo mismo 10 hago en casa. Cuando se csta en un cntorno mas pcquefio, hay muchos dis_positjv~)s "c~1ja negra" Y pa:IL.lt~:es ~k s.t~ftwarc"todo e!~ uno", que se ocupan de aSIgnar direcciones [P aut.oma.tlCd111CI1te a todo~los ~qm pos de su red. Algunos incluso inforrnaran a su S~TvIdor DNS de 1~1s chre.cClones asinnadas dinamicamentc. 10 cual es estupcndo. SIn embargo, segun crcce el entorno y se ariaden nuevos servicios y maquinas, csto puede volverse de alguna

Tl1cU1Cra engorroso. .

La primera vcz que me di cuenta de que poch:ia? no ~l~lerer que 1111. rollL~r inalambrico asignara dirccciones IP rue cuando rccibi la visita de un ~l;nlgO?110 que tenia un portatil inalarnbrico (que pOl' casualidad estaba en su canllor~. Mlentras cstabamos hablando quiso cnsenarmc una p<"igina Web, pew no podw_ rCCOfdar como se llamaba. La tenia marcada en su portatil, asf que 1~ dijc que ~ucra a por el, y que yo pond ria Sl1 direccion Mzu. en la tabla de adm~t1dos d~ rm router inalambrico. EI problema era, que habra olvidado 1a contTa~ena. de rm =: .. L? habia configurado hacia mcscs. y ninguna de mis .formulas fUllca.onaba. I~r.mll~o pOl' decirme "no importa", y yo acabc muy decqJClOnado de esa pieza de rrn infra-

cstructura.

Tras pensar mas sobre ese esccnario, me di cuenta de que ni siquiera .d~berfa haber nec('sitacio tener que tocar un dispositive "caja negra" para pc~mltl~ que l111 invitado obtuviera una dircccion II' en mi entorno. Si tan s610 hubicra ejecutado un scrvidor Dl+Cf' normal y corriente en mi ma quirta Linux, podrla h~lher ckjado hacer 211 router inalambrico 10 que se supone que debe hacer (cncm~mar trafico malarnbrico). y dejar cl rest.o a mi servidor Linux, que es bucno hacicndo

3. Servicios de sistema

137

el resto de cos as (Icaramba, si tuviera tarjetas inalarnbricas PCI incluso podria encaminar el trafico inalambricol).

Otro de los beneficios de usar su propio servidor DIler es que puede agregar opciones DBCP que puede que no sean soportadas pm el dispositive. POI' eiemplo, mi router inalambrico no entregara las direccioncs IP de los servidorcs NTP 0 de los NIS a rnis clientes, y no Ies dira a mis clientes arrancados con PXE un nombre de fichero para coger del servidor DHCr De hecho, ni siquiera soporta una directiva "servidor siguicnte" a usar para las instalacioncs por red de mis maquinas Red Hat.

iDECP puedc rcalmente abrir un mouton de puertas para hacer un entorno 50110 men os sobre mantcnimiento de tecnologta y mas sabre hacer que los ncgocios tuncionenl

Por supuesto. antes de hacer cualquiera de estas cosas tan chulas, lengo que confjgurar mi propio servidor DFI(]~ EI unico que he usado ha sido cl ser'vidor DHCP de Internet Systems Consortium, que es el que viene con casi todas las distribucioncs de Linux, asl que cs pOl' cl que me he decidido. Es ademas el que he mantenido ell entornos de produccion mucho mas grandcs, as! que tengo la seguridad de que esta preparado para cualquier tarca que pueda encornendarlc en una configuracion SOHD.

lnstalar un servidor DHCP

EJ primer paso en este truco es conseguir que el demonio DECp, dhcpd, este instalado en su sistema. En los sistemas Red Hat Enterprise, la utili dad up2 da t e pucde ser usada para insta lar cl scrvidor y cualq uier depcndcncia, con el siguiente cornando:

# up2date -i dhcp

En sistemas Fedora, use YUill para hacer lomismo:

# yurn install dhcp

En sistemas Debian, use 13 utilidad apt-get:

# apt~get install dhcp

La version estable ell" Debian, en el momenta que se escribio este libro, proporciona una version un tanto antigua del demonic Dl-ICI~ que no contierie soportc para actualizaciones DHCP dinamiras, ni proporciona un servirlor BIND DNS que sea capaz de aceptar tales actualizacioncs, Si necesita esta caracterfstica. es aconsejable que use cl servidor DHCP de la rarna inestable de Debian, 0 que 10 compile de los ficheros fuentc,

138

Linux Server, Los mejores truces

5i quiere compilar los fuentes, puede descargarse un fie hero .tar de laWeb de 15C en http://www.isc.org/index.pI7/sw/dhcp/. Para cornpilar, el viejo conjuro de los tres comandos todavta funciona:

$ ./configure $ make

# make install

Configurar servicios simples DHCP

DHCP no es diftcil de configurar, Comenzarernos con requisites simples, y dejaremos la parte mas dura para el proximo truco. El fichero de configuraci6n para cstc servicio es I etc I dhopd . conf , Las primeras Iineas de este fichcro establecen parametres generales que se aplican a todos los equipos servidos por este servidor DHep:

option domain-name "linuxlaboratory,org"; option subnet-mask 255,255,255,0;

deny unknown-clients;

option domain-name-servers 192,168,198,50; default-lease-time 600;

max-lease-time 7200;

La primera linea asigna un nombre de dominic a nuestro cntorrio, d cual es bastante arbitrario en un entorno pcquefio que no esta soportando un dominic de Internet registrado, La opci6n subnet-maskasegura que todos tiencn Ia misrna mascara de subred en su red, Este podrfa no ser el caso en su organizacion, en euyo caso puede especificar este parametro en diferentes lugares dcntro del fichero de configuracion para conseguir el efecto deseado.

La opcion deny unknown-clients evita que el servidor otorgue dirccciones IP a equipos que no csten cspecificados en el fichero de configuracion. La opcion por defecto, por alguna razon, es perrnitir esta actividad.

No tengo ahora nada mas que una rna quina en mi DMZ en ciernes: mi servidor de nornbrcs de dominic. que todos mis cquipos internes usan. En vez de configurar sus direcciones rnanualmente en cada equipo (y tcnicndo que actualizarlas manualmente si se hace algim cambio), simplemcnte entrego las direcciones a los clientes via DHCp, usando la direct iva domain-name-servers,

Finalmente, se estableeen los tiempos de arrendamiento tales como eI defallltlease-time a 600 segundos (10 minutos) y el tiempo maximo que un equipo puede permanece1' sin renovar su contrato a 7,200 segundos (2 horas),

A diferencia de Ia primera secci6n de fichero, 1a siguiente no es global, sino especifiea a una subred, Es Hamada de manna ace1'tada una "dcclaraci6n de subred", y puede tener tantas de estas como subredcs (incluso mas, pero vera que

3, Servicios de sistema

139

en pocas ocasiones tiene sentido}. He aqut una entrada , 'I' 'I d '

, , . c tel pard d su )re de ml red

mterna:

subnet 192,168,42,0 netrnask 255,255,255,0 { range 192,168,42,85 192,168,42,99; oPt~on broadcast-address 192,168,42,255; optl0n routers 192,168,42,1;

Cada declaracion de subred rcquier- tener Ull'l m f , " 1 .:l ' "

'" ',' . > , ,> "",'f.. ' .. " c ascarant'lYl espenhcada,a

pt.~dr de 10 que hava en la scccion global del fIcbcro ~ . f"'''' ~.' ,

> ,. , , "", , " c. '. (Ie con IguldnoIl, Lo prirnero

que ve en . .tn.l.ldvC S {'. s q. ue he config urado las cosas de tao 11' ". I'. '

, '.," " ," ,',,,,' '" ~' ' ,L, TIal1Ud, que os eqlupos

que tu.nul. qU.L.r[c.ll)11' direccioncs dWmTIICaS en s ,t rd m Ier .ibir

f > ' , • J . ,,, . ., .. c .. , ", S'l.I suorCCt puce en recibir s610

numci os de nodo 11 entre 8::> y 99, Esto me perrmte tc ' '" ' ,

I ' lir (' '" .. , >.' , .. ' '. .nel qumce eqmpos aSl<)"l1i:l-

(OS cunarmcament- en rm red, un fondo de buen ta .t-x '. '1. b

, '". ",.. ,~, rnano, por a lora,

A.' con. tinuacion, especifico el valor de hroadcast-addp,cs I)"}' 'e-c 'I d ... "

"1'1',' 'f ," " .. ,' " ~,> c.a I: ormmo, que

[5 a ( ireccion para todos los eCIll11)OS' en Ia subr ed Yf 'I ., '

,''', "'f",.. , . ..... cu. lInd mente, Slempre espe-

cifico ULIOU.tu pdra cada subred ya ouc cada subred Icb > t ' ,

, -: ., >..' >,' .' 1" c.. ce e ,cner su propia direc-

non de puerta de enlace, Supongo Clue podrfa haber 11 ~h i' / t . 'f

oj b: I >" ~" . ,. . .. " '. C .. C" ec .0 (e es a una opnon

b.O la. U1 esc te caso, Y<.1 que todos TIllS equipos inter-nos cstan en Ia 1'1'" .' '1 I

. " - I' .' ",> , " '. lS111d su Jrc[

p. cr. 0 51 ani:.l( iera una subred (10 que hare cuando So, 1 ,,' , , f "

'. ,"".,. ' '. c " C. • u( ue dmlS equrpos Ina1ambncos

internes fUffd de su propia subred) tcndrta qllC cambi ·!'1' nt

, "a 'c," > • f (. ctr. tar C 1 nen es partes de Ii]

umf.I",UldCI.on til vez de simplemenu- afiadir una 1'1'1 ' ·1 '1 .. ' / I .

'h ",,, ' . , . . . (. , eva (tee araClOn c e subred.

II ero .tOdd.V. ia ne.) hernos ac.'ab21do! Todavfa necesita I " I . noce 1 . '

" ....• ') I " ' .. , . c .c ", n ldcer e [0110ce1' a ser'vidor

DfI.U 0::; equipos de S.'l.l "". E. sta tarea. pucde ser un I)OCO penosa VQ q" , '.

(1'1' {"(')rl .),,, , " .. 1 I' , .r " "<> de rcqtuere

uc ,. l zed 0 avcnguc as ( ireccrones MAC de tr 1 ,I"., , .• .

I )S' " '",. _,), .. , .. ' , " , ., I .,., f oc os lOS equipos de Sll red, Cuando

('. l lientes DI.tel .Inludn, IcH1z.dl1 una peticion de servicio IJf-IC'P , tr d. 1 '.1

st I . > , ,.. '. '.' a 0 d a rct , Y

l~~",ec qUl_Cr.C ~ u~' ,::;~l ~er>vldor_DHCP responda 5610 a aqucllos equipos cuya direccron MAC. esta listada en el fichero de conhOUrilciC)f' 'V,t. , '>

" f. '. ,'. " , . . b c ", lieS 0 supera en rriucho a Ia

an 19ua conflguraClon por dcfccto de la puerta de enlace 1'£1"11.'1' '1 ',c

tta dir"" "",. :'" >'.' ' ",. C, . In mea que repar-

cccioncs d todo el vtcmdano! He aqui una simple pero bastante tj ".

entrada para un cquipo en dhopd . conf: ,L, pIca,

host gala {

hardware ethernet OO:30:65:0f:d8:52' fixed-address 192,168,42,58; .

I " El equip? gala results q~lf eS,mi Apple G4. Las dos piezas de informacion {lUC

1t proporclOnado son la drrecn6n HI' >, ,'t d' '1 " '. "~"

(fixed-a. , " .' .,' , . .lune e a maquma y una chrccn6n hJ<1

. J ddr~s5), que es opuonal pero asegura que gala sinnpre obtcndra eX'lc't"

mente a mlSl1Tl eil' > ~" 'j' . . .... c <r

, . . ,. c rccClOn Cat.d vcz que renueve Sll contrato,

(Po1' que deberfa haecr eso! {No contradict' 121 parte "Dinamicl" (Ie I)",IC'P7 1'"

de algwn ' , 1 ' . . , c l !. ,)Ien,

, ' c mantra puce e que 10 haga, pero hay varias raZOlles pOl' las que podrfa

140

Linux Server. Los mejores trucos

hacer esto, Primero, si no usa DNS, probablcmente estara usando todavia / etc /hos ts para resolver otros equipos en la red. Estaria bien no tener que cambiar estos ficheros en cada maquina porque 13 direccion IP de un equipo ha sido earnbiada.

Olvidarse de hacerlo serfa especialmerrte malo si esc equipo era, digarnos, el servidor de fichcros donde habitan todos sus datos importantcs. De la misrna manera, si cs su direcci6n IF' 13 que es cambiada y no actualize d fiehero hos t s , lel servidor de ficheros no resolvcra su Hombre de equipo correctamente y podrfa exportar sus datos a cualquier otro!

Incluso Sl csta cjecutando un servidor DNS, podria querer todavia utilizar DHCP para asignar direcciones fijas. Por ejemplo, podris no ser capaz de usar actualizaciones DNS dinamicas por tina U otra raz6n. Adcmas es de avuda en la solucion de problemas: si un equipo puede obtener una direccion diterente cada vez, las direcciones IP que no se resuclven en nornbres de sistema en sus ficheros de bitacora 0 en la salida de tcpdump dejan de tcner significado hasta que, y a menos que, siga la pista a que cquipo tenia que direccion en el tiernpo especificado en 1a bitacora.

Como sc ha dicho, es cornpletamente opcional, y ciertamente no est a Iorzado a asignar direcciones f~jas a sus equipos. Tarnbien puede mezclar y combinar; por ejemplo, cuando afiado el portatil de mi compaficro a mi nueva configuracion DHCI~ no me preocupo de que direccion IP obtiene, ya que no va a usar ninguno de los servicios de mi easa; simplemente quierc tener acceso a Internet. He aqui la entrada para su portatil:

host appio-wireless {

hardware ethernet 00:90:4B:6D:97:59;

host appio-wired {

hard"lare ethernet OO:90:3D:93:AD:3E;

Ahora {'1 obtendra una dircccion asignada de forma alcatoria, la cual, pOl' supuesto, sent del fondo de 15 dircccioncs cspccificado en mi declaracion de subred. Tenga en cuenta que he afiadido entradas separadas para sus dos interfaces: cable I." inalambrica. Pucde introducir tantas cntradas sueltas como esta, como quiera. Estas entradas represcntan la forma mas simple de una entrada de equipo. Tenga en mente un consejo importante, que cs recordar no asignar direcciones fijas que se solapen con alguna del fondo que ha configurado en su declaracion de subred. POI' ejernplo, si hubiera configurado el equipo gala con Ia dircccion IF fija 192.168.42.88, lel servidor no l1egarfa a arrancarl, cs uri efecto basico, de sentido cornun cuando se para a pensar sobre el, pero en realidad he tropezado con d mas de una vez. i'Ienga cuidado:

3. Servicios de sisterna

141

Ahora, arranque el ser vicio DHCP ejecutando / etc / ini t . d/ dhcp start en S11 sistema Debian 0 service dhcpd start en maquinas Red Hat/Fedora. Una vez que configure sus equipos para usar realmentc DHCP en lugar de direccioncs asignadas estaticamente, reinicie sus servicios de red, y ideberfan series asigna-

das direcciones de su flamante servidor nuevo! .

Integrar DHCP y DNS con actualizaciones DNS dinamicas

Asigne nomhres de sistema y direcciones If' dinamicos, y actual ice 511 servidor DNS para reflejar carnbios sin ninguna intervencion admillistrativa oi truces COn scripts.

Si hay dos scrvicios que imploran ser integrados, estos son BIND y DHCE iAsignar direcciones IF dinamicamente COn DHCP no es tan Mil si haee obsoleta Ia informacion de zona ell' su DNS! Imagine si todas sus impresoras configuradas obtuvieran direcciones IP asignadas dinamicamente por Sll servidor DHCE La proxima vez que su impresora por dcferto obtuviera una nueva direccion IP diri-

. -, I

girse a ese equipo por nornbre podria devolver un resultado inespcradn del DNS,

ya que no estan sincronizados. D6nde acabara su irnpresora, s610 Dios 10 sabe.

Con versiones mas antiguas del servidor DHCP de ISC y de BIND, este problema era rcsuclto de una de dos mancras. Prirnero, podrfa simpIemente decirle a su servidor Dl1C1' que asignara direcciones IP cstaticamente a sus cquipos. Esta es todavia una uti! solucion al problema, especialrncnt- si el servidor DHCP entrega inforlI~a.ci6n adicional aciemLl.s de una direccion n~ tal como que servidores NTP y NIS utilizar. La segunda opcion es agarrar una hcrrarnierita (0 hacer un script usted misrno) para realizar actualizaciones de DNS.

En ~ersiones mas recientes de DHCP y BIND, ambos servicios sopor tan un rnccamsrno para realizer actualizaciones DNS dinarnicas (definido en la RFC 2136), <l. traves del cual un usuario autorizado puede afiadir 0 climinar registros de los fichcros de zona dirccta c inver-sa, Versiones recientes de DHCP soportan adernas un mecanismo mas flexible para derivar un Hombre de equipo dinamico de una expresion, que puede incluir datos enviados desde el clientc en una peticion DHCE

Afiada cstas juntas, y tendril Ia capacidad de, por ejemplo, rnantcner un fondo de din:cciones d.inamicas que ademas asigne nornbres dimlmicamcnte y luego actualice al scrvidor DNS para reflejar los cambios. La altcrnativa a los nornbres de equil~o dinarnicos es hacer que el servidor DHCP Usc el nornbre proporcionado p.or el cliente, pero dependiendo del entorno, esto puede no ser deseable. En situaClOnes donde hay frecucntes visitantes desde lugares alcatorios, el solapamiento

142

Linux Server. Los mejores trucos

de nombres de sistema pucde hacer que fallen las actualizaciones de DNS. Ademas, no siernpre es seguro asumir que un clientc proporcionara un nombre de cquipo valido (0 algun nombre de cquipo, en ese aspecto).

Vamos a repasar como hacer que DUCP y BIND trabaien juntos para realizar actualizaciones dinamicas de DNS. El primer paso que nccesita ser llevado a cabo es la generaci6n de una clave que usaran los dos servicios para comunicarsc entre ellos. EI servidor DHCPusa csta dave para firrnar las peticiones de actualizacion cnviadas al servidor DNS, y el servidor DNS la usa para vcrificar las peticiones firmadas del servidor Df-ICP BIND 9 viene con una ufilidad para general' esta clave, llamada dnssec-keygen_ Puedr: necesitar tomar tres dccisiones sobre c6n10 ejecutar el cornando de generaci6n de clavcs. La prirnera es el nombre de 1a clave, l~ segunda es el numero de bits usados en el cifrado de Ia dave, y la tercera es que forma tornara el Hombre de la clave.

Vamos a echar un vistazo a una clave gcnerada para representar al equipo que tienc pcrmiso para realizar las actualizaciones. Le darcmos una longitud de 512 bytes, y 13 nornbraremos usando el Fo._DN (Fully Cl.udL(fied Domain Name; nombre de dominic plenamente cualificado) de Ia maquina. He aqui el comando:

# dnssec-keygen -a HMAC-MDS -b 512 -n HOST apollo.linuxlaboratory.org.

Esto genera una clave TSIG y la ubica en un fichero en el dircctorio actual. El Iichero es nombrado K<nombre_de_clave> + 157 + <idrmico > .private. Los contcnidos de este fichero seran algo similar a esto:

Private-kay-format: vl.2 Algorithm: 157 (HEAC_HD51

Key: y3v81k909z6c62KgPNlik8P6QZIE:B3yb/Blw/

XE8QN4 6RLeC4XkptJ iRA5 6 roCcC'EGSAdCJb5km.WI2 / S71IJBrmRQ==

La parte importantc aqut es cl valor largo tras la palabra dave Key. Una vex. que tcnga este valor copiado en cllugar apropiado en sus ficheros de configuracion, puede deshaccrse de los fichcros de dave.

Configurar el servidor de nornbres BIND 9

El siguiente paso es configurar BIND para perrnitir actualizaciones del serv~dor r)l-ICl~ usando la clave que acaba de generar. Damns este paso antes de configurar BIND, para (vital' un monton de cntradas de bitacora del servidor DIICP ii1dicando intentos de actualizacion fallidos durante cl lapso de tiempo entre completar la configuracion de ambos servicios,

El fichero named. canf del servidor BIND necesitara tener sus bloques de zona alterados para contencr un bloque de politica de actualizacion, que pcrrnitira al scrvidor conocer que clavcs pueden actualizar que registros en que zonas. Pri-

3. Servicios de sistema

143

mero, necesitamos contarle al servidor todas las claves que querernos saber. En nuestra simple configuracion s610 tenemos una, pero algunos entornos pueden tcner una clave para cada equipo que pod ria tener perrniso para alterar sus propios rcgistros. He aqui un simple bloque que podemos afiadir cerca del principio del fichero named. conf para inforrnar al servidor sabre nuestra clave:

kayapollo_linuxlaboratory_org. { algorithm hmac-md5;

secre t "y3v81k909 z 6 c6 2KgPNI ik8 P6QZ IEB3yb/Bl w!

XE8QN46RLeC4XkptJiRA56roCcCEGSAdCJb5kmM2!S7MBrmRQ=~"; i •

A continuaci6n, necesitamos hacer referenda a esta clave en las sub-declaraciones de nuestra polftica de actualizacion en cada zona para la que la clave 40'S valida. He aquf una Zona tipica que ha sido alterada para aceptar actualizeciones usando esta clave:

zone ~linuxlaboratory.org't in { type master;

file "db.Iinuxlaboratory.org";

update-policy (

grant apollo.linuxlaboratory.org_ subdomain linuxlaboratory.org.

ANY;

);

i.

Aqui, nuestra pohtica de actualizacion dice que permita las actnalizaciones firrnadas con las dave apollo.linuxlaboratory.org., mientras que la actualizacion este afectando a una estrada que sea un sub-dominic de linuxlaboratory.org. Fijese que Ia palabra clave subdomain incluyc el nornbre de sistema. Ademas, perrnitimos a esta clave actualizar cualquier tipo de registro, incluyendo 11.1 palabra dave ANY al final.

Esto en realidad no significa literalmente cualquicr tipo de registro, aunque: ino actualizara nunca, por ejernplo sus registros SOAl 51 quierr; ser explicito, puede Iistar los tipos de registro (pOI' ejcmplo, A PTR permitiria actualizaciones s610 a esos tipos de registro).

Para cornplctar; he aqui el bloque de zona inversa, alterado con una declaradon update-policy similar:

zone "42_168.1.92.in-addr.arpa" in type master;

file "db_192.168.42";

update-policy {

ANY;

grant apollo.linuxlaboratory.org. subdomain 42.168.192_in-addr_arpa

144

Linux Server, Los mejores truces

} ;

J;

Ambas zonas perrnitcn actualizacioncs a cualquier tiP.o de"rcgistro en la z(~na;, Esto cfectivamente haec nuestro servidor DHCP el eqUlI'o maestro exclusivo

para realizar actualizaciones.

Configura-rei servidor DHCP de ISC

Vamos a pasar ahara a configurar nuestro servidor DHCP. En nu~stro cntorno de ejemplo, tenernos muchos cquipos cogicndo dirccciones IP estaticas d~ nucstro ~ervidor OIlCP. Hernos establecido ademas aparte un range para :,cr aSlg~a(~O a los visitantes, a los que lcs scran tambien asignados Hombres .d~ sistema, du~.amicos. Esta informaci6n sera enviada al servidor DNS, y las pcticioncs seran firmadas con la misma dave que us amos en la configuracion de BIND.

Para conseguir la configuracion cor-recta, necesitare.mos afiacliI: lIDOS CUi:1l~tos <~justes extra a la seccion global del fichero para decirle al scrvidor que haga

actualizaciones dinamicas. _

Dcfiniremos eritonccs la dave para usar un bloquc muy similar al que hernos puesto en nuestro fichero named. c onf. He aqui Ia primera parte de nuestro fichcro dhcpd . conf recien actualizado:

ddns~update-style interim; deny client~updates; authoritative;

option domain-name "linuxlaboratory.org"; option domain-name-servers 192.168.42.3;

option subnet-mask 255.255.255.0; default-lease~time 600; max~lease-time 7200;

key apoll0.protocolostomy.pvt. algorithm hmac-md5;

secret "y3v81k909z6c62KgPNlik8P6QZIEB3yb/Blw/ XE8QN46RLeC4XkptJJ.RA56roCcCEGSAdCJb5kroM2/S7MBrmRQ==";

}

Los primcros dos ajustcs son relatives dircctamente a .nuestf.o objetiv,o ... La opcion ddns-updatc-stvle ticne d unico valor qu~ n~)spennlte re~hzar actua,hza~ ciones DNS en versiones mas nuevas de BIND. Solia haber un vdlo~ sui-hoc qt~( era valido aqui, que rcpresentaha un mecanisme diferentc para rcalizar <:ctual::zaciones, pero en vcrsiones mas recientes teste valor es ignorado)': no funciOnar~. El otro valor valido aqui en none, es usado para dcclarar explicitamentc que d

3. SC2rvicios de sistema

145

servidor no realizara adualizaciones.Debe especificar uri valor para la opcion ddns~update-style en las distribuciones basadas en Red-Hat.

E! siguicnte ajustc (deny client-updates.) le dice al servidor que rechace cualquier peticion que los clientcs puedan mandar para actualizar su propia inforrnacion. Hemos cstablccido esto explfcitarnente porque estarcmos asignando Hombres de sistema dinamicos. Si no Ie damos ningun valor, el scrvidor intcntara usar cl nombre de sistema proporcionado por el cliente, 10 cual podria causal' problemas ell ciertos entornos,

La siguiente parte de este fichero es el bloque que define la dave a usar para firrnar actualizacioncs antes de cnviarlas al servidor DNS. Es casi identica al fichero de configuraci6n del servidor DNS, y realiza exactamcnte Ia rnisrna funcion.

Una vez que estes ajustes test an en su sitio, 10 siguicnte que debemos hacer es definir que zonas de su servidor DHCP intentaran actualizar, en que servidores. y usando que claves. Aquf est an los bloqucs de zona, en nuestro ficher o dhcpd. canf, que neccsitarnos para hacer que las cosas funcioncn:

zone linuxlaboratory. org. (

primary 127.0.0.1; keyapollo.linuxlaboratory.org.;

zone 42.168.192. in~addr .arpa. { primary 127.0.0.1; keyapoll.o.linuxlaboratory.org.;

Estas, por SUpUfS[O, deben ser zonas validas en el servidor DNS listado como primario en cada bloque. En nuestro caso, el servidor DNS esta en cl cquipo local, asf que las actualizaciones se rcalizan sobrc el interfaz de loopbacl< local y se Firman con la clave creada antes.

E1 ultimo paso es configurar nombres de sistema dinamicos para los visitantes, que obtendran direcciones IP de un rango prcdefinido. He aqui un bloque de configuracion para encarg~fnos de eso:

subnel: 192.168.42.0 netmask 255.255.255.0 range 192.168.42.85 192.168.42.99; option broadcast-address 192.168.42.255; option routers 192.168.42.1;

ddns-hostname = concat ("dhcp", binary-to-ascii (10, 8, "-address) ) ;

}

leased-

J\ los visitantes de nuestra subrcd se les asignan nurneros de nodo del 85 al 99, ambos incluidos. E1 nornbre de sistema que el servidor DIICP cnviara al servi-

146

l.inux Server. Los mejores trucos

dor DNS se define usando In opcion ddns-hostname. E1 valor que result a de la expresion, para el cquipo que arrencl6 In direccion 192.168.42.99, sera "dhcp- 192-168-42-99.linuxlaboratory.org". EI primer argumento a concatenar es una cadena estatica.

EI segundo es 13 funcion binary-to-ascii. Los argumentos para esa funci6n, en orden, son la base a utilizar (10 son simples, familiarcs, mimeros decimales), el ancho de cada valor (8 hits), el separador a colocar despues de cada valor de 8 bit (un guion), y el valor sobre el que actuar, que en este caso es la variable definida por el servidor; Hay multitud de esquemas disparatados para asignar nornbres de sistema, pero este me ha servido bien y es may simple.

lniciar los servicios y resolver problemas

Reinicie el scrvidor named, y luego rcinicie cl servidor dhcpd. Ambos dcberfan iniciar sin error, si hay alguno, cs probable que sea una coma olvidada 0 una Have 0 parentcsis descolocado.

5i ambos ar rancan sin errores sabra, como mfnimo, que su configuracion es sintacticamente correcta, as! que pasernos a otras cosas que podria ver en la informacion de bitacora.

Uno de los temas mas comunes gira en torno a la dave y como esta es generada y usada, Podrfa ver mcnsajes como estos:

Sep 3 13:06:11 apollo dhcpd: DHCPDISCOVER from 00:eO:b8:5c:46:c6 vi.a ethO Sep 313:06:12 apollo dhcpd: DHCPOFFER on 192,168.42.99 to 00;eO:b8:5c:45:c15 (moacow) via ethO

Sep 313:06:12 apollo named[13005]: client 127.0.0,1#32880: request has invalid s i cria t.u re : TSIG DDNS~UPD: tsig verify failure (BADKEY)

Sep 3 13:06:12 apollo dhcpd: Unable to add forward map from moocow.linuxlaboratory.org to 192.168.42.99: bad DNS key

Mas de una razon puede ser Ia causa de estes mensaies. Por ejemplo, podria simplemente haber escrito rnalIa clave. Asegurese de que tiene cadenas de carneteres entre commas donde las necesita, tanto en el valor de la dave como en su nombre. Use los ejemplos anteriores para guiarse, ya que Iueron tornados de una configuraci6n que se sabe que funciona. Si esto no funciona, consulte las paginas de manual man para los propios ficheros de configuracion, para asegurarse de que esta correcto. Otra raz6n poria que podrta tcner estos rnensajes es porque, bien utilizo un nombrc no valido cuando gener61a clave, 0 bien gener6 un tipo de clave erroneo. POI' ejemplo, si ejecuta cl comando dnssec- keygen con la opcion -n USER y luego nornbra la clave tras el equipo que tiene perrniso para realizar la actualizacion, la clave no funcionara para validar ya sea a un usuario 0 a un equipo, Podria ademas escaldarse si gener6 1.'1 dave con -n HOST perc no nombr6

3. Servicios de sistema

147

If! clave tras el cquipo. Generar la clave usando cl metodo que hClTIOS usado en estc ejernplo le tendril rodando poco tiernpo. Casi todos los dernas problemas son causados por erratas bast~nh: descaradas 0 tenias de perrnisos. Por ejemplo, cuando

BIND acepta una actualizacion del servidor Dllep no reescribe sus f'I·(·'1·1 .. .j '.

. . ~~ .. _-'" ,... ... .... eros ({

zona inmedmtamente: Gcneralrnente los actualize cada hora, y enhetanto, man-

ticne los datos en un fichero ioumal. 5i cl ficherojournal no existe. el usuario con d que esta ejecutando named necesita tcner perrniso para escribir en cl directorio dondc habitaran los ficheros journal. Cuando todo esta bien, In informacion de bitacora gencrada POf una configuracion con exito se ve similar a esta:

Sep 3 15:07:55 apollo dhcpd: DHCPDISCOVER from 00:Oc:fl:d6:3f:32 via ethO Sep 3 15:07:55 apollo dhcpd: DHCPOFFER on 192.168.42.98 to OO:Oc:fl:d6:3f;32 (livid) via ethO

Sep 3 15:07:55 apollo named[14931): client 127,0.0.1#32907: updating zone' linu.xlaboratorv.org!IN': adding an RR at 'dhcp-192-16S'.42... . 98.1inuxlaboratory.org' A

Sep 3 ~5:07:55 apollo named[14931]: client 127.0.0.1#32907: updating zone 'llnuxlaboratory. oeg/IN': adding an RR at 'dhcp-192-16S ... A2 .... 98.1inuxlaboratory.org' TXT

Sep 3 15:07:55 apollo named[14931j; zone linuxlaboratory.org/IN: sending notifies (serial 8)

Sep 3 15: 07: 55 apollo dhcpd: Added new forwetrd map from dhcp--192~168-42- 98.Ll..nuxlaboratory.org to 192.168.42.98

Sep 3 15:07:55 apollo named[14931j: client 127.0.0.1#32907: updating zone '42.168.192.in~addr.arpajIN': deleting rrset at '98,42.168,192,inaddr.arpa' PTR

Sep 315:07;55 apollonamed[14931]: client 127.0.0,1#32907: updating zone '42.168.j_92.in-addr.arpa/IN': adding an RR at '98.42,168.192.inaddI . arpa' P'l'R

Sep 315:07;55 apollo named[14931]: zone 42.168.192,in-addr.aI'pa/IN: sending notifies (serial 6)

Sep,3 15;07:55 apollo named[14931): client 192.168.42.3#32903; r'eceived not2fy for zone 'linuxlaboratory.org'

Sep 3 15:07:55 apollo dhcpd: added reverse map from 98.42,168.192.i.naddr.arpa. to dhcp-192~168"'42-98 .1i.nuxlabQI'atory. org

Sep 3 15:07:55 apoll.o dhcpd: DHCPREQUEST for 192.168.42.98 (192.168.42.3) from OO:Oc:f:!:d6:3f:32 (livid) via echO

Sep 3 15:07:55 apollo dhcpd; DHCPACK on 92.168.42.98 to OO:Oc:fl:d6:3f:32 iJivid) via ethO

iSincronke SUS relojesl

Un simple servicio NTP que Ie ahorre horas de dolor de cabeza puede ser configurado en minutos.

,. NTP .(Network Time Pro!ocol, Protocolo de Ticmpo en Red) cs un servicio que busca smcroruzar los relojes de todos sus clicntcs. Un dcmonio N'I'P ejecuta en

148

Linux Server. Los mejores trucos

un servidor, sincroniza su reloj local de sistema con un servidor NTP publico, y luego sirve como servidor de tiernpo en la red local, de tal manera que todos sus clientes, incluyendo los PC de cscritorio, puedan sincronizar sus relojes.

La razon numero uno para hacer esto Sf aplica a entorrios de todos los tamanos, y esta razon es posibilitarle el correlacionar datos en los ficheros de bitacora de sus sistemas. (Es tambien una rnancra c6moda de asegurar que sus cornpafieros de trabajo 051' reunen con ustcd para comer a Ja hora correcta.) Incluso si tiene Ia informacion de bitacora centralizada, pueden haber aplicaciones que s610 registran csta informacion Iocalrnente, y algunos dernonios de auditorfa locales, configuraciones sar, y registros de inicio de scsion guardados en ficheros de datos urntp y wtmp necesitan cstar sincronizados de tal mancra que la resolucion de problemas o las investigaciones post-mortem no comiencen con una lista de equipos y sus diferencias de tiernpo con respecto al servidor de bitacora,

Deberfa ademas saber que un equipo central de bitacora ejecutando Linux con cl demonic syslogd registra una marca de tiempo en los ficheros de bitacora que se corresponde con el tiempo en el que cl mensaje fue recibido, de acuerdo con su hom local, de tal manera que, como minimo, guarde alguna apariencia de orden en sus propios fichcros de bitacora,

Un estimulo adiciona] para usar un servicio NTP para nucstros equipos vendra de cualquiera que alguna vcz haya tenido que mantener servidores y clicntes NfS en un cntorno que no sincronize el tiempo entre los sistemas. Esto puede causar problemas considcrablcs con NFS, dando como rcsultado inexplicables mensajes de "manejador de fichcro caducado" (stale file handle) y mistcriosos errores del comandomake dcclarando que algun fichero requerido tiene un "tiempo de modificacion en el futuro" (modification time in the [uture.i

Ahora que csta convencido de que tener un scrvicio NTP es 10 cor recto, pasemos a establecer un simple servidor NTP, y a configurar sus clientes para utilizarlo. Primero, debe ascgurarse de que bene el paquet« de nt.pd instalado. SUSE, Fedora, Red Hat, Mandrake, Debian, y todas las variantes de Debian que he visto (incluvendo Ubuntu y Linspire) incluyen ntpd. Los sistemas hasados en Red Hat lo incluyen incluso para instalaciones de servidor mlnimas. EI fichero de configuracion para el demonio del servidor es /etc/ntpd. cont, as! que vamos a comenzar pOl' ahi, echando un vistazo a una configuracion elemental:

II Default rules for all connections rest.rict. default nomodify not.rap noquery

#1 Allow full access to the local host restrict 127.0.0.1

## Our client subnet.

rest.rict. 192.168.42.0 mask 255.255.255.0 nomodify notrap

# Our tirneservers

:. .. :

nf

3. Servicios de sistema

149

server ntp.cs.princeton.edu server clock.linuxshell.net server ntpO.comell.edu

MUy bien, esto es suficiente para cornenzar. Los primeros dosrestrict y default, defincn esta linea como la regla de acceso por defecto para todas las conexiones. Los tres siguientes restringen a los equipos remotes el modificar Ia configuracion local del sistema (nomodifv), deniegan los mcnsajes especiales de intercepcion de ntpdq (notrap). y denicgan las petkionesntpdq/ntpdc a este servidor (noquery). FOese que Ia opcion noquery cs espccffica de peticiones sobrc el estado del propio servidor, no sobre el tiempo: las solicitudes de tiempo no se yen afectadas por esta opcion.

Todas estas restricciones pueden hacer que configurar el servidor parezca algo bastante inutil, pero simplemente recucrde que es una regIa por defecto que sera ignorada por regIas que se cncucntran mas abajo en el fichero.

La siguiente huca del fichero, restrict 12 7.0.0.1, permite acceso total al cquipo local, y no, no es una errata. 51 ha estudiado alguna vez cl fichcro n tpd. conf, parcel' cxtrafio ver una linea cornenzando con restrict que en ultima instancia da acceso complete al objetivo de 1£1 regla. Sin embargo, la mancra en la que el servidol' lee el fichero es comparando todas las conexiones cntrantes con las declaraclones restrict, en el orden en cl que aparecen en el fichero. La palabra clave restrict esta scguida pOl' un nornbre de equipo, una direccion W o la palabra default, seguida por cualquier marcador restrictive que estime necesario. La ausencia de cstos rnarcadores signified que no hay restricciones. ihe aqui por que la linea superior cia acceso total al sistema local!

La siguiente linea sin comentar da acceso a nuestra sabred local (192.168.42.0), de tal rnanera que los usuarios de esta sub red pueden usar esta rnaquina como su servidor de tiempo pero no pueden realizer acciones de ningun tipo sobre el propio servicio.

Las siguientes tres Iineas (no comentadas) en el fichero son los servidores en los que el scrvidor NTP local confiara con el proposito de sincronizar el reloj local. Hay miles de servidorcs de ticmpo disponiblcs publicamente pm todo el mundo, asi que consulte una de las muchas Itneas que hay publicadas en internet, cncuentre unos cuantos que csten geograficamente cerca de ustcd, y usclos. Dcberia ser capaz de encontrar una lista navegando por Ia p.'lgina Web de ISC, que manticne informacion sobr e Iist as de servidores de tiempo en http://ntp.isc.org /bin/view/Servers/WebHome. iNn ponga direccioncs IP para los servidoresl Segem los sitios van evolucionando, sufren inevitablemcnte algunas alteraciories en como funciona la red, como se organizan los bloques IP en subrcdes, y cosas parecidas. Un cambro de direccion IP en la Univerisdad de Cornell no es algo que deberfa importarle, y no 10 hara si usa Hombres de equipo en vez de direcclol1es n~ ya que los sitios generalmente tiencn cuidado de ascgurarse de que los paque-

150

Linux Server. Los majores trucos

tes vinculados a ntpO.curncll.edu lleguen uhf indepcndientemente de la direccion IP de esc servidor en el ticmpo.

lHeY!lMis servidores han desaparecidol

Suck ocurrir, Ouizas ha perdido conectividad con cl mundo exterior. Ouizas ha cscogido trcs servidores que cstaban en cl misrno sitio (mala idea) y cstan todos fuera de servicio. Antes que nada, ticne clientes a los que set-vir, y necesita decides algo. Introduzca lamagica declaracion chapuza:

server 127.127.1.0

fudge 1.27.127.1.0 stratum 10

Aqui, introducimos Ia direccion IP del reloj del sistema local en la linea del servidor y despues le hacemos la "chapucilla" a su prioridad poniendola como stratum 10.

Todos los servidores de tiempo tiencn autornaticamentc asignados val ores de estrato basados en su distancia al origen del tiempo. Muchos de los scrvidores de tiempo publicos son scrvidorcs de estrato dos o tres, Esto signifies que la {mica manera de que nuestro demonic NTP local acabe usando un servidor de tiernpo de estrato dicz sera si es cl unico disponible. La mayorta de las distribuciones Linux, y muchas otras variantes de Unix, le proporcionan un fichero ntp. eonf por dcfecto que tiene este toque de sabidurfa de configuracion ya sin comentar, Es seguro dejarlo aSI, y hacerlo qucrra decir que no tiene que preocuparse sobrc NTP si pierde conectividad externa 0 si cncuentra algun pequeho contratiernpo en la disponibilidad del servidor de tiempo.

Centralizer los recursos de fuentes de X Window

Configurar un servidor de fuentes central para X Window simplifica la dlstribucion de fuentes usadas en los sistemas de escritorio basad os en X.

E1 sistema X Window es la cimentacion de Ia mayorfa de lQS escritorios grafi~ cos y gestores de ventanas LIS ados en los sistemas Unix y Linux hoy en dia, Mienl1'3S que las alternativas estan bajo desarrollo y mucha gente Sf queja del impacto que tiene sobre la CPU el constantc sondco que haec X Window de eventos de teclado y raton, C5 diffcil discutir con exito.] el sistema X Window funciona y cs por tanto usado en casi todas partes. Adcmas. las demandas que pone en los sistemas modernos con robust os proccsadores sonmucho menos significantes de 10 que eran en las antiguas estaciones de trabajo 0 en sistemas ejccutando a 300 MHz. Como 'un sistema de graficcs cliente/scrvidor; X ticne muchas ventaias en tcrminos de uso y portabilidad, asf como de ubicuidad, ya que csta dispo-

3. Servicios de sistema

151

nible y soportado en casi todos los sistemas con capacidades grMicas. Tcdsvfa, hay algunos aspectos de X qlle pucden ser optimizados), en concreto, su manejo de las fuentcs. Este truco explore como punk configurar un servidor de fuentes central para delegar los requisites de fuentes locales en un recurso central, ahorrar ciclos de CPU, espacio de disco en sus sistemas de cscritorio, y dolores de cabeza administrativos ascgurando que las misrnas fuentes son desplegadas en todos los sistemas que pudieran necesitarlas.

Billones y billones de fuentes

Obtcner y gestionar las fucntcs usadas pOl' las aplicaciones graficas siernpre ha sido un problema indepcndientcmente del tipo de sistema que este usando, y, ciertamente, no esta Iimitado al sistema X Window. Puedo recorder (con dolor) ahogar viejos equipos Windows y Mac instalando dernasiadas fuentes. De alguna manera, peor que el problema de cargar y soportar tropccientas fucntes, ei-an los problemas esteticos causados por Ia entusiasta sobre-utilizacion que la genre hacia de ellas. Puedo recordar rccibir curriculums de posibles empleados que parecta que habian sido acribillados con una escopeta cargada de dif'erentes fuentes v efectos.

Asi es Ia vida, si 10 construves, abusan de ello. Sin embargo, los administradores de sistemas son Ia gcnte equivocada para imponer estctica. Nuestro trabajo es proporcionar a los usuarios los recursos que piensan que nccesitan y hacerlo de una manera manejahle y ficlcH de administrar.

Los sistemas X Window desplegados en los equipos Linux de hoy en ella normalmente provienen de Xfree86.org 0 de X.org. EI ultimo es el mas frccuente, yes probablemente el"sistema X Window del futuro" (que algunos puc den ver como un oximoron, pero esa es otra historia). Ambas implementaciones de X Window vicncn con un sur tido de fuentes ubicadas en subdircctorios de /usr /XIIR6/1ib/Xl1/fonts.

Cada uno de esos subdirectories puede contencr muchas families diferentes de fuentes, as! como Fuentes individuales. La configuracion x.org pOl' defecto en el sistema SUSE donde estoy cscribicndo esto proporciona trcinta subdirectories de fuentes, y al ejecutar el cornando fe-list muestra que hay 652 fuentes separadas disponibles en el sistema. En comparacion, mis sistemas Fedora Core 4 (donde he instalado todo, ya que el espacio de disco es mas barato que mi tiempo) tienen 185 Fuentes instaladas. Los cquipos SUSE dedican alrededor de 100 ME de espacio de disco al almacenamiento de fuentes, mientras que el sistema FC4 usa unos meros 50MB. Estos valores sedan mucho mayores si hubiera instalado todas las Fuentes que cstan disponibles para diferentes Icnguajes. EI rnimcro reportado por el comando f c+Li s t; es tambien independiente de cualquier otra fuente que los usuaries individuales puedan haber instalado localmentc en sus directories - / . fonts. iUf!

152

Linux Server. Los mejores trucos

Las discrcpancias sobre el numcro de fuentes entregadas con varias distribuclones de Linux c impierncntaciones de X Window hacen dcscable el compartir fucntes entre sistemas. El espacio de disco es tan barato como sucio hoy en dia (ciertamentc mas barato que la tierra dejardineria), pew hacer las mismas enormes colecciones de Fuentes maravillosas disponibles para las aplicaciones X Window de todos es desde luego logisticamente atractivo. Adcmas de los conjuntos de fucntes pOT defccto proporcionados con las distribuciones Linux, algunas aplicacioncs que puc den no formar parte de las instalaciones de sistema por dcfccto viencn con su propiojuego de fucntcs.

Afortunadamcnte. no soy el (mica qlIC ha descado un mecanisme centralizado para repartir fucntes a sistemas X Window por toda In compafiia, 0 13 universidad. Desde haec bast ante tiempo, La mayoria de las implernentaciones X Window vienen con un servidor de Fuentes llamado xf s (X Font Server, no confundir con el sistema de firheros journeling XFS). Una encarnacion previa de un servidor de fucntes, f s. era proporcionado por distribuciones Linux mas antiguas, pero csto era hasta que Iuc suplantado por x f s. La rnavorta de las distribucioncs Linux de escritorio usan xfs para entrcgar fucntes al sistema local, pero con unos [Joe os carnbios al fichero de configuraci6n de xfs y un poco ell' organizaci6n, pucde configurar facilmcntc uno 0 dos servidores dcfuentes centralizados para mancjar los requisites ell' fuentes de su organizaci6n y poneI' todas las fuentes posibles a disposicion de todos sus sistemas de cscritorio X Window, gestores de ventanas y aplicaciones.

Configurar un servidor de fuentes X

Configurar un servidor de fuentes X para servir Fuentes a sus otros sistemas es bastante simple. Ya que la mayoria de las impkmentaciones rnodernas de X Window usan un servidor de fuentcs para repartir fucntes ni sistema local, el paso mas importantc en d proceso de re-configuracion es abrir cl servidor de Fuentes X a peticiones Tep externas,

EI fichcro de configuraci6n que coritrola el comportamiento del servidor de fucntes xf s es el fichero /etc/Xll/fs/config. (Aunque el ejecutab1c del servidol' de Fuentes ticne un nuevo Hombre, manticnen su antiguo nombre en Ia ruta pOl' temas de consistencia.) O.uerremos modificar U11as cuantas cosas en cste fichero, pero la crftica para convertir una instancia especifica del servidor de fuentes X en un recurso centrnlizado es cornentar la siguiente linea usando un editor de texto para poner un signo almohadilla al principio de la misrna:

#no~listen = tcp

Eliminar la directiva no-listen, Ie dice al seTvidor de fuentes X que comicnec a escuchar pcticiones 'rep de entrada de otros equipos.

3. Servicios de sistema

153

. Configurar n~as (~e un servidor es una buena idea si va a cstar configurando sus SIstemas de escritorio para usar reCUfSOS de fucntes centralizados. Para idcntificar otros s:rvidores de fucntes, a~ada una entrada al fichero de configuracion de xfs que de los nornbres 0 las direccioncs IP separados por comas de los otros s~rvidor~:s de fucn~es en su red y los pucrtos en los cuales estan aceptando peticrones. Como un cjcmplo:

alternate-servers font2.vonhagen.org:7100,font3.vonhagen.org:7100

E~ta entrada le dice al servidor de Fuentes que puede redirigir peticiones a los servldores de fu~n.tfs altcrriativos fontz.vonhagcn.org y fonl3.vonhagen.org en d PUf:·to 7100 51 tienc dernasiadas peticiones que manejar pm Sl mismo. El puer~ to cstandar en cl que cjecutan los servidores de fuentes X, cl cual probablemente debcrfa usar, es 7100.

Puede usar un puerto diferentc si gusta, mierttras gUClnkn consistenci» tanto en el scrvidor de fuentes como en cualquicr cliente que quina concctarse a e1. A c~)"ntinuaci6n, qucrra establecer la palabra dave port en cl fichero de configuracion de xfs para el valor entero del puerto en el que cl set-vidor de fuentes X cslead escuchando peticiones de entrada. De nuevo, el puerto TWO es el cstandar y deberfa por tanto ser usado a mcnos que tcnga alguna razon para usar otro puerto.

En algunas distribuciones Gcntoo, el puerto del servidor de Fuentes Sf cst ablecc por mcdio de la directiva XFS~PORT en el fichero de configurac~6:1 / etc I conf . dl xf s. 5\ esta usando Gentoo y 5U servidor de Fuentes trucra peru no pucde contactar con el, revise cste fichero para

asegu~'arsc de que el s~rvidor de fuentcs est': realmcnte siguicndo las directivas que ha especificado en su fichero de conficuracion

Q . - •

Ahora, detcrm~nc los Iimites oportunos para clnumero de clicntes que puedcn c~mcct~rs~ al servidor ell' fuentes y como este debe compor+arse cuando Sf alcanza dicho limite. Es~o sehace con una combinacion de los valores de client-limit y clone-self en d fichcro de configuracion ell' x.f s r La opcion client-limit requiere un ':<1101' entero :1~1C determine el maximo nurnero de clientes que un servidor de Iuentes cspecffico soportara antes de que rehusc cl servicio a las peticiones de entrada. La 0)]c16n clone-self rcquierc un valor booleano y determine como Sf comporta cl servidor de fuentcs cuando alcanza su limite. 5i clone-self csta activa.da (con el valor true), el servidor de fuentcs arrancera una nueva instancia de sf ml~mo cuando alcance el nurnero maximo de clicntes cspccificado. Si done-self esta dcsactivado {con el valor false), el servidor de fucntcs intentarri contactar cualquier otro de los scrvidores identificados en la entrada aI terna te-servers, en orden, hasta que uno pueda ser contact-ado con exito. En cntorno con mttltiples

154

l.inux Server. Los mejores trucos

scrvidores de fucntes centralizados que dan servicio a gran des numeros de estaciones de trabajo, sugerirfa tener siernpre fa opcion clone-self con el valor [else, y comenzar con un valor para client-limit de 100. Una vez que yea que tal funciona, puede incremeritar 0 rcducir este Itmite para equilibrar 10 mejor posible el ticmpo de respuesta del servidor de fucntes (afectado tanto por la carga del sistema como pOl' cl ancho de banda) con una utilizacion razonable de todos sus servidores de Iuentcs.

Como paso final en la crcacion del fichero de configuracion de su servidor de fucntes X, neccsitara afiadir cada dircctorio que contenga fuentcs X al valor separade por comas para la declaracion catalogue. La seccion siguientc explica como copiar ficheros de fuentes de sistemas remotes al sistema servidor de Fuentes X, y crcar entradas apropiadas para ellos en el fichero de configuracion del servidor de fuentes.

Copiar fuentes al servidor

El siguiente paso en la configuracion de su servidor de fuentes es poblarlo, en efccto, con todas las f'uentcs que quiera repartir a sus clientcs X Window. La manera mas facil de hacer csto es exarninar los ficheros de corifiguracion de X Window en cada uno de sus tipos de sistemas para ver de dondc eshln tomando las fucntes actualmentc. Esto se especifica en una 0 1116s declaraciones Font.Path en la seccion Files del fichero de configuracion del sistema X Window, que cs bien I etc/Xll/xorg.conf (para servidores X Window de X.org) ° bien lete IXll/XF86Config-4 0 lete/Xl1/xF86Con£ig (para servidorcs X Window de XFree86.org). 5i la seccion Files conticne una sola declaracion sin cornentar tal como la siguiente, esc sistema esta usandose a S1 mismo como servidor de fuentes local:

FontPath

Hunix/:7100rr

Para cada entrada FontPath que apunta a un dircctorio real en el sistema que estri cxaminando, primero cornpruebe si el misrno directorio (con los mismo COI1- tenidos) existe en el sistema donde cstara ejccutando su servidor de tuentes X para toda la compafita. 5i no, neccsitara copiar los contenidos de ese directorio al sistema servidor de fucntes X, creando el directorio en caso nccesario. Una vez que todos los directories necesarios han sido clonados al sistema servidor de Iucntcs X, asegurcse de que csos mismo directories estrin sicndo identificados en la declaracion catalogue en cl fichero de configuracion del servidor, Por cjernplo, las siguientes son algunas declaraciones de muestra de un fichero de configuracion de servidor de fuentes X qLle hacen referencia a un directorio de fuentes local:

FontPath FontPath

"/usr/XIIR6/lib/Xllifonts!mise:unsealed" "/usr/XllR6/lib/Xll/fonts/loeal"

3. 5ervicios de sistema

155

FontPath FontPath

"/usr/X11R6/1ib/Xll/fonts/75dpi:unscaled" '/usr/x11R6/1ib/XllifQnts/misc/sgi:unsealed'

'I~as copi~lr los directories de fuentcs a la maquina que estara eiecutando c1 servldor de fuentcs X, tcndra que actualizar el fichcro de configuracion del mismo. /etc/Xll/fs/config, para tener dedaraciones equivalenres. Cada declaracion Fontl'ath en cl fichcro de configuracion del servidor Sf traduce en uno de los valores separados por comas asociados con 13 palabra dave catalogue en el fiche~o de C{;nfigl~rac.i6n. POl' tanto, una declaraci6n equivalents para el ejernplo anterior seria Ia siguiente:

catalogue = i tlsr/XllR6/1 ibl Xlli fonts/mise: unsealed, /usr/X11R6/1ib/Xll/fonts/75dpi:unscaled, /uSr/XIIR6/1ib/X11/Eonts/lOOdpi:unscaled, /usr/xl1R6/1ib/X11/fonts/misc/sgi:unsealed

La ultima entrada en la declaracion catalogue no debe ir seguida de una coma.

5i COpi~l f~ientes dentro de l~n directorin de fuentes ya existente en la maquina que cstara ejecutando el servidor, deberia hacer s u al super-usuario 0 usar el comand,o sudo para re.-ejecu~ar el conran do mkfont:.dir, de tal manera que tod~lS las fuentes en esc directorio puedan ser identificadas y cntregadas pOl' el serVIdor.

Iniciar 0 reiniciar el servidor de fuentes X

iYa casi estamos! Antes de reiniciar el servidor de fuerites X para recocer la l:ueva configura(:i6n y ~1~I:ezar a ofrec~r fuentes a cualquier cliente X que haya, wmpruebe d SCript de HllClO de xf s ubicado en I etc / ini t . d/ xf s para asegurarse de que no espccifica e~pHcitamente un puerto difcrente a aqucl en el que Sf espcra que cscuche su servidor de fucntes.

Por ejcrnplo. suponga que su script de inicio contenia una declaracion como Ia siguiente:

daemon .... -rih ec k x t s xfs -port .. 1 -daemon ........ droppriv -user xis

Podrfa qucrer modificar esta dcclaracion a 10 siguiente:

daemon - check xEs xfs · ...... port 7100 -daemon -droppriv .... user xf s

A!~unos script de inicio US an una variable para rnantener el numero de puerto. 51 este cs cl casu en los script de inicio de su servidor de fuentes, aseg(lrese de

156

Linux Server. Los mejores trucos

que Ia variable identifira al puerto 7100 como el puerto en el que ejecutar el

scrvidor, '

iAhora csta oficialmente listo: Para reiniciar 0 iniciar su servidor de fucntcs X, sirnplcmcnte ejecute el siguiente comando:

# /etc/init.d/xfs restart

Si el servidor de fuentcs no esta ejccutandose, Ia porcion stop de restart fallara, pero Ia porcion start iniciara su servidor de Iucntcs con todas sus nuevas opcioncs,

Asegurcse de que afiade cl inicio de! servidor de fuentes X 10 bastantc temprano en sus distintos niveles de ejecucion, cspecialmente 51 inicia 5U maquina en modo grafico. 5i cl servidor de fuentes X no esta disponible cuando intcnte iniciar cl sistema X Window, y no hay fuentes locales disponibles, X no podra iniciar,

Actualizar sistemas de escritorio para usar un servidor de fuentes X

Mientras hay un poco de trabajo implicado en configurar su servidor de fuentes X y ascgurarse de que ofrece todas las fucntes que sus clicntes necesiten, modificar un sistema de escritorio para que usc un servidor de fuentes X remote es facil.

Como se menciono anteriormente, muchas distribuciones moder nas de escritorio Linux ya usan un servidor de fuentcs local (es dccir, un scrvidor de fuentes quc csta ejecutandose en la misrna rnaquina que el servidor X) para cntrcgar fuentes, Modificar cstos sistemas para que usen un servidor de Fuentes remoto es extrernadamente facil.

La dave sobrc donde consigue sus fuentes SLl servidor Xes la scccion Files de su fichero de configuraci6n. Como se afirrno anteriorrnente, si Ia scccion Files conticne una declaracion suclta no comentada como la siguicnte, esc sistema csta usandose a sf misrno como servidor de Fuentes locales:

FontPath

"unix/:7100"

Para rnodificar estc sistema para que usc cl scrvidor de fucntes remoto, cambie est a linea pOl' algo como 10 siguicnte:

FontPath

"tcp/fontserverl.vonhagen.org:7100"

Deberta cntonces reiniciar cl scrvidor X en su sistema de escritorio para asegurar que punk contactar el servidor de fueritcs y tomar las fuentes que nccesite. Si el sistema no puede contactar con el scrvidor de fuentcs, el inicio de X

3. Servicios de sistema

157

faIlara, y deberfa seguir uno de los consejos de Ia seccion de resolucion de problemas de este truco.E.n otro caso, iha terminado!

A pesar de que soy un fan de centralizar recursos X tales como fuentes, para hacer la vida de todos mas facil, uso un fichero de configuracion para el servidor X, un tanto paranoico. que proporciona algrm plan alterriativo en caso de que el SCI' vidor de fuentcs 0 Ia red se vengan abajo. POI' ejemplo, las entradas FontPath en los ficheros xorg . conf para las maquinas en la red mi oficina son:

FontPath FontPath FontPath FontPath FontPath

"tcp/fontserverl.vonhagen.org:7100" "tcp/fontserver2.vonhagen.org:7100" "/usr/X1.1R6/lib/Xll/fonts/75dpi:unscaled" "/usr/Xl1R6/1ib/X11/fonts/misc:unscaled" "/usr/XllR6/1ib/Xl1/fonts/localn

Esto les dice a mis scrvidores X que intentcn dos servidores de fucntes locales prirnero y tornen como plan alternativouna coleccion rninimizada de fucntcs locales, si los servidores de fuentes no f'uncionan pOl' cualquier motivo, Los servidores de fucntcs son simplemente entradas CNAME en mi servidor DNS, asf que puedo moverlos facilmente a diferentes equipos, seg(m mi entorno informatico va evolucionando.

Las cntradas de plan alternative cubren esos cases poco frecuentcs en los que simplernente quiero arrancar una sola maquina.

Diagnostico y solucion de problemas

Si un ser-vidor X no puede coritactar con su servidor de fucntes y es el unico recurso de fuentes, y ademas no ha proporcionado ninguna otra fuente local como alternative, el scrvidor X no podra arrancar, y finalizara con un mensaje sobre no ser capaz de coritactar con cl scrvidor de fuentes. Afortunadamcnte, tanto Linux como el sistema X Winduw incluyen algunos utiles cornandos para posihilitarle el diagnosticar el problema.

Primero, en el servidor; asegllrese de que el dernonio del servidor de Fuentes esta realmcnte ejecutandose, usando cl comando p s , como en el siguiente cjernplo:

$ ps -a£ I grep xis

root 1384] 31053 0 04:39 pts/13

wvh 13848 31053 0 04:39 pts/13

00:00:00 xfs 00:00:00 grep ~i xfs

Despucs, compr uebe que puede contactar con d con exito, sacando una lista de las Fuentes que proporciona. Puede hacer esto usando el cornando fslsfonts como en el siguientc ejernplo:

$ fslsfonts ~server

fontserverI:7100

158

l.inux Server. Los mejores trucos

Esto mostrara una larga lista de fuentcs disponiblcs. Si no 10 haec, asegurese de que d servidor de fuentcs csta rcalmente escuchando en cl puerto correcto, usando un comando como cl siguiente:

$ netstat

tep 0

tep 0

-an I g:rep 7100

o 0.0.0.0:7100 0:::7100

LISTEN LISTEN

862009 /tmp/.font-unix/

0.0.0.0:*

unix 2

ACC I

STREAt1

LISTENING

[s7100

Si no ve esta informacion. y no puede contactar con cl servidor de fucntes X usando fslsfonts, ascgurese de que ha comcntado la entrada no-listen = tep en el fichero de configuraci6n de fuent es de su servidor,

Si vemensajes como los siguientes cuando inicie su servidor de fuentes, algunos de los directorios espccificados en su fichero de configuracion 0 no existen 0 no contienen Fuentes validas:

xfs notice: ignoring font path element /usr/XI1R6/1ib/X11/fonts/Speecl.o (unreadable)

x f s notice: ignoring font path element /usr/XU.R6/1ib/Xll/fonts/CID (unreadable)

x f s notice: ignoring font path element /usr / X1:LR6 /li.b/XII/ fonts /local (unreada.ble)

Estos mensajes no son fatales, pero deberfa limpiar el fichcro de configuracion de su servidor de fuentcs para que ningun otro administrador se confunda pensaudo que estes directorios deblan contener tuentes que se han perdido de aiguna manna. Finalmente. revise dos veccs que bene los valores cor-rectos en el fichero de inicio de S11 servidor de Iuentcs X. Puede usar el plantcamiento de plan alternativo propucsto en la seccion anterior para iniciar el servidor de fuentes usando una pequefia coleccion de fucntes locales hasta que resuclva sus problemas de conectividad. Mientras trabaja en ellos, puede usar los comandos fslsfonts y xset fp (establece la ruta de las Fuentes para el sistema X Window) para, rcspectivamente, probar In conectividad con el servidor y afiadirlo a Sll sesion X actual, con el fin de hacer un analisis. EI comando xset fp le perrnite afiadir un servidor de fuentes a Ia lista de origencs de fuentes en los que buscan las aplicaciones X (conocida (01110 ruta de Puentes), usando un comando como el siguicnte:

$ xset +fp tcp/fontserverl:7100

Pucde neccsitar hacer que cl servidor X pruebe otra vez los origenes de sus fuentes usando cl comandoxset fp rehash. Mientras prueba, puede adernas eliminar elementos de su ruta de fuentes X usando un comando como cl siguiente:

$ xset -fp tcp/fontserverl:7100

3. Servicios de sistema

159

Puede determiner Ia configuracion actual de su [uta de Fuentes X (junto con otras configuraciones) ejecutando el cornando xset -q, que proporciona un surtido de informacion sobre el entorno X Window que esta ejecutando.

Resumen

El sistema X Window es algo magnifico para los usuarios de Liriux y Unix, prw el mirnero de fucntes disponibles (0 requeridas) puede aumentar rapidsmente, especialmen te en entor nos internacionalizados (ll 8N). Algunas aplicaclones X Window, tales como Wolfram Research's Mathematics. toman vcntaia, ademas, de varias Fuentes hechas a medida para mostrar los resultados 10 mas vistosos posible.

(La documentaci6n de Wolfram incluso identified un servidor de Fuentes que dins exportan en internet para estc proposito.)

Centralizer recursos tales como las Fuentes que SOIl usadas por muchas de las maquinas en su entorno inforrnatico puedc ahorrar espacio de disco local y, mas importantc, proporcionar una (mica ubicacion donde pueda instalar facilmcntc Fuentes a medida que multiples usuaries puedan nccesitar. Tenga cuidado, sin embargo, los recursos ccntrales simplifican Ia administracion, pero puedcn proporcionar adernas puntos unicos de fallo, a rnenos que disefie su rnstalacion correctamente.

EI espacio de disco requerido para instalar Ia mavoria de las Fuentes localmcnte no es una buena idea (0 gasto) hoy en dfa. Sin embargo, ccntralizar fucntcs a mcdida siempre 10 es. lnstalar fuentes a medida de manna local no es realmente un problema hasta que actualice 0 reernplace Ia maquina en In que habitan: (;'11 este punto podria olvidar que Ia maquina tenia dichas Fuentes instaladas. lM(jor curarse en salud: Un servidor de Fuentes X cs una sencilla vacuna para este tipo de problema.

Crear un servidor de impresion CUPS

Deje que las impresoras 5e den a conocer elias mismas y cree un flexible y moderno entorno de impresion configurando curs.

Las impresoras de hoy en dia son tfpicamente impresoras laser de alta calidad o de inyeccion de tinta, a veces capaees de imprimir a color y a calidad cercaria a Ia fotografica El sistema de impresion original de Unix conocido como Ipd (Liner Printer Daemon, Demonio de Impresora de Linea) fue disefiado para ponn en cola e irnprirnir trabajos que Sf ternan previstos para enorrnes irnpresoras de s610 texto. Seg{m se fueron desarrollando impresoras mas sofisticadas que eran capa~

160

l.inux Server. Los rnejores truces

ces de impresiones de mayor calidad (como las Impresoras laser originalcs Canon x9700, Canon-Cx, e Imagen<300L el sistema de impresion Ipd original Sf segula usando, pcro rcqucria qtw los trabajos que cstuviera imprirniendo fueran preprocesados de tal manera que contuvieran los comandos espcciales que la imprcsora usaba internamente para producir impresiones de mayor calidad. Esto sc volvio tcdioso rapidamente, porguc significabs que los usuarios ternan que conocer en que impresoras qucrian imprimir, y requeria cl uso de cornandos de preforrnato apropiados, Finalmentc, el sistema Ipd fue actualizado y se desarroEo un sistema de impresion similar conocido como Ip. Lp cncapsulaba e1 coriocimiento sobre los formatos requeridos por impresoras especificadas, implementando los comandos de pre-formate necesarios en filtros (tambien conocidos como controladores de impresora) que formatcaban los fichcros automaticamcnte. segem era requerido por las impresoras objetivo.

La evolucion de multiples sistemas de impresion para sistemas Unix no fue sin obstaculos: Ilevaba a incornpatibilidades entre los diferentes sistemas de impresion, requerfa cl rccompilar los filtros de imprcsoras especfficas para multiplcs sistemas Unix (en caso de que pudiera conscguir el c6digo fucntc), etc. Finalmcnte, una compafiia conocida como Easy Software Products comenzo a dcsarrollar un sistema de impresion mas gcneralizado para Unix, Linux y otros sistemas como Unix, llamado CUPS (Common Unix Printing Sy.stem, Sistema de Irnpresion Unix Comun). La version original de CUPS usaba el protocolo estandar en red LDI~ pero pronto cambio a usar un nuevo estandar, el IPP (Internet Printing Protocol, Protocolo de lmpresion de Internet), que los sistemas no-Unix/Linux tales como Windows podfan usar para imprimir en impresoras CUPS.

Easy Software Products tuvo adcmas Ia prevision de hacer el c6digo fuente de ClJPS disponible gratuitamentc bajo 1.'1 Iicencia GPL, de tal manna que podria ser cornpilado para multiples sistemas operatives y, por tanto, convertirse en un verdadero estandar multi-sistema popularizado por tropecicntos usuaries yadministradoresv Esta cstrategia ha funcionado, hoy en dia, CUPS cs usado en todas las distribuciones principales de Linux y en Ia mayorfa de los otros sistemas tipo Unix. Casi todos los sistemas Linux proporcionan su propia herrarnicnta administrativa para Ia configuracion del sistema de impresion y de la irnprcsora:

SUSE proporcioria YaS'I'; las distrfbucioncs Red Hat y Fedora Core usan p r i nt oon f=qu i : etc. La configuracion dcirnpresora, por tanto, serta todavia una pesadilla administrativa de no ser pDr el heche de que el demonio de impreskin CUPS proporciona una herramienta de administracion intcgrada, qUt~ es accedida facilmente por medio de cualquier navcgador Web via cl puerto 631. Esto proporciona un interfaz estandar para la configuracion de CUPS (si bien todavia es bienvenido a usar las herramicntas administrativas de configuracion de impresoras de su distribucion Linux, si insistc). Este truce se centra en la interfaz CUPS cstandar y la configuracion basada en Web.

3. Servicios de sistema

ltd

Definir una nueva impresora en CUPS

Para definir una nueva impresora en cualquier sistema Linux usando la interfaz administrativa de CUPS, debe asegurarse primero de que el demonic CUPS, cupsd, esta ejecutandose en su sistema.

Pucde hacer esto usando el comando ps, Como se rnuestra en cl siguiente ejemplo:

$ ps alxww I grep cupsd 5 4 6923 .1 16 o 1000 13304 31053 17

o 24540 1452 ~ Ss ? 0:00 /uer/sbin/cupsd o 536 112 ~ R+ pte/13 0:00 grep ~i cupsd

Si no se muestra en el listado de proccsos, puede iniciarlo como s{lper-usuario o via sudo, como en el siguicnte ejemplo:

# /etc/init.d/cups start

Deberia ver un mensaie de OK, una vez que el sistema arranca el demonio CUPS. A coritinuacion, abra su navegador Web favorito y conectese a la direcci6n de red http://127.0.0.1 :631.

EI curioso numero de puerto viene de sus rafccs como servidor de impresion IPP (el puerto pOl' defccto para IPP es el 631). La pantalla que sc ve en la figura 3.1 10 mostrara.

Figura 3.1. El interfaz administrativo, basado en Web, de cups.

162

Linux Server. Los mejores trucos

Cuando vea csta pantalla, haga clic en el enlace Do Administration Tasks. Se mostrara un cuadro de dialogo de autenticacion en d que debe introducir el nombre y la contrasefia de un usuario que estc autorizado a realizar la configuracion de impresoras en su sistema.

Los usuaries que puedan administrar imprcsoras y el subsisterna de impresion difieren segun las multiples distribucioines de Linux. En sistemas Linux SUSE, debe afiadir usuaries autorizados a] fichero de autenticacion CUPS, usando d cornando Ippasswd (por eiemplo. Ippasswd -a wvh afiadira el usuario wvh y Ie preguntara dos veres por la contruseria para administracion de irnprcsoras de esc usuario). En Red Flat, Fedora Core, y otras muchas distribucioncs Linux, puede simplcrncnte introducir d nombre de usuario y la contrasefia del super-usuario.

Una vez que ha introducido COIl exito el nombre de un usuario autorizado y su contrascfia, Sf mostrara Ia pantalla que se ve en la figura 3.2.

Figura 3.2. La pant alla principal de administracion de Cl.H'S.

Haga die en Add Printer para ver la pantalla rnostrada en la figura 3.3, donde puede ernpezar a configurar su impresora. (Pucdc adem as conseguir esta pantalla seleccionando el icono Printers en cualquier encabezado de pagina CUPS, y haciendo clic en el boton Add Printer, pcro creo que csta es una accion administrativa y, pm tanto, llego ahf dcsde la pagina Admin.) Este truco se centra en configurar una impresora local (concctada ffsicamentc).

3. Servicios de sistema

163

Figura 3.3. La pantalla inicial de definicion de impresora.

Ponga un nornbre facil de memorizar para la impresora en el campo Name (Ia rnayoria de las veces sin espacios). Tedec un resumen de la ubicacion de la misrna en el campo Location, e introduzca una corta dcscripcion de Ia impresora en el campo Description. Los dos ultimos son cadenas de texto, pern poner valores con scntido en estos campos le ayudara a recorder que impresora es cual y si su scrvidor de impresion soporta multiples irnpresoras. Haga clic en Continue y aparecera la pantalla de la figura 3.4.

Figus-a 3.4. Seleccionar como csta conectada su impresora.

164

l.inux Server. Los mejores trucos

5elcceione el dispositive al que esta conectada su impresora desde In lista desplcgable mostrada en la figura 3.4. Como puedc observ~r, algunas distribucion~s Linux auto-identifican las impresoras concctadas a vanos puertos cuando realizan deteccion de hardware (csta pantalla de ejcmplo fue capturada en un sistema Linux SUSE). Tras seleccionar la interfaz a Ia que su imprcsora esta conectada, haga die en Continue. Se mostrara la pantalla de 1.'1 figura 3.5.

Figura 3.5. Selcccionar el fabricantc de su impresora.

Seleccione el fabricante de su imprcsora de In lista dcsplegable de Ia figura 3.5. 5i el fabricante de su irnpresora no esta listado explfcitarncnte, su impresora probablemente emula una impresora de otro fabricante. (Impresoras que emulan varies modclos de Hewlett-Packard son bastantc comunes. Cualquier impresora que soporte el1enguaje de control de impresoras PCL-HI; puede ernular algunos tipos de irnpresoras HP.)

Haga clic en Continue para proceder; Una pantalla como 1.'1 mostrada en Ia figura 3.6 aparecera. listando todas las imprcsoras disponibles de~ fabrie~nte seleccionado. Seleccione su impresora (o una equivalentc) de esta lista. Es unportante que selcccione exactarncnte su impresora siempre que sea posible, para aprovecharse mejor de las capacidades de Ia impresora, Haga die en Conti~ue para avanzar, vera una pantalla de resumen contandolc que Ia imprcsora 11a sido configurada, 10 que incluve crear las colas de impresion adecuadas y las entradas de configuracion que son usadas internamente por CUPS.

3. Servicios de sistema

165

Figura 3.6. Seleccionar un controlador de impresora espedfico.

Notara que muchos controladorcs de impresora proporcionan dos opcioncs de impresion: gimp-print y foomatic. gimp-prinr es un modulo adicional para el paquete de grAficos del programa de manipulaci6n de imageries de GNU (GIMp, GNU Image Manipulation Program) que incluye bastantcs controladores de impresora a medida, mientras que foomatic es una interfaz conducida por una base de datos para otro jucgo de cont'Toladores de imprcsion. Ccneralmente selecciono cl que cstI' marcado como Recommended. Si no hay ninguno recomendado, 10 mejor es ernpezar con los controladores gimp .... print, porque gimp-print puede adernas acccder alos conlroladores foornntic, pero foomatic no pucde acccder a los controladores gimp-print. La mayorfa de las distribuciones de Linux preinstalan estes paquetes cuando instala CUPS, pero puede tener que instalarlos por separado en distribuciones euyo fin es minimizar el uso de disco.

Probar la impresion CUPS

Una vez que ha configura do una nueva impresora, 10 primero que querra haccr es probar a irnprimir can ella, no s610 para asegurarse de que esta correctarnente configurada en terminos de puertos y controladores, sino ademas para c~mprobar el nivel ~le calidad par defecto de Ia impresora. Para hacer esto. haga clic en la entrada Printers en el encabezado de cualquier pagina Web administrativa de CUPS. Se vera una pantalla como la mostrada en lao Figura 3.7.

166

Linux Server. Los mejores trucos

Figura 3.7. Informacion resumida sobre su impresora.

Haga dic en el botonPrmt lest Page. Deberia ver como la luz de actividad de su impresora se encicnde, y comienza a imprimir una pagina de prueba CUPS. Si la luz de actividad no se enciende, hag a die en la entrada Jobs en 1a pagina Web, para ver una pagina rnostrando cl estado del trabajo de prueba de impresion. Si esta pagina rnuestra que el trabajo ha sido completado, su impresora no esta configurada correctamente.

Los problemas mas comunes son que la impresora no esta concctada al puerto que ha selcccionado en la figura 3.4, 0 que ha seleccionado un controlador de impresora crroneo. Puede revisar u modificar Sll configuracion actual haciendo die en el boton Modify Printer en Ia pagina Printers, el cual Ie guiara traves de los pasos descritos en In seccion previa usando su configuracion actual como valores pOI' defccto.

Afinar la configuracion de la impresora en CU PS

Despues de que ha configurado can exito una impresora, c imprcso una pagtna de prueba, puede querer afinar las habilidades de impresion de su impresora. Para hacer est 0, haga die en la entrada Printers en cl encabczado de cualquier pagina administrativa de CUPS, y hag a die en el boron Configure. Vera una pantalla como la mostrada en la figura 3.8. Los contenidos de esta pagina depen-

3. Servicios de sistema

167

dcran en las habilidacles de su irn . '1

'per') le " '. itira h '. . pres.(.)ra y ( e1, controlador que ,ha seleccionado

, pu Illl Iran acer COS'iS c ' fl' ,

Adjustment) .'1>" . .. cr, omo~, mar a configuracion de color (en Ia seccion

." • r se eccronar una resolucion de impresi6n mas elevada (usando la 0

CIon Printout Mode de Ia seccion General) ,t > p-

, e c.

Figura 3.8. La pantalla de configuraci6n de una irnpresora especifica.

Activar impresiol1 remota en el servidor CUPS

Pll:~I:~~::(_~~e.~dO d~,~mo este p:c-configllrado CUPS en su distribucion de Linux

" • -r: " I >~r and l~ sus equipos remotos (0 toda la red) a la lista de ubicacio-

ncs aceptables en el fIchero de configuracion del demonio CUPS I t I Icupsd. conf. . ., e c cups

c > ~L~lis~a dde Ublicc~CiOlV:'S validas para trabajos de irnpresi6n entrantes se alma-

ena ell ro c e parrafo <Location /> </Loc t' ", . . c

sistemas es similar a lo/siguicnte: . . , . a r.ori». Ell la mayorfa de los

<Location />

Order DenY,Allow Deny From All

Allow From 127.0.0.1

</Location>

168

Linux Server. los mejores trucos

f . , . He imI)rimir al servidor CUPS

Esta entrada del fichero de can I.gura. cion perm. . l' d. tal c. >

• c " r I' )'. . biar 1a entrac a e d mdl1C-

desde el equipo en el ~ue esta qect~tlanl ( ~sle. I ~~:~la~primir afiada una linea al

ra que todos los eqUlpoS en la rec oca puc .. '

parrafo; ahora se ve como esto:

<Location />

Order Deny,Allow Deny From All

Allow From 127.0.0.1 Allow From 192.168.6.*

</Location>

Esta estrofa permite ahora imprimir desde el cquipo local y desde todas las impresoras de la subrcd especificada (en este case. 192.168.6).

Diagnostico y solucion de problemas de impresion con CUPS

. . ...., CUPS mantienen tres ficheros de bitacora (alma-

Los servldores de impresion v.cu> i . . l·· . f .na

cenados en cl directorio /var/log/cuPs) que proporclOnan a guna In on cr-'

cion sobre intentos de uso 0 de acceso a ellos: . r .. ~ 55 log: Registra los intentos de acceso al servid(~r dei~~reslOn C~PS. ~~~~e s~'util endeterminar par que los trabajos de ImprcslOn son rccha-

zados 0 deseartados.

. Loc: Registra todos los errores encontrados 0 producid(~s pOI' el

e err~r_ 019.:... . .:' r ("IPS Puede ser igualmente ufil en determmar por

servldor C e nnprcsron L. . .

que los trabajos elf impresion scm rechazados 0 deseartados. .

a e 10 . Guarda registro de cada pagina impresa ~)or u.na Iml?:esora ~sl!cifica~'incluyel1dO el equipo desde d rual d trabajo ele nnpreSlOl1 fue recibido, cl nombre de la impresora nsada, etc.

" , 1 yerror log son los mas utiles para fines

De estos 105 ticheros acce55_ og -. .. .".

le diag~16stico Examinar el final de estos fichcros despucs de. intentar Im.~rl1~~1 oe c .. '. .,' Ii l' rrrnalmcnte muestra mensajes de error slgm Jpero no reCILIr mnguna sa u, a He . ·1'" I f h ros MIMF Y esta intentando

. Po .. »Io si olvido actua izar os ic e o: "'

catrvos. or eJun! o, . ," J':I W· d s podria ver rnensaies como los

imprirnir en una impresora CUPS (eSC e in ow t

siguientes:

t 'Db attrs: job #0 doesn't exist'

E (os/sep!2005:17:S5:49 -0400J ge ~J _. .. '. v- a t, 'a lication/

9 -0400] print~job: Unsupported fo_rna PP

E [05!sep/2005:l7:55:4

octet-str'eam'! .' i n rules

_ 55 49 -04001 Hin>-' Do yOU have the raw flle prlntl g .

I [OS/Sep/200:o:17:: '. ~'. enabled?

No es demucha mas aynda que csto en terminos de identificar un problema 0 sugerir una solucion.

3. Servicios de sistema

169

Resumen

CUPS proporciona un sistema central para imprimir en impresoras modernas en Linux y muchos otros sistemas operatives.

Su combinacion de soporte de estandares, consistencia entre plataforrnas y una interfaz administrativa cornun basada en Web le haec ser un paquete bastantc potente y utilizable. Como vercrnos en los pr6ximos truces, es facil configurar la imprcsion en servidores CUPS desde sistemas Linux, Windows y Macintosh remotes.

El fichero page .I og punk ser util para diagn6stico de coste. Un gran

numero de aplicacioncs de codigo abierto estan disponibles para analizar sintacticamente y resumir la informacion de este fichero. ayudandole a hacerse a Ia idea de sus costes de impresion. Aplicaciones utiles que hacen este tipo de cosas son Print.Analyze y phpPrint Analyzer, las dos disponib!cs en la pagina Web de CUPS en http://www.cups.org/links .php. Otro script util en Ia misrna Iinea es cartridgeusagc.pl, un script en Perl que requiere que mantenga un Iichcro de bitacora separado para cada nuevo cartucho, pero que haec un gran trabajo identificando el numero de p6ginas que cada cartucho imprimira. Estc script esta disponible en hi tp://www.ime.lIsp.br / - frjerraz/ en/ ca rtus age. htn; l.

Configurar conexiones Linux a impresoras remotas CU PS

Configure conexiones rapidamente con imprcsoras rernotas usando la interfaz Web de CUPS.

Estaria bien que cada usuario tuviera su propia imprcsora, asi podriarnos evitar los inherentes cuellos de botella causados cuando algun desconsiderado imprime un manual de den paginas 0 un bucn pufiado de fotos de sus vacaciones en alta resolucion en una de las impresoras centrales de nuestra escuela 0 compafifa.

Desafortunadamcnte, los costes de compra y mantenimiento de impresoras de alta capacidad pueden SCI' bastantc altos, asf que la mayorfa de las escuelas y los negocios concentran sus rccursos en una 0 dos buenas, y confrguran todos sus sistemas de escritorio para enviar trabajos de impresion a esas impresoras. POI' fortuna, Ia interfaz adrninistrativa Web proporcionada pOI' CUPS haec muy simple el configurar y probar conexiones a impresoras rernotas CUPS en sistemas Linux, He aqui como.

170

Unux Server, Los mejores truces

Definir una impresora remota en curs

E1 procedimiento basico para, dcfinir.la im~r,csora r~mo~a es cas~ i~kn~ie~ ~ll procedimicnto para crcar el servidor de ImpreslO.n CUPS" asi que n? l,nsnllarc su intdigencia duplicando imageries de pantallas e mstruc{:lOnes aqm. En su lll~a~, simplerncnte me cent rare en las dos pantallas que son diferentes, y que eI_l rcalidad importan: la pantalla Device, donde especifica. ~6mo conecta~se a la impresora; y una nueva pantaUa Device URL, donde eS~JCclfl.C~ el Ul~L ([lmversal Hesol1rc~ LocatOl~ Localizador Universal de Recursos) que identifica la impresora remot~ de forma (mica. Despues de autenticar y cornenzar cl proc~so de ag~egar una rmpresora, necesitara cspecificar cl protocolo cOl~ el que su sistema chen~c se comunicara con la impresora remota. Esto sc realiza en la pant alla Device que nos

aparece en la figura :3.9.

Figura 3.9. Especificar IPP como S1.1 protoco\o de impresi6n remota.

En vez de seleccionar una conexion ftsica, normalmente seleccionara el IFP (Internet Printing Protocol, Protocolo de Impresi6n de Inte.rnet). IPP.es un pr~)tocolo moderno para comunicarse con impresoras dcsde diferentes tipos de sistemas operativos, yes por tanto Ia opcion adecuada en la ma;:oria de los. entorn~~ mixtos modernos. Una vez que ha seleccionado IPp, haga clic en ContuH1C para avanzar a otra pantalla Device, como se ve en la figura 3.10. Esta pantalla le

3. Servidos de sisterna

171

permitI.' especificar la URL de la impresora remota, de tal manera que el sistema local sabr d6nde encontrar la impresora cor recta.

Figura 3.10. Espccificar cl URL para su impresora remota.

Como muestra Ia figura 3.10, el URL de Ia impresora remota CUPS es de Ia forma ipp:/ Idireeci6n-o-nombrc/printers/nomhre-de-impresora, donde dirccciono-nombre es la direccion IP 0 el nornbre del equipo con cl que la impresora esta ftsicamente conectada, y nornbre-de-imprcsora es el nombre de esa irnpresora en el equipo remote. E1 URL mostrado en csta figura refleja el servidor de imprcsion definido anteriormente, que Sf llama epson-color200, y esta eiecutandose en el equipo 192.163.6.64. Una vez que ha espccificado al URL para la impresora remota, proccda por el resto de las pantallas de configuracion de la impresora como sc via anteriorrnente. Probablemente querra adernas imprimir una pagina de prueba, para asegurar que puede concctarse a la imprcsora remota y verificar que ha seleccionado d controlador de impresora correcto.

Resumen

Configurar el acceso a impresoras dcsde cualquier sistema Linux a una impresora CUPS remota es bastante facil, como puede ver con el simple caso explicado

172

Linux Server. Los mejores trucos

en cste truco. Si necesita restringir acceso a esta impresora, puede modificar rnanualmente el fichero de configuracion CUPS (! etc / cups / cupsd. conf) en cl servidor de impresi6n.

Usar CUPS como mccanismo de puesta en cola c impresion para su escuela 0 empresa es la solucion perfecta, le da una potente y consistente utilidad de impresion con una consistente interfaz administrativa, que es independicnte de las diferentes distribuciones Linux, gracias a estar orientada a Web.

lntegrar la impresion en Windows con CUPS

cUPS no es solo una fantastica solucion para la impresion en Linux y Unix, puede ademas manejar facilmente las necesidades de impresion de su Windows.

Como todos sabemos, es importante ser capaz de jugar bien con los sistemas Windows en los cntornos acadcmicos y de negocios de hoy en db. Esto puede ser filosoficamente poco atractivo para muchos de nosotros, pero es una rcalidad. Mientras la impresi6n desd« sistemas Windows en servidores de impresion Linux es a menudo hecha usando Samba (por medic de los protocolos estandar de red 5MB/CIFS), listed podria no querer configurar Samba en cada maquina de escritorio de Ia que ustcd es responsable.

Afortunadamentc, Ia busqueda de estandares propictarios de Microsoft no ha eliminado su soporte de impresion remota usando otros protocolos estandar, como HTTp, que CUPS es feliz de admitir, Este truce explica como configurar sistemas Windows para imprimir en servidores de impresion CUPS remotes usando el protocolo estandar HTTP.

Configurar 101 impresion desde sistemas Windows 2000jXP

Es rcalmente bastante facil configurar un sistema Windows 2000 0 Windows XP para imprimir en una imprcsora CUPS remota.

Primero selcccione el icono estandar Agregar Impresora de Ia carpeta Impresoras en el Pane! de Control.

Especifiquc que quicre crear una imp res ora remota, e introduzca un URL con Ia siguiente forma: http://nombre~o~direcci6n:631Jprinters/nombre~de-impresora (como sc ve en la figura 3.11, que muestra el cuadro de dialogo de configuracion de imprcsoras de Windows 2000).

Continuando con el ejemplo usado en los anteriorcs trucos relacionados con CUPS de estc libro, he introducido el URL http://192.168.6.245:631/priniers /epson-color200. La figura 3.12 muestra el cuadro de dialogo cquivalente bajo Windows xr

3. Servicios de sistema

173

Ilbique SIJ ~rnptesolo

LeOma dG:s.8~ ubiear ~I~ impre,;ori"l?

Figura 3.11. Espccificar U~la URL en el c_uadro de dialogo Asistentc para agregar lmpresoras Wmdows 2000.

Espet;ifiQue una hnpresora

~~~~j::~d:~! ~lQmbrEl 0 1,:, dseccion de le IrJ:'ft1tBc;ora, puede bus-car 1.lna ~rltpfc:sola (:I\;8 se .::.ju:3:te 3 +U~

Figura 3.12. Especificar un URL en el cuadro de dii:llogoAsistente para agreoar

U11presoras de Windows XP. C '"

i Ha?a clicen Siguiente para proceder con la configuracion de In concxion de la rnpresora remota. ~uesto que Sf esta conectando a una impresora remota podrfa

ver un c.uadr,o de clialog.o como el mostrado en la fl' g"11r "I 3 '13 Est r d :1

:f .' I ' '< ' ~,".,. e c ua 1'0 (e

[ ia ogo dernuestra que el sistema Windows es capaz de contactar el servidor de

174

Linux Server. Los mejores truces

imprcsion rcmoto, ya que cl rnensaje de advertcncia rnucstra el nombre del controlador de impresion como conocido por el servidor de impresion. Para satisfacer a Windows, puede bien elcgir un controlador de imprcsion instalado en el cuadro de dialogo posterior 0 localizar e] controlador de impresion en IaWeb 0 en el CD incluido con la compra de su irnpresora.

Figura 3,13. Cuadra de clialogo Concctar a impresora de Windows 2000

Algunas combinaciones de sistemasWindows y versiones de CUPS requiercn que especifique un nornbre de cquipo en vcz de una dirrccion IP en un URL de irnpresora. Si su servidor de imprcsion rerncto ticne una direccion IP fija. la manera mas faeil de hacer esto cs crear una entrada en cl fichcro hosts de Windows XP, que cstablecc una correspondencia entre dirccciones IF y nornbres de sistema. Este es cl fichero c . \1tJINNT\system32\drivers\etc\hosts en sistemas Windows 2000 y cl fichcro c . \WINDOWS\system32\drivers \etc\hosts en sistemas Windows XT~ Por cjemplo. afiadir una entrada como 192.168.6,245 printserv a este fichero me per mit irta especificar el URL http://printserv:631/printers!epson-color200 para la impresora remota.

Configuracion del servidor para impresion HTTP

Una vez que ha finalizado de configurar Ia imprcsora en el sistema Windows, necesitara hacer unas cuantas modificaciones en los ficheros de configuracion de la imprcsora CUPS en su scrvidor de irnpresion. Puesto que los ficheros que imprime cstan siendo pre-forrnateados en su sistema Windows, Y usted esta usando cl protocolo HTTp, necesitara configurar el servidor CUPS en el sistema LiIlUX al que la impresora esta conectada. Necesitara rnodificar dos ficheros de configuracion para decide al servidor CUPS como manejar ficheros de datos crudes recibides via HTTP, configurandololo para cnviar dichos ficheros directamente a la cola de irnpresion especificada sin formateo local.

Primero, edite el fichero I etc I cups Imime. types, que define los fonnatos MIME (Multipurpose Internet Mail Extensions, Extcnsiones de Corrco de Internet Multiproposito) validos que estan soportados por el servidor CUPS. MIME define un juego de formatos que uno podrta cncontrar en Internet (como puede ser en

3. Servicios de sistema

175

un navcgador Web o en comunicacio .' InT'

utili zan MIME deberfan mantJ'a;los pl~es ··t.P) v de.fme c6~no las aplicaciones que

/ . ." ara ac Ivar 1 '1 nnl)1'C5101 c. U'l''-TI I' ,

sfrnbolo almohadilla (#) al inicio (1) 1": ,L ',I via 1,. 1<, e imme cl

t a slgulcnte ltnea:

#application/octet-stream

Sin el caracter de cornentano precede te ( I " .

dice al servidor de impresio 1·1 CUp· S >.111 ef1e, signo a .. lmohadllla)' esta entrada le

, qUt os ujos de d tos d

de entrada accptablc. e a os eru os son un formate

A continuacion, editc el fichero i t / '

i' e c cups Imlmeconvs ouc I f I '

pos c e conversrom-s que cl servidor CUPS del >,'. . .. , >" 1, {' (,e me os tl~

entrada MIME Para act' " . ." . oerra realizar en varios fonnatos de

. " .. .'. c c Welr ImpreslOn via HTTP eli' 'I / b '

al inicio de la siguiente linea: ' mine e sun 010 almohadilla

#application/octet-stream

app1.ication/vnd.cups_raw 0

~l igual que con el cambio del fichero I etc I c ' '_ '.

caracter de comentario del inicio de .st 1" I ,ups /rui.me . types, ellIlunar eI

.. .. , es a mea e dice al s ,. d C·'·

los ficheros de entrada en formate . Ii tion. caa • t:TVI or UPS que maneje

. '. ... dpp lcalon/ode·t-st·r<' '1

aplicacion CUPS" 1 > . . • . . . , earn pasanc oselos a un'}

r que Slmpltmcnte los inscrta en 1 • 1. J' '/ C

gun formatco local . .. l na (0 a etc nnpreslOll sin nin..

Analisis r sohrcion de problemas en impresion W· d

con servldores CUPS III ows

La causa mas cornun de no scr C'1 az d> ' .' . ,

CUPS cs que la impresora no este confi / . e ~~pnmlr en un scrvldor de imlJrcsion de la direccion IP d" su eq.lll·l·)') S" n. Itg~lra. d para accp.tm- trabajo.s de impresion

, , . O. I fS a scgur d > '-, .

comp~'uebe los ficheros de bitacora de CLIP' 10 , e gu.e es:~ no ,f'S d p.r,oblema, rnanhenen tres fkheros d 1 ·te. S. .os servldorfs de llnpreslon CUPS

. . .. e )1 accra que pucden prop{ . .

rntormaci6n sobre los intento Ie tilizar . )fOOna1' una variedad de access_log, error 10· S (t U 1lzar 0 acceder a dichos scrvidorcs.

. ~-- g, Y page_log. De estes los fich

erro.r_log son los mas Mikspara fines de .1' : I." It eros access_log y

F..' . .' . l iagnos .ico.

"xammar el [mal de estes 1'icheros tras inter e' '" • •

sah,d~, l10rrnalmente muestra menSa ies d> > entar, ~m~r.I~m: sin recibir ninguna (~lVldo actualizar los ficheros MIMEY ~ ,: .error.slgmr:lCatJ~os: POl' ejernplo, si CUPS desde Windows, podna ver IT " Y,~~t~ mtentand~ lu:prllmr en un servidor

lcns<'\Jes como los slgmcntes;

E [05/Sep/2005: 17: 55: 49 -0400] E [05/Sep/2005:17:5S:49 -0400]

I [05/Sep/2005:17:5S:49

get .. _jo~_attrs: job #0 doesn't ex isr.: prl.nt] ob: Unsupported format 'applicati on/

octet-stream' I .

-0400J Hint· DOYO'·h

. u ave the raw file printing '·L

enabled? . ru. es

176

Linux Server. Los mejores trucos

Centralizar la irnpresion Macintosh con CUPS

Mac OS X hace las irnpresoras CUPS facilmente disponibles desde sistemas Macintosh.

Ahora que Mac OS es realmente un sistema Unix con salsa grafica, es mucho mas facil Uegar a los pilares del sistema operative cuando es nccesario: Ademas, puesto que gran parte del software que realmente impulsa Mac OS X es ahora software abierto familiar, es mas facil que nunea reapliear su conocimiento Linux/ Unix existente para trabajar con Mac OS X.

Integral' la impresi6n Mac OS X con un servidor CUPS ejecutandose en un sistema Linux remote es uno de los mejores eiemplos de esto, ya que Mac OS X real mente usa CUPS como el nucleo de su subsisterna de irnpresion.

Este truce explica e6mo usar la familiar interfaz Web de CUPS para, de una forma rap ida y sencilla, configurar sus sistemas Mac OS X para imprimir en sistemas de impresion CUPS centralizados, ejecutandose en sistemas Linux.

Si esta todavia ejecutando una version de Mac OS anterior a Mac OS X, cste truco no es para listed, a rncnos que Iarnodernice.

Configurar acceso a un servidor ell PS remote

As! como soporta CUPS, Mac OS X adcmas incluye su propia herramicnta de configuraci6n de impresoras, la Utilidad de Configuraci6n de Impresoras. Las versiones de esta utilidad incluidas con Mac OS 10.4 Y superiores pueden Iocalizar impr esoras CLIPS automaticamcnte, porque CUPS soporta el protocolo cstandar IPP (Internet Printing Protocolv. Sin embargo, por si acaso no puedc encontrar su impresora usando IPp, este truco explica los dctalles de configurar una impresora usando nuestro vieja arniga, 101 interfaz Web administrativa de CUPS. El proccdimiento discutido en esta scccion funciona bien con versiones 10.2 y posteriores de Mac OS X.

Gracias al heche de que Mac OS X usa CUPS, el procedimiento basico de definir una impresora remota en Mac OS X es casi identico al de confignrar impresion remota en sistema Linux. Es ademas, por tanto, casi identico al de crcar un servidor de impresion CUPS. Me cent rare en las dos pantallas que son diferentes y que rcalmente importan: la pantalla Device, donde especifica como conectarse ala impresora: y una nueva pantalla Device URL, donde especifica el URL (Uni~ verssl Resource Locator, Localizador Universal de Recursos) que idcntifica 121 impresora remota de forma {mica.

Despues de autenricar (usando el nornbre y Ia contr'asefia de cualquier usuario con privilegios administrativos) y comenzar el proceso de agregar una impresora, necesitara espccificar el protocolo con el que su sistema OS X se comunicara

3. Servicios de sistema

177

con la impresora remota. Esto se haec en la pantalla Device, rnostrada en la figura 3.14. En vez de seleccionar una conexion ffsica, normalmente seleccionara la entrada Internet Printing Protocol (http) para especificar que quiere usar IPP con el protocolo HTTP como su mecanismo de transporte.

Figura 3.] 4. Espccificar el protocolo para la impresion remota.

Una vez que ha seleccionado IPP sobre HTTp, haga die en Continue para avanzar a otra pantalla Device, rnostrada en 13 figura 3.15. Esta pantalla le perrnitc especificar cl URL de la impresora remota, de tal manera que el sistema local sabe doride encontrar la impresora correcta,

Como muestra la figura :3 .15, el llRL de Ia impresora CUPS remota es de Ia forma http://direcci6n-o-nombre/printers/llombre-de-impresora, donde direccion-o-nombre es la direccion IP o el nombre del equipo al que Ia imprcsora esta fisicamente conectada, y nombre-de-impresora es el nombre de csa impresora en el cquipo rernoto. £1 URL mostrado en csta figura refleja un servidor de impresion diferente al que fue usado previamente: se llama silcntwriter y esta ejecutandose en el equipo 192. ]68.6.64. Una vcz que ha especificedo 1.'1 URL para 13 impresora remota, avarice a traves del resto de las pantallas de configuraci6n de impresora, Probablernente querra ademas irnprimir una pagina de prueba para asegurarse de que punk concctarse a la impresora remota y verificar que selecCi0116 el controlador de impresion cor recto para formatear la salida a la impresora remota. Punic hacer eso despues de asegurarse de que ha modificado la configuracion de su servidor para manejar trabajos de irnpresion HTTP cor rectamente, como Sf' describe en la siguiente seccion.

178

Linux Server. Los mejores truces

Figura 3.15. Espccificar el URL de la imprcsora remota.

Si hay impresorasVVindows disponibles en S1l cntorno 0 esta ejecutando Samba en uno de sus sistemas y prefierc imprirnir usando protocolos Windows 5MB, pucde seleccionar Windows Printer via SAMBA como el protocolo de impresi6n que quicre utilizar, e introducir un URL de l a forma srnb: I /nombre-usuiuio: contrasena@equipo/printcrs Inombre-impresora. Si csta usando una version de Mac OS X anterior ,I la 10.4, dcbera vcrificar adernas que (usr!libexec!cups (backend( smb es un enlace simbolico ,I /usr /bin / smbspool y, si

no, crear esc enlace.

Configurad6n del servidor para lmpresion HTIP

Una vcz que ha finalizado de configurar Ia impresora en cl sistema Mac OS X necesitara hacer unas cuantas modificaciones a los ficheros de configurati6n de la impresora CUPS en su servidor de impresi6n. Puesto que los ficheros que usted imprime estan siendo pre-tnrmateados en su sistema OS X, Y listed esta usando el proto colo HTTp, neccsitara configurar el servidor CUPS en el sistema Li~mx al que la impresora csta conectada. Necesitara modificar dos ficheros de configuracion para decirle al servidor CUPS como maneiar los ficheros de "datos cr~ldos recibidos via HTTp, configurandolo para simplernente enviar estes ficheros directamente a la cola de impresion especificada sin forrnateo local.

.3. Servicios de sistema

179

Primero, cditc el fichero / etc / cups /mime. types, (Iue define los formatos MIME (Multipurpose Internet Mail Extensions, Extensiones de Correo de Internet Multiprop6sito) validos que estan soportados par el servidor CUPS. MIME define unjucgo de formatos que uno podrfa encontrar en Internet (como puede ser en un navegador Web 0 en comunicaciones HTfP) y define como las aplicaciones que utilizan MIME debertan rnanejarlos. Para activar Ia impresion via HTI'P, elimine el stmbolo almohadilla (#) al inicio de la siguiente linea:

41applica tionl octe t-s tream

Sin el caracter de cornentario prcccdente (el signo almohadilla), esta entrada le dice al servidor de impresion CUPS que los flujos de datos crudes son uri formato de entrada acept ablc . .A continuacion, edit e cl fichcro / etc I cups /mime. convs, que define los tipos de conversiones que el servidor CUPS deberia realizer en varies formatos de entrada MIME. Para activar impresion via HTTP, elimine el sfrnbolo almohadilla al inicio de la siguiente Iinca:

#application/octet-stream

application/vnd. cups-ra~1

o

Al igual que con el cambio de! fichero /etc/cups/mime. types, elirninar el caracter de comcntario del inicio de csta linea le dice al servidor CUPS que maneje los ficheros de entrada en Formato application/octet-stream pasandoselos a una aplicacion CUPS que simplementc los inserta en una cola de imprcsion sin ninglm formateo local

Necesitara reiniciar el servidor de impresion CUPS para asegurarsc de que lorna estes carnbios. E[ script de inicio para su servidor CUPS Sf llama cups y Sf cncucntra normalmente en / etc / ini t . d. Para reiniciar el servidor de imprcsion CUPS, ejecute cl siguiente comando (0 uno apropiado para su distribucion):

# /etc/init.d/cups restart

Probar la impresion desde Mac OS X en su servidor CUPS

En este punto, ya csta prcparado para probar un trabajo de impresion de prucba. En su navegador Web, seleccione el boton Printers en el cncabezado de la pagina CUPS. Haga die en d boton Print Test Page y verifique que una pagina de prueba se imprime corrcctamente en la impresora remota. Si 10 hace, lenhorabuena!

Si no, cornpruebe la pagina de estado de trabajos Jobs en su navcgador Web hacicndo die en Jobs en eI encabezado de la pegina CUPS. Si ha cornetido algtm error sintactico en su URL, vera un mensajc diciendo "Unable to conneci to JPP ho.st: Invalid Argument." Corriia d URL, aborte la pagina de prueba actual, y reintente la impresion de la pagina de prueba. Si no ve ningun rncnsaje de error

180

Unux Server. Los mejores trucos

pero el trabajo de impresion alega estar complete, yea Ia siguiente secci6n para algunos consejos de depuracion.

Una vcz que ha impreso con exito una pagina desde su sistema as X, se darri cuenta de que la impresora que definio usando el interfaz Web de CUPS es ademas visible ahora en la Utilidad de Configuraci6n de Impresoras. iMagial

Diagnostico y solucion de problemas con la impresion de Mac as x en servidores CUPS

La cans a mas comun de no ser capaz de imprimir en un servidor de impresion CLIPS es que la impresora no este eonfigurada para aceptar trabajos de impresion de la direccion IE

Si esta scguro de que estc no es el problema, compruebe los fichcros de bitacora de CUPS. Los servidores de irnpresion CLIPS mantienen trcs ficheros de bitacora que pucden proporcionar una variedad de informacion sobrc los intentos de utilizar 0 acceder a dichos scrvidores: access_log, error_log, y page_log. De estos, los ficheros access_log y error_log son los mas utiles para fines de diagnostico.

Examinar el final de cstos ficheros tras intentar irnprimir sin recibir ninguna salida, normalmentc muestra mcnsajes de error significativos. Por ejemplo, si olvid6 actualizar los ficheros MIME y esta intentando imprimir en un scrvidor CUPS desde Mac OS X, podria ver mensajes como los siguientes:

E [05/Sep/2005:17:55:49 -0400J E [05/Sep/2005:17:55:49 -0400J

get~job~attrs: job #0 doesn't exist! print_job: Unsupported format' applicationl

octet-stream' !

I [05/Sep/2005: 17: 55: 49 -0400J Hint: Do you have the raw file printing rules

enabled?

llIablando de mensajes utiles! Revise dos veers los cambios que hizo en los ficheros de configuracion de CUPS MIME, reinicie el demonio CUPS, e intente imprimir de nuevo.

Definir una impresora CUPS segura

E! soporte integrado para varies mecanisrnos de autenticacion facilita eI limitar acceso a impresoras especfficas con CUPS,

Los otros truces sobre CUPS en este capitulo estan enfocados a su mas que excelente interfaz Web adrninistrativa y como esta interfaz simplifica y cstandariza la configuracion de irnpresoras, independienternente del tipo de client e CUPS que este configurando. Sin embargo, como con la mayoria de los programas Unix

3. Servicios de sistema

181

/Linux, puedc tarnbien administrar el servidor CUPS rnanipulando directamcnte su fichero .de ~0~figur~ci6n, / etc/cups /cupsd. conf. Mientras esto puede parecer algo intimidatorio a primera vista, el formate de este fichero es en rcalidad bastante simple y evocaconceptualmente a un fie hero de configuracion de Apache (el cual probablcmcnte habremos tenido que modificar alguna que otra vez). Unos cuantos carnbios sencillos a este fichero pueden rapidarnente afiadir una nueva capa de seguridad a su entorno de impresion cups.

Muchos ael~inistradores de sistemas se vuelven paranoicos hoy en dia, y por una buena razon, Protcger sus sistemas existentes eliminando servicios innecesarios es simplemente intdigente. De manera parecida, podrfa haber cases en los que quisiera restringir cl acceso a ciertas impresoras. Hay rnuchas razones de s~gurid~ld y de ~oste.s para limitar el acccso a impresoras especfficas a ciertos usuanos o.Cl:rtas direcciones IP, tanto si es pOl' quien "posee'' la impresora (su mana~;er o.Je~e de de~artamento) 0 porque la irnpresora usa un toner de platino para lmp.nml~ en hojas de oro (yes, por tanto, el Iugar equivocado para que los novatos impriman sus debercs de CSI0l). He aquf como hacer esto con su editor de texto favorito (que beberta ser emacs) y unos pocos minutes de su tiempo libre.

Tendril que reiniciar el servidor CUPS despucs de hacer estos cambios al fichero de eonfiguraci6n, como Sf discute en este (0 en cualquier otro) truro. £1 script de inicio para su servidor CUPS se llama cups y se encucntra normalmente en / etc/ ini t. d. Para reiniciar cl servidor de impre.sion CUPS dcspues de guardar sus cam bios en el fichero de configuracion, ejecute el siguiente comando (0 uno apropiado para su distribucion) :

# /etc/init.d/cups restart

Activar impresion remota en un servidor CUPS

Dependiendo de c6mo CUPS esta pre-configurado en su distribucion de Linux puede neccsitar afiadir sus equipos remotos (0 toda la red) a la lista de ubicaciones accptables en el fichero de configuracion del demonic CUPS, /etc/cups / cupsd. conf.

La lista de ubicacionl's vahdas para trabajos de impresion entrantes se almac~~na dentro?el _parrafo <Location / > ... </Location>. En Ia mayorta de los SIstemas es similar a 10 siguientc:

<Location I>

Order DenY,Allow Deny From All

Allow From 127.0.0.1 </Location>

182

Linux Server. Los mejores truces

Esta entrada del fichero de configuraci6n permite irnprirnir alservidor CUPS dcsde el cquipo en el que esta ejecutandose. Muchos ficheros de configuracion de CUPS usan la macro @LOCAL para decirle a CUPS que cualquier cquipo que tenga una eonexi6n no punto a punto con el servidor de impresion punk irnprimir en la impresora.

Esto gencralmente incluye los equipos en la red local y normalrnentc se ve como 10 siguicnte:

<Location i>

Order Deny,Allow Deny From All

Allow From 127.0.0.1 Allow from @LOCAL

</Location>

Si esta tenicndo problemas irnprimiendo en una impresora especifica dcsde otros equipos de su red, compruebe cl fichero / etc i cups i cupsd. conf para asegurarse de que el parrafo Location incluye una entrada @LOCAL.

Si quicre configurar expltcitamcnte cl servidor CUPS de tal manera que s610 los equipos de una red local cspecifica puedan irnprirnir en Ia imprcsora, elimine la entrada @lLOCAL y afiada una linea para Ia subred local, de forma que cl parrafo se yea como el siguiente:

<Location I>

Order Deny,Allow Deny From All

Allow From 127.0.0.1 Allow From 192.168.6.*

</Locat.ion>

Este parrafo ahora permite la impresion desde el equipo local y des de todas la impresoras de la subrcd cspecificada (en este caso. 192.168.6), asi como al cquipo al que Ia impresora esta fisicamente coriectada.

Restringir el acceso a la impresora a direcciones IP especfficas

La manera mas directa de crcar una imprcsora segura es poner la impresora C11 una ubicacion segura y restringir fisicamente el acceso a ella. Si usted no ticne una ubicacion segura disponible. puede ademas restringir la impresion en una impresora particular, de tal manera que s610 los equipos con direcciones IP especificas puedan imprimir en ella.

Para hacer csto, simplemcnte crec una nueva cstrofa Location en i etc / cups i cupsd. conf para esa impresora, y usc la propuesta Allow/Deny introducida en Ia seccion anterior para identificar cualquier dircccion IP que quiera que sea

3. Servicios de sistema

un

capaz de irnprimir en la impresora. Por ejemplo, una estrofa Location que restringe acceso a la impresora silentwriter, de tal rnancra que s610 el equipo realmerite conedado con la impresora y el equipo con la direccion IF 192.168.6.101 puedan imprimir en. ella, serfa la siguicnte:

<Location Iprinters/silentwriter> Order DenY,Allow

Deny From All

Allow From 127.0.0.1 Allow From 192.168.6.101

</Location>

Restringir el acceso a la impresora a usuaries especfficos

Restringir d acceso a una impresora espccifica basandose en Ia direccion II' del equipo al que quicre perrnitir imprimir es util, pero esos usuarios molestos a veces tiendcn a moverse de maquina en maquina. Una altcrnativa a la restr'iccion de acceso por direccion IP es requerir autenticacion para imprimir con una impresora especifica. Pucde hacer esto usando las contrasefias de usuario estandar de Linux, pem cncucntro masutil el requerir una contrasefia separada para el aceeso a irnpresoras.

LIsaI' contrasefias estandar de Linux haec que el servidor de impresion invoque losm6dulos PAM para CUPS (definidos en /etc/paro.d/cups), que a menudo difieren entre distribuciones LinuxvAdernas. puesto que la mayoria de Ia gente que usa sistemas Linux tiene contrasefias Linux, esta propuesta no limita rcalmente el aceeso de una mancra muy significantc. EI uso de una contrasefia separada para el acceso a irnpresoras es bastante estandar en todas las distribuciones Linux que usan CUPS.

Puede dcfinir una coritrasefia de acceso a CUPS usando el eomando Lppa s swd.

Para afiadir un nuevo usuario al fichero de contrasefias de CUPS (almacenado en / etc I cups ipasswd. md S por defecto). ejccute cl siguiente comando como slIper-usuario 0 via sudo:

# lppasswd -a username

Algunas aplicaciones, tales como las aplicaciones Windows eiecutandose bajo 1PlINE, abrcn conexiones a su imprcsora por defccto cuando arrancan. Si son iniciados en segundo plano, estos program<1s parecera que se cuelgan, porque le estan preguntando por una contrasefia de

impresora en segundo plano, pero listed no esta vicndo la pregunta. Si lisa contrasefias CUPS y una aplicacion especffica pareee que se cuela, intente iniciarla en primer plano (es dccir, sin cl simbolo "&" a1 final) para ver si esta efcctivamente solicitandole informacion adicional,

CAPITULO 4

-~~---- -~~~.~------

Igun05 truces geniales Truces 29 a 45

Tras cl calrnado, sereno exterior del avezado administrador de sistemas hay un cientffico loco que vive y respira s610 pOl' SCI' el primero en descubrir el proxirna truco esotcrico que proporcionara informacion, 0 una manera de utilizarla, que era desconocida anterior mente pOl' todos menos por un reducido contingente de incansables gurlls engullidores de cafefna.

La razon de esta sed insaciablc va mas alla de alardear hacia algo mas practice de 10 que podria imaginar: eficicncia. Si hay un modo de hacer algo mejor, mas rapido, 0 de una manera que no rcquiere ninguna intervencion humana, el administrador de sistemas cstara en constantc busqueda de una forma de irnplernentar esa soluci6n.

En cste capitulo, vamos a echar un vistazo a algunas herrarnientas y tccnicas que esperamos scan nuevas para Ia mayoria de los Iectorcs. y que aumentaran enorrnemcnte su productividad. Tanto si es un acceso directo de escritorio para concctarsc a sus equipos, un modo de cjecutar comandos en multiples cquipos al mismo tiempo, 0 una manera de escribir menos comandos cn la linea de cornandos 0 rnenos caracteres en Vim, le mostraremos las herrarnientas y tccnicas que le perrnitiran cruzar la frontcra entre siervo del sistema a General Bitmaster en poco tiempo.

La destreza tecnica es fantastica, pero "ligeras habilidadcs" tales como cornunicarse con In genre 0 la rnultitarea cucntan mas y mas en el competitive mcrcado laboral de hoy en dfa.

POI' esta razon, echaremos un vistazo, ademas, al Iado mas suave de la administracion de sistemas, lcubriendo areas que abarcan dcsde la gesti6n de tiernpos a "hablar" con la direccionl

p ....

186

Linux Server. Los mejores trucos

Ejecutar comandos simultaneamente en multiples servidores

Eiecute el mismo comando a la vez en multiples sistemas, simplificando las tareas de administracion y reduciendo los problemas de administracion.

Si ticnc multiples servidores con similares o identicas configuraciones (tal como los nodos en un duster), es a mcnudo diffcil asegurarse de que los contenidos y la configuracion de dichos servidorcs es identica. Es incluso mas diftcil cuando necesita hacer modificariones de configuraci6n desde la linea de comandos, sabicndo que tcndra que ejecutar exactamentc el mismo comando en un gran numcro de sistemas (tome mcjor cafe primero). Podria intentar escribir un script que realice Ia accion automaticarnente, pero a veces escribir scripts es cxagcrado para el trabajo que sc tiene que hacer, Afortunadamente, hay otra manera de ejecutar comandos en otros sistemas de mancra simultanea.

Una gran solucion a este problema es una excelente herramicnta Hamada mul tixterm, que le permite abrir sirnultaneamcnte xterm en cualquier numero de sistemas. Escriba sus cornandos en una ventana central y tendra los cornandos ejecutados en cada una de las vcntanas xterm que ha iniciado. (Suena atractivo? Escriba una vez, ejecute muchas, suena como un nuevo jucgo de instrucciones de tubcrta. mu 1 t ixte r m estu disponible en http://expect.nist.gov/example /multixterm.man.html, y requicre expect y tk. La rnanera mas comun de ejecutar mul tixterm es con una lmea de comandos como 10.1 siguiente.

$ multixterm -xc "ssh %n" equipol equipo2

Este comando abrira conexiones ssh can cquipo l y equipo2 (figura 4.1). Cualquier cosa cscrita en el area etiquetada como stdin window (la cual es normalmente gris 0 verde, dependiendo de su esquema de color) sera cnviada a arnbas ventanas, como Sf mucstra en 10.1 figura.

Como punk ver en el cornando de rnuestra, La opcion -xc quiere decir ejccutar comando, y deber ser seguida del comando que quint: ejccutar en cada cquipo, encerrado entre cornillas. Si el eomando espccificado Incluye un comodfn como %n, cada Hombre de sistema que siga al comando sera substituido en el comando que toque cuando sea ejecutado. As! en nuestro ejemplo, los comandos ssh equipol y ssh equipo2 seran ambos ejecutados por mu l tixterm, cada uno dentro de su propia vcntana xt.e rm

Vease tambien

~ man rnultixterrn

-Lance Tost

4. Algunos trucos geniales

187

Fi zura 4: '1 M' I ' l

".,.. II tIP es xterm en una vcntana de control mllltixtenl1.

I,] Colaborar con confianza con un Wiki seguro

'\@ sa~gab del ?~g~do de codifica-, soportar, depurar, y mantener paginas de

co,a oracion ue provectos usand a, •

. ' sanno una nerramlenta que perrnita a los

usuarros crear las suvas propias.

. Si es un administrador Web ocupado intent'} d h, ", .: ,

cionen, 10 ultimo que > ,·t, " , , . ,<. n. 0 acer que los SIstemas fun-

truir y alojar otra Pi(~l~~e~~ es ~)trt(~ llisuaflo VlI1Iel.l?ok con In peticion de cons-

E ,< b e 0 rns d ar otra solucior, de gesti6n de t . J

11 su lugar, prornueva una sol .', W.k., ,c. t con eruuos.

taudose en segundos lista ' ~lclon II 1, qU.f pucde estar conflgurada y eiecuayuda por su parte.' c para que e usuario cree y edite contenidos sin mas

.L"oS Wild evoIuCI.·ono.1ron alrededor de la idea de que I

edit ido 1 L e contenidopuede ser

c por cua quiera que entre en el sitio y vea

un error 0 tenga algo que

188

Linux Server. Los mejores trucos

afiadir. Los administradorcs de Web y tambicn los de sistemas eran cautclosos sobre este concepto, que sonaba como una idea simplcrnente esperando a ser cornpletarnente abusada por remitcntes de cor-reo basura, "digivandalos". y similares. Si la ultima vez que echo un vistazo a las soluciones Wild fue cuando el concepto estaba fresco en la pagina principal de Slashdot, y las descartaban como Imposibles de gestionar o como problemas de seguridad en potencia (como yo hice), le rccornicndo encarecidarnente que eche otro vistazo.

MediaWiki es la aplicacion motriz que eiecuta http://wikipcdia.com. Puesto quevvikipedia ejecuta lavveb mas vista del rnundo y se enorgullece de ser un recurso para el pueblo y pOl' el pueblo, i.que mejor promocion necesita para una aplicacion Wiki?

Los Wiki no tienen por que scr inseguros libre-para-todos. En 101 actualidad, puede configurar MediaWiki para autenticar con su servidor LDf\P interne, rechazar completamente ediciones anonimas, y restringir enorrnemente el dafio que pucde ser hecho en su Wiki. Adicionalmente, Mcdivviki haec muy facil, tanto d guardar registro de los cam bios en las paginas, como el volver a copias anteriores de las mismas.

Entonces, (POl' que USaf Lin Wiki si 10 va a bloquear? Los Wiki son maravillosas soluciones de gesti6n de contenidos, pOl' una razon fundamental: no haccn ninguna suposicion sobre el proposito de 51.1 Web. La mayoria de las soluciones de contenido de c6digo abicrto, basadas en LAMP Sf construyen principalmente alrcdcdor del concepto de una Web de distribucion de noticias, extensiones para hacer algo mas, desde diaries en forum a repositories de archives, son afiadidas n1BS tarde, a menudo por los rniernbros de las rcspectivas comunidades ell' usuarios. Si no esta planeando ejecutar una Web de noticias, se volvera loco teniendo que encontrar algun truco para hacer que SLI Web de gcstion de coritenidos funcione de la manera que quicre. Si utiliza extensiones para hacer que funcione, no puede simplemente actualizar de forma inmediata y asumir que todo funcionara todavia de manera correcta.

He usado doccnas de soluciones de gestion de contcnidos de codigo abierto y, dependiendo de sus neccsidades, probablcmente encontrara la mayoria de ellas adecuadas, Pero si cia soporte a usuaries en departarnentos inter-nos, acadcmicos o de I +D, cada grupo de trabaio pucde tener difercntes necesidades. Un simple marco que pone el poder de cstructurar y formatear el contenido en las manos de sus propios crcadores y usuaries es una potentc herramienta, y la habilidad de rcstringir cl acceso y las cdicioncs en distintas maneras les clara a us ted y a sus usuarios paz y tranquilidad. 51 cllos quiercn una Web completamente abierta, Y listed Jo permite, no hay problema. Pero si bene otros requisites de seguridad, hay posibilidades de que con MediaWiki pueda implernentarlas con facilidad.

MediaWiki le permite autenticar con una conexi6n de fondo a un servidor () base de datos LDAI~ y hay parches disponibles para contar con otros mHodos de

4. Algunos truces geniales

189

autenticaci6n disponibles en su entorno. Adicionalmente, pucde optar por restringir el acceso de tal rnanera que s610 los usuaries registrados y con sesion iniciada puedan editar paginas. crcar un sitio mas abierto donde cualquicra pueda cditar, 0 desactivar completamente el rcgistro para crcar un sitio para documcntaci6n del personal inter no

Instalar MediaWiki

Otro agradable beneficio de MediaWiki es que instalarlo cs pan cornido. Rcquicre rIfF, y sus creadores aconsejan fuertemente usar My50.L como base de datos de rondo. Dependiendo de las caractertsticas que quiera usar (por ejemplo, imagencs en miniatnra 0 autcnticacion LDAP) , puede nccesitar compilar PHP con Iibrertas espectficas. pero los requisites para ejecutar una simple Web son bastante escasos.

Si csta albergando su propia Web (0 10 que es 10 rnismo, ticne privilegios de super-usuario), IiI instalacion necesita, Iiteralmente, segundos. l'lbdo 10 que ticne que hacer es desempaquetar 1<1 distribucion en la rafz de documentos de su servidor Web, y entrar en la pagina!

Mcdiavviki sabe si es su primers visita, y le preguntara si quicre realizar la instalacion. Una vez que proporcione la contrasciia de administrador de MySCtL. MediaWiki creara un nuevo usuario, una nueva base de datos, y todas las tablas necesarias, lo que cs el noventa pOl' ciento del proceso de instalacion,

Sin embargo, si esta ejecutando Mediavviki alojada en un servidor remote, es probable que no tenga la contraseria de super-usuario 0 una contrasefia administrativa para mySQL. En este caso, guerra crcar 1.'1 base de datos de Mcdiavviki primero, y despues apuntar Ia instalacion a esta para crear las tablas. Desgraciadamentc, no puedo dccirle como hacer esto, ya que cada servicio de hcspedaje de Web le proporcionara diferentes herramientas para asistirle.

Una vez que ha realizado la instalacion con exito, se le prescntara un vinculo para visitar su nueva Web.

Configurar MediaWiki

Instalarlo fue facil, pero Gc6mo bloqueas esta cosa? Hay como una tonelada metrica de docurncntacion disponible sobre como hacer esto, pero resurnire algunas de las caractertsticas que son de importancia primordial para administradores.

Lo primero y mas importante es cl acceso al sitio Web. Muchos sitios no han utilizado Wiki porquf estan bajo la ilusi6n de que no puedcn SCI' protegidos. iNo senor!

190

Linux Server. Los mejores trucos

Con Ia version 1.4 de Mediavviki, cs posible usar el fichero de configuracion y/o unas pocas declaraciones SQL para cambial' las funcioncs disponibles para difercntcs tipos de usuarios. La version 1.5, por otra parte, tiene una coleccion bastante robusta de roles potenciales que los usuaries pucdcn asurnir, implemcntada via grupos de usuaries. Aqui trabajaremos con la version 1.5, ya que probablernente estara en su forma final para cuando se publique este libro,

Estoy trabajando con 1.5rc4, la cual puede ser gestionada en gran parte en un navegador. Hay paginas separadas para afiadir, borrar y bloq uear usuaries. Hay ademas una pagina para cambial' los grupos a los que los usuarios pertcnecen, 10 que afectara a los dercchos que tengan cuando visiten su Web. Adicionalrnente, hay modules disponibles para ayudarlc a correlacionar usuaries con todas las direccioues IP conocidas usadas por ellos, y realizar otras funciones no disponibles en la distribucion principal.

Sin embargo, no hay todavia una interfaz para cambiar los derechos para un grupo, 0 afiadirvelirninar grupos. Para esas tareas, necesitarti tener acceso a un intcrprete de comandos en cl servidor Web, 0 necesitara crear una copia localdel fichero LocalSet tings . php, editarla, y copiarla de nuevo en su sitio para que los carnbios tengan efecto. El fichero cs simple de cditar, y Ia documentacion para hacer los cambios es mas que adecuada, pero ire a pOI' unos ejcmplos de uno 0 dos cambios rapidos que podrfa querer hacer.

S1 tan solo quiere cambiar el grupo con el que un usuario csta asociado, puede iniciar scsion como un usuario administrative e ir al vinculo Special Pages. En la parte inferior de la pantalla vera paginas especiales Restricted que son Iistadas solo cuando el usuario ha iniciado sesion.

Esta seccion contiene el vinculo ala pagina de gesti6n de derechos de usuario, que es en la actualidad tan s610 un interfaz para cambial" la pcrtcnencia a grupos de usuaries cspccificos.

Si quiere crear un grupo, necesitara cditar LocalSettings .php y configurar los derechos disponibles para dicho grupo. Para ver como cstan configurados los grupos por defecto, revise Ia documentacion 0 abra el fichero includes /DefaultSettings .php en su directorio de instalacion. He aqui las lmeas que debera afiadir a LocalSet tings. php para agregar un grupo Ilarnado nuevo_grupo, con perrniso para leer y escrihir pero no para eliminar:

$wgGroupPermissions['nuevo_grupo'] ('edit·] ~ true; $wgGroupPermissions [ 'nuevo_grupo' ] ( . I'ead'] ~ true; $wgGroupPermissions [ 'nuevo_grupo' 1 [ 'delete' ] ~ fal.se;

Como puede ver, no hay ninguna funcion "crear grupo" explicita. Asignar dercchos a grnpos no cxistcntes, como he hecho aqut, hara que el grupo sea crwdo, y sera listado como un grupo disponible la proxima vez que vaya ala pagina de derechos de usuario.

4 .. Algunos trucos geniales

191

Tenga en mente que hay tarnbien opciones globales. para cl grupo all (representado en la configuraci6n como asterisco '*'). He aquf unas pocas opciones por

defecto para est' grupo del fichero Defaul tSet tings . php: .

$wgGroupPermissions [ , * ' $wgGroupPermissions['*' $,,)gGroupPermissions [ . * .

1 ['createaccount·] ] [I readt]

] r: edit' l

true; true; true;

5i quiere ignorer estos valores, simplemente ponga lfneas similares en el fiche~o LocalSet t i.ngs . php, configurando los permisos apropiados a trlle 0 false segun Sf desee. EI flchero Local Settings. php ignora cualquier opci6n cor-respondiente que pueda ericontrarse en el fichero De faul tSet tings . php.

Este modclo le da la flexibilidad para, pOI' ejernplo, evitar que usuarios anonimos crecn cuentas en absolute 0 permitirIes s610 leer, y requerir que los usuarios

inicicn scsion para editar algo. .

Hay adernas derechos adicionales que puede dar a los usuaries para hacerles cuasi-adrninistradores, pcrmiticndoles crear cuentas para otros usuarios, borrar Iicheros, y deshacer malas ediciones.

Comenzando: estructura de datos

Una vcz que nos hemos quitado el acceso de usuario de en rnedio, probablemente las decisiones mas importantes que tendra que tomar al ejecutar su Wiki tengan que ver con c6mo cl contenido de su Web sera estructurado y como 51.1 contcnido cncaja mejor con los elementos organizativos disponibles para usted en MediaWiki. Hay muchas her ramicntas ritiles que pucde usar, y todas elias son bastante genericas, de nuevo sin hacer ninguna presunci6n sobre el proposito de la Web.

Hay muchas maneras de usar los divcrsos elementos organizativos. 5i tiene tan s6lo un grupo de proyecto, 'pueden tener su propio Wiki dcdicado a su pro~ yecto. Sin embargo, podria hacer potencialmente que varies proyectos compartieran un s610 Wild proporcionando diferentcs espacios de nornbrcs en el sitio. Un espacio de nornbres es el elernento de datos de mas alto nivel proporcionado en MediaWiki. Dentro de los espacios de nombres hay catcgorias, que los mismos mantenedores del proyecto pueden usar para dividir sus sitios en varias piezas que tengan sentido para sus necesidades.

Para que no piense que las paginas de su \!\kb ncccsitan ser documentos completamente estaticos. eche un vistazo a Ia caracterfstica Templates de Mcdiavviki, que le permite incr ustar documentos dentro de varias paginas. Esto le da la flexibilidad para, por ejemplo, hacer que su pagil1a no sea nada mas que una colecci6n ell' varios documentos situados dentro de la pagina principal. Los mantcnedores de las diversas plantill?lS pueden entonces actualizar su propio contenido y los

/ /

192

l.inux Server. Los mejores trucos

cambios se refiejar(m en 1<1 pagina principal sin afectar a las plantillas crcadas por otros usuaries.

Editar su configuracion de GRUB con grubby

Ahorre toneladas de letras (y de erratas), usando una herramienta preparada para editar grub.conf.

Una maquina que no arranca no funciona. Y hay varies entornos en los que el fichero grub. conf proporcionado con 1a distribucion simpleml::nte no 10 haec:

Tanto si esta usando kickstart para instalar una granja de5ervldores, c~)mo S1 esta simplemcnte curioseando con nuevas construcciones del n(l.c}eo del sI~tema en 51.1 servidor Web, puede dejar sus habilidadcs de programaclOn de script en casa haciendo uso de grubby, una simple herramicnta de linea de comando que editara sus definicioncs del ntlcleo de sistema por usted.

He aqui un ejemplo de una definicion de nucleo de sistClm~ muy simple, sacada de un Iichero grub. conf en un scrvidor Red Hat Enterprise LU1llX:

title Red Hat Enterprise Linux AS (2.4.21-32.0.1.EL) root (hdO,O)

kernel Ivmlinuz-2.4.21-32.0.1.EL ro root=LABEL=/

initrd /initrd-2.4.21-32.0.1.EL.irng

Esta es una estrofa bastantc estandar a la que se haec referencia en l~~ ~o.cumentacion de GRUB como una "definicion de sistema operativo" (OS. dejl~ltwn) (debido a In habilidad de GRUB para aparentemente arrar:car cualquier sl~tema operative que existr). Ocasionalmente, 51' vuelvc neccsario el alterar el fie hero grub. conf para pasar argumentos al nuclco de sistema en el momento:le arrm;que. Por ejernplo, si haec kicks tart a una granja ~e servidorcs y les a~a~e mBS tarde conexiones por console serie, los rnrcleos de SIstema no detectaran la COI1- sola automaticmuente, y GRUB no afiadira "alltomagicamente" los argurnentos

necesarios para rcdirigir Ia salida al dispositive de terminal scrie. _

Esto normaimente significaria cditar a mano el fichero grub. con~ para anadir los argumentos, amenos que rcsulte que cO~lOee grub_by,. He a.qUJ d C0111ando, ejecutado como sllper-usuario, que usaria p<:r~l an~dlr ~~s argumento: rcqueridos a todos los nucleos de sistema para perrnitir redm::'cClOn por consola:

# grubby __ update-kernel=ALL __ args=console=ttySO,9600

La palabra dave ALL funciona con varios marcadore~ y, en este C.'lSD, afia~l~ra los argument os a cada linea de nucleo de sistema en el fichero l~e configl~raClon. Hay adernas unapalabra dave, DEFAULr que alterara solo la lfnea de nucleo de sistema del nucleo por defecto. como para el pararnetro drjauit de grub. conf

4. Algunos trucos geniales

193

grubby puede adernas alterar.opciones del misrno gestor de arranque grub. usando los siguientes comandos] puede afiadir un nuevo nucleo de sistema al fichero grub. conf y hacer de el'd nucleo que grub arrancara por defecto:

# grubby --add-kernel=/boot/vmlinuz-2.4.2l-new --make-default # grubby --set-default=/boot/vmlinuz-2.4.21-32.0.1.ELsmp

Yo USe el marcador --make-default para establecer el nuclco vmlinuz-2.4.21- new como el nuclco pOl' defecto. Si le dice a grubby que cambie el nucleo de sistema por defecto a uno del que el fichero de coufiguracion no sabe nada, intentara hacerlo, fallara, borrara el parametro default de Sll fichero de configuracion pOl' complete. y no se qucjara de ello 10 mas minimo, Puesto que he fallado al ponermi nuevo nucleo en su sitio, en el segundo comando, he reseteado el nuclco por defecto de nuevo a uno que habta definido anteriormente usando e1 pararnctro -set-default.

As! que Lc6mo le ha ahorrado e~to de escribir algol Cambiar un nucleo de sistema por defecto es tan simple como cambiar un simple dfgito en cl fichero grub. conf, lcorrecto? Bien, S1, asumiendo que ha hecho esto en un sola maquina, Sin embargo, si nccesita ejecutar una actualizacion programada en su fichero grub. conf en todas las rnaquinas q LIe gestiona 0 esta alterando grub. conf durante una instalacion autornatizada para hacer de un nucleo a medida el nucleo par defccto. yo casi seguro que usarta grubby en vez de sed, awk, vi, y/o Perl para hacer d trabaio. En estos casos, realmente le ahorra escribir, ipor no mcncionar que Ie evita cl rcinventar la r ueda!

Darle entrenamiento a la tecla Tab

Use la finalizacicn prograrnable de bash para auto-completer mucho mas que simples nombres de ficheros,

La finalizacion en el interprete de cornandos bash no es aIgo nuevo, y no sf como vivirfa sin ella. Ser capaz de escribir por eiemplo, Is fo<tab><tab> y tener una lista de cinco 0 seis fichcros que empiezan pur "fo'' puede SeT muy practice. ZTiene un nombre de script largo que siernpre se confunde al tcclcar? Sirnplemente escriba las primeras Ietras, pulse Tab dos VfCCS, y bash intentara completar el Hombre por usted. Es un maravilloso ahorrador de ticmpo que yo, pOI' decir alguien, hecho de mcnos muchisirno cuando inicio sesion en otras rnaquinas Unix donde el interprete de cornandos por defecto es csh y la finalizacion con Tab no esta activada por defecto (haciendo que aparezcan caracteres de control en la linea de comandos, en vez de limpios, deccntes Hombres de ficheros).

En bash v2.04, Ia finalizacion "prograrnable" Sf introdujo en el interprete de comandos, Esto Ie perrnite aiiadir extrafios y maravillosos trozos de bondad a sus

Linux Server, Los mejores trucos

194

ba sh (narmalmente encontradas en - / . bashre y rutinas de inieializaci6n de

_ / . bash~profile).

, ." . , le b h son dependientes de c6mo su

Sus rutinas de lJUClahzaclOD ue as,."', nfizuradc: bash pucde usar entornodeinttrpretedecomanclosestaco /g b s~ profile, uno

. I /' shrc global uno - . a._

un fichero etc na ." / login para ohtener

f . 1 Y creo que uno - .

_/ .bashrc, unov/ ,pro l ~~ .

su informaci6n de inicializaclon.

He aqui un ejemplo rapida: , ..

I ~ I· 'I l'ldocldotlX't.flt.xt.iht.mlht.tr.lloat.1

"*.@isxW Sc.wisxg sg- ,

complete -f -x \ot.t.lodm)' oowriter

. imnl mplete es

" 'TO rCllmente es bastantc simp c. co

Esto p.arece bastante cnptrco. pt c l i te rtc de camandos mtente corn-

1, '. t . da que haec que e 111 erpre . f

una palabra c dye rntegra ~.' 1 I' de comandoe El marcador-

. , t > :l. 1 cursor cn a Inca ,. c • '

pIelar el tcxto quc csta a~ cs <.. e "..·1 t un nombre de fichero. El marca-

, ntentando comp e ar . I '

significa que, ~staremos 1, . . un atron a usar para rcalizar Ia co~ Jma-

dor -X espcClflca que 10 que sigue es P d est a realmcnte anahzando

1 . e rete de coman os .

cio n , Puesto que ~. In erp .. , .: ortante roner siempre el patr6n entre

sint§.cticamente la 1111[3 eompkta, e~ Imp 1 r nI'nlguncl expansi6n del mrerprete

. . > de que no ticne uga.. . C b

comiBas para asegurarse ,,> t fias cuando pulse su tecla Ta .

> )Cando que ocurran cosas ex ra .

de comandos, prove « 1 esta rnanera:

El propio patr6n puedc ser dcsglosado Y se veria c e.

,*.@(extensioIl)

• • ., > -dente en cste contexto, dice que cuando se rea-

El signo de exclamaeIOn prece f"h' > .t. remos eliminando cosas que no

, . . , '1 J . ombre de 11.: ero, es a .. .

lice 1a finalizacton (e. n . . .* r;;'( > t 'ns'I{'JI1) significa "cualqmer cosa.

. trc La cadfna . ..s!! ex t. . 1

conlbman con este pa ron .. c ... .. , .'t'>nte una ocurrencia de cualqmera ue

, . . to seguidc por exac arne . c - . /. t ' 1

seglllda pOl' un pun ( " . .t') El caracter t(1! es un carac er uc

, .' d·1I ( / xw stw sxg c c . c .~. • . 1

las exprcslOnes hst.a as aq~ll, ~. " I' > m b~ , . tamente una ocurrfnCla de

. did . signifiea com Ina exac c it 11 l'

englobado exten 1 0 que , , ·1' .t' ie 'xtensiones son separadorcs 0 o-

k " , > •• t 'I' en nucstra IS d (e t: .. • . '1' d

patr6n. Los carac e~es . ~ . '. I Ii .tado de fieheros generado pu san 0

gico, Si alguna coincide, sera incluida en e IS

la teda Tab dos veces. " ter) fspecifica el comando al

, 1 br, J' linea (en este caso. oowrl· I>

La (llhma pa a )rd en .. 01 ... . / t.. .. -.labras esta linea comp x-

. . . 1 t> 'do de ('sa 1111ea. En 0 ras pel c (, ,

cual se aphca todo e con em 1 'd J qllC se eiecute sea oowrl ter.

, d 'nos que e coman l . J ,

ta no sera toca a a me '. . .... b blemente le Uevana

pucde escribir miles de estas lineas S1 qUlcnd~' ~erou~;~r ~ompletar, toma.r to-

t das las cosas que po na q , 1

toda una vida pensar en 0 <. . c '. • ". todo' ara estar seguro de que solo os

dos los patrones correctos, y luego depurar P

4. Algunos trucos geniales

195

nombres de fichero correctos SOIl devueltos. Como alternativa, podrfa simplemente dcscargarse un fichero pre-configurado adjuntado par un buen compafiero Ilarnado Ian MacDonald, crcador del paquete "finalizacion bash programable", disponible en http://www.caIibarLorg/bash/index.shtml#completion. EI paquete cOI1siste principalmente en simple docurncntacion y un fichero conteniendo una colecci6n muy extensa de "chuletas" bash de finalizacion. iUna version que me he dcscargado recientemente coritierte mas de doscientos atajos!

Muchos de los atajos son patrones rnuy simples de finalizacion de ficheros que estan ligados a aplicaciones especfficas, 10 cual es mas util de 10 que podrfa imaginarse. Ser capaz de escribir tar xvzf f<tab><tab> y tener s610 los ficheros con extension tar.gz de vuclta es rnaravilloso, pero accesos directos que cornplcten nombres de sistema tras el comando s sh (de su fichero known_hosts) u objctivos en unMakefile despues de cscribirmake son verdaderos ahorradores de tiempo para adrninistradores que estan constantcmente haciendo adrninistracion remota y compilando software des de el codigo fuente .

Lo grandioso es que la unica dependencia real es el propio interprete de comandos: lel resto de 10 que ocurra depende complctamente de ustedl Si tiene acceso de super-usuario en la maquina local, puede crear un fichero bajo / etc /profi 1 e . d llarnado bash_complete. sh, y pegar en el un poco de c6digo para confignrar la finalizacion bash de una manera sensata. EI codigo viene directamente del fichero LEEME de la distribucion de bash:

"bash=${BASH_VERSION%.*); bmajoX'=${bash%.*}; bminor=${bash#*.}

f [ "$PSl" J && [ $bmajor -eq 2) && r SbminoX' '>' 04 J \

&& [ ~f (etc(bash_complet.ion J; thenlr int.eractive shell # Source complet.ion code

(etc (bash. completion

fi

unset bash bmajor bm:i.nor

Este codigo haec una simple comprohacion para asegurarse de que las version de bash que esta ejecutando soporta finalizacion programeble, despues comprueba 51 esta lanzando un interprete de cornandos inter activo antes de leer el fichero de finalizaci6n programable de bash.

Poner este c6digo bajo jete/profile .do en su fichero global /etc/bashrc per mite a todos 10 usuaries en la rnaquina cosechar los beneficios de la finalizecion programahle de bash. 5i, por otro Iado, quiere usar esto tan s610 para usted rnismo, 0 subirlo a su cuenta de interprete de comandos en un equipo Web, puede pegar el rnismo codigo visto anteriorrnente en su propio fichero ~ / . bashr-c.

Vease tambien

http://www,caliban.org/bash/index.shtml#completion

196

Linux Server. Los rnejores trucos

Mantener procesos ejecutandose tras salir del interprete de comandos

Comandos de control de procesos tales como nohup y disown le facilitan lniciar procesos de larga ejecudon y mantenerlos ejecutando incluso

dcspues de cerrar sesion,

5uponga que esta cjecutando una hcrramienta para analizar problemas 0 monitorizar en su servidor, 0 compilando un programa muy grande, y el proceso necesitara ejecutar por horas, dias, 0 mas. L~u('.pasa ~i,ncces.it,a que los procesos se mantengan ejecutando despues de que finalice sesion 0 51 esta a~aba antes de que usted quiera? Puede conseguirlo con los comandos nohup y d i s own .

Cuando ejecuta una sesi6n de interprete de comandos, to{~OS los proc~~o~ que ejecuta en Ia linea de comandos son procesos hijo de dicho interprete. S1 cierra scsion 0 su sesion se cuelga o acaba inesperndamente de alguna otra manera. ~e enviaran sefialcs 5lGHUP (la sefial para colgar) a sus procesos hijo para terrni-

narlos tambicn.

Puede sortcar esto diciendole al/los proccso/s que quiere mantenerlos vivos e

ignorar las sefiales 5IGHUP.

i h (" h. g ")

Hay dos mancras de hacer esto: usando el co~am 0 ;0 up _ no an up.

para (jecutar el comando en un entorno en el que Ignorara las sennl~s de ter~m~ naci6n 0 usando el comando del interprete de comandos bash, d i s own para hacer que un comando especffico en segundo plano sea independicnte del inter-

prete actual.

Usar nohup para ejecutar cornandos

EI comando nohup proporciona un mecanismo rapido y senc!llo par~ mm:tencr procesos ejecutandose sin importar si su proceso pad~'e es~a todavia ~Ctlvo. Para avent~arse de esta habilidad, ejecute su comando favorite, precedido del

comando nohup:

$ nohup command

Esto ejecuta eI coman do especificado y 10 mantiene ejecutandose incluso si la sesion padre finaliza. Si no redirige la salid~ de este pr~ceso, tanto esta como SllS mensajes de error (stdout y stderr) seran enviados a un fichero l:ama(~o nohup. out. en el directorio actual. 5i este fichero no puede ser crcado ahi, sera crcado en el diredorio personal del usuario que ejecut6 1.:'1 comando.

Pucdc monitorizar 10 que esta siendo escrito en nohup . out usando el coman-

do tail:

$ tail -£ -/nohup.out

4. Algunos truces geniales

197

Puede tambien explicitamente dirigir Ia salida de su comando a un fichero espedfico. POI' ejemplo, la siguiente linea de cornandos ejecuta el comando espccificado en segundo plano, crrvia su salida a un fichero llarnado salida_de_ prueba . txt en su directorio personal y contimia ejecutandolo incluso si la sesi6n padre finaliza:

$ nohup command> -/my_t:est_output.txt &,

5i no quiere guarder la salida del cornando especificado, puede descartarla ( y no crear el fichero nohup. out) redirigicndo la salida a / dev /null, el cubo de hits de Linux:

$ nohup command> /dev/null &

Esto ejecuta el comando 0 programa en segundo plano, ignora su salida enviandola a /dev/null, y continua ejecutandolo incluso si Ia scsion padre finaliza.

Si ha lisa do nohup para mantener un proceso ejecutandose despues de que su padre terrnine, no hay manera de reconectar con ese proceso si quicre derribarlo posteriormentc. Sin embargo, nhup s610 protege al proceso de la sefial SIGHUP. Punic ponerle fin todavia manualmentc

usando el gran martillo de kill, kill -9 PID.

Usar disown con trabajos en segundo plano

5i csta usando el interprcte de comandos bash, puedc dccirle a un proceso existente que ignore las 5IGHUP usando el cornando integrado en cl interprcte disown:

$ disown -h numero_de __ trabajo

Esto Ie dice a un proceso que esta ejecutandose en segundo plano que se mantenga cjecutando cuando se cier re su proceso padre. Puede encontrar este nlnnero_dc_trabajo usando el comando del interprcte jobs. Si usa la opci6n de disown -h, el trabajo ejecutandose no sera elirninado de la tabla de trabajos cuando haga disown sobre el, pero se mantendra ejecutando si el interprete actual findIiza. Puede todavia reconectarse a este proceso usando el mecanisme estandar bash %numero_de_trabaj o. Si usa disown sin opciones, el trabaio que esta ejccutandose sera eliminado de 1a tabla de trabajos: continuara ejecutandose despues de que finalice sesion, pew no sera capaz de reconectarse a d.

Tarnbien puedc usar eI cornando disown para rnantcner tjecutandose a todos los comandos que estan actualmente en segundo plano:

$ disown -a:c

198

l.inux Server. Los rnejores trucos

, . ta Iosc que se mantengan

1 t· ·t dos los trabaj os clue,' cstan eJecu ani o: . . . ,

Esto es {Ice a o. .

ejecntando incluso si el interprete actual se cierra.

Vease tambien

e man bash

.. manl nohup

-Jon Fox

Desconeciar su consola sin finatlzar su sesion

. t 'I desde casa 0 sobre la

Inicie un trabajo de larga ejecucion y conec ese a e '

marella.

He aqui c1 escenario: usted cs un cO::1sultor de siste~la: L~ll..:~'~{:n~~:)~;~~(~:

. anrct: da Son las nueve de la manana ahora, y tH::IlC Y . P , t

~~l~a~:~ a " n cran base de datos en un sitio, pero tiene que est~r el,1 0 .ro

Instdlal.lo.n de una c:> • , I l' base de datos nunca aesbara a tiempo

h ' L' COIlstrucelOl1 uc a ,,~. ..

como en una ora, a ,1' i b: .' I> datos de desarrolladOl~ Y conhgurar

Para nue pucda proba,r,la, crear as d.ses ue .o / I" 7 1 '1 I t de que se vaya L .~ue lace.

las restricciones de segunc ac anes .' ' '. 1,( ( ,

ct. " ' '. / , " .'s hablar con su cliente y decirle que vo vera mas

Una sOluclOn, pOl' supucst.~, L. mbar o uedc ser iniciar el trabajo en una

tar~I~ para acabar',Otrats(}1.l~e~0~i[:1:~~s tarcfe ~l;sde donde quiera que estc yacasesion screen Y C011,e,c ~rst' . :'sto im lica eonstruir adernas otra pieza de softbarlo. Para qu.e no plense que e: P, t" rmalmente instalado 0 facilmente

/ . " sep'} que screen es a no c .' •

ware para sus rnaqumas. ., c. , 1 . d' tribuci6n que este ejecutando, Puede

disponiblc y empaquetado par,~ cua (blllK. r 15 incluyendo informaci6n de des-

/' , inf YICl6n so re screen, .1

adcmas obtener mas morn c . d GNU' http://www.onu.org

car g a, en Ia pagina Web de screen e, b

/software/screen/, 1,1 . de

, . de ser mas facil. Simpkmente abra su emu a(or e

jmciarse en screen no puc ' •

terminal favorito y ejccute el comando, aS1:

$ screen

• .c c _ -te de mandos ejecutimdose dentro de una

Serarecibido,conunnuevou~telpn:: (ceo "1:~' 1 ntro delinkrprete, de

d t d • chalooar con screen ll.SC1C ( e

sesi6n screen. Puc e 0 aVIa, o , " , 1'. .: de eonsola desde

id ' dialoga con eualqmu up lenClon

m. anera muy pa,reCla a como C j L· binacion de teclas que usa ,para en-

. t' t de comanCtos a com '

dentro de uri 111 erpre ,e c l i t', te de ('om'llldos eieeutandose dent, ro de

, d "Fl vez de a In erlJre ' ' C ' ,. ;).

VIal' cntra a a screen (.. 1 ,.' ilar la teda Esca-

, f' • n es control-A, control-A; en screen es sum <, . " . ,. f

la sesion de scree . . , I' 1'" " f de tal manera que puedc deClrk que

pe en vi, llama Ia atenClon dc Ia dp 1(.<1C10n . c

4, Algunos trucos geniales

199

hacer. Por ejemplo, para acceder a una rcfercncia rapida de cornandos, pulse Control-A seguido de '! .

La salida deberia de ser una lista de los muchos eomandos con los que puede alimentar a screen, Si no obtiene ninguna salida, puede asegurarse de que estkl realmente en una sesi6n screen invocando a screen con el mareador ~Iist. Deberia ver algo similar a 10 siguiente:

$ screen -list

There is a scx'een on: 28820,pts-2.willy

1 Socket in /tmp/screen-jonesy.

(Attached)

Puede apreciar en Ia salida que hay una sesi6n screen ejecutandose, a la eual estarnos conectados actualment«. El identificador de proceso para csta sesion es 28820, y hemos sido asignados al seudo-terrninal nurncro 2. Mora varnos a iniciar un trabajo que podarnos continuer mas tarde desde otro Ingar. Una rnancra simple de pro bar Ia funcionalidad es simplemente abrir un fichero en un editor como pueda ser vim. Una vez que tenga el fichero abierto. pulse ControlA seguido de D, y sera desconectado de Ia sesi6n screen y devuelto a su simple viejo interprcte.

Llegados a este punto, puede marcharse a su proxima cita. Ouizas en Ia proxima parada tenga que hacer una instalaci6n de un sistema operative, 10 que lc deja bastante tiempo libre mienrras los paquetes se estan instalando, Encienda su portatil, haga SSH a Ia maquina donde su sesion screen se esta ejccutando, y escriba screen -r para rcconcctarse a Ia scsion en progreso, Si tiene mas de una sesion screen ejecutandose, escriba screen -r p i.d, donde pid es eI identificador de proceso de Ia sesion screen a Ia eual quiere conectarse (discernible de Ia salida screen -list que virnos anteriormentc).

Por supuesto, intentar asociar el idcntificador de proceso de una sesion screen con 10 que esta sucedicndo en dicha sesion puede ser un poco desalentador, cspecialmente si ticnc muchas sesiones ejecutandose. En Iugar de hacer eso, puedc nombrar su sesior; con algo que tenga significado cuando la inicie. De est.a forma, cuando tenga que iniciar screen con el fin de ernpczar una compilacion de larga ejecucion, simplcmente escriba screen -3 make, y la proxima vez que se conecte a ella, podra escribir screen -r make en vez de intentar recordar que identificador de proceso necesita para concctarse a ella.

Programacion script con screen

Si gestiona mas que unas pocas maquinas, probablemente habra encontrado alguns rnanera de automatizar d proceso de conectarsc a un subconjunto de sus maquinas de servicio en el momenta de iniciar sesion, 0 con un icono de escrito-

You might also like