Plataformas Tecnológicas y Gestión _ imprimible 1 de 115
Transcripción
Plataformas Tecnológicas y Gestión _ imprimible 1 de 115
Plataformas Tecnológicas y Gestión _ imprimible 1 de 115 PLATAFORMAS TECNOLÓGICAS Y GESTIÓN OBJETIVO GENERAL Una vez conocido el Génesis del Software Libre y entendido que Linux es parte fundamental de este paradigma debido a que sobre él se instala ese software aclarando que mucho de él funciona también en Windows los interesados en este paradigma deben aprender las bases técnicas sobre el funcionamiento de Linux orientado a tener más criterios en el caso de una posible adopción como plataforma que afectará no solo a las Instituciones sino a sus ciudadanos debido a la influencia que sobre ellos tiene este tipo de soluciones. OBJETIVOS ESPECÍFICOS Al finalizar este módulo los funcionarios estarán en capacidad de: • Instalar Linux comprendiendo las funcionalidades de las tecnologías instaladas • Entender la arquitectura del sistema Operacional • Tener claridad sobre el sistema de procesos • Entender y manejar los Sistemas de archivos • Entender el concepto del shell o manejador de comandos • Conocer el proceso de arranque del sistema para una total claridad de cómo el sistema se inicia para controlar el hardware Plataformas Tecnológicas y Gestión _ imprimible 1. Preparación 1.1 Escoger una Distribución 1.2 Inventario de hardware 2. Instalación y configuración 2.1 Consideraciones iniciales e inventario de hardware 2.2 Selección del Idioma de instalación 2.3 Teclados 2.4 Mouse 2.5 Particiones 2.6 Cargador del sistema 2.7 Servicio de red 2.8 Firewall 2.9 Soporte de Múltiples idiomas 2.10 Zona geográfica 2.11 Creación de cuentas 2.12 Autenticación 2.13 Selección de paquetes 2.14 Proceso de instalación 2.15 Tarjeta de sonido 2.16 Creación del disco de arranque 2.17 Post instalación 2.18 Ejercicios 2.19 Autoevaluación 3 Uso del Sistema Operacional 3.1. Arquitectura del sistema operativo Linux 3.1.1 Manejo de tareas 3.1.1.1 Administración de recursos 3.1.1.2 Manejo de la cpu 3.1.1.3 'Scheduling' de tareas 3.1.1.4 Manejo de interrupciones 3.1.2 Interprocesos 3.1.2.1 Mensajes entre tareas 3.1.2.2 Reentrancia 3.1.2.3 Interrupciones 3.1.2.4 Administración de memoria 3.1.3 Interfaces de hardware 3.1.3.1 CPU 3.1.3.2 Buses 3.1.3.3 Entrada y salida e paralelo 3.1.3.4 Entrada y salida en serie 3.1.3.5 Dispositivos orientados a bloques 3.1.3.6 El teclado 3.1.3.7 Video 3.1.3.8 Memoria de acceso directo – DMA 3.1.4 Ejercicios 2 de 115 Plataformas Tecnológicas y Gestión _ imprimible 3 de 115 3.1.5 Autoevaluación 3.2 Sistema de procesos 3.2.1 Procesos interactivos 3.2.2 Demonios 3.2.3 Atributos de un proceso 3.2.4 Ciclo de vida de un procesos 3.2.5 Ejercicios 3.2.6 Autoevaluación 3.3 Sistema de archivos 3.3.1 Introducción 3.3.2 Cuentas de usuarios 3.3.2.1 Definiciones 3.3.2.2 Creación de un usuario 3.3.3 Interprete de comandos 3.3.4 Archivos y directorios 3.3.4.1 Los directorios de Linux 3.3.5 Más comandos 3.3.6 Navegar por los directorios 3.3.7 Mirar el contenido de los directorios 3.3.8 Propiedad de los archivos 3.3.9 Protección de los archivos 3.3.10 Especificaciones numéricas de los modos de seguridad 3.3.11 Modo estándar de seguridad 3.3.12 Tipos de archivos 3.3.13 Encadenamientos duros y suaves 3.3.13.1 Encadenamientos duros 3.3.13.2 Encadenamientos suaves 3.3.14 Dispositivos 3.3.15 Ejercicios 3.3.16 Autoevaluación 3.4. Entorno del shell 3.5 El proceso de arranque 3.5.1 El programa /sbin/init 3.5.2 Tarea padre. 3.5.3 Proceso de inicio. 3.5.4 Niveles de ejecución 3.5.5 Directorio etc/rc.d/init.d/ y /etc/rc.d 3.5.6 Control de los servicios activos. 3.5.7 Cargadores del sistema operacional Linux o 'Boot Loaders' 3.5.7.1 GRUB 3.5.7.1.1 Algunas características importantes de GRUB. 3.5.7.1.2 Instalación de Grub • 3.5.7.1.3 Terminología de Grub 3.5.7.1.4 El Sistema de archivo raíz de GRUB: • 3.5.7.1.5 Interfaces de GRUB. 3.5.7.1.6 Comandos de GRUB. 3.5.7.1.7 Archivo de configuración de Grub Plataformas Tecnológicas y Gestión _ imprimible 4 de 115 3.5.7.2 LILO. 3.5.7.3 Ejercicios 3.5.7.4 Autoevaluación 3.5.8 Cambio de nivel de ejecución en el momento de cargue. 3.5.9 Archivos especiales. 3.5.9.1 Directorio sysconfig. 3.5.9.2 El sistema de archivos proc. 3.5.9.3 Directorios en /proc/ Plataformas Tecnológicas y Gestión _ imprimible 5 de 115 Plataformas Tecnológicas de Gestión Introducción En este curso se define una plataforma como el software que se instala en el servidor y que resuelve un problema específico dándoles un servicio a los usuarios de Linux. El mecanismo que vamos a utilizar en esta parte del curso es dar a conocer las bases de funcionamiento de cada una de las plataformas para entender de cada una de ellas la manera de arrancar el servicio y de apagarlo, la forma de funcionamiento, el servicio que presta, la puesta en marcha básica y la manera de configurarla. Para profundizar en cada una de ellas se requeriría un curso completo y por lo tanto el alcance de este capítulo es el de marcar el camino de inicio para que la especialización venga después. En la configuración de algunas de las plataformas nos vamos a ayudar de una herramienta muy conocida para el soporte remoto orientada a la web llamada Webmin http://www.webmin.com/ la cual se ha convertido en un estándar. Webmin es totalmente gráfico pero de nada sirve si quien va a manejar estas plataformas no conoce los principios de cada una de ellas por lo que es muy importante estudiar con detalle las exposiciones que haremos en el curso. Trataremos también de mantenernos al lado de los archivos de configuración que son aquellos que las plataformas usan para su funcionamiento ya que un administrador de Linux puede dejar de usar webmin y manejar líneas de comando para manipular esos archivos de configuración. De esta manera nos aseguramos que el aprendizaje vaya más a fondo y no simplemente hacer click’s sin saber qué sucede por debajo. Lo anterior nos obliga entonces a comenzar este capítulo por instalar Webmin en el computador de trabajo para poder hacer bien el curso y lograr un verdadero aprendizaje. 1.- Ayudas y conceptos Para obtener la última versión de Webmin debe ir a http://www.webmin.com y seleccionar Download. Aparecerá una pantalla con los servidores espejo de donde debe escoger cualquiera de ellos. Observará que puede bajarlo en dos formatos: tar.gz o rpm. Aquí, usted, debe aplicar los conocimientos adquiridos en el capítulo de Uso de Linux en el documento shell.pdf en el cual se explicó la manera de instalar el software. Un buen ejercicio es hacerlo de ambas maneras cuidando de borrar la primera y de esta manera asegura que sus conocimientos para instalar software en Linux estén en forma. Otra cosa es que en el sitio de Webmin encontrará la última versión. Sin embargo recomendamos ser cuidadosos de trabajar con una versión estable Plataformas Tecnológicas y Gestión _ imprimible 6 de 115 que en ocasiones se indica en los sitios de donde se baja el software, no afanarse por usar la última necesariamente. De hecho las firmas multinacionales que están comenzando a promover el software libre liberan nuevas versiones en períodos de un año para asegurarse que están ofreciendo a los usuarios software estable. Y en software la palabra estable significa tener ya control sobre las fallas que presenta y las recomendaciones para resolverlas ya que el software en si es un proceso de continuo mejoramiento. Por esa razón incluimos en este curso una versión en funcionamiento que no es la última y que quienes lo deseen pueden usar. Para este caso se ha escogido la versión en formato tar.gz y se llama webmin1.210.tar.gz la cual procederemos a instalarla y a conocer sus bases de funcionamiento en el documento llamado webmin.pdf. Ya con Webmin instalado y funcionando iniciaremos los temas de las plataforma y lo usaremos en la medida en que avancemos. 1.1 Los servicios de TCP/IP La historia del tcp/ip o Transmission Control Protocol comienza en 1968 cuando los Estados Unidos iniciaron un proyecto para interconectar los computadores de una red militar con el propósito que las máquinas pudieran “conversar” entre si. La red se llamó Arpanet http://es.wikipedia.org/wiki/ARPANET y para esto se crearon una serie de nodos que se llamaron IMP’s o Procesadores de mensajes de internet en la Universidad de California en Los Ángeles, la Universidad de California en Santa Barbara, El Instituto de Investigaciones de Stanford y la Universidad de Utah. En 1972 entró en servicio activo la red llamada Arpanet utilizando el programa NCP o Netowrk Control Program que ya podía proveer una serie de servicios como transferir archivos entre máquinas y aceptar registros de entradas remotas para conectarse y poder ejecutar las aplicaciones. Con el tiempo se vio la necesidad que los usuarios de los computadores se pudieran mandar mensajes entre ellos, lo cual los llevó a inventarse el correo electrónico. Ocurrió que entre 1972 y 1974 se comprobó que el protocolo inicial no cumplía con las necesidades propuestas por lo cual se decidió iniciar el desarrollo de algo más formal y acompañado de especificaciones más precisas, y fue así que se propuso la creación del protocolo TCP/IP. Fueron dos Ingenieros Leonard Kleikrock http://www.cs.ucla.edu/~lk/, Vint Cerf http://www.ibiblio.org/pioneers/cerf.html y Robert Kahn http://www.cnri.reston.va.us/bios/kahn.html quienes hicieron las primeras propuestas siendo una de las más importantes hacer que el protocolo tuviera independencia de la red y del hardware instalado, es decir que tuviera conectividad universal. No torre de Babel. En 1981 ya existía una versión estándar, la versión 4, la cual viene a sustituir al Plataformas Tecnológicas y Gestión _ imprimible 7 de 115 NCP en 1982 conformando así una red que tenía objetivos militares y que comenzó a crecer a una tasa de 20 nodos diarios. Es en este momento cuando intervienen la universidades y se propuso dividir la red en dos segmentos: uno militar, MILNET y otro para otros usos que se llamó ARPANET. La Universidad de Berkley en California intervino de manera especial ya que venía trabajando fuertemente en la liberación de una versión de UNIX llamada BSD (Berkley System Distribution) y que incluyó a TCP/IP cómo parte del sistema. Este licenciamiento de UNIX fue durante muchos años de dominio público lo cual convirtió al TCP/IP en un producto estándar en el mercado aun después de la desaparición del BSD en 1993. Hoy en día TCP/IP permite que internet ofrezca muchos servicios a la red. Existe un mapa de Arpanet que muestra el crecimiento de los nodos en http://som.csudh.edu/cis/lpress/history/arpamaps/ Los servicios de TCP/IP son varios y se resumen en este diagrama: Para explicar la forma como funciona TCP/IP ayudémonos de este diagrama que muestra las capas en que se desempeña. Plataformas Tecnológicas y Gestión _ imprimible 8 de 115 Capa 4 Capa 3 Capa 2 Capa 1 Capa 1: la conexión física es decir el cable de la red y sus conectores asociados que van a identificar los interfaces o tarjetas de red con una nomenclatura del estilo eth0, eth1 para las tarjetas de red y sus drivers. Capa 2: el proceso de enrutamiento es decir el que hace que los datos que viajan en paquetes se dirijan hacia un equipo identificado por un número IP. Capa 3: los paquetes se transportan hacia los puertos o sockets que son los programas residentes o demonios que representan los servicios y que están “mirando” por el puerto para ver si algún nodo está solicitando un servicio. Capa 4: es la aplicación misma por ejemplo el programa de correo. El funcionamiento de TCP/IP se describe en el documento tcpi.pdf que puede ser consultado por quienes deseen profundizar. De una vez debemos saber que al llegar a la plataforma de Firewall es importante tener claros los conceptos que se exponen en tcpip.pdf. L Para el uso de las plataformas es necesario que el computador en el que se van a hacer las pruebas tenga una tarjeta de red y que el tcp/ip esté configurado para trabajar adecuadamente. 9 de 115 Plataformas Tecnológicas y Gestión _ imprimible 1.2 Configuración remota Por lo tanto la primera instalación que haremos usando Webmin será esta funcionalidad. Asegurarse que Apache /etc/rc.d/init.d/httpd start esté en funcionamiento o Direccionar el navegador a http://linux.domain.com.co:10000/ Aparece la pantalla de inicio de Webmin. Se inicia con el usuario admin y la contraseña del administrador. sino ejecutar Plataformas Tecnológicas y Gestión _ imprimible Se carga el interfaz de webmin. Se escoge el icono de Networking de la parte superior. Escoger Networking 10 de 115 Plataformas Tecnológicas y Gestión _ imprimible 11 de 115 Aparece esta pantalla y se escoge Network Configuration Escoger Network Configuration Plataformas Tecnológicas y Gestión _ imprimible Aparece esta pantalla y finalmente Network Interface: Escoger Network Interface 12 de 115 Plataformas Tecnológicas y Gestión _ imprimible 13 de 115 Al escoger Network Interface aparece una pantalla en la cual debe seleccionar Add a New Interface y le aparecerá la siguiente pantalla en la cual se llenan los campos como en este ejemplo: Seleccionar Create and Apply. Seleccionar Create and Apply. En el equipo en que se escribe este curso se tiene dos tarjetas de red que se ven así en Webmin: Plataformas Tecnológicas y Gestión _ imprimible 14 de 115 Observe la interfaz llamada lo. Esta es necesaria porque es la manera de identificar la dirección local Se regresa al interfaz Network Configuration: Y al seleccionar Network Interface se activa la tarjeta de red. La manera de probar si está funcionando es entrar a una pantalla de comandos y probar: ping 192.168.100.3 PING 192.168.100.3 (192.168.100.3) 56(84) bytes of data. 64 bytes from 192.168.100.3: icmp_seq=0 ttl=128 time=1.49 ms 64 bytes from 192.168.100.3: icmp_seq=1 ttl=128 time=0.412 ms 64 bytes from 192.168.100.3: icmp_seq=2 ttl=128 time=0.421 ms se para con Ctrl C y sale: --- 192.168.100.3 ping statistics --3 packets transmitted, 3 received, 0% packet loss, time 2000ms rtt min/avg/max/mdev = 0.412/0.774/1.490/0.506 ms, pipe 2 Plataformas Tecnológicas y Gestión _ imprimible L 15 de 115 Al aparecer 0% packet loss se sabe que no se están perdiendo paquetes en la transmisión o sea que la tarjeta está bien instalada y el tcp/ip está en funcionamiento.....! Ahora vamos a hacer algo cuya importancia se verá más adelante cuando hablemos del Servidor de Dominios – DNS pero que nos será útil y se trata de identificar uno de estos IP’s con un nombre que será el nombre de dominio de la máquina. Es decir que en lugar de referirnos a la IP 192.168.100.3 nos refiramos a linux.domain.com.co por ejemplo. La manera de hacerlo es editando el archivo /etc/hosts y crear un registro así: 192.168.100.3 linux.domain.com.co Al salvar el archivo de nuevo ejecutar este comando: ping linux.domain.com.co y el sistema lo entenderá como ping 192.168.100.3 1.3 Resumen Se hizo un recuento histórico sobre el protocolo de internet TCP/IP mirado como una secuencia de actividades alrededor del proyecto DARPA y la finalización de algo que no se tenía pensado de manera tan clara desde el comienzo como fue la aparición del correo electrónico. Se hizo énfasis en la participación de las Universidades como desarrolladoras de este protocolo. Se anexó un documento sobre la manera como TCP/IP opera en la vida real, sus diseños de encabezados y la lógica del programa para administrar los viajes de los datos en la red y la manera como los entrega al extremo con calidad total. En este documento se enumeraron y explicaron los principales servicios que van a ser parte de este capítulo en la parte práctica. Para finalizar se enseñó la manera de instalar webmin para el soporte remoto de Linux y se hizo la instalación lógica de la tarjeta de red. 1.4 Actividades de aprendizaje Objetivo Verificar cómo quedaron las tarjetas de red utilizando el comando /sbin/ifconfig, entrando como usuario root. Instrucciones 1. El mac addres o inet6 addr que la dirección física de la tarjeta de red y Plataformas Tecnológicas y Gestión _ imprimible 16 de 115 que además es única debe aparecer al dar el comando. Verificarla. 2. Si se configuró adecuadamente debe aparecer la dirección IP asignada con el nombre de inet addr. Verificarla. 3. La dirección de loopback se llama lo, verificarla. 4. Hacer ping 192.168.100.3 y después ping -c 2 192.168.100.3. Determine la diferencia. 5. En el archivo /etc/services de Linux están los servicios con sus nombres, puerto y protocol, mirarlos con un editor y responder las siguientes preguntas: Preguntas Respuesta a) ¿Cuál es el número del puerto del servicio de correo smtp? 25 b) ¿Cuál es el número del puerto de ssh que es el reemplazo de telnet? 23 c) ¿Cuál es el número del puerto del servicio de web http? 80 d) ¿Cuál es el número del puerto del servicios ssh que reemplazó a telnet? 22 1.5 Ejercicio Ubique cada palabra en orden para formar una frase que define TCP. Haga clic sobre la palabra para irla añadiendo a la frase. Cuando usted crea que su respuesta es correcta, haga clic en “revisar” para verificar su respuesta. Si tiene problemas, haga clic en “pista” para saber cuál es la palabra que sigue en la frase. TCP - Transmition Control Protocol: es el servicio responsable de ensamblar los datos que se van a transmitir y controlar su transmisión de un sitio a otro Plataformas Tecnológicas y Gestión _ imprimible 17 de 115 2.- Plataformas tecnológicas 2.1 Servidor Administrador de DHCP DHCP http://es.wikipedia.org/wiki/DHCP son las siglas de Dynamic Host Configuration Protocol o sea Protocolo de Configuración Dinámica el Servidor. Como ya se observó al configurar la tarjeta de red se asignaron los números IP’s de manera fija es decir que el administrador del sistema decidió darle a cada tarjeta de cada computador un número único que lo identificara. Esto funciona muy bien para un número pequeño de computadores dentro de la red. Pero se complica cuando hay muchos puesto que es susceptible de errores como por ejemplo darle a varios equipos el mismo número. La solución que la tecnología de redes ofrece para esta situación es la de usar el protocolo DHCP el cual puede asignar de manera dinámica esos IP’s asegurando que no haya repetición de los números dentro de la red. Las ventajas para el administrador del sistema son: • • • • • • • La habilidad de dar información completa de la configuración TCP/IP a cualquier servidor de la red. La dirección IP puede ser asignada a un cliente solamente por el tiempo en que esté conectado a la red. Permite tener un conjunto de direcciones IP que pueden ser compartidas entre clientes que no requieren estar conectados permanentemente en la red. La direcciones tienen una fecha de expiración pero se vuelven a poner disponibles sin intervención de nadie. El servidor DHCP recibe direcciones desde el llamado Address Allocation Server (AAS), o Servidor de Localizador de direcciones . DHCP es muy útil para aquellos nodos de la red que se conectan de manera ocasional y que no van a estar permanentemente conectados. DHCP no puede compartir direcciones IP para PPP o SLIP que son protocolos para comunicación a través de modems con servidores remotos. La manera como funciona este protocolo se describe a continuación. El cliente, es decir el pc que va a entrar en la red, envía un mensaje llamado "descubrir" (discover) al servidor de DHCP con el cual solicita que se le den parámetros de configuración los cuales son construidos por el servidor de acuerdo con el archivo de configuración del DHCP. Estos parámetros se pueden construir de una serie de opciones globales, opciones de subredes, opciones de clases específicas y de clientes. Plataformas Tecnológicas y Gestión _ imprimible 18 de 115 Si el cliente no tiene una entrada en el archivo de configuración o no tiene una dirección IP, el servidor de DHCP "alquila" una dirección IP del Servidor de Localización de Direcciones (Address Allocation Server - AAS). Si el cliente tiene ya una dirección IP en el archivo de configuración la asigna al cliente. Si el AAS - Address Allocation Server fue requerido, este asigna una dirección IP de manera dinámica tomándola del pool de direcciones que sean consistentes con la subred del cliente. El servidor de DHCP construye un mensaje de "oferta" y se lo envía al cliente. En este mensaje incluye los parámetros de configuración incluyendo la dirección IP. El servidor queda a la espera de un "requerimiento" (request) del cliente aceptando los parámetros y la dirección asignada. Una vez que el cliente acepta los parámetros ofrecidos, el servidor le envía un mensaje de "ack" o Acknowledgement es decir de recibido completando el proceso. Es posible configurar más de un servidor de DHCP en la red pero estos no podrán compartir el mismo conjunto (pool) de direcciones y también se puede dedicar una IP fija a un cliente si fuera necesario. Todo esto se especifica dentro del archivo de configuración. Veamos ahora como se instala el servidor de DHCP en un servidor Linux usando, en este caso usando webmin. Se debe verificar si DHCP está instalado en el servidor para lo cual de clic en comprobación Los pasos son: Se debe verificar si DHCP está instalado en el servidor con el comando rpm -q dhcp a lo cual el sistema responde dependiendo si está o no instalado. Si está instalado responde algo como: dhcp-3.0.2-12 Si no está instalado responde : package dhcp is not installed Vamos a suponer que no está instalado y conoceremos la manera de hacerlo la cual se aplica para cualquier programa que venga en los discos de distribución, Plataformas Tecnológicas y Gestión _ imprimible 19 de 115 ejemplo que servirá para cualquier necesidad posterior. Esto se encuentra en el documento dhcp-instalacion.pdf L La explicación que se acaba de ver en este documento dhcpinstalacion.pdf se asume leída de tal manera que cuando más adelante necesitemos instalar otro paquete haremos mención de él y si acaso indicaremos el sitio del paquete que se requiera instalar más no el procedimiento. Ahora continuemos con el proceso. Se debe cargar webmin desde el navegador usando la dirección de web http://servidor:10000 en donde servidor es el nombre del host. En el caso de este demo es http://linux.domain.com.co:10000 Inmediatamente debe aparecer el interfaz de autenticación de webmin a lo cual se debe responder con admin/password en donde admin es la cuenta del usuario y password es la contraseña del administrador, con la que se configuró webmin cuando se instaló. Una vez cargue el interfaz de webmin se debe escoger Servidores/Servidor de DHCP y entonces debe aparecer el siguiente interfaz: Plataformas Tecnológicas y Gestión _ imprimible 20 de 115 Añadir una nueva subred Para facilitar la explicación se mostrarán las diferentes pantallas que se deben llenar para el caso sencillo de esta explicación. Aquí se tiene un servidor Linux con dirección IP fija 192.168.100.3 es decir que su subred es 192.168.100.0 y queremos que cualquier pc que se conecte con la opción de DHCP es decir que no tenga un IP fijo se le asigne el IP de manera automática por este servidor. El dominio es domain.com.co y el nombre del host es linux. Escoja Añadir una Nueva subred y entre los datos que se observan en la pantalla: Plataformas Tecnológicas y Gestión _ imprimible 21 de 115 Recopilando lo que se debe entrar es: 192.168.100.0 192.168.100.25 192.168.100.35 es decir que es un rango de 11 direcciones en este caso de la 25 a la 35. 255.255.255.0 es decir una red de clase C. de 86400 segundos es decir 24 horas por Dirección de Red Rango de direcciones Máscara de red Tiempo arrendamiento defecto Máximo tiempo de 86400 segundos es decir 24 horas arrendamiento linux Nombre del servidor Existen más campos que no se explicaran pero que denotan las múltiples opciones que tiene dhcp y que deben ser estudiadas cuando se estudie de manera detallada el protocolo y que que no es parte de este curso el profundizar. Para terminar y una vez esté seguro que los datos son correctos se debe seleccionar el botón de Salvar. Volviendo al interfaz de inicio seleccionar Edit Network Interface y seleccionar la tarjeta de red que se va a usar eth0, eth1, etc. En este caso que solo se ve una se selecciona eth0 Plataformas Tecnológicas y Gestión _ imprimible 22 de 115 Seleccionar Salvar una vez se marque la interface. Volver al Interfaz de inicio y seleccionar Editar Opciones de Cliente para definir los datos generales de comportamiento de dhcp: Plataformas Tecnológicas y Gestión _ imprimible 23 de 115 Los datos entrados fueron: Máscara de la subred Nombre del dominio Enrutador por defecto Dirección propaganda o Broadcast Servidores DNS si los hubiera 255.255.255.0 domain.com.co 192.168.100.3 192.168.100.255 En este caso 192.168.100.3. Como aun no se ha hablado de DNS en detalle se puede dejar en blanco. Volver al Interfaz de inicio y seleccionar Listar arrendamiento activos y observará que no aparece ninguna información por ahora. Ahora en la pantalla del Interfaz inicial de Webmin seleccione Aplicar Cambios lo cual arrancará el sistema dhcp es decir hará lo equivalente al comando /etc/rc.d/init.d/dhcpd start Sin embargo pueden suceder cosas extrañas como que el sistema diga que hay un error y no puede activarlo. En Fedora 4 el Firewall del sistema casi siempre tiene deshabilitado el dhcp en un sitio u poco misterioso que vamos a descubrir ahora. En el interfaz gráfico KDE o Gnome en este caso seleccione Escritorio / Configuración del sistema/Nivel de seguridad. El sistema le pedirá el password de root y aparece un interfaz. Seleccione la pestaña SELinux e Inhabilite la protección de dhcp y de aceptar a esa ventana. Plataformas Tecnológicas y Gestión _ imprimible 24 de 115 Nuevamente seleccione Aplicar en el interfaz inicial de Webmin y dhcp debe levantar (arrancar). Ahora vaya a un pc en Windows que esté en la red y configure la tarjeta de red como DHCP lo cual se asume que se sabe hacer. Sin embargo miremos el proceso que se hace en Windows para hacerlo: Primero se selecciona la ventana de Conexión de red en Windows: Plataformas Tecnológicas y Gestión _ imprimible 25 de 115 Se selecciona con el botón derecho del mouse la tarjeta de red y Propiedades para que aparezca: Plataformas Tecnológicas y Gestión _ imprimible 26 de 115 En la ventana de atrás se selecciona Protocolo Internet (TCP/IP) y el botón de Propiedades para que aparezca la pantalla de adelante en la que se selecciona Obtener una dirección IP Automáticamente es decir usar DHCP y aceptar. Finalmente se cierra la ventana que queda expuesta y el sistema configura esa tarjeta DHCP. Si se obtiene una pantalla de comandos en el pc de Windows y se da ipconfig observe que ya aparece un IP para ese equipo tomado del Pool de direcciones con el que se configuró el servidor Linux para dhcp. En el caso que estamos viendo el IP es 192.168.100.135 Plataformas Tecnológicas y Gestión _ imprimible 27 de 115 Volviendo entonces a Linux y a Webmin vaya al interfaz inicial y seleccione Listar arrendamientos activos y se dará cuenta que ya parece capturado por dhcp la información de configuración de ese pc: ☺ Hemos instalado DHCP en Linux...... ! Pero no nos olvidemos de la línea de comandos. Webmin lo que ha hecho es administrarnos el archivo de configuración de dhcp que está localizado en /etc/dhcp. Lístelo y encontrará esto: 28 de 115 Plataformas Tecnológicas y Gestión _ imprimible server-name "linux"; option domain-name-servers 192.168.100.3; option domain-name "domain.com.co"; option broadcast-address 192.168.100.255; option subnet-mask 255.255.255.0; option routers 192.168.100.3; ddns-update-style none; subnet 192.168.100.0 netmask 255.255.255.0 { max-lease-time 86400; default-lease-time 86400; server-name "linux"; range 192.168.100.25 192.168.100.35; Y hubiéramos obtenido lo mismo que hicimos con Webmin si manejáramos bien las directivas de configuración. 2.1.1 Resumen Hemos estudiado la primera plataforma de Linux en este caso DHCP para la asignación dinámica de memoria con explicaciones sobre los fundamentos del protocolo, qué se espera de este servicio, algunas limitaciones y funcionalidades. Una vez explicado el concepto se ha trabajado el proceso de instalación paso a paso con explicaciones detalladas sobre los datos que se le deben dar a webmin para que actualice el archivo de configuración de DHCP. Una vez configurado se ha explicado la manera de configurar un pc con Windows para que se conecte como un cliente DHCP de nuestro servidor DHCP recién configurado y se ha demostrado cómo el sistema asigna dinámicamente la dirección. Finalmente hemos mirado cómo quedó el archivo de configuración como una muestra del trabajo de webmin para concluir que se hubiera podido trabajar manualmente si tuviéramos más elementos para hacerlo. 2.1.2 Ejercicio De acuerdo con lo aprendido en el documento dhcp-intalacion.pdf en la sección llamada Instalación de paquetes usando rpm, a continuación mostramos varias acciones que son frecuentes, indique con cual de las dos posibilidades mostradas se debería usar rpm para obtener lo que se desea. Acción deseada Opción de rpm Opción rpm Averiguar si existe un paquete -q -e Actualizar un paquete -U -a de 29 de 115 Plataformas Tecnológicas y Gestión _ imprimible Acción deseada Opción de rpm Opción rpm Borrar un paquete -d -e Información de paquetes -inf .qi Archivos de un paquete -ql -f Estado de los archivos -qs -st Documentación de los paquetes -do -qd Ejecutar el comando de manera -v “verbose” es decir con información del proceso -V Mostrar barra del proceso -b -h de 2.2 Servidor de nombre de dominios:DNS http://es.wikipedia.org/wiki/DNS Manejar los IP's en una red muy grande manteniendo la base de datos de nombres de cada máquina en el archivo /etc/hosts es muy complejo de manejar debido a que habría que actualizar cada una de ellas cada vez que se agregue un equipo a la red. Por ese motivo se creó el servicio de DNS dentro de TCP/IP. La idea es que uno de los equipos contenga esa base de datos distribuida para darle el servicio de resolver los nombres a todos los equipos de la red. Ese computador se llama servidor primario de nombres de dominios. Pueden existir varios de ellos llamados secundarios. De esa manera si un servicio de TCP/IP solicita el servicio de buscar el IP de logicasoftware.domain.com, el servidor de DNS primario busca en la base de datos el IP que le corresponde. En el diagrama adjunto se puede observar la secuencia desde que un pc solicita un IP, acción que se inicia cuando por ejemplo se direcciona un sitio de internet en el navegador con http://servidor.com Esa solicitud se envía por la red diciendo “Ahí va el dominio” para que el Servidor de Nombres de Dominio lo resuelva enviando el IP que le corresponde. Para entender más de qué se trata el DNS es necesario estudiar algunas Plataformas Tecnológicas y Gestión _ imprimible 30 de 115 definiciones relacionadas con lo que se llama el Espacio de Nombre de Dominio que son nombres encadenados en forma de un árbol invertido. Cuando nos referimos a www.google.com, por ejemplo, estamos haciendo referencia a un árbol cuya raíz es www seguido por los nombres google y com cadena que se llama un Nombre de Dominio. En este diagrama se puede observar la estructura de ramas del árbol usado por internet en donde cada nodo tiene un nombre y se observan los dominios de la parte superior que son usados tradicionalmente en internet. El dominio de una universidad puede ser por ejemplo: universidad.edu.co en donde co se refiere a Colombia lo cual proviene de las normas de ISO 3166 y en la cual se usa au para Australia, ar para Argentina, es para España etc. Los servidores que almacenan información de los Espacios de Nombres de Dominios se llaman Servidores de Nombres y almacenan partes de los espacios de nombres llamados Zonas que se cargan de otros Servidores. El Servidor de Nombres de una Zona se le denomina una Autoridad de la Zona. El servicio de DNS, es decir el programa en Linux, se llama named y corresponde a un paquete llamado BIND - Berkeley Internet Name Domain http://es.wikipedia.org/wiki/BIND que es el software de más uso para este servicio en internet. Se puede configurar de varias maneras, instalando el binario con el comando rpm o compilando los fuentes. Para conocer el procedimiento para averiguar si el named está instalado en Linux de clic en comprobación Para averiguar si el named está instalado en Linux se usa el comando: rpm -q bind Si no está instalado el sistema responde: package bind is not installed Si está instalado responde: bind-9.3.1-4 En donde los números corresponde a la versión del paquete. No se deje confundir por los nombres. DNS, Bind, named que son términos equivalentes. Para instalarlo recuerde las indicaciones hechas en el documento dhcpinstalacion.pdf en el cual aprovechando el ejemplo de dhcp se enseña cómo instalar software usando el interfaz gráfico. 31 de 115 Plataformas Tecnológicas y Gestión _ imprimible L La configuración manual es difícil y engorrosa por lo que se recomienda usar alguna ayuda de tipo gráfico que en este caso será webmin, pero trataremos de seguirle la pista a los archivos de configuración de alguna manera. Para comenzar a analizar la configuración de named, se tiene el archivo básico que es /etc/named.conf que contiene muchas directivas que iremos analizando. Una de ellas se ve así: options { directory "/var/named"; dump-file "/var/named/data/cache_dump.db"; statistics-file "/var/named/data/named_stats.txt"; }; En donde: directory "/var/named" dump-file "/var/named/data/cache_dump.db" statistics-file "/var/named/data/named_stats.txt" Se refiere al directorio dentro de Linux en donde están los archivos de configuración. Se refiere a la base de datos de volcado es decir en donde named guarda su estado en caso de aborto. Se refiere al archivo de estadísticas. Todo lo que se va a hacer para configurar DNS quedará en /var/named y al utilizar webmin este cambiará algunos de estos parámetros como observaremos al terminar la configuración. Plataformas Tecnológicas y Gestión _ imprimible 32 de 115 Se debe cargar webmin: http://servidor:10000 y seleccionar el botón de Servidores. Seleccionar el icono Servidor de DNS BIND: Crear una nueva zona Plataformas Tecnológicas y Gestión _ imprimible 33 de 115 Lo primero que se debe hacer es crear una Zona Maestra seleccionando Crear una nueva Zona Maestra. La Zona Maestra permitirá indicar cuál es el dominio que administrará este servidor. Para el ejemplo se tiene un Servidor Linux cuyo dominio es domain.com.co y manejará nombres de servidores como linux y fedora4 cuyos nombres completos denominados como Nombre de dominio totalmente cualificados o FQDN (fully qualified domain name) serán linux.domain.com.co y fedora4.domain.com.co Se deben entrar los siguientes datos: Nombre de dominio de red Servidor Maestro Dirección de correo Seleccionar el botón Crear. domain.com.co linux.domain.com.co manuel, que es la cuenta del administrador del sistema Plataformas Tecnológicas y Gestión _ imprimible 34 de 115 Aparece el interfaz para Editar Zona Maestra: Si desea puede indagar que contiene cada uno de estos íconos. Hemos hablado de cómo el DNS nos va a resolver el problema que a partir de un nombre se busque el número IP correspondiente. Sin embargo, hacer lo contrario es decir buscar el Nombre del Dominio a partir del IP es una tarea necesaria en estas bases de datos pero no es trivial lograrlo. Para ellos existe la forma de indexar los datos creando una parte del espacio de nombres de dominio que direccione esas etiquetas el cual en Internet tiene un nombre complicado que proviene de los orígenes del proyecto Arpanet: dominio inaddr.arpa Veamos un ejemplo: si linux.domain.com.co tiene la dirección IP 192.168.100.3 el correspondiente subdominio in-addr.arpa es 3.100.168.192.in-addr.arpa Por eso se habla de crear una Zona reversa seleccionando nuevamente la opción Crear una nueva Zona Maestra desde el Servidor de DNS Bind tal como acabamos de hacer para Crear la Zona Maestra anteriormente explicada, solo que como se verá en la explicación siguiente se escoge la opción de crear la Inversa. Plataformas Tecnológicas y Gestión _ imprimible 35 de 115 Los datos que se deben dar son: L Seleccionar la casilla Inversa frente al Tipo de Zona!!! Nombre de dominio de la red 192.168.100 linux.domain.com.co Servidor Maestro manuel, en este ejemplo Dirección de correo Seleccionar el Botón Crear y aparecerá la ventana de Edición: Plataformas Tecnológicas y Gestión _ imprimible Volver al interfaz del Servidor DNS Bind: 36 de 115 Plataformas Tecnológicas y Gestión _ imprimible 37 de 115 Ya aparecen los íconos de nuestras Zonas: 192.168.100 y domain.com.co L Observe que no es el IP completo 192.168.100.3 sino la parte correspondiente a la subred 192.168.100!! Recordemos que vamos a tener un servidor llamado linux y otro llamado fedora4 en esta Zona. Vamos a editar la zona domain.com.co que aparece en esta ventana para crear servidores y aparece: Plataformas Tecnológicas y Gestión _ imprimible 38 de 115 Plataformas Tecnológicas y Gestión _ imprimible 39 de 115 Vamos a crear el registro del servidor linux, seleccionando A se despliega esta pantalla Plataformas Tecnológicas y Gestión _ imprimible 40 de 115 Entramos el Nombre y la Dirección del servidor llamado linux como se ve en el interfaz. Seleccionar Crear y aparece: En donde ya se observa en la parte inferior el servidor linux creado. Plataformas Tecnológicas y Gestión _ imprimible 41 de 115 A veces se desea llamar a ese servidor con varios nombres diferentes. A esto se le llama un Alias. Procederemos a crearle un alias llamado fedora4, volviendo a la ventana para Editar Zona Maestra: Escoger CN (Canonical Name) o sea Alias de Nombres: Plataformas Tecnológicas y Gestión _ imprimible Crear en Nombre: fedora4 y poner en el nombre de red: linux 42 de 115 Plataformas Tecnológicas y Gestión _ imprimible 43 de 115 DNS ofrece la posibilidad de especificar un servidor para envío de correos. A esto se le llama crear el Registro MX lo cual se hace regresando al la ventana de Editar Zona Maestra: Seleccionar MX o sea Servidor de Correo. Plataformas Tecnológicas y Gestión _ imprimible Indicar que el servidor de correo será el servidor llamado linux. Seleccionar el botón Crear y aparece: 44 de 115 Plataformas Tecnológicas y Gestión _ imprimible 45 de 115 Que como se puede ver ya incluye el dato configurado sobre el servidor de correo. Nos falta ahora decirle al sistema quien es el servidor de DNS seleccionando la Opción de Configuración de Red de la siguiente pantalla: Plataformas Tecnológicas y Gestión _ imprimible Al seleccionar Configuración de red aparece: 46 de 115 Plataformas Tecnológicas y Gestión _ imprimible 47 de 115 Seleccionar Cliente DNS Los datos que se dan en esta ventana para indicar cuál es el servidor DNS son: Nombre de la máquina Servidor DNS Orden de resolución Hosts y DNS linux.domain.com.co 192.168.100.3 que indica primero buscar /etc/hosts y después en DNS en Plataformas Tecnológicas y Gestión _ imprimible 48 de 115 Servidores DNS: 192.168.100.3 pero pueden haber más de uno que se llaman secundarios. Al Salvar se crea el archivo /etc/resolv.conf que contiene algo como esto: nameserver 192.168.100.3 domain domain.com.co y /etc/nsswitch.conf Plataformas Tecnológicas y Gestión _ imprimible 49 de 115 Ahora estamos listos para arrancar el servidor de DNS: Arrancar Servidor de Nombres Seleccionando Arrancar Servidor de Nombres. Vienen luego algunas pruebas de su funcionamiento entrando a una pantalla de comandos y usando el programa nslookup tal como se muestra en esta sesión de comandos: Comando Explicación # nslookup Comando para hacer búsquedas de Dominios de Internet > linux Server: Address: 192.168.100.3 192.168.100.3#53 Name: linux.domain.com.co Address: 192.168.100.3 > fedora4 Server: Address: Dentro de nslookup se dan los comandos después del carácter > En este caso se indaga por el servidor linux y el sistema responde con todos sus datos Se indaga por el alias fedora4 192.168.100.3 192.168.100.3#53 fedora4.domain.com.co linux.domain.com.co. canonical name = Plataformas Tecnológicas y Gestión _ imprimible Comando 50 de 115 Explicación Name: linux.domain.com.co Address: 192.168.100.3 Se indaga por el IP y responde lo que el DNS sabe incluyendo la dirección de reversa > 192.168.100.3 Server: 192.168.100.3 Address: 192.168.100.3#53 3.100.168.192.in-addr.arpa linux.domain.com.co. name = Con estas comprobaciones podemos estar seguros que el Servidor DNS está operando. Observemos el estado final de algunos de los archivos de configuración: Archivo de configuración Contenido después de configurado de named options { directory "/etc"; pid-file "/var/run/named/named.pid"; Contiene los datos de las }; zonas, observe que los archivos de configuración se zone "domain.com.co" { direccionan a /var/named type master; file "/var/named/domain.com.co.hosts"; Sin embargo en /var/named }; solo aparece un directorio llamado chroot. Dentro de él zone "100.168.192.in-addr.arpa" { type master; está var y es allí en donde file "/var/named/192.168.100.rev"; residen los archivos }; realmente Archivo /etc/named.conf Archivo domain.com- $ttl 38400 domain.com.co. IN SOA linux.domain.com.co. co.hosts /var/named/chroot/var/name manuel ( 1136503898 d/domain.com.co.hosts 10800 3600 Los significados de algunas 604800 especificaciones son: 38400 ) domain.com.co. IN NS linux.domain.com.co. IN: se refiere a Internet. linux.domain.com.co. IN A 192.168.100.3 CNAME linux SOA: tipo de registro Start of fedora4.domain.com.co. IN MX 1 linux Authority o Comienzo de domain.com.co. IN Autoridad. linux.domain.com.: este es el nombre del Servidor de Plataformas Tecnológicas y Gestión _ imprimible Archivo de configuración Contenido después de configurado de named nombres primario que en nuestro caso es este. Observe el punto al final del nombre. Se debe mantener. NS: significa Name Server o sea Nombre del Servidor y se incluye en cada archivo CNAME: Canonical Name o nombre del servidor. En este caso indica que fedora4 es un alias de linux. MX: Registro para el correo electrónico indicando el nombre del servidor que lo maneja Dentro de paréntesis aparecen los datos relacionados con variables de afinamiento: serial: número de serie. refresh: número de segundos después de los cuales el sistema refresca sus datos. retry: número de segundos para hacer reintentos cuando no haya respuestas a los requerimientos hechos al servidor. refresh: tiempo refrescamiento. de default_ttl: número de segundos del llamado time to live o tiempo de vida que es el tiempo de espera máximo para que si no hay respuesta muera la conexión e intente otra vez 51 de 115 52 de 115 Plataformas Tecnológicas y Gestión _ imprimible Archivo de configuración Contenido después de configurado de named /var/named/chroot/var/name $ttl 38400 d/192.168.100.rev 100.168.192.in-addr.arpa. IN linux.domain.com.co. manuel ( Dirección reversa 1136504390 10800 3600 604800 38400 ) 100.168.192.in-addr.arpa. IN linux.domain.com.co. 3.100.168.192.in-addr.arpa. IN linux.domain.com.co. SOA NS PTR Finalmente para rematar el tema recordemos este servicio se puede parar o arrancar con webmin pero también se puede usar la linea de comandos. Hay varias formas Arrancar named #/etc/rc.d/init.d/named start o #/sbin/service named start Parar named #/etc/rc.d/init.d/named stop o #/sbin/service named stop Al arrancar debe aparecer: Starting named: [ OK ] Al parar named debe aparecer: Stoping named: [ OK ] 2.2.1 Resumen Se ha explicado el significado del Domain Name Server – DNS y la manera como opera. Igualmente se ha hecho el trabajo de configurarlo utilizando webmin. Plataformas Tecnológicas y Gestión _ imprimible 53 de 115 Se mostró la manera de operar nslookup para probar la configuración del DNS Durante esta sección se dieron algunas definiciones fundamentales para entender este concepto como los Espacio de Nombre de Dominio, las Zonas, el árbol de organización, las direcciones reversas, los archivos de configuración como /etc/named.conf, /etc/resolv, /var/named Igualmente se definieron algunas de los términos que usa el DNS dentro de estos archivos de configuración como: IN, SOA, NS, CNAME,MX, serial, refresh, retry, refresh, default_ttl. La sección termina mostrando los contenidos de los archivos de configuración tal como los actualizó webmin y recordando la manera de arrancar y parar el servicio. 2.3 Shel Seguro – ssh Tradicionalmente Linux ha utilizado una serie de comandos para conectarse de manera remota a un servidor como son el caso de telnet para hacer conexión, ftp para transportar archivos remotamente y otros como rlogin para conexión remota, rsh para el manejo de líneas de comando de manera remota los cuales tienen el inconveniente de no ser seguros debido a que la información no se transporta de manera encriptada. ssh en cambio usa el algoritmo de encriptación pública RSA http://en.wikipedia.org/wiki/Rsa#Operation que es un estándar en la industria. Con ssh toda la comunicación será encriptada con la conveniencia adicional de poder interactuar de manera gráfica a través de Xwindows pues la variable de entorno DISPLAY puede ser compartida. Por ser un programa que viene instalado en Linux por defecto no entraremos en el detalle en su configuración sino en su uso. De todas maneras debemos saber que el programa servidor tiene un archivo de configuración en /etc/ssh/ssh_config y que también se puede administrar desde Webmin. Igualmente puede ser activado usando los comandos: /etc/rc.d/init.d/sshd start /sbin/service sshd start o parado usando stop en lugar de start Para usar ssh se requiere que esté instalado openssh-server como servidor y openssh-clients como cliente lo cual se puede ver con los comandos: # rpm -q openssh-server openssh-server-4.0p1-3 Plataformas Tecnológicas y Gestión _ imprimible 54 de 115 # rpm -q openssh-clients openssh-clients-4.0p1-3 Para el laboratorio que haremos en este subtema debemos usar un servidor remoto que probablemente no esté a su disposición en este momento. Para esto aprovecharemos la capacidad de Linux de ser cliente y servidor a la vez de tal manera que al conectarnos al mismo servidor de trabajo él entenderá cuando se es cliente o servidor. En resumen no se necesita otra máquina para practicar estos comandos. A continuación se detallan las siguientes acciones: Conexión a un servidor remoto usando ssh Ejecutar comandos de manera remota Copiar archivos de manera remota Sesiones de transporte de archivos usando ssh Conexión a un servidor remoto usando ssh La manera de conectarse a un servidor remoto es: $ ssh linux.domain.com.co La primera vez sale un mensaje como este: The authenticity of host 'linux.domain.com.co (192.168.100.3)' can't be established. RSA key fingerprint is 56:87:fc:04:98:b5:e8:92:3d:39:05:c3:8e:e8:50:cd. Are you sure you want to continue connecting (yes/no)? Dar yes y el sistema solicita el password del usuario que esa al entrar: Warning: Permanently added 'linux.domain.com.co,192.168.100.3' (RSA) to the list of known hosts. [email protected]'s password: Y responde: Last login: Fri Jan 6 14:25:18 2006 Dejando un prompt de este estilo: [manuel@linux ~]$ 55 de 115 Plataformas Tecnológicas y Gestión _ imprimible Desde ese momento se es usuario remoto del servidor linux.domai.com.co; en este caso como usuario manuel el cual debe estar creado como tal en el servidor remoto, pero si se desea entrar como otro usuario se puede dar el comando: $ ssh [email protected] [email protected]'s password: Last login: Wed Jan 4 00:23:17 2006 [root@linux ~]# No olvidar que para salir de una sesión ssh se usa el comando exit dentro del prompt remoto. Ejecutar comandos de manera remota Muchas veces no es necesario entrar a un servidor para ejecutar un comando sino basta indicarlo de manera directa y remota. Por ejemplo su queremos ver que programas .conf existen en el directorio remoto /etc se usaría este comando: $ ssh linux.domain.com.co /etc/*.conf ls A continuación el sistema remoto pide la contraseña: [email protected]'s password: Y si la contraseña es correcta ejecuta el comando mostrando los archivos del caso. Copiar archivos de manera remota Para hacer esta prueba debe crear en su directorio raíz /home/usuario un archivo que llamaremos pruebassh con el comando >pruebassh o touch pruebassh. Lo que se va a hacer es copiar el archivo desde el cliente hacia el servidor remoto linux.domain.com.co dejándolo en un directorio equivalente pero con el nombre pruebasshsal. Para esto usaremos el comando de ssh llamado scp $ scp pruebassh [email protected]:/home/manuel/pruebasshsal [email protected]'s password: pruebassh 100% 0 0.0KB/s 00:00 Para comprobar si el comando se ejecutó entre al servidor y teclee: Plataformas Tecnológicas y Gestión _ imprimible 56 de 115 $ ls pr* y debe salir: pruebassh pruebasshsal Sesiones de transporte de archivos usando ssh En reemplazo del comando tradicional de Unix y Linux para el transporte de archivos llamado ftp, ssh usa uno llamado sftp que mantiene las características de seguridad de ssh y las bondades altamente conocidas de ftp. La manera de conocer sobre su funcionamiento sin convertir el curso en un manual o tutorial completo es observando cómo se comporta una sesión normal. Continuemos utilizando el servidor linux.domain.com.co de los ejemplos e iniciemos conectándonos a él como servidor sftp: $ sftp linux.domain.com.co Connecting to linux.domain.com.co... [email protected]'s password: Después de dar la contraseña aparece el prompt de sftp listo para recibir los comandos y probemos help como primero de ellos para conocer los comandos disponibles: sftp> Available commands: cd path Change remote directory to 'path' lcd path Change local directory to 'path' chgrp grp path Change group of file 'path' to 'grp' chmod mode path Change permissions of file 'path' to 'mode' chown own path Change owner of file 'path' to 'own' help Display this help text get remote-path [local-path] Download file lls [ls-options [path]] Display local directory listing ln oldpath newpath Symlink remote file lmkdir path Create local directory lpwd Print local working directory ls [path] Display remote directory listing lumask umask Set local umask to 'umask' mkdir path Create remote directory Plataformas Tecnológicas y Gestión _ imprimible 57 de 115 progress Toggle display of progress meter put local-path [remote-path] Upload file pwd Display remote working directory exit Quit sftp quit Quit sftp rename oldpath newpath Rename remote file rmdir path Remove remote directory rm path Delete remote file symlink oldpath newpath Symlink remote file version Show SFTP version !command Execute 'command' in local shell ! Escape to local shell ? Synonym for help Cómo puede observarse estos comando nos permiten movernos dentro del servidor remotos y ejecutar comandos del sistema con algunas limitaciones propias del hecho que es una sesión de ftp nada más. Los dos comandos más significativos son get que permite traer desde el servidor remoto un archivo al pc del usuario y put que permite poner en el servidor un archivo que está en el pc del usuario. Recuerde que para salir del sftp se usa el comando quit o exit. 2.3.1 Resumen Hemos visto el funcionamiento de ssh un programa que permite la comunicación remota desde un cliente hacia un servidor con las funcionalidades de telnet y ftp pero con la característica de comunicarse de manera encritptada haciendo de esta una comunicación segura. Teniendo en cuenta que viene ya listo para su uso nos concentramos en la forma de utilizarlo más que en la forma de configurarlo y después de las explicaciones básicas se procedió a hacer una serie de ejercicios prácticos como método para aprender su manejo. Se ha aprendido a usarlo para entrar al servidor para usar sus comandos, ejecutar comandos de manera remota sin ingresar como un cliente conectado, a hacer copias de archivos remotos, a hacer ftp’s para bajar y subir información y en general a vislumbrar el potencial tan grande que nos da este comando para administrar un servidor de menara remota.. 2.3.2 Ejercicio Ubique cada palabra en orden para formar una frase referida a ssh. Haga clic sobre la palabra para irla añadiendo a la frase. Cuando usted crea que su respuesta es correcta, haga clic en “revisar” para verificar su respuesta. Si tiene problemas, haga clic en “pista” para saber cuál es la palabra que sigue en la frase. Plataformas Tecnológicas y Gestión _ imprimible 58 de 115 ssh usa el algoritmo de encriptación pública RSA 2.4 Servidor de web: Apache Cuando un usuario se conecta a un servidor de internet utilizando un navegador, lo hace especificando una dirección al estilo http://www.sitio.com/ por ejemplo. Esta dirección se llama el URL que en inglés se traduce como Universal Resource Locator es decir Localizador Universal de Recursos. Si descomponemos este URL en sus elementos podríamos hacerlo de la siguiente manera: <método>://<servidor>/<directorio absoluto> y cada componente tiene el siguiente significado: <método>: es la cadena de caracteres http http://es.wikipedia.org/wiki/Http que son la sigla de Hypertext Transfer Protocol o sea Protocolo de Transferencia de Hypertexto. <servidor>: es el nombre del computador al cual nos estamos conectando que en este caso es www.sitio.com cuyo IP debe se resuelto por un servidor de Nombres de dominio o DNS como ya lo hemos visto. <directorio absoluto>: que en este caso es / o sea el directorio raíz pero que podría ser /algo en donde algo es un directorio ubicado en el directorio raíz del cual hablaremos en este subtema.. Para que el servidor remoto obedezca esta solicitud de servicio debe manejar el protocolo http dentro de sus servicios instalados de tal manera que si en el navegador usamos el protocolo HTTP/1.1, este le enviará al servidor los siguientes requerimientos de servicio: GET / HTTP/1.1 El servidor identificado con el nombre de dominio www.sitio.com se encuentra "escuchando" los requerimientos de servicio http por el puerto 80 si este servicio se ha configurado de manera estándar con lo que la información se transmite de manera no segura es decir en texto plano que puede ser leído en cualquier momento por terceros o por el puerto 443 cuando la información se transmite de manera segura es decir encriptada en cuyo caso el protocolo es https. Se puede saber si un sitio es seguro o no mirando en el URL si aparece http o https o gráficamente si el icono del candado del navegador está abierto o cerrado. El mensaje llega al servidor en tres partes que son un GET (leer), en este caso, pero que puede ser una orden PUT (escribir), POST, Delete o CONNECT. Y el Plataformas Tecnológicas y Gestión _ imprimible 59 de 115 Identificador de Recurso Uniforme / El resultado de este intercambio es el de informar al servidor que se desea traer un archivo que en este caso se transmite en el formato HTML http://es.wikipedia.org/wiki/HTML , HyperText Markup Language o Lenguaje de marcas de hipertexto. Este archivo en HTML llega al cliente del navegador bien sea para desplegar una página web en él o ejecutar un programa que venga dentro de él. Y todo esto se logra gracias a la existencia del protocolo http en el servidor como ya se dijo el cual es manejado y administrado por un software llamado servidor de web. En Linux se llama Apache. El primer servidor de web fue creado por el físico británico Tim Berners-Lee http://es.wikipedia.org/wiki/Tim_Berners-Lee en el Centro Europeo de Investigación Nuclear - CERN en Ginebra Suiza. El siguiente desarrollo e iniciador de Apache se hizo en NCSA que es el Centro Nacional de Aplicaciones para Supercomputadores por allá en el año 1995. Dada su liberación como software libre se puede bajar desde http://www.apache.org Su nombre no obedece a ninguna sigla en especial. Se dice que sus desarrolladores estaban permanentemente aplicándole mejoras al sistema que en inglés se denominan patches. Y al repetirlos se decía en inglés a patch, a patch, a patch que terminó convergiendo en el nombre apache. 2.4.1 Archivos de configuración de Apache Apache maneja dentro del servidor una serie de directorios en donde residen las páginas web y los programas de las aplicaciones orientadas a la web cuya ubicación puede variar según la distribución de Linux o las especificaciones que se dan en el momento de compilarlo. Para conocer la forma de averiguar si existe Apache dentro del servidor de clic en comprobación La manera de averiguar si existe Apache dentro del servidor si se usó rpm para instalarlo es: $ rpm httpd -q en caso de existir el sistema responde: httpd-2.0.5410 pero la versión puede variar según la versión de la Distribución usada. 60 de 115 Plataformas Tecnológicas y Gestión _ imprimible Cuando se compila Apache desde los fuentes este viene en formato .gz como este: httpd-2.0.54.tar.gz La manera de compilarlo es: gunzip httpd-2.0.54.tar.gz aparece el archivo descomprimir: .tar el cual se debe tar xvf httpd-2.0.54.tar Aparece el directorio debemos entrar: httpd-2.0.54 al cual cd httpd-2.0.54 y se ejecutan estos comandos como usuario root: ./configure –prefix=/www make make install El parámetro –prefix determina en qué directorio debe quedar apache lo cual es muy bueno saberlo para ubicarlo en donde se quiera y no dejar esta decisión al sistema. Dentro de /www, en este caso, aparecerán varios directorios: bin cgi-bin error icons include logs manual lib man modules build conf htdocs Y aquí nos vamos a referir a algunos de ellos que son los esenciales dejando la investigación completa a la consulta de los manuales de Apache. /www es la dirección en la cual está Apache instalado y se identifica dentro del archivo de configuración llamado httpd.conf con una directiva llamada ServerRoot de la forma: ServerRoot “/www” /www/htdocs o /www/html directorio en donde residen las páginas web y que dentro del archivo de configuración de Apache llamado httpd.conf se define en una directiva llamada DocumentRoot su ubicación. Por ejemplo ServerRoot “/www/htdocs” Plataformas Tecnológicas y Gestión _ imprimible 61 de 115 directorio en donde está el archivo de configuración httpd.conf lo cual se indica en la directiva llamada ServerRoot en el archivo de configuración httpd.conf directorio en donde residen los programas de las aplicaciones web indicado por la directiva ScriptAlias /cgi-bin/ "/var/www/cgi-bin/" directorio en donde residen los programas de Apache. Allí está por ejemplo apachectl que sirve para arrancarlo o pararlo: /www/bin/apachectl start o /www/bin/apachectl stop directorio en donde se graban las bitácoras de Apache. Allí existen por ejemplo dos archivos acces_log y error_log que si los mira con cat verá las actividades de acceso y de errores respectivamente. /www/conf /www/cgi-bin /www/bin /www/logs En el caso de Fedora 4, Apache viene localizado en /var/www y el archivo de configuración en /etc/httpd/conf/httpd.conf y para arrancar el servicio se puede hacer de varias maneras: /sbin/service httpd start /etc/rc.d/init.d/httpd start Para pararlo es igual pero con stop Cuando se accede a un servidor de web como http:/www.google.com la página que aparece en el navegador es index.html y está localizada en el directorio que indique DocumentRoot allá en el servidor de google. Para la administración de Apache es muy importante conocer las directivas que se dan en httpd.conf así que mírelas con un editor de texto para ver el contexto y estudie algunos de sus significados en el documento httpd.conf.pdf anexo al curso. Imaginémonos que se acaba de instalar Linux y queremos hacer un prueba para verificar si Apache está en funcionamiento, de clic en comprobación para conocer los pasos a seguir. Los pasos son los siguientes: a. Comprobar si está instalado: rpm -q httpd b. Si no está instalado, instalarlo usando el procedimiento explicado en el documento dhcp-instalacion.pdf c. Editar como usuario root el archivo de configuración de Apache httpd.conf y cambiar las directivas: User usuario, Group usuario, en donde usuario es su Plataformas Tecnológicas y Gestión _ imprimible 62 de 115 cuenta de usuario, ServerName dominio. En donde dominio es el nombre de su equipo o localhost. Se sugiere que siempre que se vaya a cambiar algún archivo de configuración se copie el original con otro nombre para que en el caso de cometer errores se pueda reconstruir. Por ejemplo cp /www/httpd/conf/httpd.conf /www/httpd/conf/httpd.confini. Salvar el archivo editado. d. Arrancar Apache: /sbin/service httpd start o /sbin/rc.d/init.d/httpd start Debe aparecer un OK en color verde en la pantalla. e. Arrancar la página de Apache desde el navegador: http://dominio y debe aparecer. La palabra dominio puede ser linux.domain.com co o cualquier otro dominio válido Como se ha podido observar no hemos usado webmin pero conociendo las definiciones que se han estudiado podríamos usarlo sin ningún problema. 2.4.2 Resumen Se han dado las bases sobre lo que es un servidor de web concentrándose en Apache el servidor de web de Linux. Se explicó la manera de instalarlo compilando los programas aunque en Fedora4 ya viene instalado. Sin embargo es conveniente mostrar como se hace para cuando se presente la necesidad de hacerlo. Se procedió a explicar la manera como Apache queda instalado en el servidor y cuáles son sus principales directorios. Se invitó a mirar el archivo de configuración httpd.conf y se sugirieron unos cambios para arrancar el sistema haciendo énfasis en sus directivas en el documento httpd.conf.pdf el cual tiene una explicación muy detallada de las más importantes. Se enseñó a arrancar y apagar el servidor web y a entrar para ver si operaba cargando la página inicial de Apache. 2.4.3 Ejercicios No.1 Las directivas del archivo de configuración de Apache definen el comportamiento del sistema. Las directivas tienen una denominación y un parámetro. Escoja del menú de opciones el parámetro que corresponde a cada denominación Denominación ServerRoot Parámetro “/etc/httpd" Plataformas Tecnológicas y Gestión _ imprimible ServerAdmin Server Name. Listen 63 de 115 root@localhost 80 linux.domain.com.co “/etc/httpd" root@localhost 80 linux.domain.com.co “/etc/httpd" root@localhost 80 linux.domain.com.co “/etc/httpd" root@localhost 80 linux.domain.com.co No.2 Cuando se compila Apache se usa el comando ./configure –prefix=/www Apache crea los siguientes directorios. /www Es el directorio en dónde quedará instalado Apache /www/conf Es el directorio de configuración /www/bin Es el directorio de los programas de Apache /www/logs Es el directorio de bitácora Escoja del menú de oopciones cómo quedan los directorios si el comando es ./ configure –prefix=/var Es el directorio en dónde quedará /var/www instalado Apache /var/www/conf /var/www/bin /var/www/logs Es el directorio de configuración /var/www /var/www/conf /var/www/bin /var/www/logs Es el directorio de los programas de /var/www Apache /var/www/conf /var/www/bin Plataformas Tecnológicas y Gestión _ imprimible 64 de 115 Es el directorio en dónde quedará /var/www instalado Apache /var/www/conf /var/www/bin /var/www/logs /var/www/logs Es el directorio de bitácora /var/www /var/www/conf /var/www/bin /var/www/logs 2.5 Servidor de Correo: Sendmail El correo electrónico es una de las aplicaciones más usadas a nivel mundial pues fue el servicio escogido libremente por los usuarios de Internet lo cual determinó el auge de la computación personal de Internet. Utilizando el diagrama adjunto procederemos a dar las explicaciones relacionadas con los servidores de correo que ayuden a tener claro el concepto. Se llama un MTA o Mail transfer agent http://es.wikipedia.org/wiki/MTA el programa que maneja toda la comunicación en el servidor para transmitirla al usuario quien se comunica desde un MUA: Mail User Agent http://es.wikipedia.org/wiki/MUA. Para Linux existen varios MTA’s como Sendmail, Qmail, Postfix siendo Sendmail uno de los más populares razón por la cual le dedicaremos un espacio en esta sección. Y los MUA’s más conocidos son Eudora, Outlook, Netscape, Mozilla, Evolution, Pine. SMTP o Simple mail Transfer Protocol es el protocolo de TCP/IP encargado de la transmisión de correos. pop3 http://es.wikipedia.org/wiki/POP3 e imap http://es.wikipedia.org/wiki/IMAP son protocolos diseñados para la gestión de los correos y manejos de las bandejas en los agentes de los clientes Sendmail no es un programa orientado a que lo use el usuario directamente pero se puede usar lo cual haremos en este momento solamente para ver algunos aspectos de su funcionamiento y recibiremos el correo con el programa de texto mail que viene en Linux. Casi siempre que los usuarios oyen hablar del correo electrónico referencian mentalmente al programa MUA que usan diariamente como es el caso del Outlook de Microsoft que es tan popular para ellos. Si embargo nuestro tema no estará concentrado en el MUA sino en el MTA y en este caso Sendmail. Los Plataformas Tecnológicas y Gestión _ imprimible 65 de 115 MUA’s que se usan gráficamente casi siempre piden por configuración el MTA que se va a usar y Sendmail en uno de ellos. Una sesión con Sendmail utilizado como MUA requiere conocer algunos comandos internos de smtp que se irán viendo en el ejemplo y que quisiéramos que el estudiante lo practique como parte del curso. Sendmail viene ya preinstalado para un uso básico así que solo mencionaremos los pasos de comprobación como se ha hecho con las otras plataformas: a. Comprobar si está instalado: rpm -q sendmail b.Si no está instalado, instalarlo usando el procedimiento explicado en el documento dhcp-instalacion.pdf c. Editar como usuario root el archivo de configuración de Sendmail /etc/mail/sedmail.cf solo como ejercicio de comprobación sin hacer cambios. Este es un archivo muy complejo que es preferible no tocar mientras no sea un experto. d. Arrancar Sendmail: Forma 1: /sbin/service sendmail start o /etc/rc.d/init.d/sendmail start Forma 2: /sbin/service sendmail start o /sbin/service sendmail stop Debe aparecer un OK en color verde en la pantalla. e. Como usuario normal, en el caso de este laboratorio, usaremos el usuario manuel y para comprobar quien está como usuario usaremos este comando: $ whoami manuel f. Activar sendmail para enviarle un correo al usuario manuel: $ /usr/sbin/sendmail manuel La pantalla queda en un renglón en blanco y el sistema espera los comandos para enviar el mensaje para lo cual se introducen los datos aquí presentados: Se debe terminar con . (punto) después de DATA y el texto del mensaje. HELO linux.domain.com.co Plataformas Tecnológicas y Gestión _ imprimible 66 de 115 MAIL FROM:[email protected] RCPT TO:[email protected] DATA Este es un mensaje desde Sendmail Para comprobar si esta funcionando Adios... . Aparece el prompt $ Ahora vamos a ver si el mensaje fue enviado y lo recibiremos con un MUA de texto llamado mail que viene en Linux: $ mail Mail version 8.1 6/6/93. Type ? for help. "/var/spool/mail/manuel": 1 message 1 new >N 1 [email protected]. Sun Jan 8 15:22 20/775 & Se debe responder con 1 después de & para ver el mensaje Número 1 y aparece: 1 Message 1: From [email protected] Sun Jan 8 15:22:13 2006 Date: Sun, 8 Jan 2006 15:20:28 -0500 From: Manuel Davila Sguerra <[email protected]> HELO linux.domain.com.co MAIL FROM:[email protected] RCPT TO:[email protected] DATA Este es un mensaje desde Sendmail Para comprobar si esta funcionando Adios... & Salir de este programa con: quit De esta manera ya sabemos que Sendmail está instalado. Si quisiéramos configurar un MUA en Linux para recibir correos desde linux.domain.com.co basta con configurar Evolution que viene en el sistema y que se activa escogiendo en el entorno gráfico, Gnome en este caso: Aplicaciones/Internet/Correo Electrónico y aparecerá el interfaz de Evolution: Plataformas Tecnológicas y Gestión _ imprimible Escoger Preferencias para configurarlo. 67 de 115 Plataformas Tecnológicas y Gestión _ imprimible 68 de 115 Y dentro de la siguiente ventana escoger Añadir y entrar los datos que se observan: Plataformas Tecnológicas y Gestión _ imprimible 69 de 115 Nombre: [email protected] Nombre completo: Su Nombre Dirección de correo: [email protected] La palabra usuario se debe reemplazar por el nombre de su cuenta. A continuación escoger la pestaña Recibiendo mensajes y establecer la ruta del Buzón: /var/mail/usuario Finalmente vamos a determinar con qué MTA lo vamos a trabajar y escogemos Sendmail como se ve en la ventana siguiente: Plataformas Tecnológicas y Gestión _ imprimible 70 de 115 Hecho lo anterior se ha configurado el sistema de correos en forma básica tanto para el MTA como para el MUA y ya se pueden enviar y recibir correos lo cual lo puede practicar el estudiante en su equipo de manera local. 2.5.1 Resumen En esta sección hemos estudiado lo que es el correo electrónico, primero definiendo las diferencias entre el servidor de correo o MTA y el agente del usuario o MUA los cuales debido a la acción del protocolo smtp permiten manejar de manera integral el correo electrónico. Una vez dadas las definiciones iniciales se procedió a trabajar con el MTA más conocido como es Sendmail el cual dándole un uso de MTA y MUA nos sirvió para estudiar algunos conceptos de cómo se comporta smtp para el envío de correos. Estos correos enviados se recibieron luego con mail un MUA de texto que viene en Linux para comprobar que teníamos instalado y funcionando el servidor de correo. Finalmente se configuró Evolution, un agente de correo de usuario de tipo gráfico con el cual cerramos el ciclo de aprendizaje de esta plataforma. 71 de 115 Plataformas Tecnológicas y Gestión _ imprimible 2.5.2 Ejercicio No. 1 Los programas de correo que se mencionan tienen la característica de ser un agente de correo de usuario MUA y de servidor MTA. Indique la característica de cada uno de los mencionados a continuación escogiendo del menú de opciones: Programa Tipo Sendmail MTA MUA Mozilla MTA MUA Qmail MTA MUA Outlook MTA MUA Postfix MTA MUA Evolution MTA MUA No. 2 ¿Cuáles maneras de arrancar el proceso de sendmail son válidas? Elija su respuesta entre verdadero (V) o falso (F) de acuerdo con lo anteriormente expuesto. Maneras de arrancar el proceso de sendmail /sbin/service sendmail start Verdadero V /etc/rc.d/init.d/sendmail init /sbin/service sendmail start /sbin/service sendmail stop Falso F V F Plataformas Tecnológicas y Gestión _ imprimible 72 de 115 2.6 Servidor Proxy: SQUID http://es.wikipedia.org/wiki/Proxy: SQUID http://es.wikipedia.org/wiki/Squid El acceso a Internet a que están acostumbrados los usuarios en sus casas se hace casi siempre utilizando un modem o un servicio de Internet por cable. Esto sucede casi siempre en donde hay un solo equipo, el del usuario, y su correspondiente conexión al Internet. Qué ocurre cuando en una empresa hay cientos o miles de usuarios, conectados en una red local y en dónde todos deben tener acceso a Internet? En estos casos el nodo de Internet se ubica en un gran servidor que es el único que realmente se conecta al ISP o Internet Service Provider (Proveedor de servicio de internet). Los computadores de los usuarios se configuran para que los navegadores de Internet o Intranet se conecten a través de la red a ese servidor para que utilicen el Proxy que permitirá que finalmente entre al Internet. Tenemos entonces la primera característica de un Proxy que es un punto común de entrada al Internet. Esto permitirá entones crear mecanismos de seguridad de acceso porque desde ese punto común va a ser fácil establecer algunas políticas para que se asegure un acceso con menores riesgos y con políticas que reglamenten de manera automática ese acceso. Por otro lado si cada usuario cada vez que entra a un sitio del Internet repite el proceso de ir al sitio de origen en donde encontrará las mismas páginas cada vez hará de este proceso una tarea congestionada. Existe entonces el concepto llamado memorias cache que son áreas en el disco duro en donde residen las páginas más comunes de tal manera que al hacer accesos repetidos desde un pc no tendrá que ir al sitio de origen fuera de la red sino que encontrará esas páginas frecuentes en el disco duro del servidor, es decir en las memorias cache. Y todos esos servicios los presta un programa que es el que llamamos Proxy Server. Proxy. Un proxy es un programa de computador que sirve como agente con autoridad sobre otros que puede usar una memoria cache para agilizar la carga de datos. Actúa como agente, aceptando requerimientos de los clientes (Navegadores) y los pasa al servidor de Internet apropiado almacenando copias de los datos (páginas web) en una memoria cache en disco. El verdadero beneficio del Proxy aparece cuando los mismos datos son necesitados varias veces pues no necesita ir a Internet cada vez sino que los trae de la memoria cache del disco, mejorando el uso del ancho de banda. Plataformas Tecnológicas y Gestión _ imprimible 73 de 115 No se debe confundir el Proxy con el Firewall pués existen diferencias entre ambos y algunas son: • El Firewall no usa cache. • El Proxy usa muchos protocolos y el Firewall es limitado. • Es posible tener proxy’s en arreglos jerárquicos El programa Proxy más conocido en Linux se llama Squid y está basado en un desarrollo de un proyecto llamado Harvest y se originó en el National Laboratory of Network Research - NLANR, que a su vez se basa en la National Science Foundation – NSF y es un programa de fuente abierta. En resumen Squid permite que se tenga un servidor dando el servicio de Internet con un solo IP y los clientes se conecten a él para recibir el servicio sin tener IP's válidos en cada uno. También provee servicio de FTP. // diseño arreglar esta imagen // Diseño, al dar clic en este icono le aparece el texto de comprobación . Al final debe quedar todo el texto. El autor dice que hay que obligar a que la persona lea todo. Plataformas Tecnológicas y Gestión _ imprimible 74 de 115 Comprobación La manera de comprobar si squid está disponible y la forma de activarlo es la siguiente: a. Comprobar si está instalado: rpm -q squid b. Si no está instalado, instalarlo usando el procedimiento explicado en el documento dhcp-instalacion.pdf c. Editar como usuario root el archivo de configuración de Squid /etc/squid/squid.conf solo como ejercicio de comprobación sin hacer cambios. Este es un archivo complejo que es preferible no tocar mientras no sepa como hacerlo. d. Arrancar quid: /sbin/service squid start o /etc/rc.d/init.d/squid start Debe aparecer un OK en color verde en la pantalla. Si se desea parar se usa stop en lugar de start. e. El demonio se levanta de manera silenciosa esperando que algún usuario lo conecte por el puerto 3128 // Fin de la comprobación Pero ya dijimos que los usuarios deben configurar sus navegadores para acceder Internet a través del servidor que tiene el Proxy. Configuración del navegador del cliente Entre a Firefox Editar/Preferencias/Configuración de conexión, y una vez allí coloque en el protocolo correspondiente (http por ejemplo) la IP del servidor squid y el puerto 3128 Explorador Ver/Opciones de Entrar a Internet/Conexión Una vez allí marque la casilla para conectarse al Proxy y coloque el IP del servidor squid y el puerto 3128 75 de 115 Plataformas Tecnológicas y Gestión _ imprimible Falta ahora mirar unos detalles del archivo de configuración para obtener una versión básica que trabaje adecuadamente antes de entrar en aspectos más avanzados. El principal archivo de configuración de squid es /usr/local/squid/etc/squid.conf que viene con todos los parámetros necesarios para su funcionamiento pero tiene una sección que se identifica por el título: # INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS Allí vamos a poner algunas directivas que explicaremos para iniciar la parte relacionada con las políticas de uso del Proxy. Veamos: acl myIP src 192.168.100.3/255.255.255.255 acl myNET src 192.168.100.0/255.255.255.0 http_access allow myIP http_access deny myNET http_access deny all Los acl son las Listas de control de acceso que en inglés se denominan Access Control List – acl y definen como su nombre lo indican las listas de control. Ellas definen los elementos que se van a controlar y luego se crean unas directivas que definen las acciones de permiso y deniego de acceso. Expliquemos entonces las directivas que se acaban de mostrar una a una: // Diseño la tabla siguiente darle color. // Diseño el contenido de la columna de regla debe quedar en una sola línea, las otras columnas akustarlas Regla Explicación acl myIP src 192.168.100.3/255.255.255.255 Define el elemento myIP que es la conexión fuente (src) cuyo IP es 192.168.100.3 acl myNET src 192.168.100.0/255.255.255.0 Define el elemento myNET que es la una conexión fuente (src) que en este caso es una Complemento 76 de 115 Plataformas Tecnológicas y Gestión _ imprimible Regla Explicación Complemento red 192.168.100 http_access allow myIP Permite (allow) que los clientes que se conecten desde el elemento myIP o sea desde el nodo 192.168.100.3 de forma http es decir los navegadores, accedan el puerto de web http Si el acceso efectuado cumple la regla es decir se accede desde el IP 192.168.100.3 se acepta la conexión y no mira más reglas http_access deny myNET Prohibe (deny) que los clientes que se conecten desde el elemento myNET o sea desde la red 192.168.100 de forma http es decir los navegadores, accedan el puerto de web http Si la regla anterior no se cumple se ejecuta esta regla que rechaza la conexión si esta se hace desde la red local indicada, 192.168.100, es decir cualquier nodo de esa red http_access deny all Prohíbe todo Si las anteriores no se cumplen rechaza cualquier conexión El ejemplo anterior nos sirve para determinar la forma como se ejecutan las normas. 1. Se definen los elementos. 2. El proxy aplica los controles y si alguno se cumple acepta la norma y para de mirar normas. 3. Si no se cumple mira la siguiente, hasta el final Ahora si definamos los elementos que pueden ser controlados. El sistema tiene una serie de elementos que son los que deben controlarse, como por ejemplo: las direcciones IP de origen y destino y otros más que se encuentran como referencia a continuación. También cuenta con listas de acceso. // Sacar una ventana con la siguiente información 77 de 115 Plataformas Tecnológicas y Gestión _ imprimible Elementos sujetos de control Listas de acceso // Diseño, contenido de Elementos sujetos de control src Fuente del cliente, dirección IP dst Servidor de destino dirección IP myip La dirección local o IP del cliente srcdomain Nombre del dominio fuente, cliente dstdomain Nombre del dominio del destino (servidor) srcdom_regex Fuente (cliente) que cumpla una expresión regular dstdom_regex Destino (servidor) expresión regular srcdom_regex Fuente (cliente) que cumpla una expresión regular dstdom_regex Destino (servidor) expresión regular time Hora del día, día de la semana url_regex URL que cumpla una expresión regular urlpath_regex URL-path que cumpla una expresión regular, dejando a un lado el protocolo y el nombre del servidor puero Número del puerto en el destino (servidor) myport Puerto local del cliente que se conecta proto Protocolo de transferencia, http, ftp y otros method Método del requerimiento http (get, post y otros) browser Expresión regular que se cumpla en el encabezamiento del agente usuario ident Cadena de caracteres que coincida con el nombre del usuario src_as Número del sistema autónomo de la fuente -asn (cliente). Se define como un número único que identifica a un conjunto de redes de direcciones IP que son administradas por un grupo de uno o más operadores de red. dst_as Número del sistema autónomo del destino -asn (servidor). que que cumpla cumpla una una Plataformas Tecnológicas y Gestión _ imprimible 78 de 115 src Fuente del cliente, dirección IP proxy_auth Autenticación del usuario a través de procesos externos proxy_auth_regex Expresión regular sobre la autenticación del usuario a través de procesos externos snmp_community Coincidencia de la cadena de caracteres de la comunidad SNMP (Simple Network Management Protocol) maxconn Límite del máximo número de conexiones desde una IP de un cliente req_mime_type Expresión regular sobre el encabezado llamaso content-type de un correo electrónico arp Coincidencia sobre la dirección de la tarjeta de red. MAC // Diseño, contenido de Listas de acceso http_access Clientes (navegadores) permitidos para acceder el puerto http. Es la lista de control de acceso primaria icp_access Memorias caches vecinas permitidas para buscar en su memoria cache usando el Protocolo de Cache de Internet ICP Par ver todas las listas acceda con el navegador a /usr/share/doc/squid2.5.STABLE9/FAQ- 10.html#ss10.1 dentro del servidor Linux. 2.6.1 Ejemplos de manejo de políticas del tráfico de dattos utilizando el proxy server. A continuación se presentan una serie de ejemplos a cerca del manejo de políticas del tráfico de dattos utilizando el proxy server. Los ejemplos se explican detalladamente, y se espera que el estudiante analice cada uno buscando la comprensión de las explicaciones; si lo desea puede comprobar la ejecución en su propio computador. // Diseño introducir 12 tabs para cada uno de los ejemplos, debe permanecer después de que le dé clic. 79 de 115 Plataformas Tecnológicas y Gestión _ imprimible Veamos la siguiente lista de acceso: acl myIP src 192.168.100.1/255.255.255.255 acl myNET src 192.168.100.0/255.255.255.0 http_access allow myIP http_access deny myNET http_access deny all La explicacióm de cada linea es la siguiente: acl myIP src 192.168.100.1/255.255.255.255 La lista myIP se refiere a una conexión fuente (de entrada) con un IP 192.168.100.1 acl myNET src 192.168.100.0/255.255.255.0 La lista all se refiere a la red 192.168.100 http_access allow Permite cualquier conexión desde myIP myIP http_access deny myNET Rechaza la conexión de cualquier nodo de la red. Ejemplo 1. Solo dar En resumen si el nodo que se conecta es 192.168.100.1 al analizar la política 1 acepta la acceso a un IP conexión. Si se conecta cualquier otro, al aplicar la política http_access deny myNET, se rechaza la conexión. El efecto final es que solo se acepta la conexión de myIP. Las normas de las listas de acceso están diseñadas para que una vez llegue la conexión se aplique la primera. Si se Si no cumple, se cumple acepta aplica la la conexión. siguiente. Si termina la lista y ninguna se cumple toma la última y aplica la opuesta. En este caso si se conecta un nodo de otra red, sucede que ninguna política coincide pero como al final tiene http_access deny all esta se cumplirá y no dejará que entre otro nodo. Plataformas Tecnológicas y Gestión _ imprimible 80 de 115 Si quisiéramos almacenar una regla o varias en archivos que faciliten el mantenimiento se puede configurar de la siguiente manera: Ejemplo 2. almacenadas acl myIP src "/especiales/reglamyIP" acl myNET src 192.168.100.0/255.255.255.0 Reglas http_access allow myIP http_access deny myNET http_access deny all y en el archivo /especiales/reglamyIP se crea una línea con la regla 192.168.100.1/255.255.255.255 Si se desea se pueden especificar más de una decisión es válido codificar de esta manera: Ejemplo 3. direcciones Varias acl myIP src 192.168.100.1 192.168.100.5 Observe que se especifican dos IP s en la misma linea. Tipos de listas de acceso. Existen varias: Prohibir accesos a destinos: acl MalDestino dst Ejemplo 4. Direcciones 192.168.100.1/255.255.255.255 BuenDestino dst IP fuente (src) y acl 192.168.100.5/255.255.255.255 destino (dst) http_access deny MalDestino http_access allow BuenDestino http_access deny all acl DominiosMalos dstdomain cosasmalas.com acl IpsMalos dst 10.255.1.2 10.255.1.3 acl myNet 192.168.100.0/255.255.255.0 http_access deny DominiosMalos Ejemplo 5. Filtrar sitios http_access deny IpsMalos web de destino http_access allow myNet http_access deny all El DNS debe estar bien configurado. Prohíbe acceso a sitios que tengan la palabra sex en el URL acl MalosUrl url_regex -i sex Ejemplo 6. Palabras acl myNet 192.168.100.0/255.255.255.0 claves dentro de los http_access deny MalosURL URLs http_access allow myNet http_access deny all Prohíbe el acceso, para bajar, archivos tipo avi Plataformas Tecnológicas y Gestión _ imprimible 81 de 115 de URLs con la palabra sexo. Nótese el uso de expresiones regulares. acl badURL url_regex -i sex.*\.avi$ acl myNet 192.168.100.0/255.255.255.0 http_access deny badUrl http_access allow myNet http_access deny all acl myNet src 192.168.100.0/255.255.255.0 acl workdays time AMTWHF # allow web access only on the weekends! http_access deny workdays http_access allow myNet http_access deny all Observe la linea acl workdays time MTWHF Ejemplo 7: Para permitir acceso solo Esta es la firma de indicar que los periodos son los fines de semana los dias de la semana bajo la mnemotécnica siguiente: S - Sunday M - Monday T - Tuesday W Wednesday H - Thursday F - Friday A - Saturday También es válido dar horas: 17:00-24:00 por ejemplo. Existen aplicaciones que se abren por puertos determinados. Es el caso de webminel paquete de administración orientado a web que se abre por el puerto 10000. Para permitir esto se Ejemplo 8: Puerto de establece una política de esta manera: destino acl webmin port 10000 http_access allow webmin http_access deny all Se puede desear restringir a los usuarios a usar ciertos protocolos. Para eso existe el tipo de lista proto. El siguiente ejemplo prohíbe el uso del protocolo FTP: Ejemplo 9: Protocolos acl ftp proto FTP FTP, HTTP, SSL acl myNet src 10.0.0.0/16 acl all src 0.0.0.0/0.0.0.0 http_access deny ftp http_access allow mynet http_access deny all Ejemplo 10: Método El protocolo HTTP se puede usar para bajar HTTP GET, POST o datos (get) o enviarlos (post). O transferir datos encriptados SSL Cuando se hace una conexión CONNECT) Plataformas Tecnológicas y Gestión _ imprimible 82 de 115 al proxy, el cliente especifica la clase de requerimiento llamado método que se envía. Un requerimiento GET se ve asi: GET http://www.ora.com/ HTTP/1.1 línea en blanco Si se usa SSL se cambia GET por CONNECT El tipo de acl que permite controlar el método de acceso se llama post. Un uso común es evitar requerimientos CONNECT hacia un puerto no SSL. CONNECT www.domain.example:23 HTTP/1.1 línea en blanco Asumir que se quiere parar a los clientes cuando hacen POST acl Post_class method POST acl myNet src 10.0.0.0/16 acl all src 0.0.0.0/0.0.0.0 # parar requerimientos antes que a ellos se les permita entrar por ser de las direcciones propias http_access deny Post_class # permitir acceso a mis clientes a los sitios que no son post http_access allow myNet # denegar a todos http_access deny all Para usuarios multiusuarios Ejemplo 11: Tipo de acl ident navegante nombre de http_access usuarios http_access usuariosbuenos oskar tom allow usuariosbuenos deny all Para usuarios multiusuarios: Ejemplo 12: Tipo de acl responsables ident navegante clasificando cuartosemestre usuarios http_access allow http_access deny all tercersemestre postgrados responsables 2.6.2 Resumen En esta sección se estudió lo que es un proxy server como servidor de memorias cache para Internet/Intranet. En primer lugar se dio una definición lo más precisa posible y se habló de las diferencias entre un proxy y un firewall. Luego se procedió al estudio de squid el proxy más famoso del software libre para lo cual se ubicó su archivo de configuración invitando a leerlo para conocer su estructura y concentrándose en una sección muy especial que es la Plataformas Tecnológicas y Gestión _ imprimible 83 de 115 que define las listas de control o acl’s para la escritura de reglas o políticas que controlen el acceso a la red. Estas listas tienen una sintaxis algo caprichosa por lo que se definieron sus componentes para luego proceder a entender su sintaxis con ejemplos explicados y concretos que mostraran cómo se puede controlar el acceso o salida de los datos dependiendo de las funciones, origen y destino. Plataformas Tecnológicas y Gestión _ imprimible 84 de 115 2.6.3 Ejercicio Lea esta regla y determine cuáles son sus componentes: acl myIP src 192.168.100.3/255.255.255.255 myIP src 192.168.100.3/255.255.255.255 Es un(a) IP Es un(a) elemento Es un(a) fuente Es un(a) IP Es un(a) elemento Es un(a) fuente Es un(a) IP Es un(a) elemento Es un(a) fuente No.2 A continuación se listan algunos de los elementos que se controlan en el proxy. Defina cuál es la definición correcta que corresponde a cada uno escogiendo del menú de opciones. Definición Fuente del cliente, dirección IP Elemento src dst myip srcdomain srcdom_regex Servidor de destino dirección IP src dst myip srcdomain srcdom_regex La dirección local o IP del cliente src dst myip srcdomain srcdom_regex Nombre del dominio fuente, src cliente dst myip srcdomain srcdom_regex Fuente (cliente) que cumpla una src expresión regular dst myip srcdomain srcdom_regex Plataformas Tecnológicas y Gestión _ imprimible 85 de 115 No.3 A continuación se listan algunos de los elementos que se controlan en el proxy. Defina cuál es la definición correcta que corresponde a cada uno escogiendo del menú de opciones. Definición Elemento Puerto local del cliente que se myport conecta proto method arp Protocolo de transferencia, http, ftp myport y otros proto method arp Método del requerimiento http (get, myport post y otros) proto method arp Coincidencia sobre la dirección de myport la tarjeta de red. MAC proto method arp No. 4 Ubique cada palabra en orden para formar una frase relacionada con el Servidor Proxy: SQUID. Haga clic sobre la palabra para irla añadiendo a la frase. Cuando usted crea que su respuesta es correcta, haga clic en “revisar” para verificar su respuesta. Si tiene problemas, haga clic en “pista” para saber cuál es la palabra que sigue en la frase. Las memorias cache son áreas del disco duro en donde residen las páginas más comunes Plataformas Tecnológicas y Gestión _ imprimibles 86 de 48 2.7.Firewall: iptables 2.7.1 Definiciones sobre un firewall Un firewall http://es.wikipedia.org/wiki/Firewall es un elemento que puede ser hardware o software que está en capacidad de conocer el tráfico existente entra dos o más redes y que a través de políticas de filtrado puede controlar lo que es aceptable o no que fluya en la red para seguridad de la información. Dentro de la información que viene en una comunicación tcp/ip está el IP de origen y el puerto. Esta información continuará existiendo cuando los datos sigan su camino y con frecuencia es deseable que no se conozca por terceros más si por el sistema. Para estos casos un firewall debe estar en capacidad de cambiar estos datos y almacenar en unas tablas lo datos de origen a lo cual se le denomina un NAT o Network Address Translation o traductor de direcciones de red. Un firewall es un dispositivo que filtra el tráfico entre redes, como mínimo dos. El firewall puede ser un dispositivo físico o un software sobre un sistema operativo. En general debemos verlo como una caja con dos o mas interfaces de red en la que se establecen una reglas de filtrado con las que se decide si una conexión determinada puede establecerse o no. Incluso puede ir más allá y realizar modificaciones sobre las comunicaciones, como el NAT. Las políticas se almacenan en tres tablas que se han agrupado a medida que ha avanzado el desarrollo de iptables y que definiremos a continuación: Tabla FILTER Tabla NAT Tabla MANGLE usada para el filtro de paquetes y que contiene tres estados que se llaman INPUT, OUTPUT y FORWARD para trasladar direcciones, como ya se explicó, a lo cual también se le llama masquerading y que tiene dos estados llamados PREROUTING para hacer modificaciones al tráfico que nos llega y POSTROUTING para modificar paquetes creados localmente antes de enrutarlos y OUTPUT para alterarlos en el momento de salida para alterar el estado de un paquete es decir las variables relacionadas con el tipo de servicio Aquí vamos a trabajar con la tabla FILTER. Un diagrama explicativo de un firewall es el siguiente: Como se puede observar se tiene acceso a Internet a través de un enrutador http://es.wikipedia.org/wiki/Router cuyo objetivo es poder hacer pasar los paquetes entre las redes usando unas tablas de enrutamiento. La red local está conectada a un switch o hub. El firewall vigilará, dependiendo de las políticas implementadas, qué paquetes de datos pasarán o no a la red así 86 Plataformas Tecnológicas y Gestión _ imprimibles 87 de 48 como cuáles pueden salir. Es posible poner varios firewalls dentro de la red dependiendo de las necesidades de la compañía. En ocasiones se necesitan servidores que permitan cualquier conexión como es el caso del correo electrónico el cual se debe recibir y después si analizar asuntos como el spam por ejemplo. En estos casos esos servidores se colocan en una zona de la red llamada Desmilitarizada o DMZ como se ve en el diagrama siguiente: L La red local sigue siendo protegida por el firewall.!!! Sin embargo son muchas las posibilidades de conexiones de la red pues cada organización es diferente. Otro ejemplo del firewall en el cual se tienen por separados los servidores de Correo y de Internet puede ser el siguiente: 2.7.2 ¿Qué es lo que se puede filtrar? El concepto hasta ahora explicado es relativamente sencillo y se puede asimilar al ejemplo de poner una operadora telefónica que filtre las llamadas a los directivos de una empresa basada en consultar antes de pasarla a quién va dirigida. Vigilará por ejemplo: de quién viene la llamada, cuál es el tema y de esta manera decidirá si la pasa o no o si la redirecciona a otro funcionario de nivel más operativo o si la desecha. Es de imaginarse que ese es el caso de los programas de radio en vivo en el cual llaman los oyentes a dar sus opiniones y en los cuales algún filtro se debe poner. La dificultad radica en que el oyente puede decir mentiras sobre lo que va a decir y ya en vivo aprovecharse de las circunstancias quedando de todas maneras la opción de cancelarle la llamada si se está sobrepasando a los códigos de ética del programa radial. En el caso de las redes informáticas se tienen algunas verntajas ya que lo que se va a decir que son los datos ya vienen empaquetado en una cadena de caracteres de las tramas de tcp/ip. Es entonces la hora de recordar lo que se estudió en el punto 1.1 de este Capítulo que trató sobre el protocolo tcp/ip. En esa trama viene el encabezado y los datos mismos que van a ser analizados por el firewall asi que entrando en materia informática y dejando a un lado los ejemplos mencionados de la llamada telefónica de una persona o el 87 Plataformas Tecnológicas y Gestión _ imprimibles 88 de 48 programa radial, debemos mencionar loe elementos sujetos a filtrado usando el lenguaje de tcp/ip. Cuando los datos llegan al sistema estos pasan por unas listas de reglas que se denominan cadenas (o tablas como ya las comentamos) unas de las cuales llamada FILTER tiene 3 básicas llamadas INPUT, OUTPUT Y FORWARD como se ve en este diagrama: Cada vez que un paquete llega a uno de los rombos que dice INPUT, OUTPUT o FORWARD se examina la información que viene allí y es la política la que determina si para el proceso, es decir desecha esa cadena de datos (DROP) o la acepta (ACCEPT) en cuyo caso la deja seguir. DROP y ACCEPT son las palabras que entiende el firewall para tomar una acción. Pero una cadena es una lista de varias reglas y el paquete se someterá a ellas bajo unas normas que son: a) Si el paquete se ajusta a la norma se lleva a cabo la acción: DROP o ACCEPT b) Si el paquete no se ajusta a la norma consulta la siguiente regla c) Si se llega al final y no hay más reglas cumple la última regla que se llama “la regla del paquete” que decide que hacer y que por seguridad siempre es DROP, es decir que si el paquete no encontró reglas aceptadas lo descarta. Repasando la secuencia y siendo más explícitos esta es la secuencia que sufre el paquete: 1. 2. 3. 4. El núcleo de Linux cuando llega un paquete es mirar su destino es decir para dónde va y definir su ruta a lo cual se le llama encadenamiento. Si el destino es el mismo servidor pasa al paquete a la cadena INPUT en donde se someterá a las reglas escritas. El núcleo podría haberse compilado con o sin capacidades de reenvío y si esta opción está activada pasará a someterse a las reglas de la cadena FORWARD. Para terminar, los paquetes que salen se someten a la cadena OUTPUT y salen hacia el destino a que está dirigido. Las reglas o políticas están orientadas a decidir el destino de los datos es decir ser aceptados (ACCEPT) o descartados (DROP) revisando los encabezados 88 Plataformas Tecnológicas y Gestión _ imprimibles 89 de 48 que tcp/ip trae en sus tramas. Este manejo de las reglas tienen unas características que debemos conocer antes de entrar en el propio uso de iptables que es el firewall escogido para este curso: a) Mantenimiento de las reglas: a iptables se le puede indicar cuándo una regla se debe añadir, modificar o eliminar lo cual significa que hay un método de editarlas para darles un mantenimiento permanente. b) Especificación de las direcciones ip: estas direcciones siempre son de origen (source) o destino (destination) y se pueden indicar con IP numéricos a los nombre de dominios como linux.domain.com.co con la opción de especificar rangos de direcciones en los IP’s numéricos por ejemplo: 192.100.207.0/24 lo cual significa que se refiere a una dirección IP que comienza por 192.100.207 (los 3 primeros octetos es decir 24 bits) y que debe tener en cuenta aquellos cuyo último octeto caiga dentro de los válidos al aplicar un “exclusive or”. Es equivalente a especificar 192.100.207.0/255.255.255.0 El número 24 se refiere al número de bits con el valor 1de la máscara o sea que 11111111.11111111.11111111.00000000 tiene 24 bits en 1. En este caso se refiere a las direcciones que van desde 192.168.100.0 hasta 192.168.100.255 Si la especificación fuera 192.168.100.0 /32 solo aceptaría direcciones de la subred 192.255.255 c) Negaciones de las políticas: cuando se desea indicar que lo que se debe aplicar es lo contrario se usa el carácter ! Por lo que decir !192.168.100.4 es indicar que la política se refiere a los IP’s que no sean 192.168.100.4 d) Especificar protocolos: muchas veces las reglas se refieren los protocolos que está usando el tcp/ip en una trama definida. Por decir algo ya no referirse a un IP o rango de IP’s sino al hecho que se esté usando el protocolo TCP por ejemplo. En este sentido la reglas se pueden referir a TCP, UDP o ICMP e igualmente tiene la opción de usar negaciones: ! e) Interfaces: los paquetes de FORWARD tienen la posibilidad de indicar el interface es decir la tarjeta física de salida para lo cual se usan las especificaciones estándar de Linux como eth0, eth1... ethn para referirse a las tarjetas de red, o ppp0 en las interfaces punto a punto como un modem por ejemplo permitiendo manejo interesantes como indicar todas las interfaces usando el carácter + asi que ppp+ se refiere a todos los interfaces punto a punto. f) Fragmentos: cuando un paquete es más grande que los buffers de tcp/ip este protocolo los descompone en fragmentos y luego el destino los reensambla bajo un algoritmo propio de tcp/ip. Cuando hablamos de reglas o políticas del firewall aparece la pregunta: ¿y cómo ponerlas para los fragmentos ? La respuesta es que existen especificaciones en la sintaxis de las normas para poder especificar los números de los fragmentos. Cabe anotar que bastaría aplicarla al primero ya que si este es descartado, nunca se reensamblaría en el destino aunque no es lo más ortodoxo de hacer pensando en desempeño y aun 89 Plataformas Tecnológicas y Gestión _ imprimibles 90 de 48 en seguridad. g) Extensiones: hay extensiones a lo expresado hasta ahora de tal manera que el filtrado de protocolos TCP, UDP, ICMP permiten muchas opciones sobre las cuales mencionaremos algunos ejemplos más adelante cuando entremos al manejo propio de la herramienta. h) Cadenas propias de los usuarios: fuera de las cadenas ya mencionadas como son INPUT, OUTPUT, FORWARD, los usuarios pueden crear sus propias cadenas de tal manera que en las especificaciones se le pude indicar al Firewall que en lugar de un DROP o un ACCEPT de un salto a una cadena de usuario que tendrá la complementación de la reglas. 2.7.3 iptables en funcionamiento. Lo primero que debemos hacer es comprobar si iptables está en nuestro sistema con los siguientes pasos: a. Comprobar si está instalado: rpm -q iptables a los cual el sistema debe dar una respuesta del estilo iptables-1.3.0-2 b. Si no está instalado, instalarlo usando el procedimiento explicado en el documento dhcp-instalacion.pdf c. En este caso no vamos a entrar al archivo de configuración sino que editaremos las políticas a través de los comandos. d. Arrancar iptables: /sbin/service iptables start o /etc/rc.d/init.d/iptables Stara Debe aparecer un OK en color verde en la pantalla en cuyo caso siga al paso 7, pero puede suceder que no suceda lo anterior así que se debe comprobar el estado de iptables, vaya al paso siguiente. e. Use /etc/rc.d/init.d/iptables status para ver el estado de iptables. Si la respuesta es Firewall is stoped es porque aun no tiene el archivo de configuración. f. El archivo de configuración debe debe estar en /etc/sysconfig y se debe llamar iptables. En este caso crearlo usando touch /etc/sysconfig/iptables y comprobar que quedó creado con ls -l /etc/sysconfig/iptables g. Con la cuenta de root, levante el sistema nuevamente como se indicó en el paso 4. Taller de comprobación A continuación se proponen una serie de ejercicios para el manejo de políticas para la filtración de paquetes utilizando iptables. Los ejerccios están explicados detalladamente, se recomienda que el estudiante los practique en su computador para entender los conceptos 90 Plataformas Tecnológicas y Gestión _ imprimibles 91 de 48 explicados. mejor. Ejercicio 1 Nombre del ejercicio Ejercicio 2 Ejercicio 3 Ejercicio 4………………….15 Ejercicio 1 Impedir el uso del comando ping al loopback del servidor El loopback del servidor es la dirección 127.0.0.1 que es, por decirlo de alguna manera, la dirección de si mismo y que la tienen todos los servidores al configurar la tarjeta de red. El comando ping verifica si hay comunicación con la red usando la opción -c 1 para que solo pruebe una vez. ping es un comando del protocolo ICMP. Verificamos si hay conexión: # ping -c 1 127.0.0.1 PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data. 64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.085 ms --- 127.0.0.1 ping statistics --1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 0.085/0.085/0.085/0.000 ms, pipe 2 Observe el mensaje 0% packet loss que indica que si hay conexión y que no se perdieron paquetes. Ahora indiquémosle a iptables la creación de una regla que impida esta comunicación: # /sbin/iptables -A INPUT -s 127.0.0.1 -p icmp -j DROP El comando le dice a iptables: Adicione una regla (-A), a la cadena de INPUT para que lo que llegue de entrada (-s o sea source) del IP 127.0.0.1 y que corresponda al protocolo icmp salte (-j o jump) a la acción DROP es decir denegando la conexión. Ahora probemos nuevamente la conexión: 91 Plataformas Tecnológicas y Gestión _ imprimibles 92 de 48 # ping 127.0.0.1 PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data. --- 127.0.0.1 ping statistics --1 packets transmitted, 0 received, 100% packet loss, time 0ms Esta vez no hay respuesta, observe el mensaje después de unos segundos 100% packet loss que indica que se perdieron los paquetes pues la regla está obedeciendo . Ejercicio 2 Listar las reglas con la opción -L Para listar las reglas activas: # /sbin/iptables -L Chain FORWARD (policy ACCEPT) target prot opt source destination Chain INPUT (policy ACCEPT) target prot opt source DROP icmp -- localhost destination anywhere Chain OUTPUT (policy ACCEPT) target prot opt source destination Ejercicio 3 Borrar una regla # /sbin/iptables -D INPUT 1 Estamos borrando la regla número 1 y si se comprueba con -L se pude ver que ya no existe y que el ping vuelve a funcionar. Ejercicio 4 Especificaciones de filtrado. Muchas veces se necesita indicarle a iptables que lo que queremos filtrar es un protocolo que se va a usar, un IP de origen o fuente, un IP de destino para lo cual usa una sintaxis que incluye esta información con el siguiente indicativo: -p para especificar una regla relacionada con un protocolo -s para especificar una regla para especificar la fuente, es decir de donde 92 93 de 48 Plataformas Tecnológicas y Gestión _ imprimibles vienen los datos -d para especificar una regla relacionada con el destino, es decir hacia donde van los datos. Ejercicio 5 Prohibir la entrada a cualquier IP Para impedir cualquier entrada al sistema basado en la identificación de la fuente: /sbin/iptables -A INPUT -s 0/0 -j DROP Ejercicio 6 Inversión. Se refiere a indicar no a la regla Para eso se usa el carácter admiración ! antes de una dirección por ejemplo para indicar que la regla se refiere a una fuente que no sea localhost: -s ! localhost Veamos esta regla linux.domain.com.co: para detener todo lo que /sbin/iptables ipchains -A linux.domain.com.co -j DROP no INPUT venga de -s ! El sentido de este comando es: Agregue (-A) a la cadena INPUT un control para que lo que no vaya a linux.domain.com.co (! linux.domain.com.co) sea descartado (-j DROP) Ejercicio 7 Descartar cualquier uso del protocolo tcp iptables -A INPUT -p tcp -j DROP Es el momento de mirar el archivo de los servicios de Linux en /etc/services. Allí encontrará las especificaciones de los puertos y servicios indicando entre otras cosas la categoría a que pertenece cada uno es decir si son del protocolo tcp, udp o icmp. Sugerimos mirarlo con un editor de texto o: vi /etc/services Si quiere ver cuáles pertenecen al protocolo TCP: cat /etc/services|grep tcp Observe que ssh es tcp o sea que después de añadir esta regla no permitirá hacer ssh. 93 Plataformas Tecnológicas y Gestión _ imprimibles 94 de 48 Ejercicio 8 Descartar un IP específico /sbin/iptables -A INPUT -s 192.168.100.3 -j DROP No aceptará ninguna conexión que venga del computador cuyo IP sea 192.168.100.3 Ejercicio 9 Descartar cualquier conexión que vaya a una tarjeta de red o interfaz específica /sbin/iptables -A INPUT -i eth0 -j DROP Es una manera de “desconectar” de manera lógica, no física, la tarjeta de red pues cualquier conexión hacia ella va a ser descartada. Recordar que un servidor puede tener varias tarjetas de red o interfaces: eth0, eth1, eth2 etc. Ejercicio 10 Descartar accesos a un protocolo y un servicio específico Si mira el servicio de http en /etc/services observará que tiene el puerto 80. Dicho de otra manera el protocolo http que es el servidor de web, es decir Apache, “escucha” por el puerto 80 para ver si alguien se conecta con un navegador de la forma http://servidor La manera de desconectar este servicio usando el firewall es: /sbin/iptables -A INPUT -p TCP --sport 80 -j DROP Agregue (-A) una regla a la cadena INPUT para descartar (-j DROP) las conexiones al protocolo tcp (-p TCP) que vayan al puerto 80 (--sport 80) Si tiene levantado su Apache con /sbin/service httpd start, observará que al acceder con el navegador de la forma http://linux.domain.com.co este no carga la hoja inicial de Apache después de crear la regla anterior. Ejercicio 11 Descartar un protocolo que viene de una fuente determinada. Miremos este comando: /sbin/iptables -A INPUT -p TCP -s 192.168.100.5 -j DROP 94 Plataformas Tecnológicas y Gestión _ imprimibles 95 de 48 Para probar este comando debería tener otro pc (puede ser de windows) conectado por red con el IP 192.168.100.5 y al crear la regla verá que no obedece a la conexión web, por ejemplo por ser esta tipo tcp desde ese pc. Ejercicio 12 Descartar un protocolo que viene de una fuente determinada para un puerto específico. La manera de rechazar cualquier comunicación del protocolo (-p) tcp con desde la fuente (-s) 192.168.100.5 para un servicio específico como ftp,ssh o http sería con esta regla: # /sbin/iptables -A INPUT -p tcp --dport 80 -j DROP En este caso rechaza paquetes tcp que van al puerto 80 Ejercicio 13 Descartar solicitudes al servicio ssh que es un tcp al puerto 22 /sbin/iptables -A INPUT -p tcp --sport 22 -j DROP En este caso no deja hacer ssh desde el propio servidor pero si de otros. Ejercicio 14 Descartar banderas Se llaman banderas o flags a ciertos indicadores de conexión. Por ejemplo cuando un pc se conecta a un servidor el TCP/IP envía una bandera llamada SYN para decirle “ahí voy” y si la conexión va por buen camino el servidor le responde ACK es decir, “estoy listo”. Es posible entonces colocar reglas más internas como estas para descartar cualquier datos que contenga cierto tipo de banderas. /sbin/iptables -A INPUT -p tcp --tcp-flags SYN,FIN,ACK SYN -j DROP No acepta tramas de datos que tengan esas banderas: SYN, FIN,ACK Ejercicio 15 Descartar por protocolo icmp Este protocolo icmp o Internet Control Message Protocol es el que permite que TCP/IP envíe mensajes de sus resultados y como ya vimos, uno de estos 95 Plataformas Tecnológicas y Gestión _ imprimibles 96 de 48 es el que usa el comando ping. En realidad ping es el mensaje tipo 8 del icmp. Y así como este existen muchos más. Si desea conocer la tabla completa de clic aquí Tipos de ICMP TIPO 0 3 3 3 3 CODIGO 0 0 1 2 3 3 4 3 3 3 3 5 6 7 8 3 9 3 10 3 3 11 12 3 13 3 3 4 5 5 5 5 8 14 15 0 0 1 2 3 0 9 0 9 16 10 11 11 12 12 0 0 1 0 1 Descripción Query Error Reference Echo Reply x RFC792 Network Unreachable x RFC792 Host Unreachable x RFC792 Protocol Unreachable x RFC792 Port Unreachable x RFC792 Fragmentation needed but no x RFC792 frag. bit set Source routing failed x RFC792 Destination network unknown x RFC792 Destination host unknown x RFC792 Source host isolated (obsolete) x RFC792 Destination network x RFC792 administratively prohibited Destination host administratively x RFC792 prohibited Network unreachable for TOS x RFC792 Host unreachable for TOS x RFC792 Communication administratively x RFC1812 prohibited by filtering Host precedence violation x RFC1812 Precedence cutoff in effect x RFC1812 Source quench RFC792 Redirect for network RFC792 Redirect for host Redirect for TOS and network RFC792 Redirect for TOS and host RFC792 Echo request x RFC792 Router advertisement - Normal RFC1256 router advertisement Router advertisement - Does not RFC2002 route common traffic Route selection RFC1256 TTL equals 0 during transit x RFC792 TTL equals 0 during reassembly x RFC792 IP header bad (catchall error) x RFC792 Required options missing x RFC1108 96 Plataformas Tecnológicas y Gestión _ imprimibles 97 de 48 TIPO 12 13 14 15 16 17 18 CODIGO Descripción Query Error Reference 2 IP Header bad length x RFC792 0 Timestamp request (obsolete) x RFC792 Timestamp reply (obsolete) x RFC792 0 Information request (obsolete) x RFC792 0 Information reply (obsolete) x RFC792 0 Address mask request x RFC950 0 Address mask reply x RFC950 Zaw-Sing Reserved for robustness 20-29 Su experiment 30 0 Traceroute x RFC1393 31 0 Datagram Conversion Error x RFC1475 David 32 0 Mobile Host Redirect Johnson Bill 33 0 IPv6 Where-Are-You x Simpson Bill 34 0 IPv6 I-Am-Here x Simpson Bill 35 0 Mobile Registration Request x Simpson Bill 36 0 Mobile Registration Reply x Simpson Tom 39 0 SKIP Markson 40 0 Photuris RFC2521 Observe que el icmp tipo 8 se llama echo request es decir ping ……. Una manera de rechazar conexiones de ping diferente a la del primer ejemplo es : /sbin/iptables –A INPUT –p icmp –icmp-type 8 –j DROP Si quisiéramos rechazar otros icmp bastaría con indicar el tipo en el comando. 2.7.4 Resumen En esta sección se definió qué es un firewall y se explicó cómo este dispositivo o software se ubica como parte de la red para controlar todo el tráfico de datos de llegada y de salida para que sobre ellos se apliquen políticas de filtrado o cambio de rutas que contribuya a decidir qué se quiere aceptar o no dentro de la red de una empresa. Se explicaron los tres tipos de tablas FILTER, NAT, MANGLE que usa iptables 97 Plataformas Tecnológicas y Gestión _ imprimibles 98 de 48 el firewall más conocido de Linux y nos concentramos en la Tabla FILTER para el filtrado de paquetes con la cual se desarrollaron una serie de ejemplos bien documentados y fáciles de probar por parte del estudiante que contribuyeron a entender la sintaxis de los comandos que iptables entiende para su funcionamiento. 2.7.5 Ejercicios iptables trabaja con tres tipos de tablas que permiten filtrar los datos de entrada y de salida. Determine a que nombre corresponde la dfinición escogiendo entre las opciones del menú. FILTER NAT MANGLE FILTER NAT MANGLE Traslada direcciones de un valor a FILTER otro tanto el el tráfico de llegada, antes NAT de enrutarlos y en el momento de MANGLE salida Altera el estado de un paquete desde el punto de las variables relacionadas con el tipo de servicio Filtra paquetes 2.8 Conectividad con Windows – Samba SAMBA - SMB - Server message Block http://samba.org es un conjunto de aplicaciones que permiten establecer una arquitectura cliente/servidor para la compartición de recursos en sistemas heterogéneos. Se desarrolló con la idea que Unix entendiera a los pc´s más que al revés. Microsoft desarrollo SMB http://es.wikipedia.org/wiki/SMB en los sistemas operacionales Windows para trabajo en grupo, Windows 95, Windows 98 y se extendió a Windows 2000 y XP para poder compartir y acceder los archivos e impresoras de la red local desde cualquiera de los pc’s. Al principio solo soportaba Netbeui http://es.wikipedia.org/wiki/NetBEUI que ahora se conoce como Lan Manager y Netbios http://es.wikipedia.org/wiki/NetBIOS. Actualmente también soporta los protocolos tcp/ip y ipx/spx, este último de Novell. Samba nace en Diciembre de 1993 por Andrew Tridgell http://en.wikipedia.org/wiki/Andrew_Tridgell para que un computador Linux instalado en una red local Windows se comporte como uno más de la red y pueda también ser usado como servidor de archivos e impresoras más otras funcionalidades adicionales. En el siguiente diagrama se observa una configuración de red utilizando 98 Plataformas Tecnológicas y Gestión _ imprimibles 99 de 48 Samba: Samba tiene una serie de programas que componen la totalidad del sistema como son: smbd nmbd smbclient smbrun testprns smb.conf testparms smbprint el servidor silencioso de Samba. Maneja las conexiones desde los clientes, haciendo que los archivos, sus permisos y el control de usuarios autorizados trabajen correctamente. es el servidor de nombres de Netbios el cual ayuda a los clientes a localizar los servidores haciendo que el navegador (entorno de red) administre los dominios. De acuerdo a como se haya configurado Samba es el programa de manejo o anfitrión de Unix para que se atienda al cliente. un programa que ayuda al servidor a correr programas externos. un programa para analizar el acceso de impresoras desde el servidor. el archivo de configuración de Samba. un programa que efectúa un análisis de configuración de Samba sobre el archivo /etc/samba/smb.conf un script de ejemplo para que le permita a un servidor unix usar smbclient para imprimir en un servidor de Samba. Con relación a Samba se estudiarán en detalle los siguientes aspectos: El archivo de configuración /etc/samba/smb.conf Plataformas de trabajo Directivas El archivo de configuración /etc/samba/smb.conf Antes de entrar en ese detalle lo primero que debemos hacer es comprobar si samba está en nuestro sistema con los siguientes pasos: a. Comprobar si está instalado: rpm -q samba a los cual el sistema debe dar una respuesta del estilo samba-3.0.14a-2 b. Si no está instalado, instalarlo usando el procedimiento explicado en el documento dhcp-instalacion.pdf 99 Plataformas Tecnológicas y Gestión _ imprimibles 100 de 48 Samba se configura a través de un archivo llamado /etc/samba/smb.conf el cual tiene una serie de parámetros que determinan su comportamiento. Usaremos un archivo de configuración de ejemplo que se encuentra en smb.ejemplo.conf dentro de los anexos de esta sección lo cual nos permite arrancar en funcionamiento para hacer las explicaciones en vivo. Por lo que se deben hacer los siguientes pasos: A) Copiar, como root, /etc/samba/smb.conf a /etc/samba/smb.conf.ini para tener una copia de seguridad del archivo de configuración que viene con el sistema. B) Copiar sobre /etc/samba/smb.conf el archivo smb.ejemplo.conf que viene en los anexos. Este archivo ya viene configurado para compartir un directorio ubicado en el directorio raíz llamado /compartidos en el cual vamos a crear un archivo de texto llamado archivo1 con un texto cualquiera. Por ejemplo: Este es un archivo compartido. Para eso hacemos los siguientes pasos: Entrado como usuario root: • Crear el directorio: mkdir /compartidos • Crear dentro de archivo1 con un editor como vi por ejemplo • Dar permisos al directorio /compartidos: chmod u+rwx,g+rx,o+rx /compartidos/ • Poner de dueño a su usuario personal: chown -R usuario:usuario /compartidos Se debe arrancar samba: /sbin/service smb start o /etc/rc.d/init.d/smb start Debe aparecer un OK en color verde en la pantalla. Pueden suceder que en Fedora 4 el Firewall del sistema tenga habilitada la protección de SELinux para el demonio smbd en cuyo caso no permitirá grabar desde los pc’s en los directorios de Linux por lo que en el Interfaz gráfico KDE o Gnome en este caso seleccione Escritorio / Configuración del sistema/Nivel de seguridad. El sistema le pedirá el password de root y aparece un Interfaz. Seleccione la pestaña Samba e Inhabilite la protección de SELinux para el demonio Samba y de aceptar a esa ventana. L Hasta ahora solo hemos iniciado samba con un archivo de ejemplo que debe funcionar así que procederemos, y en un instante tendremos acción para por primera vez compartir archivos de Linux en la red windows. Paciencia ! 100 Plataformas Tecnológicas y Gestión _ imprimibles 101 de 48 Plataformas de trabajo Para comprender mejor lo que vamos a hacer, imaginémonos un servidor Linux llamado linux.domain.com el cual tiene samba como un servicio activo y un PC con Windows XP el cual está configurado con soporte de red. Al conectarse, este a la red detectará al servidor Linux con samba e incluirá el servidor en el entorno de red como un pc más de la red. Dependiendo de la configuración de samba, se podrán usar una serie de servicios de conectiividad desde el pc de windows, tal como compartir archivos del servidor, recursos como la impresora o el cd etc. Ubicados en el pc de Windows que debe pertenecer a la misma red del de Linux debemos seleccionar Mis sitios de red/Ver equipos del grupo de trabajo y aparecerá: Como se puede observar Windows ya incluyó al servidor Linux en su entorno de red identificado por el mismo nombre de grupo del equipo windows. Puede ir mirando /etc/samba/smb.conf y verá cómo una de las directivas dice: 101 Plataformas Tecnológicas y Gestión _ imprimibles 102 de 48 workgroup = GRUPO Que es la que identifica al servidor Linux en ese grupo. Continuando con el interfaz en el equipo de Windows de doble click a Samba Server: Aparece una carpeta llamada public y un ícono de las impresoras de Linux. Esto obedece a la directiva de /etc/samba/smb.conf llamada [public] (Léala en su equipo): [public] comment = Public Stuff path = /compartidos public = yes read only = no writable = yes printable = no Aquí observamos más cosas como por ejemplo que es en dónde le decimos a Linux que /compartidos es la carpeta o directorio a compartir y que queremos que aparezca con el nombre public en windows. 102 Plataformas Tecnológicas y Gestión _ imprimibles 103 de 48 Y las impresoras aparecen por la directiva de /etc/samba/smb.conf: printcap name = /etc/printcap load printers = yes cups options = raw [printers] comment = All Printers path = /var/spool/samba browseable = no # Set public = yes to allow user 'guest account' to print guest ok = no writable = no printable = yes Si a continuación damos doble click en public: Aparece el archivo1 listo para ser leído desde Windows haciéndole doble click. Este primer paso nos ayuda a ir entendiendo hacia donde se enfoca samba como servidor de archivos e impresoras. 103 Plataformas Tecnológicas y Gestión _ imprimibles 104 de 48 No pretendemos hacer del curso un manual de samba, que ya existen muchos en la web, asi que nos enfocaremos solamente en sus capacidades como servidor de archivos e implementaremos algunas de sus funcionalidades en vivo. El método de trabajo será presentar la funcionalidad, definirla de acuerdo a como la usa samba, identificar las directivas dentro de /etc/samba/smb.conf, cambiar el archivo de configuración, reiniciar samba y probar. Cada vez que se modifique samba.conf se sugiere correr el programa /usr/bin/testparm situándose en el directorio /etc/samba, programa que hace un chequeo de sintaxis al archivo de configuración y ayuda a detectar errores. Igualmente se debe bajar y subir samba con /etc/rc.d/init.d/samba restart !!!!! Ojo: restart !!! Directivas En esta sección vamos enunciar una serie de características de samba sobre las cuales, después de ser definidas, se insinuarán las directivas que puestas en el archivo de configuración logran el efecto deseado. En algunas se muestra gráficamente el resultado y el estudiante debe hacer el laboratorio en su equipo con otro que use windows y que esté conectado a la red. Las característica son: • • • • • • • • • • • • • Variables globales Workgroup Descripción del servidor: Server string Permitir o denegar acceso de servidores: hosts allow y hosts deny Archivos de bitácora - log Seguridad Encriptación: encrypt Creación de los usuarios de Linux dentro de samba. Concepto de Mapas de usuarios Configuración de Samba por máquina: include Mejorar comportamiento Directorio raíz Directorios privados :[directorio privado] Compartir directorio entre varios usuarios: [directorio] Compartir CD Variables globales Las variables globales afectan todo el entorno de despliegue de Samba. Se definen así: [global] 104 Plataformas Tecnológicas y Gestión _ imprimibles 105 de 48 Dentro de esta sección del archivo de configuración las directivas más pertinentes se describe a continuación: Workgroup La variable llamada workgroup determina el nombre con el cual se identifica el grupo al que pertenece el servidor en el entorno de red de Windows también llamado el navegador. Su formato es: workgroup = Nombre de Dominio de NT o Nombre de Grupo. En nuestro ejemplo se llama GRUPO y es el nombre que aparecerá en el navegador de windows workgroup = grupo Por eso es que al abrir el entorno de red de windows aparece este grupo. Recordemos como aparece: 105 Plataformas Tecnológicas y Gestión _ imprimibles 106 de 48 Descripción del servidor: Server string La variable server string es el equivalente al Campo del Descripción del desaparecido NT server string = Servidor de Samba o server string = Samba Server como aparece en nuestro smb.conf de prueba. Este es el nombre que aparecerá cuando en el entorno de red de Windows averigüemos las propiedades del servidor de Linux Permitir o denegar acceso de servidores: hosts allow y hosts deny Son dos opciones muy importante para la seguridad del sistema pues permiten restringir la conexión de máquinas que están en la red local. El siguiente ejemplo permite el acceso a las dos redes de clase C identificadas con el IP 192.168.1 y 192.168.2 y a la interfaz de loopback 127. Esto significa que solo tendrán acceso a los servicios de samba los nodos cuyas direcciones IP vayan de 192.168.1.1 hasta 192.168.1.254 o desde 192.168.2.1 hasta 192.168.2.254 así como el mismo servidor con su dirección llamada de loopback 127. Así mismo se puede prohibir de manera especifica el servicio al nodo cuyo nombre IP sea 192.168.100.3. En el ejemplo bastaría poner estas directivas a smb.conf: hosts allow = 192.168.1. 192.168.2. 127. hosts deny = 192.168.100.1 Probando con la directiva deny, es decir colocando hosts deny = 192.168.100.1 en smb.conf y reiniciando samba, al acceder al servidor samba desde windows aparecerá: 106 Plataformas Tecnológicas y Gestión _ imprimibles 107 de 48 Archivos de bitácora - log Samba maneja un archivo de bitácora llamado log en donde guardará todos los mensajes de samba para ofrecerle al administrador del sistema una historia de los accesos. Este archivo se llama /var/log/samba/log.smb en su forma estándar. Sin embargo, si quisiéremos que este archivo se generara por cada máquina que accede a samba podemos especificarlo con la opción log file = archivo de log por cada máquina. El parámetro siguiente le indica a Samba que use un archivo de log separado para cada máquina que se conecte. La forma de especificarlo es: log file = /var/log/samba/log.%m o log file = /var/log/samba/log.%m.log en este caso %m es una variable que significa el nombre de la máquina o del servidor que entra a usar Samba. De esta manera si un pc llamado rodrigo se conecta, su log quedará grabado en /var/log/samba/rodrigo.log. Y así para cada nodo que acceda a samba. Con esta opción, el administrador del sistema podrá hacer análisis de conectividad de una manera más completa. En el directorio /var/log/samba/ del servidor en donde se ha escrito este curso aparece un archivo llamado rodrigo.log debido a que la máquina windows con 107 Plataformas Tecnológicas y Gestión _ imprimibles 108 de 48 la que se hacen las pruebas se llama rodrigo. El tamaño del archivo de log se puede controlar con la opción max log size = tamaño en KB. De esta manera cuando se cope ese tamaño, reiniciará de manera circular el archivo de log y evitará que crezca infinitamente. Si quisiéramos que el tamaño del archivo de log sea máximo 50 KB la instrucción es: max log size = 50 Esto se puede ver en nuestro archivo smb.conf Samba chequea periódicamente el tamaño y cuando se pasa del especificado crea un archivo con el mismo nombre.old y lo reinicia. Seguridad La directiva security determina el tipo de seguridad desde el punto de vista de autenticación permitiendo una llamada user en que el cliente se conecta con un usuario/password solicitado desde el equipo conectad, server para que le de la responsabilidad de autenticar a otro servidor y share para que deje que el servidor permita entrada de acuerdo con los parámetros del archivo de configuración. Encriptación: encrypt Si queremos conservar el nivel de encriptación del pc de windows pero que este se sincronice con samba es necesario colocar: encrypt passwords = yes smb passwd file = /etc/smbpasswd La primera clausula, o sea encrypt passwords, mantiene el encriptamiento de las contraseñas y la segunda habilita el archivo llamado /etc/samba/smbpasswd para almacenarlas dentro samba. Creación de los usuarios de Linux dentro de samba. Los usuarios de Linux se deben crear dentro de /etc/samba/smbpasswd lo cual se hace usando el comando: smbpasswd usuario En este caso el sistema pide la contraseña dos veces para asegurarse que esté bien digitada y una vez hecho esto, e iniciado samba de nuevo, el sistema de windows y samba permitirán a ese usuario entrar a samba sin necesidad de cambiarle a windows el registro para deshabilitar el encriptamiento. Esta debe 108 Plataformas Tecnológicas y Gestión _ imprimibles 109 de 48 ser la manera natural de trabajar con samba. Si se desea crear toda la lista de los usuarios de Linux en Samba se usa el comando: mksmbpasswd < /etc/passwd > /etc/samba/smbpasswd Que toma todos los usuarios de /etc/passwd y crea la plantilla sobre /etc/samba/smbpasswd a continuación se le debe asignar el password a cada usuario de samba usando: smbpasswd usuario Concepto de mapas de usuarios Los usuarios de Unix pueden hacer un mapa para diferentes nombres de usuarios de SMB con el fin de trasladar equivalencias entre nombres de usuarios. La opción busca facilitar el hecho de que un usuario que no existe en Linux use la cuenta de otro que si tiene cuenta. La directiva que permite hacer esto se llama username map. Veamos su uso: username map = /etc/smbusers Para lograr este efecto existe en Linux un archivo de configuración llamado /etc/samba/smbusers dentro del cual se hacen los mapas o equivalencias de las cuentas. A continuacion vamos a ver un ejemplo: en /etc/samba/smbusers existen los mapas que se desean tener. Por ejemplo un usuario llamado admin que no tiene identificación en Linux se "mapea" así: root = admin entonces ese usuario admin entrará como root. Configuración de Samba por máquina: include Usando la siguiente linea, le permite al usuario personalizar su configuración sobre la base de las máquinas que se conectan. El símbolo %m se reemplaza con el nombre de la máquina que da el netbios de la máquina que se está conectando. include = /etc/samba/smb.conf.%m Mejorar comportamiento Los manuales de Samba dicen literalmente que algunos usuarios dicen que la siguiente opción mejora el comportamiento de la máquina. socket options = TCP_NODELAY 109 Plataformas Tecnológicas y Gestión _ imprimibles 110 de 48 Directorio raíz La opción [homes] define los servicios de Samba relacionados con el directorio home de los clientes. Como es sabido cada usuario de Linux, al entrar al sistema, se posiciona en el directorio llamado home, propio del usuario. Así, un usuario llamado manuel al entrar al sistema, queda localizado en el directorio /home/manuel. Samba permite definir si a este directorio se tiene o no acceso desde el entorno de red de windows a través de la siguiente sección llamada [home] [homes] comment = Home Directories browseable = no ; browsable = yes writable = yes ; path=/manuel/%S ; path=/aplicaciones Las directivas con ; al comienzo son comentarios y se muestran solo para recordar esas opciones. La explicación de estas opciones son: comment: para darle un nombre genérico interno a esta opción browsable: no, para que no aparezca el directorio llamado home entre las carpetas del directorio cuando sea abierto desde el entorno de red. yes para que si aparezca esta carpeta llamada home. En ambos casos aparece una carpeta con el nombre del usuario que ha entrado a linux desde windows. • writable= no para que no de permiso de escritura sobre este directorio y yes para que si le de permiso de escritura. path: el directorio asumido para un usuario es el directorio home/usuario que tenga en linux. De esa manera si no se especifica path el sistema entrará al directorio raiz. Si si se especifica path entonces la entrada se llevará a cabo al directorio especificado. Así se ve en windows: • 110 Plataformas Tecnológicas y Gestión _ imprimibles 111 de 48 Directorios privados :[directorio privado] Es el caso en el que un usuario quiere tener su propia carpeta en Linux para entrar desde otro pc de la red. Por ejemplo si un usuario llamado juan quiere que esto suceda se codifican las siguiente directivas: [juan] comment = Directorio de rodris. path = /home/juan public = no writable = yes printable = no Si se pone printable = yes aparecerá una impresora llamada juan. Si se pone no aparece el directorio juan apuntando al contenido de /home/juanl El efecto es que aparece en el navegador de windows la carpeta llamada juan pero solo deja que tenga acceso el usuario root con los permisos indicados. Así se ve desde windows: 111 Plataformas Tecnológicas y Gestión _ imprimibles 112 de 48 Al entrar a juan se accede a los archivos de /home/juan Asignar directorios por máquina: [pchome] Se puede definir un servicio que tiene un directorio diferente dependiendo de la máquina que lo acceda o aun del usuario que lo haga. La diferencia estará en el uso de la variable %m para la máquina o %u para el usuario. [pchome] comment = Directorio de los pcs path = /tmp/%m public = no writable = yes Desde windows se ve así: 112 Plataformas Tecnológicas y Gestión _ imprimibles 113 de 48 En el ejemplo anterior, si la máquina del cliente se llamara rodrigo entonces se debe crear el directorio /tmp/rodrigo en el servidor Linux o sea que por cada máquina debe aparecer un directorio en el navegador con el nombre indicado, pchome en este caso. Compartir directorio entre varios usuarios: [directorio] Las siguientes dos entradas demuestran cómo se puede compartir un directorio de tal manera que dos usuarios puedan colocar archivos que sean propiedad de usuarios específicos. En esta configuración, el directorio podría tener acceso de escritura por ambos usuarios y podría tener un conjunto de sticky bits sobre ellos para prevenir abusos. Recuerde que el sticky bit es una propiedad de modo de acceso en unix para que un programa frecuentemente usado mantenga una copia en la memoria aun después de salir de él para evitar cargas adicionales de arranque. Obviamente esto se puede extender a tantos usuarios como se desee 113 Plataformas Tecnológicas y Gestión _ imprimibles 114 de 48 [multiuso] comment = Asuntos de maria y pedro path = /compartidos valid users = root manuel public = no writable = yes printable = no create mask = 0765 En windows aparece: Compartir CD Fimalmente si queremos compartir el CD del servidor Linux desde los equipos windows o de otros sistemas como Unix de la red usaríamos estas directivas: 114 Plataformas Tecnológicas y Gestión _ imprimibles 115 de 48 [cdrom] path=/media/cdrrecorder root preexec = /bin/mount -r /dev/cdrom /media/cdrecorder root postexec = /bin/umount /media/cdrecorder read only = yes browsable = yes Miremos cómo se ve en windows: 115 116 de 48 Plataformas Tecnológicas y Gestión _ imprimibles 2.8.4 Resumen Se estudiaron los protocolos de la red local que usa windows como netbios, netbeui y el api smb que permiten que los equipos windows de una red local se conecten para compartir los archivos y las impresoras. El tema tiene un componente importante de tecnología para el manejo de las cuentas de usuarios y las contraseñas que también se explicó en esta sección. Luego se procedió a estudiar la manera como un servidor Linux conectado a la red puede ser parte de la misma utilizando Samba de tal manera que pudiera servir como servidor de archivos y de impresoras como uno más de la red sin discriminaciones de sistema operacional. Se comenzó con un archivo de configuración sencillo y a medida que se explicaron los conceptos se fueron haciendo prácticas modificando ese archivo para que operara como era de esperarse. De esa manera se fueron explicando y practicando los conceptos de carpetas compartidas, seguridad de autenticación, manejos de contraseñas en ambos sistemas, usuarios con permisos de compartir directorios y en general las funcionalidades más importantes de Samba como servidor de archivos. Se terminó configurando el CD de Linux para ser compartido por toda la res de pc’s windows. Al final de este ejercicio hemos construido un archivo de configuración que se encuentra en los anexos llamado smb.conf 2.8.5 Ejercicio Seleccione las directivas cuya explicación es la correcta, eligiendo su respuesta entre verdadero (V) o falso (F) de acuerdo con lo anteriormente expuesto. Directiva Verdadero path=/media/cdrrecorder - Visualiza el directorio de montaje del cd en el servidor de Linux OK root preexec = /bin/mount /dev/cdrom /media/cdrecorder seleccionar el ícono monta el cd -r Al OK root postexec = /bin/umount /media/cdrecorder - Al salir desmonta el cd Ok read only = yes - Tiene permisos de escritura Falso Ok 116 117 de 48 Plataformas Tecnológicas y Gestión _ imprimibles browsable = yes - No permite navegar sobre él ok 117