ESCUELA TÉCNICA SUPERIOR DE INGENIEROS … · 2011-04-08 · Configuración del cortafuegos de mi...
Transcript of ESCUELA TÉCNICA SUPERIOR DE INGENIEROS … · 2011-04-08 · Configuración del cortafuegos de mi...
ESCUELA TÉCNICA SUPERIOR DE INGENIEROS
INDUSTRIALES Y DE TELECOMUNICACIÓN
Titulación:
INGENIERO TÉCNICO EN INFORMÁTICA DE GESTIÓN
Título del proyecto:
ADMINISTRACIÓN DE UNA RED BASICA EN ENTORNO
GNU/LINUX
Ekaitz Hernández Troyas
Cándido Aramburu Mayoz
Pamplona, Fecha de defensa
Universidad Pública de Navarra
Ekaitz Hernández Troyas Nafarroako Unibertsitate Publikoa
2
ÍndiceLISTADO DE FIGURAS ..................................................................................................................... 5
PREFACIO ........................................................................................................................................... 9
1. OBJETIVOS DEL PROYECTO .......................................................................................................................... 9 2. MOTIVACIÓN ........................................................................................................................................... 9 3. PROPÓSITO Y AUDIENCIA DE ESTE LIBRO ....................................................................................................... 9 4. PRERREQUISITOS .................................................................................................................................... 10 5. RECURSOS ............................................................................................................................................. 11 6. TEMAS DE LA MEMORIA ........................................................................................................................... 11
1. ANÁLISIS DE UNA RED LOCAL SOBRE ETHERNET Y COMO CONFIGURAR UN HOST
EN ESTA ............................................................................................................................................ 13
1.1. INTRODUCCIÓN.................................................................................................................................... 13 1.2. PRERREQUISITOS .................................................................................................................................. 13 1.3. FICHEROS BÁSICOS A TENER EN CUENTA PARA LA CONFIGURACIÓN ................................................................. 13 1.4. COMANDOS NECESARIOS PARA LA CONFIGURACIÓN .................................................................................... 13 1.5. ANÁLISIS DE NUESTRA RED LOCAL ............................................................................................................ 14
1.5.1. Comprobación hardware ....................................................................................................... 14 1.5.2. Obteniendo información de nuestra red local....................................................................... 15
1.6. CONFIGURANDO UN HOST DE NUESTRA RED LOCAL .................................................................................... 20 1.6.1. Asignando la máscara e ip al host ......................................................................................... 20 1.6.2. Asignando alias en nuestro host ............................................................................................ 21 1.6.3. Crear el enrutamiento del host .............................................................................................. 22 1.6.4. Asignando ips del servidor DNS en host ................................................................................ 22 1.6.5. Comprobar que la conexión esté correcta ............................................................................. 24 1.6.6. Configuración persistente de la configuración ...................................................................... 25
2. SEGURIDAD DE LA RED LOCAL DE ATAQUES EXTERIORES ......................................... 26
2.1. INTRODUCCIÓN.................................................................................................................................... 26 2.2. PRERREQUISITOS .................................................................................................................................. 27 2.3. MECANISMO DE UN CORTAFUEGOS (FIREWALL) ......................................................................................... 27 2.4. TIPOS DE CONFIGURACIÓN REALIZADOS .................................................................................................... 28
2.4.1. Ejemplo sencillo de configuración de un host ....................................................................... 28 2.4.2. Configuración del cortafuegos de mi host en la red lab.unavarra.es ................................... 30
3. AUDITORÍA DEL SISTEMA EN UNA RED LOCAL .................................................................. 33
3.1 INTRODUCCIÓN..................................................................................................................................... 33 3.2. PRERREQUISITOS .................................................................................................................................. 33 3.3. FUNCIONAMIENTO DEL SISTEMA DE MONITORIZACIÓN. ................................................................................ 33 3.5. FICHEROS COMUNES DONDE SE GUARDAN LOS LOGS ................................................................................... 37
3.5.1. Fichero /var/log/syslog ......................................................................................................... 37 3.5.2. Fichero /var/log/messages .................................................................................................... 37 3.5.3. Fichero /var/log/daemon.log ................................................................................................ 37 3.5.4. Fichero /var/log/wtmp .......................................................................................................... 38 3.5.5. Fichero /var/run/utmp .......................................................................................................... 38 3.5.6. Fichero /var/log/lastlog ........................................................................................................ 39 3.5.7. Fichero /var/log/faillog ......................................................................................................... 39 3.5.8. Fichero /var/log/debug ......................................................................................................... 40
3.6. COMO REALIZAR LOGS REMOTOS ............................................................................................................. 40
4. COPIAS DE SEGURIDAD DE UN HOST ................................................................................... 42
4.1. INTRODUCCIÓN.................................................................................................................................... 42 4.2. PRERREQUISITOS .................................................................................................................................. 42
4.3. APLICACIONES DE COPIAS DE SEGURIDAD .................................................................................................. 42 4.3. FICHEROS A REALIZAR EL BACKUP ............................................................................................................. 44 4.4. COMANDOS PARA REALIZAR BACKUPS. ..................................................................................................... 44
4.4.1. Dump ...................................................................................................................................... 44 4.4.2. tar ........................................................................................................................................... 48 4.3.3. cpio ......................................................................................................................................... 50 4.4.4. dd ............................................................................................................................................ 50 4.4.5. cp ............................................................................................................................................ 50
5. ADMINISTRACIÓN DE CUENTAS Y GRUPOS EN HOST ...................................................... 52
5.1. INTRODUCCIÓN.................................................................................................................................... 52 5.2. PRERREQUISITOS .................................................................................................................................. 52 5.3. ADMINISTRAR CUENTAS ........................................................................................................................ 52 5.4. CAMBIAR UNA CONTRASEÑA A UNA CUENTA YA CREADA .............................................................................. 53 5.5. CAMBIAR CARACTERÍSTICAS DE UNA CUENTA ............................................................................................. 53 5.6. ELIMINAR CUENTAS .............................................................................................................................. 54 5.7. ADMINISTRAR GRUPOS .......................................................................................................................... 54
6. HERRAMIENTAS PARA AUTOMATIZAR EL PROCESO DE ADMINISTRACIÓN DE UNA
RED LOCAL ...................................................................................................................................... 56
6.1. INTRODUCCIÓN.................................................................................................................................... 56 6.2. PRERREQUISITOS .................................................................................................................................. 56 6.3. HERRAMIENTAS PARA LA ADMINISTRACIÓN ............................................................................................... 57
6.3.1 Shell scripts .............................................................................................................................. 57 6.3.2. Ejecución de comandos en multiples maquinas mediante ClusterSSH ................................. 59 6.3.2. Utilidades de manipulación de flujo de datos. ...................................................................... 60 6.3.3. Apagado del sistema .............................................................................................................. 62 6.3.4. Arranque del sistema ............................................................................................................. 63 6.3.5. Procesos periódicos ................................................................................................................ 64 6.3.6. Creación de repositorios personalizado mediante AptonCD ................................................ 65
7. SAMBA .......................................................................................................................................... 69
7.1. INTRODUCCIÓN.................................................................................................................................... 69 7.2. PRERREQUISITOS .................................................................................................................................. 69 7.3. INSTALACIÓN DEL SERVIDOR Y CONFIGURACIÓN DEL SERVIDOR ...................................................................... 69
7.3.1. Instalar paquetes ................................................................................................................... 69 7.3.2. Funcionamiento del fichero de configuración /etc/samba/smb.conf .................................. 70 7.3.3. Configurar sección global....................................................................................................... 70 7.3.4. Configurar sección homes ...................................................................................................... 71 7.3.5. Creación de secciones propias ............................................................................................... 71 7.3.6. Reinicio del demonio samba .................................................................................................. 71 7.3.7. Comprobando sintaxis del fichero /etc/smb.conf ................................................................. 72 7.3.8. Listar servicios ........................................................................................................................ 72
7.4. CONEXIONES DEL CLIENTE AL SERVIDOR SAMBA .......................................................................................... 73 7.4.1. Paquetes necesarios en el cliente en Linux ........................................................................... 73 7.4.2. Conectarse desde Linux (cliente) a un servidor samba en Linux (servidor) .......................... 73 7.4.3. Conectarse desde Windows XP (cliente) a un fichero compartido mediante samba en Linux (servidor) .......................................................................................................................................... 74 7.4.4. Conectarse desde Linux (cliente) a fichero compartido por Windows XP (servidor) ............ 77 7.4.5. Conectarse desde Windows (cliente) a impresora en Linux (servidor) ................................ 78 7.4.6. Conectarse desde Linux (cliente) a impresora en Windows Vista (servidor) ....................... 78 7.4.7. Montar automáticamente en Linux un fichero mediante /etc/fstab ................................... 82
8. NFS................................................................................................................................................. 84
8.1. INTRODUCCIÓN.................................................................................................................................... 84 8.2. PRERREQUISITOS .................................................................................................................................. 84 8.3. FICHEROS BÁSICOS A TENER EN CUENTA PARA LA CONFIGURACIÓN ................................................................. 84
8.4. PASOS PARA INSTALAR NFS ................................................................................................................... 85 8.4.1. Instalación de paquetes ......................................................................................................... 85 8.4.2. Exportando ficheros ............................................................................................................... 85 8.4.3. Reinicio del demonio .............................................................................................................. 85 8.4.4. Comprobar servicios ............................................................................................................... 86 8.5.5. Montar fichero en el cliente ................................................................................................... 87
9. UTILIZACIÓN DE NIS Y COMO COMPLEMENTARLO CON NFS ......................................... 89
9.1. INTRODUCCIÓN.................................................................................................................................... 89 9.2. PRERREQUISITOS .................................................................................................................................. 89 9.3. FICHEROS BÁSICOS A TENER EN CUENTA PARA LA CONFIGURACIÓN ................................................................. 89 9.4. PASOS PARA INSTALAR NIS EN LA PARTE DEL SERVIDOR. ............................................................................... 90
9.4.1. Instalar NIS y los paquetes necesarios .................................................................................. 90 9.4.2. Configurar accesos a los servicios .......................................................................................... 90 9.4.3. Establecer el nombre del dominio NIS ................................................................................... 91 9.4.4. Establecer ip del servidor en yp.conf ..................................................................................... 91 9.4.5. Establecer que host trabaja como servidor ........................................................................... 92 9.4.6. Establecer accesos a ypserv ................................................................................................... 92 9.4.7. Indicar a ypserv que trabajaremos con /etc/shadow ........................................................... 92 9.4.8. Creación de mapas NIS ........................................................................................................... 93 9.4.9. Arrancar demonios ................................................................................................................. 93 9.4.10. Comprobación correcto funcionamiento del servidor ......................................................... 93
9.5. PARTE CLIENTE .................................................................................................................................... 94 9.5.1 Instalar NIS y los paquetes necesarios.................................................................................... 94 9.5.2. Configurar accesos a los servicios .......................................................................................... 94 9.5.3. Establecer el nombre del dominio NIS ................................................................................... 94 9.5.4. Arrancar NIS ........................................................................................................................... 94
9.6. COMPLEMENTAR NIS CON NFS .............................................................................................................. 94
10. COMO MONTAR UN SERVIDOR DHCP ................................................................................. 95
10.1. INTRODUCCIÓN ................................................................................................................................. 95 10.2. PRERREQUISITOS ................................................................................................................................ 95 10.3. INSTALACIÓN DE DHCP PARTE SERVIDOR ................................................................................................ 95
10.2.2. Activar tarjeta red ................................................................................................................ 95 10.3.3. Editando fichero de configuración /etc/dhcp.conf ............................................................. 96
10.4. INSTALACIÓN DEL CLIENTE DHCP .......................................................................................................... 97 10.4.1. Instalación del paquete ........................................................................................................ 97 10.4.2. Configuración del cliente DHCP ........................................................................................... 97
11. CAPITULO INTRODUCTORIO .................................................................................................. 98
11.1. INTERNET ......................................................................................................................................... 98 11.2. PILA OSI (OPEN SYSTEMS INTERCONNECTION) ........................................................................................ 98 11.3. PROTOCOLO TCP/IP .......................................................................................................................... 99
11. 3.1 Pila TCP/IP ............................................................................................................................ 99 11. 3.2. Direccionamiento ip .......................................................................................................... 101
11.4. CREACIÓN FÍSICA DE UNA RED LOCAL SOBRE ETHERNET ............................................................................ 102 11.4.1 Elementos físicos de una red local sobre Ethernet ............................................................. 102 11.4.2 Topologías de una red local ................................................................................................ 105 11.4.3. Restricciones de interconexión en una red local sobre Ethernet ...................................... 106
11.5. EJEMPLO DE CREACIÓN DE UNA RED LOCAL ETHERNET ............................................................................. 107 11.5.1. Crear topología .................................................................................................................. 107 11.5.2. Asignar ips y mascaras ....................................................................................................... 108 11.5.3. Configurar hosts y router ................................................................................................... 109
GLOSARIO ...................................................................................................................................... 110
BIBLIOGRAFIA ............................................................................................................................... 113
Listado de Figuras
Fig. 1.1. ifconfig detección tarjeta
Fig. 1.2. error ifconfig
Fig. 1.3. ifconfig
Fig. 1.4. route
Fig. 1.5. netstat -nr
Fig. 1.6. netstat -s
Fig. 1.7. nmap -PE 172.18.64.0/19
Fig. 1.8. nmap -O 172.18.64.0/19
Fig. 1.9. Topología de la red lab.unavarra.es
Fig. 1.10. Asignando ip y marcara mediante ifconfig
Fig. 1.11. Fichero de configuración /etc/hosts
Fig. 1.12. Configuracion /etc/hosts
Fig. 1.13. Comprobando con ping
Fig. 1.14. Direccionamiento con route
Fig. 1.16. Configurando /etc/resolv.conf
Fig. 1.17. Estableciendo la puerta de enlace mediante route
Fig. 1.18. Secuencia del funcionamiento de DNS
Fig. 1.19. Ejemplo de petición DNS
Fig. 1.20. Comprobación de conexión mediante comando ping
Fig. 1.21. Ejemplo de traceroute6.db
Fig. 1.22. Ejemplo de configuración de /etc/network/interfaces estáticamente
Fig. 1.23. Reinicio del demonio de red para volver a reconfigurar los parámetros
Fig. 2.1. Configuración de la red en el kernel
Fig. 2.3. Ejemplo de configuración mediante iptables
Fig. 2.2. Cargando modulo nucleo netfilter
Fig. 2.4. iptables –L
Fig. 2.5. esquema de iptables
Fig. 3.1. Topología de servidor de logs
Fig. 3.2. Fichero de configuración /etc/syslog.conf
Fig. 3.3. Monitorización en fichero plano
Fig. 3.4. Monitorización en dispositivo físico
Fig. 3.5. Monitorización en maquina remota
Fig. 3.6. Monitorización a usuarios del sistema
Fig. 3.7. Monitorización de todos los usuarios del sistema
Fig. 3.8. Creación de mensaje log mediante logger
Fig. 3.9. /var/log/syslog
Fig. 3.10. /var/log/messages
Fig. 3.11. /var/log/daemon.log
Fig. 3.12. last
Fig. 3.13. last –f /var/run/utmp
Fig. 3.14. who
Fig. 3.15. w
Fig. 3.16. lastlog
Fig. 3.17. last –f /var/log/btmp
Fig. 3.18. lastlog
Fig. 3.20. Habilitando soporte de log remoto en host servidor
Fig. 3.21. Reinicio del demonio sysklogd
Fig. 3.22. Creando log mediante el comando logger
Fig. 3.23 Comprobación de que el log se ha registrado en el servidor de logs
Fig 4.1. ls –al sd*
Fig 4.2. fdisk -l
Fig 4.3. tabla de particiones
Fig 4.4. Formateando disco duro en ext3 mediante gparted
Fig 4.5. Copia mediante dump
Fig 4.6. restaurar disco duro mediante restore
Fig 4.7. Copia tar sin comprimir.
Fig 4.8 tar contenedor comprimido
Fig. 4.9. tar mediante expresiones regulares
Fig 4.10. tar (comprobación de integridad)
Fig 4.11. cpio ejemplo de uso
Fig 4.12. chquear mediante cpio
Fig. 4.13. Extraer mediante cpio
Fig 4.14. Uso de dd
Fig 4.15. Uso de cp
Fig. 5.1. Ejemplo de uso del comando adduser
Fig. 5.3. Ejemplo de uso del comando passwd
Fig. 5.2. Ejemplo de uso del comando su
Fig. 5.5. Típica línea en el fichero de configuración /etc/passwd
Fig. 5.6. Como bloquear cuenta mediante el fichero /etc/passwd
Fig. 5.7. Ejemplo de eliminación de cuenta mediante el comando deluser
Fig. 5.8. Ejemplo de fichero de configuración de /etc/group
Fig. 5.9. Ejemplo de grupo común en /etc/group
Fig. 6.1. Ejemplo de automatización de instalación mediante script para BASH
Fig. 6.2. Ejemplo de ejecución de un script para BASH
Fig. 6.3. Ejemplo de automatización de eliminación de cuentas mediante scripts para
BASH
Fig. 6.4. Ejemplo de conexión a multiples shell remotas mediante script para BASH
Fig. 6.5. Ejecución del script de conexiones a múltiples Shell remotas
Fig. 6.6. Instalación de clusterSSH
Fig. 6.7. Ejecución de clusterSSH
Fig. 6.8. Ejemplo de clusterSSH
Fig. 6.9. Ejemplo de uso del comando tr
Fig. 6.10. Ejemplo de uso del comando sed
Fig. 6.11. Ejemplo de uso del comando shutdown (8 minutos y reinicio)
Fig. 6.12. Ejemplo de uso del comando shutdown (a las 2:00 reinicio)
Fig. 6.13. Scripts que de arranque indicados en /etc/inttab
Fig. 6.14. Ejemplo de líneas de configuración
Fig. 6.15. Salida del comando crontab -l
Fig. 6.16. Instalación de AptonCD
Fig. 6.17. Ejecución de AptonCD
Fig. 7.1. Instalación de samba
Fig. 7.2. Configuración de sección global
Fig. 7.3. Configuración de sección homes
Fig. 7.4. Configuración de secciones propias
Fig. 7.5. Configuración de secciones propia
Fig. 7.6. Uso del comando testparm
Fig. 7.7. Comprobación de los servicios samba mediante el comando smbclient
Fig. 7.8. Añadiendo usuario samba mediante adduser
Fig. 7.9. Creando password en samba
Fig. 7.10. Instalando smbfs
Fig. 7.11. Conectándose desde Linux a un servidor samba mediante smbclient
Fig. 7.12. Creando directorio donde se montara fichero compartido
Fig. 7.13. Montando fichero mediante mount
Fig. 7.14. Instalando cups
Fig. 7.15. Montando directorio mediante cups
Fig. 7.16. Actualizando cups mediante mount -a
Fig. 7.17. Creando fichero de credenciales
Fig. 7.18. Dando permisos a .credenciales
Fig. 7.19. Editando /etc/fstab para insertar credenciales mediante
/etc/samba/.credenciales
Fig. 8.1. Instalación del servidor NFS
Fig. 8.2. Exportando los ficheros
Fig. 8.3. Arrancando el demonio del servidor de NFS
Fig. 8.4. Error del demonio del servidor de NFS
Fig. 8.5. Sistemas de ficheros en /proc/filesystems
Fig. 8.7. Montando fichero en el cliente mediante mount
Fig. 8.8. Configurando /etc/fstab
Fig. 9.1. Instalando nis y portmap
Fig. 9.2. Configurando hosts.deny
Fig. 9.3. Configurando hosts.allow
Fig. 9.4..Comprobando si tenemos instalado libc6
Fig. 9.5. Estableciendo nombre de dominio NIS
Fig. 9.6. Estableciendo la ip del servidor en NIS
Fig. 9.7 .Estableciendo varios servidores en NIS
Fig. 9.8. Estableciendo que el host trabaja como servidor
Fig. 9.9. Estableciendo que clientes usaran el servidor
Fig. 9.10. Indicando a NIS que se usara /etc/shadow
Fig. 9.11 Configurando parámetro ALL para usar /etc/shadow
Fig. 9.12. Creación de los mapas NIS
Fig. 9.13. Reiniciando demonio NIS
Fig. 9.14. Comprobando funcionamiento del servidor NIS
Fig. 9.15. Instalación de NIS en el cliente
Fig. 9.16 Configurando nsswitch.conf
Fig. 9.17. Estableciendo ip del servidor en /etc/yp.conf
Fig. 9.18. Reiniciando el demonio de NIS en el cliente
Fig. 10.1. Instalando servicio dhcp
Fig. 10.2. Estableciendo interfaz mediante el fichero /etc/dhcp3-server
Fig. 10.3. Configurando servidor DHCP mediante /etc/dhcp.conf
Fig. 10.5. Reinicio del servidor DHCP
Fig. 11.1. Pila TCP/IP
Fig. 11.2. Paquete TCP
Fig. 11.3. Paquete IP
Fig. 11.4 Paquete Ethernet
Fig. 11.5. Foto hub
Fig. 11.6 .Foto switch
Fig. 11.7. Foto router
Fig. 11.8. Conector BNC
Fig. 11.10. Topología en bus
Fig. 11.11. Topología en estrella
Fig. 11.12. Topología en estrella extendida
Fig. 11.13 Topología en anillo
Fig. 11.14. Topología en malla completa
Fig. 11.15. Topología de la red local
Fig. 11.16. Topología de la red local con ips asignadas
Fig. 11.17. Tabla de rutas
PREFACIO
1. Objetivos del proyecto
El objetivo último de este proyecto es saber y conocer los conceptos y servicios
fundamentales de una red local sobre Ethernet y llevarlos a la práctica. Con esta guía el
lector será capaz de crear físicamente una LAN (Local Area Network) Ethernet,
configurarla para que sea 100% funcional y montar servicios más comunes sobre esta
red local, como pueden ser DHCP, NFS, NIS, SAMBA. También explicaremos de un
modo práctico como monitorizar una red, gestionar los usuarios y mantener una mínima
seguridad de la red local.
2. Motivación
La motivación es crear una guía que reúna los conceptos básicos para que pueda
servir a una persona en el proceso de construcción de una red local sobre Ethernet sin
casi conocimientos previos. El objetivo es que el usuario de esta guía conozca y aprenda
los servicios que puede ofrecer una red local para que no la utilice como una mera
utilidad para conectar varios ordenadores para la conexión a Internet.
Otra motivación es la falta de un documento único en castellano sobre todo lo que
abarca la administración redes locales. Existen guías sueltas por internet sobre
conceptos de la guía pero separados y muy dispersos. También hay algún libro
publicado que lo he puesto en la bibliografía pero cada capítulo pasa por encima y no
profundiza lo mas mínimo para llevar a la práctica estos. Por ello esta guía puede serle
de gran a utilidad ya que reúne todos los temas que abarcan la administración y podrá
introducirse e incluso avanzar mediantes las referencias que dejo en la bibliografía.
3. Propósito y audiencia de este libro
Esta guía la he creado para que un usuario con pocos conocimientos sobre redes pueda
llevar a cabo a la práctica el montaje de una red y administrarla. No he querido
explayarme demasiado y muchos conceptos se pasan de refilón está pensado como una
resumen de los conceptos de la administración para darle una idea global de lo que
significa la administración de redes locales y como usar las herramientas que facilitan la
administración redes locales. Si el usuario está interesado en profundizar sobre un
capitulo o alguna herramienta en el apartado bibliografía he dejado referencias. La
bibliografía son mayoritariamente enlaces a Internet, su uso y lectura es libre.
Esta guía es útil para principiantes o usuarios avanzados en materias de informática pero
que el campo de la administración de redes locales hace mucho que no lo tocan.
4. Prerrequisitos
El sistema operativo utilizado es GNU/Linux y la distribución Debian/Lenny
(estable desde 11 de abril de 2009) con un kernel 2.6.24-1-486. De aquí en
adelante este será el sistema donde se realizaran los casos prácticos.
Si queremos una imagen del CD tenemos el enlace http://www.debian.org/CD/.
Normalmente con la instalación estándar tendremos todas las aplicaciones
necesarias para hacer los casos prácticos de la guía. Si por alguna razón alguna
aplicación no está en la instalación estándar lo indicare.
Si necesitamos información más exhaustiva recomiendo echar un vistazo las
referencias que hay en el apartado bibliografía.
La red que vamos a usar nosotros es local con tecnología Ethernet mediante
direcciones no privadas, en el capítulo 1 figura 19 esta dibujada la topología de
la red.
La mayoría de comandos descritos en la guía necesitan estar como usuario
administrador (leer capitulo 5 sección 5.3).
Es necesario tener actualizado el sistema operativo con la última versión, para
ello, teclear apt-get update en la terminal, automáticamente la actualización se
realizara. Pero si estamos en una versión anterior a Debian/Lenny como por
ejemplo Debian/Sarge o Debian/Etch recomiendo el siguiente enlace que es una
guía donde se explica cómo realizar esta
actualizacion http://www.debian.org/releases/lenny/i386/release-notes/ch-
upgrading.es.html.
Los conceptos básicos necesarios para la puesta en práctica y compresión de las
acciones indicadas en esta guía son:
1. Si no se tiene un conocimiento básico sobre redes locales sobre Ethernet,
direccionamiento IP y protocolos TCP/IP. Leerse el anexo, que es una pequeña
introducción sobre todo lo concerniente a estos temas.
2. La información referente a los comandos Linux a emplear se obtiene mediante los
comandos Linux: man comando o también info comando.
3. La información referente a los ficheros de configuración en Linux se obtiene
mediante la página 5 del manual Linux, es decir, tendremos que teclear en la
terminal man 5 fichero_configuracion. Todos estos ficheros están albergados en
el directorio /etc.
Durante la lectura de esta guía pueden surgir diversas dudas muy concretas que no sean
resueltas en esta guía, a parte de la bibliografía de la guía, existen en internet múltiplos
recursos disponibles, dejo tres de los he que utilizado:
Servicios sobre Debian/Lenny:
1. Foro sobre Debian/Lenny http://www.esdebian.org/foro.
2. Documento wiki de Debian albergado en la
dirección http://wiki.debian.org/FrontPageSpanish.
3. Canal IRC #esdebian para usar este canal IRC, recomiendo la herramienta
pidgin para conectarse a los canales IRC, disponible
en http://www.pidgin.im/.
Documentación Linux:
1. Proyecto de documentación Linux TLDP disponible en http://es.tldp.org/.
También hay algunas palabras técnicas que para no entorpecer la explicación las he
dejado para la sección del glosario.
5. Recursos
La subred lab.unavarra.es de la Universidad Publica de Navarra. Esta red solo he
tenido acceso del servicio sin poder modificar su topología o funcionamiento,
estas restricciones no facilitan el uso normal de la subred, como lo podría hacer
un administrador.
3 Ordenadores conectados a la red lab.unavarra.es:
1. Dell con Debian/Lenny
2. Acer con Debian/Lenny (Intel(R) Pentium(R) 4 CPU 3.40GHz, 2KB
cache, 4GB RAM).
3. Netbook s101 con Debian/Lenny instalado y windows xp sp3 (Atom
1.6GHz, 2GB RAM).
6. Temas de la memoria
Capitulo 1: se explica cómo analizar una red local sobre Ethernet desde un host y los
pasos básicos de configuración de un host para que tenga acceso a a Internet.
Capitulo 2: aquí veremos cómo crear una mínima seguridad de los hosts y la red local
mediante tres ejemplos prácticos para ello utilizaremos la herramienta de configuración
de cortafuegos iptables.
Capitulo 3: veremos cómo monitorizar todos los sucesos de la red local y como
centralizar todos estos sucesos en un solo host. Utilizando para ello el demonio
syslogkd.
Capitulo 4: en este cuarto capítulo veremos cómo realizar copias de seguridad usando
las herramientas básicas en línea de comando provistas por Linux
Capitulo 5: ya que Linux y una red local es un sistema que puede albergar múltiples
usuarios veremos cómo gestionamos dichos usuario. Veremos cómo eliminar cuentas,
administrar grupos de usuarios y cambiar las características básicas de una cuenta.
Capitulo 6: el proceso de administración de una red local puede ser muy tedioso y
repetitivo, para ello Linux provee de herramientas de automatización de procesos. Aquí
veremos herramientas de automatización de procesos como los shell scripts,
herramientas de edición de flujos de datos como tr, grep, sed y awk. También
herramientas de ejecución de comandos en múltiples hosts mediante la herramienta
grafica clusterSSH, creación de nuestros propios repositorios mediante AptonCD, por
último la creación de procesos periódicos mediante la herramienta crontab de Linux.
Capitulo 7: veremos cómo compartir impresoras y ficheros, sin preocuparnos de los
inconvenientes de que en la red haya diferentes sistemas operativos, para ello
conoceremos SAMBA. Enseñaremos en este capítulo como crear carpetas e impresoras
compartidas en la red y como darle los permisos adecuados para que los usuarios no
permitidos no accedan a estos recursos.
Capitulo 8: en este capítulo veremos cómo compartir ficheros entre sistemas operativos
Linux mediante NFS.
Capitulo 9: en este capítulo veremos cómo centralizar la gestión de usuarios mediante
NIS+NFS, es decir, los usuarios podrán loguearse a sus cuentas desde cualquier
ordenador y tener sus datos en un ordenador central.
Capitulo 10: configurar una red con sus direcciones ip y mascaras es muy engorroso,
para ello existe un método de agregar ips automáticamente, se utiliza el protocolo
DHCP, esto es lo que veremos en este capítulo.
Capitulo 11: daremos en este capítulo una introducción de los conceptos básicos sobre
redes locales sobre Ethernet, protocolo TCP/IP, direccionamiento IP. Será de vital
importancia para poder comprender los capítulos de la memoria si el lector no tiene
unos conocimientos mínimos. Hay que tener en cuenta que si el lector no tiene algún
conocimiento previo sobre estos conceptos le costara mucho entender este capítulo para
eso recomiendo la lectura del libro Redes de Computadores: un enfoque descendente
basado en Internet (véase bibliografía).
1. Análisis de una red local sobre Ethernet y como configurar un host en esta
1.1. Introducción
En este capítulo realizaremos un ejemplo práctico de cómo realizar los pasos básicos
para configurar un host con el fin de conectarse a una red local sobre Ethernet mediante
cable y más tarde acceder a Internet a través de este host, en nuestro caso en una subred
de la U.P.N.A. Para realizar este capítulo he seguido en manual de la página Guía de
Administración de Redes Segunda Edición, de Olaf Kirch segunda edición.
1.2. Prerrequisitos
Tendremos que tener instalado Debian/Lenny como había indicado en el prefacio y
tener unos conocimientos básicos sobre redes locales.
Tener un ordenador con conexión a Internet y a una red local.
1.3. Ficheros básicos a tener en cuenta para la configuración
Como habíamos dicho antes todos los ficheros de configuración del sistema están
situados en el directorio /etc/, ahí estarán todos nuestros ficheros necesarios para
configurar la red.
Estos son los que necesitamos para realizar nuestra conexión:
/etc/hosts Este fichero de texto asocia direcciones IP con nombres de hosts.
/etc/nsswitch.conf
Indica al sistema de resolución qué servicios usar (DNS, NIS, hosts) y en qué orden usar
estos servicios.
/etc/resolv.conf
En este fichero añadiremos los servidores DNS.
/etc/network/interfaces
Configuración automática de las interfaces de nuestro host.
1.4. Comandos necesarios para la configuración
route: Todo lo relacionado con la configuración del enrutamiento de nuestro host.
ifconfig:
Para configurar las interfaces de red.
ping:
Comando para saber si tenemos la conexión a una determinada maquina.
netstat:
Información sobre tabla de rutas, estadísticas de una interfaz y todo tipo de información
del estado de una red.
traceroute.db:
Imprime por pantalla el trazado de los paquetes desde un host a otro.
arp:
Sirve para manipular el cache arp.
tcpdump:
Sirve para cazar tráfico en la red.
1.5. Análisis de nuestra red local
1.5.1. Comprobación hardware
Previamente deberemos comprobar que nuestra tarjeta de red está conectada a la red
local a través de un cable de par trenzado, cable coaxial o fibra óptica etc. Nuestra
practica la he realizado mediante un cable de par trenzado, el conector es rj45. Para más
información sobre topologías y cableado en una red Ethernet consultar el capitulo
introductorio de la guía.
Después de percatarnos de que tenemos conexión física a la red deberemos comprobar
que nuestra tarjeta de red funciona. Con el comando ifconfig nos vastara.
Fig. 1.1. ifconfig detección tarjeta
Si la tarjeta de red no se detecta nos dará el siguiente mensaje.
Fig. 1.2. error ifconfig
debian:/media# ifconfig eth0: error fetching interface information: Device not found
debian:/media# ifconfig eth0 Link encap:Ethernet HWaddr 00:0d:56:92:fc:32 inet addr:172.18.69.245 Bcast:172.18.95.255 Mask:255.255.224.0 inet6 addr: fe80::20d:56ff:fe92:fc32/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:36443 errors:0 dropped:0 overruns:0 frame:0 TX packets:659 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 RX bytes:7224114 (6.8 MiB) TX bytes:120201 (117.3 KiB) Base address:0xdf40 Memory:fcfe0000-fd000000
Esto raramente sucede pero si el sistema no ha sido capaz de encontrar el driver de su
tarjeta de red automáticamente usted deberá buscarlo en
/lib/modules/[numero_kernel]/kernel/drivers/net y luego cargarlo con el comando
modprobe [nombre_kernel] o como opción secundaria dirigirse a la página web del
fabricante y descargarse los drivers. Normalmente en la misma página viene explicado
como instalarlo.
Si por algún casual ninguna cosa de las anteriores puede ser que la interfaz este
desactivada para ello habrá que activar con el siguiente comando ifconfig eth0 up y para
desactivarlo de nuevo ifconfig eth0 down.
1.5.2. Obteniendo información de nuestra red local
Lo primero que se debe hacer al querer configurar nuestra red local es pedir información
al proveedor que nos da la conexión a internet, en mi caso la U.P.N.A. Los datos a
solicitar serían la máscara que tiene la red local, ip que tengo asignada para mi host,
puerta de enlace que es la dirección del router que da salida a los paquetes de la red
local o subred de nuestra red local e ips del servidor local DNS. Como en mi caso tengo
configurado el host a través de DHCP (Capitulo 10 explico cómo configurar un
servidor DHCP) la maquina se autoconfigurá con unos determinados parámetros, esto
no me conviene, ya que según el día me pondrá una IP u otra, he decidió investigar yo
mismo como es la red local y así obtener información para configurar el host. A la gente
es novata o nuestro host no está configurado de antemano no recomiendo realizar esto si
no contactar con nuestro ISP o administrador de la red local y que obtenga los datos de
configuración.
Ahora vamos a ver una serie de comandos muy útiles para conocer nuestra red y de
paso nos vamos familiarizarnos con los comandos de red.
ifconfig: con este comando obtenemos la configuración de nuestra tarjeta de red.
Fig. 1.3. ifconfig
La información obtenida aquí es de valiosa ayuda, vamos a explicar los parámetros
importantes:
eth0: es el nombre de nuestra interfaz de red en el host, si tuviéramos dos tarjetas de red
tendríamos otra salida más con la interfaz eth1.
debian:/media# ifconfig eth0 Link encap:Ethernet HWaddr 00:0d:56:92:fc:32 inet addr:172.18.69.245 Bcast:172.18.95.255 Mask:255.255.224.0 inet6 addr: fe80::20d:56ff:fe92:fc32/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:36443 errors:0 dropped:0 overruns:0 frame:0 TX packets:659 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 RX bytes:7224114 (6.8 MiB) TX bytes:120201 (117.3 KiB) Base address:0xdf40 Memory:fcfe0000-fd000000
HWaddr: es la dirección física de la tarjeta de red, siendo una dirección que viene de
fábrica en la tarjeta de red.
inet addr: es la dirección IP del host, esta dirección se la ponemos nosotros, según el
rango de direcciones que tengamos disponibles.
Bcast: dirección de broadcast es una dirección especial que sirve para que un dato
pueda ser enviado a todos los hosts de la red local.
Mask: mascara de red que indica el ámbito de red donde trabaja el host, dentro de
nuestra red local podemos tener diferentes subredes y con ello diferentes mascaras de
red. Ahora no vamos a explicar detenidamente este concepto, para más información
mejor leerse el capítulo 11.
RX packets: ofrece información sobre los paquetes recibidos, numero de errores,
paquetes rechazados y paquetes perdidos por desbordamiento.
TX packets: la misma información que RX packets pero de los paquetes enviados
fuera.
Para más información man ifconfig en la terminal de Debian/Lenny.
route: nos da información sobre las reglas de envío de los paquetes.
Fig. 1.4 route
La primera línea significa que si el paquete va a nuestra propia red (lab.unavarra.es) el
paquete no necesita ir a ninguna pasarela y hay que enviarlo a la interfaz eth0. La
segunda línea significa que para todos los demás paquetes que no vayan a la subred
lab.unavarra.es por defecto se envíen a la puerta de enlace que es gw.lab.unavarra.es,
también llamada Gateway.
lab.unavarra.es es el nombre que designa a la red y que equivale a una ip siempre
acabada en .0 pero estas ips de red no designan un host en concreto, sino a un grupo de
ordenadores como una red local.
gw.lab.unavarra.es es el nombre que designa a la ip donde tienen que ir los paquetes si
quieren salir de la red.
El campo flags puede ser:
debian:/media# route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface lab.unavarra.es * 255.255.224.0 U 0 0 0 eth0 default gw.lab.unavarra 0.0.0.0 UG 0 0 0 eth0
U (la ruta está activada (up))
H (el objetivo es un ordenador anfitrión (host))
G (usa un gateway)
R (restablece una ruta para encaminamiento dinámico)
D (instalada dinámicamente por un demonio o redirección)
M (modificada a partir del demonio de ruta o redirección)
! (ruta de rechazo)
Como podemos observar la ruta de la pasarela tiene aparte del flag “U”el flag “G” que
indica que usa una pasarela. Para más información man 8 route en la terminal de
Debian /Lenny.
netstat: Muestra conexiones de red, tablas de encaminamiento, estadísticas de
interfaces y conexiones enmascaradas. Vamos a ver un par de ejemplos.
Fig. 1.5. netstat -nr
La figura 1.5 muestra lo mismo que el comando route, pero mediante la opción n le
decimos que muestre las direcciones numéricas en vez los nombres simbólicos,
mediante la opción r le decimos que queremos ver la tabla de rutas.
Fig. 1.6. netstat -s
La figura 1.6 podemos ver diferentes estadísticas del trafico de un host en la red
lab.unavarra.es: vemos estadísticas del protocolo ip, del protocolo ICMP , del protocolo
TCP, etc. Esto sirve para ver el estado de la red y si tenemos algún problema estas
estadísticas nos pueden dar pistas.
debian:/etc# netstat -s Ip: 2955 total packets received 153 with invalid addresses 0 forwarded 0 incoming packets discarded 2802 incoming packets delivered 2319 requests sent out Icmp: 51 ICMP messages received 0 input ICMP message failed. ICMP input histogram: destination unreachable: 51 51 ICMP messages sent 0 ICMP messages failed ICMP output histogram: destination unreachable: 51 IcmpMsg: InType3: 51 OutType3: 51 Tcp: 56 active connections openings 0 passive connection openings 0 failed connection attempts 1 connection resets received 1 connections established 2026 segments received 1461 segments send out 0 segments retransmited 0 bad segments received. 4 resets sent
debian:/etc# netstat -nr Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 172.18.64.0 0.0.0.0 255.255.224.0 U 0 0 0 eth0 0.0.0.0 172.18.64.254 0.0.0.0 UG 0 0 0 eth0
nmap: herramienta que escanea los puertos abiertos de la subred, muy importante para
la seguridad de la red local. No está en la instalación base de Debian/Lenny, antes de
usarlo deberemos teclear como superusuario apt-get install nmap en la terminal.
Con este comando realizaremos un análisis exhaustivo de la red, mediante esta
herramienta nos vamos hacer una idea bastante clara de la topología de la red local y
que hay en ella. Esta herramienta potentísima escanea los puertos de una ip o ips que le
des a escanear, según la técnica que tu le digas.
El ejemplo siguiente es un escaneo mediante ICMP ECHO (es decir el host que recibe
un paquete del tipo ICMP ECHO deberá responder con un Echo Reply, esto funciona
mediante el protocolo ICMP). Existen múltiples opciones para realizar estos escaneos
de la red, depende del tipo de seguridad de la red local tendremos que usar unos u otros.
En la mayoría de los casos dentro de una red local con la opción que enseñamos nos
será suficiente.
Para más información sobre esta herramienta man nmap o la pagina web
http://nmap.org/man/es/.
Fig. 1.7. nmap -PE 172.18.64.0/19
Lo que tenemos en la figura 1.7 es el análisis de toda la red local lab.unavarra.es le
hemos puesto la ip de la subred en este caso 172.18.64.0 y su máscara que es de 19 bits.
debian:/etc/init.d# nmap -PE 172.18.64.0/19 Starting Nmap 4.62 ( http://nmap.org ) at 2008-12-09 20:42 CET Interesting ports on dns-a.lab.unavarra.es (172.18.64.1): Not shown: 1712 closed ports PORT STATE SERVICE 25/tcp open smtp 53/tcp open domain 199/tcp open smux MAC Address: 00:90:27:AC:7D:44 (Intel) Interesting ports on dns-b.lab.unavarra.es (172.18.64.2): Not shown: 1712 closed ports PORT STATE SERVICE 25/tcp open smtp 53/tcp open domain 199/tcp open smux MAC Address: 00:D0:B7:3E:A9:6F (Intel) All 1715 scanned ports on gw-a.lab.unavarra.es (172.18.64.251) are closed MAC Address: 00:0A:42:CF:58:0A (Cisco Systems) #Interfaz de un router All 1715 scanned ports on gw-b.lab.unavarra.es (172.18.64.252) are closed MAC Address: 00:0A:42:CF:5C:0A (Cisco Systems) #Interfaz de un router All 1715 scanned ports on gw.lab.unavarra.es (172.18.64.254) are closed MAC Address: 00:00:0C:07:AC:07 (Cisco Systems) #Interfaz de un router (mi puerta de enlace) Interesting ports on inf140102.lab.unavarra.es (172.18.65.2): Not shown: 1700 closed ports Interesting ports on iee020492.lab.unavarra.es (172.18.67.220): Not shown: 1712 filtered ports PORT STATE SERVICE 139/tcp open netbios-ssn 445/tcp open microsoft-ds Running: Microsoft Windows XP OS details: Microsoft Windows XP SP2 Network Distance: 1 hop ... ... #Esto sigue hasta Nmap done: 8192 IP addresses (44 hosts up) scanned in 158.574 seconds
Cada bloque de datos es un host en la red, la información que nos provee el comando es
nombre del host, ip, puertos abiertos y sistema operativo. En total de 8192 direcciones
que ha escaneado y ha encontrado 44 hosts.
Las opciones -P* (que permiten seleccionar los tipos de ping) pueden combinarse.
Puede aumentar sus probabilidades de penetrar cortafuegos estrictos enviando muchos
tipos de sondas utilizando diferentes puertos o banderas TCP y códigos ICMP.
En una red local Ethernet con la opción –PE sería suficiente. P se refiere a ping y E es
que el mensaje es de tipo “echo request”.
dns-a.lab.unavarra.es: Es el servidor dns primario de la red local como su propio
nombre indica, aparece información de los puertos que ha escaneado. En nuestro caso
este servidor se encuentran cerrados 1712, y después de ésta ofrece información sobre
los puertos abiertos con su número y que servicio dan. Por último ofrece la dirección
MAC del servidor DNS.
dns-a.lab.unavarra.es: dns secundario, la misma información que en el primario.
gw.lab.unavarra.es: indica la puerta de enlace, al ser un router no hay información
sobre los puertos, ya que los routers carecen de puertos.
inf140102.lab.unavarra.es: a partir de este bloque es información de hosts, este host
no tiene ningún puerto abierto. Inf140102 es el nombre de este host en LAN.
Otra opción interesante de nmap es –O que nos da información más exhaustiva y de que
tipo puede ser el dispositivo, sacándonos un parámetro llamado Device type que indica
que puede ser un switch, router, etc.
Fig. 1.8. nmap -O 172.18.64.0/19
Con toda esta información podemos hacernos una representación grafica de la red
lab.unavarra.es:
debian:/etc/init.d# nmap -O 172.18.64.0/19 All 1715 scanned ports on gw.lab.unavarra.es (172.18.64.254) are closed MAC Address: 00:00:0C:07:AC:07 (Cisco Systems) Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port Device type: switch|router|WAP Running: Cisco IOS 12.X OS details: Cisco 2924M-XL switch (IOS 12.0), Cisco 2960G switch (IOS 12.2), Cisco 3548XL switch (IOS 12.0), Cisco Catalyst C2900-series or C3750 switch, or 4500 router (IOS 12.1 - 12.2), Cisco Aironet 1200 WAP (IOS 12.3) Network Distance: 1 hop Interesting ports on iee020721.lab.unavarra.es (172.18.69.241): Not shown: 1712 filtered ports PORT STATE SERVICE 139/tcp open netbios-ssn 445/tcp open microsoft-ds 3389/tcp closed ms-term-serv MAC Address: 00:0D:56:84:18:49 (Dell Pcba Test) Device type: general purpose Running: Microsoft Windows 2000 OS details: Microsoft Windows 2000 Server SP4 Network Distance: 1 hop
39 hosts restantes en la red
lab.unavarra.es
FQDN:fujitsu26134.lab.unavarra.es
172.18.69.242
FQDN:dell27043.lab.unavarra.es
172.18.69.245
Servidor DNS
dns-a.lab.unavarra.es
172.18.64.1
Hub
HubPuerta de enlace
Gw.lab.unavarra.es
172.18.69.254
RouterSwitch
Fig. 1.9. Topología de la red lab.unavarra.es
La figura 1.9 es una representación grafica de la subred lab.unavarra.es dentro de la red
local de la U.P.N.A. El Hub que está conectado al router es el modelo 3Com
OfficeConnect Ethernet Hub 16c con 16 puertos RJ-45 y el otro hub es un 3Com
OfficeConnect Ethernet Hub tp16c también con 16 puertos RJ-45. Por último el router
es un Cisco 6500.
En el siguiente apartado vamos a explicar cómo configurar el host dell27043 dentro de
esta subred.
Datos obtenidos en este capítulo para la configuración:
Nombre e IP de la red: lab.unavarra.es=172.18.64.0 obtenido de netstat -nr
IPs posibles a asignar: cualquiera que no sea de los hosts ocupados del escaneo de
nmap.
Mascara de red: 255.255.224.0 que equivale a una máscara de 19 bits obtenido de
cualquier comando visto.
Servidor DNS: 172.18.64.1 y 172.18.64.2 obtenido de nmap.
1.6. Configurando un host de nuestra red local
1.6.1. Asignando la máscara e ip al host manualmente
Cuando ya sepamos la máscara que usa la red en que estamos, ips libres para nuestro
host, puerta de enlace e ips de los servidores DNS de nuestra red local ya estaremos
preparados para empezar la configuración.
Primeramente deberemos asignar una ip estatica a nuestra interfaz de red para ello
utilizaremos el comando ifconfig en nuestro caso:
Fig. 1.10. Asignando ip y marcara mediante ifconfig
En la fig. 1.10 lo que hemos realizado es asignar a la interfaz eth0 la ip 172.18.69.245
que no tenía ningún host asignada en la red y le hemos puesto la mascara
255.255.224.0.
1.6.2. Asignando alias en nuestro host
Ahora vamos a ponernos a configurar los “alias” es decir asociar un nombre a una
dirección ip, ya que es mucho mas practico y más fácil de memorizar que una dirección
ip. Existen dos ficheros para este cometido /etc/host.conf y /etc/nsswitch.conf. El
primero está en nuestro sistema pero no se utiliza desde hace mucho tiempo,
exactamente desde que se empezó a utilizar la librería libc5, así que no explicaremos
/etc/host.conf y nos ceñiremos al fichero /etc/nsswitch.conf. Este se encarga de decirle
al ordenador qué sistema de traducción debe usar para traducir los nombres de los hosts
a su respectiva hosts (o páginas web) a su respectiva ip y en qué orden debe usar cada
sistema de traducción.
Fig. 1.11. Fichero de configuración /etc/hosts
“host: files”: le dice al sistema que busque los hosts en /etc/hosts.
Luego editamos el fichero /etc/hosts donde ponemos la ips de nuestra red local y su
respectivo nombre asociado.
Fig. 1.12. Configuracion /etc/hosts
Ahora si realizamos ping a dell27043 sabrá que está asociado ese nombre a la IP
172.18.69.245.
127.0.0.1 localhost 127.0.1.1 debian 0.0.0.0 default # Ordenador dell27043 #IP FQDN aliases 172.18.69.245 dell27043.lab.unavarra.es dell27043 172.18.69.242 fujitsu26134.lab.unavarra.es fujitsu26134
hosts: files
ifconfig eth0 172.18.69.245 netmask 255.255.224.0
Fig. 1.13. Comprobando con ping
1.6.3. Crear el enrutamiento del host
Luego mediante el comando route diremos según a que red va más la máscara, diremos
donde tiene que ir el paquete.
Fig. 1.14. Direccionamiento con route
En la figura tenemos tres opciones; -net es para indicar según a la red donde debe ir el
paquete, en nuestro caso lab.unavarra.es, la segunda opción netmask que indica la
mascara de la subred lab.unavarra.es y finalmente dev indica a donde tiene que ir el
paquete según la red y la máscara descritos por –net y dev, en este caso el paquete iría a
la propia red, así que con enviarlo por la interfaz seria suficiente.
También agregamos la ruta por defecto que debe ser la ip que hemos descubierto en la
sección 1.5.1 con el comando route y netstat –nr.
Fig. 1.15. Estableciendo la puerta de enlace mediante route
1.6.4. Asignando ips del servidor DNS en host
Con los pasos anteriores tendremos conexión en los hosts de la subred lab.unavarra.es.
Todavía no se puede acceder a internet ya que el ordenador es incapaz de traducir
nombres de páginas web a sus respectivas direcciones ip. Para ello existe un protocolo
que traduce los nombres de las páginas web a sus respectivas ips, este protocolo es
llamado DNS.
Para configurar este servicio en un host terminal tenemos dos ficheros:
/etc/resolv.conf
Aquí se indica que servidores (estos servidores son los encargados de traducir el nombre
de la pagina web a su respectiva ip) vamos a usar para al servicio DNS.
/etc/nsswitch.conf
Aquí indicamos el orden de búsqueda en los ficheros cuando hay una petición de una ip
para un nombre, mas tarde servirá para configurar NIS.
Configuración de /etc/resolv.conf.
route add default gw 172.18.69.254
route add -net lab.unavarra.es netmask 255.255.224.0 dev eth0
debian:/etc# ping dell27043 PING dell27043.lab.unavarra.es (172.18.69.245) 56(84) bytes of data. 64 bytes from dell27043.lab.unavarra.es (172.18.69.245): icmp_seq=1 ttl=64 time=0.036 ms 64 bytes from dell27043.lab.unavarra.es (172.18.69.245): icmp_seq=2 ttl=64 time=0.023 ms 64 bytes from dell27043.lab.unavarra.es (172.18.69.245): icmp_seq=3 ttl=64 time=0.026 ms 64 bytes from dell27043.lab.unavarra.es (172.18.69.245): icmp_seq=4 ttl=64 time=0.030 ms 64 bytes from dell27043.lab.unavarra.es (172.18.69.245): icmp_seq=5 ttl=64 time=0.023 ms 64 bytes from dell27043.lab.unavarra.es (172.18.69.245): icmp_seq=6 ttl=64 time=0.024 ms 64 bytes from dell27043.lab.unavarra.es (172.18.69.245): icmp_seq=7 ttl=64 time=0.030 ms --- dell27043.lab.unavarra.es ping statistics --- 7 packets transmitted, 7 received, 0% packet loss, time 5998ms rtt min/avg/max/mdev = 0.023/0.027/0.036/0.006 ms 172.18.69.245 dell27043.lab.unavarra.es dell27043 172.18.69.242 fujitsu26134.lab.unavarra.es fujitsu26134
Fig. 1.16. Configurando /etc/resolv.conf
En la figura 1.16 tenemos 3 campos:
domain: aquí designamos el nombre de dominio (nombre de la red local)
search: sirve para poder hacer ping dell27043 en vez de dell27043.lab.unavarra.es.
nameserver: aquí ponemos la ip del servidor DNS, normalmente se ponen 2 servidores
por si uno cae.
Configuración de /etc/nsswitch.conf para el servicio DNS.
Fig. 1.17. Estableciendo la puerta de enlace mediante route
La figura 1.17 es igual que la figura 1.11 sólo que añadiremos dns para que primero use
los servidores dns y luego el fichero /etc/hosts.
DNS es una base de datos distribuida y jerárquica, se basa en múltiples servidores. Si
una persona pregunta por un host este mandara una petición DNS a su servidor local, si
el servidor local no lo encuentra este mandara una petición a un root-server o también
llamado servidor raíz que son los servidores más altos en la jerarquía, estos servidores
raíz contestaran diciéndole donde pueden solicitar la ip asociada a ese dominio. Por
ejemplo si pedimos una petición de una ip fuera de la U.P.N.A., el servidor DNS de la
U.P.N.A. no lo tendrá mapeado y tendrá que pedirlo fuera, y hará una consulta al
servidor de su nivel superior. En la figura 1.15. Vemos explicación esquemática de una
petición DNS.
Fig. 1.18. Secuencia del funcionamiento de DNS
hosts: files dns
networks: files dns
domain lab.unavarra.es search lab.unavarra.es nameserver 172.18.64.2 #ips de los servidores DNS nameserver 172.18.64.1
Ejemplo de una petición DNS de mi ordenador fuera de la red lab.unavarra.es
Fig. 1.19. Ejemplo de petición DNS
En la figura 1.19 vemos la petición de nuestro ordenador al servidor local DNS de
nuestra red con nombre dns-b.lab.unavarra.es y la contestación mas tarde del nombre
canónico (CNAME) de la página solicitada en este caso abc.com.
1.6.5. Comprobar que la conexión esté correcta
Con estos pocos pasos tendrá conexión a internet. Cuando un paquete vaya fuera de
nuestra red y llegue a la puerta de enlace este paquete será enrutado por la red de la
U.P.N.A. despreocupándonos de el totalmente, a partir de ahí la llegada de ese paquete
no será responsabilidad nuestra ya que nosotros no somos los administradores de esa
red.
Para comprobar que tenemos conexión fuera de nuestra red haremos un ping a una ip
fuera de nuestra red:
Fig. 1.20. Comprobación de conexión mediante comando ping
En la figura 1.20 lo que se está realizando es enviar paquetes del tipo icmp echo
request, si el host destino tiene habilitado este protocolo el host destino tiene que
contestar con un icmp echo reply. Esta herramienta se usa para comprobar la conexión
entre dos nodos, al finalizar el envió de paquetes el comando ping nos da información
de los paquetes trasmitidos (packet loss), cuales han sido recibidos (2 packets
transmitted), el porcentaje de paquetes perdidos ( 0% packet loss) y tiempo transcurrido
(time 2004ms).
Si los paquetes se pierden mediante la aplicación traceroute.db podremos observar los
saltos que hace nuestro paquete por los enrutadores y ver donde se pierde el paquete, así
podremos ver si el problema es nuestro o externo a nuestra red. En mi distribución se
llama traceroute6.db ó traceroute.db.
debian:/home/ekaitz# ping www.rediris.com PING babia.rediris.es (130.206.1.22) 56(84) bytes of data. 64 bytes from babia.rediris.es (130.206.1.22): icmp_seq=1 ttl=249 time=20.2 ms 64 bytes from babia.rediris.es (130.206.1.22): icmp_seq=2 ttl=249 time=19.9 ms --- babia.rediris.es ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2004ms rtt min/avg/max/mdev = 19.506/19.885/20.224/0.316 ms
debian:/home/ekaitz# tcpdump -i eth0
13:16:21.431210 IP dell27043.lab.unavarra.es.53380 > dns-b.lab.unavarra.es.domain: 19823+ AAAA? www.abc.com. (29)
13:16:21.482227 arp who-has gw.lab.unavarra.es tell qui060102.lab.unavarra.es
...#información irrelevante
...#información irrelevante
13:16:21.811783 CDPv2, ttl: 180s, Device-ID 'tejos-20'[|cdp]
13:16:21.897232 IP dns-b.lab.unavarra.es.domain > dell27043.lab.unavarra.es.53380: 19823 1/1/0 CNAME abc.com. (107)
Fig. 1.21. Ejemplo de traceroute6.db
Las líneas de la figura 1.21 que empiezan con 1, 2 y 3 son los saltos que hacen los
paquetes dentro del dominio unavarra.es. Para más información sobre el comando man
traceroute6.db.
1.6.6. Configuración persistente de la configuración
La configuración se puede configurar persistentemente, esto se hace editando el fichero
/etc/network/interfaces para que el ordenador lo haga automáticamente cada vez que se
encienda.
En este fichero se puede especificar que se ejecute un cierto comando antes de levantar
la interfaz, un comando una vez ha sido levantado, un comando antes de echarlo abajo
y/o un comando una vez echada abajo. Para una información exhaustiva consultar man
5 interfaces.
Para llevar a cabo esto haremos uso de las palabras clave:
* pre-up: ejecutar comando antes de levantar la interfaz.
* up : ejecutar comando cuando hemos levantado la interfaz.
* down: ejecutar comando después de desactivar una interfaz.
* post-down: ejecutar comando justo antes de desactivar una interfaz.
Por lo tanto, nuestro fichero /etc/network/interfaces quedaría de la siguiente manera en
nuestra red lab.unavarra.es para una configuración persistente.
Fig. 1.22. Ejemplo de configuración de /etc/network/interfaces estáticamente
La información guardada en el fichero /etc/network/interfaces no es suficiente para
acceder a internet, lo único que faltaría seria configurar el fichero descrito en la figura
1.16 (/etc/resolv.conf).
Si cambiamos algo de este fichero para que se aplique la nueva configuración
deberemos reiniciar el demonio /etc/init.d/networking o reiniciar el sistema.
iface lo inet loopback iface eth0 inet static address 172.18.69.245 netmask 255.255.224.0 network 192.168.64.0 broadcast 172.18.95.255 gateway 172.18.64.254 auto lo auto eth0
debian:/etc# traceroute6.db www.rediris.com traceroute to www.rediris.com (130.206.1.22), 30 hops max, 40 byte packets 1 gw-a.lab.unavarra.es (172.18.64.251) 1.935 ms 1.903 ms 2.084 ms 2 ceiba.red.unavarra.es (130.206.158.17) 1.845 ms 2.298 ms 27.261 ms 3 unavarra-rt-ext.red.unavarra.es (130.206.158.1) 27.235 ms 27.435 ms 27.417 ms 4 GE0-3-0.EB-Pamplona0.red.rediris.es (130.206.209.13) 27.399 ms 27.622 ms 27.600 ms 5 NAV.SO1-0-0.EB-Bilbao0.red.rediris.es (130.206.250.121) 34.355 ms 34.309 ms 34.786 ms 6 PAV.AS0-0.EB-IRIS4.red.rediris.es (130.206.250.65) 46.261 ms 20.039 ms 20.015 ms 7 XE3-0-0-264.EB-IRIS6.red.rediris.es (130.206.206.133) 20.223 ms 33.527 ms 33.459 ms 8 babia.rediris.es (130.206.1.22) 33.926 ms 33.678 ms 33.663 ms
Fig. 1.23. Reinicio del demonio de red para volver a reconfigurar los parámetros
2. Seguridad de la red local de ataques exteriores
2.1. Introducción
En este capítulo trataremos el tema de seguridad perimetral, es decir, intentaremos de
evitar intrusiones dentro de nuestra red local. La forma más eficaz de evitar intrusiones
no deseadas es mediante cortafuegos (también llamado firewalls). Un cortafuegos lo
que hace es observar cuales son los datos de entrada y según unos criterios rechazarlos
aceptarlos, es decir, lo que hace es filtrar los datos de salida y de entrada según unas
condiciones. Existen muchos más métodos para proteger nuestra red local, como
sistemas IDS para detectar intrusos en nuestra red. Pero para comenzar algo sobre
seguridad está bien empezar con firewalls, ya que es el primer mecanismo de seguridad
a implementar en una red local. Aquí explicaremos como configurar cortafuegos
mediante iptables (1999), que es la herramienta para establecer los criterios de filtrado
del cortafuegos, se requiere el núcleo 2.4 en adelante para que iptables funcione.
Existen versiones anteriores de iptables como ipforward para el núcleo 2.1.102 (1994)
en adelante e ipchains (1998) a partir del núcleo 2.3.15. En esta pequeña introducción a
debian:/etc# /etc/init.d/networking restart #resetear configuracion Reconfiguring network interfaces...done.
iptables haremos un pequeño ejemplo introductorio y luego habrá el caso real de
configuración del host que está en la red lab.unavarra.es. No trataremos de explicar los
comandos de iptables, solo mostrar un ejemplo práctico y explicación somera de este.
Para realizar este capítulo he seguido el capitulo 9 de la Guía de Administración de
Redes Segunda Edición, de Olaf Kirch.
También para una introducción práctica y menos teórica sobre iptables este enlace
http://es.tldp.org/Manuales-LuCAS/doc-iptables-firewall/doc-iptables-firewall.pdf.
2.2. Prerrequisitos
-Tener instalado iptables v1.4.0
-Tener el núcleo de Linux con soporte de cortafuegos
-Tener conocimientos de comunicación del protocolo TCP/IP .
-Las configuraciones están hechas mediante scripts de Shell, así que se presupondrá
unos conocimientos mínimos de Shell scripts, estos se han echo sobre BASH scripts.
Para núcleos superiores al 2.4 estas son las opciones necesarias al compilar el núcleo
para que funcione iptables, aunque con la instalación minima de Debian/Lenny
funcionara:
Fig. 2.1. Configuración de la red en el kernel
Antes de empezar a configurar los cortafuegos hay que cargar el modulo del núcleo
netfilter.
Fig. 2.2. Cargando modulo nucleo netfilter
Iptables sería como una capa de abstracción entre el usuario y netfilter. Así como un
sistema operativo hace de capa de abstracción de entre la maquina y el usuario.
2.3. Mecanismo de un cortafuegos (firewall)
modprobe iptables
Networking options −−−> [*] Network packet filtering (replaces ipchains) IP: Netfilter Configuration −−−> . <M> Userspace queueing via NETLINK (EXPERIMENTAL) <M> IP tables support (required for filtering/masq/NAT) <M> limit match support <M> MAC address match support <M> netfilter MARK match support <M> Multiple port match support <M> TOS match support <M> Connection state match support <M> Unclean match support (EXPERIMENTAL) <M> Owner match support (EXPERIMENTAL) <M> Packet filtering <M> REJECT target support <M> MIRROR target support (EXPERIMENTAL) . <M> Packet mangling <M> TOS target support <M> MARK target support <M> LOG target support <M> ipchains (2.2−style) support
Un cortafuegos se encarga de filtrar que paquetes entraran a la red y cuales saldrán,
estas decisiones se hace según unos criterios, normalmente lo que se hace es configurar
iptables para que el firewall compruebe la estructura de los datagramas y el contenido
de sus campos, según el contenido de estos datagramas se realizara una acción.
Hay 2 formas de configurar un cortafuegos:
1. Aceptar todos los paquetes e indicar explícitamente cuales no se aceptaran.
2. Denegar todos los paquetes e indicar explícitamente cuales serán aceptados.
La primera a opción es muy fácil su configuración, pero más insegura que la segunda
opción. Lo recomendable es la segunda opción, pero la configuración será mucho más
difícil.
2.4. Tipos de configuración realizados
2.4.1. Ejemplo sencillo de configuración de un host. 2.4.2. Configuración del cortafuegos de mi host en la red lab.unavarra.es.
2.4.1. Ejemplo sencillo de configuración de un host
El siguiente ejemplo es una pequeña muestra de lo que se puede realizar con iptables, se
pueden hacer pequeños scripts de configuración hasta cientos de líneas de
configuración, depende el nivel de seguridad que queramos a llegar a implementar. Hay
que dejar claro que nunca existe la seguridad perfecta, solo se puede mejorar e
incrementar.
Fig. 2.3. Ejemplo de configuración mediante iptables
Línea 1: indica que se va hacer el script sobre el lenguaje de scripts bash.
Línea 2: política por defecto de los paquetes de entrada rechazarlos (DROP).
Línea 3: la política por defectdo de los paquetes de salida son aceptarlos.
Línea 4: aceptaremos todos los paquetes que sean de una conexión establecida
(ESTABLISHED) o se está estableciendo la conexión (RELATED).
Línea 5: aceptaremos los paquetes de la interfaz lo (loopback).
Línea 6: aceptaremos todos los paquetes de entrada del protocolo UDP con puerto 53
(DNS).
Línea 7: aceptaremos todos los paquetes con numero de puerto destino 53 o 80 (www)
del protocolo TCP.
Para ver un resumen de todas las reglas que hemos introducido en sistema tenemos el
comando iptables –L.
#!/bin/bash iptables -P INPUT DROP iptables -P OUTPUT ACCEPT iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -p udp --dport 53 -j ACCEPT iptables -A INPUT -p tcp -m multiport --dports 53,80 -j ACCEPT
Fig. 2.4. iptables –L
Chain INPUT (policy ACCEPT): esta línea pone los filtros para los paquetes de
entrada. Mediante policy ACCEPT indicaremos que todos los paquetes de entrada son
aceptados, sobre esta política pondremos las reglas para denegar acceso de paquetes.
Chain FORWARD (policy DROP): esta política se refiere cuando los paquetes no van
al host, pero tiene que ser trasmitido. Seria cuando el host se comporta como un router.
Policy DROP indica que la política por defecto de esta sección es rechazar los paquetes.
Chain OUTPUT (policy ACCEPT): esta es la política referente a los paquetes que
salen, mediante policy ACCEPT decimos que la política por defecto es dejar que salgan
los paquetes.
Nota: todo este conjunto de comandos iptables lo ejecutaremos mediante el lenguaje de
programación bash script, debe guardarse mifirewall.sh y darle permisos de ejecución
mediante el comando chmod 700 mifirewall.sh. Para ejecutarlo en la terminal tecleamos
./mifirewall.sh. En el capítulo 6 hago una pequeña explicación de cómo funcionan los
scripts.
debian:/home/ekaitz/Desktop/practicasIPTABLES# iptables -L Chain INPUT (policy DROP) target prot opt source destination ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED ACCEPT all -- anywhere anywhere ACCEPT udp -- anywhere anywhere udp dpt:domain ACCEPT tcp -- anywhere anywhere multiport dports domain,www Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination
Fig. 2.5. esquema de iptables
2.4.2. Configuración del cortafuegos de mi host en la red lab.unavarra.es
Fig. 2.6. Configuración de cortafuegos en host lab.unavarra.es
La configuración de este script para BASH configura un firewall de un host que utilizo
en mi red lab.unavarra.es con ip 172.18.69.246, el script se estructura de la siguiente
forma:
1. Borra todas las configuraciones de iptables anteriormente hechas.
2. Ponemos la política por defecto de aceptación (ACCEPT) al contrario que
habíamos hecho en el ejemplo sencillo, aunque es más seguro poner la política
por defecto DROP (rechazo) aunque la configuración resulta más difícil, si usted
acaba de empezar con iptables es recomendable usar la política por defecto
ACCEPT y sobre esto poner lo que vamos a rechazar, cuando ya se coja destreza
use la política por defecto DROP.
3. Ahora vamos a bloquear los servicios que queremos que nuestro host no pueda
usar, rechazamos todos los paquetes de entrada con el protocolo ICMP (utilizado
para hacer ping) y también rechazamos todos los paquetes de salida
pertenecientes al protocolo ICMP. También rechazaremos el puerto 21 que es el
protocolo TCP (Transfer Control Protocol) y el protocolo SSH para hacer login
a maquinas remotas. En el último ejemplo práctico hemos bloqueado el servicio
de mensajería Menssenger. Para ello debemos rechazar el puerto 1863, este
puerto es el necesario para que funcione el programa.
#!/bin/bash IPTABLES=iptables NUESTRARED="172.18.69.246" NUESTRABROADCAST="172.18.95.255" NUESTRAINTERFAZ="eth1" CUALQUIERRED="0/0"
# FIN DE LA SECCIÓN CONFIGURABLE POR EL USUARIO ########################################################################### # Borra las reglas de la cadena de entrada $IPTABLES -F INPUT $IPTABLES -F OUTPUT # # Por defecto, queremos denegar el acceso a los intentos de entrada
#POLITICA POR DEFECTO $IPTABLES -P INPUT ACCEPT $IPTABLES -P OUTPUT ACCEPT
# LO QUE RECHAZAMOS
#Rechazmos icmp, y telnet y ssh $IPTABLES -A INPUT -p icmp -d $NUESTRARED -s $CUALQUIERRED -j DROP $IPTABLES -A OUTPUT -p icmp -s $NUESTRARED -d $CUALQUIERRED -j DROP
$IPTABLES -A INPUT -m tcp -p tcp -d $NUESTRARED -s $CUALQUIERRED --dport 22 -j DROP $IPTABLES -A INPUT -m tcp -p tcp -d $NUESTRARED -s $CUALQUIERRED --dport 22 -j DROP
$IPTABLES -A INPUT -m tcp -p tcp -d $NUESTRARED -s $CUALQUIERRED --dport 21 -j DROP $IPTABLES -A INPUT -m tcp -p tcp -d $NUESTRARED -s $CUALQUIERRED --dport 21 -j DROP $IPTABLES -A INPUT -m tcp -p tcp -d $NUESTRARED -s $CUALQUIERRED --dport 21 -j DROP $IPTABLES -A INPUT -m tcp -p tcp -d $NUESTRARED -s $CUALQUIERRED --dport 21 -j DROP $IPTABLES -A INPUT -m tcp -p tcp -d $NUESTRARED -s $CUALQUIERRED --dport 1863 -j DROP $IPTABLES -A INPUT -m tcp -p tcp -d $NUESTRARED -s $CUALQUIERRED --dport 1863 -j DROP
3. Auditoría del sistema en una red local
3.1 Introducción
Auditoria del sistema en una red local es el registro de todo lo que pasa en la red local
creando uno histórico de lo sucedido.
Existen múltiples tipos de sucesos (técnicamente a un suceso se le llama evento o log) ,
desde intentos fallidos de login, tiempo de CPU que los usuarios consumen, momento
en que un usuario se loguea, etc.
Las ventajas de monitorizar son múltiples; aviso de anomalías en la red local, posibles
ataques exteriores como denegación de servicio, detección de intrusos, etc.
El problema puede surgir si nuestro sistema analiza grandes volúmenes de información,
ya que será más difícil encontrar anomalías, para eso tenemos herramientas útiles para
un administrador como Shell scripts y los comandos grep, tr, sed y awk, que serán
explicadas mediante ejemplos prácticos en el capítulo 5.
Para este capítulo como guía de referencia he seguido el capítulo 7 del manual de
SEGURIDAD EN UNIX Y REDES Versión 2.1 de Antonio Villalón Huerta.
3.2. Prerrequisitos
Necesitamos la instalación base de Debian/Lenny y también será recomendable tener
conocimientos de expresiones regulares si queremos entender algunos ejemplos
perfectamente, aunque no es indispensable. En este capítulo no explicaré las
expresiones regulares recomiendo la lectura del contenido de este enlace
http://www.bulma.net/body.phtml?nIdNoticia=770.
3.3. Funcionamiento del sistema de monitorización.
La monitorización del sistema lo controla el demonio sysklogd y los criterios de
configuración se realizan mediante el fichero /etc/syslog.conf.
El monitorizar los datos de una red local existe un problema, es que produce un ingente
volumen de información, para ello debemos seleccionar los sucesos relevantes,
recomiendo que se monitoricen los siguientes sucesos:
Un intento de acceso con contraseña equivocada.
Un acceso correcto al sistema.
Anomalías: variaciones en el funcionamiento normal del sistema.
Alertas cuando ocurre alguna condición especial.
Información sobre actividades del sistema operativo.
Errores del hardware o el software.
Si uno no es un experto en seguridad recomiendo no modificar el fichero
/etc/syslog.conf y dejarlo como viene por defecto.
Para facilitar las tareas de control de la información monitorizada lo recomendable es
que exista un ordenador servidor que se encargue de registrar todos los eventos de la red
local, este ordenador centralizara toda esta información existiendo un punto unificado.
Éste no tiene por qué encargase exclusivamente de la monitorización de la red local,
también podría ser a la vez un servidor FTP o un servidor web. Más tarde en este
capítulo veremos cómo hacer una monitorización centralizada mediante los logs
remotos, que sirve para que los logs de una maquina vayan a parar a otra máquina.
Fig. 3.1. Topología de servidor de logs
3.4. Funcionamiento del fichero de configuración /etc/syslog.conf
El siguiente cuadro representa la configuración por defecto del fichero /etc/syslog.conf
en Debian/Lenny.
Fig. 3.2. Fichero de configuración /etc/syslog.conf
Cada línea del fichero /etc/syslog.conf está formada por:
servicio.nivel_de_prioridad campo_de_accion
Servicio: indica el servicio que será monitorizado.
Nivel de prioridad: indica el nivel de prioridad indicado para los eventos del servicio.
Campo de acción: indica donde se va guardar un evento de un servicio.
El campo servicio puede ser uno de estos 14 atributos:
auth: Sistema de autenticación, incluyendo login, su y getty. authpriv: Programas de autorización privados .
cron: cron y at. daemon: demonios del sistema .
ftp: demonio de ftp.
kern: mensajes generados por el kernel.
local0-7: reservado para uso local.
lpr: sistema de impresión.
mail: sistema de mail.
mark: mensajes internos de syslogd (no usable por aplicaciones).
news: sistema de news en la red.
syslog: mensajes del demonio de syslog.
user: Aplicaciones de usuario.
uucp: sistema UUC.
El campo nivel de prioridad puede ser uno de estos 8 atributos:
Debug: mensajes generados en la depuración de un programa.
debian:/# cat /etc/syslog.conf
# /etc/syslog.conf Configuration file for syslogd.
#
# For more information see syslog.conf(5)
# manpage.
# First some standard logfiles. Log by facility.
auth,authpriv.* /var/log/auth.log
*.*;auth,authpriv.none -/var/log/syslog
#cron.* /var/log/cron.log
daemon.* -/var/log/daemon.log
kern.* -/var/log/kern.log
lpr.* -/var/log/lpr.log
mail.* -/var/log/mail.log
user.* -/var/log/user.log
#
# Logging for the mail system. Split it up so that
# it is easy to write scripts to parse these files.
#
mail.info -/var/log/mail.info
mail.warn -/var/log/mail.warn
mail.err /var/log/mail.err
# Logging for INN news system
news.crit /var/log/news/news.crit
news.err /var/log/news/news.err
news.notice -/var/log/news/news.notice
# Some `catch-all' logfiles.
#
*.=debug;\
Info: mensajes informativos.
Notice: mensajes no críticos que requieren investigación adicional.
Warning: mensajes de aviso.
Err: otros errores.
Crit: condiciones críticas como errores hardware.
Alert: condiciones que se deberían resolver rápidamente.
emerg : condiciones de pánico muy importantes.
El campo acción pueden ser ficheros o múltiples tipos de dispositivos:
Un fichero plano
Fig. 3.3. Monitorización en fichero plano
Un dispositivo físico como una terminal o una impresora.
Fig. 3.4. Monitorización en dispositivo físico
Una maquina remota.
Fig. 3.5 Monitorización en maquina remota
Unos usuarios del sistema.
Fig. 3.6. Monitorización a usuarios del sistema
Todos los usuarios que estén conectados.
Fig. 3.7. Monitorización de todos los usuarios del sistema
Existen metacaracteres como el “* , ; = !” todos ellos están explicados en man 5
syslog.conf.
Si quisiéramos crear nuestro propio envió de mensajes de log en tiempo real
deberíamos usar el comando logger.
Fig. 3.8. Creación de mensaje log mediante logger
debian:/dev# logger -p local0.info "Enviando al demonio sysklogd con el servicio local0 y
nivel de prioridad info"
debian:/dev# tail -1 /var/log/messages
Mar 26 19:44:51 debian ekaitz: Enviando al demonio syslogd con el servicio local0 y nivel
de prioridad info
*.alert *
*.alert root, ekaitz,ulaize
*.* @s101.lab.unavarra.es
mail.err /dev/console
mail.err /var/log/mail.err
En la figura hemos creado un mensaje log del servicio local0 con prioridad info y el
mensaje del evento es "Enviando al demonio sysklogd con el servicio local0 y nivel de
prioridad info". El mensaje es guardado según la configuración syslog.conf en este caso
se guarda en /var/log/messages con la fecha y hora de la maquina que lo genera, el
usuario y el mensaje.
3.5. Ficheros comunes donde se guardan los logs
Como hemos visto en el campo de acción podemos indicar que registre los mensajes en
cualquier fichero, maquina o dispositivo físico. Pero normalmente hay unos
determinados ficheros del sistema GNU/Linux que es donde habitualmente se registran
determinados mensajes, estos son los más importantes:
3.5.1. Fichero /var/log/syslog
Este fichero que en Debian/Lenny está situado en /var/log/syslog, es el fichero más
importante dentro del sistema de monitorización de Linux, este fichero registra por
defecto todos los servicios y todas las prioridades, a excepción de los servicios auth y
authpriv. Para más información sobre el fichero man /var/log/syslog.
Fig. 3.9. /var/log/syslog
3.5.2. Fichero /var/log/messages
En este fichero, situado en /var/log/messages, se guardan mensajes de baja a media
prioridad.
Fig. 3.10. /var/log/messages
3.5.3. Fichero /var/log/daemon.log
Estos mensajes están relacionados con los demonios del sistema operativo, es decir,
procesos que trabajan en segundo plano continuamente ofreciendo diferente tipo de
servicios.
debian:/home/ekaitz# tail /var/log/messages
Mar 27 11:45:01 debian kernel: sdb: sdb1
Mar 27 11:45:01 debian kernel: sd 2:0:0:0: [sdb] Attached SCSI removable disk
Mar 27 11:45:01 debian kernel: sd 2:0:0:0: Attached scsi generic sg2 type 0
Mar 27 11:47:08 debian syslogd 1.5.0#3: restart.
Mar 27 12:01:26 debian -- MARK --
Mar 27 12:12:59 debian kernel: [drm] Loading R300 Microcode
Mar 27 12:13:20 debian kernel: [drm] Setting GART location based on new memory map
Mar 27 12:13:20 debian kernel: [drm] Loading R300 Microcode
Mar 27 12:13:20 debian kernel: [drm] writeback test succeeded in 1 usecs
Mar 27 12:19:48 debian kernel: [drm] Loading R300 Microcode
ebian /USR/SBIN/CRON[4356]: (root) CMD (/etc/webmin/cluster-cron/cron.pl 1236007691-5869)
debian:/home/ekaitz# tail /var/log/syslog
Mar 27 12:19:48 debian acpid: client connected from 3855[0:0]
Mar 27 12:19:48 debian kernel: [drm] Loading R300 Microcode
Fig. 3.11. /var/log/daemon.log
3.5.4. Fichero /var/log/wtmp
Este fichero situado en /var/log/wtmp es binario luego no se podrá leer directamente,
para ello se utiliza el comando k que interpreta el fichero /var/log/wtmp, contiene
información de todos los logueos en el sistema y los reinicios.
Fig. 3.12. last
La última línea indica desde cuando se registra información en el fichero /var/log/wtmp.
3.5.5. Fichero /var/run/utmp
Este fichero situado en /var/run/utmp también es binario y registra los usuarios
conectados al sistema en tiempo real e información de lo que están ejecutando. Se podrá
ver los usuarios conectados mediante los siguientes comandos.
Fig. 3.13. last –f /var/run/utmp
Fig. 3.14. who
ekaitz@debian:~$ who
ekaitz tty7 2009-03-27 11:44 (:0)
ekaitz pts/0 2009-03-27 11:52 (:0.0)
ekaitz pts/1 2009-03-27 11:53 (:0.0)
ekaitz@debian:~$ last -f /var/run/utmp
ekaitz pts/1 :0.0 Fri Mar 27 11:53 still logged in
ekaitz pts/0 :0.0 Fri Mar 27 11:52 still logged in
ekaitz tty7 :0 Fri Mar 27 11:44 still logged in
reboot system boot Fri Mar 27 11:41 - 11:55 (00:13)
utmp begins Fri Mar 27 11:41:26 2009
debian:/home/ekaitz# last
reboot system boot 2.6.24-1-686 Thu Mar 5 11:02 - 19:18 (08:16)
ekaitz pts/0 :0.0 Tue Mar 3 16:11 - 16:11 (00:00)
ekaitz pts/1 :0.0 Tue Mar 3 15:39 - 16:11 (00:31)
ekaitz pts/0 :0.0 Tue Mar 3 14:48 - 16:11 (01:22)
ekaitz tty7 :0 Tue Mar 3 14:43 - 16:11 (01:28)
reboot system boot 2.6.24-1-686 Tue Mar 3 14:42 - 16:11 (01:28)
ekaitz pts/0 :0.0 Mon Mar 2 17:21 - 17:21 (00:00)
ekaitz pts/1 :0.0 Mon Mar 2 16:20 - 16:20 (00:00)
ekaitz pts/0 :0.0 Mon Mar 2 12:01 - 17:20 (05:18)
wtmp begins Mon Mar 2 12:01:42 2009
debian:/home/ekaitz# tail /var/log/daemon.log
Mar 27 12:12:55 debian gdm[3798]: WARNING: No se pudo autenticar al usuario
Mar 27 12:12:59 debian acpid: client connected from 2783[0:0]
Mar 27 12:13:18 debian acpid: client connected from 3855[0:0]
Mar 27 12:13:36 debian gdm[2780]: WARNING: No se pudo autenticar al usuario
Mar 27 12:13:41 debian NetworkManager: <info> Updating allowed wireless network lists.
Mar 27 12:13:41 debian NetworkManager: <WARN> nm_dbus_get_networks_cb(): error received:
org.freedesktop.NetworkManagerInfo.NoNetworks - There are no wireless networks stored..
Mar 27 12:19:12 debian acpid: client connected from 4201[0:0]
Mar 27 12:19:24 debian gdm[4199]: WARNING: No se pudo autenticar al usuario
Mar 27 12:19:42 debian last message repeated 3 times
Mar 27 12:19:48 debian acpid: client connected from 3855[0:0]
Fig. 3.15 w
El comando who y last -f /var/run/utmp solo sacan información de los procesos en
ejecución del usuario, pero la información de w es más completa sacando desde cuando
esta la maquina corriendo, el número de usuarios, carga de trabajo y que están
ejecutando exactamente en ese momento.
Toda la información de los ficheros utmp wtmp están en man 5 utmp.
3.5.6. Fichero /var/log/lastlog
Es un fichero guardado en /var/log/lastlog que contiene información de la conexión de
los usuarios, indicando la fecha y hora de cada uno de ellos y desde donde se ha
conectado. Para visualizar este fichero usaremos el comando lastlog.
Fig. 3.16. lastlog
3.5.7. Fichero /var/log/faillog
Este fichero binario que se sitúa en /var/log/faillog guarda los últimos intentos fallidos
de logueo de la contraseña.
debian:/var/log# lastlog
Nombre Puerto De Último
root pts/2 localhost jue mar 26 19:51:45 +0100 2009
daemon **Nunca ha entrado**
bin **Nunca ha entrado**
sys **Nunca ha entrado**
sync **Nunca ha entrado**
games **Nunca ha entrado**
man **Nunca ha entrado**
…#Mas información irrelevante
…
messagebus **Nunca ha entrado**
haldaemon **Nunca ha entrado**
gdm **Nunca ha entrado**
ekaitz tty3 jue mar 26 16:21:20 +0100 2009
sshd **Nunca ha entrado**
samba pts/2 172.18.69.249 lun mar 16 16:20:50 +0100 2009
ekaitz@debian:~$ w
11:53:54 up 12 min, 3 users, load average: 0,14, 0,24, 0,16
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
ekaitz tty7 :0 11:44 0.00s 24.04s 0.08s x-session-manag
ekaitz pts/0 :0.0 11:52 0.00s 0.12s 0.00s w
ekaitz pts/1 :0.0 11:53 2.00s 0.10s 0.00s ping localhost
Fig. 3.17 last –f /var/log/btmp
3.5.8. Fichero /var/log/debug
Esos mensajes son información de depuración de los programas que se ejecutan en el
sistema, incluyendo el kernel. La depuración son los errores que suceden.
Fig. 3.18. lastlog
3.6. Como realizar logs remotos
El demonio sysklogd permite fácilmente guardar registros en máquinas remotas. La
ventaja de esto es que si un usuario entra en un sistema los logs no vayan a parar a la
maquina infectada y se vayan a una maquina exterior. Otra ventaja es que se pueden
centralizar todos los logs de todos hosts de una red local en un ordenador central, de ahí
filtrarlos con herramientas tipo grep, tr, sed y awk que explicaremos en el capítulo 5.
1. Añadimos la siguiente línea en el fichero /etc/syslog en la parte del cliente.
Fig. 3.19. Configuración host de lab.unavarra.es en /etc/syslog
En nuestro caso hemos decido que todos los sucesos vayan a parar a la maquina con ip
172.18.69.249 (s101.lab.unavarra.es).
2. Habilitamos el soporte de log remoto en la maquina que va recibir (servidor) los
logs.
*.* @s101.lab.unavarra.es
debian:/home/ekaitz# tail /var/log/debug
Mar 27 11:44:56 debian NetworkManager: <debug> [1238150696.407816] nm_hal_device_added(): New device added (hal udi is
'/org/freedesktop/Hal/devices/usb_device_0_7777_72837090_if0').
Mar 27 11:44:56 debian NetworkManager: <debug> [1238150696.412729] nm_hal_device_added(): New device added (hal udi is
'/org/freedesktop/Hal/devices/usb_device_0_7777_72837090_usbraw').
Mar 27 11:45:01 debian kernel: usb-storage: device scan complete
Mar 27 11:45:01 debian kernel: sd 2:0:0:0: [sdb] Mode Sense: 03 00 00 00
Mar 27 11:45:01 debian kernel: sd 2:0:0:0: [sdb] Mode Sense: 03 00 00 00
Mar 27 11:45:01 debian NetworkManager: <debug> [1238150701.489896] nm_hal_device_added(): New device added (hal udi is
'/org/freedesktop/Hal/devices/usb_device_0_7777_72837090_if0_scsi_host').
Mar 27 11:45:01 debian NetworkManager: <debug> [1238150701.492422] nm_hal_device_added(): New device added (hal udi is
'/org/freedesktop/Hal/devices/usb_device_0_7777_72837090_if0_scsi_host_scsi_device_lun0').
Mar 27 11:45:01 debian NetworkManager: <debug> [1238150701.498234] nm_hal_device_added(): New device added (hal udi is
'/org/freedesktop/Hal/devices/usb_device_0_7777_72837090_if0_scsi_host_scsi_device_lun0_scsi_generic').
Mar 27 11:45:01 debian NetworkManager: <debug> [1238150701.665241] nm_hal_device_added(): New device added (hal udi is
'/org/freedesktop/Hal/devices/storage_serial_Generic_Flash_Disk_72837090_0_0').
Mar 27 11:45:01 debian NetworkManager: <debug> [1238150701.696955] nm_hal_device_added(): New device added (hal udi is
'/org/freedesktop/Hal/devices/volume_uuid_E2AA_F254')
ekaitz@debian:~$ last -f /var/log/btmp
(unknown tty8 :20 Fri Mar 27 12:19 gone - no logout
(unknown tty8 :20 Fri Mar 27 12:19 - 12:19 (00:00)
(unknown tty8 :20 Fri Mar 27 12:19 - 12:19 (00:00)
(unknown tty8 :20 Fri Mar 27 12:19 - 12:19 (00:00)
(unknown tty7 :0 Fri Mar 27 12:13 still logged in
(unknown tty8 :20 Fri Mar 27 12:12 - 12:19 (00:06)
UNKNOWN Thu Mar 26 16:21 still logged in
UNKNOWN Thu Mar 26 16:21 still logged in
(unknown tty7 :0 Thu Mar 12 16:27 - 12:13 (14+19:45)
(unknown tty7 :0 Thu Mar 12 16:27 - 16:27 (00:00)
(unknown tty7 :0 Thu Mar 12 10:26 - 16:27 (06:00)
btmp begins Thu Mar 12 10:26:34 2009
Fig. 3.20. Habilitando soporte de log remoto en host servidor
3. Reiniciamos el demonio.
Fig. 3.21. Reinicio del demonio sysklogd
4. Comprobamos que los logs se registran en el servidor, lanzando un log en el
cliente, este log será redireccionado al servidor.
Fig. 3.22. Creando log mediante el comando logger
5. Ahora en el servidor debería aparecer lo siguiente en /var/log/user.log.
Fig. 3.23. Comprobación de que el log se ha registrado en el servidor de logs
Si funciona, a partir de este momento, todos los sucesos serán registrados en la maquina
remota.
debian:/var/log# tail -1 user.log
Mar 27 13:54:57 serciodracer ekaitz: Probando el logueo remoto
debian:/var/log# logger -p user.err "Probando el logueo remoto"
debian:/etc/init.d# /etc/init.d/sysklogd restart
Restarting system log daemon....
# For remote UDP logging use SYSLOGD="-r"
#
SYSLOGD="-r"
4. Copias de seguridad de un host
4.1. Introducción
En este capítulo aprenderemos a realizar copias de seguridad de un host mediante
comandos de consola que ya están en un sistema GNU/Linux base. Estas copias de
seguridad en una red local son de vital importancia, ya que podemos tener ataques
exteriores a nuestra red local y también posibles fallos de los dispositivos físicos, por
ello en este capítulo haremos los pasos fundamentales para poder realizar las copias
seguridad.
Para este capítulo como guía de referencia he seguido el capítulo 7 del manual de
SEGURIDAD EN UNIX Y REDES Versión 2.1 de Antonio Villalón Huerta.
4.2. Prerrequisitos
Instalación estándar Debian/Lenny. También necesitamos algunos conocimientos sobre
cómo se estructuran los discos duros físicamente. Para más información sobre discos
duros, http://www.monografias.com/trabajos14/discosduros/discosduros.shtml.
4.3. Aplicaciones de copias de seguridad
Para realizar una copia de seguridad tendremos, antes de todo, que pensar que
aplicación debemos usar. Existen múltiples tipos de aplicaciones con interfaz grafica;
modo consola, privativo y software libre. Hay que tener en cuenta las desventajas de
usar software privativo, puede ser peligroso en estas lides, ya que tener software
privativo en una maquina donde realizamos la copia de seguridad es muy peligroso.
Puede que la máquina falle y nos quedemos sin nuestra licencia en el momento más
inesperado, en cambio con el software libre no tiene estos inconvenientes, además es
mejor utilizar órdenes de consolas directamente ya que es más rápido y eficiente. En
esta guía nos vamos a ceñir al software libre y específicamente en modo consola.
Principales aplicaciones privativas comerciales:
BRU (Backup and Restore Utility) ha estado en el mundo Linux desde hace tiempo.
Este programa proporciona un conjunto de herramientas relativamente completo de
forma unificada mediante línea de comandos y entorno gráfico (en otras palabras,
sencillo de automatizar). Soporta copias de seguridad completas, incrementales y
diferenciales, al igual que catálogos y puede escribir a un fichero o a una cinta, se trata
básicamente de un programa sólido, simple y fácil de utilizar. El BRU se encuentra
disponible en: http://www.estinc.com/features.html
Quickstart
El Quickstart está destinado a crear una imagen del sistema, de forma que cuando falle
el disco duro se pueda cargar de forma rápida un disco en blanco y tener un sistema
funcionando. También se puede utilizar para crear un "master" de un sistema y después
cargar otros sistemas (como alternativa al Qickstart de Red Hat). Se puede conseguir en:
http://www.estinc.com/qsdr.html
Principales aplicaciones privativas profesionales:
Backup Professional
http://www.unitrends.com/bp.html
CTAR
http://www.unitrends.com/ctar.html
PC ParaChute
http://www.unitrends.com/pcpara.html
Arkeia
Programas no comerciales de Copias de Seguridad para Linux (entorno grafico):
Amanda
Amanda es un programa de copia de seguridad cliente/servidor basado en red, con
soporte para la mayoría de sistemas UNIX y Windows (vía SAMBA). Amanda tiene
licencia al estilo de BSD y está disponible en: http://www.amanda.org/
afbackup
Afbackup es otro programa cliente/servidor con una licencia general GPL con una
pequeña excepción, el desarrollo de la porción servidor en Windows está prohibida.
Afbackup tiene soporte de servidor para Linux, HP-UX y Solaris y tiene clientes para
esos y para windows. Se puede descargar en: ftp://ftp.zn-gmbh.com/pub/linux
Burt
Burt es un conjunto de extensiones basadas en Tcl/Tk que permite hacer copias de
seguridad de estaciones UNIX fácilmente, lo cual permite ejecutarlo en casi cualquier
sistema. Burt tiene arquitectura cliente/servidor y parece ser bastante escalable, está
disponible en: http://www.cs.wisc.edu/~jmelski/burt/
Aplicaciones modo consola para poder realizar copias de seguridad:
tar: Programa de almacenamiento de archivos.
cpio:
Copia ficheros.
dd:
Copia un fichero de un sitio a otro indicando el tamaño de bloque seleccionado y
diversas opciones más.
Dump:
Potente comando para realizar copias de seguridad en múltiples sistemas de
almacenamiento como sistemas de cinta.
jungla.dit.upm.es/~joaquin/las/trabajos/2000/2000jjpina.pdf.gz
restore:
Restaurar copias de seguridad realizadas mediante dump.
En este capítulo nos ceñiremos a explicar las aplicaciones con licencia de software libre,
más concretamente las que funcionan en modo consola.
4.3. Ficheros a realizar el backup
A la hora de decidir qué ficheros deben ser salvados normalmente se siguen los
siguientes criterios:
Los datos del usuario /home
Los ficheros de configuración en /etc y /var
Finalmente /usr y /usr/local.
El directorio /usr se destina a los archivos que son compartidos para todos los usuarios
del sistema. El directorio /usr/local se destina a los programas que el administrador no
quiere que le afecten las actualizaciones del Debian/Lenny. En /var se guardan variables
del sistema, ficheros de monitorización, datos históricos, de administración, etc. En
/home se guardara cualquier dato que guarde el usuario y en /etc como habíamos dicho
en capítulos anteriores, es donde se almacenan los ficheros de configuración.
4.4. Comandos para realizar backups.
4.4.1 dump 4.4.2 tar 4.4.3 cpio 4.4.4 dd 4.4.5 cp
4.4.1. Dump
Cuando vamos a realizar un backup antes de todo tendremos que localizar nuestro disco
duro en el sistema de ficheros. Todo dispositivo del ordenador tiene un fichero
relacionado en el sistema de ficheros de GNU/Linux. El directorio donde se encuentran
todos los ficheros relacionados con los dispositivos de nuestro sistema es /dev.
En este directorio tendremos que localizar el conjunto de ficheros que pueden estar
asociados a los discos duros de nuestro sistema. Para ello buscaremos los ficheros
“/dev/hd*”(1) estos son discos duros IDE (Integrated Device Electronics) también
llamados ATA (Advanced Technology Attachment), también deberemos buscar los
dispositivos “/dev/sd*” , estos son dispositivos qué se conectan a la interfaz SCSI,
normalmente los dispositivos que se conectan a esta interfaz son discos duros, pero
también pueden ser lectores de CD y DVD. Estas denominaciones son oficiales y se
encuentran explicadas en http://www.lanana.org/docs/device-list/devices.txt
(1) Con el * represento una cadena caracteres cualquiera concatenada con hd.
Mediante el comando de consola ls –al sd* sacaremos todos los ficheros asociados a los
dispositivos SCSI.
Fig 4.1. ls –al sd*
En la figura 4.1tenemos todos los dispositivos que están montados en la interfaz SCSI
de mi sistema, ya que nuestro sistema no tiene ninguna interfaz IDE. Como podemos
observar hay tres dispositivos sda, sdb y sdc. Las numeraciones en cada uno representan
particiones en cada uno.
Para obtener una información más exhaustiva deberemos teclear fdisk –l en nuestra
terminal.
Fig 4.2. fdisk -l
Mediante este último comando hemos obtenido la información de dos dispositivos,
/dev/sda y /dev/sdc. /dev/sda es el disco duro principal donde esta albergado
La información obtenida de /dev/sda es la estructura lógica del disco duro, es decir, las
que particiones que hay en el disco duro y la estructura física del disco.
Estructura física del dispositivo /dev/sda:
debian:/home/ekaitz# fdisk -l Disco /dev/sda: 250.0 GB, 250059350016 bytes 255 heads, 63 sectors/track, 30401 cylinders Units = cilindros of 16065 * 512 = 8225280 bytes Disk identifier: 0xfba0fba0 Disposit. Inicio Comienzo Fin Bloques Id Sistema /dev/sda1 * 1 30071 241545276 83 Linux /dev/sda2 30072 30401 2650725 5 Extendida /dev/sda5 30072 30401 2650693+ 82 Linux swap / Solaris Disco /dev/sdc: 60.0 GB, 60011642880 bytes 64 heads, 32 sectors/track, 57231 cylinders Units = cilindros of 2048 * 512 = 1048576 bytes Disk identifier: 0x00000000 El disco /dev/sdc no contiene una tabla de particiones válida Disposit. Inicio Comienzo Fin Bloques Id Sistema /dev/sdc1 1 3921 4075504 b W95 FAT32 Disco /dev/sdb: 60.0 GB, 60011642880 bytes 64 heads, 32 sectors/track, 57231 cylinders Units = cilindros of 2048 * 512 = 1048576 bytes Disk identifier: 0x00000000
debian:/dev# ls -al sd* brw-rw---- 1 root disk 8, 0 ene 22 09:57 sda brw-rw---- 1 root disk 8, 1 ene 22 09:57 sda1 brw-rw---- 1 root disk 8, 2 ene 22 09:57 sda2 brw-rw---- 1 root disk 8, 5 ene 22 09:57 sda5 brw-rw---- 1 root floppy 8, 32 ene 22 12:27 sdc brw-rw---- 1 root floppy 8, 33 ene 22 12:27 sdc1
Capacidad: 250GB
255 cabezas de lectura 63 sectores por pista y 3041 cilindros y cada cilindro tiene
825280 bytes.
Estructura lógica del dispositivo /dev/sda:
Tenemos tres particiones, por cada partición, tenemos en que cilindro empieza la
partición y en qué cilindro acaba, numero bloques que ocupa y tipo de partición.
Disposit . Inicio Comienzo Fin Bloques Id
Sistema
/dev/sda1 * 1 30071 241545276 83 Linux
/dev/sda2 30072 30401 2650725 5 Extendida
/dev/sda5 30072 30401 2650693+ 82 swap
Fig. 4.3. Tabla de particiones
También nos ha detectado un dispositivo más, que es un disco duro externo usb con una
capacidad de 60 GB, pero no contiene ninguna tabla de particiones.
Realizando la copia:
Debemos tener en cuenta que el fichero /dev/sda no alberga la información, ya que este
fichero se refiere al dispositivo lógico y no a la información física. La información
física está albergada en las distintas particiones del disco duro que habíamos explicado
con anterioridad, es decir, /dev/sda1, /dev/sda2 y /dev/sda3.
Preparar el disco duro a copiar:
Antes de realizar en nuestro disco duro la copia de seguridad es obligatorio que el
sistema de ficheros del dispositivo de almacenamiento destino sea el mismo que el
sistema de ficheros origen. Para ello realizaremos un formateo del disco duro destino
entero mediante la aplicación gparted, para ello tecleamos gparted /dev/sdc en la
terminal y nos arrancara una interfaz. Si no está la aplicación gparted instalamos
gparted con el comando apt-get install gparted.
Fig. 4.4. Formateando disco duro en ext3 mediante gparted
Le damos con el botón derecho del ratón a la línea que aparece con la información del
dispositivo y elegimos formatear como ext3 y luego aplicar.
Una vez hechos los pasos descritos anteriormente ya podemos realizar la copia de
seguridad del disco duro utilizando el comando dump.
Fig. 4.5. Copia mediante dump
Después realizar la copia de seguridad para recuperar toda esta información usaremos el
comando restore con la opción -rf. Toda la información quedara en el directorio actual
donde nos encontremos.
Fig. 4.6. restaurar disco duro mediante restore
4.4.2. tar
La utilidad tar (Tape Archiver) fue concebida para crear un archivo de múltiples
directorios de un disco duro y transferirlos a un disco de cinta, en la actualidad se utiliza
para transferirlo a cualquier tipo de soporte de almacenamiento. Funciona creando un
solo fichero para albergar la información de múltiples directorios, a este fichero
resultante le llamaremos contenedor.
debian:/home/ekaitz# restore -rf /dev/sdc1
debian:/mnt# dump 0uf /dev/sdc1 /dev/sda1 DUMP: Date of this level 0 dump: Wed Feb 4 12:09:10 2009 DUMP: Dumping /dev/sda1 (/) to /dev/sdb DUMP: Label: none DUMP: Writing 10 Kilobyte records DUMP: mapping (Pass I) [regular files] DUMP: mapping (Pass II) [directories] DUMP: estimated 2763328 blocks. DUMP: Volume 1 started with block 1 at: Wed Feb 4 12:10:42 2009 DUMP: Closing /dev/sdbI) [directories] DUMP: Volume 1 completed at: Wed Feb 4 12:15:24 2009
DUMP: Volume 1 2767090 blocks (2702.24MB) DUMP: Volume 1 took 0:04:42 DUMP: Volume 1 transfer rate: 9812 kB/s DUMP: 2767090 blocks (2702.24MB) on 1 volume(s) DUMP: finished in 282 seconds, throughput 9812 kBytes/sec DUMP: Date of this level 0 dump: Wed Feb 4 12:09:10 2009 DUMP: Date this dump completed: Wed Feb 4 12:15:24 2009 DUMP: Average transfer rate: 9812 kB/s DUMP: DUMP IS DONE
Creación de un contenedor con varios directorios
Fig. 4.7. Copia tar sin comprimir.
En la figura hemos creado un fichero “tar” a partir de todos los directorios contenidos
en “upna\ 2008”.
Creación de un contenedor comprimido
Fig. 4.8. tar contendor comprimido
Creación de un contenedor mediante expresiones regulares
Fig. 4.9. tar mediante expresiones regulares
Comprobando la integridad de un contenedor
Fig. 4.10 tar (comprobación de integridad)
debian:/home# tar tvf contenedor -rw-r--r-- root/root 589 2009-02-18 17:43 etc/hosts.allow -rw-r--r-- root/root 579 2009-01-21 18:24 etc/hosts.allow~ -rw-r--r-- root/root 878 2009-01-21 18:24 etc/hosts.deny
DUMP: Volume 1 2767090 blocks (2702.24MB) DUMP: Volume 1 took 0:04:42 DUMP: Volume 1 transfer rate: 9812 kB/s DUMP: 2767090 blocks (2702.24MB) on 1 volume(s) DUMP: finished in 282 seconds, throughput 9812 kBytes/sec DUMP: Date of this level 0 dump: Wed Feb 4 12:09:10 2009 DUMP: Date this dump completed: Wed Feb 4 12:15:24 2009 DUMP: Average transfer rate: 9812 kB/s DUMP: DUMP IS DONE
debian:/home# tar cvfz contenedor /etc/hosts.* tar: Eliminando la `/' inicial de los nombres /etc/hosts.allow /etc/hosts.allow~ /etc/hosts.deny
DUMP: Volume 1 2767090 blocks (2702.24MB) DUMP: Volume 1 took 0:04:42 DUMP: Volume 1 transfer rate: 9812 kB/s DUMP: 2767090 blocks (2702.24MB) on 1 volume(s) DUMP: finished in 282 seconds, throughput 9812 kBytes/sec DUMP: Date of this level 0 dump: Wed Feb 4 12:09:10 2009 DUMP: Date this dump completed: Wed Feb 4 12:15:24 2009 DUMP: Average transfer rate: 9812 kB/s DUMP: DUMP IS DONE
debian:/home# tar cvfz contenedor /home/ekaitz/Desktop/upna\ 2008/
DUMP: Volume 1 2767090 blocks (2702.24MB) DUMP: Volume 1 took 0:04:42 DUMP: Volume 1 transfer rate: 9812 kB/s DUMP: 2767090 blocks (2702.24MB) on 1 volume(s) DUMP: finished in 282 seconds, throughput 9812 kBytes/sec DUMP: Date of this level 0 dump: Wed Feb 4 12:09:10 2009 DUMP: Date this dump completed: Wed Feb 4 12:15:24 2009 DUMP: Average transfer rate: 9812 kB/s DUMP: DUMP IS DONE
debian:/home# tar cvf contenedor /home/ekaitz/Desktop/upna\ 2008/ /home/ekaitz/Desktop/upna 2008/.Trash-1000/ /home/ekaitz/Desktop/upna 2008/.Trash-1000/files/ /home/ekaitz/Desktop/upna 2008/.Trash-1000/files/Sistemas Operativos (2)/ /home/ekaitz/Desktop/upna 2008/.Trash-1000/files/Sistemas Operativos (2)/Sesion 5 comentada/ /home/ekaitz/Desktop/upna 2008/.Trash-1000/files/Sistemas Operativos (2)/Sesion 5 comentada/ver.c ... continua
DUMP: Volume 1 2767090 blocks (2702.24MB) DUMP: Volume 1 took 0:04:42 DUMP: Volume 1 transfer rate: 9812 kB/s DUMP: 2767090 blocks (2702.24MB) on 1 volume(s) DUMP: finished in 282 seconds, throughput 9812 kBytes/sec DUMP: Date of this level 0 dump: Wed Feb 4 12:09:10 2009 DUMP: Date this dump completed: Wed Feb 4 12:15:24 2009 DUMP: Average transfer rate: 9812 kB/s DUMP: DUMP IS DONE
4.3.3. cpio
La utilidad cpio (Copy In/Out) sirve para copiar archivos a un contenedor o desde un
contenedor cpio. Funciona muy parecido a tar.
Fig. 4.11. cpio ejemplo de uso
El funcionamiento es un tanto extraño, cpio lee de la entrada estándar (la entrada
estándar por defecto es el teclado) los ficheros a almacenar y los saca por la salida
estándar (por defecto la pantalla) el fichero generado. Como no queremos que salga por
la salida estándar, redireccionamos esta salida estándar al fichero contendorCPIO.
Chequear con cpio
Fig. 4.12. chequear con cpio
Extraer todo el fichero de cpio
Fig. 4.13. Extraer mediante cpio
4.4.4. dd
dd copia un fichero (de la entrada estándar a la salida estándar por omisión) con un
tamaño de bloque seleccionable por el usuario, a la par que, opcionalmente, realiza
sobre él ciertas conversiones.
El siguiente es un ejemplo sencillo. El parámetro “if” (input file) indicamos el fichero
origen y el parámetro “of” (output file) indicamos el fichero destino.
Fig. 4.14. Uso de dd
4.4.5. cp
debian:/home#cpio -i < contenedorCPIO.cpio
DUMP: Volume 1 2767090 blocks (2702.24MB) DUMP: Volume 1 took 0:04:42 DUMP: Volume 1 transfer rate: 9812 kB/s DUMP: 2767090 blocks (2702.24MB) on 1 volume(s) DUMP: finished in 282 seconds, throughput 9812 kBytes/sec DUMP: Date of this level 0 dump: Wed Feb 4 12:09:10 2009 DUMP: Date this dump completed: Wed Feb 4 12:15:24 2009 DUMP: Average transfer rate: 9812 kB/s DUMP: DUMP IS DONE
debian:/home# cpio -t < contenedorCPIO
DUMP: Volume 1 2767090 blocks (2702.24MB) DUMP: Volume 1 took 0:04:42 DUMP: Volume 1 transfer rate: 9812 kB/s DUMP: 2767090 blocks (2702.24MB) on 1 volume(s) DUMP: finished in 282 seconds, throughput 9812 kBytes/sec DUMP: Date of this level 0 dump: Wed Feb 4 12:09:10 2009 DUMP: Date this dump completed: Wed Feb 4 12:15:24 2009 DUMP: Average transfer rate: 9812 kB/s DUMP: DUMP IS DONE
debian:/home# find /home/ekaitz/Desktop/ | cpio -o > ./contenedorCPIO 404021 blocks
DUMP: Volume 1 2767090 blocks (2702.24MB) DUMP: Volume 1 took 0:04:42 DUMP: Volume 1 transfer rate: 9812 kB/s DUMP: 2767090 blocks (2702.24MB) on 1 volume(s) DUMP: finished in 282 seconds, throughput 9812 kBytes/sec DUMP: Date of this level 0 dump: Wed Feb 4 12:09:10 2009 DUMP: Date this dump completed: Wed Feb 4 12:15:24 2009 DUMP: Average transfer rate: 9812 kB/s DUMP: DUMP IS DONE
debian:/home/ekaitz# dd if=/dev/sda1 of=/dev/sdc1 0+1 records in 0+1 records out 25 bytes (25 B) copied, 3,1066e-05 s, 805 kB/s
DUMP: Volume 1 2767090 blocks (2702.24MB) DUMP: Volume 1 took 0:04:42 DUMP: Volume 1 transfer rate: 9812 kB/s DUMP: 2767090 blocks (2702.24MB) on 1 volume(s) DUMP: finished in 282 seconds, throughput 9812 kBytes/sec DUMP: Date of this level 0 dump: Wed Feb 4 12:09:10 2009
Esta utilidad sirve cuando hemos creado contenedores mediante cpio o tar y
transferirlos a un fichero o directorio en concreto es muy sencillo cp [fichero_origien]
[fichero_destino].
Fig. 4.15. Uso de cp
debian:/home/ekaitz# cp /home/ekaitz/Desktop/upna\ 2008.tar.gz /media/disk
DUMP: Volume 1 2767090 blocks (2702.24MB) DUMP: Volume 1 took 0:04:42 DUMP: Volume 1 transfer rate: 9812 kB/s DUMP: 2767090 blocks (2702.24MB) on 1 volume(s) DUMP: finished in 282 seconds, throughput 9812 kBytes/sec DUMP: Date of this level 0 dump: Wed Feb 4 12:09:10 2009 DUMP: Date this dump completed: Wed Feb 4 12:15:24 2009 DUMP: Average transfer rate: 9812 kB/s DUMP: DUMP IS DONE
5. Administración de cuentas y grupos en un host
5.1. Introducción
Linux es un sistema en el que se pueden albergar varios usuarios, estos usuarios los
podemos unificar asignándolos a un grupo común. Esta parte es muy importante para la
integridad del sistema operativo. La razón de esta importancia es porque todo fichero de
Linux se organiza mediante permisos. A un fichero le podemos dar permisos de
“usuario”, “grupo” y “otros”. Así habrá ficheros que podrán ser accedidos por un grupo
de usuarios o un solo usuario, etc. Si no estamos familiarizados sobre este concepto
recomiendo la lectura del siguiente enlace:
http://www.linuxcentro.net/linux/staticpages/index.php?page=PermisosLinux.
En el contexto de las redes locales esto es de vital importancia para la integridad de la
red local ya que dar permisos inadecuados a usuarios de la red local puede poner en
peligro la seguridad de la red local.
5.2. Prerrequisitos
Instalación base Debian/Lenny.
5.3. Administrar cuentas
En un sistema operativo GNU/Linux existen dos tipos de usuario, por una parte el
usuario administrador o también llamado superusuario y por otra parte tenemos el
usuario normal. El primero es el que tiene un control sin límites sobre el sistema y el
segundo tiene un control limitado.
La creación de nuevos usuarios en un sistema GNU/Linux se realiza creando cuentas
nuevas. Esto se hace mediante adduser [nombre_usuario]. Al crear una nueva cuenta
tenemos diferentes opciones como asignar cual va ser el directorio home para ese
usuario, deshabilitar el usuario, etc. Hay que indicar que al crear una cuenta se genera
un grupo asociado a esa cuenta, habrá tantos grupos como cuentas habrá en el sistema.
Fig. 5.1. Ejemplo de uso del comando adduser
Al añadir el usuario nos pedirá la contraseña y podremos agregar el número de
teléfono, nombre, apellidos, domicilio, etc.
debian:/home/ekaitz# adduser cuenta2 Adding user `cuenta2' ... make: se ingresa al directorio `/var/yp' make[1]: se ingresa al directorio `/var/yp/lab.unavarra.es' … …
DUMP: Volume 1 2767090 blocks (2702.24MB) DUMP: Volume 1 took 0:04:42 DUMP: Volume 1 transfer rate: 9812 kB/s DUMP: 2767090 blocks (2702.24MB) on 1 volume(s) DUMP: finished in 282 seconds, throughput 9812 kBytes/sec
En el fichero /etc/default/useradd podremos configurar las opciones por defecto
establecidas para el comando useradd, podremos cambiar directorio por defecto, shell
predeterminada, tiempo máximo de validez de una password y muchas más opciones.
Para más información man 8 useradd.
Cuando instalemos Debian/Lenny obligatoriamente deberemos crear una cuenta de
administrador y una cuenta de usuario normal. A partir de aquí podremos crear tantos
usuarios normales como queramos, pero sólo habrá una cuenta de administrador.
Tendremos que tener mucho cuidado con el uso de la cuenta administrador ya que si no
se sabe lo que se esta haciendo podremos provocar errores fatales en el sistema
operativo. Normalmente habrá que loguearse como superusuario para hacer operaciones
importantes en el sistema; como cambiar configuraciones, instalar paquetes o actualizar
el sistema operativo. Para loguearse como superusuario deberemos usar el comando su.
Fig. 5.2. Ejemplo de uso del comando su
5.4. Cambiar una contraseña a una cuenta ya creada
Mediante el comando passwd se cambiara la contraseña de las cuentas, al ejecutar este
comando nos pedirá la contraseña antigua y luego nos pedirá la contraseña nueva.
Ejemplo de cambio de contraseña.
Fig. 5.3. Ejemplo de uso del comando passwd
5.5. Cambiar características de una cuenta
Para cambiar las características de una cuenta utilizaremos el comando usermod ó
editaremos directamente el fichero /etc/passwd.
Ejemplo de cambio de directorio de una cuenta.
Fig. 5.4. Ejemplo de uso del comando usermod
En el fichero /etc/passwd tenemos la información de cada cuenta, cada línea en este
fichero representa una cuenta en el sistema.
debian:/home/ekaitz# usermod -d / cuenta2
DUMP: Volume 1 2767090 blocks (2702.24MB) DUMP: Volume 1 took 0:04:42 DUMP: Volume 1 transfer rate: 9812 kB/s DUMP: 2767090 blocks (2702.24MB) on 1 volume(s) DUMP: finished in 282 seconds, throughput 9812 kBytes/sec
ekaitz@debian:~$ passwd Cambiando la contraseña de ekaitz. (actual) contraseña de UNIX: Introduzca la nueva contraseña de UNIX: Vuelva a escribir la nueva contraseña de UNIX: passwd: contraseña actualizada correctamente
DUMP: Volume 1 2767090 blocks (2702.24MB) DUMP: Volume 1 took 0:04:42 DUMP: Volume 1 transfer rate: 9812 kB/s DUMP: 2767090 blocks (2702.24MB) on 1 volume(s) DUMP: finished in 282 seconds, throughput 9812 kBytes/sec DUMP: Date of this level 0 dump: Wed Feb 4 12:09:10 2009 DUMP: Date this dump completed: Wed Feb 4 12:15:24 2009 DUMP: Average transfer rate: 9812 kB/s DUMP: DUMP IS DONE
ekaitz@debian:~$ su Contraseña: debian:/home/ekaitz#
DUMP: Volume 1 2767090 blocks (2702.24MB) DUMP: Volume 1 took 0:04:42 DUMP: Volume 1 transfer rate: 9812 kB/s DUMP: 2767090 blocks (2702.24MB) on 1 volume(s) DUMP: finished in 282 seconds, throughput 9812 kBytes/sec DUMP: Date of this level 0 dump: Wed Feb 4 12:09:10 2009 DUMP: Date this dump completed: Wed Feb 4 12:15:24 2009 DUMP: Average transfer rate: 9812 kB/s DUMP: DUMP IS DONE
Fig. 5.5. Típica línea en el fichero de configuración /etc/passwd
La x simboliza que el password de la cuenta2 esta encriptado.
5.6. Eliminar cuentas
Tenemos dos opciones bloquearlas editando el fichero /etc/passwd y cambiando el
intérprete por ejemplo en cuenta2 /bin/bash por /bin/false o directamente eliminar las
cuentas, esto se consigue con el comando userdel.
Bloquear cuenta.
Fig. 5.6. Como bloquear cuenta mediante el fichero /etc/passwd
Borrar cuenta.
Fig. 5.7. Ejemplo de eliminación de cuenta mediante el comando deluser
5.7. Administrar grupos
Un fichero puede tener permisos de grupo, estos permisos pueden ser de escritura,
lectura y ejecución. Así pues asignar unos usuarios a un grupo servirá para que
determinados usuarios puedan acceder a unos ficheros y no a otros. Poner los permisos
a estos ficheros adecuadamente es de vital importancia para la seguridad y consistencia
del sistema.
El fichero /etc/passwd solo indica el identificador de un grupo a cada usuario, pero con
el fichero /etc/group podremos asignar más grupos a cada usuario.
El formato de cada línea en el fichero de /etc/group está estructurado así:
[nombre grupo]:[contraseña]:GID:[lista de usuarios]
nombre grupo: el nombre del grupo.
Contraseña: en la contraseña del grupo aparecerá una x, indica que esta encriptado en
el fichero /etc/shadow. Si aparece este campo vacio indica que no hay contraseña para el
grupo.
GID: numero del grupo.
Lista de usuarios: lista de los usuarios de todos los miembros del grupo separado por
comas.
Ejemplo de grupos en fichero /etc/group
debian:/etc# userdel cuenta2
Cambiar caracteristicas de una cuenta
DUMP: Volume 1 2767090 blocks (2702.24MB) DUMP: Volume 1 took 0:04:42 DUMP: Volume 1 transfer rate: 9812 kB/s DUMP: 2767090 blocks (2702.24MB) on 1 volume(s) DUMP: finished in 282 seconds, throughput 9812 kBytes/sec DUMP: Date of this level 0 dump: Wed Feb 4 12:09:10 2009 DUMP: Date this dump completed: Wed Feb 4 12:15:24 2009 DUMP: Average transfer rate: 9812 kB/s DUMP: DUMP IS DONE
cuenta2:x:1003:1006:,,,:/:/bin/false
Cambiar caracteristicas de una cuenta
DUMP: Volume 1 2767090 blocks (2702.24MB) DUMP: Volume 1 took 0:04:42 DUMP: Volume 1 transfer rate: 9812 kB/s DUMP: 2767090 blocks (2702.24MB) on 1 volume(s) DUMP: finished in 282 seconds, throughput 9812 kBytes/sec DUMP: Date of this level 0 dump: Wed Feb 4 12:09:10 2009 DUMP: Date this dump completed: Wed Feb 4 12:15:24 2009 DUMP: Average transfer rate: 9812 kB/s DUMP: DUMP IS DONE
cuenta2:x:1003:1006:,,,:/:/bin/bash
Cambiar caracteristicas de una cuenta
DUMP: Volume 1 2767090 blocks (2702.24MB) DUMP: Volume 1 took 0:04:42 DUMP: Volume 1 transfer rate: 9812 kB/s DUMP: 2767090 blocks (2702.24MB) on 1 volume(s) DUMP: finished in 282 seconds, throughput 9812 kBytes/sec DUMP: Date of this level 0 dump: Wed Feb 4 12:09:10 2009 DUMP: Date this dump completed: Wed Feb 4 12:15:24 2009 DUMP: Average transfer rate: 9812 kB/s DUMP: DUMP IS DONE
Fig. 5.8. Ejemplo de fichero de configuración de /etc/group
En la trasparencia anterior tenemos los tres grupos con su respectivo GID (Group
Identification); 1000 para “ekaitz”, 1001 para “ulaize” y 1002 para “electronica”. El
grupo ekaitz y ulaize son los grupos creados por defecto al crear el usuario “ekaitz” y el
usuario “ulaize”, aparte he creado el grupo “electrónica” mediante addgroup.
Si queremos que “ekaitz” cree un fichero y de permisos de lectura, escritura y ejecución
para el grupo y que el usuario “ulaize” tenga acceso a este fichero, tenemos que tener
a los usuarios “ekaitz” y “ulaize” en el mismo grupo. Para ello vamos agregar al usuario
“ekaitz” y al usuario “ulaize” al grupo de “electronica”.
Ejemplo de grupo común en /etc/group.
Fig. 5.9. Ejemplo de grupo común en /etc/group
ekaitz:x:1000 ulaize:x:1001 electronica:x:1002:ulaize,ekaitz
DUMP: Volume 1 2767090 blocks (2702.24MB) DUMP: Volume 1 took 0:04:42 DUMP: Volume 1 transfer rate: 9812 kB/s DUMP: 2767090 blocks (2702.24MB) on 1 volume(s) DUMP: finished in 282 seconds, throughput 9812 kBytes/sec DUMP: Date of this level 0 dump: Wed Feb 4 12:09:10 2009 DUMP: Date this dump completed: Wed Feb 4 12:15:24 2009 DUMP: Average transfer rate: 9812 kB/s DUMP: DUMP IS DONE
ekaitz:x:1000: ulaize:x:1001: electronica:x:1002:
DUMP: Volume 1 2767090 blocks (2702.24MB) DUMP: Volume 1 took 0:04:42 DUMP: Volume 1 transfer rate: 9812 kB/s DUMP: 2767090 blocks (2702.24MB) on 1 volume(s) DUMP: finished in 282 seconds, throughput 9812 kBytes/sec DUMP: Date of this level 0 dump: Wed Feb 4 12:09:10 2009 DUMP: Date this dump completed: Wed Feb 4 12:15:24 2009 DUMP: Average transfer rate: 9812 kB/s DUMP: DUMP IS DONE
6. Herramientas para automatizar el proceso de administración de una red local
6.1. Introducción
Un administrador de una red local tiene que hacer muchos procesos, muchas veces para
ello el sistema operativo GNU/Linux provee de una serie de utilidades para hacer este
proceso más eficientemente y rápidamente. Con las aplicaciones que voy a explicar
podremos ejecutar comandos en múltiples hosts a la vez desde una maquina, también
podremos crear nuestros programas automáticos para no hacer tareas repetitivas por
parte del administrador, etc.
En este capítulo haremos una introducción a:
ClusterSSH: con esta aplicación podremos ejecutar comandos en múltiples
maquinas en paralelo en la red local.
Shell scripts: seremos capaces de crear ficheros llenos de comandos y luego
ejecutar estos comandos de una sola tirada.
AptonCD para crear nuestros propios repositorios.
Utilidades de reconocimiento y manipulación de cadenas de caracares como: tr,
grep, sed y AWK.
También explicaremos diferentes opciones de cómo apagar el sistema y arrancar
el sistema.
Aprenderemos como automatizar procesos periódicos.
Para realizar este capítulo me servido del libro Linux: administración del sistema y la
red de Alegria Loinaz, Iñaki y Cortiñas Rodrigez, Roberto y Ezeiza Ramos, Aitzol.
También lo he completado con recursos de internet, estas referencias están en la
bibliografía.
6.2. Prerrequisitos
Instalación base Debian/Lenny. También para comprender perfectamente los scripts se
necesitan conocimientos de shell script y más concretamente de programación BASH.
Recomendado conocer expresiones regulares, pero no imprescindible.
6.3. Herramientas para la administración
6.3.1 Shell scripts
Un shell script es un fichero de texto donde indicamos una lista de comandos de Linux a
ejecutar. Después de esto ejecutaremos este fichero y se ejecutarán todos los comandos
que hemos descrito en el fichero de una sola tacada.
En este fichero podremos indicar cualquier comando que ponemos en la Shell, pero
tiene muchísima mas potencialidad; soporta los elementos típicos de cualquier lenguaje
de programación procedimental como construcciones condicionales, operadores
booleanos, construcciones case, bucles, funciones, redirecciones de entrada/salida,
lectura desde teclado, etc.
Para saber cómo usar bien esta potentísima herramienta recomiendo estos dos manuales
de la página http://tldp.org:
http://tldp.org/LDP/abs/abs-guide.pdf
http://tldp.org/LDP/Bash-Beginners-Guide/Bash-Beginners-Guide.pdf
Ahora vamos a ver una serie de ejemplos de Shell scripts:
Instalación de paquetes básicos para un host.
Fig. 6.1. Ejemplo de automatización de instalación mediante script para BASH
Ejecución del script
Fig. 6.2. Ejemplo de ejecución de un script para BASH
En la figura podemos ver tres apartados claramente diferenciados:
#!/bin/bash #Añadir repostiorios de la distrubicion stable debian/lenny al fichero #/etc/apt/sources.list y actualizar # >> las dos flechas indican que se añade la frase anterior al final del fichero echo deb http://ftp.debian.org/debian/ stable main >> /etc/apt/sources.list echo deb-src http://ftp.debian.org/debian/ stable main >> /etc/apt/sources.list sudo apt-get update #INSTALAR APLICACIONES #Instalar compilador (el parámetro -y indica que las preguntas de la instalación se asumirá
yes por defecto)
sudo apt-get install -y gcc #Instalación de word versión linux (openoffice) sudo apt-get install -y openoffice.org-writer #Instalación del editor de textos kate sudo apt-get install -y kate #Instaladción de aplicacion para copias de seguridad (dump) sudo apt-get install -y dump #Instalación del debugger ddd sudo apt-get install -y ddd
ekaitz@debian:/media/EKAITZ 4GB/upna 2008/pfc$ chmod 700 scriptAPT.sh ekaitz@debian:/media/EKAITZ 4GB/upna 2008/pfc$ ./scriptAPT.sh
#!/bin/bash: indica al script que tipo de shell va interpretar el fichero en este caso
basado en BASH, es decir, la Shell es la terminal que interpreta los comandos en
cualquier sistema operativo y la shell de Linux se basa en BASH. Mas información en
http://es.wikipedia.org/wiki/Bash.
Añadir repositorio y actualizar: en este segundo apartado añadimos los enlaces donde
están todos los paquetes de la distribución Debian estable en el fichero
/etc/apt/sources.list y actualizamos mediante apt-get update para obtener la lista de
paquetes de los enlaces que hemos indicado en /etc/apt/sources.list.
Instalación de aplicaciones: aquí indicamos los paquetes a instalar mediante apt-get
install [aplicación]; comandos para instalar todos los paquetes que estemos interesados.
Con el carácter '#' indica el comienzo de un comentario y no será interpretado por
nuestro Shell a excepción de #!/bin/bash . En la figura 6.2 lo que hacemos es darle al
fichero permisos de ejecución.
Eliminar cuentas según criterios.
Fig. 6.3. Ejemplo de automatización de eliminación de cuentas mediante scripts para BASH
El script de la figura 6.3 saca por pantalla los usuarios conectados los lunes de marzo y
los jueves de cualquier momento y luego busca usuarios diferentes a Ekaitz que se
hayan conectado en el sistema en esas fechas, elimina también la información de los
reinicios y del sistema wtmp. Después de esto crea un fichero temporal donde
#!/bin/bash last > /tmp/last chmod 777 /tmp/last echo "----Comprobacion de usuarios conectados al sistema el los lunes de marzo y los jueves de cualaquier mes\n" less /tmp/last | egrep 'Mon Mar|Thu 2' #Usuarios conectados al sistema diferentes a ekaitz less /tmp/last | egrep 'Mon Mar|Thu' | tr -s ' ' ' ' | egrep -v 'ekaitz|^reboot|^samba|^wtmp' | cut -d' ' -f1 > /tmp/eliminar tam_fich=$(wc -l /tmp/eliminar | tr -d /tmp/eliminar) # tambien podria poner comillas invertidas ` ` echo hola cont=$tam_fich while [ 0 -ne $cont ] do aEliminar=`head -$cont /tmp/eliminar | tail -1` deluser $aEliminar cont=`expr $cont - 1` done
guardamos los nombres de los usuarios a eliminar, mediante el bucle while vamos
recorriendo ese fichero y eliminando los usuarios. La explicación de wtmp viene
explicada en la sección 3.5.4.
Anteriormente hemos visto que podemos utilizar bucles en scripts para BASH, en el
siguiente ejemplo vamos a ver que se pueden pasar argumentos cuando ejecutamos el
comando.
Fig. 6.4. Ejemplo de conexión a multiples shell remotas mediante script para BASH
Este script ejecuta un comando en múltiples maquinas, las ips de las maquinas se pasan
como argumentos. En el siguiente cuadro vemos como se ejecuta el comando.
Fig. 6.5. Ejecución del script de conexiones a múltiples Shell remotas
6.3.2. Ejecución de comandos en múltiples maquinas mediante ClusterSSH
Para el script de la figura 6.4 tenemos una aplicación gráfica llamada clusterSSH que
nos facilitara bastante las cosas. ClusterSSH nos permite acceder gráficamente multiples
consolas y cada consola representa la conexión a un host en la red local, todo esto
concurrentemente. Esto es muy eficiente cuando queremos modificar algo en muchos
ordenadores desde un solo host.
Instalación y uso de clusterSSH
1. Primero instalamos con apt-get install la aplicación.
#!/bin/bash #Este script ejecuta un comando en multiples maquinas #Opciones globales TIMEOUT=10 ERRLOG=/tmp/remote-err-$$.log OUTLOG=/tmp/remote-out-$$.log # Extrae el comando MACHINES=$1;shift COMMAND=$1;shift for machine in $MACHINES do echo $machine >>$OUTLOG.$machine ssh -oConnectTimeout=$TIMEOUT $machine $COMMAND >>$OUTLOG.$machine 2>>$ERRLOG.$machine & done wait #Esperando a todos los hijos para acabar cat $OUTLOG.* cat $ERRLOG.* >&2 rm -f $OUTLOG.* $ERRLOG.*
debian:/media/LACIE/upna 2008/pfc/Administracion aula/automatizacion/scriptsAdmin#
./clusterSSH.bsh 172.18.69.250
Fig. 6.6. Instalación de clusterSSH
2. Ejecutaremos clusterSSH, para ello usaremos el comando cssh y como
argumentos pondremos todas las ips de los hosts que queremos conectarnos,
en nuestro caso tres equipos de la subred lab.unavarra.es.
Fig. 6.7. Ejecución de clusterSSH
Fig. 6.8. Ejemplo de clusterSSH
En la captura anterior se ven múltiples ventanas, cada una representa la maquina que
estamos conectados. Tecleando en la ventana CSSH [3] se ejecutaran los comandos en
todos los hosts a la vez, también tiene la opción que se ejecuten los comandos en solo
dos ventanas o en una sola. Para más información teclear man cssh en la terminal.
6.3.2. Utilidades de manipulación de flujo de datos.
debian:/home/ekaitz# cssh 172.18.69.247 172.18.69.248 172.18.69.249
debian:/home/ekaitz# apt-get install clusterssh
6.3.2.1. Grep
Es una herramienta que aplica expresiones regulares a cadenas de caracteres y saca el
resultado por la salida estándar, las expresiones regulares también llamadas patrones
describen mediante un lenguaje sin ambigüedades características de un determinado
lenguaje. Por ejemplo las cadenas descritas por la expresión regular 'cas[aeiou]'
describen todas las palabras que empiezan por 'cas' y acaban por cualquier vocal. Esta
herramienta nos será muy útil para buscar determinadas cadenas en un fichero de texto
grande y combinadas con otras herramientas nos dará una gran potencialidad para el
administrador.
Ejemplos de uso de grep:
Para mostrar todas las líneas que contienen la cadena “pass” en un fichero de texto.
grep pass
Para mostrar todas las líneas que contienen la cadena “pass” o la cadena “PASS” en
un fichero de texto.
grep pass|PASS
Para mostrar un fichero sin las lineas en blanco.
Grep -v '^[[:blank:]]*$'
Para mostrar las lineas que solo contienen digitos.
grep '^[[:digit:]]*$'
Todos estos comandos por si solos no tienen sentido y debemos decirle al ordenador
sobre qué cadena de caracteres queremos aplicar el patrón. Mediante una tubería con el
carácter “|” redireccionamos el contenido de un fichero al comando grep para que actué
sobre el flujo de caracteres que recibe.
less fichero.txt | grep ^([0][1-9]|[12][0-9]|3[01])(/|-)(0[1-9]|1[012])\2(\d{4})$
Mediante el opción -f de grep podemos pasar el fichero como un segundo argumento en
vez de por una tubería.
grep ^([0][1-9]|[12][0-9]|3[01])(/|-)(0[1-9]|1[012])\2(\d{4})$ fichero.txt
Para más información sobre expresiones regulares recomiendo el capítulo 17 de esta
guía http://tldp.org/LDP/abs/abs-guide.pdf.
6.3.2.2. sed y tr
Estas dos herramientas sirven para modificar ficheros según unos patrones; tr es
bastante sencilla y sed es estilo tr pero con muchísimas más opciones.
Ejemplo de tr.
Fig. 6.9. Ejemplo de uso del comando tr
El anterior ejemplo hace grupos de caracteres que no sean letras y los sustituye por un
carácter fin de línea.
Ejemplo de sed
Fig. 6.10. Ejemplo de uso del comando sed
Envía el contenido del fichero fichero.txt a la salida estándar, habiendo eliminado del
flujo de salida todas las líneas del mismo que comiencen con una cadena de al menos
cinco dígitos.
6.3.2.3. AWK
AWK es como sed pero a diferencia de sed es un lenguaje de programación, con lo que
todo conlleva mayor complejidad y mayor potencialidad. No vamos a explicar AWK
aquí, ya que una pequeña introducción a este lenguaje de programación daría para un
capitulo, únicamente indicaremos para que trabajos usarlo.
Recomiendo el uso de AWK para cualquier modificación compleja de ficheros de texto,
si la modificación es sencilla con un simple sed nos valdría, pero si la modificación
varía mucho según la parte de texto en que estemos o la modificación es muy compleja
recomiendo AWK. Para aumentar su poder podemos complementar AWK con el uso de
de Shell scripts es muy recomendable.
Si estamos interesados en aprender este potente lenguaje de programación recomiendo
el siguiente enlace que contiene una extensa guía sobre AWK
http://blyx.com/public/docs/programacion/Manual_Awk_castellano.pdf.
6.3.3. Apagado del sistema
El apagado del sistema (por ejemplo de un servidor en una red local) se puede dar para
realizar determinados trabajos de mantenimiento. Existen varias formas de realizar esta
acción, para ello existen el comando shutdown que explicamos a continuación.
Este comando acepta dos parámetros, el primero a qué hora se realizara el apagado del
sistema o reinicio según la opción, y el segundo el mensaje de advertencia antes de
realizar la acción, muy útil cuando un usuario esté conectado al sistema y realice las
acciones convenientes antes del reinicio.
debian:/home/ekaitz# less fichero.txt | tr -sc [:alpha:] '\n'
debian:/home/ekaitz# sed '^[[:digit:]]\{5,\}/d' fichero.txt
Como opciones más destacables tenemos:
-r, reinicia el sistema no lo apaga.
-h, apaga el sistema.
-k, para enviar un mensaje de advertencia, pero no apaga el sistema verdaderamente.
-F, forzar el fsck cuando se reinicie el sistema.
Ejempo de apagado en 8 minutos y aviso.
Fig. 6.11. Ejemplo de uso del comando shutdown (8 minutos y reinicio)
Ejemplo de apagado a las 02:00 y su correspondiente aviso.
Fig. 6.12. Ejemplo de uso del comando shutdown (a las 2:00 reinicio)
6.3.4. Arranque del sistema
El sistema operativo GNU/Linux organiza el arranque del sistema según unos niveles,
estos niveles están distribuidos en siete niveles del 0 al 6:
0: desconexión. Detención del sistema
1 o S: modo monousuario. Para actividades especiales como la reparación del sistema
de ficheros.
2: modo multiusuario, pero sin servicio de red NFS
3: modo multiusuario normal, incluyendo la red.
4: no se utiliza.
5: modo multiusuario normal, incluyendo la red, pero iniciando la interfaz gráficamente
6: reiniciar, manteniendo el nivel de ejecución.
El arranque de un sistema operativo GNU/Linux se basa en los siguientes cuatro pasos:
1) Se carga el kernel de linux, que suele estar en el directorio raíz, en el caso de
Debian/Lenny vmlinuz -> boot/vmlinuz-2.6.24-1-686 la flecha indica que en realidad el
fichero esta en /boot/vmlinuz-2.6.24-1-686 a esto se le denomina enlace simbólico.
2) Prueba y configuración del hardware y drivers.
3) Ejecución del proceso init sería una especie de gran script donde se arrancan todos
los procesos del sistema operativo, todo este proceso y sus correspondientes mensajes
se guardan en el fichero /var/log/messages.
4) Cambio a modo multiusuario superior al nivel cinco.
debian:/etc# shutdown -h 02:00 "Se reiniciara el sistema a las 2 de la mañana" Broadcast message from root@debian (pts/6) (Tue Mar 24 20:00:33 2009): Se reiniciara el sistema a las 2 de la mañana The system is going DOWN for system halt in 360 minutes!
debian:/etc# /sbin/shutdown -r 8 "El sistema se reiniciara en 8 minutos" Broadcast message from root@debian (pts/6) (Tue Mar 24 19:52:56 2009): El sistema se reiniciara en 8 minutos The system is going DOWN for reboot in 8 minutes!
El fichero de configuración que controla este arranque es /etc/inittab contiene
información sobre los scripts que deben ser arrancados.
Fig. 6.13. Scripts que de arranque indicados en /etc/inttab
En la figura 6.13 podemos ver parte del fichero donde están indicados los scripts que
van arrancarse.
Cada una de las primeras siete líneas corresponde a los niveles de ejecución con el
correspondiente script a ejecutar /etc/init.d/rc y el correspondiente parámetro según el
nivel de ejecución a aplicar.
Si queremos hacer un inicio personalizado cuando el sistema arranque, deberemos crear
unos scripts, que deberán estar escritos en /etc/rc.d/rc.local. Este script se ejecuta
después de la ejecución de los scripts correspondientes a cada nivel de ejecución.
6.3.5. Procesos periódicos
Hemos explicado en la sección 6.3.1. Como realizar scripts para automatizar procesos.
En el trabajo diario de un administrador en una red local puede darse que estos scripts
deban ser ejecutados periódicamente. Por ejemplo realizar backups a final de mes,
informes de anomalías en el sistema al final de la semana etc. Para que un programa o
script deba ser ejecutado periódicamente se utiliza generalmente el comando crontab,
que viene con la instalación base del sistema Debian/Lenny.
Como crear un trabajo periódico:
Crontab usa un fichero único por cada usuario, para crear este fichero deberemos estar
logueados en un determinado usuario. Ejecutaremos crontab /etc/crontab y esto hará
que se cree una copia de este ultimo fichero en /var/spool/cron/crontabs con el nombre
del usuario donde estamos logueados. Por ejemplo si estuviéramos en el usuario ekaitz
se creara el fichero llamado /var/spool/cron/crontabs/ekaitz con el contenido de
/etc/crontab.
Este fichero lo podremos modificar a nuestro gusto añadiendo una línea por tarea como
podemos ver en la figura 6.14.
Fig. 6.14. Ejemplo de líneas de configuración
El formato de cada línea de este fichero es minuto hora día mes día_semana comando.
Minuto hora día mes día_semana son numéricos pero se pueden usar metacaracteres
como:
l0:0:wait:/etc/init.d/rc 0
l1:1:wait:/etc/init.d/rc 1
l2:2:wait:/etc/init.d/rc 2 l3:3:wait:/etc/init.d/rc 3
l4:4:wait:/etc/init.d/rc 4
l5:5:wait:/etc/init.d/rc 5 l6:6:wait:/etc/init.d/rc 6
30 8 * * 1-5 apt-get update 30 10 * * 1 who >> /home/quienEsta
"*" Si se pone en día indica que se aplica a todos los días el comando.
"-" Para expresar un rango de valores, por ejemplo, si ponemos 8-10 solo se
aplica esta franja horaria.
"," Para poner listas si queremos que un comando se aplique los días 7,8,9.
"/" Procesos periódicos */5, si en el minuto aparece esto significa cada cinco
minutos ejecuta el comando.
La figura 6.14 indica que a las 8:30 todos los días laborables se actualizaran los
paquetes y la segunda línea dice que a las 10:30 todos los lunes se guardara en el fichero
/home/quienEsta los usuarios conectados al sistema.
Para listar los procesos periódicos programados tenemos el comando crontab –l.
Fig. 6.15. Salida del comando crontab -l
Si queremos programar directamente usaremos crontab –e, nos saldrá el editor de textos
“nano” con la lista crontab –l, ahí podremos editarlo.
6.3.6. Creación de repositorios personalizado mediante AptonCD
Cuando instalamos una aplicación mediante apt-get install se descargan los paquetes
desde internet y luego se instalan. Estos paquetes se guardan en el directorio
/var/cache/apt/archives.
Lo que hace este programa es ayudar a crear cds con los paquetes para que luego
podamos poder instalarlos sin ninguna conexión a internet, también es muy útil ya que
cuesta su tiempo instalar todos esos paquetes, pues volverlos a instalarlos en otro
ordenador es una ardua tarea, así se pueden crear repositorios personalizados según
nuestros intereses.
Proceso de instalación y uso de AptonCD
1. Instalamos la aplicación mediante el comando apt-get install aptoncd.
debian:/home/ekaitz# crontab -l # /etc/crontab: system-wide crontab # Unlike any other crontab you don't have to run the `crontab' # command to install the new version when you edit this file # and files in /etc/cron.d. These files also have username fields, # that none of the other crontabs do. SHELL=/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin # m h dom mon dow user command 17 * * * * root cd / && run-parts --report /etc/cron.hourly 25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily ) 47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly ) 52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
Fig. 6.16. Instalación de AptonCD
2. Ejecutamos la aplicación tecleando aptoncd en la terminal.
Fig. 6.17. Ejecución de AptonCD
Se nos mostrara la siguiente pantalla con dos pestañas “Crear” y “Restaurar”.
3. Para empezar explicaremos la opción de crear, le damos click al botón “Crear
APTonCD”. Al darle al botón nos cargara todos los paquetes del sistema.
debian:/home/ekaitz# aptoncd
debian:/home/ekaitz# apt-get install aptoncd.
4. Tendremos la opción de deshabilitar paquetes que no estemos interesados.
Después de esto le damos a “Crear” y nos crear un imagen “.iso” para después
guardarlo en un cd.
La pestaña de restaurar nos ofrece 3 posibilidades:
Restaurar APTonCD: copia los paquetes de un CD/DVD a la cache apt para su
posterior instalación, es decir, los cargara al directorio antes descrito
/var/cache/apt/archives.
Restaurar imagen iso: lo mismo que la anterior opción pero desde una imagen .iso.
Agregar CD/DVD: agrega el CD a modo de repositorio a nuestro /etc/apt/sources.list.
Después de restaurar los paquetes podremos instalar los paquetes mediante apt-get
install.
Todo lo anterior lo podemos realizar nosotros manualmente, lo único que deberíamos
hacer es guardar todo los paquetes que están el directorio /var/cache/apt/archives en un
CD y para restáuralo copiar el contenido del CD en /var/cache/apt/archives.
7. SAMBA
7.1. Introducción
SAMBA es un protocolo que sirve para compartir archivos, directorios e impresoras en
redes locales (LAN) , por lo tanto , a través de Samba , un sistema Gnu/Linux puede ser
configurado para ofrecer estos servicios a pc's corriendo sistemas Windows , Gnu/Linux
u otros sistemas operativos que soporten el protocolo de comunicación.
Este protocolo hará visible en la red local los directorios compartidos, en los cuales los
usuarios podrán fácilmente almacenar sus propios archivos e intercambiar documentos.
Además, las impresoras conectadas al servidor pueden ser publicadas en la red y todos
los pc's podrán hacer uso de las mismas con extrema facilidad.
Con SAMBA es también posible manejar la autenticación de usuarios dando un plus en
lo que se refiere a la seguridad y privacidad de los datos.
Una óptima solución para incrementar la productividad de una red local , sea esta una
red grande , mediana o pequeña como puede ser la de nuestras propias casas.
Existen alternativas para compartir archivos e impresoras para redes solamente
GNU/Linux como el protocolo NFS que hablo en el siguiente capitulo.
Para realizar este capítulo he usado estos tres enlaces de internet:
http://www.esdebian.org/wiki/introduccion-samba
http://es.tldp.org/Manuales-LuCAS/USANDO-SAMBA/usando-samba.pdf
http://dns.bdat.net/documentos/samba/smb.conf/
7.2. Prerrequisitos
Instalación base Debian/Lenny. Como SAMBA es un protocolo para poder compartir
ficheros Windows si queremos hacer las pruebas necesitaremos Windows XP que es
con la versión de Windows con la que hemos realizado las pruebas, aunque con otras
versiones de Windows también se puede, aunque la configuración diferirá algo.
7.3. Instalación del servidor y configuración del servidor
7.3.1. Instalar paquetes
Lo primero que haremos es instalar el paquete samba.
Fig. 7.1. Instalación de samba
debian:/home/ekaitz# apt-get install samba smbclient
Con samba y smbclient nos vale, ya que el propio apt-get samba smbclient instalara los
paquetes necesarios para que funcione el paquete samba.
7.3.2. Funcionamiento del fichero de configuración /etc/samba/smb.conf
Toda la configuración del servidor se basa en el fichero /etc/samba/smb.conf en esta
sección explicaré las cosas principales de este fichero, pero para una explicación
completa tenéis man 5 smb.conf y si deseáis un manual de este fichero de configuración
en español recomiendo esta página http://dns.bdat.net/documentos/samba/smb.conf/.
Este fichero consta de secciones y dentro de éstas parámetros. Cada sección está entre
corchetes. Hay que tener en cuenta que mayúsculas y minúsculas son indistintas lo
contrario que suele suceder en un sistema GNU/Linux que diferencia entre mayúsculas
y minúsculas. Los caracteres “;” y “#” son considerados el comienzo de un comentario.
Por convenio “;” para deshabilitar parámetros y “#” para comentarios, aunque se pueden
usar indistintamente.
Cada sección describe un recurso compartido o un servicio. Hay tres secciones
especiales [global] en esta sección se indican los parámetros globales de la
configuración del servidor SAMBA. En la sección [homes] se indicaran los clientes que
se pueden conectarse al directorio home del servidor. La sección [printers] sirve para
compartir impresoras por samba.
También podemos editar nuestras propias secciones por si estamos interesados en
compartir más recursos. Luego veremos cómo añadir estas secciones propias para
compartir el recurso que queramos.
7.3.3. Configurar sección global
Esta sección configura los valores generales del servidor, en una sección podemos poner
múltiples parámetros. El siguiente cuadro he puesto siete parámetros de configuración,
pero es posible poner multitud de parámetros diferentes.
Fig. 7.2. Configuración de sección global
workgroup: este parámetro es el que indica el nombre del grupo de trabajo,
server string: es el nombre del servidor que aparecerá en el cliente, %h representa el
hostname.
syslog: este parámetro indica como Samba registra los mensajes de depuración en los
niveles de registro de syslog. El nivel de depuración cero envía a syslog LOG_ERR, el
workgroup = proyectoSamba server string = %h server log file = /var/log/samba/log.%m syslog = 0 panic action = /usr/share/samba/panic-action %d guest ok= yes
nivel uno LOG_WARNING, el dos LOG_NOTICE, el nivel de depuración tres
LOG_INFO. Para más información sobre monitorización del sistema ver capitulo 3.
panic action: si hay un suceso anómalo en el proceso del servidor %d indica el número
del proceso que ha producido esa situación.
guest ok: indica que en todas las secciones se podrá acceder como invitado si no se
indica nada en las demás secciones.
7.3.4. Configurar sección homes
Esta sección sirve para que los usuarios puedan conectarse a un directorio home en el
servidor remoto. Cuando nos conectamos al recurso compartido homes mediante un
“nombre_de_usuario” nos conectaremos al directorio /home/nombre_de_usuario del
servidor, como explicaremos más tarde tendremos que tener creado un usuario en el
servidor.
Fig. 7.3. Configuración de sección homes
7.3.5. Creación de secciones propias
Fig. 7.4. Configuración de secciones propias
Aparte de las secciones predeterminadas podremos poner secciones que indicaran
ficheros que queramos compartir: Mediante path indicamos la ruta, browseable para
indicarle que podemos navegar por el directorio, guest ok significa que los clientes
pueden entrar como invitado, y el parámetro writeable significa que los clientes tendrán
derechos de escritura. Con valid users indicamos lo únicos usuarios permitidos y
mediante invalid users indicamos al contrario, los únicos usuarios que no son
permitidos para este recurso compartido. Hay que tener cuidado si un parámetro
contradice el de la sección [globals] ya que no tiene preferencia el de la sección
[globals].
7.3.6. Reinicio del demonio samba
[etc] comment= configuracion del servidor path=/etc browseable=yes guest ok=yes writeable=yes valid users = samba,usuario3
[homes] comment= directorios Homes de servidorAcer browseable=yes writeable=yes guest ok=no create mask=0777 create mode=0777 invalid users =hola3
Fig. 7.5. Configuración de secciones propia
7.3.7. Comprobando sintaxis del fichero /etc/smb.conf
Una vez configurado el servidor tenemos una utilidad para ver si tenemos errores de
sintaxis en el fichero y como ha quedado configurado.
Fig. 7.6 Uso del comando testparm
7.3.8. Listar servicios
Ahora ya estamos preparados para ver si se comparten los recursos, para eso tenemos un
comando para listar todos los recursos del servidor. La contraseña de root no es
ninguna.
Fig. 7.7 Comprobación de los servicios samba mediante el comando smbclient
debian:/home/ekaitz# /etc/init.d/samba restart Stopping Samba daemons: nmbd smbd. Starting Samba daemons: nmbd smbd.
debian:/home/ekaitz# testparm Load smb config files from /etc/samba/smb.conf Processing section "[homes]" Processing section "[desktop]" Processing section "[printers]" Processing section "[print$]" Loaded services file OK. Server role: ROLE_STANDALONE Press enter to see a dump of your service definitions … ...
debian:/etc/samba# smbclient -L localhost Enter root's password: Anonymous login successful Domain=[PROYECTOSAMBA] OS=[Unix] Server=[Samba 3.2.5] Sharename Type Comment --------- ---- ------- homes Disk directorio Home de Ekaitz en el Servidor Samba desktop Disk desktop del servidor print$ Disk Printer Drivers IPC$ IPC IPC Service (debian servidor de ekaitz samba en servidorAcer (172.18.69.247)) Gutenberg Printer HP 2300n Anonymous login successful Domain=[PROYECTOSAMBA] OS=[Unix] Server=[Samba 3.2.5] Server Comment --------- ------- DEBIAN debian servidor de ekaitz samba en servidorAcer Workgroup Master --------- ------- ACUSTICA FIS060110 AVANZADA IEE0202SV CIDEC CIDEC-DIRECCION COMOPT IEE0203SR ELECBAS IEE0204SV ELECIND BLASHCKE GRUPO_TRABAJO LABO29163 IEE PROYECPRINTER INGMATE MAT140121 INICIOMS DIANALDAMA MDKGROUP LPMILINUX01 PROYECTOSAMBA DEBIAN QUIMICA ARZAMENDIDELL SALA_IRURAL 001C254DBA3D SEGURA FERRIGATO SEYSIS IEE0201SV WORKGROUP LABO29184
Para acceder a Samba crearemos un usuario específico samba en el servidor (también
podemos crear tantos usuarios como usuarios estén en la red para acceder a los servicios
ofrecidos por SAMBA), este usuario hipotético samba será el único que tendrá acceso a
los recursos compartidos, los usuarios deberán loguearse mediante el usuario samba y
su respectiva contraseña (si esta configurado smb.conf como guest también podremos
loguearnos como usuario guest (invitado)).
Como no queremos que el usuario samba pueda acceder a otros servicios del sistema le
impediremos hacer login, bloqueando la Shell visto en el capitulo administración de
cuentas y grupos.
Fig. 7.8. Añadiendo usuario samba mediante adduser
Luego hay que dar de alta al usuario en samba.
Fig. 7.9. Creando password en samba
7.4. Conexiones del cliente al servidor samba
7.4.1. Paquetes necesarios en el cliente en Linux
Sólo hay que comprobar que el servidor puede acceder a los recursos, antes hay que
instalar en el cliente el paquete smbfs, smbclient.
Fig. 7.10 Instalando smbfs
7.4.2. Conectarse desde Linux (cliente) a un servidor samba en Linux (servidor)
Fig. 7.11. Conectándose desde Linux a un servidor samba mediante smbclient
Si tenemos habilitado guest ok= yes podemos poner -U guest y contraseña ninguna.
Otra opción es montarlo en el sistema directamente, para ello creamos el directorio
donde montaremos el fichero y luego lo montaremos
useradd -s /bin/false samba
smbpasswd -a samba
apt-get install smbfs smbclient
ekaitz@debian:~$ smbclient //172,18,69,247/etc -U samba Enter samba's password: Domain=[DEBIAN] OS=[Unix] Server=[Samba 3.2.5] smb: \>
Fig. 7.12. Creando directorio donde se montara fichero compartido
Fig. 7.13. Montando fichero mediante mount
Si tenemos habilitado guest ok= yes podemos poner -o username=guest y ninguna
contraseña.
7.4.3. Conectarse desde Windows XP (cliente) a un fichero compartido mediante samba en Linux (servidor)
Aquí el cliente será un Windows XP y el servidor será Linux, para facilitar la
instalación en Windows he puesto capturas de pantalla, si no tenemos Windows XP y si
Vista, el proceso es igual, solo que “Conectar a unidad de red” está en “Centro de redes
y recursos compartidos” y “Mis sitios de red” esta en inicio/red.
Para empezar vamos ir a MiPc botón derecho y conectar a unidad de red.
Rellenamos los dos campos que nos solicitan
Unidad: indistinto
Carpeta:\\172.18.69.247\etc
mkdir /mnt/samba
mount //172.18.69.247/desktop /mnt/samba -o username=samba password:
Ahora nos pedirá el usuario y contraseña, nos conectaremos en nuestro caso a la
maquina 172.18.69.247 con nombre de usuario samba y contraseña samba, que es el
usuario que habíamos creado en el servidor Linux
Si queremos permanentemente que este el fichero Linux en el sistema Windows
deberemos ir a Mis sitios de red, agregar un sitio de red y ahí nos pedirá la ruta que
pusimos anteriormente.
Nos pedirá la ruta, hacemos doble click en Elija otra ubicación de red.
Indicamos la ruta como habíamos hecho en el apartado anterior.
7.4.4. Conectarse desde Linux (cliente) a fichero compartido por Windows XP (servidor)
Aquí Linux será el cliente y Windows XP el servidor.
Comencemos pulsando el botón derecho del ratón en la carpeta que queremos
compartir y click con el boton izquierdo a Compartir y seguridad.
En la sección Uso compartido y seguridad de red habilitamos la opción Compartir esta
carpeta en la red mediante el check-box.
7.4.5. Conectarse desde Windows (cliente) a impresora en Linux (servidor)
Lo único que hay que tener habilitado es la sección printers que está por defecto e
instalar el driver apropiado para la impresora. Luego en Windows iremos a agregar
impresora e introduciremos \\servidor\nombre_de_la_impresora.
7.4.6. Conectarse desde Linux (cliente) a impresora en Windows Vista (servidor)
Antes de todo iremos a Panel de control/Hardware y sonido/Impresoras ahi
buscaremos la impresora de Windows y le damos con el botón derecho del raton y le
damos a Compartir…
Después nos aparecerá un panel y le damos al botón Cambiar opciones de uso
compartido
y luego tildamos el checkbox Compartir impresora
Luego tendremos que poner el nombre de la impresora que será con el nombre que nos
tendremos que conectar en Recurso compartido.
Abra que crear un usuario con contraseña para que el cliente en Linux tenga que
identificarse al conectarse a la impresora de Windows.
Parte cliente (Linux)
Para facilitar la impresión usaremos el sistema de impresión común de Unix (Common
Unix Printing Systen en ingles, abreviado CUPS) es un sistema de impresión que actua
como un servidor acepta tareas de impresión y los envía al servidor de impresíon
apropiado.
1. Primero instalamos el paquete cups
Fig. 7.14. Instalando cups
2. Nos conectamos al navegador web y pondremos la dirección http://localhost:631
el servicio CUPS funciona mediante el navegador. Le damos a Administration y
luego add new Printer. Deberemos indicar Nombre de la impresora, donde está
debian:/home/ekaitz# apt-get install cups
situada y descripción.
3. Despues de esto buscamos la impresora a la cual se va conectar el sistema
Linux, en nuestro caso es una HP LaserJet 1022.
4. Después de elegir el driver de la impresora, deberemos elegir el tipo de conexión
a la impresora normalmente, como estamos trabajando sobre samba elegiremos
via samba.
5. Ahora deberemos poner la dirección URI (un sistema de identificación de
recursos en internet), cuando la conexión es via samba se pone
smb://[servidor]/[nombre_de_recurso] aunque puede podemos poner de varias
formas como veremos luego. En nuestro caso la dirección URI es
smb://192.168.2.105/HPLaserJ la dirección es privada ya que he realizado la
conexión en una red domestica.
También podríamos poner directamente la autenticación en la URI en este caso
sería smb://ekaitz:password@workgroup/192.168.2.105/HPLaserJ si no
ponemos la autentificación el sistema Linux nos debería pedírnosla.
7.4.7. Montar automáticamente en Linux un fichero mediante /etc/fstab
Ahora vamos hacer que un fichero se monte automáticamente mediante el fichero
/etc/fstab ya que si lo montamos mediante smbmount al reiniciar el ordenador se
desmontara.
Primero editamos el fichero /etc/fstab y añadimos una línea que indicara que fichero
queremos montar y donde se va montar al arranque. En la línea pondremos con qué
usuario y contraseña nos loguearemos al fichero compartido, también indicaremos el
username (nombre de usuario) y password.
Fig. 7.15. Montando directorio mediante cups
Actualizamos /etc/fstab mediante mount -a
Fig. 7.16. Actualizando cups mediante mount -a
El método anterior es muy útil ya que va ser totalmente trasparente al usuario sin
necesidad de saber qué contraseñas se necesitan, ni estar cada vez que uno se conecta al
sistema montando el fichero. Pero este método entraña un problema, el usuario tiene
acceso al fichero /etc/fstab lo que conlleva que cualquier usuario de la maquina sepa las
contraseña y usuario de la maquina a conectarse, para ello hay que crear un fichero de
# /etc/fstab: static file system information # <file system> <mount point> <type> <options> <dump> <pass> proc /proc proc defaults 0 0 //172.18.69.247/etc /mnt/samba smbfs username=samba,password=samba 0 0 # /dev/sda5 UUID=09d71e7b-e24a-4448-9488-858acee874b2 / ext3 relatime,errors=remount-ro 0 1
root@s101-portatil:/home/ekaitz# mount -a
texto con credenciales (password y contraseña) y con permisos adecuados
controlaremos que el usuario no pueda acceder a este.
Creación de credenciales
1. Creamos fichero vi .credenciales, el punto inicial es para que el fichero este
culto en el directorio.
Fig. 7.17. Creando fichero de credenciales
2. Creando permisos a .credenciales para que usuarios no permitidos no puedan
acceder.
Fig. 7.18. Dando permisos a .credenciales
3. Editando /etc/fstab.
Fig. 7.19. Editando /etc/fstab para insertar credenciales mediante /etc/samba/.credenciales
4. Si el fichero no se monta automáticamente, editamos el fichero rc.local
(explicado en la sección 6.3.4) y añadimos mount -a.
# /etc/fstab: static file system information. # # <file system> <mount point> <type> <options> <dump> <pass> proc /proc proc defaults 0 0 //172.18.69.247/etc /mnt/samba smbfs credentials=/etc/samba/.credenciales 0 0 # /dev/sda5 UUID=09d71e7b-e24a-4448-9488-858acee874b2 / ext3 relatime,errors=remount-ro 0
root@s101-portatil:/etc/samba# chmod 000 .credenciales
password=samba username=samba
8. NFS
8.1. Introducción
NFS de las siglas Network File System es un protocolo que permite que ficheros en un
ordenador servidor sean accedidos por un cliente como si fueran locales. El cliente
usara el fichero del servidor como si fuera local no existe ninguna diferencia al usar el
usuario cliente el fichero.
Un uso muy útil de lo explicado anteriormente es que podemos mantener un servidor
con los ficheros de configuración centralizados en este. Así el mantenimiento es más
fácil modificando una sola vez el fichero de configuración del servidor y este será el
fichero de configuración de todos los clientes. Solo existe una copia del fichero de
configuración.
La máxima expresión del uso del protocolo NFS es centralizar los ficheros de un
usuario en un servidor hasta el extremo que se puede llegar a tener clientes sin disco
duro a esto es llamado thin-client o cliente liviano.
En este capítulo nos toca explicar cómo configurar un servidor NFS y como configurar
el cliente para que pueda acceder al servidor NFS.
8.2. Prerrequisitos
Todos los hosts de nuestra red deben funcionar mediante GNU/Linux. NFS
funciona con Windows pero el problema es que NFS se diseñó orientado a GNU/Linux,
siendo muchísimo más rápido y menos complejo de configurar.
Si nuestro propósito es usar ambos sistemas operativos recomiendo la lectura del
siguiente capítulo anterior SAMBA. También deberemos tener instalado Debian/Lenny.
Para comprender el capitulo deberemos tener conocimientos básicos sobre redes de
computadores y el sistema GNU/Linux.
8.3. Ficheros básicos a tener en cuenta para la configuración
/etc/exports
Fichero para exportar los ficheros ó directorios montables por el cliente
/etc/init.d/nfs-kernel-server
servicio para arrancar nfs
8.4. Pasos para instalar NFS
8.4.1. Instalación de paquetes
Primero deberemos instalar los paquetes de NFS del servidor (nfs-kernel-server) y el
paquete nfs-common.
Fig. 8.1. Instalación del servidor NFS
Si nos da errores no nos preocupemos ya que aun no hemos configurado el servidor
correctamente y se pondrá a buscar clientes.
8.4.2. Exportando ficheros
Los ficheros que exportará el servidor se deberá indicar en /etc/exports, estos ficheros
son los ficheros que el cliente puede tener acceso. Aparte de los ficheros a exportar se
podrá indicar permisos y más características. Esté atento a los espacios en el archivo. Si
no existen espacios entre el nombre del host y las opciones en paréntesis, las opciones
se aplican sólo al nombre del host. Si existe un espacio entre el nombre del host y las
opciones, las opciones se aplican al resto del mundo. Examine por ejemplo las líneas
siguientes:
Fig. 8.2. Exportando los ficheros
En la figura 8.2 la primera línea otorga acceso de lectura/escritura a los usuarios desde
lab.unavarra.es y niega acceso a todos los otros usuarios. La segunda línea otorga
acceso de sólo lectura a los usuarios desde lab.unavarra.es (predeterminado) y permite
al resto del mundo acceso de lectura/escritura.
8.4.3. Reinicio del demonio
Iniciamos el demonio tecleando en la terminal “/etc/init.d/nfs-kernel-server”.
/misc/export *.lab.unavarra.es(rw,sync) /misc/export *.lab.unavarra.es (rw,sync)
debian:/# apt-get install nfs-kernel-server Leyendo lista de paquetes... Hecho Creando árbol de dependencias Leyendo la información de estado... Hecho
Fig. 8.3. Arrancando el demonio del servidor de NFS
Fig. 8.4. Error del demonio del servidor de NFS
Si este da error es que no están bien configurados las ips con sus alias en el fichero
/etc/hosts o que hemos puesto mal el alias en el fichero /etc/exports.
8.4.4. Comprobar servicios
Después del paso anterior habrá que comprobar que nuestro kernel ya puede soportar el
sistema de fichero nfs, para ello buscaremos la línea nfsd en el fichero /proc/filesystems.
Fig. 8.5. Sistemas de ficheros en /proc/filesystems
También tendremos comprobar que existe el servicio portmapper corriendo en el
servidor mediante rpcinfo –p.
debian:/# /etc/init.d/nfs-kernel-server debian:/etc/init.d# /etc/init.d/nfs-kernel-server restart Stopping NFS kernel daemon: mountd nfsd. Unexporting directories for NFS kernel daemon.... Exporting directories for NFS kernel daemon...exportfs: /etc/exports [3]: Neither 'subtree_check' or 'no_subtree_check' specified for export "clienteDell:/etc". Assuming default behaviour ('no_subtree_check'). NOTE: this default has changed since nfs-utils version 1.0.x exportfs: /etc/exports [4]: Neither 'subtree_check' or 'no_subtree_check' specified for export "clienteDell:/home". Assuming default behaviour ('no_subtree_check'). NOTE: this default has changed since nfs-utils version 1.0.x
. Starting NFS kernel daemon: nfsd mountd.
debian:/etc/init.d# cat /proc/filesystems
nodev sysfs
nodev rootfs
nodev bdev
nodev proc
nodev cgroup
nodev cpuset
nodev debugfs
nodev securityfs
nodev sockfs
nodev pipefs
nodev anon_inodefs
nodev futexfs
nodev tmpfs
nodev inotifyfs
nodev devpts
nodev ramfs
nodev hugetlbfs
nodev mqueue
nodev usbfs
ext3
udf
iso9660
vfat
nodev rpc_pipefs
nodev nfsd
exportfs: clienteDell has non-inet addr exportfs: clienteDell has non-inet add
Fig. 8.6. Buscando servicio portmapper mediante rpcinfo
8.5.5. Montar fichero en el cliente
Deberemos instalar el paquete nfs-common también en el cliente.
Como en el servidor miraremos si esta nfsd en /proc/filesystems, después de esto
montamos el directorio del servidor en el cliente.
Fig. 8.7. Montando fichero en el cliente mediante mount
-t nfs: sistema de ficheros que va soportar.
servidorAcer:/home/linux1: servidorAcer indica la máquina servidor, también
podríamos poner la ip del servidor. Después de los dos puntos indicamos el directorio
del servidor que vamos a montar.
/home/linux1: directorio que montaremos en el cliente, no tiene por que ser el mismo
nombre que en el del servidor.
Para desmontar simplemente tecleamos en la terminal umount /mnt/ficheroADesmontar.
Para montar permanentemente deberemos ir a /etc/fstab y allí indicaremos el fichero a
montar.
Fig. 8.8. Configurando /etc/fstab
Opciones en el fichero /etc/fstab:
debian:/home/ekaitz# rpcinfo -p programa vers proto puerto 100000 2 tcp 111 portmapper 100000 2 udp 111 portmapper 100024 1 udp 56178 status 100024 1 tcp 42857 status 100003 2 udp 2049 nfs 100003 3 udp 2049 nfs 100003 4 udp 2049 nfs 100021 1 udp 42642 nlockmgr 100021 3 udp 42642 nlockmgr 100021 4 udp 42642 nlockmgr 100003 2 tcp 2049 nfs 100003 3 tcp 2049 nfs 100003 4 tcp 2049 nfs 100021 1 tcp 40519 nlockmgr 100021 3 tcp 40519 nlockmgr 100021 4 tcp 40519 nlockmgr 100005 1 udp 58533 mountd 100005 1 tcp 53234 mountd 100005 2 udp 58533 mountd 100005 2 tcp 53234 mountd 100005 3 udp 58533 mountd 100005 3 tcp 53234 mountd
# device mountpoint fs-type options dump fsckorder ... servidorAcer.lab.unavarra.es:/home /mnt/samba nfs rw 0 0 ...
mount -t nfs sevidorAcer:/home/linux1 /home/linux1
Device: aquí indicamos el fichero a montar, igual que con el comando mount
pondremos la ip o nombre y después de los dos puntos el directorio a montar.
mountpoint: donde lo montaremos en el cliente.
fs-type: tipo de sistema de ficheros , en este caso nfs.
options: opciones de montaje.
dump: informa a dump si tiene que volcar el fichero.
fsckorder: informa a la aplicación de escaneo fsck si tiene que examinar ese fichero y
en qué orden. Si esta 0 debe escanearlo, el fichero raíz debe ser el 1.
Como en otros ficheros de configuración para más información sobre /etc/fstab teclear
en la terminal man 5 /etc/fstab.
9. Utilización de NIS y como complementarlo con NFS
9.1. Introducción
NIS es un protocolo que permite centralizar la autentificación de usuarios. Un servidor
se encargara de aceptar los logueos de los usuarios, es decir, un usuario se pondrá en un
ordenador cliente se logueara y este ordenador enviara los datos a un ordenador servidor
para aceptar estos datos de logueo. Mediante este concepto más NFS podremos
autentificar usuarios y crear directorios /homes centralizados en el servidor permitiendo
que un usuario se logue en un ordenador cualquiera de la red local en cualquier
momento. Esto es de gran utilidad sobre todo en sitios que la gente no tiene asignado un
puesto en concreto, así se podrá que un usuario cada día se logue en cualquier
ordenador y acceder a sus datos propios que están en un servidor.
El único inconveniente de este protocolo es que falla en seguridad, habrá que tener bien
configurado algunos ficheros, pese a ello seguirá teniendo agujeros de seguridad, para
ello podemos usar NIS + Kerberos ó implementar OpenLDAP que ya tiene servicios de
autentificación segura. Si la red es pequeña no deberemos preocuparnos tanto de la
seguridad. Al final del capítulo explicaremos como complementar NIS con NFS.
9.2. Prerrequisitos
Haber instalado correctamente NFS y saber usarlo, conocimientos básicos sobre redes,
tener instalada la librería libc6 que viene por defecto en Debian/Lenny.
9.3. Ficheros básicos a tener en cuenta para la configuración
/etc/default/nis
Configuración de los demonios nis.
/etc/hosts.deny /etc/hosts.allow
Establece quien accede al servidor y que es lo que puede usar.
/etc/defaultdomainname
Para establecer el nombre del dominio NIS.
/etc/ypserv.securenets
Establece que clientes acceden el servidor NIS.
/var/yp/Makefile
Fichero que construye los mapas NIS.
/etc/passwd
Fichero donde agregaremos los usuarios en el servidor.
/etc/shadow
Fichero oculto donde se guardan las contraseñas de los usuarios de /etc/passwd.
/etc/nsswitch.conf
Permite configurar en qué orden se accederá a los servicios.
9.4. Pasos para instalar NIS en la parte del servidor.
9.4.1. Instalar NIS y los paquetes necesarios
Para que funcione correctamente como en el caso de NFS tendremos que instalar los
paquetes necesarios para que funciones NIS.
Fig. 9.1. Instalando nis y portmap
9.4.2. Configurar accesos a los servicios
Para evitar que algún usuario mal intencionado esté haciendo un uso indebido (por
ejemplo del protocolo portmap deberemos editar los ficheros hosts.allow y hosts.deny.
El fichero hosts.allow es para indicar qué servicios pueden usar unos determinados
usuarios y hosts.deny es para lo contrario, para denegar el uso de estos servicios.
En hosts.deny no dejamos usar a nadie el servicio portmapper. Portmapper es un
servicio para que un ordenador pueda ejecutar programas remotos de otro ordenador.
Fig. 9.2. Configurando hosts.deny
En hosts.allow activaremos los hosts que queremos que se puedan usar el servicio
portmapper.
Fig. 9.3. Configurando hosts.allow
PORTMAPPER:lab.unavarra.es EXCEPT clienteDell.lab.unavarra.es
PORTMAPPER:ALL
debian:/#apt-get install nis debian:/#apt-get install portmap
Para más información sobre ambos ficheros man 5 hosts.allow o man 5 hosts.deny.
Nota: tendremos que ver que libc (libc es una libreria de programación “C”) tenemos,
ya que si no, no podemos usar el fichero /etc/shadow y dará problemas, con libc6 es
suficiente para poder usar /etc/passwd mediante /etc/shadow, es decir, mediante
encriptación.
Fig. 9.4. Comprobando si tenemos instalado libc6
En la figura 9.4 lo que hace el comando find –iname es buscar nombres de fichero con
la palabra libc6 para así comprobar que esta librería.
9.4.3. Establecer el nombre del dominio NIS
Primero hay que elegir el nombre del dominio NIS, describe el grupo de sistemas que
usaran NIS.
En nuestro caso hemos elegido lab.unavarra.es, que es el mismo que el de DNS, pero no
tiene porque ser el mismo.
Fig. 9.5. Estableciendo nombre de dominio NIS
Esto también se puede hacer configurando el fichero /etc/defaultdomain y poniendo en
nombre del servidor NIS.
9.4.4. Establecer ip del servidor en yp.conf
Configurar fichero yp.conf apuntando al ip del servidor.
Fig. 9.6. Estableciendo la ip del servidor en NIS
Si un host se conecta a un servidor distinto depende en que dominio esté, por ejemplo,
a un portátil deberemos añadir en yp.conf estas dos lineas.
Fig. 9.7. Estableciendo varios servidores en NIS
Depende en que red estemos con el portátil, se conectara a un servidor o a otro.
debian:/# find -iname "libc6" ./usr/share/lintian/overrides/libc6 ./usr/share/doc/libc6
domain [dominio_donde_estamos] server [donde_nos_conectamos] domain [dominio_donde_estamos] server [donde_nos_conectamos]
ypserver 172.18.69.247
debian:/# domainname lab.unavarra.es
9.4.5. Establecer que host trabaja como servidor
Indicaremos si el host es cliente o servidor con el fichero /etc/default/nis.
Fig. 9.8. Estableciendo que el host trabaja como servidor
Si va ser un servidor ponemos el parámetro NISSERVER con el valor master y el
parámetro NISCLIENT con el valor false.
9.4.6. Establecer accesos a ypserv
Si queremos algo de seguridad en /etc/ypserv.securenets definimos los
clientes que van a usar el servicio, con su ip y máscara.
Fig. 9.9. Estableciendo que clientes usaran el servidor
9.4.7. Indicar a ypserv que trabajaremos con /etc/shadow
Para poder usar el fichero /etc/shadow debemos editar el fichero /var/yp/Makefile que es
el que se encarga transformar los ficheros ASCII en mapas NIS, ya que los mapas NIS
están codificados en el formato binario BDM. Hay que decirle que nuestro sistema va
usar el fichero /etc/shadow para las contraseñas.
Fig. 9.10. Indicando a NIS que se usara /etc/shadow
En el fichero /var/yp/Makefile encontraremos el parámetro MERGE_PASSWD y
deberemos ponerlo a true.
También en el fichero /var/yp/Makefile añadimos en el parámetro ALL la palabra
shadow para que también construya los mapas con shadow.
Fig. 9.11. Configurando parámetro ALL para usar /etc/shadow
# # /etc/defaults/nis Configuration settings for the NIS daemons. # # Are we a NIS server and if so what kind (values: false, slave, master)? NISSERVER=master # Are we a NIS client? NISCLIENT=false
ALL = passwd group hosts rpc services netid protocols netgrp shadow
# Should we merge the passwd file with the shadow file ? # MERGE_PASSWD=true|false MERGE_PASSWD=true
# Tendremos que poner ip y mascara 172.18.69.248 255.255.224.0
9.4.8. Creación de mapas NIS
Ahora llega el paso de crear los mapas:
Fig. 9.12. Creación de los mapas NIS
9.4.9. Arrancar demonios
Arrancamos NIS que arrancara los demonios necesarios para el servidor portmap,
ypserv, ypbind, yppasswd, ypxfrd.
Fig. 9.13 Reiniciando demonio NIS
9.4.10. Comprobación correcto funcionamiento del servidor
Verificando ypserv funciona, mediante rpcinfo –u.
Fig. 9.14 Comprobando funcionamiento del servidor NIS
Conclusión:
debian:/etc/init.d# rpcinfo -u localhost ypserv el programa 100004 versión 1 está listo y a la espera el programa 100004 versión 2 está listo y a la espera
debian:/var/yp#/etc/init.d/nis restart
debian:/var/yp# /usr/lib/yp/ypinit -m At this point, we have to construct a list of the hosts which will run NIS servers. debian is in the list of NIS server hosts. Please continue to add the names for the other hosts, one per line. When you are done with the list, type a <control D>. next host to add: debian next host to add: The current list of NIS servers looks like this: debian Is this correct? [y/n: y] y We need a few minutes to build the databases... Building /var/yp/lab.unavarra.es/ypservers... gethostbyname(): Success Running /var/yp/Makefile... make[1]: se ingresa al directorio `/var/yp/lab.unavarra.es' Updating passwd.byname... Updating passwd.byuid... Updating group.byname... Updating group.bygid... Updating hosts.byname... Updating hosts.byaddr... Updating rpc.byname... Updating rpc.bynumber... Updating services.byname... Updating services.byservicename... Updating netid.byname... Updating protocols.bynumber... Updating protocols.byname... Updating netgroup... Updating netgroup.byhost... Updating netgroup.byuser... Updating shadow.byname... Ignored -> merged with passwd make[1]: se sale del directorio `/var/yp/lab.unavarra.es' debian has been set up as a NIS master server. Now you can run ypinit -s debian on all slave server.
NIS es algo inseguro ya que las contraseñas van de cliente a servidor sin encriptar y
podría un host mal intencionado hacerse pasar por un servidor, para ello deberemos
configurar concienzudamente /etc/ypserv.securenets, /etc/hosts.deny y /etc/hosts.allow.
9.5. Parte cliente
9.5.1 Instalar NIS y los paquetes necesarios
Instalamos el paquete nis.
Fig. 9.15 Instalación de NIS en el cliente
9.5.2. Configurar accesos a los servicios
Configuramos nsswitch.conf añadiendo las siguientes 4 líneas.
Fig. 9.16 Configurando nsswitch.conf
9.5.3. Establecer el nombre del dominio NIS
Editamos el fichero /etc/yp.conf como en la parte del servidor
Fig. 9.17. Estableciendo ip del servidor en /etc/yp.conf
En /etc/passwd añadiremos +:::::: en /etc/shadow +:::::::: y finalmente en /etc/group +:::
9.5.4. Arrancar NIS
Fig. 9.18. Reiniciando el demonio de NIS en el cliente
9.6. Complementar NIS con NFS
Como veíamos en el capítulo de NFS que enseñábamos a montar ficheros remotos como
si estuvieran locales. Ahora vamos a usar las características de NFS y NIS juntas. Lo
que hay que hacer para complementar NIS con NFS deberemos exportar la carpeta
/home/misUsuarios/. Después de esto se crearan usuarios con su directorio personal en
/home/misUsuarios/elUsuario así cuando se conecte un usuario tendrá acceso a esta
carpeta como si fuera local, pero en realidad no es así, con la ventaja de que el usuario
podrá conectarse en cualquier ordenador y tener todos sus ficheros personales
accesibles.
debian:/etc# /etc/init.d/nis restart
ypserv [ip_del_servidor]
passwd: compat group: compat shadow: compat netgroup: nis
debian:/etc# apt-get install nis
Al crear los usuarios pondremos el directorio home mediante adduser nombreUsuario –
home /home/misUsuarios/elUsuario
10. Como montar un servidor DHCP
10.1. Introducción
En este capítulo instalaremos y configuraremos un servidor DHCP (Dynamic Host
Configuration Protocol). DHCP es un protocolo para poder configurar una red local
automáticamente. Una vez instalado y configurado el servidor DHCP y el cliente
DHCP, el servidor será capaz de asignar toda la configuración necesaria para que los
hosts de la red puedan conectarse a internet, sin intervención manual del cliente. Esto es
muy útil ya que los clientes no necesitan configurar sus hosts y quita trabajo a los
administradores de la red local. Para el configurar un servidor DHCP he seguido este
manual http://manualesgratuitos.iespana.es/doc/dhcpd.pdf. Para los novatos que no
conocen bien como funciona DHCP recomiendo el siguiente enlace
http://www.estrellateyarde.es/discover/servidor-dhcp-en-linux.
10.2. Prerrequisitos
Instalación estándar Debian/Lenny y conocimientos mínimos sobre direccionamiento ip
y de redes locales.
10.3. Instalación de DHCP parte servidor
10.3.1. Instalación de los paquetes
Instalación del paquete.
Fig. 10.1. Instalando servicio dhcp
Antes de instalar nos advertirá que el servidor dhcp se comportará de modo no
autoritativo, es decir, que si un host está mal configurado no le asignara la ip correcta, si
fuera autoritativo el servidor tratara de reasignar los datos a los clientes mal
configurados.
10.2.2. Activar tarjeta red
Tendremos que decirle que tarjeta de red va utilizar el servidor DHCP, en nuestro caso
eth0, para ello deberemos editar el fichero /etc/dhcp3-server. En este fichero habrá una
línea que pone INTERFACES="" dentro de las dos dobles comillas ponemos interfaz de
la tarjeta de red que en nuestro caso es eth0.
debian:/home/ekaitz# apt-get install dhcp3-server
Fig. 10.2. Estableciendo interfaz mediante el fichero /etc/dhcp3-server
10.3.3. Editando fichero de configuración /etc/dhcp.conf
Ahora es el paso de configurar el servidor, es decir, los datos que va ofrecer el servidor;
desde la puerta de enlace de la red local, servidores DNS, dirección broadcast, mascara
de subred etc. Usaremos todos los datos necesarios para configurar una conexión a
internet explicados en el capitulo uno, pero esta vez el servidor DHCP se encargara de
realizar automáticamente a todos los hosts de de la red local.
Los datos de configuración que utilizado son los de la red local lab.navarra.es
(172.18.64.0).
Fig. 10.3. Configurando servidor DHCP mediante /etc/dhcp.conf
En la figura 10.3 viene explicado para que sirve cada línea.
10.3.4. Arrancando el servidor Ahora tenemos que reiniciar el servidor DHCP.
Fig. 10.4 Reinicio del servidor DHCP
Cuando arranque puede que haya errores, todos estos errores los detectara el sistema
de monitorización y quedaran registrados en el fichero /var/log/syslog.
# On what interfaces should the DHCP server (dhcpd) serve DHCP requests? # Separate multiple interfaces with spaces, e.g. "eth0 eth1". INTERFACES="eth0"
#Servidores DNS que van a usar los clientes option domain-name-servers 172.18.64.1, 172.18.64.1; #Aquí indicamos el tiempo máximo de uso de las direcciones asignadas a los clientes en segundos. default-lease-time 600; max-lease-time 7200; #Ahora empezamos a configurar los datos generales de la subred subnet 172.18.64.0 netmask 255.255.224.0{
#aqui vamos a sinar una ip en concreto para una maquina host clienteDell{ hardware ethernet fixed-address 172.18.69.250; }
#Esta linea es para para indicar la puerta de enlace (gateway) option routers 172.18.64.254 #Y por ultimo indicamos el rango de direcciones usado por la subred range 172.18.69.1 172.18.69.254 }
debian:/home/ekaitz# /etc/init.d/dhcp3-server restart
10.4. Instalación del cliente DHCP
10.4.1. Instalación del paquete
El paquete para que funcione el cliente DHCP es dhcp3-client. Éste viene ya instalado
en la instalación básica de Debian/Lenny sino habría que instalarlo igual que en la parte
del servidor apt-get install dhcp3-client.
10.4.2. Configuración del cliente DHCP
Simplemente habría que editar el fichero /etc/network/interfaces para decirle al host que
use el servicio DCHP y poner la siguiente línea.
Fig. 10.5. Reinicio del servidor DHCP
En el capitulo uno pusimos static en vez de dhcp ya que estábamos interesados en
que la asignación fuera estática en vez de dinámica.
Hay que saber que el cliente no necesita la dirección ip del servidor DHCP, ya que
el cliente enviara un broadcast buscando el servidor DHCP, el mismo servidor DHCP
contestara cuando reciba alguna petición y le dirá que configuración tiene que asignarse.
iface eth0 inet dhcp
11. Capitulo introductorio
Esta sección es una introducción para saber cómo montar una red local físicamente.
Para llegar a esto antes explicaré conceptos de redes de computadores y lo dispositivos
que intervienen en una red local. Va dirigida a gente que tiene muy poca idea de
conceptos de cómo funciona una red local y como se construye físicamente. También
puede servir como guía de referencia para repasar conceptos teóricos ya olvidados.
11.1. Internet
Internet es un conjunto nodos interconectados; ya sean ordenadores, móviles y muchos
posibles dispositivos. Estos nodos para identificarlos unívocamente de los demás tienen
asignado un numero llamado dirección ip. Esta dirección ip se basa en numero de 32
bits, estos están divididos en 4 partes de 8 bits, cada parte tiene 256 combinaciones
posibles, éste tipo de numeración permite albergar 4294967296 dispositivos. Esta
numeración se queda corta, más tarde veremos una solución que se ha hecho para
solucionar momentáneamente este problema.
11.2. Pila OSI (Open Systems Interconnection)
Antes de explicar cosas más específicas y poder entenderlas vamos explicar cómo se
estructura internet. Internet utiliza el sistema OSI, también llamado pila OSI, este
sistema que es una seria de reglas para que múltiples redes sean compatibles provee de
servicios mediante capas. La pila OSI es un concepto abstracto, según como funcione
cada capa existen diferentes pilas. Por ejemplo la pila TCP/IP y la pila Apple-Talk se
estructura según el modelo OSI, es decir, TCP/IP y Apple-Talk son modelos practicos
del modelo abstracto que representa la pila OSI.
Capas del modelo OSI:
Capa física: se encarga de las conexiones físicas, es decir, es el encargado de
simplemente que los datos lleguen desde un dispositivo a otro. No provee ningún
servicio mas.
Capa de enlace de datos: provee de transmisión sin errores, transito fiable a través de
el enlace físico. Interactúa entre la capa física y de red, recibe peticiones de la capa de
red y las lleva a cabo mediante el nivel físico.
Capa de red: provee del servicio para que los datos lleguen de una red a otra, esta tarea
la hacen los routers.
Capa de transporte: se encarga de preparar los datos para recibirlos el emisor o el
receptor final del mensaje, también controla el flujo de datos, es decir, controla que lo
datos se entreguen sin errores. Según que implementación tenga esta capa tendrá un
nivel de fiabilidad y los mensajes tendrán mas probabilidades de llegar al destinatario.
Ésta capa es la más abstracta de entender, explicándolo con una analogía humana sería
como la oficina de correos que hace de intermediario entre nosotros y el destinatario. La
capa de red, enlace y datos sería toda la estructura de correos, la oficina sería la capa de
transporte que es una interfaz entre nosotros y la oficina destino. Crea un canal de
comunicación entre el remitente y el destinatario.
Capa de aplicación: Es el que se encarga de soportar las aplicaciones por internet,
HTTP, FTP, SSH, NFS, etc.
No todos los dispositivos de la red trabajan con todas las capas, por ejemplo en un host
el paquete cuando se envía pasaría por las seis capas, desde la más arriba hasta la física,
pero en un Switch simplemente pasaría por solo la capa de enlace de datos y la capa
física y un router trabajaría con tres, con la de datos, la física mas la de red.
Fig. 11.1. Funcionamiento a través de las capas de un paquete
En internet la implementación mas típica de la pila OSI es la pila TCP/IP.
11.3. Protocolo TCP/IP
11. 3.1 Pila TCP/IP
Es el protocolo más importante para la transmisión por internet, es un estándar de facto
sirve para redes grandes como pequeñas. Se basa en el sistema de pila OSI. Como
veremos las “capas” van añadiendo partes al paquete con más información proveyendo
servicios.
Fig. 11.2. Pila TCP/IP
Capa de transporte: TCP (Transport Control Protocol) es un protocolo orientado a
conexión, es decir, al establecer la conexión se hacen verificaciones de los datos, se
crean credenciales entre emisor y receptor. Esto da mucha fiabilidad, pero los paquetes
son más grandes, generando congestión.
Para entenderlo mejor se podría decir que se crea un canal de comunicación entre las
aplicaciones de dos hosts, abstrayéndose de cómo van los paquetes en la red. Cuando un
paquete llega al ordenador pasa a la capa de transporte, el ordenador sabe a qué
aplicación tiene que ir porque los paquetes tiene un numero de puerto que designa a que
aplicación va destinado ese paquete.
Cabecera IP …
Puerto origen Puerto destino
Numero de secuencia
Numero ACK
HL Nada Flags Ventana recepción
Opciones
Datos aplicación Fig. 11.3. Paquete TCP
Capa de red: IP (Internet Protocol) Este protocolo se encarga de que un paquete llegue
de una subred a otra. Para saber a dónde tiene que ir, se usan las direcciones IP y las
mascaras, el router mandará el paquete a la capa de enlace diciéndole a donde tiene que
enviarlo. Las tabla de rutas son “señales” para indicar donde tiene que ir un paquete
según su dirección IP y mascara. Estas tablas se encuentran en los router o hosts si estos
actuando como router teniendo más de una tarjeta de red.
V LC ToS Longitud
Id paquete F Offset
TTL Protocolo Checksum
Dirección IP origen
Dirección IP destino
Opciones
Datos (Aquí esta encapsulado la trama TCP)
Fig. 11.4. Paquete IP
Capa de enlace: Esta parte se encarga de enviar el paquete de un punto a otro dentro
de una subred. El protocolo que usa para poder enviarlo es ARP (Address Resolution
Protocol) para ello lo que hace es recibir un paquete del nivel de red que le dice a donde
lo tiene que enviar mediante la dirección ip, después de esto lo que hace es enviar un
paquete a todos los hosts (este proceso se le llama broadcast) de la red, diciendo que
quiere ir a la IP “a.b.c.d”, el host que tenga IP “a.b.c.d” contestara con su dirección
ARP “AA:BB:CC:DD:EE:FF” ( que es la dirección física que esta implementada a
nivel hardware, de 42 bits de capacidad). Cuando ya tenga la dirección MAC lo podrá
enviar.
Cuando la capa de enlace ya ha enviado el paquete a el destino el paquete subirá la capa
de red y la capa de red decidirá si subirlo a un nivel superior si es el host destino del
paquete o volver a reenviarlo según su tabla de rutas.
Preámbulo Origen Destino L LLC/SNAP Datos CRC Fig. 11.5 .Paquete Ethernet
11. 3.2. Direccionamiento ip
Como habíamos explicado en el apartado Internet una dirección ip esta estructurada en
4 bloques de 8 bits cada uno, albergando 256 posibles combinaciones. Es decir podemos
albergar 256*256*256*256 direcciones.
Hay 3 clases de direcciones ip:
Clase A: su rango está comprendido entre 1.0.0.0 y 121.0.0.0 es decir soporta 16777214
direcciones ip.
Clase B su rango está comprendido entre 128.0.0.0 - 191.255.0.0 es decir soporta 65534
direcciones ip.
Clase C: su rango está comprendido entre 128.0.0.0 - 191.255.0.0 es decir soporta
65534 direcciones ip.
Estas clases las gestiona ICANN (Internet Corporation for Assigned Names and
Numbers) pero apartir de 1993 viendo la excasez de direcciones ip se implemento el
sistema CIDR (Class-less Interdomain Routing), este se adapta mas las necesidades de
cada empresa ya que con el anterior sistema podían quedar ips sobrantes, ya que podía
suceder que le asignáramos a una red local con poca necesidad de ips un rango muy
grande de direcciones ips, por ejemplo, la clase A.
Funcionamiento de CIDR y mascaras de red:
Asigna bloques de direcciones mediante una dirección ip y un mascara de bits
(a.b.c.d/bits). Los primeros cuatro números decimales se interpretan como una dirección
IP y el número tras la barra es la longitud del prefijo contando desde la izquierda,
representando el número de bits comunes a todas las direcciones incluidas en el bloque
CIDR. Este número también puede referirse como la dirección ip de la red o subred.
Ejemplos:
172.18.64.0/19 esta es la dirección de la red donde se harán las practicas de los
capítulos de la guía.
Direccion ip red:10101100. 00010010.01000000.00000000
Direccion mascara:11111111.11111111.11100000.00000000
Como podemos observar tenemos una máscara que delimita hasta donde llega nuestra
dirección ip de la red, ésto delimita el rango de direcciones que puede ser usado en esta
red. En este caso la mascara de red son 19 bits, luego como una ip tiene 32 bits tenemos
32 bits – 19 bits nos quedan 13 bits para el direccionamiento de la red, es decir, 213
direcciones ip.
Hay que tener una cosa en consideración siempre hay dos direcciones reservadas,
cuando están todos los bits 0 del sufijo (sufijo=32bits – bits de mascara), esta dirección
se reserva para la dirección ip de la red y cuando están todos los bits a 1 del sufijo, es la
dirección broadcast que se utiliza para enviar información a todos los hosts de la red
(broadcast).
Dentro de esta red podremos crear nuevas subredes creando una nueva dirección subred
dentro del rango 172.188.64.0/19 por ejemplo:
Subred Becarios: 10101100.00010010.01010000.00000000, es decir, dirección ip de la
subred 172.18.80.0 con máscara de 20 bits. Direccion broadcast 172.18.95.255 que en
binario es 10101100.00010010.01011111.11111111
Subred Profesores: 10101100.00010010.01010000.00010000 es decir dirección ip de
la subred 172.18.64.16 con mascara de 28 bits. Podremos generar 16 direcciones ip. La
dirección broadcast seria 172.18.64.31 que en binario es
10101100.00010010.01010000.00011111.
Podremos generar tantas subredes de una red mientras no solapemos direcciones de una
subred con otra. Cada host de la subred habrá que configúralo con su dirección ip y
mascara de red que tiene. Una ventaja de esta nomenclatura y organización es que con
una ip y una mascara mediante un AND lógico obtenemos la red a la cual pertenece
una ip.
NAT
Este sistema es algo diferente, las ips de la red local son privadas, esto significa que
estás ips no son accesibles directamente desde el exterior , el router hace una conversión
de estas ips privadas por la ip asignada al router. Estas ips privadas trabajan en un rango
establecido por convenio de 192.168.0.0. a 192.168.255.255. Esto se realizo por la falta
de ips y el sistema se conoce por las iniciales NAT (Network Address Translation). Se
usa generalmente las redes de ámbito domestico.
11.4. Creación física de una red local sobre Ethernet
Vamos a explicar cómo se construye una red local desde la perspectiva de la tecnología
Ethernet. Se ha hecho esta elección porque es la tecnología más comúnmente utilizada
en redes locales, es un estándar de facto. Existen otras como TokenRing, pero están
desfasadas y el amplio uso de Ethernet las han relegado.
11.4.1 Elementos físicos de una red local sobre Ethernet
Dispositivos de conexión de segmentos en una red local Cuando decimos “los dispositivos de conexión de segmentos en una red local” nos
referimos a todos los dispositivos que conectan ordenadores entre sí, o que conectan
redes locales entre sí, formando una red local de mayores dimensiones.
Hub (concentrador): repite los datos enviados en cada uno de sus puertos, no discrimina
según a donde vaya el paquete. El problema es que satura la red porque envía la
información por todos sus puertos, produciendo colisiones, también es inseguro ya que
todos los ordenadores de la red ven la información a pesar de que los paquetes no vayan
a su ordenador. Envía los mensajes a la velocidad del dispositivo más lento de nuestra
red. Las ventajas son que es barato por su sencillez y no necesita alimentación propia.
Trabaja sobre el nivel físico (1 OSI) y no tienen direcciones MAC.
Fig. 11.6. Foto hub
Switch (conmutador): se podría decir que un conmutador es un hub inteligente. Tiene la
capacidad de almacenar las direcciones MAC de los hosts conectados al conmutador,
esto arregla el inconviente de los hubs que envían por todos los puertos los datos. Aquí
el conmutador envía los datos a un puerto concreto.
Fig. 11.7. Foto switch
Gateway (pasarela): suele considerarse aquel dispositivo que hace de frontera entre
dos subredes, puede ser un router o un ordenador con dos tarjetas de red, una tarjeta de
red estaría en el lado de una red y la otra tarjeta daría a la otra red.
Router (encaminador o enrutador): se encarga de encaminar, es decir, de redirigir los
paquetes que recibe según la ip y mascara que tienen asignada. Une subredes. Para ello
tienen una tabla de rutas con tres campos dirección_red, mascara y siguiente salto. Estas
tablas las podemos configurar nosotros o existen protocolos como RIP (Routing
Information Protocol) que lo hacen automáticamente. En la parte final explico más
detenidamente las tablas de rutas.
Fig. 11.8. Foto router
Hosts Host: se suele referir una maquina conectada a una red local. Este host puede ser un
servidor, un dispositivo de almacenamiento, un fax, una impresora, etc. Se suelen
conectar a los hubs routers o switchs. Necesita que tenga una tarjeta Ethernet para que
se pueda conectar a la red local
Cableado Ethernet Los cables se encargan de transmitir la información de host a host según su tecnología
darán mayor fiabilidad, menor o mayor. Los siguientes tipos de cableado son los más
comunes en una red local Ethernet, hay algunos más, pero no los he puesto por su
escaso uso o que ya no se usan por ser muy antiguos como 10base5.
10Base-2: Llamado también Thinnet o Cheapernet (802.3a) El cable es un Coaxial fino
y flexible (negro), máxima distancia 185 metros entre repetidores (Hub, Switch…).
Numero máximo de conexiones en el dominio de colision 1024. Su topología es en bus.
El conector al host se llama BNC y tiene forma de T. Velocidad 10 Mbits/s
Fig. 11.9. Conector BNC
10Base-T: Estándar IEEE 802.3i, funciona para topologías en estrella elemento central
un Hub, Switch. Máxima distancia en un segmento 100m. Máxima distancia en el
mismo dominio de colisión 2500 metros, pero con el backbone coaxial. Número
máximo de conexiones en el dominio de colisión 1024.Velocidad 10 Mbits/s.
Normalmente el terminal finaliza en un conector llamado RJ-45. Existen dos
disposiciones del cable RJ45, cruzado y recto.
Estas son las combinaciones que debes usar con el cable cruzado los que no están en la
tabla son rectos (derechos).
pc-pc Cruzado
Router-router Cruzado
Router-pc Cruzado
switch-switch Cruzado
Hub-hub Cruzado Fig. 11.10. Conexiones rj45 entre dispositivos
Hoy en día es indistinto el cable que uses en la mayoría de dispositivos.
10Base-FL: Funciona mediante fibra óptica (Fiber Optic Link), el estándar es el IEEE
802.3j, no le afectan las ondas electromagnéticas capacidad, de una distancia de 2km.
Se podría utilizar para parte troncal (backbone) y el resto de la red con 10Base-T sería
suficiente.
100Base-TX: Estándar IEEE803.3u, utiliza cables de par trenzado de categoría 5,
máxima distancia 100m con conector RJ-45. Muy parecido a 10BaseT pero funciona a
100 Mbits/s pero 10BaseT funciona a 10 bits/s. Tipología física en estrella.
100Base-FX: Fibra multimodo en full-duplex, permite unos 400 metros de distancia y
en half-duplex unos 2km y en monomodo 10km.
11.4.2 Topologías de una red local
Para el diseño de las redes locales se utilizan dos tipos de gráficos: los que describen la
topología física y lo que describen la topología lógica. La topología física describe el
cableado y como se interconexiónan estos cables entre ellos y la topología lógica
describe como los hosts emplean el medio, es decir, cómo se comportan los datos al ser
enviados por el medio de transmisión.
Tipos de topologías:
Bus: único canal de comunicaciones, la ruptura del cable hace que los hosts queden
incomunicados. Los extremos están conectados a una resistencia llamada terminador.
Fig. 11.11. Topología en bus
Estrella: los hosts están conectados a un punto central, es el mas utilizado en las redes
locales. El punto central seria el Switch, Hub o enrutador, que se encarga de reenviar los
paquetes. El problema es que el nodo central si se estropea cae toda la red.
Fig. 11.12. Topología en estrella
Estrella extendida: seria como tipologías estrella conectadas con conmutadores a las
demás tipologías estrella. Es la que se utiliza en la Universidad Pública de Navarra.
Fig. 11.13. Topología en estrella extendida
Anillo: este sistema seria como una carrera de relevos cada host reenvía su paquete si el
paquete no es para si mismo. Puede ser de un sentido o de doble sentido.
Fig. 11.14. Topología en anillo
Malla completa (full mesh): todos los nodos tienen conexión con todos los demás
directamente (punto a punto).
Fig. 11.15. Topología en malla completa
11.4.3. Restricciones de interconexión en una red local sobre Ethernet
En esta parte explicaré como se conectan los dispositivos de la red local entre sí. Que
restricciones hay, que se puede hacer y que no se puede hacer a nivel físico.
Uso de repetidores en la red local
Existen una serie de restricciones en el uso de repetidores (hubs) la conexión entre dos
redes no debe superar los 1000m. La conexión entre dos hubs mediante un cable debe
hacerse mediante uno cruzado, aunque hay hubs que tienen un puerto uplink que tiene
los pares como un pc y se puede usar un cable recto para conectar los dos hubs. Cuando
se conectan dos hubs se crea el mismo dominio de colisión, es decir, cuando un paquete
llegue al repetidor lo distribuye por todos los puertos.
En limitaciones del número de repetidores entre dos hosts se utiliza una regla de
memorización 5-4-3-2-1. Esta regla se refiere a: “En un camino entre dos hosts el
máximo son 5 segmentos en serie, con hasta 4 repetidores y no mas de 3 segmentos
compartidos, por ejemplo coaxial, habrá 2 enlaces dedicados y 1 solo dominio de
colisión.
Uso de puentes (conmutadores, switchs) en la red local
Trabajan a nivel de enlace, es decir, los puentes unirán elementos de la red a nivel de
enlace, así cada parte que conecta el conmutador tendrá un dominio de colisión. No
tiene límites de puentes entre dos hosts como ocurría con los repetidores.
11.5. Ejemplo de creación de una red local Ethernet
Después de la teoría introducida vamos a ver cómo montar una red local Ethernet y
configurarla. Esta configuración simplemente se basa en que cada host tenga
comunicación entre dentro de la red local y a Internet. Sobre esto se puede aplicar los
distintos capítulos de la guía para darle más servicios a la red local como ficheros
distribuidos mediante NFS, administración y centralización de usuarios con NIS,
direccionamiento dinámico mediante DHCP, etc.
11.5.1. Crear topología
Esta parte se basa en crear un diseño de la red, para ello tendremos que pensar en las
necesidades de nuestra red, cuantos hosts necesito, trafico que va soportar la red,
fiabilidad de la red, es decir, si queremos que soporte caídas de switchs, routers o hubs.
Para una pequeña introducción básica hemos ideado una red local pequeña, pero con la
mayoría de elementos físicos que pueden interactuar en una red y nos hemos decido por
una topología en estrella.
Internet
Host1 Host2Host3 Host4
Host5
Hub Switch
Router
Topología: en estrella extendida.
Dispositivos: 5 hosts,1 router, 1hub.
Cableado:10Base-T
Fig. 11.16. Topología de la red local
11.5.2. Asignar ips y mascaras
Como esta parte de la guía es de introducción a las redes locales he decidido que el
direccionamiento va ser el típico que hay en una red local domestica ADSL mediante
NAT.
Internet
Host1:192.168.1.2 Host2: 192.168.1.3
Host3: 192.168.1.130Host4:192.168.1.131
Host5:192.168.1.132
Hub Switch
IP if0(router):
192.168.1.129
Topología: en estrella extendida.
Dispositivos: 5 hosts,1 router, 1hub,
1 switch.
Cableado:10Base-T
Red: 192.168.1.0/24
IP if1(router):
192.168.1.1
Subred:192.168.1.128/25
Subred:192.168.1.0/25
Fig. 11.17. Topología de la red local con ips asignadas
En la figura 11.16 anterior hemos decido que ips pondremos a cada ordenador pero esta
parte es simplemente un diseño en papel (diseño anterior a la implementación), en la
siguiente sección explicare los pasos para llevarlo a cabo realmente.
11.5.3. Configurar hosts y router
Una vez de haber decidido la topología y haber elegido que ips queremos asignar a los
hosts llevaremos a la práctica.
Para la configuración de los hosts tenemos dos opciones:
1. Crear dos servidores DHCP por cada subred (como explico en el capítulo 10) o
también podríamos crear un solo servidor DHCP con varias tarjetas de red y
cada tarjeta de red da a parar a una subred, existen más tipos de
implementaciones como DHCP relay. Lo normal es que haya un servidor por
subred. Después de elegir como montar los servidores DHCP deberemos
primero configurar los hosts o el host que va tener el servidor DHCP como
hemos visto en el capítulo 1 y después configurar el servicio DHCP. Luego
deberemos configurar el router (ver siguiente apartado).
2. Podemos configurar host a host como hemos visto en la capitulo 1, pero este
mecanismo puede ser muy tedioso si la red va ser de grandes dimensiones.
Configuración del router:
Para configurar el router hay que tener claro nuestras subredes, en nuestro caso tenemos
dos subredes más la salida a Internet, es decir, tendremos tres rutas. La configuración en
cada router difiere mucho así que sólo explicare el diseño lógico de las tablas de rutas.
Primera ruta: los paquetes que vayan con la dirección de red 192.168.1.0 y mascara de
25 bits (en notación ip 255.255.255.128) tendrán que ir a la interfaz if1. La dirección de
red la obtiene el router de un AND lógico entre la dirección ip destino del paquete y la
máscara que ponemos en el router en este caso.
Segunda ruta: los paquetes que vayan con la dirección de red 192.168.1.128 y mascara
de 25 bits tendrán que e ir a la interfaz if2.
Tercera ruta: esta ruta siempre tiene que estar, se llama la ruta por defecto, que es
cuando el paquete no encaja con ninguna de las rutas anteriores y será cuando el
paquete tiene que salir if3. Para indicar la ruta por defecto se indica en dirección de red
0.0.0.0. y en mascara toda completa 255.255.255.255.
Finalmente la tabla de rutas quedara así:
Dirección de red Mascara Salto
Ruta1 192.168.1.0 255.255.255.128 If1
Ruta2 192.168.1.128 255.255.255.128 If2
Ruta por defecto 0.0.0.0. 255.255.255.255 If3
Fig. 11.18. Tabla de rutas
Glosario
Backbone: cableado troncal en una red local, es decir, sería el cable que conecta las
subredes normalmente con un cable de alta velocidad como la fibra óptica.
Bash: es un shell de Linux es un acrónimo de bourne-again Shell.
Bit: es el digito en el sistema de numeración binario. Para más información sobre el
sistema de numeración binaria http://es.wikipedia.org/wiki/Sistema_de_numeración
Broadcast: trasmisión de un paquete que será recibido por todos los hosts de la subred.
Byte: Secuencia de 8 bits.
Cable coaxial: cable para transmitir señales eléctricas de alta frecuencia.
Cilindro: conjunto de varias pistas; son todas las circunferencias que están alineadas
verticalmente (una de cada cara).
Comando: orden o instrucción que el usuario manda a través de una Shell a un sistema
operativo.
Copia de seguridad (backup): proceso de duplicado de información de un dispositivo a
otro para su posterior reutilización por si el dispositivo origen fallara.
CPU: es el dispositivo del ordenador que se encarga de procesar las instrucciones y
hacer cálculos de los programas albergados en la computadora.
Debian/Lenny: es una distribución libre del sistema operativo GNU/Linux.
Demonio: es un proceso que se ejecuta en segundo plano y el usuario no los puede
controlar, se ejecutan permanentemente normalmente son servicios que provee el
sistema operativo. No se pueden matar.
DHCP Relay: método para poder acceder a servidores DHCP que estén fuera de la
subred de quien realiza la petición.
DHCP: protocolo que permite obtener parámetros de configuración automáticamente.
Direccionamiento dinamico: significa que la ip que tenemos asignada en un host no es
permante y varia con el tiempo.
Direccionamiento estatico: significa que la ip que tenemos asignada en un host será
permante a no ser que la cambiemos expresamente.
Directorio raíz: es el primer directorio en la jerarquía de un sistema operativo, esta
jeraquia se estructura en árbol. En Linux el directorio raíz se denota mediante el carácter
“/”.
Directorio: un directorio en un sistema operativo agrupo a un conjunto de fichero y
directorios.
Disco de cinta: discos de almacenamiento de gran capacidad pero de un lento acceso ya
que su velocidad es lenta y su acceso es de manera secuencial.
Distribución: es las variantes que se realizan del sistema operativo GNU/Linux. Las mas
famosas son Debian, Ubuntu, fedora, red hat, SuseLinux, Mandriva.
Dominio: es el nombre que designa a un subred en internet, ejemplo, lab.unavarra.es.
También puede ser la parte principal de la dirección de una página web, ejemplo
debían.org.
Ext3: versión tercera del sistema de ficheros usado por el sistema operativo
GNU/Linux.
Fibra Multimodo: Una fibra multimodo es aquella en la que los haces de luz pueden
circular por más de un modo o camino. Esto supone que no llegan todos a la vez. Una
fibra multimodo puede tener más de mil modos de propagación de luz. Las fibras
multimodo se usan comúnmente en aplicaciones de corta distancia, menores a 1 km; es
simple de diseñar y económico.
Fibra óptica: es un sistema de información que usa la luz.
Fichero: agrupación de información que se usa de forma unitaria.
Firewall (cortafuegos): es un elemento hardware o software para filtrar paquetes según
como sea el paquete.
FTP: protocolo para transferir fichero por internet.
Full-duplex: se refiere cuando se puede enviar la información por ambos sentidos en un
medio físico.
Gateway: es un dispositivo físico que hace de frontera entre dos subredes.
GNU/Linux: es la forma de designar al sistema operativo que usa el núcleo Linux y las
herramientas software GNU.
Half-duplex: sistema físico que solo soporta el envoi de información en un solo sentido.
Host: una máquina conectada a una red de ordenadores.
ICMP: es un sub protocolo de control y notificación de errores.
IDS: es un sistema diseñado para detector intrusos en nuestra red local. Detecta
comportamientos extraños en el tráfico.
Imagen iso: es un sistema para guardar en discos duros una copia de un cd exactamente,
y luego realizar el proceso inverso.
Interfaz: se refiere la parte física por donde se envía la información del host a la red.
Iptables: sistema de configuración de cortafuegos de GNU/Linux.
Kernel (nucleo): es la parte principal del sistema operativo, es el que provee al software
el acceso al hardware. Es el que hace de facilitador del acceso al hardware a través de
llamadas.
LAN (Local Area Network): interconexión de varios hosts para trasmitir información.
Su uso suele ser de una extensión de unos metros a un kilometro. A partir de estas
distancias se le suele llamar WAN (Wide Area Network).
Log: es un registro de eventos en un sistema operativo.
Loguearse: acceso a una cuenta mediante nombre de usuario de la cuenta y su
correspondiente contraseña.
Nombre canónico (CNAME): es el nombre registrado en la base de datos dns que se
refiere al verdadero nombre asociado a un alias este alias está asociado a una ip.
Particion: son las divisiones lógicas que se hacen en un disco duro.
Password: contraseña de acceso a un sistema.
Pista: es una circuferencia dentro de una cara de un disco duro, en una pista habrá
sectores de pista en estas habrá bloques y en estas ultimas bytes.
Portmappper: servicio de Linux que permite ejecuta código en una maquina remota
Proceso: programa en ejecución en el sistema.
Puerto: es un numero que viene en un paquete que indica a que protocolo o aplicación
está asociado ese paquete.
Repositorio: es un sitio centralizado donde se almacena datos e información.
RJ-45: La RJ-45 es una interfaz fisica comúnmente usada para conectar redes locales
(categorías 4, 5, 5e y 6).
Script para Bash Shell: Es un script que se a programado con los sintaxis adecuada para
que se puede ejectuar en un Bash Shell.
Script: conjunto de instrucciones para su ejecución almacenados en un fichero de texto.
Shell: es un intérprete de comandos.
Ssh: del acrónimo Secure Shell, protocolo para acceder a Shells en ordenadores remotos
de forma segura.
Swap: también llamada memoria de intercambio se crea para usarlo cuando la memoria
RAM esta llena.
Tarjeta de red: dispositivo físico para poder acceder a una red de ordenadores.
Tiempo de CPU: tiempo que gasta la CPU en ejectuar un proceso.
BIBLIOGRAFIA
Generales:
SEGURIDAD EN UNIX Y REDES Versión 2.1 de Antonio Villalón Huerta
http://es.tldp.org/Manuales-LuCAS/doc-unixsec/unixsec.pdf
Guía de Administración de Redes Segunda Edición, de Olaf Kirch. Traducción de la
versión 2.0 del libro Linux Network Administration Guide.
http://es.tldp.org/Manuales-LuCAS/GARL2/garl-2.0.pdf
Capitulo 1:
Capítulo 9 y 6 de la Guía de Administración de Redes Segunda Edición, de Olaf
Kirch.
Manual sobre el comando nmap.
http://nmap.org/man/es/
Capitulo 2:
Capitulo 9 de la Guía de Administración de Redes Segunda Edición, de Olaf Kirch.
Tutorial iptables
http://es.tldp.org/Manuales-LuCAS/doc-iptables-firewall/doc-iptables-firewall.pdf Capitulo 3:
Capitulo 6 de SEGURIDAD EN UNIX Y REDES Versión 2.1 de Antonio Villalón
Huerta
Capitulo 4:
Capitulo 7 de SEGURIDAD EN UNIX Y REDES Versión 2.1 de Antonio Villalón
Huerta
Manual sobre copias de seguridad de RedIRIS.
http://www.rediris.es/cert/doc/unixsec/node13.html#SECTION05431000000000000
000
Capitulo 5:
LINUX: ADMINISTRACION DEL SISTEMA Y LA RED
de ALEGRIA LOINAZ, IÑAKI y CORTIÑAS RODRIGUEZ, ROBERTO y
EZEIZA RAMOS, AITZOL
Capitulo 6:
Tutorial para novatos sobre scripts para Bash (Ingles)
http://tldp.org/LDP/Bash-Beginners-Guide/Bash-Beginners-Guide.pdf
Guia avanzada sobre scripts para Bash (Ingles)
http://tldp.org/LDP/abs/abs-guide.pdf
Tutorial de expresiones regulares.
http://www.bulma.net/body.phtml?nIdNoticia=770
Tutorial de introducción sobre AWK.
http://club.telepolis.com/jagar1/Unix/Awk.htm
Tutorial sobre AptonCD.
http://tuxpepino.wordpress.com/2007/10/02/%C2%BFconocias-aptoncd/
Video-tutorial sobre clusterSSH.
http://www.screencasts.es/2008/07/11/clusterssh-administracion-de-una-sola-
tacada/
Capitulo 7:
Guia avanzada sobre SAMBA.
http://es.tldp.org/Manuales-LuCAS/USANDO-SAMBA/usando-samba.pdf
Guia sobre samba.
http://dns.bdat.net/documentos/samba/
Manual del fichero smb.conf de SAMBA.
http://dns.bdat.net/documentos/samba/smb.conf/
Tutorial introductorio sobre SAMBA.
http://www.esdebian.org/wiki/introduccion-samba
Capitulo 8:
NFS HOWTO (Ingles).
http://nfs.sourceforge.net/nfs-howto/
Tutorial NFS
http://taquiones.net/sysadmin/nis-nfs.html#index2h1
Capitulo 9:
Debian NIS HOWTO (Ingles)
http://lyre.mit.edu/~powell/debian-howto/nis.html
Tutorial NIS+NFS
http://taquiones.net/sysadmin/nis-nfs.html
Capitulo 10:
Tutorial sobre configuración de servidor DHCP en Debian.
http://manualesgratuitos.iespana.es/doc/dhcpd.pdf
Funcionamiento de DHCP en Debian.
http://www.estrellateyarde.es/discover/servidor-dhcp-en-linux
Capitulo 11:
Redes de Comuptadores: Un enfoque Descendente Basado en Internet. James F.
Kurose, Keith W.Ross
Transparencias de redes computadores asignatura de 2º de I.T.I.G. Universidad
Publica de Navarra.
https://www.tlm.unavarra.es/~daniel/docencia/lpr/lpr08_09/slides/