Capítulo 18. Seguridad en la red

Tabla de contenidos

18.1. Cortafuegos y masquerading
18.2. SSH – secure shell, la alternativa segura
18.3. Autentificación en la red — Kerberos
18.4. Instalación y administración de Kerberos
18.5. La seguridad, una cuestión de confianza

Resumen

Enmascaramiento (masquerading), cortafuegos (firewall) y Kerberos constituyen los fundamentos de una red segura en la que el tráfico de datos se encuentra bajo control. La SSH, (Secure Shell), ofrece al usuario la oportunidad de realizar una conexión codificada con un ordenador remoto. En el apartado que viene a continuación, le explicamos cómo puede utilizar este gran abanico de posibilidades.

18.1. Cortafuegos y masquerading

Debido a las extraordinarias características de Linux en lo que se refiere a redes, este sistema se utiliza cada vez más como enrutador (router) tanto en conexiones telefónicas como en líneas dedicadas. Con el concepto de enrutador nos referimos aquí a un ordenador que tiene más de una interfaz de red y que reenvía paquetes que no son para una de sus propias interfaces de red a sus equivalentes en otras redes. A menudo a un enrutador se le denomina pasarela (gateway). Los filtros de paquetes disponibles en el kernel de Linux posibilitan un control adecuado sobre los paquetes del tráfico de datos en la red a los que se permite pasar y a los que no.

La configuración de las normas adecuadas para este filtrado de datos requiere algo de experiencia por parte del administrador. SUSE Linux incluye, para los usuarios con menos experiencia un paquete independiente que facilitan la configuración de estas normas: SuSEfirewall2.

SuSEfirewall2 puede configurarse con gran flexibilidad, lo que le hace muy apropiado para la construcción de complejos filtros. Mediante esta solución de filtro de paquetes y por medio de masquerading, un ordenador Linux puede actuar como enrutador para unir una red interna a una única dirección IP visible desde el exterior a través de una línea telefónica o dedicada. El masquerading se lleva a cabo con ayuda de las normas del filtrado de paquetes.

[Warning]Aviso

Este capítulo describe un procedimiento estándar que debería funcionar correctamente en la mayoría de los casos. Sin embargo, aunque la información es lo más exacta y completa posible, no se ofrece ninguna garantía. SuSE no asume ninguna responsabilidad sobre el éxito o fracaso de sus medidas de seguridad. Le agradecemos de antemano sus críticas y sugerencias. Aún cuando no reciba una respuesta directa de nuestra parte, puede estar seguro de que agradecemos la crítica y las sugerencias y de que intentaremos incorporar las mejoras.

18.1.1. Fundamentos del masquerading

Masquerading es la adaptación a Linux de NAT (Network Address Translation), la traducción de direcciones de red. El principio en el que se sustenta es bastante sencillo: Su enrutador tiene más de una interfaz de red, que por regla general suelen ser una tarjeta de red y un módem (o una interfaz RDSI). Vd. se conecta con el exterior por medio de una de estas interfaces; otra u otras conectan su ordenador con otros ordenadores en su misma red. Por ejemplo, se debe conectar al exterior vía RDSI y la interfaz de red exterior es ippp0. Vd. tiene más de un ordenador en la red local conectados con la tarjeta de red de su enrutador Linux, que en este ejemplo es eth0. Los ordenadores de la red reenvían todos los paquetes que no son para la propia red al enrutador o pasarela predeterminados.

[Important]Importante

Al configurar su red, asegúrese de que las direcciones de retransmisión (broadcast) y las máscaras de red coinciden.

Si uno de los ordenadores de su red envía un paquete a Internet, este llega al enrutador por defecto. El enrutador debe estar configurado de tal forma que reenvíe dichos paquetes. Por razones de seguridad, la configuración predeterminada de SUSE LINUX no lo hace. Modifique la variable IP_FORWARD en el archivo /etc/sysconfig/sysctl y asígnele el valor IP_FORWARD=yes. Para que el reenvío se active, debe reiniciar o escribir el siguiente comando: echo 1 > /proc/sys/net/ipv4/ip_forward

La máquina destino sólo conoce el enrutador, y no el ordenador en sí de su red interna desde la que se envió el paquete, puesto que esta queda escondida detrás del enrutador. De ahí viene el concepto enmascarar (masquerading). Debido a la traducción de direcciones, la dirección de destino del paquete de respuesta es de nuevo el enrutador. Este debe reconocer el paquete y modificar la dirección de destino para que aterrice en el ordenador correcto de la red local.

Este reconocimiento de paquetes pertenecientes a conexiones originadas por el masquerading del enrutador, se produce por medio de una tabla que se mantiene directamente en el kernel del enrutador mientras las conexiones correspondientes estén activas. El superusuario (root) puede ver esta tabla incluso con el comando iptables. Consulte la página man de este comando para encontrar indicaciones más precisas. A la hora de identificar una determinada conexión enmascarada, también son importantes las direcciones del remitente y de destino, así como el número de protocolo y los protocolos que participan. De este modo es posible que su enrutador pueda proporcionar simultáneamente varias conexiones para cada uno de los ordenadores locales.

Puesto que el camino que realizan los paquetes de fuera adentro depende de las tablas del masquerading, no hay ninguna posibilidad de abrir una conexión desde fuera hacia adentro. No habría ninguna entrada para esta conexión es las tablas. Una conexión ya establecida tiene un estado asignado en las tablas, de tal forma que esta entrada no pueda ser utilizada por una segunda conexión.

En lo sucesivo esto da lugar a problemas con algunas aplicaciones, como por ejemplo, con ICQ, cucme, IRC (DCC, CTCP), Quake y FTP (en modo PORT). Netscape, el programa estándar de FTP y muchas otras utilizan el modo PASV, que causa pocos problemas con el filtrado de paquetes y el masquerading.

18.1.2. Fundamentos del cortafuegos

El cortafuegos (firewall) es de hecho el concepto más extendido para un mecanismo que conecta dos redes y que pretende controlar el tráfico de datos en la medida de lo posible. Existen distintos tipos de cortafuegos que de hecho se diferencian en el nivel lógico y abstracto en el que se examina y controla el tráfico de datos. En realidad, los métodos que presentamos aquí se deberían llamar con más precisión filtro de paquetes. Un filtro de paquetes regula el pasaje siguiendo criterios como el protocolo, el puerto y la dirección IP. De esta forma, también pueden interceptar paquetes que, debido a las señas que incluyen, no deberían entrar en su red. Por ejemplo, deben interceptar paquetes que tengan como destino el puerto 23 del servicio de telnet de su ordenador. Si quiere, por ejemplo, permitir el acceso a su servidor de web, entonces debe dejar libre el puerto correspondiente. No se examinará el contenido de estos paquetes, si la dirección es la correcta (por ejemplo, que el destino sea su servidor web). El paquete podría contener un ataque a un programa CGI de su servidor web y el filtro de paquetes lo dejaría pasar.

Una construcción eficaz, aunque compleja, es la combinación de distintos tipos de elaboración, por ejemplo, un filtro de paquetes al que se le añaden otras aplicaciones gateway/proxy. El filtro rechazaría paquetes que, por ejemplo, se dirigen a puertos que no están liberados. Sólo dejarían pasar a paquetes para una aplicación gateway. Este proxy actuaría como si fuera el equivalente comunicativo real del servidor que establece una conexión con otros. En este sentido, se puede considerar a un proxy de este tipo como una máquina masquerading en el nivel del protocolo de la aplicación correspondiente. Un ejemplo de este tipo de proxies es Squid, un servidor proxy HTTP para el que debe configurar su servidor de tal manera que las solicitudes de páginas html pasen primero por la memoria del proxy y, sólo en caso de no encontrar allí la página, sean enviadas por el proxy a Internet. El paquete proxy de SuSE (paquete proxy-suite) contiene un servidor proxy para el protocolo FTP.

A continuación nos concentraremos en el filtro de paquetes de SUSE LINUX. Para más información y enlaces sobre cortafuegos, lea el Firewall HOWTO, que se incluye en howtoes. Si howtoes está instalado, también lo puede leer con el comando less /usr/share/doc/howto/es/Cortafuegos-Como.gz

18.1.3. SuSEfirewall2

La configuración de SuSEfirewall2 requiere un cierto grado de experiencia y conocimientos. En /usr/share/doc/packages/SuSEfirewall2 se encuentra la documentación de SuSEfirewall2.

La configuración se puede realizar con YaST (véase la sección 18.1.3.2, “Configuración con YaST”) o directamente en el archivo /etc/sysconfig/SuSEfirewall2.

18.1.3.1. Configuración manual

Le guiaremos paso a paso para que pueda realizar una configuración adecuada. En cada punto se indica si es válido para masquerading o para cortafuegos. En los ficheros de configuración también se habla de una DMZ (zona desmilitarizada), que no se tratará con más detalle en estas líneas.

En caso de que sólo necesite masquerading, rellene sólo las líneas en las que se indica Masquerading.

  • Active SuSEfirewall2 con el editor de niveles de ejecución de YaST para su nivel de ejecución (probablemente 3 ó 5). De este modo, se introducirán enlaces simbólicos para los scripts SuSEfirewall2_* en los directorios /etc/init.d/rc?.d/.

  • FW_DEV_WORLD (firewall, masquerading): por ejemplo eth0, como dispositivo que conduce a Internet. Con RDSI es por ejemplo ippp0.

  • FW_DEV_INT (firewall, masquerading): Introduzca aquí el dispositivo que le indica la red interna privada. Si no dispone de ninguna red interna, déjelo vacío.

  • FW_ROUTE (firewall, masquerading): Si necesita masquerading, debe introducir yes en este punto. Las máquinas internas no serán visibles desde afuera, ya que tienen direcciones de red privadas (por ejemplo 192.168.x.x), que no se muestran en Internet.

    Con un cortafuegos sin masquerading, escoja aquí yes, si quiere permitir el acceso a la red interna. Para ello, las máquinas internas deben tener direcciones IP asignadas oficialmente. En casos normales, no debería permitir el acceso desde fuera a las máquinas internas.

  • FW_MASQUERADE (masquerading): Si necesita masquerading, introduzca yes. Tenga en cuenta que es más seguro es que la red interna acceda a Internet a través de un servidor proxy.

  • FW_MASQ_NETS (masquerading): Indique aquí el ordenador o red para la que se realizará masquerading. Separe las entradas con un espacio en blanco. Por ejemplo: FW_MASQ_NETS="192.168.0.0/24 192.168.10.1"

  • FW_PROTECT_FROM_INTERNAL (firewall): Introduzca yes, si también quiere proteger el ordenador que hace de cortafuegos. Para ello debe dejar libres explícitamente los servicios disponibles para la red interna. Ver también FW_SERVICES_INTERNAL_TCP y FW_SERVICES_INTERNAL_UDP.

  • FW_AUTOPROTECT_GLOBAL_SERVICES (firewall): En casos normales déjelo en yes.

  • FW_SERVICES_EXTERNAL_TCP (firewall): Introduzca aquí los servicios a los que se debe tener acceso; por ejemplo www smtp ftp domain 443 – para el ordenador doméstico que no ofrece ningún servicio no escriba nada.

  • FW_SERVICES_EXTERNAL_UDP (firewall): Si no utiliza aún un servidor de nombres al que se debe acceder desde fuera, déjelo vacío. En caso contrario, indique aquí los puertos adecuados.

  • FW_SERVICES_INTERNAL_TCP (firewall): Aquí se definen los servicios a disposición de la red interna. Las entradas son similares a las de FW_SERVICES_EXTERNAL_TCP, pero aquí se refieren a la red interna.

  • FW_SERVICES_INTERNAL_UDP (firewall): Ver arriba.

  • FW_TRUSTED_NETS (firewall): Indique aquí los ordenadores de confianza (trusted hosts). Tenga en cuenta que estos también deben estar protegidos de posibles agresiones. 172.20.0.0/16 172.30.4.2 significa que todos los ordenadores cuya dirección IP empieza con 172.20.x.x, así como el ordenador con la dirección IP 172.30.4.2, pueden atravesar el cortafuegos.

  • FW_SERVICES_TRUSTED_TCP (firewall): Indique dirección del puerto TCP que utilizarán los ordenadores de confianza. Escriba por ejemplo 1:65535, si todos los ordenadores de confianza pueden acceder a todos los servicios. Normalmente basta con indicar ssh como servicio.

  • FW_SERVICES_TRUSTED_UDP (firewall): Como arriba, pero en relación a UDP.

  • FW_ALLOW_INCOMING_HIGHPORTS_TCP (firewall): Si trabaja con un FTP normal (activo), introduzca ftp-data.

  • FW_ALLOW_INCOMING_HIGHPORTS_UDP (firewall): Escriba dns, para poder utilizar los servidores de nombres introducidos en /etc/resolv.conf. Con yes deja libres todos los números altos de puertos.

  • FW_SERVICE_DNS (firewall): Si dispone de un servidor de nombres, al que debe poder accederse desde fuera, introduzca yes; en FW_TCP_SERVICES_* se debe liberar el puerto 53.

  • FW_SERVICE_DHCLIENT (firewall): Si utiliza dhclient, para recibir una dirección IP, introduzca yes.

  • FW_LOG_*: Aquí puede indicar lo que quiere registrar en los archivos log. Para el sistema en funcionamiento, basta con yes en FW_LOG_DENY_CRIT.

  • FW_STOP_KEEP_ROUTING_STATE (firewall): Si accede a Internet automáticamente con diald o vía RDSI (dial on demand), introduzca yes.

La configuración ha finalizado. No olvide probar el cortafuegos (por ejemplo telnet desde fuera); deberá ver las siguientes entradas en /var/log/messages:

Mar 15 13:21:38 linux kernel: SFW2-INext-DROP-DEFLT IN=eth0 
OUT= MAC=00:80:c8:94:c3:e7:00:a0:c9:4d:27:56:08:00 SRC=192.168.10.0 
DST=192.168.10.1 LEN=60 TOS=0x10 PREC=0x00 TTL=64 ID=15330 DF PROTO=TCP 
SPT=48091 DPT=23 WINDOW=5840 RES=0x00 SYN URGP=0 
OPT (020405B40402080A061AFEBC0000000001030300)  
 

18.1.3.2. Configuración con YaST

La configuración gráfica con YaST se realiza en el Centro de Control de YaST. Una vez allí, seleccione el apartado Firewall del menú Seguridad y Usuarios. La configuración está dividida en cuatro secciones:

Configuración básica

Defina aquí las interfaces que quiere proteger. Si se trata de un único ordenador o una red interna, introduzca la interfaz dirigida hacia el exterior (hacia Internet). Si detrás de su sistema se encuentra una red interna, ha de introducir también la interfaz dirigida hacia dentro. Salga de este diálogo con Siguiente.

Servicios

Esta opción sólo es relevante en caso de que, a través de su sistema, quiera ofrecer servicios que estén disponibles desde Internet (servidor web, servidor de correo, etc.). Active las casillas de control correspondientes y/o pulse el botón Experto ... para activar determinados servicios a través de su número de puerto (puede consultarse en /etc/services). Si su máquina no va a actuar como servidor, salga de este diálogo sin efectuar ningún cambio con Siguiente.

Características

Seleccione aquí las características principales de su cortafuegos:

  • Permitir traceroute ayuda a comprobar el enrutamiento a su cortafuegos.

  • Tráfico reenviado y enmascaramiento protege a los ordenadores de la red local frente a Internet. Parecerá que es su cortafuegos el que utiliza todos los servicios de Internet mientras que los ordenadores internos permanecen invisibles.

  • Proteger todos los servicios en ejecución significa que se evitan todos los accesos de la red a servicios TCP y UDP del cortafuegos, exceptuando aquellos activados explícitamente en el paso anterior.

  • Proteger desde la red interna Sólo los servicios activados del cortafuegos estarán disponibles para los ordenadores internos. Debido a que aquí no es posible activar ningún servicio, es mejor desactivar esta opción si quiere permitir accesos desde la red local.

Una vez completada la configuración de las características, abandone este diálogo con Siguiente.

Opciones de logging

Aquí puede definir el alcance del registro de su cortafuegos. Antes de activar las Opciones de depuración, tenga en cuenta que los ficheros de registro producen una gran cantidad de datos. Con la configuración del registro o logging concluye la configuración del cortafuegos. Salga de este diálogo con Siguiente y confirme el mensaje que aparece a continuación para activar el cortafuegos.