jueves, 7 de febrero de 2008

Mis pequeños problemillas

El universo paralelo de linux
Introducción Dos tipos de servicios:
1. Servicios de Internet:
Servicios de ejecución remota: telnet, ssh
Servicios de transferencia de ficheros: ftp, sftp
Servicio de DNSServicio de Proxy
Servicio de correo electrónico: SMTP, POP, . . .
Servicio Web
2. Servicios de intranet:
Sistemas de archivos de red (NFS),Servicio de información de red (NIS),Servicio de directorio (LDAP),Compartición Windows/Linux (Samba )
Ejecución remota y transferencia de ficheros.
Permiten acceder a un sistema remoto y transferir cheros de/hacia este sistema. Aplicaciones clásicas1. telnet (TELetype NETwork) permite conectarnos a otros ordenadoresde la red como terminal remoto2. ftp (File Transfer Protocol permite intercambiar cheros entre distintos ordenadores de la red Problema: la información se transere en claro El uso de telnety ftp se desaconseja Reemplazarlos por ssh, scp, sftp1.
ssh (Secure Shell ) permite conectarnos a otro sistema encriptandotoda la información2. scp, sftp permiten la transferencia de cheros de forma encriptada scp similar a cp y sftp similar a ftp
2.1. Servicio de telnet y ftp Los servicios TCP (telnet, ftp, talk, nger, etc.) son normalmente lanzados por el superdemonio de red inetd (o xinetd) El chero de conguración es el /etc/inetd.conf Ejemplo de línea telnet
stream tcp nowait telnetd /usr/sbin/in.telnetd cuando inetd reciba una petición al puerto telnet abre un sockettipo stream y ejecutar fork() y exec() del programa /usr/sbin/in.telnetd,bajo la identidad del usuario telnetd nowait indica que el servidor puede continuar procesando conexiones en el socket.
Versión mejorada de inetd: xinetd
3Para mayor control usar TCP Wrapper (programa tcpd) Permite conceder/denegar acceso a determinados hosts/redes mediantelos chero /etc/hosts.allow y /etc/hosts.deny
Servicio de telnet Instalación de un servidor telnet Descargar el paquete telnetd El paquete actualiza el /etc/inetd.conf,Por defecto usa TCP wrappers,El servidor escucha el puerto 23 Desinstalar el servicio telnet Desinstalar el paquete telnetd, o Comentar la línea correspondiente en /etc/inetd.conf
Servicio de FTP Transfiere ficheros a/desde un host remoto Permite usuarios registrados o anónimos (anonymous)Utiliza dos puertos: 21 (conexión de control) y 20 (conexión de datos)
Dos modos de funcionamiento: 1. Activo (modo por defecto en el comando ftp) El servidor inicia la conexión de datos desde su puerto 20 aun puerto > 1023 del cliente Problema con los firerewalls en el cliente
2. Pasivo (modo recomendable, por defecto en navegadores) El cliente inicia las conexiones de control y datos No se utiliza el puerto 20 No tiene problema con los firewall
4Instalación de un servidor ftp básico1. Instalar el paquete ftpd El paquete actualiza el /etc/inetd.conf. Por defecto usa TCP wrappers Podemos denegar el acceso ftp a ciertos usuarios incluyéndolos en el fichero /etc/ftpusers.
Servicio de FTP avanzadoServidores avanzados de FTP Proporcionan numerosas facilidades, tanto para ftp normal cono anónimo.Existen numerosos servidores comerciales u open source: Wu-FTPD,Pure-FTPd, ProFTPD, wzdftpd, vsftpd.Estos servidores proporcionan normalmente: Operación a través de inetd o standalone, Servidores FTP virtuales (varios servidores de FTP anónimos enel mismo host) Usuarios FTP virtuales (cuentas ftp diferentes de las cuentas delsistema) Facilidades para registro y monitorización de accesos Facilidades para controlar y limitar accesos Comunicación encriptada
SSHSSH: Shell seguroPermite comunicarnos de forma segura con un servidor remoto Permite abrir sesiones o transferir cheros (scp o sftp) Reemplazo de rlogin, telnet o ftp Todos los datos viajan encriptados Dos versiones SSH-1 y SSH-2: Recomendable SSH-2 Versión open-source OpenSSHPaquetes Debian: Ciente: openssh-client Servidor: openssh-serverModos de autenticación mediante SSHSSH soporta 4 modos de autenticación:
1. Si el nombre del host remoto desde el cual un usuario se conecta al servidor esta listado en ~/.rhosts, ~/.shosts, /etc/hosts.equiv o/etc/shosts.equiv el usuario remoto puede entrar sin contraseñaMétodo absolutamente desaconsejado
2. Igual que el anterior pero la clave pública del host remoto debe apareceren /etc/ssh_known_hosts o ~/.ssh/known_hosts6No demasiado seguro (si el host remoto se ve comprometido, elservidor local queda comprometido)
3. La clave pública del usuario remoto debe estar en ~/.ssh/authorized_keysEl usuario remoto debe tener acceso a su clave privadaMétodo más seguro, pero un poco incomodo
4. Acceso mediante contraseña (modo por defecto)Menos seguro que el anterior
Opciones para autenticación
Fichero de conguración del servidor ssh: /etc/ssh/sshd_config
Opción M Dfto. Signicado
RhostsRSAAuthentication 2 no Sí yes permite autenticación por host(SSH-1)HostbasedAuthentication 2 no Sí yes permite autenticación por host(SSH-2)IgnoreRhosts 2 yes No usa los ficheros~/.rhostsy ~/.shost
IgnoreUserKnownHosts 2 no Ignora el chero ~/.ssh/known_hosts
RSAAuthentication 3 yes Autenticación de clave pública deusuario (SSH-1)PubkeyAuthentication 3 yes Autenticación de clave pública deusuario (SSH-2)PasswordAuthentication 4 yes Autenticación mediante contraseña UsePAM 2,3,4 no Usa PAM para autenticación
Otras opciones de conguración del servidor en /etc/ssh/sshd_config
Opción Dfto. Signicado
Port 22 Puerto (puede ser interesante cambiarlo a>1024)Protocol 2,1 Protocolo aceptado (más seguro sólo 2)ListenAddress Todas Dirección local por la que escucha PermitRootLogin yes Permite acceder al root
X11Forwarding no Permite forwarding X11 Para más opciones man sshd_config
Opciones para el cliente Fichero de conguración del cliente ssh: /etc/ssh/ssh_config o ~/.ssh/configEn este chero se especican opciones para los comandos ssh, scp o sftp.Algunas de estas opciones se pueden especicar en el momento de ejecutar el comando, p.e.
$ ssh -p port servidor # Indica otro puerto
Algunas opciones:
Opción Dfto. Signicado
Hosts Host para los que se aplican las opciones (*implica todos)Port 22 Puerto por defecto Protocol 2,1 Protocolo usado por defecto
Cipher[s] Mecanismos de cifrado usados
ForwardX11 no Reenvío X11
Para más opciones man ssh_config y man ssh.Otros comandos ssh-keygen generación y gestión de claves públicas/privadas para SSH. Permite claves RSA o DSA (DSA sólo SSH-2, por defecto RSA-2)
Ficheros (para SSH-2) Clave privada: ~/.ssh/id_rsa o ~/.ssh/id_dsa (~/.ssh/identitypara SSH-1)
Clave pública: ~/.ssh/id_rsa.pub o ~/.ssh/id_dsa.pub (~/.ssh/identity.pubpara SSH-1)
 La clave privada debe tener una passphrase de longitud arbitraria Puede cambiarse con la opción -p
ssh-agent Agente de autenticación Mantiene en memoria la clave privada Evita tener que escribir la passphrase cada vez que usemos ssh Habitualmente, si entramos en X11 se activa automáticamente Opción use-ssh-agent de /etc/X11/Xsession.options (verman xsession.options) Para activarlo en consola usar (como usuario)eval $(ssh-agent) Define las variables SSH_AUTH_SOCK y SSH_AGENT_PID
ssh-add Añade las claves privadas al agente Uso:ssh-add [opciones ] [-t life ] [fichero ]
Por defecto añade los ficheros ~/.ssh/id_rsa, ~/.ssh/id_dsa y~/.ssh/identity, pidiendo las correspondientes passphrases. Pueden añadirse múltiples claves. En una conexión se prueban las diferentes claves hasta que coincide Algunas opciones: -l Muestra las identidades añadidas -t life Especifica un tiempo de vida de la identidad.
Servicio de tiempoNTP (Network Time Protocol ): protocolo para sincronizar los relojes de lossistemas en redes con latencia variablePermiten tener los sistemas sincronizados con elevada precisiónImportante para diversas aplicaciones (p.e. NFS) y para gestión de logsVersión actual NTPv4; en desarrollo NTPv5Utiliza transporte UDP, puerto 123 Para más información: http://ntp.isc.org3.1. Funcionamiento básico Usa un sistema jerárquico (stratum levels )
Stratum 0: relojes de alta precisión (atómicos)
Stratum 1: ordenadores conectados directamente a los relojes Stratum0, p.e. vía conexión RS-232)
Stratum 2: envían solicitudes NTP a los sistemas Stratum 1 a travésde Internet; pueden comunicarse con varios Stratum 1 y también entreellos
Stratum 3 o superior: se sincronizan usando los de Stratum inferior
3.2. Aplicaciones NTP en LinuxDos aplicaciones básicas:1. ntpdate: obtiene la hora de un servidor NTPNormalmente se usa en el arranque del sistemaPuede meterse en un cron para obtener sincronización, pero no obtiene una precisión elevadaEjemplo:# ntpdate pool.ntp.org2. ntpd (demonio NTP): mantiene sincronizado el sistema con los servidoresNTP, y proporciona servicio NTP Elevada precisión y bajo consumo de recursos Necesita que el error en el reloj sea pequeño (sincronización en el arranque o con ntpdate)Fichero de configuración: /etc/ntp.conf3. ntpq: monitoriza el demonio ntpd.
Sistemas de archivos de red (NFS)NFS (Network File System) permite compartir sistemas de cheros en la red.Introducido por Sun MicroSystems en 1985, y soportado por todos los UnicesVersiones principales: NFSv2 y NFSv3 NFSv4 en desarrollo (incluido en kernel 2.6,ver www.citi.umich.edu/projects/nfsv4/)NFSv2 y 3: protocolo sin estado: no hay pérdida de información si e lservidor cae NFSv4 incorpora estado: mecanismo complejo de recuperación de caídas.Comunicación mediante TCP o UDP normalmente UDP (NFSv4 usa TCP)
Dos tipos de servidores en Linux: servidor en espacio de usuario: más lento y con problemas servidor en modo kernel: más rápido, menos características (versión por defecto)Para más información:capítulo 17 (The Network File System) del libro UNIX System AdministrationHandbook (3a ed.), Evi Nemeth et.al.Linux NFS-HOWTOnfs.sourceforge.net124.1.
Características principales Ejemplo de funcionamiento Procesos implicados NFS se basa en RPC (Remote Procedure Call )el servicio portmap (también llamado rpcbind ) debe estar disponible y activo convierte números de programas RPC en números de puertos utiliza el puerto 111 necesario para aplicaciones que usen RPC el comando rpcinfo nos muestra información RPC en Debian, paquete portmap.Otros demonios necesarios:
rpc.nfsd: implementa la parte de usuario del servidor NFS (atendery resolver las peticiones de acceso del cliente a archivos situados en eldirectorio remoto)
rpc.mountd: proceso que recibe la petición de montaje desde un clienteNFS y chequea para mirar si coincide con un sistema de ficheros actualmente exportado, y si el cliente tiene permisos sucientes paramontar dicho directorio
rpc.rquotad: proporciona información de cuotas a usuarios remotos
rpc.statd: implementa el protocolo NSM (Network Status Monitor );proporciona un servicio de noticación de reinicio, cuando NFS cae; lousa el servicio de bloqueo de cheros lockd
rpc.lockd: servicio de bloqueo de cheros (NFS lock manager, NLM);no necesario en kernels modernos (>= 2.4) en los que el boqueo esrealizado por el kernel
NFSv4 no usa portmap, ni los demonios rpc.mountd y rpc.statd Usa autenticación basada en Kerberos mediante los siguientes servicios: rpcsec_gss (cliente rpc.gssd, servidor rpc.svcgssd): autenticación de la conexión cliente-servidor rpc.idmapd: mapeo entre UIDs (o GIDs) y nombres de usuario (onombres de grupos)
4.2. Instalación de NFS en DebianAntes de utilizar NFS, ya sea como servidor o como cliente, el kernel debe tener compilado el soporte NFS podemos comprobarlo consultando los tipos de filesystems soportadospor el sistema de cheros virtual (VFS) en /proc/filesystems# cat /proc/filesystems ext2 nodev proc nodev devpts nodev nfs
Si no está tendríamos que recompilar el kernel activando el soporte NFS.Veremos como instalar un servidor y con cliente NFS en DebianServidor NFS1. Instalar el paquete nfs-kernel-server y nfs-commonnfs-kernel-server proporciona rpc.nfsd, rpc.mountd, y paraNFSv4 rpc.svcgssdnfs-common proporciona rpc.lockd, rpc.statd, y para NFSv4rpc.gssd y rpc.idmapd
2. Congurar los directorios a exportar: chero /etc/exports
Ejemplo de chero /etc/exports/projects (ro) proj*.usc.es(rw)/home 193.144.84.0/24(rw,root_squash,sync)/pub (ro,all_squash)exporta /projects de sólo lectura para todo el mundo y lectura/escritura para los sistemas proj*.usc.esAlgunas opciones de la exportación:
rw/ro exporta el directorio en modo lectura/escritura o sólolectura
root_squash mapea los requerimientos del UID/GID 0 alusuario anónimo (por defecto usuario nobody, con UID/GID65534); es la opción por defecto
no_root_squash no mapea root al usuario anónimo
all_squash mapea todos los usuarios al usuario anónimo
squash_uids/squash_gids especica una lista de UIDs oGIDs que se deberían trasladar al usuario anónimo squash_uids=0-15,20,25-50
anonuid/anongid fija el UID/GID del usuario anónimo (pordefecto 65534) subtree_check/no_subtree_check si se exporta un subdirectorio(no un lesystem completo) el servidor comprueba que el chero solicitado esté en el árbol de directorios exportado
sync modo síncrono: requiere que todas las escrituras se completenantes de continuar; es opción por defecto
async modo asíncrono: no requiere que todas las escrituras se ompleten; más rápido, pero puede provocar pérdida de datos n una caída
secure los requerimientos deben provenir de un puerto pordebajo de 1024
insecure los requerimientos pueden provenir de cualquier puertoPara más opciones man exports Cada vez que se modica este chero se debe ejecutar el comando exportfs para actualizar el servidor# exportfs -ra ver man exportfs para opciones del comando
3. Iniciar el demonio:# /etc/init.d/nfs-kernel-server start
4. Comprobar los directorios exportados con showmount# showmount --exports localhost
showmount muestra información de un servidor NFS: directorios que exporta, directorios montados por algún cliente y clientes que montan los directorios
5. Podemos ver las estadísticas del servidor NFS con nfsstat Cliente NFS El cliente NFS en Linux está integrado en el nivel del Sistema de FicherosVirtual (VFS) del kernel no necesita un demonio particular de gestión (en otros UNIX, demonio biod)
Instalación:1. Instalar (si no está ya instalado) el paquete nfs-common2. Montar los directorios remotos con mount -t nfs o añadir una entradaen fstab (ver Tema 4: Montado de los sistemas de ficheros)Ejemplo de uso con mount:# mount -t nfs 193.144.84.0:/home /mnt/homeEjemplo de entrada en fstab193.144.84.0:/home /mnt/home nfs rw 0 0Automount se usa frecuentemente con NFS (ver la parte de Autofsen Tema 4: Montado de los sistemas de ficheros)Opciones particulares de montado con NFS:rsize=n /wsize=n especican el tamaño del datagrama utilizado porlos clientes NFS cuando realizan peticiones de lectura/escritura (pueden ajustarse para optimizar)
hard el programa accediendo al sistema de ficheros remoto se colgará cuando el servidor falle; cuando el servidor esté disponible, el programa continuará como si nada (opción más recomendable)
soft cuando una petición no tiene respuesta del servidor en un tiempo fijado por timeo=t el cliente devuelve un código de error al procesoque realizó la petición (puede dar problemas)Para ver más opciones, ver nfs(5)
4.3. Consideraciones de seguridad en NFSNFS no fue diseñado pensando en la seguridad:Los datos se transmiten en claro Usa el UID/GID del usuario en el cliente para gestionar los permisosen el servidor: El usuario con UID n en el cliente obtiene permisos de acceso alos recursos del usuario con UID n en el servidor (aunque sean usuarios distintos) Un usuario con acceso a root en un cliente podría acceder a loscheros de cualquier usuario en el servidor (no a los de root, si se usa la opción root_squash)Precauciones básicas:
1. Usar NFS sólo en Intranets seguras, donde los usuarios no tengan accesode administrador en sus sistemas
2. Evitar el acceso a NFS desde fuera de la IntranetBloquear los puertos TCP/UDP 111 (portmap) y 2049 (nfs)
3. Usar NFSv4 con RPCSEC_GSS, que incluye autenticación
4. Usar versiones seguras de NFS (Secure NFS) o otros sistemas de ficheros(Self-certifying File System, SFS)Ver NFS howto y UNIX Security Checklist
5. Compartición de la configuración Necesidad de mantener una conguración única a través de múltiples sistemas Compartición de los cheros de conguración Ficheros a compartir: /etc/passwd, /etc/shadow, /etc/group, etc.
Mecanismos de compartición: Copia de cheros de un servidor central al resto de los equipos mediante rdist o rsync Utilización de un servidor de dominio, que centralice esa información
NIS: Network Information Service LDAP: Lightweight Directory Access Protocol
5.1. Concepto de dominio Dominio conjunto de equipos interconectados que comparten informaciónadministrativa (usuarios, grupos, contraseñas, etc.) centralizada Necesidad de uno (o varios) servidores que almacenen físicamente dicha información y que la comunique al resto cuando sea necesario Normalmente se usa un esquema cliente/servidor p.e. un usuario se conecta en un sistema cliente y este valida las credenciales del usuario en el servidor En Windows 2000, la implementación del concepto de dominio se realiza mediante el denominado Directorio Activo (Active directory ) Basado en LDAP y DNSEn UNIX, el servicio clásico de gestión de dominios es NIS. NIS se considera bastante obsoleto Existen implementaciones libre del protocolo LDAP para Unix (openLDAP) más potente y escalable que NIS para la implementación de dominios6. Servicio de Información de Red NIS Desarrollado por Sun Microsystem en los años 80Nombre original Yellow Pages (modicado por razones legales)Muy popular como sistema de administración de dominios en UNIXA principios de los años 90, versión NIS+ para Solaris 2.x muy diferente de NIS incorpora soporte para encriptación y autenticación de datos complejo y poco soportadoPara más información: The Linux NIS(YP)/NYS/NIS+ HOWTO Debian NIS HOWTO Introducción a NIS y NFS19
6.1. Funcionamiento básico de NISBase de datos distribuida Un servidor (master) mantiene los cheros de conguración de los sistemas(/etc/passwd, /etc/group, etc.) cada archivo de conguración se convierte en una o más tablas(mapas NIS) de una base de datos esos mapas se guardan en un formato binario llamado DBM (DataBaseManagement) el servidor NIS maestro debería tener ambas, las tablas ASCII ylas DBM en una red debe haber al menos una máquina actuando como unservidor NIS maestroLos clientes hablan directamente con el servidor NIS para leer la información almacenada en sus bases de datos DBMPueden existir servidores NIS esclavos: tienen copias de las bases de datos NIS reciben estas copias del servidor NIS maestro cada vez que serealizan cambios a las bases de datos maestrasUn servidor maestro y sus servidores esclavos y clientes constituyen undominio NIS una red puede tener múltiples servidores NIS, cada uno sirviendoa un dominio NIS diferente Esquema de un dominio NIS20
6.2. Comandos básicos de NIS NIS incluye un conjunto amplio de comandos y demonios, algunos de losc uales son:
ypserv demonio de servidor
ypbind demonio de cliente
domainname establece el nombre del dominio
ypinit congura un servidor como maestro o esclavo
ypxfr descarga un mapa desde servidor maestro (en los esclavos)
yppush ejecutado en el maestro, hace que los esclavos actualicen sus mapas
ypwhich muestra el sombre del servidor NISypcat muestra las entradas de un mapa
yppasswd cambia la contraseña en la base de datos de NISypchfn cambia el campo GECOS en la base de datos de NISypchsh cambia el login shell en la base de datos de NIS21
6.3. Instalación de NIS en Debian El proceso de puesta en marcha de NIS depende de la distribución veremos como instalar un servidor maestro y un cliente en DebianServidor maestro1. Instalar el paquete nis a) Indicar un nombre de dominio NIS (que no tiene que corresponder con el dominio de RED)El nombre de dominio puede cambiarse con domainname
b) La conguración puede tardar, ya que intenta iniciarse como clienteNIS y se queda buscando un servidor
2. Cambiar el chero /etc/default/nisdebemos poner NISSERVER=master
3. En el chero /etc/ypserv.securenets añadir el número de la red local, para permitir acceso exclusivo a los sistemas de esa red 255.255.255.0 192.168.0.0
4. Ejecutar /usr/sbin/ypserv para iniciar el servidor
5. Editar (si es necesario) el chero /var/yp/Makefilepermite congurar características generales así como las tablas apartir de las cuales se crean los mapas NIShaciendo make en ese directorio se crean los mapas que se guardanen /var/yp/dominiocada vez que se modique alguna tabla (p.e. añadiendo un nuevousuario), debemos hacer make para actualizar los mapas NIS
6. Ejecutar /usr/lib/yp/ypinit -m para que el sistema se congure comoservidor maestrono añadir ningún servidor NIS más (Ctrl-D)
7. Podemos comprobar que funciona bien haciendo un ypcat de algunode los mapas (p.e. ypcat passwd)
8. Por último, el servidor debe configurarse también como cliente seguir los pasos de la siguiente sección
Cliente NIS1. Eliminar de los cheros locales los usuarios, grupos y otra informaciónque queramos que sea accesible por NIS (sólo en los clientes)2. Instalar el paquete nis e indicar el nombre del dominio NIS3. Si se desea, cambiar /etc/yp.conf para especicar el servidor NIS concretopor defecto, busca el servidor mediante un broadcast4. Modicar el archivo /etc/nsswitch.conf para que busque passwd,group y shadow por NIS:
passwd: files nis group: files nis shadow: files nis
El formato y opciones de ese chero lo vimos en el Tema 5: Ficherosde conguración de redAlternativamente, se puede dejar el modo compat añadiendo alnal de los cheros passwd, shadow y group del cliente un +, paraindicar que vamos a usar NISeste método permite incluir/excluir determinados usuariosver NIS-HOWTO: Setting up a NIS Client using Traditional NIS6.4. Fichero /etc/netgroup
NIS introduce el concepto de netgroupsg rupos de usuarios, máquinas y redes que pueden ser referenciadas como un conjuntose definen en el fichero /etc/netgroup, en principio, sólo en el servidor NIS maestro Formato de una entrada en netgroup
netgroup_name (host, user, NIS_domain), ...host nombre de una máquina en el grupouser nombre de login de un usuario de la máquina host23NIS_domain dominio NIS nombre del dominio NIS Pueden dejarse entradas en blanco o con un guión:Una entrada en blanco implica cualquier valor, p.e. (doc19, , ) indica todos los usuarios del host doc
Una entrada con un guión (-) implica campo sin valor, p.e. (-, pepe, ) indica el usuario pepe y nada más Ejemplo de un fichero /etc/netgroupsysadmins (-,pepe,) (-,heidis,) (-,jnguyen,) (-,mpham,)servers (numark,-,) (vestax,-,)clients (denon,-,) (technics,-,) (mtx,-,)research (-,boson,) (-,jyom,) (-,weals,) (-,jaffe,)allusers sysadmins researchallhosts servers clients
Estos netgroups pueden usarse en varios cheros del sistema para denirpermisos:con NIS en modo compat, p.e. añadiendo +@sysadminds en /etc/passwd daríamos permiso de acceso a los usuarios denidos como sysadminsen el chero /etc/exports, para indicar grupos de máquinas a las que exportar un directorio por NFS/home allhosts(rw,root_squash,sync)en los cheros /etc/hosts.allow y /etc/hosts.deny de los TCPWrappersetc.
7. Servicio de directorio: LDAPLDAP: Protocolo Ligero de Acceso a Directorios (Lightweight Directory AccessProtocol )Protocolo de red para consulta y modificación de datos de directorios X.50024 X.500: Estándares de la ITU-T para servicios de directorio Define, entre otros, un protocolo de acceso a directorios llamado DAP (Directory Access Protocol ) DAP definido sobre la pila completa de niveles OSI: costoso ycomplejo LDAP es una alternativa ligera al protocolo DAP Opera directamente sobre TCP/IP Actualmente, la mayoría de servidores de directorio X.500 incorporanLDAP como uno de sus protocolo de acceso
Diferentes implementaciones del protocolo LDAP Microsoft Server 2003 Active Directory, Novell eDirectory, Sun Java System Directory Server, IBM Tivoli Directory Server, Apache Directory Server, Fedora Directory Server, Red Hat Directory Server, OpenLDAPMás información sobre LDAP1. LDAP Linux HOWTO2. IBM RedBooks: Understanding LDAP - Design and Implementation3. Recursos, ayudas, . . . : ldapman.org7.1. OpenLDAPImplementación open source del protocolo LDAPBasado en software desarrollado en la Universidad de MichiganIncluye cuatro componentes principales
slapd - demonio LDAP stand-alone (servidor)
slurpd - demonio de replicación y actualización de LDAP
librerías que implementan el protocolo LDAP
utilidades, herramientas, y clientes básicos
Más información sobre la conguración de OpenLDAP:1. OpenLDAP Administrator's Guide2. Integración de redes con OpenLDAP, Samba, CUPS y PyKota
7.2. Modelo de datos de LDAPUn directorio es una base de dato optimizada para lectura, navegación y búsqueda la información se almacena de manera jerárquica generalmente no se soportan transacciones complejas ni sistemas de recuperación las actualizaciones son cambios simples proporcionan respuestas rápidas a grandes volúmenes de búsquedasel directorio puede estar replicado y/o distribuido entre varios sistemas(p.e. DNS)LDAP organiza el directorio como una estructura jerárquica de entradas(nodos) en forma de árbol Cada entrada posee un conjunto de atributos, que pueden ser de diferentes tipos cada atributo se identica por su tipo y uno o más valores, los tipos son normalmente palabras nemotécnicas, como uid (identicador de usuario), cn (common name), c (country), dc (domaincomponent), etc. los diferentes atributos de un nodo están determinados por la clase a la que pertenece las clases permiten denir entradas con diferente información: clases para personas, para equipos, administrativas, etc. las clases se denen mediante cheros de esquema (schema).Cada nodo debe poseer un nombre único: nombre distinguido o dn(distinguished name) el dn identica de forma unívoca cada objeto en la base de datos Ejemplo: árbol de usuarios y grupos en LDAP, basado en nombres de dominios de Internet:cada nodo puede tener varios atributos, p.e. el nodo pepe podría tenerlos siguientes atributos:dn: cn=Jose Pena,ou=People,dc=midominio,dc=comobjectClass: accountuid: pepesn: Penadescription: alumnomail: pepe@midominio.com el formato en el que se muestran los atributos del objeto se denomina LDIF (LDAP Data Interchange Format ) formato de intercambio de datos para importar y exportar datosa un servidor LDAP
7.3. Instalación de un servidor LDAPDescribiremos como montar un servidor LDAP simple que nos permita lagestión de usuarios y gruposel servidor mantendrá la lista de usuarios y grupos del dominioen los clientes la autenticación de usuarios y los permisos se basará en el servidor LDAPPasos para la instalación del servidor en Debian
1. Instalar los siguientes paquetes:
a) slapd: servidor OpenLDAP
b) ldap-utils: utilidades del paquete OpenLDAPincluye comandos como ldapsearch, ldapadd
El comando slapcat permite ver la estructura creada Podemos hacer búsquedas sencillas con ldapsearch# ldapsearch -x -b dc=midominio,dc=com (cn=admin)
2. Ficheros de conguración:a) Fichero /etc/ldap/ldap.conf Fichero de conguración global para los clientes LDAP Permite especicar la base por defecto, el servidor LDAP, etc.(cambiarlo para poner nuestra conguración, comprobar quetiene permisos 644)Para más info, ver man ldap.confb) Fichero /etc/ldap/sldap.conf Fichero de conguración del demonio slapd En principio, no es necesario cambiarlo (comprobar que tienepermisos 600)
3. Crear la estructura de la base de datos: crearemos los nodos de Peopley Group del árbol LDAPa) Crear el siguiente chero estructura.ldif en formato LDIF:28dn: ou=People,dc=midominio,dc=comobjectClass: topobjectClass: organizationalUnitou: Peopledn: ou=Group,dc=midominio,dc=comobjectClass: topobjectClass: organizationalUnitou: Groupb) Añadir los nodos a la base de datos:# ldapadd -x -D 'cn=admin,dc=midominio,dc=com' -W -f estructura.ldif-x autenticación simple sin SASL (Simple Authentication andSecurity Layer )-D nombre distinguido con el que nos conectamos a LDAP(ponemos el del administrador)-W pide la contraseña de forma interaciva-f ichero a cargar
4. Añadir un usuario y un grupo a la base de datos
a) Crear un chero como este, que tiene la información para un usuarioy un grupo (½no useis acentos!):dn: cn=Jose Pena,ou=People,dc=midominio,dc=comobjectClass: topobjectClass: accountobjectClass: posixAccountobjectClass: shadowAccountuid: pepecn: Jose PenauidNumber: 2000gidNumber: 2000homeDirectory: /home/pepeloginShell: /bin/bashgecos: Jose Pena, Despacho 22,,dn: cn=pepe,ou=Group,dc=midominio,dc=comobjectClass: top29objectClass: posixGroupcn: pepegidNumber: 2000
dene un usuario pepe y un grupo pepe con información similar a la aparece en el fichero /etc/passwd
puede añadirse más información, como la que aparece en el -chero /etc/shadow: campos shadowMax, shadowExpire, shadowWarning,etc.
b) Añadir el chero con:# ldapadd -x -D 'cn=admin,dc=midominio,dc=com' -W-f user-group.ldif
c) Probarlo haciendo búsquedas, tipo:# ldapsearch -x uid=pepe
d) Añadir una contraseña al usuario: puede hacerse directamente metiendoun campo user Password en el chero anterior, pero es preferiblehacerlo mediante el comando ldappasswd
# ldappasswd -x 'cn=Jose Pena,ou=People,dc=midominio,dc=com'
cn=admin,dc=midominio,dc=com -W -S
5. Si queremos migrar la información de los cheros /etc o NIS a LDA Ppodemos usar el paquete MigrationTools (ver www.padl.com/OSS/MigrationTools.html)
6. Por último, también podemos querer instalar el servidor como cliente,por lo que debemos seguir los pasos indicados en la sección de instalación de un cliente
Fichero de conguración slapd.conf
Fichero de conguración del demonio slapd
Tiene dos partes:1. Directivas globales: distintos tipos de opciones del servidor, entre ellas los esquemas que el directorio debe conocer:
nis.schema define los atributos de objetos para las cuentas de usuario, grupos, etc.
se basa en los esquemas básicos core.schema y cosine.schema
inetorgperson.schema añade objetos con más información personalpara los usuarios
2. Directivas especícas para las distintas bases de datos Incluye el sufijo, directorio donde guardar la base, y el tipo de database a usar (por defecto bdb, Berkeley Database)También un conjunto de reglas de acceso de la forma:access to [by ]+ es una expresión que especica a qué datos del directoriose aplica la regla. Tres opciones:
a) puede indicarse todo el directorio mediante un asterisco (*)
b) un subconjunto de entradas cuyo nombre distinguido contieneun cierto sufijo (por ejemplo, dn=".*,dc=midominio,dc=com")c) un atributo concreto de dichos objetos (por ejemplo, dn=".*,ou=People,dc=midominio, indica a quién (a qué usuario(s)) se especica la regla; puede tomar diferentes valores, siendo los más comunes los siguientes:
 self el propietario de la entrada
dn="..." el usuario representado por el nombre distinguido
users cualquier usuario acreditado
anonymous cualquier usuarios no acreditado
* cualquier usuario indica qué operación concede la regla:
none sin acceso auth utilizar la entrada para validarse compare comparar search búsqueda read lectura write modificaciónPor ejemplo, la regla por defecto para userPassword permite quelos usuarios puedan autenticarse y cambiar sus propias contraseñasy el administrador las de todos
7.4. Instalación de un cliente LDAP Describiremos como como congurar un cliente para que acceda a la información almacenada en el directorio de LDAP del servidor
Dos pasos:
1. Congurar el Name Service Switch (chero /etc/nsswitch.conf)
2. Configurar el módulo de autenticación (PAM, Pluggable AuthenticationModules )
Los módulos necesarios para esta configuración pueden descargarse dela página de PADL (www.padl.com) o directamente como paquetesDebianEn algunas distros (RedHat) existe la herramienta authconfig que facilita esta configuración
Configurar el Name Service Switch
El NSS se encarga, entre otras, de realizar la correspondencia entre los nú-meros y nombres de usuario permite gestionar los permisos de acceso de usuarios a ficheros se congura a través del chero /etc/nsswitch.confla conguración de ese chero la vimos en el tema 5Pasos (hacerlos en un sistema diferente del servidor):
1. Instalar el paquete libnss-ldap En la conguración indicar la IP del servidor LDAP y el DN dela base del directorio LDAP esa conguración se guarda en el chero /etc/libnss-ldap.conf2. Modicar las líneas de passwd, group y shadow del chero nsswitch.conf
passwd: files ldap group: files ldap shadow: files ldap esto indica al NSS que busque la información primero en los cheros y, si no la encuentra, en el servidor LDAP
3. Probar que funciona:a) Hacer un finger al usuario denido en LDAP32# finger pepeLogin: pepe Name: Jose PenaDirectory: /home/pepe Shell: /bin/bash...b) Crear el directorio /home/pepe y cambiarle el propietario a pepe
c) Hacer un su - pepe para ver que podemos cambiar al usuario pepe en el clienteCongurar el módulo de autenticación.Aunque el usuario es válido en el cliente, todavía no podemos autenticarnos(entrar en la cuenta)Debemos congurar el servicio PAM.
PAM (Pluggable Authentication Module ) biblioteca de autenticacióngenérica que cualquier aplicación puede utilizar para validar usuarios,utilizando por debajo múltiples esquemas de autenticación alternativos(cheros locales, Kerberos, LDAP, etc.)permite añadir nuevos mecanismos de autenticación (Kerberos,LDAP,. . . ) sin tener que modicar los servicios de entrada al sistema como login, ftp, ssh, etc.PAM utiliza módulos que proporcionan autenticación en los serviciosde entrada al sistema: Módulos de autenticación (auth): comprobación de contraseñas (utilizado por el proceso de login para averiguar si lascredenciales tecleadas por el usuario (nombre y contraseña)son correctas) Módulos de cuentas (account): controlan que la autenticaciónsea permitida (que la cuenta no haya caducado, que el usuariotenga permiso de iniciar sesiones a esa hora del día, etc.) Módulos de contraseña (password): permiten cambiar contraseñas Módulos de sesión (session): conguran y administran sesionesde usuarios (tareas adicionales que son necesitadas parapermitir acceso, como el montaje de directorios, actualizacióndel chero lastlog, etc.)
Las librerías de PAM están en /lib/security y los cheros deconguración en /etc/pam.d/ (en versiones viejas, se congurabaa través del chero /etc/pam.conf)Existe un chero de conguración para cada servicio que usa PAM
También existen cheros comunes que son incluidos por los cheros de conguración: common-auth, common-account, common-passwordy common-session
Conguración de PAM para usar LDAP en el cliente seguimos lossiguientes pasos:
1. Instalar el paquete libpam-ldapCambiar el Root login account al DN del administrador LDAP
El resto de opciones dejarlas por defectoLa conguración es en el chero /etc/pam_ldap.conf Para más información, ver la página de manual de pam_ldap.conf NOTA sobre la conguración: en el último paso de la instalación nospide la clave del administrador de LDAP esta clave se guarda en plano en el chero /etc/pam_ldap.secret,y se usa para que el root del sistema pueda modicar directamentelas contraseñas de los usuarios si no se quiere tener ese chero con la clave, dejar vacío el campo clave y en el chero /etc/pam_ldap.conf comentar la línea que empieza por rootbinddn
2. Cambiar los cheros common-auth, common-account y common-password,añadiendo la siguiente línea:
sufficient pam_ldap.so cambiando por auth, account o password según corresponda
3. En el chero common-auth añadir use_first_pass después de pam_unix.so esto evita que a los usuarios no-LADP se les pida la contraseña dos veces
4. Podemos crear directorios home al vuelo: añadir lo siguiente al principio de common-session
session required pam_mkhomedir.so skel=/etc/skel/ umask=0022
al entrar el usuario en la cuenta, si no existe su HOME, se crea
5. Probar que funciona:
a) Entrar en la cuenta como un usuario LDAP
b) Cambiar la contraseña del usuarioInstalación del paquete nscd una vez que todo funciona, en el cliente podemos instalar el paquete nscd Name Service Cache Daemon
Hace caché para los nombres leidos del servidor LDAP
7.5. Migración desde cheros o NISS i tenemos un sistema congurado mediante cheros (passwd, shadow, etc.)o NIS, migrar a LDAP puede ser laboriosolos scripts del paquete MigrationTools son de gran ayuda Migración desde cherosPasos para migrar los usuarios denidos en /etc/passwd a LDAP
1. Instalar el paquete migrationtools
2. Modicar el chero /usr/share/migrationtools/migrate_common.ph para indicar el dominio y la base LDAP$DEFAULT_MAIL_DOMAIN = "midominio.com"$DEFAULT_BASE = "dc=midominio,dc=com"353. Utilizar los diferentes scripts del directorio /usr/share/migrationtools para incorporar la información del sistema al directorio migrate_base.pl genera entradas correspondientes a las unidades organizativas por defecto: People, Group, Hosts, etc. (ya lotenemos) Otros scripts generan entradas asociadas a diferentes cheros del sistema Script Migra
migrate_passwd.pl /etc/passwd /etc/shadow
migrate_group.pl /etc/group
migrate_hosts.pl /etc/hosts
migrate_fstab.pl /etc/fstab. . .
Estos scripts generan cheros LDIF que podemos añadir a la baseLDAP con ldapadd
Ejemplo: migración de los usuarios# ./migrate_passwd.pl /etc/passwd ./passwd.ldif
 debemos editar el chero generado para eliminar los usuariosdel sistema (root, nobody, etc.) luego, lo añadimos con:# ldapadd -x -D cn=admin,dc=midominio,dc=com-W -f ./passwd.ldif
7.6. Conguración de LDAP con múltiples servidoresPodemos congurar varios servidores LDAP que mantengan imágenes sincronizadas de la información del directorio equilibran la carga de las consultas, y mejora la tolerancia a fallos Esquema de maestro único y múltiples esclavos el maestro mantiene la copia principal sobre la que se hacen los cambios
2Puede dar problemas con los nombres acentuados
 si un cliente intenta hacer un cambio en un esclavo, este lo redirige automáticamente al maestro cada vez que se produce un cambio en el directorio del maestro, el servicio slapd escribe dicho cambio, en formato LDIF, en un chero de log el demonio slurpd lee dichos cambios e invoca las operaciones de modicación correspondientes en todos los esclavosPara congurarlo debemos hacer que el maestro y los esclavos partan de un estado de directorio común copiar manualmente la base de datos LDAP del maestro a todos losesclavosEn el maestro y en los esclavos debemos modicar el chero /etc/ldap/slapd.conf
Maestro: añadir una directiva replica por cada esclavo, donde se indiqueel nombre del esclavo y una cuenta con permiso de escrtitura enel LDAP del esclavo (bindn)replica uri=ldap://esclavo.midominio.com:389binddn="cn=Replicator,dc=midominio,dc=com"bindmethod=simple credentials=CONTRASEÑA_PLANA
 indicar el chero de log donde se guardan los cambiosreplogfile /var/lib/ldap/replog
Esclavo: añadir una línea updatedn indicando la cuenta con la que el servicio slurpd del servidor maestro va a realizar las modicacionesen la réplica del esclavo esa cuenta debe tener permisos de escritura en la base de datos del esclavo, y debe coindidir con la indicada en el campo binddn del maestro añadir una línea updateref para indicar al servidor esclavo que cualquier petición directa de modicación que venga de un cliente debe ser redireccionada al servidor maestroupdatedn "cn=Replicator,dc=midominio,dc=com"updateref ldap://maestro.midominio.com Para más detalles ver: OpenLDAP Administrator's Guide: Replication withslurpd7.7. Herramientas de administración de LDAPAdministrar LDAP desde línea de comandos resulta muy engorroso Existen numerosas herramientas visuales que facilitan la gestión deLDAP Algunas de ellas son:
1. phpldapadmin - interfaz basada en web para administrar servidores LDAP
2. gosa - herramienta de administración, basada en PHP, para gestión de cuentas y sistemas en LDAP
3. directory-administrator - herramienta gráca de gestión de directoriosLDAP
4. ldap-account-manager - webfrontend para gestión de cuentas enun directorio LDAP
5. gq - cliente LDAP basado en GTK+/GTK2 (bastante simple)
6. cpu - herramientas de gestión para consola: proporciona comandostipo useradd/userdel para usar con
Compartición Linux-Windows: Samba Samba permite a un sistema UNIX conversar con sistemas Windows a travésde la red de forma nativael sistema Unix aparece en el Entorno de red de Windowslos clientes Windows pueden acceder a sus recursos de red e impresoras compartidasel sistema UNIX puede integrarse en un dominio Windows, bien comoControlador Primario del Dominio (PDC) o como miembro del dominioVeremos una conguración básica de Samba; para saber más:
1. The Samba Homepage
2. The Ocial Samba-
3 HOWTO and Reference Guide3. The Unocial Samba HOWTO
4. The Linux Samba-OpenLDAP Howto5. Using Samba, 2nd Edition, O'Reilly & Associates6. Integración de redes con OpenLDAP, Samba, CUPS y PyKota7. Curso de Integración de Sistemas Linux/Windows8.1. Funcionamiento de SambaSamba implementa los protocolos NetBIOS y SMBNetBIOS: protocolo de nivel de sesión que permite establecer sesionesentre dos ordenadoresSMB (Server Message Block ): permite a los sistemas Windows compartircheros e impresoras (llamado Common Internet File System, CIFSpor Microsoft)Samba ofrece los siguientes serviciosServicios de acceso remoto a cheros e impresorasAutenticación y autorizaciónServicio de resolución de nombres.
Demonios SambaSamba utiliza dos demonios: smbd y nmdb
smdb permite la compartición de archivos e impresoras sobre una redSMB, y proporciona autenticación y autorización de acceso para clientesSMB; ofrece los dos modos de compartición de recursos existentesen Windows modo basado en usuarios o modo user (propio de los dominiosWindows NT o 2000) modo basado en recursos o modo share (propio de Windows3.11/95)nmbd permite que el sistema Unix participe en los mecanismos de resolución de nombres propios de Windows (WINS), lo que incluye anuncio en el grupo de trabajo gestión de la lista de ordenadores del grupo de trabajo contestación a peticiones de resolución de nombres anuncio de los recursos compartidosOtras utilidades SambaAdicionalmente a los dos programas anteriores, Samba ofrece varias utilidades;algunas de las más relevantes son:smbclient interfaz que permite a un usuario de un sistema Unix conectarsea recursos SMB y listar, transferir y enviar cherosswat (Samba Web Administration Tool ) utilidad para congurar Sambade forma local o remota utilizando un navegador websmbfs sistema de cheros SMB para Linux: permite montar un recursoSMB ofrecido por un servidor SMB (un sistema Windows o un servidorSamba) en un directorio localwinbind permite al sistema UNIX resolver nombres y grupos desde unservidor Windows8.2. Instalación básica de SambaVeremos una instalación básica de Samba en nuestro sistema Debian:permitirá desde un Windows acceder a los directorios de usuarios40Instalación de los paquetesEl paquete básico a instalar es samba que incluye los demonios de Sambainstala también el paquete samba-common, que incluye utilidades comosmbpasswd y testparmOtros paquetes de Samba son:smbclient herramientas para el cliente Sambasmbfs comandos para montar y desmontar smbfsswat Samba Web Administration ToolwinbindSólo instalaremos samba y samba-commonla instalación nos pide un nombre de Grupo de Trabajo/Dominio indicar un nombre, que debemos usar en el sistema Windows8.3. Conguración de SambaLa conguración de Samba se realiza en el chero /etc/samba/smb.confestablece las características del servidor Samba, así como los recursosque serán compartidos en la redEjemplo sencillo:[global]workgroup = MIGRUPO[homes]comment = Home Directories[pub]path = /espacio/pubEstructura del archivo smb.confEl chero /etc/samba/smb.conf se encuentra divido en secciones, encabezadospor una palabra entre corchetesEn cada sección guran opciones de conguración, de la forma etiqueta= valor, que determinan las características del recurso exportado porla sección41Existen tres secciones predenidas: global, homes y printersOtras secciones (como pub en el ejemplo anterior) denen otros recursospara compartirSecciones predenidas:[global] dene los parámetros de Samba a nivel global del servidor, porejemplo, el programa utilizado para que un usuario pueda cambiar suclave (passwd program)[homes] dene automáticamente un recurso de red por cada usuario conocidopor Samba; este recurso, por defecto, está asociado al directoriohome del usuario en el ordenador en el que Samba está instalado[printers] dene un recurso compartido por cada nombre de impresoraconocida por SambaNiveles de SeguridadSamba ofrece dos modos de seguridad, correspondientes a los dos modos decompartición de recursos ya vistosModo share: cada vez que un cliente quiere utilizar un recurso ofrecidopor Samba, debe suministrar una contraseña de acceso asociada a dichorecursoModo user : el cliente establece una sesión con el servidor Samba (medianteusuario y contraseña); una vez Samba valida al usuario, el clienteobtiene permiso para acceder a los recursos ofrecidos por SambaEl nivel de seguridad se especica con la opción security, la cual pertenecea la sección [global]security = share user server domain ADSLos niveles user, server, domain y ADS corresponden todos ellos al modo deseguridad userNivel user: el encargado de validar al usuario es el sistema Unix dondeSamba se ejecuta; es necesario que existan los mismos usuarios y conidénticas contraseñas en los sistemas Windows y en el servidor SambaNivel server: Samba delega la validación del usuario en otro ordenador,normalmente un sistema Windows 2000 (método no recomendado)42Nivel domain: el ordenador en el que se delega la validación debe ser unControlador de Dominio (DC), o una lista de DCs; el sistema Sambaactúa como miembro de un dominioNivel ADS: en Samba-3 permite unirse a un dominio basado en ActiveDirectory como miembro nativoEl modo por defecto es user8.4. Otros comandos SambaLa suite Samba incluye otros comandos, como son:testparm permite chequear el chero smb.conf para ver si es correctonet herramienta básica para administrar Samba y servidores SMB remotos;funciona de forma similar al comando net de DOSsmbpasswd permite cambiar la contraseña usada en las sesiones SMB;si se ejecuta como root también permite añadir y borrar usuarios delchero de contraseñas de Sambasmbstatus muestra las conexiones Samba activassmbclient permite a un usuario de un sistema Unix conectarse a recursosSMB y listar, transferir y enviar cheros8.5. PrácticasInstalar Samba en Linux y acceder a los directorios de usuario desde Windows20001. En el sistema Linux:a) Instalar los paquetes de Sambab) Examinar el chero de conguración por defecto, y modicarlo:jar el nivel de seguridad a userpermitir leer y escribir en los los HOME de los usuariosc) Para algún usuario existente, usar smbpasswd para añadir el usuarioal chero de contraseñas de Samba y ponerle una contraseña2. En el sistema Windows 2000a) Poner el grupo de trabajo al mismo que el indicado en Samba43b) Crear usuarios con el mismo nombre y contraseña que el usado enSambac) Acceder como ese usuario y ver que podemos ver y crear cherosen el HOME del sistema

miércoles, 23 de enero de 2008

tema 5b

4. Copias de seguridad
Realizar copias de seguridad es una de las tareas más importantes del administrador
del sistema Es casi inevitable que se produzcan pérdidas de información, debido a,
entre otras causas:
deterioro o borrado accidental por parte de un usuario autorizado
ataque intencionado por parte de personas no autorizadas
fallo del software o el hardware
incendio, robos, y desastres naturales, etc.
es imprescindible poder recuperar la información perdida
En esta sección veremos los comandos básicos para realizar copias de seguridad
en UNIX/Linux; para más información:
Backup & Recovery, W. Curtis Preston, O'Reilly, 2007
Linux System Administrators Guide: Capítulo 12, Backups
4.1. Estrategias para las copias de seguridad
Una buena estrategia para copias de seguridad debe tener las siguientes características:
Ser fácil de usar, preferiblemente si totalmente automática
Eficiencia y rapidez:
 compromiso entre el tiempo de backup y el tiempo de recuperación
Facilidad de restauración
Capacidad de vericar las copias
 difícil si el sistema está siendo usado continuamente
Tolerancia a fallos en los medias de almacenamiento (cintas, etc.)
necesidad de mantener al menos dos copias de los backups completos
del sistema
al menos una de las copias debe almacenarse en otro sitio
Portabilidad
 posibilidad de recuperar la información en diferentes sistemas
Componentes de las copias de seguridad
Hay básicamente tres componentes que intervienen en una copia de seguridad:
El planicador: decide que información se copia y cuando
El programa de copia: los comandos que mueven los datos de los discos
a los medios
Los medios de almacenamiento: cintas, CDs, etc.
El planicador: Decide cuando realizar el backup y cuanta informacióncopiar
normalmente el gestionado mediante cron
Según la información que salvemos podemos hablar de los siguientes tipos de
backup:
Completo se salva toda la información del sistema
Parcial sólo se salva la información más importante y difícil de recuperar
los ficheros de usuario,
los ficheros de conguración, p.e. /etc/passwd
directorios de correo, web, etc.
Incremental sólo se salvan los cheros modicados desde el último backup
completo o incremental
la copia de seguridad necesita menos tiempo y espacio
para restaurar los datos necesitaremos el último backup completo
y todos los incrementales
Diferencial se salvan los cheros modicados desde el último backup completo
los backups son más grandes que en el caso incremental para restaurar sólo necesitamos el backup completo y el último diferencial
Programa de copia: Se encarga de copiar los ficheros seleccionados en el
medio de almacenamiento; dos mecanismos básicos
Basado en imagen: accede al disco a bajo nivel
 normalmente copias más rápidas, pero mas lento restaurar ficheros individuales
 programas específicos para diferentes filesystems
comandos de este tipo son dump y dd
Fichero fichero
 acceden a los ficheros a través de llamadas al SO
 copias más lentas, pero restauración de ficheros individuales más
simple
comandos de este tipo son tar, cpio o afio
Medios de almacenamiento: Dispositivos donde se guarda la informaci
ón; los más populares son:
Cintas, principalmente cintas de 8 mm o DAT de 4mm con capacidades
hasta 72 GB
Dos dispositivos: cinta con no-rebobinado y con rebobinado (en
Linux para cintas SCSI /dev/nstX y /dev/stX respectivamente,
en Solaris /dev/rmt/X y /dev/rmt/X )
 Las cintas pueden controlarse a través del comando mt
Discos duros externos
Discos ópticos (CDs, DVDs)
 necesitan software adicional como mkisofs (crea imágenes ISO) y
cdrecord (graba en CDs o DVDs)
buenos cuando la cantidad de datos no es excesivamente elevada
4.2. Comandos básicos
Veremos los comandos básicos para hacer backups en UNIX: tar, cpio y dump
Comandos dump y restore
Comandos más comunes para copias de seguridad
comandos originales de BSD UNIX
dependen del tipo de filesystem
Comando dump: Hace copias de un sistema de archivos entero, con las
siguientes características:
Pueden ser copias multivolumen
Puede salvar ficheros de cualquier tipo (incluido ficheros de dispositivos)
Los permisos, propietarios y fechas de modicación son preservados
Puede realizar copias incrementales
También puede usarse para salvar cheros individuales (no es lo usual)
El formato y los argumentos de dump dependen de la versión utilizada, pero
en general es:
dump [-nivel] [opciones ] [ficheros_a_salvar ]
Nivel de dump: entero entro 0-9:
0 implica backup completo
 mayor que 0 implica copiar sólo los ficheros nuevos o modicados
desde el último backup de nivel inferior
 dump guarda información sobre los backups realizados en el chero
/etc/dumpdates o /var/lib/dumpdates
Algunas opciones:
-f especifica el dispositivo o fichero donde salvar la copia
 -u actualiza el chero dumpdates después de una copia correcta
 -a determina automáticamente el n de la cinta (opción por defecto)
 -j, -z usa compresión con bzlib o zlib (sólo en algunas versiones)
Ejemplo: backup de nivel 0 de la partición /home
# dump -0u -f /dev/st0 /home
Ejemplo: backup en una máquina remota usando ssh como transporte
# export RSH=ssh
# dump -0u -f sistema_remoto :/dev/st0 /home
Comando restore: Restaura cheros salvados por dump
Formato:
restore acción [opciones ] [ficheros_a_recuperar]
Acciones principales:
r restaura la copia completa
t muestra los contenidos de la copia
 x extrae sólo los cheros indicados
i modo interactivo
permite ver los ficheros de la copia
con add indicamos los ficheros a extraer y con extract los
extraemos
usar ? para ayuda
Algunas opciones:
-f especifica el dispositivo o fichero de la copia
-a no pregunta de que volumen extraer los fichero lee todos los
volúmenes empezando en 1)
Ejemplo: restaurar el backup de /dev/st0
# restore -rf /dev/st0
Ejemplo: restaurar el backup desde un sistema remoto
# export RSH=ssh
# restore -rf sistema_remoto :/dev/st0
Ejemplo: restaurar sólo un chero
# restore -xaf /dev/st0 fichero
Archivo restoresymtable: Se crea cuando se restaura un filesystem completo,
en el directorio donde se restaura
Contiene información sobre el sistema restaurado
Puede eliminarse una vez finalizada la restauración
Planicación de los backups
Podemos seguir diferentes estrategias a la hora de planificar los backups
Ejemplo 1: copia de nivel 0 mensual, de nivel 9 diaria y de nivel 5
semanal
necesita 6 o 9 cintas: una para el 0, 4 para los niveles 5 y 1 o 4
para los niveles 9
para restaurar necesitamos restaurar en orden:
1. la copia de nivel 0
2. la última copia de nivel 5, y
3. la última de nivel 9, después de la de nivel 5
Ejemplo 2: copia de nivel 0 mensual, de nivel 2 semanal y de niveles 3,
4, 5 y 6 cada día
necesita al menos 9 cintas
para restaurar necesitamos restaurar en orden:
1. la del nivel 0
2. la del último viernes (nivel 2)
3. las diarias desde el último viernes de forma consecutiva
Prácticas
Utilizando dump haz un backup de nivel 0 de la partición /home en un
fichero en el directorio tmp
 Como usuario, modica algún chero en el directorio home
 Haz una copia de nivel 9 de la partición /home
Borra los ficheros del directorio /home y restauralos a partir de las
dos copias de seguridad
Comando tar (Tape ARchiver)
Permite almacenar varios cheros en uno sólo, manteniendo la estructura de
directorios:
Sintaxis:
tar [-]función [modificador ] fichero [directorio ]
Ejemplo: crea un fichero tar conteniendo los ficheros del directorio /etc
tar cvf copia.tar /etc
Puede indicarse un fichero o un dispositivo (p.e. /dev/fd0)
tar conserva las propiedades de los ficheros: permisos, usuario/grupo,
fechas, etc.
Funciones principales:
c crea un nuevo archivo tar
x extrae los ficheros del archivo
t lista los ficheros del archivo
 r añade nuevos cheros al nal del archivo tar
 u almacena sólo los cheros nuevos o modicados respecto a los
del archivo tar
 A añade un fichero tar a otro
d obtiene las diferencias entre los ficheros de la copia y los del disco
--delete borra un fichero del archivo tar
Algunas opciones:
 v verbose, muestra lo que está haciendo
f para indicar el nombre del fichero tar; por defecto toma - que
representa la entrada/salida estándar
z comprime la copia con gzip
-- bzip2 o j comprime la copia con bzip2
 l almacena sólo los cheros locales (útil con NFS)
k no sobreescribe los ficheros existentes al extraer
T o --files-from F obtiene la lista de ficheros a guardar del
fichero F
X o --exclude-from=F excluye los ficheros que concuerdan con
los patrones listados en el fichero F
 N o --newer DATE sólo guarda los cheros más nuevos que DATE
M o --multi-volume permite crear copias multivolumen (por ejemplo,
varios disquetes) para más opciones ver la página de info (info tar)
Ejemplos:
Extrae todos los ficheros de copia.tar
tar xvf copia.tar
Extrae el el fichero passwd de copia.tar
tar xvf copia.tar etc/passwd
Copia el contenido de /tmp directamente a un disquete
tar cvf /dev/fd0 /tmp
Copia un directorio completo
(cd dir1 && tar cf - .) | (cd dir2 && tar xvf -)
 Copia los cheros más nuevos que un chero control
find dir -newer control ! -type d -print | tar cvfT
f.tar -
Problemas con tar
 Algunas versiones no admiten opciones como la compresión o copia
multivolumen
 Algunas versiones tienen problemas con paths muy largos (más de
100 caracteres)
Comando cpio
El comando cpio es similar a tar en funcionalidad
crea y extrae archivos, o copia ficheros de un lugar a otro
maneja archivos en formato cpio y formato tar
Tres funciones primarias:
1. Copy-out: copia ficheros a un archivo, con la opción -o
Ejemplo: copia todos los directorios desde el actual en el chero
tree.cpio
$ find . | cpio -ov > tree.cpio
para usar un dispositivo en lugar de un fichero, sustituir tree.cpio
por /dev/dispositivo
2. Copy-in: extrae los cheros de un archivo, con la opción -i
$ cpio -idv < tree.cpio
la opción d crea los directorios al ir extrayendo
3. Copy-pass: usado para copiar cheros de un árbol de directorios a otro,
con la opción -p
Ejemplo: copia los cheros del directorio actual y subdirectorios a
un nuevo directorio new-dir
$ find . -depth -print0 | cpio --null -pvd new-dir
la opción -depth procesa primero el contenido del directorio y
después el directorio (mejor para restaurar)
las opciones -print0 y --null evitan problemas con nombres de
cheros que contengan un carácter de newline
-print0 termina los nombres de los cheros con un '\0' en
vez de '\n'
--null o -0 lee una lista de ficheros terminados por un '\0'
Para más opciones y uso de cpio ver la página de información: info
cpio
Comando afio
Variación de cpio, con varias mejoras:
Permite hacer copias multivolumen
Permite archivar los ficheros comprimiendolos de uno en uno
No comprime los ficheros que no interesa comprimir por que ya lo
están (reconoce por extensión) Permite vericar la copia con el original (opción -r)
Modos de funcionamiento similares a cpio
-o guarda a archivo, -i extrae de un archivo y -p copia directorios
otras opciones: -r verica el archivo con el filesystem; -t muestra el
contenido del archivo
Ejemplos:
Salvar a disquete multivolumen comprimido
$ find . | afio -ov -s 1440k -F -Z /dev/fd0
Comprobar con el original una copia comprimida en varios disquetes
$ afio -rv -s 1440k -F -Z /dev/fd0
Muestra el contenido del archivo:
$ afio -tv -s 1440k -F -Z /dev/fd0
Extrae el contenido del archivo
$ afio -iv -s 1440k -F -Z /dev/fd0
Copia los ficheros del directorio actual y subdirectorios a un nuevo
directorio new-dir
$ find . -depth -print0 | afio -p0xa directorio_nuevo
Para opciones ver la página de manual
Comando dd
Comando de copia y conversión de ficheros
Sintaxis.
dd [if=fichero_entrada ] [of=fichero_salida ] [opciones]
Por defecto, copia de la entrada estándar a la salida estándar
Algunas opciones:
 ibs=b lee b bytes de cada vez (tamaño de bloque, por defecto
512)
obs=b escribe b bytes de cada vez
bs=b lee y escribe b bytes de cada vez
 cbs=b especica el tamaño del bloque de conversión
skip=n salta n bloques del fichero de entrada antes de la copia
seek=n salta n bloques del fichero de salida antes de la copia
 count=n copia sólo n bloques del chero de entrada
 conv=conversión convierte el formato del chero de entrada seg
ún el valor de conversión :
ascii Convierte EBCDIC a ASCII
ebcdic Convierte ASCII a EBCDIC
swab Intercambia cada par de bytes de la entrada
 lcase Cambia las letras mayúsculas a minúsculas
 ucase Cambia las letras minúsculas a mayúsculas
 noerror Continúa después de producirse errores de lectura
Ejemplo: imagen de floppy de 3.5, con 18 sectores por pista, dos cabezas
y 80 cilindros:
$ dd bs=2x80x18b if=/dev/fd0 of=/tmp/floppy.image
la b representan bloques de 512 bytes (en total 1474560 bytes)
la copia se realiza de una sola vez
Ejemplo: extrae los datos de una cinta con error
$ dd conv=noerror if=/dev/st0 of=/tmp/bad.tape.image
Ejemplo: tar del directorio actual y copia en cinta en el sistema remoto
$ tar cjf - . | ssh remoto dd of=/dev/st0
Comando mt
Permite la manipulación directa de la unidad de cinta
Sintaxis.
mt [-f unidad_de_cinta ] operación [número ]
con -f indicamos la unidad de cinta a utilizar:
si se omite se toma la definida en la variable TAPE
Algunas operaciones:
stat(us) muestra el estado de la unidad de cinta
rew(ind) rebobina la cinta hasta el principio
 ret(ension) alisa y da tensión a la cinta (rebobina hasta el principio,
luego hasta el final y nuevamente al principio)
erase borra la cinta entera
 fsf/bsf se avanza/retrocede el número de archivos especicado
por número
eom salta hasta el final de parte grabada
4.3. Otras aplicaciones
Existen otros comandos que permiten hacer backups y sincronizar ficheros:
bacula, rdist, rsync, etc.
Bacula
Sosticado sistema de backup en red con diseño modular
Permite hacer copias de seguridad de todas las máquinas de una LAN
a diferentes medios de backups (cinta, disco,. . . )
Soporta MySQL, PostgreSQL o SQLlite para el catálogo
Hace backups de sistemas UNIX, Linux y Windows
Para más información, ver www.bacula.org/dev-manual/What_is_Bacula.html
o la sección 9.8 del libro UNIX System Administration Handbook, Evi
Nemeth et al.
Amanda
Amanda: Advanced Maryland Automatic Network Disk Archiver
Sofisticado sistema de backup en red Permite hacer copias de seguridad de todas las máquinas de una LAN a una unidad de cinta en un servidor
Está disponible en la mayoría de los UNIX y soporta muchos tipos de medios de backup
Puede hacer uso de SAMBA para copias de sistemas Windows NT
Se basa en dump y tar
Para más información, ver www.amanda.org/docs
Flexbackup
Flexbackup Herramienta de backup exible para instalaciones de pequeño y
medio tamaño
Más simple de congurar y utilizar que Amanda para sitios con un número no muy alto de sistemas
Usa distintos formatos de archivo: dump, afio, GNU tar, cpio, zip, etc.
Permite backups completos e incrementales, como dump
Permite backups remotos a través de rsh o ssh
Para más información, ver exbackup.sourceforge.net
rdffi-backup
rdiff-ackup copia un directorio en otro, permitiendo copias remotas
Hace una copia exacta de los directorios (mirror ), guardando las propiedades
de los ficheros (propietario, permisos, etc.)
Guarda las diferencias entre copias de los ficheros para poder recuperar
unfichero antiguo (incremental )
Sólo transmite las diferencias de los cheros (similar a rsync)
Para más información ver www.nongnu.org/rdi-backup
DAR
DAR Disk ARchiver comando para hacer backups de árboles de directorios
y ficheros
Permite copiar un filesystem entero a un archivo
Permite hacer backups completos y diferenciales
Permite hacer copias multivolumen:
divide en archivo en varios ficheros (slices) parando antes de crear
cada nuevo slice
interesante para hacer copias en floppy, CD o DVD
Más información en: dar.linux.free.fr
Comando rdist
Permite distribuir cheros desde un servidor central a varias máquinas
sólo copia los cheros modicados, preservando el propietario, grupo,modo y fechas de modicación
las versiones actuales pueden funcionar sobre ssh (las antiguas funcionaban
sobre rlogin, con problemas de seguridad)
utiliza un fichero distfile que especifica las acciones a realizar
Ejemplo de distfile
SYS_FILES = (/etc/passwd /etc/group /etc/mail/aliases)
HOME_DIRS = (/home/tomas /home/al*)
GET_ALL = (maquina1 maquina5 maquina6)
GET_SOME = (maquina2 maquina8)
all: ${SYS_FILES} -> ${GET_ALL}
notify tomas@localhost;
special /etc/mail/aliases /usr/bin/newaliases;
some: ${SYS_FILES} -> ${GET_SOME}
except /etc/mail/aliases;
ejemplo de uso:
# rdist -f distfile
Comando rsync
Similar a rdist aunque funciona de forma diferente
más eciente que rdist, sólo transmite las diferencias entre cheros
no usa chero de conguración: funciona de forma similar a rcp
ejemplo:
# rsync -av /home/tomas maquina1:/tmp
ver la página de manual de rsync para más detalles
Unison
Aplicación para sincronizar cheros y directorios entre sistemas
puede sincronizar entre sistemas Windows y UNIX
no requiere permisos de root
permite sincronización en los dos sentidos
las transferencias se optimizan usando una versión de rsync
tiene un interfaz gráco sencillo
para ver un tutorial de uso, hacer:
$ unison -doc tutorial
Imágenes del sistema
Herramientas que nos permiten obtener imágenes completas del sistema para
copias de seguridad o réplicas (clones)
Norton Ghost herramienta comercial de Symantec para copias de seguridad
e imágenes del sistema
Partimage salva particiones completas a un fichero de imagen
permite recuperar la partición completa en caso de errores
permite realizar clones de un PC
Clonezilla aplicación opensource para hacer clones masivos
permite hacer clones de múltiples PCs (40 o más) simultáneamente
puede usar multicast para distribuir las imágenes
basado en DRBL (Diskless Remote Boot in Linux ) y Partimage
SystemImager herramienta para automatizar la instalación de Linux y la
distribución de software en una red de PCs
usado en clusters, granjas de servidores o redes en general
5. Servicios de impresión
Los sistemas UNIX/Linux aceptan normalmente varios sistemas de impresión:
BSD LPD (Line Printer Daemon) o LPR diseñado para UNIX BSD:
 uno de los sistemas más utilizados, aunque un tanto anticuado
utiliza los comandos lpr, lpq, lprm y lpc para enviar, borrar y
ver los trabajos de impresión
 el demonio lpd gestiona las colas y el proceso de impresión
puede combinarse con software como el Ghostscript para dar soporte
a impresoras no-PostScript
Ghostscript (comando gs) permite convertir ficheros PostScript
o PDF al PDL (Page Description Language) de una
impresora no-PostScript
System V Printing sistema de impresión de UNIX System V
menos utilizado (p.e. Solaris), aunque, por compatibilidad, la mayor
ía de los sistemas lo soportan utiliza comandos como lp, lpadmin, lpstat, cancel, accept,
reject, etc.
el demonio lpsched determina donde y cuando un trabajo debeimprimirse
LPRng mejora sobre el BSD LPR mantiene los mismos comandos que el BSD, aunque permite usar comandos tipo System V  la conguración es similar a BSD y es compatible con LPR
introduce importantes ventajas:
 permite correr gran parte del sistema de impresión como usuario
sin privilegios (no root)
 produce mejores mensajes de diagnóstico y error
 soporta autenticación de sistemas remotos mediante SSL, Kerberos o PGP
 incorpora herramientas grácas de conguración como LPRng-Tool
 Para más información www.lprng.com
CUPS (Common Unix Printing System) nueva arquitectura de impresión para sistemas UNIX
 nuevo sistema de conguración, aunque mantiene los comandos de BSD y SV
 diseñado para que clientes y servidores usen CUPS  puede descubrir impresoras en red de forma automática (CUPS Browsing)  usa el protocolo IPP (Internet Printing Protocol ) para impresión remota
utiliza drivers PPD (PostScript Printer Description ) para identificar las capacidades de la impresora (tanto PostScript como noPostScript)
 tiene muchos interfaces gráficos de configuración (Kups gnome-cups-manager
o ESP Print Pro (comercial)) incluido un interfaz web a través del
puerto 631
5.1. BSD LPD
Dos ficheros básicos de conguración:
fichero de definición de impresoras /etc/printcap
permisos de acceso en red: /etc/hosts.lpd
contiene una lista de los hosts (estacion1.tudominio.org, etc), uno
por línea, a los que se les permite utilizar los servicios lpd del servidor
Fichero /etc/printcap
Define una serie de entradas, cada una indicando una cola del sistema de
impresión:
Ejemplo de /etc/printcap
lp|local|Impresora local genérica:\
:lp=/dev/lp0:\
:sd=/var/spool/lpd/lp:\
:af=/var/log/lp-acct:\
:lf=/var/log/lp-errs:\
:mx#0:\
:sh:
lpremota|jumilla-lp|Impresora remota en jumilla:\
:lp=:\
:rm=jumilla:\
:rp=lp:\
:sd=/var/spool/lpd/lpremota:\
:mx#0:\
:sh:
Alguna de las variables de printcap son:
 lp dispositivo al que está conectado la impresora (/dev/lp0 primer
puerto paralelo)
rm y rp nombre o IP del sistema remoto que gestiona la impresora,
y nombre de la impresora en ese sistema
sd directorio de spool ; debe tener el mismo nombre que la impresora
lf y af fichhero de log de error y de contabilidad
 mx tamaño máximo del chero aceptado (un 0 indica ilimitado)
 sh si presente, suprime cabeceras en la impresión
Comandos de impresión BSD
Principales comandos en BSD
lpr envía un trabajo a la cola de impresión por defecto
la impresora por defecto denfinida en la variable PRINTER
 con la opción -P podemos especicar otra cola
Ejemplo:
$ lpr -Pepson datos.txt
lpq muestra los trabajos existentes en la cola de impresión
$ lpq -Pepson
epson is ready and printing
Rank Owner Job File(s) Total Size
active tomas 375 datos.txt 8192 bytes
lprm elimina un trabajo de la cola:
$ lprm -Pepson 375
lpc permite activar/desactivar colas y/o impresoras, mover trabajos en
el orden de las colas, ver el estado de las impresoras, etc.
debe ejecutarse como root
dentro de lpc, usando help vemos las opciones
lpc> help
Commands may be abbreviated. Commands are:
abort enable disable help restart status topq ?
clean exit down quit start stop up
lpc> status
lp:
queuing is enabled
printing is enabled
no entries
printer idle
5.2. CUPS
Funcionamiento básico:
Scheduler se encarga de gestionar los trabajos y las colas de impresión
implementa IPP (Internet Printing Protocol ), aceptando trabajos
remotos
incorpora un módulo de autorización
Sistema defiltrado convierte los datos a imprimir en el PDL (Page description
language) de la impresora particular
utiliza tipos MIME para definiir los tipos de ficheros conocidos y
las aplicaciones para procesarlos los ficheros pueden ser convertidos a PostScript o directamente adatos raster (bitmap)
el PostScript es tratado por un pre-filtro ps-to-ps para indicar opciones de impresión (páginas a imprimir, etc.) y convertido a CUPS-raster por un filtro tipo Foomatic1 o Ghostscript
1foomatic es un nuevo sistema que permite integrar drivers de impresoras en los sistemas de impresión de UNIX (LPD, CUPS, LPRng, etc.)
Ficheros de conguración
Los archivos de conguración de CUPS están en el directorio /etc/cups:
/etc/cups/cupsd.conf archivo de conguración del servidor cups
permite especificar el control de acceso a las impresoras
/etc/cups/client.conf archivo de conguración del lado cliente
permite indicar el servidor cups a utilizar
/etc/cups/printers.conf especica la denición de las impresoras
/etc/cups/mime.types define los tipos de ficheros conocidos por CUPS
/etc/cups/mime.convs indica los programas que procesarán cada tipo
MIME
Conguración de un servidor CUPS en Debian
1. Instalar el paquete cupsys
2. Instalar la impresora mediante interfaz web
a) Conectarse a http://127.0.0.1:631
b) Ir a Tareas de administración y entrar con el usuario root
c) Seleccionar Añadir Impresora e indicar los datos de la nueva impresora:
Nombre de la cola de impresión, ubicación física de la impresora
y descripción de la misma
d) Seleccionar el tipo de conexión:
AppSocket/HP JetDirect Dispositivo especial para acceder a impresoras
remotas a través de una conexión HP JetDirect
Internet Printing Protocol (IPP o HTTP) Para acceder a una
impresora remota a través del protocolo de impresión de Internet,
bien directamente (IPP) o bien a través de HTTP
LPD/LPR Host or Printer Impresora remota conectada a un servidor
LPD/LPR, o que soporta directamente LPD
Parallel Port #1, USB Printer impresora local conectada a puerto
paralelo o USB
e) Indicar el URI para conexión remota:
Un servidor de impresión LPD requiere la sintaxis lpd://hostname/queue
Una impresora HP JetDirect requiere la sintaxis
socket://hostname o socket://nombre_ordenador:9100
Una impresora IPP requiere la sintaxis
http://hostname:631/ipp/queue o ipp://hostname/ipp/queue
f ) Indicar el fabricante y modelo de impresora:
podemos obtener cheros PPD para más modelos en www.linuxprinting.org
estos ficheros se guardan en /usr/share/cups/model
en Debian podemos instalar paquetes como cupsys-driver-gutenprint o foomatic-filters-ppds
g) Una vez añadida, podemos configurarla en el menú de Impresoras
3. Dar permisos de acceso a los clientes en el fichero
/etc/cups/cupsd.conf
Si queremos que los sistemas de nuestra red local puedan imprimir
a través de este servidor, debemos modicar el chero de la
siguiente forma:
# Permitir acceso remoto a la impresora
Listen *:631

Order Deny,Allow
Deny All
Allow localhost
Allow @LOCAL # podemos indicar direcciones como 193.144.84.*

Si estamos interesados en la administración remota:

Order Deny,Allow
Deny All
Allow localhost
Allow @LOCAL

Para poder cambiar los cheros de conguración:

AuthType Basic
Require user @SYSTEM
Order deny,allow
Deny all
Allow localhost
Allow @LOCAL

Las directivas BrowseXXX permiten que publiquemos en la red,
mediante broadcasts, las impresoras que hemos definido
 Browsing On activa el envío de información sobre las impresoras
BrowsePort n puerto usado para los broadcasts UDP
BrowseInterval t intervalo en segundos entre broadcasts
Podemos usar el programa cupsdconf para congurar estas opciones
Conguración de un cliente CUPS en Debian
1. Instalar el paquete cupsys-client
proporciona comandos de impresión tipo System V
2. Modificar el fichero /etc/cups/client.conf
Indicar el nombre o la IP del servidor CUPS:
ServerName nombre_del_servidor
3. Imprimir usando los comandos System V:
Ver las impresoras a las que tenemos acceso:
lpstat -a
Seleccionar una impresora por defecto:
lpoptions -d impresora
Imprimir un fichero:
lp -d impresora fichero
4. Si queremos usar los comandos BSD instalar el paquete cupsys-bsd
6. El sistema X Window
Entorno operativo gráco con soporte en red
Desarrollado en el MIT a partir del proyecto Athena
En 1987, lanzada la versión X11
En 1988 se constituye X Consortium para controlar el desarrollo de X
En 1994, versión X11R6 (X11 Release 6 )
En 1998, el gobierno de X pasa a The Open Group, que, en 1999, forma X.Org
Versiones de X usadas en Linux: XFree86 y Xorg Server
XFree86 originada en 1992 a partir de X386, versión de X para PCs
 En febrero de 2004 sale la versión XFree86 4.4 con una licencia
más restrictiva
 Última versión 4.7.0 (agosto 2007)
En 2004 se constituye The X.Org Foundation, para proporcionar una
versión open source del sistema X Window
 Primera versión de Xorg Server : X11R6.7.0, basada en XFree86
4.4RC2 y X11R6.6
 Última versión X11R7.3 (o 1.4.0) de septiembre 2007
 Las últimas distribuciones Linux instalan normalmente Xorg
6.1. Arquitectura de X window
Sistema cliente-servidor
 el servidor muestra la aplicación que se está ejecutando en el cliente  servidor/cliente pueden residir en la misma máquina o en máquinas distintas
 El servidor ejecuta el módulo X server
En el cliente se ejecutan aplicaciones que se conectan al servidor
X para visualización
Gestores de ventanas
El servidor permite que las aplicaciones cliente se muestren, pero no proporciona
mecanismos de control de ventanas
necesidad de un gestor de ventanas
proporciona funcionalidades como bordes de ventanas, iconos, escritorios
virtuales, etc.
 existen múltiples gestores de ventanas a elegir por el usuario como
twm, Afterstep, Blackbox, Fluxbox, Enlightenment, XFCE,
Fvwm, Dtvwm, Icewm, Metacity, etc.
Los entornos de escritorio como KDE o GNOME proporcionan tambi
én un conjunto de aplicaciones como gestores de cheros, paneles de
control, etc.
todas mantienen un mismo look-and-feel
Fichero de conguración
El fichero de conguración principal está en /etc/X11 y es XF86Config o
XF86Config-4 para XFree v4 y xorg.conf para Xorg
Fichero dividido en secciones con sintaxis:
Section "Nombre_de_sección "
Opciones
EndSection
las secciones permiten configurar entre otros:
 el monitor y la tarjeta gráca (secciones Monitor, Device y Screen)
 los dispositivos de entrada: teclado, ratón, etc. (secciones InputDevices)
 módulos para OpenGL, DRI (Direct Rendering Infrastructure )
etc. (sección Modules)
 ficheros necesarios: módulos, base de datos RGB, fuentes (sección
Files) dispositivos de entrada/salida que se usarán en la sesión (sección
ServerLayout)
Para más información ver man XF86config-4 o man xorg.conf
Este fichero puede modificarse a mano, o usando herramientas de configuración como:
XF86Setup, xf86cfg o xorgcfg: herramienta de conguración gráca
xf86config o xorgconfig herramienta de conguración en modo texto
xvidtune ajuste fino de la imagen
en Debian dpkg-reconfigure xserver-xfree86 o dpkg-reconfigure
xserver-xorg
Para obtener información sobre el servidor X que está ejecutándose: xdpyinfo
6.2. Inicio de X
Hay varias formas de iniciar una sesión X11:
Iniciar sólo el servidor (comando X) y después las aplicaciones
Iniciar el entorno (servidor + gestor de ventanas): comando startx
Correr un Display Manager como XDM
Comando startx
El comando startx es un script que:
fija variables, como el gestor de ventanas a utilizar y llama al comando xinit que inicializa el sistema X Window
startx usa los siguientes ficheros para establecer la conguración:
$HOME/.xinitrc (en Debian $HOME/.xsession) para determinar el
cliente a usar (entorno de escritorio, gestor de ventanas, etc.)
si no existe, se usa /etc/X11/xinit/xinitrc que suele llamar a
/etc/X11/Xsession o Xclient
$HOME/.xserverrc que especifica la forma de llamar al servidor X
si no existe, se usa /etc/X11/xinit/xserverrc
Display managers
Un display manager permite realizar la autenticación del usuario en modo
gráco
El DM por defecto de XFree86 es XDM
Los entornos KDE y GNOME tienen sus propios DM: KDM y GDM
respectivamente
Cada DM tiene sus propios cheros y herramientas de conguración:
el fichero de configuracion de XDM es /etc/X11/xdm/xdm-config
 el chero de conguración de GDM es /etc/gdm/gdm.conf y puede
configurarse mediante el comando gdmsetup
6.3. Ejecución remota de clientes
Para poder ejecutar un cliente X remoto es necesario dar autorización en el
servidor:
X soporta diferentes mecanismos de autorización
el control de acceso es usualmente inicializado por el display manager
Mecanismos de autorización básicos.
 el más simple es mediante el comando xhost
 otra opción es mediante MIT-MAGIC-COOKIE-1 o XDM-AUTHORIZATION-
1 y el comando xauth
 ssh también permite conexiones X seguras
 Mejor opción: conectarse mediante Display Manager y usar
ssh para correr aplicaciones X remotas
 Para más información:
 página de manual de Xsecurity (XFree) y xauth
Remote X Apps mini-HOWTO
Comando xhost
Permite controlar el acceso a un servidor X
Sintaxis:
xhost [[+-] sistemas_remotos ]
Sin opciones muestra el estado de las autorizaciones
+ da permisos y - los quita
Problema: los permisos se establecen por máquina, no por usuario
todos los usuarios del sistema remoto tienen acceso al servidor X
para dar acceso por usuario usar xauth o ssh
Ejemplo
$ xhost + jumilla montilla
jumilla being added to access control list
montilla being added to access control list
$ xhost
access control enabled, only authorized clients can
connect
INET:jumilla
INET:montilla
$ xhost +
access control disabled, clients can connect from any
host
$ xhost -
access control enabled, only authorized clients can
connect
En el cliente tenemos que indicarle quien es el servidor, mediante la
variable DISPLAY
$ export DISPLAY=servidor:0.0
El formato es:
DISPLAY=Nombre_o_IP :display.screen
 si sólo un usuario está usando el servidor X display es 0
 screen sólo se usa en entornos multipantalla
 También se puede lanzar la aplicación cliente como:
xcliente -display Nombre_o_IP :display.screen
XDMCP
El protocolo XDMCP (X Display Manager Control Protocol ) permite acceder
directamente al Display Manager desde un sistema remoto
el DM debe estar configurado adecuadamente para soportar XDMCP
XDMCP usa UDP puerto 177
desde el sistema remoto ejecutar, simplemente:
# X -query server_name
Puede buscar en la red local un servidor corriendo XDMCP
# X -broadcast
Puede utilizarse mediante un selector, que nos muestra una lista de
hosts corriendo XDMCP a los que conectarnos
# X -indirect server_name
Para más informacion ver el XDMCP HOWTO

Tema 5a

1. Gestión de usuarios y grupos
Todo usuario de un sistema UNIX debe tener una cuenta para poder acceder
Cuenta UNIX: colección de características lógicas que especican quien
es el usuario y lo que puede hacer en el sistema
Estas características incluyen:
el nombre de usuario (login o user name)
 la contraseña (passwd)
grupo o grupos a los que pertenece
 un identicador numérico (UID)
 un identicador numérico del grupo por defecto (GID)
un directorio home
un login shell
 una colección de cheros de inicio
Dentro de las cuentas asociadas a usuarios podemos encontrar diferentestipos.
cuentas normales de usuario
cuenta del administrador (root)
cuentas especiales de los servicios (nobody, lp, bin, etc.):
usadas por servicios internos del sistema
aumentan la seguridad, al permitir que servicios del sistema no se
ejecuten como root
1.1. Ficheros de información de los usuarios
La información de los usuarios y grupos está incluida en los siguientes
archivos:
/etc/passwd mantiene la información principal de cada cuenta: nombre
de usuario, UID, GID, login shell, directorio home, contraseña (en
sistemas antiguos), . . .
/etc/shadow en sistemas actuales, fichero sin permiso de lectura que
guarda las contraseñas encriptadas
/etc/group información sobre los grupos denidos en el sistema. nombre
del grupo, GID y miembros del mismo
/etc/gshadow contraseñas para grupos (no suele usarse)
Fichero /etc/passwd
Ejemplo de líneas de /etc/passwd:
root:x:0:0:root:/root:/bin/bash
pepe:x:1002:1002:Pepe Pótamo,123,981234321,:/home/pepe:/bin/bash
donde se indican (si aparecen :: seguidos, el campo está vacío):
pepe: identicación de usuario en el sistema, que deberían tener las
siguientes características
 únicos en toda la organización (no sólo en la máquina local)
 preferiblemente corto, en minúsculas y sin caracteres acentuados
(para evitar problemas)
 fácil de recordar
de formato fijo para todos los usuarios (p.e. nombre+apellido)
x: contraseña encriptada
 si aparece una x la contraseña está en el chero /etc/shadow
1002: UID número identicador del usuario
 para usuarios normales, número entre 1000 y 32767 (o 65535 ensistemas actuales)
 números por debajo de 1000 para usuarios especiales del sistema(root usualmente número 0)
 el UID para un usuario debería ser único, y el mismo para todaslas máquinas
se debe evitar reutilizar un UID, para evitar problemas de pertenencia de archivos
1002: GID código del grupo principal al que pertenece el usuario
Pepe Pótamo,123,...: información GECOS
cualquier cosa, usualmente el nombre completo del usuario y información adicional (n. de despacho, teléfono, etc.)
/home/pepe: directorio personal del usuario
/bin/bash: shell interactivo que utilizará el usuario
Fichero /etc/shadow
Fichero de acceso restringido que almacena las contraseñas encriptadas:
pepe:$1$.QKDPc5E$SWlkjRWexrXYgc98F.:12825:0:90:5:30:13096:
Contiene para cada usuario la contraseña encriptada y otros campos separados
por :
día, contado como número de días desde el 1/1/1970 (también conocido
como epoch), en que la contraseña se cambió por última vez
 si vale 0 se fuerza a que el usuario cambia su contraseña la primeravez que se conecta
número de días antes de que pueda ser cambiada número de días de validez de la contraseña
días en que se avisa al usuario de que la contraseña va a caducar
días, una vez expirada, en que se deshabilitará la cuenta
día, desde el 1/1/1970, en que la cuenta se inhabilitará
si no aparece nada, la cuenta no se inhabilita nunca
un campo reservado
Fichero /etc/group
Información sobre los grupos de usuarios
users:x:100:pepe,elena
donde tenemos
nombre del grupo
contraseña del grupo (no suele usarse)
si x, se guarda en el fichero /etc/gshadow
grupo:contraseña:administradores:miembros
 los administradores pueden cambiar la contraseña, añadir usuarios
al grupo, etc.
 la contraseña puede jarse/cambiarse con el comando gpasswd
GID identicador numérico del grupo
lista de usuarios que pertenecen al grupo
Cambio de grupo
un usuario puede cambiar de grupo con newgrp
 si el grupo no tiene contraseña y no está en gshadow sólo pueden
cambiar los miembros del grupo
 si el grupo tiene contraseña, el usuario debe especificar la contraseña
si el grupo aparece en gshadow, la lista de miembros en estefichero
pueden cambiar sin contraseña
Otros ficheros
Cuando se crea un nuevo usuario, los ficheros de inicio se copia del directorio
/etc/skel
el administrador debe crear unos ficheros adecuados para los usuarios,
especicando los paths necesarios de ejecución, inicialización de variables
del sistema, etc.
también pueden usarse los ficheros /etc/profile o /etc/bash.bashrc
(ver Tema 3, Ficheros de inicialización de Bash)

Comando passwd
Permite fijar o cambiar la contraseña de un usuario. Opciones:
-e, --expire fuerza a que la contraseña de la cuenta caduque; el usuario
debe cambiarla en el siguiente login
-d, --delete borra la contraseña
-l/-u, --lock/--unlock bloquea/desbloquea la cuenta
-m, --mindays MIN_DAYS número mínimo de días entre cambios decontraseña
-x, --maxdays DÍAS_MAX número de días de validez de la contraseña
-w, --warndays DÍAS_AVISO número de días de aviso de caducidad
-i, --inactive INACTIVO días en que se deshabilitará la cuenta una
vez expirada la contraseña
-S, --status indica el estado de la contraseña (bloqueada L, sin contrase
ña NP o con contraseña válida P)
Eliminación manual de una cuenta
Implica los siguientes pasos
1. Inhabilitar la cuenta impidiendo el acceso
2. Hacer un backup de los ficheros de usuario
3. Eliminar losficheros de usuario
La inhabilitación de la cuenta podría ser temporal o denitiva
Temporal: puede hacerse de diversas formas
cambiar el login shell a /bin/false, o /usr/sbin/nologin (si
disponible)
 cambiar el campo contraseña de /etc/passwd a * (volviendo a
poner x se habilita la cuenta),
 poner una ! al principio del campo contraseña de /etc/shadow,
usar passwd -l
definitiva: borrar las entradas del usuario de /etc/passwd y /etc/shadow
1.3. Comandos para gestión de cuentas
Crear cuentas manualmente es un proceso tedioso:
existen comandos que nos ayudan en la tarea
Comandos simples de manejo de cuentas
useradd añade un nuevo usuario al sistema; ejemplo.
useradd -c .Aitor Tilla.aitor
 por defecto, sólo modica los cheros passwd y shadow, no crea
el directorio home ni le pone contraseña (cuenta inhabilitada)
varias opciones:
-m crea el directorio home, si no existe (y copia los cheros de
/etc/skel)
-g grupo especica el grupo principal
-s shell especica la shell a utilizar
 -e fecha fecha de expiración de la cuenta (formato YYYYMM-
DD)
Ejemplo:
useradd -c .Aitor Tilla.aitor -m -e 2006-11-02 -s
/bin/bash -g staff
userdel borra un usuario del sistema
usermod modifica las cuentas de usuario
groupadd, groupdel, groupmod lo mismo, para grupos
newusers permite crear varias cuentas a partir de un fichero con nombres
de usuario y contraseñas
 las líneas del fichero deben tener el mismo formato que las del fichero /etc/passwd, con la contraseña sin encriptar
chpasswd similar al anterior, permite actualizar las contraseñas de usuarios existentes
chsh cambia el shell por defecto del usuario
chfn cambia la información del campo GECOS
Comandos de alto nivel para el manejo de cuentas
Comandos adduser, addgroup:
hacen de front-end de los de bajo nivel useradd, groupadd y
usermod
 crean los usuarios/grupos en función de la conguración especi-
cada en el fichero /etc/adduser.conf
Herramientas grácas de gestión de usuarios y grupos:
kuser (KDE), user-admin (GNOME), etc.
Otros comandos relacionados
passwd: permite cambiar la contraseña (ya comentado)
chage: muestra y cambia la información de expiración de la contraseña
Formato:
chage [opciones ] [username ]
Algunas opciones:
 -l muestra información de expiración
su: permite cambiar de usuario o pasar a ser administrador
Formato:
su [opciones ] [-] username
Si no se especifica el username pasa a administrador
Algunas opciones:
-inicia un login shell
-m, -p o --preserve-environment mantiene el entorno (no
ejecuta el .bashrc del nuevo usuario)
-s, --shell=nueva_shell usa la shell especicada
-c, --commmand=comando ejecuta el comando con la identidad
del nuevo usuario:
su -c cat /etc/shadow
1.4. Cuotas de disco
Algunos Filesystems permiten limitar el uso del disco a los usuarios y grupos:
cuotas
Evitan que los usuarios monopolicen el disco
Pueden causar problemas a los usuarios:
 preferible instalar más disco o avisar a los usuarios que consuman
demasiado
Límites de cuotas:
Límite débil: si la cuenta del usuario o del grupo supera el límite débil,
se impondrá un período de gracia en el que el usuario podrá reducir la
ocupación
Límite duro: se deniega cualquier intento de escribir datos despúes de
este límite
Período de gracia: tras superar el límite débil, si el usuario no resuelve
el problema borrando archivos, la cuenta se bloquea
Instalación de cuotas de disco en Debian
Si el kernel está congurado para soportar cuotas, los pasos a seguir son:
1. Instalar el paquete quota
2. Modicar /etc/fstab para marcar los lesystems que tendrán cuotas:
/dev/hda9 /home ext3 defaults,usrquota 0 2
/dev/hda8 /tmp ext3 defaults,usrquota,grpquota 0 2
3. Reiniciar el sistema
4. Usar el comando edquota para editar las cuotas de usuarios y grupos
Comando edquota
Permite crear, manipular y eliminar cuotas basadas en usuarios o grupos
Sintaxis:
edquota [opciones ] [usuario |grupo ]
Opciones:
-u usuario configura las cuotas del usuario
-g grupo congura las cuotas para un grupo
-f filesystem realiza las operaciones obre un lesystem concreto
(por defecto, lo hace sobre todos los lesystems que admitan
cuotas)
 -t congura el período de gracia
 -p user1 usuarios copia la conguración de cuotas de user1 a
los usuarios indicados
Al ejecutar edquota se abre el editor indicado en la variable EDITOR
(por defecto, vi) para modicar las cuotas:
 se muestran los bloques de 1K en uso, así como los límites soft y
hard (también para i-nodos o cheros)
 si un límite está a 0 no se aplica esta información se guarda en los cheros aquota.user y aquota.groupen el directorio base del filesystem
Otros comandos
Existen otros comandos para la gestión de las cuotas:
quotacheck verifica la integridad de las bases de datos de las cuotas
se ejecuta en el script de inicio del sistema de cuotas
debe ejecutarse con las cuotas desactivadas
quotaon/quotaoff activa/desactiva el sistema de cuotas
repquota genera un informa del uso de las cuotas
# repquota /home
*** Report for user quotas on device /dev/hda9
Block grace time: 7days; Inode grace time: 7days
Block limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
root -- 34920 0 0 6 0 0
tarabelo -- 728 0 0 31 0 0
tomas *- 108 100 200 7days 8 0 0
quota permite al usuario ver el estado de sus cuotas
Algunas opciones:
 -g muestra información sobre las cuotas del grupo del usuario
 -v imprime información incluso para los lesystem sin límite en la cuota
-q imprime un mensaje si se ha superado la cuota
Ejemplo
$ quota
Disk quotas for user tomas (uid 1001):
Filesystem blocks quota limit grace files quota limit grace
/dev/hda9 108* 100 200 6days 9 0 0
/dev/hda8 1 10 20 1 0 0
Para más información sobre la conguración de las cuotas ver Quota
mini-HOWTO
2. Conguración de la red
Linux soporta múltiples protocolos y hardware de red:
Protocolos como TCP/IP y TCP/IP versión 6, IPX/SPX, PPP, SLIP,
X.25, Frame Relay, etc.
Soporta hardware para redes Ethernet, Token-Ring, etc
Diferentes NICs (Network Interface Cards ) implican diferentes dispositivos
de comunicación:
ethx para Ethernet, trx para Token-Ring, pppx para PPP, slx
para SLIP,
 Además, existe el dispositivo de loopback lo
Funciona como un circuito cerrado en el que cualquier datagrama
que se le pase como parámetro es inmediatamente devuelto a la capa de red del sistema
Se utiliza para realizar pruebas, y para un par de aplicaciones de red.
En muchos UNIX estos dispositivos aparecen en /dev
 En Linux se crean dinámicamente por software y no requieren los ficheros de dispositivos
En Linux puede ser necesario incluir los módulos adecuados para cada dispositivo
En esta sección trataremos la conguración de TCP/IP en redes Ethernet;
para más información ver:
Administración de red en Linux: Linux Network Administrators Guide
2 ed., Olaf Kirch y Terry Dawson
Linux Networking-HOWTO
Dispositivos de red soportados en Linux: Linux Hardware Compatibility
HOWTO - Network adapters
2.1. Comandos de conguración de red
Los comandos más importantes para congurar la red son:
ifconfig: conguración del interfaz de red
route: conguración del routing
netstat: información de la red
Comando ifconfig
Muestra y configura una interfaz de red:
$ /sbin/ifconfig eth0
eth0 Link encap:Ethernet HWaddr 00:12:43:A6:05:5C
inet addr:193.144.84.77 Bcast:193.144.84.255 Mask:255.255.255.0
inet6 addr: fe80::211:43ff:fea6:55c/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1035446 errors:0 dropped:0 overruns:0 frame:0
TX packets:1053062 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000
RX bytes:196973192 (187.8 MiB) TX bytes:270128587 (257.6 MiB)
Interrupt:169
Sintaxis:
ifconfig [opciones ] [interfaz ]
ifconfig interfaz [configuración ] [up|down]
Opciones de visualización:
-a muestra todas las interfaces , incluso las inactivas
-s muestra información resumida (igual que netstat -i)
En las opciones de conguración se indica entre otras cosas la IP, máscara de red y dirección de broadcast:
# ifconfig eth0 193.144.84.77 netmask 255.255.255.0 broadcast 193.144.84.255 up
14
ifconfig permite también congurar el estado del interfaz, por ejemplo,cambiar el MTU, poner modo promiscuo, activar/desactivar ARP, cambiar su dirección hardware (si el dispositivo lo permite), etc.
# ifconfig eth0 mtu 500
# ifconfig eth0 -noarp
# ifconfig eth0 hw ether 52:54:00:12:34:56
ver el manual de ifconfig para más información
Otros comandos relacionados
Otros comandos de conguración de interfaz son:
ifup/ifdown activan/desactivan un interfaz de red
# ifdown eth0
iwconfig configura un interfaz wireless
# iwconfig eth1 essid "Mi Red"
Comando route
Permite modicar la tabla de routing, mostrando, añadiendo o borrando
rutas
muestra las rutas definidas permite añadir/borrar rutas estáticas permite denir un gateway de salida por defecto para conectarnos al exterior permite congurar el sistema para que actúe como un router
Mostrar una tabla de routing
Se usa route [-n -e -ee] (equivale a netstat -r)
$ /sbin/route -n -ee
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface MSS W193.144.84.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 0 0 0.0.0.0 193.144.84.1 0.0.0.0 UG 0 0 0 eth0 0 0 15
Opciones:
-usa direcciones IP en vez de nombres
-e emplea el mismo formato que netstat -r
-ee salida larga
Los fags indican el estado de la ruta
 U la interfaz está activa (Up)
 H el destino es una estación (Host)
G la ruta usa una pasarela (Gateway)
 D ruta creada dinámicamente por un demonio de encaminamiento
o un mensaje ICMP de redirección
 M ruta modicada dinámicamente
R ruta rehabilitada
! ruta rechazada
De las siguientes columnas, algunas no se usan
Metric distancia (normalmente en saltos) al destino
 Ref número de referencias a la ruta (no usado en linux)
 Use número de consultas para la ruta
 MSS (Maximum Segment Size ) tamaño máximo del segmento para
las conexiones TCP en esa ruta
 Window Tamaño predeterminado de la ventana para las conexiones
TCP en esa ruta
irtt (Initial Round Trip Time) valor inicial del temporizador
TCP
Añadir/borrar rutas estáticas
Se usa
route [add|del] [default] [-net|-host] target [netmask
Nm] [gw Gw] [opciones ] [[dev] If]
Ejemplo: suponer que tenemos la conguración del dibujo, y queremos crear
la tabla de rutas para el host Internet
Añadir la ruta para la red 192.168.0.0/24 en eth1
route add -net 192.168.0.0 netmask 255.255.255.0 dev eth1
Añadir la ruta por defecto
route add default gw 10.0.2.2
Añadir una ruta para la red 172.16.0.0/24, usando como pasarela en
host con IP 192.168.0.1
route add -net 172.16.0.0 netmask 255.255.255.0 gw 192.168.0.1
El host pasarela tiene que permitir routing entre sus interfaces; pasa
eso debemos activar el ip_forward:
# echo 1 > /proc/sys/net/ipv4/ip_forward
Otras opciones de conguración
Linux permite otras opciones para congurar la red, como denir alias de IP
o congurar opciones sobre el tráco
Alias de IP
Permite congurar múltiples direcciones IP a un único dispositivo de red
podemos soportar varias subredes IP en una misma Ethernet
 los alias se indican como dispositivo: número
Ejemplo:
# ifconfig eth0 192.168.1.1 netmask 255.255.255.0 up
# route add -net 192.168.1.0 netmask 255.255.255.0 eth0
# ifconfig eth0:0 192.168.10.1 netmask 255.255.255.0 up
# route add -net 192.168.10.0 netmask 255.255.255.0 eth0:0
Opciones del IP
Linux permite congurar diversas opciones sobre el tráco IP
los cambios pueden hacerse mediante el comando sysctl, escribiendo
en los archivos del directorio /proc/sys/net/ipv4 o de forma permanente
en el fichero /etc/sysctl.conf
algunos de estos estos archivos tienen un 0 (opción desactivada) o un
1 (opción activada)
otros pueden tener un valor
algunas de las opciones son:
ip_forward si 1 permite routing entre interfaces (por defecto 0)
ip_default_ttl el tiempo de vida por defecto de los paquetes
(por defecto 64 ms)
Información de la red: comando netstat
netstat muestra las conexiones de red, tablas de routing y estadísticas de
interfaz
Formato:
netstat [tipo de información ] [opciones ]
Algunos tipos de información:
(nada) muestra la lista de sockets abiertos
$ netstat
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 jumilla.dec.usc.e:58946 aiff.usc.es:telnet ESTABLISHED
tcp 0 0 jumilla.dec.usc.e:43658 ulla.dec.usc.es:1301 ESTABLISHED
tcp 0 0 jumilla.dec.usc.e:35346 sd.cesga.es:ssh ESTABLISHED
tcp 0 0 jumilla.dec.usc.es:ssh ulla.dec.usc.es:1688 ESTABLISHED
tcp 0 0 jumilla.dec.usc.es:ssh teneguia.dec.usc.:35161 ESTABLISHED
Active UNIX domain sockets (w/o servers)
Proto RefCnt Flags Type State I-Node Path
unix 8 [ ] DGRAM 15368 /dev/log
unix 2 [ ] DGRAM 194110 @/org/kernel/udev/udevd
unix 2 [ ] DGRAM 15671 @/var/run/hal/hotplug_socket
--route, -r muestra las tablas de rutas (igual que route admite
los ags -n, -e y -ee)
--interface, -i muestra un resumen del estado de las interfaces
de red (igual que ifconfig -s)
$ netstat -i
Kernel Interface table
Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0 1500 0 5110292 0 0 0 5011769 0 0 0 BMR MTU (Maximum Transmission Unit ): tamaño máximo del
datagrama
 Met: valor de la métrica para esa interfaz
RX/TX paquetes recibidos/transmitidos
OK/ERR/DRP/OVR paquetes transmitidos correctamente
(OK), erróneos (ERR), descartados por falta de recursos (DRP,
drop) y perdidos por desbordamiento (OVR, overrun)
19
Las banderas (flags) indican el estado del interfaz:
 B: dirección de difusión activa
L: la interfaz es un dispositivo de bucle local (loopback )
P: se reciben todos los paquetes (modo promiscuo)
O: ARP desactivado para este interfaz
M: el interfaz permite multicast
A: el interfaz recibe todos los paquetes multicast en la red
(allmulti )
R: la interfaz funciona (running)
 U: la interfaz está activa (up)
Este estado puede cambiarse con ifconfig:
# ifconfig eth0 promisc # Modo promiscuo
# ifconfig eth0 -arp # Desactiva ARP
 --statistics, -s muestra estadísticas para cada protocolo de red
$ netstat -s
Ip:
5001746 total packets received
7479 forwarded
0 incoming packets discarded
4894721 incoming packets delivered
......
Cada uno de los modos anteriores tienen diferentes opciones
Algunas opciones válidas para varios tipos son:
 --numeric o -n muestra información numérica en vez de nombres
para IPs, puertos, etc.
 --continuous o -c imprime la información solicitada de forma
continua
 --extend o -e muestra información extendida (con -ee aún más
información)
Para más información ver la página del manual
Otros comandos de red
Comando arp
arp manipula la cache de ARP:
muestra la tabla ARP
borra entradas
 añade entradas manualmente
Ejemplo:
# arp
Address HWtype HWaddress Flags Mask Iface
almansa.dec.usc.es ether 00:0D:56:6F:E6:90 C eth0
193.144.84.1 ether 00:E0:63:93:26:E5 C eth0
teneguia.dec.usc.es ether 00:C0:4F:A1:5D:89 C eth0
Flag: C dirección completa, M dirección añadida manualmente
Algunas opciones:
-i interfaz muestra las entradas para el interfaz indicado
-a hostname muestra las entradas para el host especicado
-d hostname borra las entradas para el host especicado
-s hostname hw_addr añade manualmente una entrada para el host
especicado con la dirección hardware indicada
-n interfaz no hace traducción de IPs a nombres
Comando ping
Muestra la disponibilidad de conexión y la velocidad de transmisión
con un host remoto:
$ ping 193.144.84.1
PING 193.144.84.1 (193.144.84.1) 56(84) bytes of data.
64 bytes from 193.144.84.1: icmp_seq=1 ttl=255 time=0.420 ms
64 bytes from 193.144.84.1: icmp_seq=2 ttl=255 time=0.396 ms
64 bytes from 193.144.84.1: icmp_seq=3 ttl=255 time=0.368 ms
ping envía paquetes ICMP (ECHO_REQUEST) al destino y espera
respuesta, midiendo el RTT
muchos rewalls bloquean el tráco ICMP por lo que el ping no funciona
Algunas opciones:
-b permite ping a una dirección de broadcast
-c COUNT para después de enviar COUNT paquetes ECHO_REQUEST
s packetsize especica el número de bytes a enviar (por defecto 56)
Comando traceroute
Muestra la ruta que sigue un paquete hasta llegar a destino
$ traceroute www.elpais.es
traceroute to a1749.g.akamai.net (130.206.192.32), 30 hops max, 40 byte packets
1 rutfis (193.144.64.1) 1.070 ms 0.688 ms 0.927 ms
2 * * *
3 10.56.5.1 (10.56.5.1) 57.463 ms 2.021 ms 1.923 ms
4 193.144.79.72 (193.144.79.72) 2.507 ms 16.280 ms 2.080 ms
5 GE2-0-0.EB-Santiago0.red.rediris.es (130.206.204.21) 25.681 ms 2.068 ms 1.965 ms
6 GAL.SO2-0-0.EB-IRIS4.red.rediris.es (130.206.240.33) 10.959 ms 10.665 ms 10.710 m7 130.206.220.59 (130.206.220.59) 20.277 ms 10.781 ms 10.470 ms
8 a130-206-192-32.deploy.akamaitechnologies.com (130.206.192.32) 11.011 ms 23.482 ms traceroute utiliza el campo TTL de la cabecera IP para obtener respuestas
ICMP TIME_EXCEEDED de los host por los que pasa el
paquete (envía paquetes UDP)

los sistemas pueden no enviar mensajes de tiempo excedido: aparecen *
si los rewalls bloquean el tráco ICMP no veremos nada
otros programas similares:
traceproto: permite especificar el protocolo a usar (TCP, UDP,
ICMP) y el puerto a tracear (por defecto 80)
 tcptraceroute: envía paquetes TCP SYN para evitar problemas
con firewalls
Comandos host, dig, nslookup
Permiten obtener la dirección IP de un sistema a partir del nombre o
viceversa:
$ host www.elpais.es
www.elpais.es is an alias for elpais.es.edgesuite.net.
elpais.es.edgesuite.net is an alias for a1749.g.akamai.net.
a1749.g.akamai.net has address 130.206.192.38
a1749.g.akamai.net has address 130.206.192.32
nslookup está desaprobado (deprecated) y no se recomienda su uso
Comano mii-tool
Permite ver y/o configurar el estado de la unidad MMI (Media Independent
Interface) de la tarjeta de red
Ethernet usa MII para autonegociar la velocidad de enlace y el
modo duplex
# mii-tool -v eth0
eth0: negotiated 100baseTx-FD flow-control, link ok
product info: vendor 00:08:18, model 16 rev 0
basic mode: autonegotiation enabled
basic status: autonegotiation complete, link ok
capabilities: 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD
advertising: 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD flow-control
link partner: 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD flow-control
# mii-tool --force=100baseTx-HD eth0
# mii-tool eth0
eth0: 100 Mbit, half duplex, link ok
2.2. Ficheros de conguración de red
La conguración mediante ifconfig y route no se mantiene al apagar el
sistema:
durante el proceso de arranque la red se inicia mediante la ejecución de
scripts del init.d
/etc/init.d/networking en Debian
/etc/init.d/network en RedHat
Estos scripts leen los cheros de conguración de la red
Fichero /etc/network/interfaces en Debian
auto eth0
iface eth0 inet static
address 193.144.84.77
netmask 255.255.255.0
network 193.144.84.0
broadcast 193.144.84.255
gateway 193.144.84.1
# dns-* options are implemented by the resolvconf package, if installed
dns-nameservers 193.144.75.9
dns-search dec.usc.es
name Tarjeta de red Ethernet
Fichero /etc/sysconfig/network-scripts/ifcfg-ethx en RedHat
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=none
IPADDR=193.144.84.186
NETMASK=255.255.255.0
GATEWAY=193.144.84.1
TYPE=Ethernet
Otros ficheros de conguración
Fichero /etc/resolv.conf especifica el dominio y los servidores DNS
Ejemplo:
domain dec.usc.es
search dec.usc.es usc.es
nameserver 193.144.75.9
nameserver 193.144.75.12
si buscamos por un hostname (sin dominio) le añade dec.usc.es y si
no aparece busca por usc.es
pueden añadirse hasta tres servidores de DNS
Fichero /etc/hosts fichero que asocia nombres de hosts con direcciones
IP
permite consultar una IP sin acceder al DNS
Ejemplo de /etc/hosts:
127.0.0.1 localhost.localdomain localhost
193.144.84.77 jumilla.dec.usc.es jumilla
la consulta es más rápida que acceder al DNS
 si las IPs cambian la dirección es incorrecta
sólo debería aparecer el nodo local y la interfaz de loopback
esto permite fijar el nombre y el dominio del sistema  en algunas distribuciones (Debian) el nombre también debe ponerse en el fichero /etc/hostname
el nombre y el dominio pueden obtenerse mediante los comandos
hostname y dnsdomainname
Fichero /etc/networks fichero de texto que asocia nombres a redes No es imprescindible
Ejemplo de /etc/networks
red1 172.16.1.0
red2 172.16.2.0
Fichero /etc/host.conf configura el comportamiento del name resolver
indica donde se resuelven primero la dirección o el nombre de un nodo
Ejemplo de /etc/host.conf:
order hosts,bind
multi on
indica que primero se veriquen las tablas locales (/etc/hosts) y después el DNS
multi on indica que se retornen todas las direcciones válidas que se encuentren en /etc/hosts
Fichero /etc/nsswitch.conf chero de conguración del Name Service
Switch
centraliza la información de diferentes servicios para la resolución de
nombres
indica las acciones a realizar para acceder a las diferentes bases de
datos del sistema: hosts, contraseñas, servicios, etc.
reemplaza la funcionalidad del archivo host.conf
 introducido en la versión 2 de la biblioteca GNU
Ejemplo de nsswitch.conf
hosts: dns files
networks: files
 indica que un host se busque primero en el DNS y después en
el chero /etc/hosts, mientras que una red se busca sólo en
/etc/networks
Es posible controlar el comportamiento por medio de acciones, por
ejemplo:
hosts: dns [!UNAVAIL=return] files
networks: files
si el estado de salida del DNS es diferente de no disponible no consulta
a los ficheros:
 sólo accede a /etc/hosts si el DNS no está disponible
Los valores de estado disponibles son:
 success la petición se encontró sin errores (acción por defecto
return) notfound no error, pero no se encontró el nodo o la red (acción
por defecto continue)
 unavail servicio solicitado no disponible (acción por defecto continue)
 tryagain servicio no disponible temporalmente (acción por defecto
continue)
Fichero /etc/protocols lista los protocolos que reconoce el sistema operativo
Ejemplo de /etc/protocols
ip 0 IP # internet protocol, pseudo protocol number
icmp 1 ICMP # internet control message protocol
tcp 6 TCP # transmission control protocol
udp 17 UDP # user datagram protocol
.....
Fichero /etc/services relaciona las aplicaciones con sus correspondientes puertos y protocolos básicos
Un trozo de /etc/services
ftp-data 20/tcp # Datos de ftp
ftp 21/tcp # Control de ftp
ssh 22/tcp # SSH por TCP
ssh 22/udp # SSH por UDP
telnet 23/tcp # Telnet
smtp 25/tcp # Correo electrónico
....
2.3. Conguración del DHCP
DHCP (Dynamic Host Conguration Protocol ) permite congurar automá-
ticamente la red de los sistemas a partir de un servidor DHCP
La información de IPs, DNS, etc. se mantiene centralizada en el servidor
Al iniciarse, los clientes se conectan al servidor (por broadcast) y cargan
su conguración
Conguración del servidor
Se encuentra en el fichero /etc/dhcpd.conf
Ejemplo sencillo de conguración
option domain-name "midominio.com"; # Nombre de Dominio
option domain-name-servers 10.0.2.3, 193.14.7.9; # Servidores de Nombres
default-lease-time 600; # Tiempo por defecto que dura una asignación
max-lease-time 7200; # Duración máxima de una asignación
option subnet-mask 255.255.255.0; # Máscara de red
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.10 192.168.0.20;
option broadcast-address 192.168.0.255; # Dirección de Broadcast
option routers 192.168.0.1; # Gateway de la red
}
host marte {
hardware ethernet 52:54:00:12:34:70;
fixed-address marte.mired.com;
}
si utilizamos nombres (como marte.mired.com) la IP debe ser accesible
(por DNS o /etc/hosts)
en elfichero /etc/default/dhcp especificamos el interfaz por el que
servimos DHCP
en /var/lib/dhcp/dhcp.leases están las IPs asignadas
para más información ver la página de manual de dhcpd
Conguración del cliente
Para que el cliente obtenga los datos de DHCP usar:
# dhclient eth0
Un comando similar es pump
Para que el cliente se configure en el inicio debemos modcar el fichero de
conguración de red
En Debian, fichero /etc/network/interfaces:
auto eth0
iface eth0 inet dhcp
3. Automatización de tareas
En esta sección veremos la utilización de comandos que permiten planicar
tareas para ejecutar en un futuro:
at, batch permiten ejecutar trabajos a una hora especíca o bajo determinadas
condiciones
cron permite correr trabajos a intervalos regulares
Estos comandos permiten automatizar distintas tareas, para que se ejecuten
en determinados momentos sin intervención del administrador
3.1. Comando at
Permite indicar el momento en que se quiere ejecutar un trabajo
Sintaxis:
at [opciones ] TIME
Al ejecutar at pasamos a un nuevo prompt, que nos permite introducir
comandos que se ejecutarán a la hora indicada
para salvar el trabajo y salir CTRL-D
 el entorno actual también se salva
 al terminar, la salida estándar se envía como un mail al usuario
 el trabajo no se para al salir de la sesión
Ejemplo:
$ at 11:45
warning: commands will be executed using /bin/sh
at> ls /tmp > lista
at>
job 4 at Wed Nov 16 11:45:00 2005
Algunas opciones:
-f FILE especifica un fichero conteniendo las acciones a realizar
en vez de la entrada estándar
-c jobnumber muestra el trabajo a ejecutar
 -m envía un mail al usuario, incluso aunque no haya salida
 -v muestra la hora a la que se ejecutará el trabajo
TIME puede especificarse de varias formas:
HH:MM por ejemplo 12:54
HH:MMAM/PM, por ejemplo 1:35PM
HH:MM MMDDYY, por ejemplo 1:35PM 122505
now + numero unidades , donde unidades puede ser minutes,
hours, days, o weeks
$ at now+2hours
today, tomorrow, por ejemplo 12:44tomorrow
midnight (00:00), noon (12:00), teatime (16:00)
Comandos relacionados
atq o at -l lista los trabajos pendientes del usuario
si es el superusuario, lista los trabajos de todos los usuarios
atrm o at -d borra trabajos identicados por su número de trabajo
batch ejecuta trabajos cuando la carga del sistema es baja
el trabajo empieza en cuanto la carga caiga por debajo de 1.5
lacarga se obtiene del fichero /proc/loadavg
Ficheros de conguración
El administrador puede controlar la utilización de at
Ficheros /etc/at.allow y /etc/at.deny
at.allow lista los usuarios que pueden usar
at.deny lista los usuarios que NO pueden usar at
Primero se chequea /etc/at.allow  si está el usuario, puede usar at  si no está o el fichero no existe, se chequea /etc/at.deny
 si el usuario no está en at.deny puede usar at
Si no existe ninguno de los dos ficheros, solo root puede ejecutar at
Para dar permiso para todos los usuarios crear sólo el chero at.deny
vacío
3.2. Procesos periódicos
Para crear trabajos que se ejecuten periódicamente se utilizan el demonio
cron y el comando crontab
crontab permite configurar los procesos periódicos
cron se encarga de su ejecución
La utilización de cron se gestiona a través de los cheros /etc/cron.allow
y /etc/cron.deny
el comportamiento si no existen los ficheros depende de la configuración
del sistemaen Debian, si no existen, todos los usuarios pueden usar crontab
Fichero crontab Los trabajos se especican en un fichero de crontab, que se guarda en
/var/spool/cron/crontabs, y que puede tener tres tipos de líneas:
Comentarios, que empiezan por #
Denición de variables, de tipo nombre = valor
# shell usada para ejecutar los comandos
SHELL=/bin/bash
# Usuario al que se envía (por mail) la salida
# de los comandos (por defecto, se envían
# al propietario del fichero crontab)
MAILTO=pepe
Especicación del trabajo y de la hora de ejecución, de la siguiente
forma:
minuto hora día mes día_semana comando
 el día de la semana de 0 a 7 (0 ó 7 domingo)
* indica cualquier valor
se pueden indicar rangos, listas o repeticiones:
1-5 para indicar de lunes a viernes
0,15,30,45 para indicar cada 15 minutos
0-23/2 en el campo hora, indica realizar cada dos horas (0,
2, 4, etc.)
Ejemplos:
 Borra el /tmp todos los días laborables a las 4:30 am
30 4 * * 1-5 rm -rf /tmp/*
Escribe la hora, cada 15 minutos, durante la noche:
0,15,30,45 0-8,20-23 * * * echo Hora:$(date)/tmp/horas
Comando crontab
Para crear y editar los trabajos periódicos se puede utilizar el comando
crontab
Sintaxis:
crontab [-u usuario ] {-l|-e|-r}
crontab [-u usuario ] fichero
en la segunda forma instala un nuevo crontab desde un fichero
Opciones:
 -u usuario crea o maneja el crontab de un usuario especíco
(sólo root)
-e edita el fichero crontab
-lmuestra el fichero crontab
-r borra el fichero crontab
Fichero /etc/crontab y /etc/cron.d
El demonio cron busca ficheros en /var/spool/cron para ejecutarlos a la hora indicada
además también ejecuta las acciones indicadas en los cheros /etc/crontab y en el directorio /etc/cron.d/ estos ficheros suelen ser de mantenimiento del sistema
De esta forma, el administrador puede crear scripts que se ejecuten con periodicidad
horaria, diaria, semanal y mensual
sólo tiene que colocar esos scripts en los directorios /etc/cron.hourly,
/etc/cron.daily, /etc/cron.weekly o /etc/cron.monthly
la fecha y hora de ejecución de estos scripts se controla en el fichero
/etc/crontab