Bienvenidos a: TCP-IP SOBRE LINUX ING.SEGUNDO FEDERICO AREVALO CALDERON PROTOCOLO TCP-IP SOBRE LINUX Objetivos del Modulo Después de completar este módulo los participantes deberán ser capaces de: Enumerar y describir los principales protocolos incluidos en el protocolo TCP / IP Describir el modelo de capas TCP / IP Discutir las principales características de los principales protocolos TCP / IP. Describir el direccionamiento IP Qué es TCP/IP Protocolo de control de transmisión / Protocolo de Internet Conjunto de protocolos que trabajan juntos TCP, IP, UDP, ARP, ICMP, PPP, ... Los estándares abiertos Permite la comunicación entre sistemas heterogéneos Soporta diferentes tipos de redes físicas HISTORIA 1960s 1970s Agencia Principal de financiamiento de DARPA ARPANET punto a punto de interconexion de lineas arrendadas 1980 1983 1980s 1980s 1990s Internet establecida, ARPANET como backbone TCP/IP en el uso obligatorio ARPANET BSD UNIX incorporada TCP/IP TCP/IP disponible en casi todos los sistemas informáticos TCP/IP se convierte en el protocolo de elección para la mayoría de las organizaciones, el crecimiento explosivo de Internet. Peticiones de Comentarios (RFC) ¿Qué significa RFC? ¿Quién escribe estas RFC? ¿Cuáles son las RFC interesantes? ¿Cómo se pueden obtener? http://bit.ly/13RhIE1 http://www.rfc-editor.org Capas TCP/IP Las aplicaciones como NFS, NIS, correo, DNS UDP Entrega no fiable para corregir programa TCP Entrega fiable para corregir el programa IP Suministro fiable de paquetes de sistema correcto WAN (Conexiones de módem, líneas de arrendamiento, ...) LAN (Ethernet, Token Ring, ...) Arquitectura de Red que soporta Linux Redes de Área Amplia - Conexiones Serial/modem/ISDN - Protocolo CCITT X.25 (en desarrollo) - ATM (en desarrollo) - Frame Relay (dlci o sdla) Redes de Área Local - Ethernet (eth) - Token Ring (tr) - FDDI (fddi) - ARCnet (arc) - WiFi (eth) Varios - Loopback (lo) - AX.25 (sl or ax) LAN y el Protocolo ARP La mayoría de las LAN se transmiten las redes en el nivel más bajo - Todo el mundo recibe lo que usted está enviando Para identificar el receptor, se utiliza una dirección MAC - 48 bits, únicos para el adaptador de red - Notación: 02:60:8 C: 2E: 9B: CA - Dirección Especial MAC FF: FF: FF: FF: FF: FF se utiliza para las transmisiones El protocolo ARP se usa para determinar la dirección MAC de su partido - Broadcast dirección IP de destino a cualquiera - Sólo el destino responde con su dirección MAC ARP se invoca automáticamente por IP si la dirección MAC de destino No se conoce - En caché en la tabla ARP - Ver tabla con arp -a WANs y el SLIP y Protocolos PPP Para transmitir paquetes IP, se necesita una técnica de encapsulación SLIP: - Técnica de encapsulación de IP única PPP: - Técnica de encapsulación para múltiples protocolos (IP, IPX, DECnet, ...) - Autenticación - Negociación y configuración de conexión Protocolo IP Protocolo de entrega de paquetes: - Mejor esfuerzo – Sin garantías - Next-hop den enrutamiento de host de destino basándome en la dirección IP Características Adicionales - Fragmentación y reensamblado de paquetes si el paquete demasiado grande para infraestructura. - Indicación de prioridad. - Capacidad de Difusión. Dirección de Internet Cada host en una red IP necesita una dirección IP - 32 bits - Debe ser único Las direcciones IP se escriben normalmente en notación decimal de puntos: Binario 10000001 00100001 10010111 00000111 Decimal-dot 129 . 33 . 151 . 7 Asignación de direcciones IP Las direcciones IP asignadas en grupos ("clases") por parte de la IANA (Internet Assigned Numbers Authority) a través de los ISP - Todas las direcciones en una clase tienen los primeros n bits en común Una clase se puede dividir para asignar a las redes - Todos los hosts de una red tienen la primera n + m en común - Por lo tanto, los primeros n + m bits que identifican la red - Los últimos restos de 32-n-m identifican el host de la red Ejemplo: SERVICIOS DE RED EN LINUX INTRODUCCIÓN En este capítulo recorreremos los pasos necesarios para configurar el protocolo TCP/IP en una máquina: - Asignación de direcciones IP a interfaces o Estática o Dinámica - Ficheros implicados en configuración TCP/IP - Herramientas útiles a la hora de resolver problemas relacionados con la red NOMBRE DE LA MAQUINA /etc/hostname - Durante el arranque del S.O. se establece el nombre de la máquina al ejecutarse el comando hostname. hostname nombre - El archivo /etc/hostname contiene el nombre del equipo que adopta el S.O. al iniciar el equipo - Los nombres de las máquinas pueden ser con cualificación completa, o relativos al dominio local. web.dominio.local ftp.dominio.local --> Son nombres de dominio completamente cualificados (FQDN) web o ftp --> Son nombres locales de una máquina, el primer componente del nombre. Ficheros para la Resolución DNS - El fichero host.conf indica el orden de las fuentes que utilizará el resolver del S.O. para obtener las resoluciones DNS que necesiten las aplicaciones del equipo. Tiene dos opciones: Buscarlas dentro --> Fichero /etc/hosts. Buscarlas fuera --> Fichero /etc/resolv.conf host.conf hosts resolv.conf Archivo /etc/host.conf RESOLUCION DNS - El fichero /etc/host.conf indica al sistema de resolución qué servicios debe usar y en qué orden. - Las opciones del fichero host.conf deben estar en líneas distintas. Los campos deben separarse por blancos (espacios o tabuladores). - La opción order determina el orden en el que los servicios de resolución se prueba en primer lugar para intentar resolver el nombre. # /etc/host.conf # Tenemos servidor de nombres, pero no NIS. order bin hosts # Permitir direcciones múltiples multi on # Contra los nombresfalsos Nospoof on bin – para usar el servidor de nombres, hosts – para buscar en /etc/hosts nis – para buscar con NIS Archivo /etc/host RESOLUCION DNS - - El fichero /etc/hosts representa un mecanismo simple de resolución de nombres Contiene un registro por línea, consistente en una dirección IP, un nombre de máquina y de forma opcional, una lista de alias para esa máquina. Los campos se separan por tabuladores o espacios y el campo con la @ IP debe empezar en la primera columna # archivo /etc/hosts # # IP FQDN aliases # # definición del bucle local 127.0.0.1 localhost # 172.16.1.1 web.domaina.local 172.16.1.2 gate.dominio.local # 172.16.1.1 mail.dominio.local 172.16.1.2 host.dominio.local web gate mail host Tanto el nombre con cualificación completa (oficial) como le nombre local se deben registrar en el fichero /etc/hosts, para ser referidos al resolver su dirección IP Archivo /etc/resolv.conf RESOLUCION DNS El fichero /etc/resolv.conf contiene las direcciones IP de las máquinas que pueden ofrecer servicios DNS a nuestro host. La instrucción nameserver apunta a servidores DNS que pueden utilizar el host para realizar sus resoluciones. search example.org nameserver 192.168.1.4 nameserver 194.179.1.100 Archivo /etc/networks - Del mismo modo que con las direcciones IP, a veces también interesarle usar nombres simbólicos para los números de red. - Con este objetivo, el fichero /etc/hosts tiene un compañero llamado /etc/networks, que asocia nombres de red con los números correspondientes y viceversa # archivo /etc/network dominioA-net 172.16.1.0 dominioB-net 172.16.2.0 # symbolic names for networks, see networks (5) for more information link-local 169.254.0.0 Configuración Interfaz en Red Ifconfig Route Comandos utilizados para configurar las interfaces de red e iniciarla la tabla de encaminamiento. ifconfig – Permite asignar una @ IP y otros parámetros a una interfase, así como su actividad. Por activación nos referimos a permitir que el núcleo envíe y reciba datagramas IP a través de la interfaz. route -- Permite añadir o quitar rutas de la tabla de encaminamiento del núcleo. Interficie de Bluce Local (LOOPBACK) El dispositivo de red loopback es una interficie de red virtual que siempre representa al propio dispositivo independientemente de la dirección IP que se le haya asignado. Su IP es 127.0.0.1. Se utiliza en tareas de diagnóstico de conectividad y validez del protocolo de comunicación, así como para indicar que el destino del puntero o URL es el mismo host Ejecutamos ifconfig lo No es necesario configurar la interface, yaviene por defecto Ifconfig lo 127.0.0.1 Route add 127.0.0.1 Interfaces Internet - En Linux las interfaces Ethernet se designan con nombres res como eth0, eth1, eth2, ... - La configuración de una interfaz Ethernet es más o menos igual que la de la interfaz de bucle local Ejecutamos: ifconfig eth2 192.168.1.1 netmask 255.255.255.0 y luego ifconfig eth2 - Puede observarse que ifconfig ha configurado la dirección de difusión automáticamente (el campo Bcast de arriba) a su valor usual, que es el de la red con todos los bits de la máquina activados Interfaces Internet - La instrucción ifconfig de forma automática introduce una entrada en la tabla de encaminamiento que informa al núcleo de que la red es accesible mediante eth0 Ejecutamos: route –n Nos lista la tabla de rutas IP del núcleo. Encaminamiento a través de una pasarela Para hacer saber a la máquina Linux como alcanzar otras redes, se utiliza el concepto de pasarelas o máquinas de enlace. Estas pasarelas pueden unir dos o más Ethernets, pero también pueden enlazar con el exterior (Internet) Desde la máquina web (perteneciente a dominioa) queremos saber llegar al dominiob a través de una pasarela, el equipo gate. web$ route add dominiob gw gate Añade un registro a la tabla de routing de la máquina web para que pueda acceder a todas los no dos de la red del dominiob a través de la pasarela gate. Dominiob y gate debe de estar incluidos en los ficheros /etc/hosts y /etc/networks Encaminamiento a través de una pasarela Pasarelela por defecto - Si el equipo gate también tiene una conexión a Internet, ¿cómo podríamos acceder desde el host web? - Convirtiendo el equipo gate en la pasarela por defecto del equipo web: route add default gw gate route add –net 0.0.0.0 netmask 0.0.0.0 gw gate - El nombre de red default es una abreviatura que representa la red 0.0.0.0, o ruta por omisión. La ruta por omisión analiza cada destino,y es la que será usada si no se encuentra ninguna ruta más específica Alias de IP Los IP Alias permite configurar múltiples direcciones IP (varios alias) en un sólo dispositivo físico. La configuración de un alias de IP es idéntica a la de un dispositivo de red real. Se señalan anteponiendo “:n” al dispositivo actual de red, donde “n” es un entero. ifconfig lo:0 172.16.1.1 – Crea un alias numerado como 0 para la interfaz de bucle local con la dirección 172.16.1.1. Cada alias debe ser tratado como si fuera un dispositivo diferente, y en lo referente al software de IP del núcleo, así es; por más que esté compartiendo su hardware con otro interfaz. Comandos de Configuración Red hostname Sintaxis: hostname [hostname] Si no se especifica ningún nombre de equipo la orden proporciona el nombre del equipo. Si se especi fica el nombre del equipo en hostname la orden cambia el nombre local de la máquina. host Sintaxis: host hostname | IP_adress Interroga el sistema para obtener la dirección IP del equipo especificado en hostname o el nombre del equipo que tiene una IP especificada en IP_adress dig Sintaxis: dig hostname La orden dig proporciona información de los servidores DNS que gestionan el nombre de dominio especificado en hostname. Comandos de Configuración de Red ifconfig Sintaxis: ifconfig interface parameters La orden ifconfig permite crear y configurar las interfases de red. Si no se indican parámetros la orden muestra la configuración de la interfase especificada. Si tampoco se indica la interfase la orden muestra la configuración de todos las interfases de red del sistema. Parámetros: Dirección – Configura la dirección IP de la interfase de red especificada. netmask mascara – Configura la mascara de red de la interfase de red especificada. broadcast – Dirección Configura la dirección IP de broadcast. up/down Activa/desactiva la interfase de red especificada. Comandos de Configuración de Red Ifconfig: Muestra la información de configuración de todas las interfases de red del sistema. ifconfig eth0 down: Desactiva la interfase de red eth0 ifconfig eth0: Comprueba el estado de la interfase eth0 ifconfig interfase dirección-ip: Configuración básica interficie. Asigna dirección ip y la activa. Los otros parámetros toman valores asignados por omisión. Por ejemplo, la máscara de subred por defecto toma el valor correspondiente al tipo de red al que pertenece la dirección IP. Así, tendríamos 255.255.0.0 para una dirección de clase B. ifconfig eth0 100.200.26.1 netmask 255.255.255.0 broadcast 100.200.26.255: Configura la interfase de red desde cero. Comandos de Configuracion de Red route Sintaxis: route options route [add|del] [-net|-host] destino Permite mostrar la tabla de encaminamiento IP del sistema. También permite añadir o eliminar una entrada en la tabla de encaminamiento. target puede ser una dirección IP numérica o un nombre de equipo o el nombre default. La orden route permite establecer las rutas de encaminamiento estáticas de la red. Opciones y Parámetros: –net Especifica que el target especificado es una red. –host Especifica que el target especificado es un equipo. Comandos de Configuración de Red Ejemplos route: route –n Imprime la tabla de encaminamiento del núcleo completa si se ejecuta sin argumentos (la opción –n hace que utilice la notación de cuaternas en vez de los nombres de las máquinas) route add –net 192.168.1.0 gw 192.168.1.2 Agrega una ruta hacia una red a través de un gateway (@ IP de la interficie next hop) route add- host 192.168.1.250 dev eth0 Suma una ruta hacia una máquina concreta a través de una interficie local. route add dominioa Suma una ruta a la tabla de routing usando los nombres definidos en el fichero /etc/networks. Esta forma evita escribir el indicador –net, porque route sabe que se trata de una red Comandos de Configuración de Red netstat Sintaxis: netstat options En función de la opción la orden netstat muestra las interfases de red, los PID asociados a cada interfase,… Opciones: -c Operación continua. Renueva la información cada segundo hasta que se cancela la orden mediante ctrl-c. -i Muestra una lista con todos los interfase de red. -p Muestra una lista de los PID. -r Muestra la información de la tabla de encaminamiento. –t Muestra las conexiones activas a puertos TCP. -u Muestra las conexiones activas a puertos UDP. Si se incluye “a” Comandos de Configuración de Red ping Sintaxis: ping hostname La orden ping envía una petición de eco del protocolo ICMP al equipo especificado en hostname y muestra el tiempo transcurrido hasta recibir la confirmación del eco. La opción por defecto envía mensajes indefinidamente hasta que se cancela la orden mediante ctrl-c. Opciones: -c n Se enviarán n mensajes. Al finalizar los mensajes especificados se muestra la estadística de los resultados. Ejemplo: ping –c 1 100.200.21.101 Comandos de Configuración de Red Traceroute Sintaxis: traceroute hostname Muestra la ruta que los paquetes siguen hasta alcanzar la destinación, mostrando todos las gateways y routes del camino. Archivo de Configuración de la Red ARCHIVO /etc/network/interfaces Contiene la información necesaria para configurar las interficies de red del host al arrancar el sistema. También permite establecer las rutas estáticas hacia otras redes Archivo de Configuración de la Red Para reiniciar la red TCP/IP del host: /etc/init.d/networking restart Configuración de Red Linux Paso 1. ¿Qué orden permite mostrar la configuración y el estado de todas las interfases de red de la máquina? Indicar la dirección IP y la mascara de red de cada uno de las interfases que dispone lamáquina. Paso 2. ¿Qué orden permite mostrar el estado de la interficie de la tarjeta utilizada para conectar el equipo a la red? Copiar el resultado de la orden en la práctica. Paso 3. Deshabilitar la interficie de la tarjeta de red anterior. Paso 4. Configurar la dirección IP de la interficie de red operativa del equipo Linux a 172.16.aula.1equipo Paso 5. Modificar la dirección IP de la interficie operativa de 172.16.aula.1equipo a 100.210.aula.1equipo. Paso 6. Realizar un ping a la dirección ip de la pregunta anterior. Enviar únicamente 4 paquetes. Configuración de Red en Linux Paso 7. Listar todos los comandos necesarios para configurar la ruta estática de enrutamiento del pc linux del siguiente esquema de tal manera que tenga acceso a toda la red. Listar la tabla de enrutamiento final. Configuración de Red en Linux Paso 8. Cambiar el nombre de la máquina de forma cuando se inicie el sistema. ¿Qué dichero se debe de modificar? Paso 9. Cambiar la dirección IP de la interficie de red a 192.168.1.10, a través del fichero de red (etc/network/interfaces) Paso 10. Modificar la configuración del sistema para añadir un gateway por defecto con dirección IP 192.168.1.1. Indicar qué archivo es necesario modificar y la sintaxis empleada. Paso 11. Reinicializar la red del equipo mediante comando. SERVICIOS DE FILTROS DE PAQUETES Qué es un Firewall? - Un firewall también es conocido como muro de fuego, este funciona entre las redes conectadas permitiendo o denegando las comunicaciones entre dichas redes. También un firewall es considerado un filtro que controla el tráfico de varios protocolos como TCP/UDP/ICMP que pasan por el para permitir o denegar algún servicio, el firewall examina la petición y dependiendo de este lo puede bloquear o permitirle el acceso Un firewall puede ser un dispositivo de tipo Hardware o software que de instala entre la conexión a Internet y las redes conectadas en el lugar DMZ - Un firewall con configuración DMZ indica que va tener una zona Desmilitarizada o red perimetral, es una red local en la cual se encuentra dentro de una organización. Para poder ser una zona tipo DMZ deben ver servidores ofreciendo servicios de WWW, FTP, DNS, Samba, etc, esto permite ofrecer servicios de una red local hacia el exterior. Dentro de esta zona se podrá tener acceso desde la red local e internet y firewall controlara los accesos a los servicios que se encuentren alojados dentro de la DMZ Firewall GNU/Linux En GNU/Linux existe gran variedad de herramientas que nos permite controlar nuestro firewall desde un servidor que esté conectado a internet y a la red local. Esta herramientas son: Ipchains: Esta herramienta ya quedo en el olvido ya que se usaba para kernel 2.4. Iptables: Esta herramienta es la que se está ocupando actualmente y apareció a partir del kernel 2.4 y 2.6 en adelante. Con Iptables crea las reglas más rápidas y sencillas que ipchains. Shorewall: Es una herramienta muy flexible, rápida y sencilla que permite crear reglas iptables, en shorewall se configuran varios archivos para poder controlar el firewall de nuestra red. ufw: Esta es un herramienta que nos permite crear reglas iptables de una forma demasiado sencilla dentro de distribuciones debian, ubuntu y derivados. Protocolo de Internet Conceptos Iptables Antes de poder administrar nuestro firewall tendremos que saber para qué nos sirve cada de una de las tablas que usa iptables para sus reglas. Cuando nosotros enviamos un paquete o una solicitud de servicio este pasa por 3tipos de tablas que debemos conocer. Tablas. NAT Esta tabla que debe ser usada cuando se desea hacer los paquetes sean enrutados a una máquina cliente dentro de una red local o DMZ, pero también podremos enmascarar un red local y tener salida hacia internet. Dentro de esta tabla tenemos las siguientes opciones: • • • DNAT: Este parámetro se emplea cuando tenemos casos en donde se tiene un IP Publica y el servicio se encuentra dentro de la red local o DMZ y el firewall el encargado de redirigir esta petición a la máquina en donde se encuentre el servicio. SNAT: Esta opción se ocupa cuando queremos esconder nuestra IP de red local o DMZ, cambiándola dentro del firewall con la IP Publica del servidor. MASQUERADE: Hace lo mismo que SNAT, pero MASQUERADE automáticamente convierte nuestra IP de la red local o DMZ a IP publica y se recomienda tener esta configuración cuando en nuestra red asignamos IP de forma DHCP. Tablas. Magle Esta tabla se usa principalmente para modificar paquetes. Dentro de esta tabla tenemos las siguientes opciones: • • • TOS: Es usado para definir o cambiar el tipo de servicio de un paquete que puede ser usado para configurar políticas en la red considerando a ser enrutados los paquetes, no lo uses para paquetes que vayan hacia internet. TTL: Es usado para cambiar el campo tiempo de vida de un paquete y con ello conseguir un TTL especifico. MARK: Se usa para marca los paquetes con valores especifico, con estas marcas podremos limitar el ancho de banda y generar colas Tablas. FILTER Esta tabla principal para el filtrado de paquetes que podemos comparar y filtar paquetes dentro del firewall. Dentro de esta tabla tenemos las siguientes opciones: • • • INPUT: Paquetes de entrada hacia nuestro firewall. FORWARD: Paquetes enrutados por medio del firewall a otra máquina. OUTPUT: Paquetes de salida de nuestro firewall. Estados. Los estados en realidad son los seguimientos de conexiones dentro del firewall. Para esto tenemos las siguiente opciones: • • • • ESTABLISHED: El paquete seleccionado se asocia con otros paquetes en una conexión establecida. INVALID: El paquete seleccionado no puede ser asociado hacia ninguna conexion conocida. NEW: El paquete seleccionado esta creando una nueva conexión o bien forma parte de una conexión de dos caminos. RELATED: El paquete seleccionado esta iniciando una nueva conexión en algún punto de la conexión existente. Podemos tomar decisiones a partir del estado del paquete por medio del modulo state con el parametro “-m state”, se refiere a la posibilidad de mantener información sobre el estado de la conexión en memoria. El seguimiento de conexiones se realiza en cadenas PREROUTING y OUTPUT, el numero máximo de conexiones esta guardada en /proc/sys/net/ipv4/ip_conntrack_max. Protocolos. Todos los servicios manejan protocolos para su comunicaciones, por lo cual iptables podremos administrar servicios dentro de los protocolos: • • • TCP: Protocolo de Control de Transmisión, este protocolo es mas utilizado por los servicios ofrecidos por algún servidor. UDP: Protocolo de Datagrama de Usuario, sirve para el envía de datagrama pero debe existir una conexión establecida. ICMP: Protocolo de Mensajes de Control y Error de Internet, este protocolo solamente lo utilizamos cuando hacemos envío de paquetes de un máquina a otra, en resumen es un ping. Para poder ocupar estos protocolos podremos ocupar el parámetro -p. Objetivos Cuando nosotros creamos una regla iptables tenemos varias acciones básicas en las cuales podremos indicar al firewall que hacer con ellas. Estas acciones son: • • • • • • ACCEPT: Acepta los paquete que pase por el firewall. DROP: Deniega los paquete que pase por el firewall, cortando la comunicación. REJECT: Funciona básicamente igual que el objetivo DROP, aunque en este caso se devuelve un mensaje de error al host que envío el paquete bloqueado. REDIRECT: Sirve para redirigir paquetes y flujos hacia una máquina de la red local o DMZ. También sirve para redirigir peticiones entre puerto del mismo firewall para la activación de servicios. MASQUERADE: Hace lo mismo que SNAT, pero MASQUERADE automáticamente convierte nuestra IP de la red local o DMZ a IP publica y se recomienda tener esta configuración cuando en nuestra red asignamos IP de forma DHCP. LOG: Este objetivo funciona para registrar información detallada sobre los paquetes que pasan por el firewall. Comando Iptables Hasta este momento solamente sabemos sobre los conceptos de iptables pero ahora aprenderemos la estructura de la creación de la reglas de iptables y con parámetros que podemos utilizar. El comando iptables contiene las siguientes opciones Opción Descripción -A Agrega una cadena iptables al firewall. -C Verifica una cadena antes de añadirla al firewall. -D Borra una cadena de iptables en el firewall -E Renombra una cadena de iptables. -F Libera o limpia de cadena en el firewall. Inserta una cadena en una cadena en un punto -I especificado por un valor entero definido por el usuario. Lista todas las cadena de iptables aplicadas en el -L firewall. Crea una nueva cadena con un nombre -N especificando por el usuario. Configura la política por defecto en una cadena en -P particular y puede ser ACCEPT o DROP. Reemplaza una regla en una cadena en particular, -R se debe especificar el numero de regla. Borra cadenas especificada por el usuario, no se -X permiten borrar cadenas no creada por el usuario. Pone en ceros los contadores de bytes y de -Z paquetes. Comando Iptables. Parámetros El comando iptables tiene varios parámetros que debemos conocer antes de ver su nomenclatura ya que estos parámetros nos sirve para indicar alguna propiedad a nuestra regla creada dentro de firewall. Entonces revisemos los siguientes paramentas de iptables. Parámetros -d -i -j -o -p -s Descripción Especifica IP destino, se ocupa para el redireccionamiento de servicio dentro de la red local o DMZ. Especificamos una interfaces de entrada. Se pueden especificar las conexiones que vienen de internet, red local o DMZ Especifica la acción a realizar. Indica una interfaz de salida. Se ocupa solamente para conexiones de la red local o DMZ Especificamos el tipo de protocolo a utilizar en los paquetes. Especificamos la dirección origen del envío de paquetes. --dport Puerto de entrada o destino de algun servicio. --sport Puerto de salida de algún recurso, utilizado dentro de la red local y DMZ --to IP destino del servicio. Ejemplo -d 192.168.10.5 -d 10.0.2.25 -i eth0 -i ppp0 -j ACCEPT -j DROP -o eth1 -o ppp0 -p tcp -p udp -s 192.168.1.0/24 -s 0.0.0.0/0 --dport 22 --dport 80 --sport 1863 --sport 2845 --to 192.168.1.10:80 Comando Iptables. Nomenclatura Ahora aprenderemos la nomenclatura. iptables -A [Filtro] [parametros de la regla] [objetivo] Comenzaremos a ver algunas reglas de iptables. Ejemplo 1: Se aceptaran todas las peticiones que vengan por la interfaz de red eth0. iptables -A INPUT -i eth0 -j ACCEPT Ejemplo 2: Se aceptan todas las peticiones de vayan al puerto 80 por la interfaz eth0. iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT Ejemplo 3: Rechazamos todas las peticiones del protocolo icmp en todas las interfaces de red, no aceptamos ping. iptables -A INPUT -p icmp -j REJECT Firewall Básico Ahora veremos la configuración básica de un iptables, creando nuestra reglas y describiéndola para que sirve cada una. ## Limpiando reglas de iptables en todas las tablas. iptables -F iptables -X iptables -Z 1. Establecemos política por defecto de cada de una de la tablas. iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT iptables -P FORWARD ACCEPT 1. Aceptamos conexiones locales en la interfaz lo iptables -A INPUT -i lo -j ACCEPT 1. Aceptamos todas la conexiones al puerto 22/ssh por la interfaz de red eth0. iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT 1. Aceptamos todas la conexiones al puerto 80/apache por la interfaz de red eth0. iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT 1. Rechaza todas la demas conexiones desde el puerto 1 al 1024 por protocolo tcp/udp por la interfaz de red eth0. iptables -A INPUT -i eth0 -p tcp --dport 1:1024 -j REJECT iptables -A INPUT i eth0 -p udp --dport 1:1024 -j REJECT}}} Solamente queda verificar que haya ejecutado las reglas correctamente, para verificarlo ejecutamos el siguiente comando. lucifer:~# iptables -nL Firewall LAN. 1 Ahora veremos como configurar un firewall del tipo LAN: • • Los clientes de la red local podrán acceder a internet pero solo a servicio de HTTP/HTTPS y DNS. Desde internet se permitirá conectarse a servicios de HTTP/FTP que están dentro de la red local. ## Limpiando reglas de iptables en todas las tablas. iptables -F iptables -X iptables -Z iptables -t nat -F 1. Establecemos política por defecto iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT iptables -P FORWARD ACCEPT iptables -t nat -P PREROUTING ACCEPT iptables -t nat -P POSTROUTING ACCEPT 1. Todas la peticiones que vengan de internet hacia el puerto 80 redirigirlo a la máquina de la red local con IP 192.168.1.12:80. iptables -t nat -A PREROUTING -i ppp0 -p tcp -dport 80 -j DNAT --to 192.168.1.12:80 1. Todas la peticiones que vengan de internet hacia el puerto 21 redirigirlo a la máquina de la red local con IP 192.168.1.52:21. iptables -t nat -A PREROUTING -i ppp0 -p tcp -dport 21 -j DNAT --to 192.168.1.52:21 1. Aceptamos conexiones locales en la interfaz lo iptables -A INPUT -i lo -j ACCEPT 1. Tenemos acceso al firewall desde el segmento de red 192.168.1.0 por la interfaz eth1 Firewall LAN. 2 iptables -A INPUT -s 192.168.1.0/24 -i eth1 -j ACCEPT 1. Aceptamos que todo el trafico que viene desde la red local vaya hacia los puertos 80/443 sean aceptadas estas son solicitudes http/https iptables -A FORWARD -s 192.168.1.0/24 -i eth1 -p tcp --dport 80 -j ACCEPT iptables -A FORWARD -s 192.168.1.0/24 -i eth1 -p tcp --dport 443 -j ACCEPT 1. Aceptamos que consultas de DNS de la red local iptables -A FORWARD -s 192.168.1.0/24 -i eth1 -p tcp --dport 53 -j ACCEPT iptables -A FORWARD -s 192.168.1.0/24 -i eth1 -p udp --dport 53 -j ACCEPT 1. Denegamos el resto de los servicios iptables -A FORWARD -s 192.168.1.0/24 -i eth1 -j REJECT 1. Ahora hacemos enmascaramiento de la red local iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE echo 1 > /proc/sys/net/ipv4/ip_forward 1. Rechaza todas la demas conexiones desde el puerto 1 al 1024 por protocolo tcp/udp por la interfaz de red eth0. iptables -A INPUT -s 0.0.0.0/0 -p tcp -dport 1:1024 -j DROP iptables -A INPUT -s 0.0.0.0/0 -p udp -dport 1:1024 -j DROP}}} Firewall LAN/DMZ. 1 Ahora veremos como configurar nuestro firewall con la comunicación de la LAN/INTERNET a DMZ: • • Los clientes de la red local pueden conectarse a servicios del tipo APACHE y SAMBA en la DMZ, Desde internet se permitirá conectarse a servicios de APACHE que se encuentran en DMZ. ## Limpiando reglas de iptables en todas las tablas. iptables -F iptables -X iptables -Z iptables -t nat -F 1. Establecemos política por defecto iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT iptables -P FORWARD ACCEPT iptables -t nat -P PREROUTING ACCEPT iptables -t nat -P POSTROUTING ACCEPT 1. Todas la peticiones que vengan de internet hacia el puerto 8080 redirigirlo a la máquina de la DMZ con IP 10.0.2.30:80. iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 8080 -j DNAT --to 10.0.2.30:80 1. Aceptamos conexiones locales en la interfaz lo iptables -A INPUT -i lo -j ACCEPT 1. Tenemos acceso al firewall desde la red local y DMZ Firewall LAN/DMZ. 2 iptables -A INPUT -s 192.168.1.0/24 -i eth1 -j ACCEPT iptables -A INPUT -s 10.0.2.0/24 -i eth2 -j ACCEPT 1. Ahora hacemos enmascaramiento de la Red Local y DMZ iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE iptables -t nat -A POSTROUTING -s 10.0.2.0/24 -o eth0 -j MASQUERADE echo 1 > /proc/sys/net/ipv4/ip_forward 1. APACHE1 “Conexión del servicio desde la red local a DMZ” iptables -A FORWARD -s 192.168.1.0/24 -d 10.0.2.30 -p tcp –-dport 80 -j ACCEPT iptables -A FORWARD -s 10.0.2.30 -d 192.168.1.0/24 -p tcp –-dport 80 -j ACCEPT 1. Samba “Conexión del servicio desde la red local a DMZ” iptables -A FORWARD -s 192.168.1.0/24 -d 10.0.2.50 -p tcp –-dport 139 -j ACCEPT iptables -A FORWARD -s 10.0.2.50 -d 192.168.1.0/24 -p tcp –-dport 139 -j ACCEPT iptables -A INPUT -s 0.0.0.0/0 -p tcp -dport 1:1024 -j DROP iptables -A INPUT -s 0.0.0.0/0 -p udp -dport 1:1024 -j DROP}}} Reglas. En este capítulo solo mostraremos algunas otras reglas que han faltado explicar. Habilitando varios puerto en una regla Dentro de iptables tenemos la capacidad de armar reglas para nuestro firewall con varios puerto de conexión al mismo. Ejemplo 1: Permitimos las conexión desde cualquier equipo de la red local al servidor en los puerto 22 y 80. iptables -A INPUT -s 192.168.1.0/24 -p tcp -dport 22:80 -j ACCEPT Ejemplo 2: Solamente permitiremos la conexion del cliente con la IP 192.168.1.50 a los puertos 20 y 21. iptables -A INPUT -s 192.168.1.50 -p tcp --dport 20:21 -j ACCEPT Reglas. Proxy Transparente Esta regla es de mucha ayuda para los administradores no tener que ir cliente por cliente en la red a configurar sus navegadores web que con esta hacemos un redireccionamiento de puertos en el mismo servidor. Toda peticiones que venga por la interfaz de red eth1 y con salida al puerto 80 redirecciona al puerto 3128. iptables -t nat -A PREROUTING -i eth1 -p tcp -dport 80 -j REDIRECT --to-port 3128 Reglas. Bloquear Pings. Explicaremos varias reglas que podremos utilizar para bloquear los ping. Ejemplo 1: Podremos bloquear los pings que nos envíe un cliente o un segmento de red. iptables -A INPUT -p icmp -s 192.168.1.0/0 -j DROP iptables -A INPUT -p icmp -s 192.168.1.100 -j DROP}}} Ejemplo 2: Pero si quisiéramos bloquear completamente hacia cualquier interfaz entonces esta seria la regla. iptables -A INPUT -p icmp -s 0.0.0.0/0 -j DROP Bloquear mac También es posible bloquear clientes, etc por la MAC Address de su máquina cliente. iptables -A INPUT -m mac --mac-source 00:15:C5:B5:33:6C -j DROP Reglas Externas. VPN Para un servicio como OpenVPN también es necesaria tener sus propias reglas de iptables para hacer la conexiones a los túneles. Aceptamos el trafico que entrada y salida por el protocolo UDP por el servicio OpenVPN. iptables -A INPUT -i ppp0 -p udp --dport 1194 -j ACCEPT iptables -A OUTPUT -0 ppp0 -p udp --sport 1194 -j ACCEPT}}} En este caso la interfaz de escucha del servicio es ppp0 pero también puede ser eth0. Permitimos la conexión desde cualquier equipo por la interfaz tun. [root@test ~]# iptables -A INPUT -i tun+ -j ACCEPT [root@test ]# iptables -A OUTPUT -o tun+ -j ACCEPT}}} Permitimos que los equipos de las otras redes accedaan a nuestra red.. [root@test ~]# iptables -A FORWARD -i tun+ -j ACCEPT [root@test ]# iptables -A FORWARD -o tun+ -j SERVICIOS DE FILTRO DE PAQUETES PROXY SQUID ¿Qué es un Servidor Intermediario? Un Servidor Intermediario se define como una computadora o dispositivo que ofrece un servicio de red que consiste en permitir a los clientes realizar conexiones de red indirectas hacia otros servicios de red. Durante el proceso ocurre lo siguiente: 1. Cliente se conecta hacia un Servidor Proxy. 2. Cliente solicita una conexión, archivo u otro recurso disponible en un servidor distinto. 3. Servidor Intermediario proporciona el recurso ya sea conectándose hacia el servidor especificado o sirviendo éste desde un caché. 4. En algunos casos el Servidor Intermediario puede alterar la solicitud del cliente o bien la respuesta del servidor para diversos propósitos. Acerca de Squid. URL: http://www.squid-cache.org/ Squid es un Servidor Intermediario de alto desempeño que se ha venido desarrollando desde hace varios años y es hoy en día un muy popular y ampliamente utilizado entre los sistemas operativos como GNU/Linux y derivados de Unix®. Es muy confiable, robusto y versátil y se distribuye bajo los términos de la Licencia Pública General GNU (GNU/GPL). Siendo equipamiento lógico libre, está disponible el código fuente para quien así lo requiera. Entre otras cosas, Squid puede funcionar como Servidor Intermediario y caché de contenido de Red para los protocolos HTTP, FTP, GOPHER y WAIS, Proxy de SSL, caché transparente, WWCP, aceleración HTTP, caché de consultas DNS y otras muchas más como filtración de contenido y control de acceso por IP y por usuario. Squid consiste de un programa principal como servidor, un programa para búsqueda en servidores DNS, programas opcionales para reescribir solicitudes y realizar autenticación y algunas herramientas para administración y herramientas para clientes. Al iniciar Squid da origen a un número configurable (5, de modo predeterminado a través dla opción dns_children) de procesos de búsqueda en servidores DNS, cada uno de los cuales realiza una búsqueda única en servidores DNS, reduciendo la cantidad de tiempo de espera para las búsquedas en servidores DNS. Squid. Equipamiento lógico necesario. Para poder llevar al cabo los procedimientos descritos en este y otros documentos relacionados, se requiere instalar al menos lo siguiente: • • • Al menos squid-2.5.STABLE6 Todos los parches de seguridad disponibles para la versión del sistema operativo que esté utilizando. Un muro cortafuegos configurado con systemconfig-firewall, Firestarter o Shorewall. Squid sólo se instala de manera predeterminada cuando se instala el grupo de paquetes denominado «Servidor Web». El procedimiento de instalación es exactamente el mismo que con cualquier otro equipamiento lógico. Squid. Instalación Si se utiliza CentOS o Red Hat™ Enterprise Linux, ejecute: yum -y install squid SELinux y el servicio de squid En CentOS 6 y Red Hat™ Enterprise Linux 6, la política squid_connect_any viene habilitada de modo predeterminado. En CentOS 5 y Red Hat™ Enterprise Linux 5, esta política viene deshabilitada de modo predeterminado. Esta política hace que SELinux permita a Squid aceptar conexiones de los clientes desde cualquier dirección IP. Si utiliza CentOS 5 y Red Hat™ Enterprise Linux 5, ejecute: setsebool -P squid_connect_any 1 Para SELinux permita a Squid operar en modo transparente en CentOS 6 y Red Hat™ Enterprise Linux 6, ejecute: setsebool -P squid_use_tproxy 1 Squid. Antes de continuar Evite dejar espacios vacíos en lugares indebidos. El siguiente ejemplo muestra la manera incorrecta de habilitar un opción. Mal # Opción incorrectamente habilitada. http_port 8080 El siguiente ejemplo muestra la manera correcta de habilitar un opción. Bien # Opción correctamente habilitada. http_port 8080 Squid. Configuración Básica Squid utiliza el archivo de configuración localizado en /etc/squid/squid.conf y podrá trabajar sobre este utilizando su editor de texto simple preferido. Existen un gran número de opciones, de los cuales recomendamos configurar los siguientes: • • • • • Al menos una Lista de Control de Acceso Al menos una Regla de Control de Acceso http_port cache_dir error_directory, sólo si va a personalizar mensajes de error. El resto de los opciones mencionados en este documento son, valga la redundancia, opcionales. Edite el archivo /etc/squid/squid.conf: vi /etc/squid/squid.conf Protocolo de Internet Controles de Acceso Parapoder controlar el tráfico de los clientes hacia Internet, es necesario establecer Listas de Control de Acceso que definan una red o bien ciertos anfitriones en particular. A cada lista se le asignará una Regla de Control de Acceso que permitirá o denegará el acceso a Squid. Squid. Listas de Control de Acceso.1 De modo predeterminado en CentOS 6 y Red Hat™ Enterprise Linux 6, Squid habilita el acceso a todas las redes locales, definidas en el RFC1918. Es decir, permite el acceso a 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16, fc00::/7 y fe80::/10. # Example rule allowing access from your local networks. # Adapt to list your (internal) IP networks from where browsing # should be allowed acl localnet src 10.0.0.0/8 # RFC1918 possible internal network acl localnet src 172.16.0.0/12 # RFC1918 possible internal network acl localnet src 192.168.0.0/16 # RFC1918 possible internal network acl localnet src fc00::/7 # RFC 4193 local private network range acl localnet src fe80::/10 # RFC 4291 link-local (directly plugged) machines Squid. Listas de Control de Acceso. 2 Deshabilite todo lo anterior, colocando una almoadilla (# al inicio de cada línea. # Example rule allowing access from your local networks. # Adapt to list your (internal) IP networks from where browsing # should be allowed # acl localnet src 10.0.0.0/8 # RFC1918 possible internal network # acl localnet src 172.16.0.0/12 # RFC1918 possible internal network # acl localnet src 192.168.0.0/16 # RFC1918 possible internal network # acl localnet src fc00::/7 # RFC 4193 local private network range # acl localnet src fe80::/10 # RFC 4291 link-local (directly plugged) machines Squid. Listas de Control de Acceso. 3 Regularmente una lista de control de acceso se establece con la siguiente sintaxis: acl [nombre de la lista] src [lo que compone a la lista] Si se desea establecer una lista de control de acceso que abarque a toda la red local, basta definir la IP correspondiente a la red y la máscara de la sub-red. Por ejemplo, si se tiene una red donde los anfitriones tienen direcciones del segmento IP 172.16.100.0/28, se puede utilizar lo siguiente: acl localnet src 172.16.100.0/28 También puede definirse una Lista de Control de Acceso especificando un archivo localizado en cualquier parte del disco duro y la cual contiene una lista de direcciones IP. Ejemplo: acl permitidos src "/etc/squid/listas/permitidos" Squid. Listas de Control de Acceso. 3 El archivo /etc/squid/listas/permitidos tendría un contenido similar al siguiente: 172.16.100.1 172.16.100.2 172.16.100.3 172.16.100.15 172.16.100.16 172.16.100.20 172.16.100.40 Lo anterior estaría definiendo que la Lista de Control de Acceso denominada permitidos estaría compuesta por las direcciones IP incluidas en el archivo /etc/squid/listas Squid. Reglas de control de acceso.1 Estas definen si se permite o deniega acceso hacia Squid. Se aplican a las Listas de Control de Acceso. Deben colocarse en la sección de reglas de control de acceso definidas por el administrador, es decir, a partir de donde se localiza la siguiente leyenda: # # INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS # La sintaxis básica de una regla de control de acceso es la siguiente: http_access [deny o allow] [lista de control de acceso] Para desactivar la configuración predeterminada y poder utilizar una diferente, localice La línea que incluye http_access allow localnet: # Example rule allowing access from your local networks. # Adapt localnet in the ACL section to list your (internal) IP networks # from where browsing should be allowed http_access allow localnet http_access allow localhost Squid. Reglas de control de acceso.2 Deshabilite esta línea colocando una almohadilla (# al inicio de ésta: # Example rule allowing access from your local networks. # Adapt localnet in the ACL section to list your (internal) IP networks # from where browsing should be allowed # http_access allow localnet http_access allow localhost En el siguiente ejemplo se considera una regla que establece acceso permitido a Squid a la Lista de Control de Acceso denominada permitidos: http_access allow permitidos También pueden definirse reglas valiéndose de la expresión !, la cual significa no. Pueden definirse, por ejemplo, dos listas de control de acceso, una denominada lista1 y otra denominada lista2, en la misma regla de control de acceso, en donde se asigna una expresión a una de estas. La siguiente establece que se permite el acceso a Squid a lo que comprenda lista1 excepto aquello que comprenda lista2: http_access allow lista1 !lista2 Este tipo de reglas son útiles cuando se tiene un gran grupo de IP dentro de un rango de red al que se debe permitir acceso y otro grupo dentro de la misma red al que se debe denegar el acceso. Squid. Aplicando Listas y Reglas de control de acceso Una vez comprendido el funcionamiento de la Listas y las Regla de Control de Acceso, se procede a determinar cuales utilizar para la configuración. Caso 1. Considerando como ejemplo que se dispone de una red 172.16.100.0/28, si se desea definir toda la red local, se utilizaría la siguiente línea en la sección de Listas de Control de Acceso: acl localnet src 172.16.100.0/28 Habiendo hecho lo anterior, la sección de listas de control de acceso debe quedar más o menos del siguiente modo: Listas de Control de Acceso: definición de una red local completa # # Recommended minimum configuration: acl all src 0.0.0.0/0 acl manager proto cache_object acl localhost src 127.0.0.1/8 acl localnet src 172.16.100.0/28 A continuación se procede a aplicar la regla de control de acceso: http_access allow localnet Habiendo hecho lo anterior, la zona de reglas de control de acceso debería quedar de modo similar al siguiente: Reglas de control de acceso: Acceso a una Lista de Control de Acceso. # # INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS # http_access allow localhost http_access allow localnet http_access deny all La regla http_access allow localnet permite el acceso a Squid a la Lista de Control de Acceso denominada localnet, la cual, en el siguiente ejemplo, está conformada por 172.16.100.0/28. Esto significa que cualquier anfitrión desde 172.16.100.1 hasta 172.16.100.14 podrá acceder a Squid. Squid. Aplicando Listas y Reglas de control de acceso Caso 2. Parte 1 Si sólo se desea permitir el acceso a Squid a ciertas direcciones IP de la red local, deberemos crear un archivo que contenga dicha lista. Genere el archivo /etc/squid/listas/localnet, dentro del cual se incluirán sólo aquellas direcciones IP que desea confirmen la Lista de Control de acceso. Ejemplo: 172.16.100.1 172.16.100.2 172.16.100.3 172.16.100.4 172.16.100.5 172.16.100.6 172.16.100.7 Denominaremos a esta lista de control de acceso como localnet: acl localnet src "/etc/squid/listas/localnet" Habiendo hecho lo anterior, la sección de listas de control de acceso debe quedar más o menos del siguiente modo: Listas de Control de Acceso: definición de una red local completa # # Recommended minimum configuration: acl all src 0.0.0.0/0 acl manager proto cache_object acl localhost src 127.0.0.1/255.255.255.255 acl localnet src "/etc/squid/listas/localnet" A continuación se procede a aplicar la regla de control de acceso: http_access allow localnet Habiendo hecho lo anterior, la zona de reglas de control de acceso debería quedar de modo similar al siguiente: Squid. Aplicando Listas y Reglas de control de acceso Caso 2. Parte 2 Reglas de control de acceso: Acceso a una Lista de Control de Acceso. # # INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS # http_access allow localhost http_access allow localnet http_access deny all La regla http_access allow localnet permite el acceso a Squid a la Lista de Control de Acceso denominada localnet, la cual está conformada por las direcciones IP especificadas en el archivo /etc/squid/listas/localnet. Esto significa que cualquier anfitrión excluido del archivo /etc/squid/listas/localnet se le denegará el acceso a Squid. Opción cache_mgr. Esta opción es de carácter informativo. De modo predeterminado, si algo ocurre con el caché, como por ejemplo que muera el procesos, se enviará un mensaje de aviso a la cuenta webmaster del servidor. Puede especificarse una distinta si acaso se considera conveniente. cache_mgr [email protected] Opción http_port. Esta opción es utilizado para indicar el puerto a través del cual escuchará peticiones Squid. EL valor predeterminado es 3128, es deicr, Squid escuchará peticiones a través del puerto 3128/tcp. http_port 3128 El puerto estándar designado para servidores de caché de Internet (webcache) es el puerto 8080. http_port 8080 Squid. Aplicando Listas y Reglas de control de acceso Caso 2. Parte 3 La opción permite establecer también si se quiere utilizar una dirección IP en particular. Esto añade mayor seguridad al servicio, pues si se tiene dos tarjetas de red, una con una dirección IP pública y otra con una dirección IP privada, se puede establecer que Squid solo permita conexiones desde la dirección IP privada. http_port 192.168.80.1:8080 Si se necesita configurar un servidor proxy en modo transparente, solo es necesario añadir la opción intercept, misma que desde la versión 3.1 de Squid reemplaza a la opción transparent. http_port 192.168.80.1:8080 intercept Opción cache_dir. Esta opción se utiliza para establecer que tamaño se desea que utilice Squid para almacenamiento de caché en el disco duro. De modo predeterminado Squid utilizará el formato ufs para crear en el directorio /var/spool/squid un caché de 100 MB, dividido en jerarquías de 16 directorios subordinados, hasta 256 niveles cada uno: cache_dir ufs /var/spool/squid 100 16 256 Se puede incrementar el tamaño del caché hasta donde lo desee el administrador. Mientras más grande sea el caché, más objetos se almacenarán en éste y por lo tanto se consumirá menos el ancho de banda. La siguiente línea establece un caché de 2 GB: cache_dir ufs /var/spool/squid 2048 16 256 El formato de cache ufs puede llegar a bloquear el proceso principal de Squid en operaciones de entrada/salida sobre el sistema de archivos cuando hay muchos clientes conectados. Para evitar que esto ocurra, se recomienda utilizar aufs, que utiliza el mismo formato de ufs, pero funciona de manera asincrónica, consiguiéndose un mejor desempeño. cache_dir aufs /var/spool/squid 2048 16 256 Squid. Aplicando Listas y Reglas de control de acceso Caso 2. Parte 4 Opción maximum_object_size. Esta opción se utiliza para definir el tamaño máximo de los objetos en el caché. Se recomienda establecerla en escenarios con alta carga de trabajo, puesto que permite evitar desperdiciar recursos de sistema almacenando en el caché objetos de gran tamaño que probablemente sólo sean aprovechados por unos pocos usuarios, optimizando el uso del caché con objetos pequeños que de otro modo generarían una gran cantidad de peticiones hacia las redes públicas. En el siguiente ejemplo se establece un límite de 48 MB para los objetos del caché. maximum_object_size 48 MB Opciones cache_swap_low y cache_swap_high. Es posible realizar una limpieza automática del caché de Squid cuando éste llegue a cierta capacidad. La opción cache_swap_low establece el porcentaje a partir del cual se comenzará a limpiar el cache. La opción cache_swap_high establece el porcentaje a partir del cual se comenzará a limpiar de manera agresiva el cache. En el siguiente ejemplo se establece que el cache se comienza a limpiar cuando alcanza el 90% y se comienza a limpiar de manera agresiva cuando alcanza el 95%. cache_swap_low 90 cache_swap_high 95 Lo anterior permite tener un caché saludable que se limpia automáticamente. Se recomienda utilizar estas opciones en escenarios con alta carga de trabajo. Squid. Aplicando Listas y Reglas de control de acceso Caso 2. Parte 5 Opción cache_replacement_policy. A través de esta opción se incluye soporte para los siguientes algoritmos para el caché: LRU Acrónimo de Least Recently Used, que traduce como Menos Recientemente Utilizado. En este algoritmo los objetos que fueron accedidos hace mucho tiempo, son eliminados primero y manteniendo siempre en el caché a los objetos más recientemente solicitados. Ésta política es la utilizada por Squid de modo predeterminado. LFUDA Acrónimo de Least Frequently Used with Dynamic Aging, que se traduce como Menos Frecuentemente Utilizado con Envejecimiento Dinámico. En este algoritmo los objetos más solicitados permanecen en el caché sin importar su tamaño optimizando la eficiencia (hit rate) por octetos (Bytes) a expensas de la eficiencia misma, de modo que un objeto grande que se solicite con mayor frecuencia impedirá que se pueda hacer caché de objetos pequeños que se soliciten con menor frecuencia. GDSF Acrónimo de GreedyDual Size Frequency, que se traduce como Frecuencia de tamaño GreedyDual (codicioso dual), que es el algoritmo sobre el cual se basa GDSF. Optimiza la eficiencia (hit rate) por objeto manteniendo en el caché los objetos pequeños más frecuentemente solicitados de modo que hay mejores posibilidades de lograr respuesta a una solicitud (hit). Tiene una eficiencia por octetos (Bytes) menor que el algoritmo LFUDA debido a que descarta del caché objetos grandes que sean solicitado con frecuencia. El algoritmo recomendado y que ha demostrado mejor desempeño en escenarios de alta carga de trabajo es LFUDA. cache_replacement_policy heap LFUDA Opción cache_mem. La opción cache_mem establece la cantidad ideal de memoria para lo siguiente: • • • Objetos en tránsito. Objetos frecuentemente utilizados (Hot). Objetos negativamente almacenados en el caché. Los datos de estos objetos se almacenan en bloques de 4 Kb. La opción cache_mem especifica un límite máximo en el tamaño total de bloques acomodados, donde los objetos en tránsito tienen mayor prioridad. Sin embargo los objetos frecuentemente utilizados (Hot) y aquellos negativamente almacenados en el caché, podrán utilizar la memoria sin utilizar hasta que esta sea requerida. De ser necesario, si un objeto en tránsito es mayor a la cantidad de memoria especificada, Squid excederá lo que sea necesario para satisfacer la petición. cache_mem 48 MB Squid. Idioma y Arranque de Squid EstableciendoelidiomadelosmensajesmostradosporSquidhaciaelusuario. Squid incluye traducción a distintos idiomas de las distintas páginas de error e informativas que son desplegadas en un momento dado durante su operación. Dichas traducciones se pueden encontrar en /usr/share/squid/errors/. Desde la versión 3.0 de Squid, el idioma se detecta automáticamente a partir del navegador utilizado por el usuario. Es innecesario modificar opción alguno, salvo que se haya personalizado los mensajes, en cuyo caso conviene utilizar una ruta distinta a la del idioma utilizado para evitar se sobre-escriban los archivos después de actualizar el sistema. Iniciando,reiniciandoyañadiendoelservicioalarranquedelsistema. Una vez terminada la configuración, para iniciar por primera vez Squid ejecute: service squid start Si necesita volver a cargar la configuración para probar cambios realizados, sin detener el servicio, ejecute: service squid reload Si necesita reiniciar para probar cambios hechos en la configuración, considerando que este proceso puede llegar a demorar algunos minutos, ejecute: service squid restart Para que Squid inicie de manera automática junto con el sistema, ejecute: chkconfig squid on Squid. Depuracion de Errores Cualquier error al inicio de Squid sólo significa que hubo errores de sintaxis, errores de dedo o bien se están citando incorrectamente las rutas hacia los archivos de las Listas de Control de Acceso. Puede realizar diagnóstico de problemas indicándole a Squid que vuelva a leer configuración, lo cual devolverá los errores que existan en el archivo /etc/squid/squid.conf. service squid reload Cuando se trata de errores graves que impiden iniciar el servicio, puede examinarse el contenido del archivo /var/log/squid/squid.out con el mandato less, more o cualquier otro visor de texto: tail -80 /var/log/squid/squid.out Modificaciones Squid. Si se utiliza un cortafuegos con políticas estrictas, como por ejemplo Shorewall, es necesario abrir el puerto 8080 por TCP (webcache), si se eligió utilizar el puerto 8080 en lugar del 3128. La regla para el archivo /etc/shorewall/rules de Shorewall, que sólo permitirá el acceso hacia Squid desde la zona de red de área local, correspondería a algo similar a lo siguiente: #ACTION SOURCE DEST PROTO # ACCEPT loc fw tcp #LAST LINE -- ADD YOUR ENTRIES THIS ONE -- DO NOT REMOVE DEST PORT 8080 BEFORE Para aplicar los cambios en Shorewall, ejecute: service shorewall restart Squid. Redireccionamiento Shorewall La acción REDIRECT en Shorewall permite redirigir peticiones hacia protocolo HTTP para hacerlas pasar a través de Squid. En el siguiente ejemplo las peticiones hechas desde la zona que corresponde a la red local serán redirigidas hacia el puerto 8080 del cortafuegos, en donde está configurado Squid configurado como Servidor Proxy (Proxy) transparente. #ACTION SOURCE DEST PROTO # ACCEPT loc fw tcp REDIRECT loc 8080 #LAST LINE -- ADD YOUR ENTRIES THIS ONE -- DO NOT REMOVE DEST PORT 8080 tcp 80 BEFORE Squid. Exclusión de Sitios En el caso de sitios que se quiera excluir de ser utilizados con Squid, es decir, sitios problemáticos, se puede configurar en Shorewall que el acceso sea directo, con una configuración similar a la del siguiente ejemplo, donde se excluye de pasar por Squid las peticiones dirigidas a las redes 201.144.108.0/24 (IMSS.gob.mx) y 200.33.74.0/24 (SAT.gob.mx) y se abre el paso directo desde la red local hacia esta red: #ACTION SOURCE DEST # ACCEPT loc fw REDIRECT loc 8080 ACCEPT loc ACCEPT loc #LAST LINE -- ADD YOUR ENTRIES BEFORE PROTO tcp DEST PORT 8080 tcp net:201.144.108.0/24 all net:200.33.74.0/24 all THIS ONE -- DO NOT REMOVE Squid. Re-direccionamiento con Iptables. Bajo ciertas circunstancias, se requerirá tener salida transparente hacia Internet para ciertos servicios, pero al mismo tiempo se necesitará re-direccionar peticiones hacia servicio HTTP para pasar a través del el puerto donde escucha peticiones Squid, como proxy en modo transparente, es decir el puerto 8080/tcp, de modo que se impida la salida hacia alguna hacia servidores HTTP en el exterior sin que ésta pase antes por Squid. Ningún proxy conocido puede funcionar en modo transparente para los protocolos HTTPS, FTP, GOPHER ni WAIS, por lo que dichos protocolos tendrán que ser filtrados a través del NAT. El re-direccionamiento se hace a través de iptables. Considerando para este ejemplo que la red local se accede a través de una interfaz eth1, el siguiente esquema ejemplifica un redireccionamiento: iptables -A INPUT -m state --state NEW -m tcp -p tcp \ -i eth1 --dport 8080 -j ACCEPT iptables -t nat -A PREROUTING -i eth1 -p tcp \ --dport 80 -j REDIRECT --to-port 8080 service iptables save CONFIGURACION DE SERVIDOR DHCP Introducción. Acerca del Protocolo DHCP • • • Asignación manual: La asignación utiliza una tabla con direcciones MAC (acrónimo de Media Access Control Address, que se traduce como dirección de Control de Acceso al Medio). Sólo los anfitriones con una dirección MAC definida en dicha tabla recibirá el IP asignada en la misma tabla. Ésto se hace a través del parámetro hardware ethernet combinado con deny unknown-clients. Asignación automática: Una dirección de IP disponible dentro de un rango determinado se asigna permanentemente al anfitrión que la requiera. Asignación dinámica: Se determina arbitrariamente un rango de direcciones IP y cada anfitrión conectado a la red está configurada para solicitar su dirección IP al servidor cuando se inicia el dispositivo de red, utilizando un intervalo de tiempo controlable (parámetros default-lease-time y max-lease-time), de modo que la asignación de direcciones IP es de manera temporal y éstas se reutilizan de forma dinámica. URL: http://www.ietf.org/rfc/rfc2131.txt y http://www.ietf.org/rfc/rfc2132.txt DHCP. Equipamiento lógico necesario. CentOS, Fedora™ y Red Hat™ Enterprise Linux. Ejecute lo siguiente para instalar o actualizar todo necesario: yum -y install dhcp DHCP. Modificaciones en el Muro Cortafuegos. Por lo general, jamás se abren puertos de DHCP a las redes públicas. Es necesario abrir los puerto 67 y 68 (BOOTPS y BOOTPC) por UDP, tanto para trafico entrante como saliente. Servicios Iptables Asumiendo que el servicio funcionará a través de la interfaz eth1, puede utilizar el mandato iptables del siguiente modo: iptables -A INPUT -i eth1 -p udp -m state --state NEW -m udp \ --sport 67:68 --dport 67:68 -j ACCEPT service iptables save O bien edite el archivo /etc/sysconfig/iptables: vim /etc/sysconfig/iptables Y añada el siguiente contenido: -A INPUT -i eth1 -p udp -m state --state NEW -m udp --sport 67:68 --dport 67:68 -j ACCEPT Reinicie el servicio iptables a fin de que surtan efecto los cambios. service iptables restart DHCP. Shorewall Edite el archivo /etc/shorewall/interfaces: vim /etc/shorewall/interfaces Asumiendo que el servicio funcionará a través de la interfaz eth1 (zona loc), añada la opción dhcp a las opciones de la interfaz sobre la cual funciona el servicio dhcpd. Esta opción, tras reiniciar el servicio shorewall, habilita las comunicaciones de entrada y salida, para DHCP. ########################################################################## #ZONE INTERFACE BROADCAST OPTIONS net eth0 detect blacklist loc eth1 detect dhcp,blacklist #LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE Reinicie el servicio shorewall a fin de que surtan efecto los cambios. service shorewall restart DHCP. SELinux y el servicio DHCD Se recomienda encarecidamente dejar activo SELinux y dejar como están las políticas predeterminadas. Lo siguiente sólo aplica para CentOS 5 y Red Hat Enterprise Linux 5. Si se desea eliminar la protección que brinda SELinux al servicio dhcpd, utilice el siguiente mandato. setsebool -P dhcpd_disable_trans 1 Si se desea eliminar la protección que brinda SELinux al sistema para funcionar como cliente DHCP, utilice el siguiente mandato. setsebool -P dhcpc_disable_trans 1 Ninguna de estás políticas existe en CentOS 6 y Red Hat Enterprise Linux 6. DHCP. Iniciar, detener y reiniciar. Para hacer que el servicio de dhcpd esté activo con el siguiente inicio del sistema, en todos los niveles de ejecución (2, 3, 4 y 5), ejecute lo siguiente: chkconfig dhcpd on Para iniciar por primera vez el servicio dhcpd, ejecute: service dhcpd start Para hacer que los cambios hechos a la configuración del servicio dhcpd surtan efecto, ejecute: service dhcpd restart Para detener el servicio dhcpd, ejecute: service dhcpd stop DHCP. Procedimientos Archivo de configuración /etc/sysconfig/dhcp En el caso de disponer múltiples dispositivos de red en el servidor, se recomienda que el servicio dhcpd solamente funcione a través de la interfaz de red utilizada por la LAN. Edite el archivo /etc/sysconfig/dhcpd y agregue el valor eth0, eth1, eth2, etc., como argumento(s) del parámetro DHCPDARGS o bien lo que corresponda a la interfaz desde la cual accede la red local. Edite el archivo /etc/sysconfig/dhcpd: vim /etc/sysconfig/dhcpd Para el siguiente ejemplo, considerando que eth1 es la interfaz correspondiente a la LAN: # Command line options here DHCPDARGS=eth1 DHCP. Procedimientos. Archivo de configuración dhcpd.conf Considerando como ejemplo que se tiene una red local con las siguientes características: • • • • • • • • Dirección IP del segmento de red: 172.16.1.0 Dirección IP de difusión: 172.16.1.15 Máscara de sub-red: 255.255.255.240 (28 bit) Puerta de enlace: 172.16.1.1 Servidor de nombres: 172.16.1.1 Servidor Wins: 172.16.1.1 Servidores de tiempo (NTP): recomendamos utilizar los de NTP.org —es decir 0.pool.ntp.org, 1.pool.ntp.org, 2.pool.ntp.org y 3.pool.ntp.org— los cuales son confiables y de acceso gratuito. Rango de direcciones IP a asignar de modo dinámico: 172.16.1.2 hasta 172.16.1.14. Puede utilizar el contenido de ejemplo, que se encuentra más adelante, para adaptar o bien crear desde cero, un nuevo archivo de configuración para el servicio dhcpd, ajustando los datos a una red para un conjunto de sistemas en particular. DHCP. Procedimientos. Configuración Básica. 1 Descargue el archivo plantilla, con una configuración mínima recomendada, desde AlcanceLibre.org, ejecutando lo siguiente: cd /etc/dhcp/ mv dhcpd.conf dhcpd.conf.original wget http://www.alcancelibre.org/linux/secrets/dhcpd.conf restorecon dhcpd.conf cd Si se utiliza CentOS 6 o Red Hat Enterprise Linux 6, edite el archivo /etc/dhcp/dhcpd.conf. vim /etc/dhcp/dhcpd.conf Si se utiliza CentOS 5 o Red Hat Enterprise Linux 5, edite el archivo /etc/dhcpd.conf. vim /etc/dhcpd.conf DHCP. Procedimientos. Configuración Básica. 2 Para efectos prácticos, utilice la siguiente plantilla y modifique todo lo que esté resaltado. # Si se tienen problemas con equipos con Windows Vista/7/8 omita el parámetro # server-identifier. Ésto aunque rompe con el protocolo DHCP, permite a los # clientes Windows Vista/7/8 poder comunicarse con el servidor DHCP y aceptar # la dirección IP proporcionada. # server-identifier 172.16.1.1; ddns-update-style interim; ignore client-updates; authoritative; default-lease-time 900; max-lease-time 7200; option ip-forwarding off; option domain-name "red-local.net"; option ntp-servers 0.pool.ntp.org, 1.pool.ntp.org, 2.pool.ntp.org, 3.pool.ntp.org; shared-network redlocal { subnet 172.16.1.0 netmask 255.255.255.240 { option routers 172.16.1.1; option subnet-mask 255.255.255.240; option broadcast-address 172.16.1.15; option domain-name-servers 172.16.1.1; option netbios-name-servers 172.16.1.1; range 172.16.1.2 172.16.1.14; } } Lo anterior corresponde a la configuración básica recomendada para un servidor DHCP básico. Una vez terminada la configuración, para iniciar el servicio ejecute: service dhcpd start DHCP. Procedimientos. Asignación de direcciones IP estáticas Para definir equipos con direcciones IP estáticas, pueden añadirse también en la configuración de la siguiente forma, especificando el nombre de anfitrión, dirección MAC y dirección IP: host impresora { option host-name "epl5900.redlocal.net"; hardware ethernet 00:24:2B:65:54:84; fixed-address 172.16.1.59; } Edite el archivo /etc/dhcp/dhcpd.conf o bien /etc/dhcpd.conf, según corresponda: vim /etc/dhcp/dhcpd.conf DHCP. Procedimientos Asignación de direcciones IP estáticas. Un ejemplo de la configuración quedaría del siguiente modo: # Si se tienen problemas con equipos con Windows Vista/7/8 omita el parámetro # server-identifier. Ésto aunque rompe con el protocolo DHCP, permite a los # clientes Windows Vista/7/8 poder comunicarse con el servidor DHCP y aceptar # la dirección IP proporcionada. # server-identifier 172.16.1.1; ddns-update-style interim; ignore client-updates; authoritative; default-lease-time 900; max-lease-time 7200; option ip-forwarding off; option domain-name "red-local.net"; option ntp-servers 0.pool.ntp.org, 1.pool.ntp.org, 2.pool.ntp.org, 3.pool.ntp.org; shared-network redlocal { subnet 172.16.1.0 netmask 255.255.255.240 { option routers 172.16.1.1; option subnet-mask 255.255.255.240; option broadcast-address 172.16.1.15; option domain-name-servers 172.16.1.1; option netbios-name-servers 172.16.1.1; range 172.16.1.2 172.16.1.12; } # Equipos con IP fija. host impresora { option host-name "epl5900.red-local.net"; hardware ethernet 00:24:2B:65:54:84; fixed-address 172.16.1.13; } host pc14 { option host-name "pc14.red-local.net"; hardware ethernet 00:50:BF:27:1C:1C; fixed-address 172.16.1.14; } } Si realizó cambios en la configuración, reinicie el servicio dhcpd a fin de que surtan efecto los cambios. service dhcpd restart DHCP. DNS dinámico El servidor DNS puede funcionar de modo dinámico permitiendo la actualización en tiempo real de los nombres de anfitrión y las direcciones IP asociadas a éstos, a través de la información enviada a través de un servidor DHCP. Edite el archivo /etc/dhcp/dhcpd.conf: vim /etc/dhcp/dhcpd.conf Asumiendo que ya se dispone de un servidor DNS previamente configurado y funcionando, para configurar el servidor DHCP a fin de que actualice automáticamente los registros correspondientes en las zonas del servidor DNS, sólo basta añadir los parámetros ddns-updates, ddns-domainname, ddns-rev-domainname, una inclusión para utilizar la misma firma digital de la configuración del DNS y definir las zonas de localhost, zona de re-envío y zona de resolución inversa del DNS, con los valores ejemplificados a continuación, solamente siendo necesario reemplazar los valores resaltados. Comprobaciones desde clientes DHCP Abra una terminal, como usuario root y, asumiendo que se tiene una interfaz de red denominada eth0, utilice los siguientes mandatos para desactivar la interfaz eth0 y asignar una nueva dirección IP a través del servidor dhcp. ifdown eth0 dhclient -d -I nombre-equipo -H nombre-equipo eth0 Si se dispone de varios servidores DHCP y se desea probar la configuración de alguno en particular, puede añadir la opción -V al mandato dhclient, definiendo como valor para esta opción, el mismo valor que fue asignado para el parámetro server-identifier, establecido en el archivo /etc/dhcp/dhcpd.conf del servidor correspondiente. ifdown eth0 dhclient -d -I nombre-equipo -H nombre-equipo -V 172.16.1.1 eth0 Edite el archivo /etc/sysconfig/network-scripts/ifcfg-eth0 o el que corresponda al dispositivo de red principal del sistema cliente: vim /etc/sysconfig/network-scripts/ifcfg-eth0 La configuración permanente del dispositivo de red, considerando como ejemplo la interfaz eth0 con dirección MAC 00:01:03:DC:67:23, solicitando los datos para los servidores DNS, puerta de enlace y servidores de tiempo, sería la siguiente: DEVICE=eth0 ONBOOT=yes USERCTL=yes HWADDR=00:01:03:DC:67:23 TYPE=Ethernet NM_CONTROLLED=no BOOTPROTO=dhcp DEFROUTE=yes PEERDNS=yes PEERROUTES=yes PEERNTP=yes DOMAIN=red-local.net DHCP_CLIENT_ID=nombre-equipo DHCP_HOSTNAME=nombre-equipo Si utiliza NM_CONTROLLED=yes, deje que el servicio NetworkManager se encargue por si solo de aplicar los cambios. Si utiliza NM_CONTROLLED=no, reinicie el servicio network a fin de que surtan efecto los cambios. service network restart SERVICIOS Y REDES NFS Como instalar y configurar NFS en CentOS 6.2 Esta es la manera de instalar el servicio de NFS en un servidor Linux CentOS 6.2 y hacerlo accesible a las demás computadora en tu red. Supongo que ya tendrás un servidor Linux CentOS 6.2 instalado y corriendo y algun cliente Linux sea Fedora, CentOS o Ubuntu. El NFS requiere de varios servicios para su ejecucion: • • • rpcbind: (portmap en versiones anteriores de Linux) el demonio de primario en que los demas demonios se basaran, rpcbind gestiona las conexiones de las aplicaciones que utilizan la especificación RPC. Por defacto, rpcbind usa el puerto TCP 111 en el que se hace una conexión inicial. Este se utiliza para negociar un rango de puertos TCP, por lo general por encima del puerto 1024, que se utilizará para la transferencia de datos posteriores. Este servicio debe correr en el servidor y los clientes NFS. NFS: inicia los procesos RPC necesarios para atender el sistemas de compatir archivos NFS. Este servicio solo debe correr en el servidor NFS. nfslock: Se utiliza para permitir que los clientes NFS bloquean archivos en el servidor a través de los procesos de RPC. Este servicio debe correr en el servidor y los clientes NFS. Configuración NFS Ahora vamos a configurar el lado servidor: 1. Instalemos los paquetes necesarios para que NFS pueda correr. $ yum install rpcbind nfs-utils nfs-utilslib 2. Activemos los servicios para que se ejecuten siempre cuando reiniciamos la máquina. $ chkconfig --level 35 nfs on $ chkconfig --level 35 nfslock on $ chkconfig --level 35 rpcbind on 3. Iniciemos los servicios requeridos $ service rpcbind start $ service nfslock start $ service nfs start 4. Verifiquemos que los puertos TCP estan activos $ sudo rpcinfo $ sudo vi /etc/exports SERVICIOS Y REDES SAMBA Sobre Samba Samba es una implementación libre del protocolo de archivos compartidos de Microsoft Windows (antiguamente llamado SMB, renombrado recientemente a CIFS) para sistemas de tipo UNIX. Samba configura directorios Unix-Linux (incluyendo sus subdirectorios) como recursos para compartir a través de la red. Para los usuarios de Microsoft Windows, estos recursos aparecen como carpetas normales de red. Los usuarios de Linux pueden montar en sus sistemas de archivos estás unidades de red como si fueran dispositivos locales, o utilizar la orden smbclient para conectarse a ellas muy al estilo del cliente de la línea de órdenes ftp. Cada directorio puede tener diferentes permisos de acceso sobrepuestos a las protecciones del sistema de archivos que se esté usando en Linux. Por ejemplo, las carpetas home pueden tener permisos de lectura y escritura para cada usuario, permitiendo que cada uno acceda a sus propios archivos; sin embargo, deberemos cambiar los permisos de los archivos localmente para dejar al resto ver nuestros archivos, ya que con dar permisos de escritura en el recurso no será suficiente Instalación de Samba Para llevar a cabo la instalacion se necesitaran los siguientes paquetes: • • • samba samba-client samba-common Para instalarlos haga uso de la terminal como se muestra a continuacion: [BASH]# yum install -y samba samba-client sambacommon Configuración de Samba. Los ficheros que modificaremos seran: Fichero /etc/samba/lmhosts Fichero /etc/samba/lmhosts El fichero /etc/samba/lmhosts es el fichero de gestión de los equipos de red estandar usado para resolver nombres a direcciones IP en el sistema. Podria decirse que este fichero es el equivalente al fichero /etc/hosts que es un estandard de Linux-Unix y su estructura es identica a la que se muestra a continuacion: 192.168.220.100 desarrollo 192.168.220.101 ventas}}} La única diferencia es que los nombres de la columna derecha son nombres NetBIOS y solo son usados en linux por samba. Recordemos que los servidores DNS sirven para los casos en donde un equipo requiere conectarse a otro y no tener que hacerlo por la direccion IP, por ejempo: 66.102.11.104 hydra El fichero /etc/samba/lmhosts es una simplificación muy básica de ese proceso, pero sólo válida para tu propio equipo. Recordemos que el proposito del fichero /etc/hosts es resolver los nombres de equipos que no pueden ser resueltos de otra manera. También se puede usar para resolver nombres de equipos en pequeñas redes sin servidor DNS. Es por ello que agregaremos al fichero /etc/samba/lmhosts El nombre que tiene especificado en el fichero /etc/hosts Ejemplo: Fichero /etc/hosts/ -------------------------------------1. 2. Do not remove the following line, or various programs that require network functionality will fail. 127.0.0.1 localhost.localdomain localhost localhost 192.168.1.105 servidor.empresa.com.mx}}} Fichero /etc/samba/lmhosts - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 127.0.0.1 localhost 192.168.1.105 servidor.empresa}}} Como podemos observar solo agregamos la linea final del fichero /etc/hosts al final del fichero /etc/samba/lmhosts Configuracion de Samba. Fichero /etc/samba/smb.conf La configuracion basica de Samba se hara sobre el fichero localizado en: /etc/samba/smb.conf Configuraciondeparametrosglobales# 1.-Con la ayuda de algun editor de textos busque la siguiente linea workgroup = MYGROUP En esta linea puedes especificar un nombre para el grupo de usuarios que podran hacer uso de este recurso Ejemplo: workgroup = Desarrollo 2.-Busque la siguiente linea server string = Samba Server Version %v En esta linea puedes poner un mensaje de bienvenida para el Servidor Samba Ejemplo: server string = Servidor Samba Desarrollo 3.-Busque la siguiente linea netbios name = MYSERVER En esta linea deberas especificar el nombre que tiene asignado el equipo. Su nombre debe ser igual al especificado en el fichero /etc/samba/lmhosts Ejemplo: netbios name = servidor.empresa Configuración de Samba. 4.-Busque la siguiente linea interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24 Esta linea especifica desde que segmentos de red escuchara peticiones el servidor Samba, cualquier otra interfaz no listada aqui sera ignorada Ejemplo: interfaces = lo eth0 192.168.1.1/24 10.10.1.1 5.-Busque la siguiente linea hosts allow = 127. 192.168.12. 192.168.13. Esta linea especifica desde que segmentos de red escuchara peticiones el servidor Samba Ejemplo: hosts allow = 192.168.12.2. Note el punto al final de la linea 6.-Busque la siguiente linea log file = /var/log/samba/log.%m max log size = 50 }}} Esta lineas especifican la ubicacion donde quedaran los logs, en este caso la extensión sera conformado por el nombre del equipo desde la cual se hizo la conexión La segunda linea especifica el tamaño máximo para los archivos de logs. Configuraciondelosrecursoscompartidos La configuracion de las recursos que compartiremos deben ir especificados al final del fichero /etc/samba/smb.conf Y deben seguir la siguiente estructura: [nombreDescriptivoDelRecursoCompartido] comment = Comentarios path = rutaDelREcurso public = yes writable = yes printable = no write list = desarrollo}}} Configuración de Samba. Algunas de las opciones que podemos agregar a esta estructura son las siguientes: Directiva Valor Accion encrypt passwords yes | no Esta direcitva indica si las contraseñas seran cifradas cuando el usuario se autentique usuario | grupo Lista a los usuarios o grupos a los cuales les negara el acceso invalid users valid users usuario Lista a los usuarios a los cuales el servidor les dará acceso admin users usuario Lista a los usuarios que asumiran el rol de administrador read list usuario Lista a los usuarios que solo podran leer el recurso compartido write list Lista a los usuarios que podran escribir en el recurso compartido guest ok usuario yes | no Define si se permitirá el acceso como usuario invitado o no comment Comentario En esta seccion podras poner un comentario acerca del recurso que estas compartiendo path /ruta/del/recurso yes | no Define si el recurso podra ser visible o no browseable En esta seccion deberas especificar la ruta del recurso que compartes Un ejemplo sobre el uso de estas opciones se ve a continuacion [FacturasDiarias] comment = Facturas path = /var/facturas guest ok = no write list = jefe directory mask = 1770 create mask = 0660 browseable = yes admin users = jefe contador valid users = jefe contador writable = yes public = yes }}} AltadeusuariosenSambA Para dar de alta cuentas de usuario en Samba usaremos el comando useradd el cual debera ser aplicado segun la siguiente estructura [BASH]# useradd -s /bin/nologin cuentaDeUsuario el parametro -s /sbin/nologin Indicara al sistema que el usuario no tendra acceso al interprete de comandos Configuración de Samba. AsignaciondecontraseñasausuariosenSamba# Para asignar contraseñas a los usuarios en Samba usaremos el comando smbpaaswd el cual debera ser aplicado segun la siguiente estructura [BASH]# smbpasswd -a cuentaDeUsuario Iniciar,deteneroreiniciarelservidorSamba# Para iniciar el servidor samba por primera vez solo deberá teclear en terminal el siguiente comando: [root@ localhost ~]# /etc/init.d/smb start Igualmente existen opciones ya sea para reiniciar, detener, recargar o conocer el status en el que se encuentra el servidor Samba. Estas opciones pueden ser consultadas en la siguiente tabla: start Inicia el servicio stop Detiene el servicio restart Reinicia el servicio.-La diferencia con reload radica en que al ejecutar un restart este mata todos los procesos relacionado con el servicio y los vuelve a generar de nueva cuenta reload Recarga el servicio.-La diferencia con restart radica en que al ejecutar un reload este solamente carga las actualizaciones hechas al fichero de configuración del servicio sin necesidad de matar los procesos relacionados con el mismo, por lo que podría entenderse que hace el cambio en caliente. condrestart Reinicio Condicional.- Solamente se inicia si el servicio se encuentra ejecutándose. status Da a conocer el estado en el que se encuentra el servicio Como alternativa también podemos ocupar el siguiente comando para iniciar el servidor samba [root@ localhost ~]# service smb start Y de igual manera podemos usar las opciones antes descritas en la tabla anterior. Recuerde que estos comandos se ejecutan como root. ConectandoconelservidorSamba# La forma para conectar al servidor samba desde terminal sigue la siguiente sintaxis [BASH]# smbclient //IPdelServidorSamba/recursoCompartido -U usuario