| Comprar | Carrito | Buscar | cosaslibres.com cd / |
| ¿ Que es ? | Entretenimiento | Nosotros | Catalogo de Productos Linux | |||||||||||
| [#Linux|Software|Hardware] | [Kiosco|Links] | [Acerca|Buscar] | [Colombia|Hosting|Internacional] |
[ Preguntas frecuentes ] [ Visite nuestra Promoción vigente ]
5. Información genérica sobre la configuración de redes.Las siguientes subsecciones las necesitará para saber y comprender ciertas cosas antes de que intente configurar la red. Son principios fundamentales que se aplican independientemente de la naturaleza exacta de la red que desee organizar. 5.1 ¿Qué necesito para comenzar?Antes de que empiece a construir o configurar la red necesita saber algunas cosas. Las más importantes son: Código fuente del núcleo.Antes que nada: La mayoría de las distribuciones vienen por defecto con el soporte de red activado, por lo cual no habrá que recompilar el núcleo. Si tiene hardware común, debería irle bien. Por ejemplo, tarjetas de red 3COM, NE2000, o Intel. Sin embargo proporcionamos la siguiente información por si necesita actualizar el núcleo. Como puede ser que el núcleo que está ejecutando no esté preparado para los tipos de red o tarjetas que desee usar, probablemente necesitará las fuentes del núcleo para recompilarlo con las opciones apropiadas. Siempre puede obtener la última versión de CDROM.com Normalmente las fuentes del núcleo se instalarán en el directorio /usr/src/linux. Para más información sobre cómo aplicar parches y construir el núcleo debería leer el Kernel Como. Para más información sobre cómo configurar módulos del núcleo debería leer el Modules mini-Howto. Además, el fichero README que hay en las fuentes del núcleo y el directorio Documentation son muy ilustrativos para el lector intrépido. A menos que se diga específicamente lo contrario, recomiendo que empiece con la versión estándar del núcleo (la que tenga un número par como segundo dígito del número de versión). Las versiones de desarrollo del núcleo (las que tienen el segundo dígito impar) podrían tener algunos cambios estructurales u otros que podrían causar problemas con otro software en su sistema. Si no está seguro de que pueda resolver ese tipo de problemas sumado al potencial de que haya otros errores de software, no los use. Por otro lado, algunas de las capacidades aquí descritas han sido introducidas durante el desarrollo de los núcleos 2.1, por lo que tendrá que tomar una decisión: puede mantenerse en 2.0 mientras espera por el 2.2 y por una distribución con cada herramienta actualizada, o puede coger un 2.1 y buscar los diversos programas necesarios para explotar las nuevas capacidades. En el momento de escribir este Como, en Agosto de 1998, el núcleo disponible es el 2.1.115 y se espera que el 2.2 aparezca pronto. Nota del Traductor: En el momento en que acabó la traducción de este Como, en septiembre de 1999, las versiones disponibles del núcleo son la 2.2.12 (estable) y la 2.3.16 (desarrollo). Además, las principales distribuciones han puesto al día sus herramientas para tratar las capacidades de la serie 2.1 y superiores. Herramientas de red actualizadas.Las herramientas de red son los programas que usted usa para configurar los dispositivos de red de linux. Estas herramientas permiten asignar direcciones a dispositivos y configurar rutas, por ejemplo. La mayoría de distribuciones modernas de Linux están dotadas con las herramientas de red, por lo que si ha instalado Linux a partir de una distribución y no ha instalado las herramientas de red, debería hacerlo. Si no ha instalado a partir de una distribución entonces necesitará las fuentes para compilar las herramientas usted mismo. No es difícil. Las herramientas de red las mantiene ahora Bernd Eckenfelds y están disponibles en: ftp://ftp.inka.de/pub/comp/Linux/networking/NetTools/ y están replicadas en: ftp://ftp.uk.linux.org/pub/linux/Networking/base/. También puede encontrar los últimos paquetes de RedHat en ftp://ftp.cdrom.com/pub/linux/redhat/redhat-6.0/i386/base/net-tools-1.51-3.i386.rpm. Para Debian, los paquetes que traen las principales herramientas son los paquetes hostname, netbase y netstd, que encontrará en ftp://ftp.debian.org/debian/dists/stable/main/binary-i386/base/. Asegúrese de que elige la versión que más se ajuste al núcleo que desee usar y siga las instrucciones del paquete para instalarlo. Para instalar y configurar la versión actual, ---en el momento de traducirse esto--- esto necesitará hacer lo siguiente: usuario% cd /usr/src usuario% tar xvfz net-tools-x.xx.tar.gz usuario% cd net-tools-x.xx usuario% make config usuario% make root# make install O si no, use los paquetes de su distribución. Por ejemplo, con RedHat: root# rpm -U net-tools-x.xx-y.i386.rpm y con Debian: root# dpkg -i hostname_x.xx-y.yy.deb root# dpkg -i netbase_x.xx-y.yy.deb root# dpkg -i netstd_x.xx-y.yy.deb En los anteriores ejemplos, x.xx se refiere a la versión de las herramientas, e y.yy a la revisión de los correspondientes paquetes. Si además va a configurar un cortafuegos o a usar la característica de IP Masquerade, necesitará ipfwadm. La última versión la puede obtener en: ftp:/ftp.xos.nl/pub/linux/ipfwadm. De nuevo se encontrará con más de una versión disponible. Asegúrese de coger la versión que más se ajuste a su núcleo. Tenga en cuenta que las capacidades de cortafuegos de Linux cambiaron durante el desarrollo 2.1 y ipfwadm ha sido sustituida por ipchains en la versión 2.2 del núcleo. ipfwadm sólo vale para la versión 2.0 del núcleo. Se sabe de estas distribuciones que se ajustan a versiones 2.0 o anteriores del núcleo:
Para instalar y configurar la versión actual en el momento de escribir esto necesita leer el IPChains Howto, disponible en el Proyecto de Documentación de Linux http://www.linuxdoc.org Tenga en cuenta que si tiene una versión 2.2 (o 2.1 de las últimas) del núcleo, ipfwadm no es la herramienta correcta para configurar un cortafuegos. Esta versión del NET-3-HOWTO todavía no trata con la nueva configuración de cortafuegos. Si necesita información más detallada sobre ipchains, por favor, diríjase al documento mencionado anteriormente. Aplicaciones de red.Las aplicaciones de red son programas como telnet y ftp y sus respectivos programas servidores. David Holland estuvo manteniendo una distribución de las más comunes de la que ahora se ocupa :netbug@ftp.uk.linux.org. Puede obtenerlas en: ftp://ftp.uk.linux.org/pub/linux/Networking/base. Introducción a las direcciones IP.Las direcciones del Protocolo Internet (IP) están compuestas por cuatro bytes. La convención es escribir estas direcciones en la denominada «notación decimal puntuada» (dotted decimal notation). De esta forma cada byte es convertido en un número decimal (0-255), despreciando los ceros a la izquierda a menos que el número en sí sea cero. Por convención, cada interfaz de una máquina o encaminador tiene una dirección IP. Es válido usar la misma IP para cada interfaz de una sola máquina en algunas circunstancias, pero normalmente cada interfaz tiene su propia dirección. Las Redes basadas en Internet Procotol son secuencias contiguas de direcciones IP. Todas las direcciones dentro de una red tienen un número de dígitos de en común. A la porción de la red que es común a todas las direcciones llama la «porción de la red». Los dígitos restantes son llamados «porción de la máquina». Al número de bits que comparten todas las direcciones de una red se le llama máscara de red (netmask), y su papel es determinar qué direcciones pertenecen a la red y cuáles no. Consideremos el siguiente ejemplo: --------------------- --------------- Dirección Host 192.168.110.23 Máscara de red 255.255.255.0 Porción de red 192.168.110. Porción de Host .23 --------------------- --------------- Dirección de Red 192.168.110.0 Dirección de Difusión 192.168.110.255 --------------------- --------------- Cualquier dirección a la que se aplique una operación and de bits con su máscara de red, revelará la dirección de la red a la que pertenece. La dirección de red es por tanto siempre el menor número de dirección dentro de el rango de la red y siempre tiene la porción de máquina codificada toda con ceros. La dirección «de difusión» (broadcast) es una especial a la que escucha cada máquina en la red además de a la suya propia. Esta dirección es a la que se envían los datagramas si se supone que todas las máquinas de la red lo deben recibir. Ciertos tipos de datos, como la información de encaminamiento y los mensajes de aviso son transmitidos a la dirección de difusión para que cada estación en la red pueda recibirlo simultáneamente. Hay dos estándares usados comúnmente al respecto de la dirección de difusión. El más ampliamente aceptado es el de usar la dirección más alta posible en la red. En el ejemplo anterior sería 192.168.110.255. Por alguna razón, otras estaciones han adoptado la convención de usar las direcciones de red como direcciones de difusión. En la práctica no importa mucho cual use, pero asegúrese de que cada máquina en la red está configurada con la misma. Por razones administrativas, durante el desarrollo inicial del protocolo IP se formaron, de forma arbitraria, algunos grupos de direcciones como redes, y estas redes se agruparon en las llamadas «clases». Estas clases proporcionan un cierto número de redes de tamaño estándar que pueden ser reservadas. Los rangos reservados son: ---------------------------------------------------------- | Clase | Máscara de | Direcciones de red | | de red | red | | ---------------------------------------------------------- | A | 255.0.0.0 | 0.0.0.0 - 127.255.255.255 | | B | 255.255.0.0 | 128.0.0.0 - 191.255.255.255 | | C | 255.255.255.0 | 192.0.0.0 - 223.255.255.255 | |Multicast| 240.0.0.0 | 224.0.0.0 - 239.255.255.255 | ---------------------------------------------------------- Las direcciones que deberá usar dependen de lo que vaya a hacer exactamente. Puede que tenga que realizar varias de las siguientes actividades para obtener las direcciones que necesite:
5.2 ¿Dónde debería poner las órdenes de configuración?Hay unas pocas opciones a elegir para el procedimiento de arranque del sistema Linux. Después de que carga el núcleo, siempre ejecuta un programa llamado init. El programa init lee entonces el fichero de configuración llamado /etc/inittab y comienza el proceso de arranque. Hay unos pocos init diferentes, aunque todo el mundo está ahora convergiendo al modelo SystemV, desarrollado por Miguel van Smoorenburg. A pesar de que el programa init sea el mismo, la configuración del arranque del sistema está organizada de manera diferente en cada distribución. Normalmente el fichero /etc/inittab contiene una entrada que dice algo como: si::sysinit:/etc/init.d/boot Esta línea especifica el nombre del fichero de guión de ejecución (script) que controla la secuencia de carga. Este fichero es algo así como el AUTOEXEC.BAT en MS-DOS. El guión de arranque suele llamar a otros, y a menudo la red se configura dentro de alguno de éstos. La siguiente tabla puede ser usada como guía para su sistema: ---------------------------------------------------------------------- Distrib. |Interfaz Configuración/Encaminado |Iniciación del Servidor ---------------------------------------------------------------------- Debian | /etc/init.d/network | /etc/rc2.d/* ---------------------------------------------------------------------- Slackware| /etc/rc.d/rc.inet1 | /etc/rc.d/rc.inet2 ---------------------------------------------------------------------- RedHat | /etc/rc.d/init.d/network | /etc/rc.d/rc3.d/* ---------------------------------------------------------------------- Fíjese en que Debian y Red Hat usan un directorio entero de guiones que «levantan» los servicios del sistema (y normalmente la información no se encuentra en esos archivos; por ejemplo, el sistema de Red Hat almacena toda la configuración del sistema en ficheros dentro de /etc/sysconfig, de donde es leída por los guiones de carga). Si quiere comprender los detalles del proceso de arranque del sistema, le sugiero que examine /etc/inittab y la documentación que acompaña a init. Linux Journal va a publicar (o lo ha hecho ya) un artículo tratando la iniciación del sistema, y este documento mantendrá una referencia a él tan pronto como esté disponible en la red. La mayoría de distribuciones modernas incluyen algún programa que le permita configurar la mayoría de interfaces de red. Si tiene una de éstas entonces debería ver si hace lo que usted quiere antes de acudir a la configuración manual. -------------------------------------------- Distrib. | Programa de configuración de red -------------------------------------------- RedHat | /sbin/netcfg Slackware | /sbin/netconfig -------------------------------------------- 5.3 Creación de las interfaces de red.En muchos sistemas operativos Unix los dispositivos de red tienen correspondencias en el directorio /dev. Esto no pasa en Linux. Los dispositivos de red se crean de forma dinámica y por tanto no requieren de la presencia de ficheros de dispositivo. En la mayoría de los casos los dispositivos de red son creados automáticamente por el controlador de dispositivos mientras se inicia y localiza el hardware. Por ejemplo, el controlador Ethernet crea interfaces eth[0..n] secuencialmente según va encontrado tarjetas Ethernet. La primera tarjeta que encuentra es eth0, la segunda eth1, etc. Sin embargo, en algunos casos, de los que slip y ppp son ejemplos notables, los dispositivos de red son creados por la acción de algún programa de usuario. Se aplica la misma numeración secuencial de dispositivos, pero no se crean al arrancar. La razón es que al contrario que con los dispositivos Ethernet, el número de dispositivos ppp o slip puede variar durante la actividad de la máquina. Estos casos serán cubiertos con más detalle en secciones posteriores. 5.4 Configuración de una interfaz de red.Cuando tenga todos los programas necesarios y su dirección e información de red, puede configurar la interfaz de red. Cuando hablamos de configurar una interfaz de red nos referimos al proceso de asignar direcciones apropiadas a un dispositivo y asignar valores adecuados a otros parámetros configurables. El programa usado más comúnmente para hacer esto es la orden ifconfig (interface configure). Lo normal será usar una orden similar a la siguiente: root# ifconfig eth0 192.168.0.1 netmask 255.255.255.0 up En este caso estoy configurando la interfaz Ethernet eth0, con dirección IP 192.168.0.1 y máscara de red 255.255.255.0. El `up del final de la orden le dice al interfaz que debería activarse, pero normalmente se puede omitir, ya que es el valor por defecto. Para desactivar una interfaz, simplemente tiene que ejecutar ifconfig eth0 down. El núcleo asume ciertas cosas cuando configura interfaces. Por ejemplo, puede especificar la dirección de red y difusión de una interfaz, pero si usted no lo hace, como en mi ejemplo anterior, entonces el núcleo hará una suposición razonable de cuáles deberían ser, basándose en la máscara que se le proporciona; si tampoco indica la máscara, entonces partirá de la clase de la dirección IP configurada. En mi ejemplo, el núcleo asumirá que se va a configurar una red clase C en la interfaz y establece una dirección de red 192.168.0.0 y una dirección de difusión 192.168.0.255. Hay otras muchas opciones para la orden ifconfig. Las mas importantes son:
Puede usar la orden ifconfig sobre cualquier dispositivo de red. Algunos programas de usuario, como pppd y dip configuran automáticamente los dispositivos de red al crearlos, por lo que es innecesario el uso de ifconfig con ellos. 5.5 Configuración del sistema de resolución de nombres (Name Resolver)El sistema de resolución de nombres es una parte de la biblioteca estándar de Linux. Su función principal es proporcionar un servicio para convertir las denominaciones «amistosas con el hombre» de las máquinas como ftp.funet.fi a direcciones IP «amigables para la máquina» como 128.214.248.6. ¿Qué hay en un nombre?Posiblemente esté familiarizado con la apariencia de los nombres de máquina de Internet, pero puede que no entienda como se construyen, o como se «desconstruyen». Los nombres de dominio de Internet son jerárquicos por naturaleza; esto es, tienen una estructura en árbol. Un dominio es una familia, o grupo de nombres. Un dominio puede ser fragmentado en subdominios. Un «dominio de nivel superior» (toplevel domain) es un dominio que NO es un subdominio. Los Dominios de Nivel Superior están especificados en el RFC-920. Algunos ejemplos de los más comunes son:
Por razones históricas, la mayoría de los dominios pertenecientes a uno de los de nivel superior que no basados en un nombre de país, son de organizaciones dentro de los Estados Unidos, aunque los Estados Unidos tienen también su propio código de país .us. Esto ha dejado de ser cierto para los dominios .com y .org, que son usados de forma común por compañías de fuera de los Estados Unidos de América. Cada uno de estos dominios de nivel superior tiene subdominios. Los dominios de nivel superior basados en el nombre de un país suelen estar divididos en subdominios basados en com, edu, gov, mil y org. Por ejemplo, encontrará cosas como com.au y gov.au, las organizaciones comerciales y gubernamentales en Australia. El siguiente nivel de división suele representar el nombre de la organización. Los siguientes subdominios varían, a menudo basando el siguiente nivel en la estructura departamental de la organización a la que pertenecen, pero pueden estarlo en cualquier criterio considerado razonable y con significado claro para los administradores de la red de la organización. La parte más a la izquierda de un nombre siempre es el nombre único asignado a la máquina, y es llamada hostname, la porción del nombre a la derecha del nombre de la máquina es el domainname (nombre de dominio), y el nombre completo es llamado Fully Qualified Domain Name (Nombre de Dominio Completamente Cualificado). Si usamos el ordenador de Terry como ejemplo, el nombre completamente cualificado es perf.no.itg.telstra.com.au. Esto significa que el nombre de la máquina es perf y el nombre de dominio el no.itg.telstra.com.au. El nombre de dominio está basado en un dominio de nivel superior basado en su país, Australia, y como su dirección de correo pertenece a una organización comercial tenemos .com como siguiente nivel de dominio. El nombre de la compañía es (era) telstra, y la estructura interna de su nombre está basada en una estructura organizacional. En su caso, la máquina pertenece al Grupo de Tecnología de la Información (Information Technology Group), sección de Operaciones de Red (Network Operations). Los nombres son, por norma, bastante más cortos; por ejemplo, mi PSI se llama systemy.it y mi organización sin ánimo de lucro se llama linux.it, sin subdominio com ni org, por lo que mi propia máquina se llama morgana.systemy.it y rubini@linux.it es una dirección de correo electrónico válida. Sepa que el dueño de un dominio tiene derecho tanto para registrar una máquina como para registrar subdominios; por ejemplo, el GUL (Grupo de Usuarios de Linux) al que pertenezco usa el dominio pluto.linux.it, porque los dueños de linux.it convinieron en abrir un subdominio para el GUL. Qué información necesitaráNecesitará saber a qué dominio pertenecen sus máquinas. El software de resolución de nombres proporciona el servicio de traducción haciendo consultas a un Servidor de Nombres de Dominio (Domain Name Server), por lo que deberá saber la dirección IP del servidor de nombres (nameserver) local que vaya a usar. Hay tres ficheros que es necesario editar. Los comentaré uno a uno. /etc/resolv.conf/etc/resolv.conf es el fichero de configuración principal del código de resolución de nombres. Su formato es bastante simple. Es un fichero de texto con una palabra clave por línea. Hay tres palabras clave de uso frecuente, que son:
Su /etc/resolv.conf podría parecerse a éste: domain maths.wu.edu.au search maths.wu.edu.au wu.edu.au nameserver 192.168.10.1 nameserver 192.168.12.1 Este ejemplo especifica que el nombre de dominio por defecto para añadir a los nombres no cualificados (esto es, nombres de máquinas suministrados sin dominio) es maths.wu.edu.au, y que si no se encuentra la máquina en este dominio intentemos también el dominio wu.edu.au directamente. Se proporcionan dos entradas de servidor de nombres, cada uno de los cuales puede ser llamado por el código de resolución de nombres para traducir el nombre. /etc/host.confEl fichero /etc/host.conf es el lugar donde se configuran algunos elementos que gobiernan el comportamiento del código de resolución de nombres. El formato de este fichero está descrito en detalle en la página de manual resolv+. El ejemplo siguiente funcionará en casi todas las circunstancias: order hosts,bind multi on Esta configuración le dice al resolutor de nombres que examine el fichero /etc/hosts antes de intentar consultar a un servidor de nombres, y que devuelva todas las direcciones válidas de una máquina que encuentre en el fichero /etc/hosts, en lugar de sólo el primero. /etc/hostsEl fichero /etc/hosts es donde se pone el nombre y dirección IP de las máquinas locales. Si usted inserta un nombre en este fichero, entonces su ordenador no consultará a un servidor de dominio para obtener la dirección IP. La desventaja de este método es que usted mismo tendrá que poner el fichero al día si la dirección de alguna máquina cambia. En un sistema bien administrado, las únicas entradas que suelen aparecer son la interfaz de loopback (prueba en bucle) y el nombre de la máquina local. # /etc/hosts 127.0.0.1 localhost loopback 192.168.0.1 this.host.name Se puede especificar más de un nombre de máquina por línea, como se demuestra en la primera entrada, que es la forma estándar para la interfaz de prueba (loopback). Ejecutar un servidor de nombresSi quiere tener un servidor de nombres local, le resultará sencillo. Por favor, lea el DNS Como, http://www.insflug.org/documentos/DNS-Como/ y la documentación incluida en su copia de BIND (Berkeley Internet Name Domain). 5.6 Configuración de la interfaz loopbackLa interfaz loopback' es un tipo especial de interfaz que le permite hacer conexiones consigo mismo. Hay varias razones por las que podría querer esto. Por ejemplo, puede que desee probar algún tipo de programa sin interferir con alguien más en su red. Por convención, la dirección de red IP 127.0.0.1 ha sido asignada específicamente para el dispositivo de pruebas. Por lo que da igual lo que haga su máquina, que si abre una conexión de telnet a 127.0.0.1, siempre llegará a la interfaz interna. Configurar la interfaz loopback es simple y debería asegurarse de hacerlo. root# ifconfig lo 127.0.0.1 root# route add -host 127.0.0.1 lo Hablaremos más de la orden route en la siguiente sección. 5.7 Encaminamiento (Routing).El encaminamiento es un tema amplio. Sería fácil llenar varios volúmenes hablando de él. La mayoría de ustedes tendrán requisitos de encaminamiento relativamente simples, pero algunos no. Cubriré solamente algunos de los fundamentos básicos. Si está interesado en información más detallada, entonces sugiero que se remita a las referencias propuestas al principio del documento. Comencemos con una definición. ¿Qué es el encaminamiento IP? Esta es la que yo suelo aplicar: El Encaminamiento IP es el proceso por el que una máquina con múltiples conexiones de red decide por dónde dirigir un datagrama IP que haya recibido. Sería útil ilustrar esto con un ejemplo. Imagine una oficina con el encaminamiento típico, que podría constar de un enlace PPP con Internet, varios segmentos Ethernet alimentando las estaciones de trabajo, y un enlace PPP hacia otra oficina. Cuando el encaminador recibe un datagrama en cualquiera de sus conexiones de red, el mecanismo que usa para determinar qué interfaz debería enviar el datagrama, es el encaminamiento. Las estaciones sencillas también necesitan encaminar. Todas las estaciones en Internet tienen dos dispositivos de red: uno es la interfaz de pruebas descrita anteriormente, y la otra es la que usa para comunicarse con el resto de la red, quizá una Ethernet, quizá una interfaz serie PPP o SLIP. Bien... Por tanto, ¿cómo funciona el encaminado? Cada máquina tiene una lista de reglas, llamada tabla de encaminamiento. Esta tabla contiene columnas que suelen contener al menos tres campos: el primero es una dirección de destino, el segundo es el nombre de la interfaz a la que se va a encaminar el datagrama, y el tercero es (opcionalmente) la dirección IP de otra máquina que cogerá el datagrama en su siguiente paso a través de la red. En Linux puede ver esta tabla usando la siguiente orden: root# cat /proc/net/route o con cualquiera de estas otras: root# /sbin/route -n root# /bin/netstat -r El proceso de encaminado es relativamente simple: se recibe un datagrama que llega, se examina la dirección de destino (para quién es) y se compara con cada entrada en la lista. Se selecciona la entrada que más se parezca y se reenvía el datagrama a la interfaz especificada. Si el campo de pasarela (gateway) está descrito, el datagrama se reenvía a esa máquina mediante la interfaz especificada, y si no, se asume que la dirección de destino está en la red a la que se accede mediante la interfaz correspondiente. Para manipular esta tabla se usa una orden especial. Esta instrucción toma sus argumentos en línea de órdenes y los convierte en llamadas al sistema del núcleo, que le piden que añada, borre o modifique entradas en la tabla de encaminamiento. Dicha orden se llama route. Un ejemplo sencillo. Imagine que tiene una red Ethernet. Le han dicho que pertenece a una red clase C con dirección 192.168.1.0. Le han dado la dirección IP 192.168.1.10 para su uso y también que 192.168.1.1 es un encaminador conectado a Internet. El primer paso es configurar la interfaz como se describió anteriormente. Puede usar una orden como: root# ifconfig eth0 192.168.1.10 netmask 255.255.255.0 up Ahora necesita añadir una entrada en la tabla de rutas para decirle al núcleo que los datagramas destinados a todas las máquinas con direcciones que se ajusten a 192.168.1.*, deberán ser enviados al dispositivo Ethernet. Debería usar una orden similar a: root# route add -net 192.168.1.0 netmask 255.255.255.0 eth0 Fíjese en el uso del parámetro -net para especificar al programa route que esta entrada es una regla para una red completa. Otra opción es -host, que indica una vía específica a una dirección IP en particular. Esta ruta le permitirá establecer conexiones IP con todas las estaciones de su segmento Ethernet. Pero ¿qué pasa con todas las máquinas con dirección IP que no están en su segmento Ethernet? Sería bastante engorroso, por no decir imposible, tener que añadir caminos para cada red de destino posible, por lo que existe un truco que se usa para simplificar la tarea. A este truco se le llama camino por defecto. El camino por defecto se ajusta a todo destino posible, pero con prioridad mínima, por lo que si existe cualquier otra entrada que se ajuste a la dirección requerida, será la que se use en lugar del camino por defecto. La idea del camino por defecto es simplemente permitirle decir: «y todo lo demás debería ir por aquí». En el ejemplo que me he inventado podría usar una orden como: root# route add default gw 192.168.1.1 eth0 El parámetro gw le dice a la orden route que lo que le sigue es la dirección IP, o nombre, de una pasarela u otra máquina encaminadora a la que se deberían enviar todos los datagramas que se ajusten a esta entrada para futuro encaminamiento. Por lo tanto, la configuración completa debería parecerse a: root# ifconfig eth0 192.168.1.10 netmask 255.255.255.0 up root# route add -net 192.168.1.0 netmask 255.255.255.0 eth0 root# route add default gw 192.168.1.1 eth0 Si echa una mirada a los ficheros rc de red de su máquina, encontrará que al menos uno de ellos se parece mucho a esto. Es una configuración muy común. Veamos ahora una configuración de encaminamiento un poco más complicada. Imaginemos que estamos configurando el encaminador de antes, el que soportaba el enlace PPP a Internet y los segmentos LAN alimentando las estaciones de trabajo en la oficina. Imaginemos que el encaminador tiene tres segmentos Ethernet y un enlace PPP. Nuestra configuración de encaminamiento debería parecerse a esto: root# route add -net 192.168.1.0 netmask 255.255.255.0 eth0 root# route add -net 192.168.2.0 netmask 255.255.255.0 eth1 root# route add -net 192.168.3.0 netmask 255.255.255.0 eth2 root# route add default ppp0 Cada una de las estaciones debería usar la forma simple que presentamos anteriormente. Sólo el encaminador necesita especificar cada uno de los caminos de red de forma separada, porque para las estaciones el mecanismo de encaminamiento por defecto enviará todos los paquetes al encaminador, dejándole el problema de repartirlos. Puede estar preguntándose por qué el encaminador por defecto presentado no especifica un gw. La razón es simple: los protocolos de enlace serie como PPP y SLIP sólo tienen dos terminales en su red, uno en cada extremo. Especificar el host al otro extremo como pasarela no tiene sentido y es redundante, ya que no hay otra elección, por lo que no se necesita especificar una pasarela para este tipo de conexión de red. Otros tipos como Ethernet, arcnet o token ring necesitan que se especifique la pasarela, ya que se puede acceder a un gran número de terminales al mismo tiempo. Entonces ¿qué hace el programa routed?La configuración de encaminamiento descrita anteriormente se ajusta a necesidades de red simples, donde los posibles caminos hacia los destinos son sencillos. Cuando se tienen necesidades de red más complejas, las cosas se vuelven un poco más complicadas. Afortunadamente la mayoría de ustedes no tendrá este problema. El gran problema con el «encaminamiento manual» o «encaminamiento estático» que aquí se ha descrito, es que si una máquina o enlace falla en la red, entonces la única manera en que podrá dirigir sus datagramas por otra dirección, si es que existe, es interviniendo manualmente y ejecutando las órdenes apropiadas. Naturalmente esto es poco elegante, lento, nada práctico y peligroso. Se han desarrollado varias técnicas para ajustar automáticamente las tablas de encaminamiento en el caso de fallos en la red donde hubiera caminos alternativos. Todas estas técnicas se agrupan de manera no muy oficial bajo la definición «protocolos de encaminamiento dinámico». Puede que haya oído de alguno de los protocolos más comunes. Es probable que RIP (Routing Information Protocol) y OSPF (Open Shortest Path First Protocol) sean los más comunes. El Routing Information Protocol es muy común en redes pequeñas, como las redes corporativas pequeñas y medianas o en las redes de edificios. El OSPF es más moderno y más capaz de gestionar grandes configuraciones de red, y está mejor preparado para entornos donde haya un gran número de caminos posibles a través de la red. Las implementaciones habituales de estos protocolos son: routed (RIP) y gated (RIP, OSPF y otros). El programa routed suele venir incluido en las distribuciones de Linux, y si no, estará incluido en el paquete NetKit, detallado más adelante. Un ejemplo de dónde y cómo debería usar un protocolo de encaminamiento dinámico vendría a ser algo como lo siguiente: Tenemos tres encaminadores A, B y C. Cada uno da servicio a un segmento Ethernet con una red IP de clase C (máscara de red 255.255.255.0). Cada encaminador tiene también un enlace PPP a cada uno de los otros encaminadores. La red forma un triángulo. Debería estar claro que la tabla de encaminamiento del encaminador A podría ser algo como: root# route add -net 192.168.1.0 netmask 255.255.255.0 eth0 root# route add -net 192.168.2.0 netmask 255.255.255.0 ppp0 root# route add -net 192.168.3.0 netmask 255.255.255.0 ppp1 Esto funcionaría bien hasta que el enlace entre los encaminadores A y B falle. Si falla ese enlace, entonces con la entrada de encaminamiento mostrada anteriormente, las máquinas del segmento Ethernet de A no podrán alcanzar a las del segmento Ethernet en B porque sus datagramas serán dirigidos al enlace ppp0 de A que está mal. Podrían seguir comunicándose todavía con las máquinas del segmento Ethernet de C, y las del segmento Ethernet de C con las del segmento Ethernet de B, porque el enlace entre B y C aún está intacto. Pero espere un momento. Si A puede hablar con C y C puede aún hablar con B, ¿por qué no puede A encaminar sus datagramas para B a través de C y dejar que C se los mande a B? Este es exactamente el tipo de problema para el que fueron diseñados los protocolos de encaminamiento dinámico como RIP. Si cada uno de los encaminadores A, B y C está ejecutando el demonio de encaminamiento, entonces sus tablas deberían ser ajustadas automáticamente para reflejar el nuevo estado de la red si alguno de los enlaces falla. Configurar tal red es sencillo. En cada encaminador sólo necesita hacer dos cosas. En este caso, para el Encaminador A: root# route add -net 192.168.1.0 netmask 255.255.255.0 eth0 root# /usr/sbin/routed El demonio de encaminamiento routed encuentra automáticamente todos los puertos de red activos cuando comienza y busca mensajes en cada uno de los dispositivos de red para poder determinar y poner al día la tabla de encaminamiento en el host. Ésta ha sido una explicación muy concisa del encaminamiento dinámico y de dónde podría usarlo. Si quiere más información, tendrá que acudir a las referencias listadas al principio del documento. Los puntos importantes relacionados con el encaminamiento dinámico son:
5.8 Configuración de los servidores de red y los servicios.Los servidores de red y los servicios son aquellos programas que permiten a un usuario remoto hacer uso de su máquina Linux. Los programas servidores escuchan en los puertos de red. Los puertos de red son el medio de llegar a un servicio en particular en una máquina en particular, y es así como un servidor conoce la diferencia entre una conexión telnet y otra de FTP que le lleguen. El usuario remoto establece una conexión de red con la máquina, y el programa servidor, el demonio de red que esté escuchando en ese puerto, aceptará la conexión y se ejecutará. Hay dos modos de operación para los demonios de red. Ambos se usan por igual en la práctica. Las dos maneras son:
Hay dos ficheros importantes que necesitamos configurar. Son el fichero /etc/services que asigna nombres a los números de puerto y el fichero /etc/inetd.conf que es el fichero de configuración del demonio de red inetd. /etc/servicesEl fichero /etc/services es una base de datos sencilla, que asocia un nombre que nosotros podamos entender, con un puerto de servicio de la máquina. Su formato es bastante simple. Es un fichero de texto en el que cada línea representa una entrada a la base de datos. Cada entrada comprende tres campos separados por cualquier número de espacios en blanco (espacio o tabulador). Los campos son: nombre puerto/protocolo sobrenombres # comentario
Cualquier texto que aparezca en una línea después de un caracter # es ignorado y se trata como un comentario. Un ejemplo de fichero /etc/services.Todas las distribuciones modernas de Linux tienen un buen fichero /etc/services. Para el caso de que esté montando una máquina desde cero, aquí tiene una copia del fichero /etc/services proporcionado por una antigua la distribución Debian http://www.debian.org: # /etc/services: # $Id: services,v 1.3 1996/05/06 21:42:37 tobias Exp $ # # Network services, Internet style # # Note that it is presently the policy of IANA to assign a single well-known # port number for both TCP and UDP; hence, most entries here have two entries # even if the protocol doesn't support UDP operations. # Updated from RFC 1340, «Assigned Numbers» (July 1992). Not all ports # are included, only the more common ones. tcpmux 1/tcp # TCP port service multiplexer echo 7/tcp echo 7/udp discard 9/tcp sink null discard 9/udp sink null systat 11/tcp users daytime 13/tcp daytime 13/udp netstat 15/tcp qotd 17/tcp quote msp 18/tcp # message send protocol msp 18/udp # message send protocol chargen 19/tcp ttytst source chargen 19/udp ttytst source ftp-data 20/tcp ftp 21/tcp ssh 22/tcp # SSH Remote Login Protocol ssh 22/udp # SSH Remote Login Protocol telnet 23/tcp # 24 - private smtp 25/tcp mail # 26 - unassigned time 37/tcp timserver time 37/udp timserver rlp 39/udp resource # resource location nameserver 42/tcp name # IEN 116 whois 43/tcp nicname re-mail-ck 50/tcp # Remote Mail Checking Protocol re-mail-ck 50/udp # Remote Mail Checking Protocol domain 53/tcp nameserver # name-domain server domain 53/udp nameserver mtp 57/tcp # deprecated bootps 67/tcp # BOOTP server bootps 67/udp bootpc 68/tcp # BOOTP client bootpc 68/udp tftp 69/udp gopher 70/tcp # Internet Gopher gopher 70/udp rje 77/tcp netrjs finger 79/tcp www 80/tcp http # WorldWideWeb HTTP www 80/udp # HyperText Transfer Protocol link 87/tcp ttylink kerberos 88/tcp kerberos5 krb5 # Kerberos v5 kerberos 88/udp kerberos5 krb5 # Kerberos v5 supdup 95/tcp # 100 - reserved hostnames 101/tcp hostname # usually from sri-nic iso-tsap 102/tcp tsap # part of ISODE. csnet-ns 105/tcp cso-ns # also used by CSO name server csnet-ns 105/udp cso-ns rtelnet 107/tcp # Remote Telnet rtelnet 107/udp pop-2 109/tcp postoffice # POP version 2 pop-2 109/udp pop-3 110/tcp # POP version 3 pop-3 110/udp sunrpc 111/tcp portmapper # RPC 4.0 portmapper TCP sunrpc 111/udp portmapper # RPC 4.0 portmapper UDP auth 113/tcp authentication tap ident sftp 115/tcp uucp-path 117/tcp nntp 119/tcp readnews untp # USENET News Transfer Protocol ntp 123/tcp ntp 123/udp # Network Time Protocol netbios-ns 137/tcp # NETBIOS Name Service netbios-ns 137/udp netbios-dgm 138/tcp # NETBIOS Datagram Service netbios-dgm 138/udp netbios-ssn 139/tcp # NETBIOS session service netbios-ssn 139/udp imap2 143/tcp # Interim Mail Access Proto v2 imap2 143/udp snmp 161/udp # Simple Net Mgmt Proto snmp-trap 162/udp snmptrap # Traps for SNMP cmip-man 163/tcp # ISO mgmt over IP (CMOT) cmip-man 163/udp cmip-agent 164/tcp cmip-agent 164/udp xdmcp 177/tcp # X Display Mgr. Control Proto xdmcp 177/udp nextstep 178/tcp NeXTStep NextStep # NeXTStep window nextstep 178/udp NeXTStep NextStep # server bgp 179/tcp # Border Gateway Proto. bgp 179/udp prospero 191/tcp # Cliff Neuman's Prospero prospero 191/udp irc 194/tcp # Internet Relay Chat irc 194/udp smux 199/tcp # SNMP Unix Multiplexer smux 199/udp at-rtmp 201/tcp # AppleTalk routing at-rtmp 201/udp at-nbp 202/tcp # AppleTalk name binding at-nbp 202/udp at-echo 204/tcp # AppleTalk echo at-echo 204/udp at-zis 206/tcp # AppleTalk zone information at-zis 206/udp z3950 210/tcp wais # NISO Z39.50 database z3950 210/udp wais ipx 213/tcp # IPX ipx 213/udp imap3 220/tcp # Interactive Mail Access imap3 220/udp # Protocol v3 ulistserv 372/tcp # UNIX Listserv ulistserv 372/udp # # UNIX specific services # exec 512/tcp biff 512/udp comsat login 513/tcp who 513/udp whod shell 514/tcp cmd # no passwords used syslog 514/udp printer 515/tcp spooler # line printer spooler talk 517/udp ntalk 518/udp route 520/udp router routed # RIP timed 525/udp timeserver tempo 526/tcp newdate courier 530/tcp rpc conference 531/tcp chat netnews 532/tcp readnews netwall 533/udp # -for emergency broadcasts uucp 540/tcp uucpd # uucp daemon remotefs 556/tcp rfs_server rfs # Brunhoff remote filesystem klogin 543/tcp # Kerberized `rlogin' (v5) kshell 544/tcp krcmd # Kerberized `rsh' (v5) kerberos-adm 749/tcp # Kerberos `kadmin' (v5) # webster 765/tcp # Network dictionary webster 765/udp # # From «Assigned Numbers»: # #> The Registered Ports are not controlled by the IANA and on most systems #> can be used by ordinary user processes or programs executed by ordinary #> users. # #> Ports are used in the TCP [45,106] to name the ends of logical #> connections which carry long term conversations. For the purpose of #> providing services to unknown callers, a service contact port is #> defined. This list specifies the port used by the server process as its #> contact port. While the IANA can not control use of these ports it #> does register or list use of these ports as a convienence to the #> community. # ingreslock 1524/tcp ingreslock 1524/udp prospero-np 1525/tcp # Prospero non-privileged prospero-np 1525/udp rfe 5002/tcp # Radio Free Ethernet rfe 5002/udp # Actually use UDP only bbs 7000/tcp # BBS service # # # Kerberos (Project Athena/MIT) services # Note that these are for Kerberos v4 and are unofficial. Sites running # v4 should uncomment these and comment out the v5 entries above. # kerberos4 750/udp kdc # Kerberos (server) udp kerberos4 750/tcp kdc # Kerberos (server) tcp kerberos_master 751/udp # Kerberos authentication kerberos_master 751/tcp # Kerberos authentication passwd_server 752/udp # Kerberos passwd server krb_prop 754/tcp # Kerberos slave propagation krbupdate 760/tcp kreg # Kerberos registration kpasswd 761/tcp kpwd # Kerberos "passwd" kpop 1109/tcp # Pop with Kerberos knetd 2053/tcp # Kerberos de-multiplexor zephyr-srv 2102/udp # Zephyr server zephyr-clt 2103/udp # Zephyr serv-hm connection zephyr-hm 2104/udp # Zephyr hostmanager eklogin 2105/tcp # Kerberos encrypted rlogin # # Unofficial but necessary (for NetBSD) services # supfilesrv 871/tcp # SUP server supfiledbg 1127/tcp # SUP debugging # # Datagram Delivery Protocol services # rtmp 1/ddp # Routing Table Maintenance Protocol nbp 2/ddp # Name Binding Protocol echo 4/ddp # AppleTalk Echo Protocol zip 6/ddp # Zone Information Protocol # # Debian GNU/Linux services rmtcfg 1236/tcp # Gracilis Packeten remote config server xtel 1313/tcp # french minitel cfinger 2003/tcp # GNU Finger postgres 4321/tcp # POSTGRES mandelspawn 9359/udp mandelbrot # network mandelbrot # Local services En el día a día, este fichero se encuentra en proceso de continuo crecimiento según se van creando nuevos servicios. Si piensa que su copia es incompleta, le sugiero que haga una copia del /etc/services de una distribución reciente. /etc/inetd.conf/etc/inetd.conf es el fichero de configuración para el demonio servidor inetd. Su función es la de almacenar la información relativa a lo que inetd debe hacer cuando recibe una petición de conexión a un servicio en particular. Para cada servicio que desee que acepte conexiones deberá decirle a inetd qué demonio servidor de red ejecutar, y cómo ha de hacerlo. Su formato también es relativamente sencillo. Es un fichero de texto en el que cada línea describe un servicio que desee proporcionar. Cualquier texto en una línea que siga a # es ignorado y se considera un comentario. Cada línea contiene siete campos separados por cualquier número de espacios en blanco (espacio o tabulador). El formato general es el siguiente: servicio tipo_socket proto flags usuario servidor argumentos
Un ejemplo de /etc/inetd.confAl igual que pasa con el /etc/services, todas las distribuciones modernas incluirán un buen fichero /etc/inetd.conf para trabajar con él. Aquí incluyo, como ejemplo, el fichero /etc/inetd.conf de la distribución Debian http://www.debian.org. # /etc/inetd.conf: see inetd(8) for further informations. # # Internet server configuration database # # # Modified for Debian by Peter Tobias <tobias@et-inf.fho-emden.de> # # <service_name> <sock_type> <proto> <flags> <user> <server_path> <args> # # Internal services # #echo stream tcp nowait root internal #echo dgram udp wait root internal discard stream tcp nowait root internal discard dgram udp wait root internal daytime stream tcp nowait root internal daytime dgram udp wait root internal #chargen stream tcp nowait root internal #chargen dgram udp wait root internal time stream tcp nowait root internal time dgram udp wait root internal # # These are standard services. # telnet stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.telnetd ftp stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.ftpd #fsp dgram udp wait root /usr/sbin/tcpd /usr/sbin/in.fspd # # Shell, login, exec and talk are BSD protocols. # shell stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.rshd login stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.rlogind #exec stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.rexecd talk dgram udp wait root /usr/sbin/tcpd /usr/sbin/in.talkd ntalk dgram udp wait root /usr/sbin/tcpd /usr/sbin/in.ntalkd # # Mail, news and uucp services. # smtp stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.smtpd #nntp stream tcp nowait news /usr/sbin/tcpd /usr/sbin/in.nntpd #uucp stream tcp nowait uucp /usr/sbin/tcpd /usr/lib/uucp/uucico #comsat dgram udp wait root /usr/sbin/tcpd /usr/sbin/in.comsat # # Pop et al # #pop-2 stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.pop2d #pop-3 stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.pop3d # # `cfinger' is for the GNU finger server available for Debian. (NOTE: The # current implementation of the `finger' daemon allows it to be run as `root'.) # #cfinger stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.cfingerd #finger stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.fingerd #netstat stream tcp nowait nobody /usr/sbin/tcpd /bin/netstat #systat stream tcp nowait nobody /usr/sbin/tcpd /bin/ps -auwwx # # Tftp service is provided primarily for booting. Most sites # run this only on machines acting as "boot servers." # #tftp dgram udp wait nobody /usr/sbin/tcpd /usr/sbin/in.tftpd #tftp dgram udp wait nobody /usr/sbin/tcpd /usr/sbin/in.tftpd /boot #bootps dgram udp wait root /usr/sbin/bootpd bootpd -i -t 120 # # Kerberos authenticated services (these probably need to be corrected) # #klogin stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.rlogind -k #eklogin stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.rlogind -k -x #kshell stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.rshd -k # # Services run ONLY on the Kerberos server (these probably need to be corrected) # #krbupdate stream tcp nowait root /usr/sbin/tcpd /usr/sbin/registerd #kpasswd stream tcp nowait root /usr/sbin/tcpd /usr/sbin/kpasswdd # # RPC based services # #mountd/1 dgram rpc/udp wait root /usr/sbin/tcpd /usr/sbin/rpc.mountd #rstatd/1-3 dgram rpc/udp wait root /usr/sbin/tcpd /usr/sbin/rpc.rstatd #rusersd/2-3 dgram rpc/udp wait root /usr/sbin/tcpd /usr/sbin/rpc.rusersd #walld/1 dgram rpc/udp wait root /usr/sbin/tcpd /usr/sbin/rpc.rwalld # # End of inetd.conf. ident stream tcp nowait nobody /usr/sbin/identd identd -i 5.9 Otros ficheros de configuración relacionados con la redHay varios ficheros misceláneos relacionados con la configuración de la red en Linux por los que podría estar interesado. Nunca debería tener que modificar estos ficheros, pero merece la pena describirlos para que sepa lo que contienen y para qué son. /etc/protocolsEl fichero /etc/protocols es una base de datos que correlaciona números de identificación de protocolos con sus nombres. Esto lo usan los programadores para especificar protocolos por su nombre en sus programas y también por programas como tcpdump para mostrar nombres en lugar de números en su salida. En general la sintaxis del fichero es: nombredelprotocolo número sobrenombres El fichero /etc/protocols proporcionado con la distribución Debian http://www.debian.org es como sigue: # /etc/protocols: # $Id: protocols,v 1.1 1995/02/24 01:09:41 imurdock Exp $ # # Internet (IP) protocols # # from: @(#)protocols 5.1 (Berkeley) 4/17/89 # # Updated for NetBSD based on RFC 1340, Assigned Numbers (July 1992). ip 0 IP # internet protocol, pseudo protocol number icmp 1 ICMP # internet control message protocol igmp 2 IGMP # Internet Group Management ggp 3 GGP # gateway-gateway protocol ipencap 4 IP-ENCAP # IP encapsulated in IP (officially «IP») st 5 ST # ST datagram mode tcp 6 TCP # transmission control protocol egp 8 EGP # exterior gateway protocol pup 12 PUP # PARC universal packet protocol udp 17 UDP # user datagram protocol hmp 20 HMP # host monitoring protocol xns-idp 22 XNS-IDP # Xerox NS IDP rdp 27 RDP # "reliable datagram" protocol iso-tp4 29 ISO-TP4 # ISO Transport Protocol class 4 xtp 36 XTP # Xpress Tranfer Protocol ddp 37 DDP # Datagram Delivery Protocol idpr-cmtp 39 IDPR-CMTP # IDPR Control Message Transport rspf 73 RSPF # Radio Shortest Path First. vmtp 81 VMTP # Versatile Message Transport ospf 89 OSPFIGP # Open Shortest Path First IGP ipip 94 IPIP # Yet Another IP encapsulation encap 98 ENCAP # Yet Another IP encapsulation /etc/networksEl fichero /etc/networks tiene una función similar a la del fichero /etc/hosts. Proporciona una base de datos sencilla de nombres de red y direcciones de red. Su formato difiere en que sólo puede haber dos campos por línea y los campos están codificados así: nombredelared direccióndered Un ejemplo podría ser: loopnet 127.0.0.0 localnet 192.168.0.0 amprnet 44.0.0.0 Cuando use órdenes como route, si un destino es una red y la red tiene una entrada en el fichero /etc/networks entonces route mostrará el nombre de la red en lugar de su dirección. 5.10 Seguridad en la red y control de acceso.Déjeme empezar esta sección advirtiendo que la seguridad de su máquina y red ante ataques maliciosos es un arte complejo. No me considero un experto en este campo y aunque los mecanismos que voy a describir puedan ayudar, si quiere tomarse en serio la seguridad entonces le recomiendo que investigue un poco en el tema. Hay algunas buenas referencias en Internet relacionadas con la seguridad, incluido el Security HOWTO (Dispone de una traducción en http://www.insflug.org/documentos/Seguridad-Como/. Una regla general importante es: No ejecute servicios que no tenga intención de usar'. Muchas distribuciones vienen configuradas con todo tipo de servicios que se inician automáticamente. Para asegurar un nivel mínimo de seguridad debería examinar el fichero /etc/inetd.conf y comentar (poner un # al inicio de la línea) de toda declaración de servicio que no vaya a usar. Buenos candidatos son: shell, exec, uucp, ftp y servicios de información como finger, netstat y systat. Hay todo tipo de mecanismos de seguridad y control de acceso, describiré los más elementales. /etc/ftpusersEl fichero /etc/ftpusers es un mecanismo sencillo que le permite denegar la entrada a ciertos usuarios mediante FTP. El fichero /etc/ftpusers lo lee el programa demonio de FTP (ftpd) cuando se recibe una conexión FTP. El fichero es una simple lista de aquellos usuarios que no tienen permitido el acceso. Puede parecerse a esto: # /etc/ftpusers - users not allowed to login via ftp root uucp bin mail /etc/securettyEl fichero /etc/securetty permite especificar qué dispositivos tty puede usar root para identificarse en el sistema. El fichero /etc/securetty es leído por el programa de acceso (normalmente /etc/login). Su formato es una lista de los nombres de dispositivos tty permitidos, en todos los demás root tiene prohibida la entrada: # /etc/securetty - tty's on which root is allowed to login tty1 tty2 tty3 tty4 El mecanismo de control de acceso hosts de tcpdEl programa tcpd que ha visto listado en el fichero /etc/inetd.conf proporciona mecanismos de control de registro y acceso a los servicios que haya de proteger. Cuando es invocado por el programa inetd lee dos ficheros que contienen reglas de acceso y que permiten o deniegan acceso al servidor que está protegiendo. Mirará en los ficheros de reglas hasta que encuentre la primera correspondencia. Si no se encuentran correspondencias asume que el acceso debería estar permitido para todo el mundo. La secuencia de archivos que revisa es: /etc/hosts.allow, /etc/hosts.deny. Describiré cada uno de estos en seguida. Para una descripción completa de este servicio debería referirse a las páginas del manual apropiadas (hosts_access (5) es un buen punto de partida). /etc/hosts.allowEl /etc/hosts.allow es un fichero de configuración del programa /usr/sbin/tcpd. El fichero hosts.allow contiene reglas que describen qué máquinas tienen permiso para acceder a un servicio en la suya. El formato del fichero es bastante sencillo: # /etc/hosts.allow # # <lista de servicios>: <lista de hosts> [: orden]
Un ejemplo: # /etc/hosts.allow # # Permitir correo a todo el mundo in.smtpd: ALL # Todo telnet y FTP sólo a hosts dentro de mi dominio y el host que tengo # en caso telnetd, ftpd: LOCAL, myhost.athome.org.au # Permitir finger a cualquiera pero mantener un registro de quién es. fingerd: ALL: (finger @%h | mail -s "finger desde %h" root) /etc/hosts.denyEl fichero /etc/hosts.deny es un fichero de configuración del programa /usr/sbin/tcpd. El fichero hosts.deny contiene reglas que describen qué máquinas tienen prohibido el acceso a un servicio en su máquina. Un ejemplo simple podría parecerse a esto: # /etc/hosts.deny # # Desautorizar a todos los host con nombre sospechoso ALL: PARANOID # # Desautorizar a todos los host. ALL: ALL La entrada PARANOID es redundante porque la otra entrada abarca todo en cualquier caso. Ambas entradas serían razonables por defecto dependiendo de sus requisitos particulares. La configuración más segura es tener ALL: ALL por defecto en /etc/hosts.deny para después dar permiso específicamente a aquellos servicios y hosts que se desee en /etc/hosts.allow. /etc/hosts.equivEl fichero hosts.equiv se usa para garantizar a ciertos hosts y usuarios derechos de acceso a cuentas en su máquina sin que tenga que proporcionar una clave. Esto es útil en un entorno seguro donde controle todas las máquinas, pero en otro caso es un peligro para la seguridad. Su máquina es sólo tan segura como la menos segura de aquellas en las que confíe. Para maximizar la seguridad, no use este mecanismo, y anime a sus usuarios para que tampoco usen ficheros .rhost. Configure su demonio de ftp adecuadamente.Muchos servidores estarán interesados en ejecutar un demonio de FTP anónimo para permitir a otras personas que subir y descargar ficheros sin necesidad de un userid específico. Si decide ofrecer este servicio asegúrese de que configura el demonio de ftp apropiadamente para acceso anónimo. La mayoría de las páginas de ftpd(8) describen cómo hacerlo. Debería asegurarse siempre de que sigue estas instrucciones. Una cosa importante es no usar una copia de su fichero /etc/passwd habitual en el directorio /etc de la cuenta anónima; asegúrese de que elimina todos los detalles sobre las cuentas excepto aquellos que deba tener, ya que en otro caso será vulnerable a las técnicas de adquisición de claves por fuerza bruta. Cortafuegos para redes.Un excelente medio de seguridad es no permitir que los datagramas lleguen siquiera a su máquina o servidores. Esto lo cubre en profundidad el http://www.insflug.org/documentos/Cortafuegos-Como/ y, más concisamente, la última sección de este documento. Otras sugerencias.Hay otras sugerencias, que debería considerar, pero que realmente son cuestión de cada uno.
Página siguiente Página anterior Índice general Atención: Visite nuestro listado de productos de computadores, Linux y software libre aqui... |