Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Fedora 13 Security Guide Es ES
Fedora 13 Security Guide Es ES
Johnray Fuller John Ha David O'Brien Scott Radvan Eric Christensen Adam Ligas
Gua de seguridad
Fedora 13 Gua de seguridad Una gua para la seguridad en Fedora Linux Edicin 13.0
Autor Autor Autor Autor Autor Autor Copyright 2010 Red Hat, Inc. The text of and illustrations in this document are licensed by Red Hat under a Creative Commons AttributionShare Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. The original authors of this document, and Red Hat, designate the Fedora Project as the "Attribution Party" for purposes of CC-BY-SA. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version. Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law. Red Hat, Red Hat Enterprise Linux, the Shadowman logo, JBoss, MetaMatrix, Fedora, the Infinity Logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries. For guidelines on the permitted uses of the Fedora trademarks, refer to https://fedoraproject.org/wiki/ Legal:Trademark_guidelines. Linux is the registered trademark of Linus Torvalds in the United States and other countries. Java is a registered trademark of Oracle and/or its affiliates. XFS is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries. All other trademarks are the property of their respective owners. Johnray Fuller John Ha David O'Brien Scott Radvan Eric Christensen Adam Ligas jrfuller@redhat.com jha@redhat.com daobrien@redhat.com sradvan@redhat.com sparks@fedoraproject.org adam@physco.com
La Gua de Seguridad en Fedora est diseada para asistir a usuarios de Fedora en el proceso de aprendizaje y prcticas de seguridad en estaciones de trabajo y servidores, para poder as evitar intrusiones locales y remotas, explotaciones, y actividades maliciosas. Enfocada en Fedora Linux pero detallando conceptos y tcnicas validas para todos los sistemas Linux. La Gua de Seguridad en Fedora detalla la planificacin y describe las herramientas involucradas en la creacin de un entorno de computacin seguro, para centros de datos, estaciones de trabajo, o el hogar. Con un conocimiento administrativo apropiado, vigilancia, y herramientas, los sistemas ejecutando Linux pueden ser funcionales y al mismo tiempo seguros, frente a los mtodos de intrusin y explotacin ms comunes.
Prefacio vii 1. Convenciones del Documento ........................................................................................ vii 1.1. Convenciones Tipogrficas .................................................................................. vii 1.2. Convenciones del documento ............................................................................. viii 1.3. Notas y Advertencias ........................................................................................... ix 2. Necesitamos sus comentarios! ....................................................................................... ix 1. Resumen acerca de la seguridad 1 1.1. Introduccin a la Seguridad .......................................................................................... 1 1.1.1. Qu es la seguridad en computacin? .............................................................. 1 1.1.2. SELinux ............................................................................................................ 4 1.1.3. Controles de seguridad ...................................................................................... 4 1.1.4. Conclusin ........................................................................................................ 5 1.2. Evaluacin de debilidades ............................................................................................ 5 1.2.1. Pensando como el enemigo ............................................................................... 6 1.2.2. Definiendo evaluacin y pruebas ........................................................................ 6 1.2.3. Herramientas de evaluacin ............................................................................... 8 1.3. Atacantes y vulnerabilidades ....................................................................................... 11 1.3.1. Una breve resea acerca de los hackers .......................................................... 11 1.3.2. Amenazas a la seguridad de la red .................................................................. 12 1.3.3. Amenazas a la seguridad del servidor .............................................................. 13 1.3.4. Amenazas a las estaciones de trabajo y seguridad en equipos hogareos ........... 15 1.4. Ataques y debilidades comunes .................................................................................. 15 1.5. Actualizaciones de seguridad ...................................................................................... 19 1.5.1. Actualizacin de paquetes ................................................................................ 19 1.5.2. Verificacin de paquetes firmados .................................................................... 19 1.5.3. Instalacin de paquetes firmados ..................................................................... 20 1.5.4. Aplicacin de los cambios ................................................................................ 21 2. Asegurando su Red 2.1. Seguridad de la estacin de trabajo ............................................................................ 2.1.1. Evaluacin de la seguridad de la estacin de trabajo ......................................... 2.1.2. Seguridad en el BIOS y en el gestor de arranque .............................................. 2.1.3. Seguridad de contraseas ................................................................................ 2.1.4. Controles administrativos ................................................................................. 2.1.5. Servicios de red disponibles ............................................................................. 2.1.6. Cortafuegos personales ................................................................................... 2.1.7. Herramientas de comunicacin de seguridad mejorada ...................................... 2.2. Seguridad del servidor ................................................................................................ 2.2.1. Asegurando los servicios con encapsuladores TCP y xinetd ............................... 2.2.2. Asegurando Portmap ....................................................................................... 2.2.3. Asegurando NIS .............................................................................................. 2.2.4. Asegurando NFS ............................................................................................. 2.2.5. Asegurando el servidor HTTP Apache .............................................................. 2.2.6. Asegurando FTP ............................................................................................. 2.2.7. Asegurando Sendmail ...................................................................................... 2.2.8. Verificar qu puertos estn abiertos .................................................................. 2.3. Identificacin nica (SSO, por las iniciales en ingls de Single Sign-on) ......................... 2.3.1. Introduccin ..................................................................................................... 2.3.2. Empezar a utilizar su nueva tarjeta inteligente ................................................... 2.3.3. Como funciona la inscripcin de las tarjetas inteligentes. .................................... 2.3.4. Cmo funciona el ingreso con tarjeta inteligente ................................................ 25 25 25 25 28 33 40 44 44 45 45 49 49 52 53 54 57 58 59 59 61 62 63
iii
Gua de seguridad
2.3.5. Configurar Firefox para la utilizacin de Kerberos como SSO ............................. 64 2.4. Mdulos de autenticacin conectables (PAM, por las iniciales en ingls de Pluggable Authentication Modules) .................................................................................................... 66 2.4.1. Ventajas de PAM ............................................................................................. 67 2.4.2. Archivos de configuracin de PAM .................................................................... 67 2.4.3. Formato del archivo de configuracin de PAM ................................................... 67 2.4.4. Ejemplos de archivos de configuracin de PAM ................................................. 70 2.4.5. Creacin de los mdulos PAM ......................................................................... 71 2.4.6. PAM y el cacheo de la credencial administrativa ................................................ 72 2.4.7. PAM y la propiedad de los dispositivos ............................................................. 73 2.4.8. Recursos adicionales ....................................................................................... 75 2.5. Encapsuladores TCP y xinetd ..................................................................................... 76 2.5.1. Encapsuladores TCP ....................................................................................... 77 2.5.2. Archivos de configuracin de los encapsuladores TCP ....................................... 78 2.5.3. xinetd .............................................................................................................. 86 2.5.4. Archivos de configuracin de xinetd .................................................................. 86 2.5.5. Recursos adicionales ....................................................................................... 92 2.6. Kerberos .................................................................................................................... 93 2.6.1. Qu es Kerberos? ......................................................................................... 93 2.6.2. Terminologa de Kerberos ................................................................................ 95 2.6.3. Como Funciona Kerberos ................................................................................ 97 2.6.4. Kerberos y PAM .............................................................................................. 98 2.6.5. Configurando un servidor Kerberos 5 ................................................................ 98 2.6.6. Configuracin de un Cliente Kerberos 5 .......................................................... 100 2.6.7. Mapeo dominio-a-reinado ............................................................................... 102 2.6.8. Configurando KDCs secundarios .................................................................... 102 2.6.9. Configurando la autenticacin cruzada de reinados .......................................... 104 2.6.10. Recursos adicionales ................................................................................... 108 2.7. Redes privadas virtuales (VPNs, por las iniciales en ingls de Virtual Private Networks) ........................................................................................................................................ 109 2.7.1. Cmo funciona una VPN? ............................................................................ 110 2.7.2. VPNs y Fedora .............................................................................................. 110 2.7.3. IPsec ............................................................................................................. 110 2.7.4. Creando una conexin IPsec .......................................................................... 110 2.7.5. Instalacin de IPsec ....................................................................................... 111 2.7.6. Configuracin de IPsec equipo-a-equipo ......................................................... 111 2.7.7. Configuracin IPsec red-a-red ........................................................................ 118 2.7.8. Iniciar y detener una conexin IPsec ............................................................... 125 2.8. Cortafuegos .............................................................................................................. 125 2.8.1. Netfilter e IPTables ........................................................................................ 127 2.8.2. Configuracin bsica de un cortafuego ............................................................ 127 2.8.3. Uso de IPTables ............................................................................................ 131 2.8.4. Filtrado comn de IPTables ............................................................................ 132 2.8.5. Reglas FORWARD y NAT ................................................................................. 133 2.8.6. Software malicioso y suplantacin de direcciones IP ....................................... 136 2.8.7. IPTables y el seguimiento de la conexin ........................................................ 137 2.8.8. IPv6 .............................................................................................................. 137 2.8.9. Recursos adicionales ..................................................................................... 138 2.9. IPTables ................................................................................................................... 138 2.9.1. Filtrado de Paquete ....................................................................................... 139 2.9.2. Opciones de la lnea de comandos de IPTables ............................................... 140
iv
Guardando las reglas de IPTalbes .................................................................. Programas de control de IPTables .................................................................. IPTables e IPv6 ............................................................................................. Recursos adicionales .....................................................................................
150 150 153 153 155 155 155 155 156 156 156 157 157 157 158 158 159 159 159 159 159 160 160 160 161 161 163 163 164 165
3. Cifrado 3.1. Datos en reposo ....................................................................................................... 3.2. Cifrado completo del disco ........................................................................................ 3.3. Cifrado basado en archivo ........................................................................................ 3.4. Datos en movimiento ................................................................................................ 3.5. Redes privadas virtuales (VPNs) ............................................................................... 3.6. Shell seguro (SSH, por las iniciales en ingls de Secure Shell) .................................... 3.7. Cifrado de disco LUKS (Linux Unified Key Setup-on-disk-format) ................................. 3.7.1. Implementacin de LUKS en Fedora ............................................................... 3.7.2. Cifrado manual de directorios ......................................................................... 3.7.3. Instrucciones paso a paso .............................................................................. 3.7.4. Lo que acaba de realizar ............................................................................... 3.7.5. Enlaces de inters ......................................................................................... 3.8. Archivos cifrados mediante 7-Zip ............................................................................... 3.8.1. Instalacin de 7-Zip en Fedora ....................................................................... 3.8.2. Instrucciones paso a paso para su instalacin ................................................. 3.8.3. Instrucciones paso a paso para su utilizacin .................................................. 3.8.4. Elementos para prestar atencin .................................................................... 3.9. Utilizando GNU Privacy Guard (GnuPG) .................................................................... 3.9.1. Generando claves GPG en GNOME ............................................................... 3.9.2. Generar claves GPG en KDE ......................................................................... 3.9.3. Generar una clave GPG mediante la lnea de comandos .................................. 3.9.4. Usando GPG con Alpine ................................................................................ 3.9.5. Usando GPG con Evolution ............................................................................ 3.9.6. Usando GPG con Thunderbird ....................................................................... 3.9.7. Acerca del encriptado de la clave pblica ........................................................
4. Principios Generales sobre la Seguridad de la Informacin 167 4.1. Consejos, Guas y Herramientas ............................................................................... 167 5. Instalacin segura 169 5.1. Particiones del disco ................................................................................................. 169 5.2. Utilice encriptado de particiones mediante LUKS ........................................................ 169 6. Mantenimiento de Software 6.1. Instale el software mnimo ........................................................................................ 6.2. Planifique y configure actualizaciones de seguridad .................................................... 6.3. Ajustando las actualizaciones automticas ................................................................. 6.4. Instale paquetes identificados desde repositorios conocidos ........................................ 7. Referencias A. Estndares de cifrado A.1. Cifrado sincronizado ................................................................................................. A.1.1. Advanced Encription Standard - AES .............................................................. A.1.2. Data Encryption Standard - DES .................................................................... A.2. Cifrado de llave pblica ............................................................................................ A.2.1. Diffie-Hellman ................................................................................................ A.2.2. RSA .............................................................................................................. 171 171 171 171 171 173 175 175 175 175 176 177 177
Gua de seguridad
DSA .............................................................................................................. SSL/TLS ....................................................................................................... Criptosistema de Cramer-Shoup ..................................................................... Cifrado ElGamal ............................................................................................
B. Historial de revisiones
vi
Prefacio
1. Convenciones del Documento
Este manual utiliza varias convenciones para resaltar algunas palabras y frases y llamar la atencin sobre ciertas partes especficas de informacin. En ediciones PDF y de papel, este manual utiliza tipos de letra procedentes de Liberation Fonts . Liberation Fonts tambin se utilizan en ediciones de HTML si estn instalados en su sistema. Si no, se muestran tipografas alternativas pero equivalentes. Nota: Red Hat Enterprise Linux 5 y siguientes incluyen Liberation Fonts predeterminadas.
1
https://fedorahosted.org/liberation-fonts/
vii
Prefacio
Seleccionar Sistema Preferencias Ratn desde la barra del men principal para lanzar Preferencias de Ratn. En la pestaa de Botones, haga clic en la cajilla ratn de mano izquierda y luego haga clic en Cerrar para cambiar el botn principal del ratn de la izquierda a la derecha (adecuando el ratn para la mano izquierda). Para insertar un caracter especial en un archivo de gedit, seleccione desde la barra del men principal Aplicaciones Accesorios Mapa de caracteres. Luego, desde la barra del men mapa de caracteres elija Bsqueda Hallar, teclee el nombre del caracter en el campo Bsqueda y haga clic en Siguiente. El caracter buscado se resaltar en la Tabla de caracteres. Haga doble clic en este caracter resaltado para colocarlo en el campo de Texto para copiar y luego haga clic en el botn de Copiar. Ahora regrese a su documento y elija Editar Pegar desde la barra de men de gedit. El texto anterior incluye nombres de aplicacin; nombres y elementos del men de todo el sistema; nombres de men de aplicaciones especficas y botones y texto hallados dentro de una interfaz grfica de usuario, todos presentados en negrita proporcional y distinguibles por contexto. Itlicas-negrita monoespaciado o Itlicas-negrita proporcional Ya sea negrita monoespaciado o negrita proporcional, la adicin de itlicas indica texto reemplazable o variable. Las itlicas denotan texto que usted no escribe literalmente o texto mostrado que cambia dependiendo de la circunstancia. Por ejemplo: Para conectar a una mquina remota utilizando ssh, teclee ssh nombredeusuario@dominio.nombre en un intrprete de comandos de shell. Si la mquina remota es example.com y su nombre de usuario en esa mquina es john, teclee ssh john@example.com. El comando mount -o remount file-system remonta el sistema de archivo llamado. Por ejemplo, para volver a montar el sistema de archivo /home, el comando es mount -o remount /home. Para ver la versin de un paquete actualmente instalado, utilice el comando rpm -q paquete. ste entregar el resultado siguiente: paquete-versin-lanzamiento. Observe las palabras en itlicas- negrita sobre nombre de usuario, domain.name, sistema de archivo, paquete, versin y lanzamiento. Cada palabra es un marcador de posicin, tanto para el texto que usted escriba al ejecutar un comando como para el texto mostrado por el sistema. Aparte del uso estndar para presentar el ttulo de un trabajo, las itlicas denotan el primer uso de un trmino nuevo e importante. Por ejemplo: Publican es un sistema de publicacin de DocBook.
viii
Notas y Advertencias
books_tests
Desktop1
downloads
images
notes
scripts
svgs
Los listados de cdigo fuente tambin se muestran en romano monoespaciado, pero se presentan y resaltan de la siguiente manera:
package org.jboss.book.jca.ex1; import javax.naming.InitialContext; public class ExClient { public static void main(String args[]) throws Exception { InitialContext iniCtx = new InitialContext(); Object ref = iniCtx.lookup("EchoBean"); EchoHome home = (EchoHome) ref; Echo echo = home.create(); System.out.println("Created Echo"); System.out.println("Echo.echo('Hello') = " + echo.echo("Hello")); } }
Nota
Una nota es una sugerencia, atajo o enfoque alternativo para una tarea determinada. Ignorar una nota no debera tener consecuencias negativas, pero podra perderse de algunos trucos que pueden facilitarle las cosas.
Importante
Important boxes detail things that are easily missed: configuration changes that only apply to the current session, or services that need restarting before an update will apply. Ignoring a box labeled 'Important' won't cause data loss but may cause irritation and frustration.
Advertencia
Las advertencias no deben ignorarse. Ignorarlas muy probablemente ocasionar prdida de datos.
ix
Prefacio
Para proveer retroalimentacin de la Gua de Seguridad, por favor enve un error a https:// bugzilla.redhat.com/enter_bug.cgi?component=security-guide&product=Fedora%20Documentation. Por favor seleccione el componente adecuado para esta gua.
http://law.jrank.org/pages/3791/Kevin-Mitnick-Case-1999.html http://www.livinginternet.com/i/ia_hackers_levin.htm
Un nmero creciente de personas est utilizando sus computadoras personales para obtener acceso a los recursos que ofrece Internet. Desde investigacin y obtencin de informacin hasta el correo electrnico y transacciones comerciales, Internet es considerada como uno de los desarrollos ms importantes del siglo 20. Sin embargo, Internet y sus primeros protocolos fueron desarrollados como un sistema basado en la confianza. Esto significa que el Protocolo de Internet no fue diseado para ser seguro en s mismo. No existen estndares de seguridad aprobados dentro del bloque de comunicaciones TCP/ IP, dejndolo indefenso ante usuarios o procesos de la red potencialmente dainos. Desarrollos modernos han hecho de las comunicaciones en Internet algo ms seguro, pero todava existen varios incidentes que acaparan la atencin mundial, y nos recuerdan el hecho de que nada es completamente seguro.
Qu es la seguridad en computacin?
Del informe "El Estado Global de la Seguridad de la Informacin" , realizado por CIO Magazine en el ao 2008 sobre diferentes negocios y ejecutivos en tecnologas, se extrae lo siguiente: Slo el 43% de los encuestados audita o monitorea el cumplimiento de las polticas de seguridad de sus usuarios Slo el 22% mantiene un inventario de las compaas externas que utilizan sus datos El origen de casi la mitad de los incidentes de seguridad se caratularon como "Desconocidos" 44% de los encuestados planean incrementar sus gastos en seguridad en el ao siguiente 59% tiene una estrategia de seguridad de la informacin Estos resultados refuerzan la realidad de que la seguridad de computadoras se ha vuelto un gasto cuantificable y justificable en los presupuestos de TI. Las organizaciones que necesitan tanto la integridad como la rpida disponibilidad de sus datos, lo obtienen gracias a la habilidad que los administradores de sistema, desarrolladores e ingenierospara tienen para asegurar la disponibilidad de sus sistemas, servicios y datos, durante las 24 horas de los 365 das del ao. Ser vctima de usuarios maliciosos, procesos o ataques coordinados es una amenaza directa al xito de la organizacin. Desafortunadamente, la seguridad de sistemas y de la red puede ser una proposicin difcil, que requiere un conocimiento intrincado de cmo una organizacin expresa, usa, manipula y transmite su informacin. El entendimiento de la forma en que una organizacin (y la gente que la compone) conduce el negocio es primordial para implementar un plan de seguridad apropiado.
y se deja sentado formalmente en Acuerdos de Disponibilidad del Servicio (SLAs, por las iniciales en ingls de Service Level Agreements) con los proveedores de servicios de red y sus clientes empresariales.
1.1.2. SELinux
Fedora incluye una mejora al kernel de Linux que se llama SELinux, que implementa la arquitectura de Control de Acceso Obligatorio (MAC), que provee un nivel ms fino de control sobre los archivos, procesos, usuarios y aplicaciones en el sistema. La discusin detallada sobre SELinux est ms all del alcance de este documento; sin embargo, para ms informacin sobre SELinux y su uso en Fedora, vaya a la Gua del Usuario de SELinux de Fedora disponible en http://docs.fedoraproject.org/ selinux-user-guide/. Hay otros recursos de SELinux listados en Captulo 7, Referencias.
Conclusin
Tarjetas inteligentes Autenticacin de red Listas de control de acceso (ACLs) Software para auditar la integridad de archivos
1.1.4. Conclusin
Ahora que ya conoce los orgenes, las razones y los aspectos de la seguridad, encontrar ms fcil determinar el rumbo apropiado con respecto a Fedora. Es importante conocer qu factores y condiciones hacen a la seguridad para planear e implementar una estrategia apropiada. Con esta informacin en mente, el proceso se puede formalizar y los caminos a seguir se hacen ms claros a medida que profundiza en los detalles del proceso de seguridad.
de cada rea de la seguridad en la informacin necesita atencin y concentracin constante. La seguridad en la informacin nunca permanece inmvil.
Cuando realice una evaluacin de debilidades desde adentro hacia afuera, usted tiene una especie de ventaja ya que, al estar en una ubicacin interna, su estado es el de ser alguien confiable, y por lo tanto, superior. Este es el punto de vista adquieren usted y sus compaeros de trabajo, cada vez que se registran en el sistema. Puede ver servidores de impresin, servidores de archivos, bases de datos, y dems recursos. Existen notables distinciones entre estos dos tipos de evaluaciones. Desde el interior de la compaa se tienen privilegios superiores a los que se obtendran desde el exterior. An hoy, en muchas organizaciones, la seguridad es configurada de tal manera para evitar que ingresen intrusos desde el exterior, y muy poco se hace para asegurar los elementos internos de la organizacin (como ser cortafuegos departamentales, controles de acceso de niveles de usuarios, procedimientos de autenticaciones para recursos internos, etc.). Por lo general, existen muchos ms recursos si se busca dentro de una compaa, ya que la mayora de los sistemas son internos a ella. Una vez que se encuentre fuera de la compaa, inmediatamente ser identificado como un elemento no seguro. Los sistemas y las herramientas disponibles para utilizar desde fuera son, generalmente, muy limitadas. Considere la diferencia existente entre evaluaciones de debilidades y pruebas de penetracin. Piense en una evaluacin de debilidades como el primer paso de una prueba de penetracin. La informacin obtenida en la evaluacin es utilizada para la prueba. Cualesquiera sean las reas o los lugares que el resultado de la evaluacin haya sugerido verificar en bsqueda de agujeros o debilidades potenciales, sern esos mismos lugares los que la prueba de penetracin intentar utilizar para aprovechar esas debilidades e ingresar al sistema. Acceder a la infraestructura de la red es un proceso dinmico. La seguridad es dinmica, tanto la fsica como la de la informacin. Realizar una evaluacin determina una visin general, que puede arrojar resultados falsos, tanto para bien como para mal. La eficacia de los administradores de seguridad es directamente proporcional a las herramientas que utilizan y al conocimiento que poseen. Elija cualquiera de las herramientas de evaluacin que se encuentren disponibles actualmente, ejectelas en su sistema, y es casi una garanta que algunos resultados sern errneos. Ya sea por una falla del programa, o por un error del usuario, el resultado ser el mismo. La herramienta puede llegar a encontrar debilidades que en realidad no existen (falsos positivos); o , peor an, la herramienta puede no encontrar debilidades que efectivamente existen (falsos negativos). Ahora que ha sido definida la diferencia entre una evaluacin de debilidades y una prueba de penetracin, como parte de una mejor aplicacin de los mtodos, revise cuidadosamente los datos arrojados por la evaluacin antes de realizar una prueba de penetracin.
Advertencia
Intentar aprovechar las debilidades de los recursos de produccin, puede tener efectos adversos en la productividad y eficiencia de sus sistemas y redes. En la lista siguiente se examinan algunos de los beneficios de llevar a cabo evaluaciones de vulnerabilidad. Crea un enfoque pro-activo sobre la seguridad de la informacin Encuentra potenciales debilidades antes que las encuentren los atacantes Funciona en sistemas que se mantiene actualizados y enmendados Promueve el crecimiento y la asistencia en el desarrollo de la especializacin del personal
Herramientas de evaluacin
la herramienta ms utilizada para reunir informacin de red. Incluye una pgina man excelente con informacin detallada de sus usos y opciones. Los administradores pueden utilizar Nmap sobre una red para encontrar sistemas de equipos y puertos abiertos en esos sistemas. Nmap es un primer paso muy efectivo en la realizacin de evaluaciones de debilidades. Puede mapear todos los equipos dentro de su red, e incluso indicar una opcin que permite a Nmap intentar identificar el sistema operativo ejecutndose en un equipo determinado. Nmap es un buen fundamento sobre el que establecer una poltica de utilizacin de servicios seguros, y detener servicios no seguros.
Los resultados de un anlisis bsico (que puede demorarse unos minutos, de acuerdo al lugar en donde se encuentre el equipo), deberan ser similares a los siguientes:
Starting Nmap 4.68 ( http://nmap.org ) Interesting ports on foo.example.com: Not shown: 1710 filtered ports PORT STATE SERVICE 22/tcp open ssh 53/tcp open domain 70/tcp closed gopher 80/tcp open http 113/tcp closed auth
Nmap verifica los puertos de comunicaciones de red ms comunes, en busca de servicios que se encuentren escuchando o esperando. Este conocimiento puede servirle a un administrador que quiere cerrar servicios innecesarios o que no sean utilizados. Para obtener mayor informacin acerca de la utilizacin de Nmap, visite la pgina oficial en la siguiente URL: http://www.insecure.org/
1.2.3.2. Nessus
Nessus es un examinador de seguridad para cualquier tipo de servicios. La arquitectura de tipo complementos de Nessus permite a los usuarios personalizarlo de acuerdo a los requerimientos de sus sistemas o redes. Como cualquier otro examinador, la eficiencia de Nessus es directamente proporcional a la base de datos de la que depende. Afortunadamente, Nessus es actualizado peridicamente y entre sus recursos se encuentran el de ofrecer informes completos, anlisis de equipos, y bsqueda de debilidades en tiempo real. Recuerde que siempre pueden existir resultados falsos, an en herramientas tan poderosas y tan frecuentemente actualizadas como Nessus.
Nota
Tanto el servidor como el cliente Nessus se encuentran disposnibles en los repositorios de Fedora, pero para poder utilizarlos es necesario suscribirse. Se ha incluido en este documento como una referencia para aquellos usuarios que podran estar interesados en utilizar esta conocida herramienta. Para obtener mayor informacin acerca de Nessus, visite el sitio web oficial en la siguiente URL: http://www.nessus.org/
1.2.3.3. Nikto
Nikto es un excelente examinador de programas de interfaz comn de puerta de enlace (CGI, por las iniciales en ingls de Common Gateway Interface). Nikto no slo verifica debilidades CGI, sino que lo hace de una forma evasiva, de modo de poder evitar sistemas de deteccin de intrusiones. Se ofrece con informacin detallada que debera ser cuidadosamente leda antes de ejecutar el programa. Si usted posee servidores Web ofreciendo programas CGI, Nikto puede ser una herramienta excelente para verificar la seguridad de estos servidores. Ms informacin sobre Nikto se puede encontrar en la siguiente URL: http://www.cirt.net/code/nikto.shtml
Nota
VLAD no se incluye con Fedora y no est soportado. Se ha incluido en este documento como una referencia para aquellos usuarios que podran estar interesados en utilizar esta conocida aplicacin. Ms informacin sobre VLAD se puede encontrar el sitio web del equipo RAZOR en la siguiente URL: http://www.bindview.com/Support/Razor/Utilities/
10
Atacantes y vulnerabilidades
11
al descubierto informacin valiosa en tales sistemas o redes, o para obtener un beneficio personal, o simplemente para causar dao. Por otro lado, un hacker de sombrero gris tiene la habilidad de un hacker de sombrero blanco, y en la mayora de los casos tambin sus intenciones, pero en algunas ocasiones utiliza su conocimiento para propsitos no tan nobles. Puede pensarse en un hacker de sombrero gris como un hacker de sombrero blanco, que a veces utiliza un sombrero negro para cumplir con objetivos personales. Generalmente los hackers de sombrero gris se rigen por una norma diferente de la tica del hacker, que establece que es aceptable vulnerar sistemas, siempre y cuando el hacker no cometa ningn delito ni haga pblico aquello que es considerado privado. Sin embargo, alguien podra argumentar, que el acto de vulnerar un sistema es en s mismo un acto no tico. Sin importar la intencin del intruso, es importante conocer la debilidad que un atacante puede intentar explotar. El resto del captulo se centra en estas cuestiones.
12
13
14
ASCII o DBM (derivado de ASCII), que debe ser accedida por cualquiera de los equipos en la red, incluyendo contraseas y permisos de archivo. Un atacante que obtenga acceso a esta base de datos, tendr acceso a cualquier cuenta de los usuario de la red, incluyendo la del administrador. Por defecto, Fedora es liberada con todos estos servicios apagados. Sin embargo, dado que los administradores a menudo se encuentran obligados a utilizarlos, es muy importante realizar cuidadosamente la configuracin de ellos. Para obtener mayor informacin acerca de cmo configurar los servicios en forma segura, vea Seccin 2.2, Seguridad del servidor.
15
clave para defender estos puntos son las explicaciones acerca de cmo se desarrollan, y cmo los administradores pueden salvaguardar adecuadamente sus redes contra tales ataques. Debilidades Contraseas nulas o predeterminadas Descripcin Dejando las contraseas administrativas en blanco, o utilizando la contrasea predeterminada puesta por el vendedor. Esto es lo ms comn en hardware como ruteadores y cortafuegos, por lo que algunos servicios que corren en Linux pueden contener contraseas administrativas predeterminadas (aunque Fedora 12 no viene con ellas). Notas Asociados comnmente a equipos de red como ruteadores, cortafuegos, VPNs y aparatos de almacenamiento conectados a la red (NAS). Comn en muchos sistemas operativos viejos, especialmente los SOs que agrupan servicios (como UNIX y Windows.) Los administradores, a veces crean apresuradamente cuentas de usuarios privilegiados, y dejan la contrasea en blanco, creando un punto de entrada perfecto para usuarios malintencionados han descubierto la cuenta. Los puntos de acceso inalmbricos y aparatos servidores seguros preconfigurados ms comunes.
Los servicios de seguridad algunas veces empaquetan claves de seguridad establecidas por defecto, ya sea para su desarrollo, o para comprobar su desempeo. Si estas claves se mantienen inalteradas y se colocan en un entorno de produccin en Internet todos los usuarios con las misma sclaves establecidas por defecto tendrn acceso a ese recurso de clave compartida, y a cualquier tipo de informacin que en l se guarde. Una mquina remota acta como un nodo en su red local, busca debilidades en sus servidores, e instala un programa de puerta trasera o troyano para ganar el control de los recursos de la red.
Imitacin de IP
La suplantacin de identidad es tan difcil porque involucra la necesidad del atacante de tener que predecir los nmeros de secuencia de TCP/IP para coordinar una conexin a los sistemas remotos, pero hay varias herramientas disponibles para asistir a los atacantes a realizar esa tarea. Depende del tipo de servicios que se estn ejecutando en el sistema de destino (como por ejemplo rsh, telnet, FTP y dems), si es que utilizan tcnicas de autenticacin basadas en la fuente, no son recomendadas si se las compara con PKI, o con otras formas de autenticar encriptaciones utilizadas en ssh, o SSL/TLS.
16
Debilidades Escuchas
Descripcin La escucha se realiza para la recoleccin de datos que pasan entre dos nodos activos en una red.
Notas Este tipo de ataque funciona principalmente con protocolos de transmisin de texto plano tales como las transferencias Telnet, FTP y HTTP. El atacante remoto debe tener acceso a un sistema comprometido en una LAN para poder realizar el ataque; usualmente el atacante us un ataque activo (tal como la suplantacin de IP o la del hombre en el medio) para comprometer un sistema en la LAN. Las medidas preventivas incluyen servicios con cambio de claves criptogrficas, contraseas de un solo uso, o autenticacin encriptada para prevenir la adivinacin de contraseas; una fuerte encriptacin durante la transmisin tambin es recomendada. Los servicios basados en HTTP como CGI son vulnerables a ejecuciones desde comandos remotos, y an a accesos desde consolas interactivas. Incluso si el servicio HTTP lo ejecuta un usuario sin demasiados privilegios, como "nadie", algunos datos pueden ser ledos, como por ejemplo, los archivos de configuracin y mapas de red. El atacante tambin puede iniciar un ataque de denegacin de servicio que agotar los recursos del sistema, o lo dejar inutilizable por otros usuarios. Los servicios algunas veces pueden presentar debilidades que no son visibles a lo largo de los procesos de desarrollo o de prueba. Estas vulnerabilidades pueden darle a un atacante un control administrativo total, como es el caso de un desbordamiento del bfer: los atacantes destruyen un sistema utilizando valores arbitrarios que agotan la memoria del bfer de una determinada aplicacin, y obteniendo as una consola desde la cual poder ejecutar comandos. Los administradores se deben asegurar que los servicios no corren
Debilidades de servicios
Un atacante encuentra una brecha o hueco en un servicio que corre a travs de Internet; a travs de esta vulnerabilidad, el atacante compromete el sistema entero y cualquier dato que pueda contener, y puede posiblemente comprometer otros sistemas en la red.
17
Debilidades
Descripcin
Notas como el usuario root, y deben vigilar los parches y actualizaciones de errata de las aplicaciones de vendedores u organizaciones de seguridad como CERT y CVE.
Debilidades de aplicaciones
Los atacantes encuentran fallas en las aplicaciones de un equipo de escritorio o de una estacin de trabajo (como ser por ejemplo un cliente de correo electrnico), y ejecutan un cdigo cualquiera, colocan caballos troyanos para futuros daos, o simplemente destruyen el sistema. Pueden ocurrir futuras catstrofes si la estacin de trabajo vulnerada posee privilegios administrativos sobre el resto de la red.
Las estaciones de trabajo y los equipos personales son ideales para ser vulnerados dado que sus usuarios no tienen ni la experiencia ni el conocimiento para prevenir o detectar irregularidades. Es de suma importancia informar a los individuos del riesgo que corren cada vez que instalan software no autorizado, o cuando abren archivos adjuntos de correos electrnicos no solicitados. Pueden ser implementados "salvavidas" tales como configurar al cliente de correo electrnico que se est utilizando de modo tal que no abra ni ejecute archivos adjuntos en forma automtica. Adems, la actualizacin automtica de la estacin de trabajo a travs de Red Hat Network o mediante algn otro servicio de administracin de sistemas, es una forma de aliviar la tarea de las descargas de seguridad de tipo multi usuario. El caso DoS ms informado en los Estados Unidos ocurri en el ao 2000. Diferentes sitios comerciales y gubernamentales con alta densidad de trfico quedaron incapacitados por un ataque coordinado de flujo de ping, utilizando diversos sistemas con conexiones de banda ancha previamente vulnerados, que actuaban como zombies, o que redireccionaban nodos de transmisin. Los paquetes fuentes son usualmente moldeados (as como reenviados), investigando sobre la verdadera fuente del ataque. Los avances en el filtrado de la entrada (IETF rfc2267) con iptables y con sistemas deteccin de intrusos como snort ayudan a los
Un atacante, o un grupo de atacantes coordinados contra la red o los recursos de red de alguna organizacin, enviando paquetes no autorizados al equipo elegido (ya sea un servidor, un enrutador o una estacin de trabajo). Esto obliga al recurso atacado a quedar inhabilitado para los usuarios legtimos.
18
Actualizaciones de seguridad
Debilidades
Descripcin
Nota
Fedora incluye un cono en panel que muestra una alerta cada vez que exista una actualizacin disponible para el sistema.
19
Asumiendo que el disco est montado en /mnt/cdrom, use el siguiente comando para importarla dentro del administrador de claves (keyring, una base de datos de claves confiables en el sistema):
rpm --import /mnt/cdrom/RPM-GPG-KEY
Para mostrar una lista de todas las claves instaladas para la verificacin de RPM, ejecute el siguiente comando:
rpm -qa gpg-pubkey*
Para mostrar los detalles de alguna clave en particular, use el comando rpm -qi seguido de la salida del comando previo, como en este ejemplo:
rpm -qi gpg-pubkey-db42a60e-37ea5438
Es extremadamente importante verificar la firma de los archivos RPM antes de instalarlos para asegurar que no hayan sido alterados desde la fuente original de los paquetes. Para verificar todos los paquetes descargados de una vez, emita el siguiente comando:
rpm -K /tmp/updates/*.rpm
Para cada paquete, si la llave GPG se verifica exitosamente, el comando devuelve gpg OK. Sino, asegrese de estar utilizando la llave pblica correcta de Fedora, as como la fuente del contenido. Los paquetes que no pasan las verificaciones GPG no deberan ser instalados, ya que podran haber sido alterados. Despus de verificar la clave GPG y de descargar todos los paquetes asociados con el informe de errata, instale los paquetes como root en el indicador de la terminal.
En el ejemplo anterior, reemplace <kernel-package> con el nombre del RPM del kernel. Una vez que la mquina ha sido iniciada sin problema usando el nuevo kernel, el kernel viejo se puede eliminar usando el siguiente comando:
rpm -e <old-kernel-package>
En el ejemplo anterior, reemplace <old-kernel-package> con el nombre del RPM del kernel viejo.
20
Nota
No es necesario que el ltimo kernel sea eliminado. El cargador de arranque por defecto, GRUB, permite tener varios kernels instalados, luego elija uno desde el men de arranque al iniciar.
Importante
Antes de instalar cualquier errata de seguridad, asegrese de leer las instrucciones especiales contenidas en el informe de errata, y ejectelas apropiadamente. Visite Seccin 1.5.4, Aplicacin de los cambios para obtener instrucciones generales sobre la aplicacin de las modificaciones realizadas por una actualizacin de errata.
Nota
En general, reiniciar el sistema es la mejor forma de asegurarse que la ltima versin de un paquete de software est en uso; sin embargo, esta opcin no es siempre necesaria, o est disponible slo para el administrador del sistema. Aplicaciones Las aplicaciones del espacio del usuario son todos los programas que se pueden usar por el usuario comn. Tpicamente, tales aplicaciones se usan solamente cuando un usuario, programa o tarea automatizada los inicia, y no estn activas por perodos largos de tiempo. Una vez que la aplicacin del espacio del usuario es actualizado, detenga cualquier instancia de la aplicacin en el sistema y lance el programa de nuevo para usar la versin actualizada. Kernel El kernel es el componente de software principal del sistema operativo Fedora. Maneja el acceso a la memoria, al procesador y a los perifricos, as como la planificacin de todas las tareas. Dado a su rol central, el kernel no se puede reiniciar sin detener la computadora. Por lo tanto, una versin actualizada del kernel no se puede usar hasta que la computadora no sea reiniciada. Bibliotecas compartidas Las bibliotecas compartidas son unidades de cdigos, como glibc, que se usan por un nmero de aplicaciones y servicios. Las aplicaciones que usan una biblioteca compartida normalmente cargan el cdigo compartido cuando la aplicacin se inicia, por lo que todas las aplicaciones que usen la versin actualizada de la biblioteca se deben detener y reiniciar. Para determinar qu aplicaciones en ejecucin usan una biblioteca particular, use el comando lsof como en el siguiente ejemplo:
21
lsof /lib/libwrap.so*
Este comando devuelve una lista con todos los programas en ejecucin que utilizan encapsuladores TCP para control de acceso del equipo. Por lo tanto, cualquier programa listado debe ser detenido y reiniciado si el paquete tcp_wrappers es actualizado. Servicios SysV Los servicios SysV son programas de servidor persistentes lanzados en algn momento del proceso de inicializacin del equipo. Algunos ejemplos de servicios SysV son sshd, vsftpd, y xinetd. Debido a que estos programas generalmente continan en la memoria todo el tiempo en que el sistema se est ejecutando, cada servicio SysV actualizado debe ser detenido luego que el paquete haya sido renovado. Esto puede hacerse utilizando la Herramienta de configuracin de servicios, o logueandose como usuario root en una consola y ejecutando el comando /sbin/ service como en el ejemplo siguiente:
/sbin/service <service-name> restart
En el ejemplo anterior, reemplace <service-name> con el nombre del servicio, como ser por ejemplo, sshd. Servicios xinetd Los servicios controlados por el sper servicio xinetd solo se ejecutan cuando exista una conexin activa. Ejemplos de servicios controlados por xinetd osn Telnet, IMAP, y POP3. Debido a que xinetd inicia nuevas instancias de estos servicios cada vez que se reciba un nuevo pedido, las conexiones que tengan lugar luego de una actualizacin sern administradas por el software actualizado. Sin embargo, si existen conexiones activas en el momento en que el servicio controlado por xinetd es actualizado, estas conexiones seguirn funcionando controladas por la versin anterior. Para detener instancias antiguas de un servicio particular controlado por xinetd, actualice el paquete para el servicio, y luego detenga todos los procesos que se encuentren en ejecucin. Para determinar si el proceso est ejecutndose, utilice el comando ps y luego los comandos kill o killall para detener las instancias actuales del servicio. Por ejemplo, si los paquetes errata de seguridad imap son liberados, actualice los paquetes, y luego, como usuario root, ingrese el siguiente comando en una terminal:
ps -aux | grep imap
Este comando devuelve todas las sesiones IMAP activas. Las sesiones individuales pueden determinarse con el siguiente comando:
kill <PID>
En los ejemplos anteriores, para una sesin IMAP reemplace <PID> con el nmero de identificacin del proceso (que puede encontrarlo en la segunda columna del comando ps).
22
Para detener todas las sesiones IMAP activas, ingrese el siguiente comando:
killall imapd
23
24
Asegurando su Red
2.1. Seguridad de la estacin de trabajo
Asegurar un entorno Linux comienza con la estacin de trabajo. Ya sea bloqueando una mquina personal, o asegurando un sistema corporativo, cualquier poltica de seguridad empieza con la computadora individual. La seguridad de una red de computadoras es la misma que la de su nodo ms dbil.
25
Dado que el BIOS de cada sistema es diferente de acuerdo a su fabricante, algunos podran no tener soporte para proteccin mediante contrasea de algn tipo, mientras que otros podran solo soportar un tipo pero no otro.
26
Cuando se le solicite, ingrese la contrasea del GRUB y presione la tecla Intro. Con esto obtendr un hash MD5 de la contrasea. A continuacin, edite el archivo de configuracin del GRUB /boot/grub/grub.conf. Abra el archivo y debajo de la lnea timeout en la seccin principal del documento, aada la siguiente:
password --md5 <password-hash>
Reemplace <password-hash> con el valor obtenido por el comando /sbin/grub-md5-crypt . La prxima vez que el sistema sea iniciado, el men del GRUB evitar que se ingrese al editor, o a la interfaz de comandos, sin haber presionado primero la tecla p, seguida de la contrasea del GRUB Desafortunadamente, esta solucin no previene que un atacante inicie el equipo con un sistema operativo no seguro, si es que existe un entorno de arranque dual. Para esto, debe ser editada una parte diferente del archivo /boot/grub/grub.conf. Ubique la lnea title del sistema operativo que desea asegurar, y aada otra lnea con la directiva lock inmediatamente debajo de ella. Para un sistema DOS, el bloque de lneas pertinente debera empezar de manera similar a la siguiente:
title DOS lock
Advertencia
Una lnea password debe estar presente en la seccin principal del archivo /boot/ grub/grub.conf para el correcto funcionamiento de este mtodo. De lo contrario, un atacante puede acceder a la interfaz del editor del GRUB y eliminar la lnea de bloqueo. Para crear una contrasea diferente para un kernel particular o sistema operativo, aada la lnea lock a las presentes seguida de una lnea de contrasea. Cada porcin de lneas protegidas con una contrasea nica deberan empezar de manera similar al siguiente ejemplo:
title DOS lock password --md5 <password-hash>
el GRUB tambin acepta contraseas no cifradas, pero es recomendable que un hash MD5 sea utilizado para aadir seguridad.
27
28
Seguridad de contraseas
martin1 DS-9 tevez123 No utilice palabras de otros idiomas Los programas de descubrimiento de contraseas a menudo verifican sobre listas de palabras que incluyen diccionarios de muchos idiomas. Confiar en idiomas extranjeros para establecer contraseas seguras, no es algo aconsejable. Algunos ejemplos inseguros incluyen los siguientes: cheguevara bienvenido1 1dumbKopf No utilice terminologa hacker Si usted piensa que es intocable porque utiliza terminologa hacker tambin denominada lengua l337 (LEET) en su contrasea, pinselo dos veces, Muchas listas de palabras incluyen lengua LEET. Algunos ejemplos inseguros incluyen los siguientes: H4X0R 1337 No use Informacin Personal Evite usar cualquier tipo de informacin personal en sus contraseas. Si el atacante conoce su identidad, la tarea de deducir su contrasea se vuelve ms fcil. La siguiente es una lista de los tipos de informacin a evitar cuando se crea una contrasea: Algunos ejemplos inseguros incluyen los siguientes: Su nombre El nombre de su mascota El nombre de un miembro de la familia Cualquier fecha de cumpleaos Su nmero de telfono o su cdigo postal No invierta palabras reconocibles Los buenos verificadores de contrasea siempre invierten palabras comunes, por lo que la inversin de un mala contrasea no la hace ms segura. Algunos ejemplos inseguros incluyen los siguientes: R0X4H nauj 9-DS No escriba su contrasea Nunca guarde su contrasea en papel. Es ms seguro memorizarla.
29
No use la misma contrasea para todas las computadoras es importante crear contraseas distintas para cada mquina. De esta forma, si un sistema est comprometido, todas sus computadoras no estarn inmediatamente en riesgo. Los siguientes consejos le ayudarn a crear una contrasea fuerte: La contrasea debe tener al menos 8 caracteres de largo Cuanto ms larga la contrasea, mejor. Si usa contraseas MD5, deben ser de 15 caracteres o ms. Con contraseas DES, use la longitud mxima (ocho caracteres). Mezcle letras en maysculas y minsculas Fedora diferencia entre maysculas y minsculas, por lo que su mezcla mejora la fortaleza de la contrasea. Mezcle letras con nmeros Agregar nmeros a la contrasea mejora la fortaleza de la misma, especialmente cuando se los agrega en el medio (no al principio ni al final). Incluya caracteres no alfanumricos Caracteres especiales como &, $, y > pueden mejorar mucho la fortaleza de la contrasea (esto no es posible cuando se utilicen contraseas DES). Elija una contrasea que pueda recordar La mejor contrasea del mundo no mejora nada si no la puede recordar; use siglas u otros dispositivos memotcnicos para ayudarle a recordar las contraseas. Con todas estas reglas, puede parecer difcil crear una contrasea que cumpla al mismo tiempo con todos los criterios pedidos para una buena contrasea, y que evite la creacin de una mala. Afortunadamente, hay algunos pasos que se pueden tomar para generar una contrasea segura y fcil de recordar.
30
Seguridad de contraseas
31
Advertencia
Siempre obtenga una autorizacin por escrito antes de intentar descubrir contraseas dentro de una organizacin
En el comando de arriba, reemplace <username> con el nombre del usuario. Para deshabilitar el vencimiento de la contrasea, es tradicional usar el valor 99999 espus de la opcin -M (esto es cerca de 273 aos). Tambin puede usar el comando chage en modo interactivo para modificar el envejecimiento de varias contraseas y detalles de cuenta. Use el siguiente comando para ingresar en modo interactivo:
chage <username>
32
Controles administrativos
Vaya a la pgina man de chage para ms informacin sobre las opciones disponibles. Tambin se puede usar la aplicacin Usuarios y Grupos para crear polticas de envejecimiento de contraseas, como sigue. Nota: necesita los privilegios de administrador para realizar este procedimiento. 1. Haga clic en el men Sistema en el panel, apunte al men Administracin y luego haga clic en Usuarios y Grupos para mostrar el Aministrador de Usuarios. Alternativamente, teclee el comando system-config-users en un indicador de shell. Haga clic en la pestaa Usuarios y seleccione el usuario requerido de la lista de usuarios. Haga clic en Propiedades en la barra de herramientas para mostrar el cuadro de dilogo de las Propiedades del Usuario (o elija Propiedades en el men Archivo). Haga clic en la pestaa Informacin de la Contrasea, y seleccione la casilla de Activar expiracin de contrasea. Ingrese el valor requerido en el campo Das requeridos antes de cambiar y haga clic en Aceptar.
2. 3. 4. 5.
33
como lo son por ejemplo sudo o su. Se denomina un programa de tipo setuid a aquel que opera con el ID de usuario (UID) del dueo del programa, en lugar del ID de usuario de quien sea que est utilizando el programa. Tales programas son identificados con una s en la seccin de pertenencia del listado de formato extenso, como se muestra en el siguiente ejemplo:
-rwsr-xr-x 1 root root 47324 May 1 08:09 /bin/su
Nota
La s puede figurar en mayscula o en minscula. Si aparece en mayscula, significa que el bit de los permisos subyacentes no ha sido definido. Sin embargo, para el administrador del sistema de una organizacin, las elecciones deben ser realizadas tomando en cuenta el tipo de acceso adminsitrativo que los usuarios dentro de la organizacin deberan tener a su mquina. A travs del mdulo PAM denominado pam_console.so, algunas actividades normalmente reservadas solo para el usuario root, como ser reiniciar o montar medios removibles, son permitidas para el primer usuario que se registre en la consola fsica (para obtener mayor informacin acerca del mdulo pam_console.so, vaya a la Seccin 2.4, Mdulos de autenticacin conectables (PAM, por las iniciales en ingls de Pluggable Authentication Modules). Sin embargo, otras tareas importantes en el sistema, como ser modificar parmetros de red, configurar un nuevo ratn, o montar dispositivos de red, no ser posible realizarlas sin privilegios administrativos. Como resultado, los administradores del sistema deben decidir cunto acceso deben otorgarle a los usuarios de la red.
34
Controles administrativos
el acceso al nivel de ejecucin 1, o al modo de usuario nico, debera ser desactivado mediante una proteccin del gestor de arranque a travs de una contrasea (para obtener mayor informacin en este aspecto, vea la Seccin 2.1.2.2, Contraseas del gestor de arranque). Tabla 2.1, Mtodos para deshabilitar la cuenta root describe las formas en que un administrador puede asegurarse que no sean permitidos los ingresos como root: Mtodo Cambio del shell para root. Descripcin Edite el archivo /etc/ passwd y cambie la terminal de /bin/bash a /sbin/nologin. Efectos Previene acceso a la terminal root y registra cualquiera de tales intentos. Los siguientes programas estn prevenidos al intentar ingresar a la cuenta de usuario root: login gdm kdm xdm su ssh scp sftp Previene accesos a la cuenta root mediante la consola o la red. Los siguientes programas son prevenidos al intentar acceder a la cuenta root: login gdm kdm xdm Otros servicios de red que abran una tty No afecta Programas que no necesiten de una terminal, como por ejemplo, clientes FTP, clientes de correo, y muchos programas de tipo setuid. Los siguientes programas no estn prevenidos al intentar acceder a la cuenta root: sudo Clientes de FTP Clientes de correo
Deshabilitar Un archivo /etc/ el acceso securetty vaco root previene los intentos de mediante accesos root a cualquier cualquier dispositivo asociado con la dispositivo computadora. de consola (tty)
Programas que no se registran como root, pero que realizan tareas administrativas mediante programas de tipo setuid, o mediante otros mecanismos. Los siguientes programas no estn prevenidos al intentar acceder a la cuenta root: su sudo ssh scp sftp
Deshabilitacin el archivo /etc/ Edite de las ssh/sshd_config y opciones establezca el parmetro de PermitRootLogin en no. ingreso como root por SSH.
Prevenga el acceso root Esto slo previene el utilizando el conjunto de acceso root al conjunto de herramientas de OpenSSH. herramientas de OpenSSH. Los siguientes programas son prevenidos al intentar acceder a a cuenta root: ssh scp sftp
35
Descripcin Edite el archivo para el servicio en cuestin en el directorio /etc/pam.d/. Asegrese que el archivo pam_listfile.so sea requerido para 1 autenticacin.
Efectos Previene el acceso root a los servicios de red que son compatibles com PAM. Los siguientes servcicios son prevenidos al intentar acceder a la cuenta de root: Clientes de FTP Clientes de correo login gdm kdm xdm ssh scp sftp Cualquier servicio PAM
Para obtener ms detalles, dirjase a la Seccin 2.1.4.2.4, Deshabilitando root usando PAM.
Importante
Los programas que no necesitan acceso a la consola, como son por ejemplo los clientes de correo electrnico, o el comando sudo, pueden todava tener acceso a la cuenta root.
36
Controles administrativos
Advertencia
Un archivo /etc/securetty vaco no evita que el usuario root se registre remotamente en el sistema utilizando el conjunto de herramientas OpenSSH, ya que la consola no se inicia hasta luego de la autenticacin.
Para que estos cambios tengan efecto, el demonio SSH debe ser reiniciado. Esto puede realizarse mediante el siguiente comando:
kill -HUP `cat /var/run/sshd.pid`
Esto le indica a PAM que consulte el archivo /etc/vsftpd.ftpusers y que niegue el acceso al servicio al usuario listado. El administrador puede modificar el nombre en este archivo, y puede tener diferentes listas para cada servicio, o utilizar una lista principal para negar el acceso a mltiples servicios. Si el administrador quiere negar el acceso a mltiples servicios, una lnea similar puede ser aadida a los archivos de configuracin PAM, como por ejemplo, /etc/pam.d/pop y /etc/pam.d/imap para clientes e correo, o /etc/pam.d/ssh para clientes SSH. Para obtener mayor informacin acerca de PAM, vea la Seccin 2.4, Mdulos de autenticacin conectables (PAM, por las iniciales en ingls de Pluggable Authentication Modules).
37
2.1.4.3.1. El comando su
Cuando un usuario ejecuta el comando su, se le solicita la contrasea de root y, luego de la autenticacin, le es dado un indicador de consola. Una vez que se registra mediante el comando su, el usuario es el usuario root y tiene accesos 3 admisnitrativos absolutos en el sistema . Adems, una vez que el usuario se ha convertido en root, es posible la utilizacin del comando su para convertirse en cualquier otro usuario en el sistema sin que por eso se le pida ningn tipo de contrasea. Debido a la potencia de este programa, los administradores de una organizacin podran desear limitar a quines tienen acceso a este comando. Una de las maneras ms sencillas de hacer esto es aadiendo usuarios al grupo administrativo especial denominado wheel. Para hacerlo, ingrese el siguiente comando como usuario root:
usermod -G wheel <username>
En el comando anterior, reemplace <username> con el nombre del usuario que desee aadir al grupo wheel . Tambin puede utilizar de la siguiente manera el Administrador de usuarios para modificar las pertenencias a los grupos. Nota: necesita privilegios de administrador para realizar este procedimiento: 1. Haga clic en el men Sistema en el panel, apunte al men Administracin y luego haga clic en Usuarios y Grupos para mostrar el Aministrador de Usuarios. Alternativamente, teclee el comando system-config-users en un indicador de shell. Haga clic en la pestaa Usuarios y seleccione el usuario requerido de la lista de usuarios. Haga clic en Propiedades en la barra de herramientas para mostrar el cuadro de dilogo de las Propiedades del Usuario (o elija Propiedades en el men Archivo). Haga clic en la pestaa Grupos, seleccione la casilla para el grupo wheel, y luego haga clic en OK. Vea la Figura 2.2, Cmo agregar usuarios al grupo "wheel".. Abra el archivo de configuracin PAM para el comando su (/etc/pam.d/su) en un editor de textos, y elimine el comentario # de la siguiente lnea:
auth required /lib/security/$ISA/pam_wheel.so use_uid
2. 3. 4. 5.
Este cambio significa que solo miembros del grupo administrativo wheel pueden usar este programa.
Estos accesos an estn sujetos a las restricciones impuestas por SELinux, si es que se encuentra activo.
38
Controles administrativos
Nota
El usuario root es por defecto miembro del grupo wheel.
En el ejemplo anterior, <command> debera ser reemplazado por un comando que por lo general est reservado al usuario root, como ser por ejemplo, mount.
39
Importante
Los usuarios del comando sudo deberan tener mucho cuidado y cancelar esta herramienta antes de abandonar sus equipos, ya que en un perodo de tiempo de cinco minutos, los usuarios sudo pueden utilizar el comando nuevamente sin que por ello les sea pedida una contrasea. Esta configuracin puede modificarse desde el archivo de configuracin /etc/sudoers. El comando sudo permite un alto grado de flexibilidad. Por ejemplo, solo a los usuarios listados en el archivo de configuracin /etc/sudoers les es permitido utilizar el comando sudo, y el comando es ejecutado en la terminal del usuario, no en una consola de usuario root. Esto significa que la consola del usuario root puede ser completamente deshabilitada, como se indic en Seccin 2.1.4.2.1, Deshabilitando la cuenta shell de root. El comando sudo tambin ofrece un mtodo de control sencillo de comprender. Cada autenticacin exitosa es registrada en el archivo /var/log/messages, y el comando ingresado, junto con el nombre del usuario que lo ingres, se registran en el archivo /var/log/secure. Otra ventaja del comando sudo es que un administrador puede permitir a diferentes usuarios acceder a comandos especficos de acuerdo a sus necesidades. Los administradores que quieran editar /etc/sudoers, el archivo de configuracin del comando sudo, deberan utilizar el comando visudo. Para otrogarle a un usario todos los privilegios admisnitrativos, ingrese visudo, y agregue una lnea similar a la siguiente en la seccin de especificaciones de los privilegios del usuario:
juan ALL=(ALL) ALL
Este ejemplo indica que el usuario juan, puede utilizar el comando sudo desde cualquier equipo y ejecutar cualquier comando. El ejemplo que damos a continuacin ilustra pequeos detalles posibles al configurar sudo:
%users localhost=/sbin/shutdown -h now
Este ejemplo indica que cualquier usuario puede ejecutar el comando /sbin/shutdown -h now, siempre y cuando lo haga desde una consola. La pgina man del archivo sudoers contiene una lista detallada de opciones.
40
Nota
La amenaza que representa la debilidad de un bfer desbordado es mitigada en Fedora mediante la utilizacin de ExecShield, un programa de ejecucin de segmentacin de la memoria y proteccin de la tecnologa, con soporte para kernels de sistemas compatibles x86 de uno o ms procesadores. ExecShield reduce el riesgo de un desbordamiento del bfer al clasificar la memoria virtual en segmentos ejecutables y no ejecutables. Cualquier cdigo de programa que intente ejecutarse fuera de los segmentos ejecutables (como por ejemplo codigo maliciosos introducido desde un bfer desbordado que ha sido aprovechado), dispara una falla de segmentacin y finaliza. Execshield tambin ofrece soporte para las tencologas No ejecutar (NX, por las iniciales en ingls de No eXecute) de las plataformas AMD64, y para las tecnologas Deshabilitar ejecutar (XD, por las iniciales en ingls de eXecute Disable) de las las plataformas Itanium y sistemas Intel 64. Estas tecnologas trabajan junto a ExecShield para prevenir que sea ejecutado cdigo malicioso en la porcin ejecutable de la memoria virtual, con una precisin de 4KB de cdigo ejecutable, disminuyendo el riego de un ataque a la debilidad de un bfer desbordado.
Importante
Para limitar la exposicin a ataques en la red, todos los servicios que no son utilizados deben ser apagados.
41
Figura 2.3. Herramienta de Configuracin de Servicios Si no est seguro de los propsitos de un servicio particular, la Herrameinta de configuracin de servicios tiene un campo descriptivo, que se detalla en Figura 2.3, Herramienta de Configuracin de Servicios, y que ofrece informacin adicional. Verificar qu servicios de red se encuentran disponibles para iniciarse en el momento del arranque del sistema, es slo una parte de esta historia. Debera verificar tambin qu puertos estn abiertos y escuchando. Para ms informacin, vea la Seccin 2.2.8, Verificar qu puertos estn abiertos.
42
43
yppasswdd ypserv ypxfrd Mayor informacin acerca de cmo asegurar servicios de red puede encontrarse en la Seccin 2.2, Seguridad del servidor. La siguiente seccin discute las herramientas disponibles para crear un cortafuegos sencillo.
Importante
Debera configurar los servicios necesarios e implementar un cortafuegos antes de conectarse a Internet, o a cualquier otra red en la que usted no confe. Los cortafuegos previenen que los paquetes de red ingresen a la interfaz de red del sistema. Si una peticin es realizada a un puerto bloqueado por un cortafuegos, la peticin ser ignorada. Si un servicio est escuchando uno de estos puertos bloqueados, no recibe los paquetes y es efectivamente deshabilitado. Por esta razn, debe tenerse cuidado cuando se configure un cortafuegos para bloquear el acceso a puertos que no estn en uso, y se ponga atencin al proceso para que no sea bloqueado el acceso a puertos utilizados por otros servicios configurados. Para la mayora de los usuarios, la mejor herramienta para configurar un cortafuegos es la herramienta de configuracin grfica de cortafuegos que viene con Fedora: Firewall Configuration Tool (system-config-firewall). Esta herramienta genera reglas amplias de iptables para un cortafuegos de propsitos generales, utilizando una interfaz de panel de control. Para obtener mayor informacin acerca del uso de esta aplicacin y sus opciones disponibles, vea la Seccin 2.8.2, Configuracin bsica de un cortafuego. Para usuarios avanzados y administradores de servidores, es una mejor opcin la de configurar manualmente el cortafuegos utilizando iptables. Para obtener mayor informacin, vea la Seccin 2.8, Cortafuegos. Para una gua detallada de la utilizacin del comando iptables, vea la Seccin 2.9, IPTables.
44
Proteccin de Privacidad Gnu (GPG, por las iniciales en ingls de Gnu Privacy Guard) Una implementacin libre para proteger los datos de la aplicacin para encriptado PGP (por las iniciales en ingls de Pretty Good Privacy). OpenSSH es la forma ms segura de acceder a equipos remotos y reemplazar servicios antiguos y no encriptados como telnet y rsh. Open SSH ofrece un servicio de red llamado sshd y tres aplicaciones de cliente mediante la lnea de comandos: ssh Un cliente seguro para acceso a consola remota. scp Un comando de copia remota segura. sftp Un pseudo cliente ftp seguro que permite sesiones interactivas de transferencias de archivos. Vaya a la Seccin 3.6, Shell seguro (SSH, por las iniciales en ingls de Secure Shell) para obtener mayor informacin sobre OpenSSH.
Importante
Si bien el servicio sshd es en s mismo seguro, el servicio debe mantenerse actualizado para prevenir amenazas a la seguridad. Para obtener mayor informacin, vea la Seccin 1.5, Actualizaciones de seguridad. GPG es una manera de asegurar la privacidad en la comunicacin de correo. Puede ser utilizado tanto para enviar datos sensibles sobre las redes pblicas como para proteger datos sensibles en discos duros.
45
Nota
Es una buena idea utilizar reglas de cortafuego iptables junto con los encapsuladores TCP y xinetd, para generar redundancia dentro de los controles de acceso al servicio. Para obtener ms informacin acerca de la implementacin de cortafuegos con comandos iptable, vea la Seccin 2.8, Cortafuegos. Las siguientes subsecciones presuponen un conocimiento bsico de cada uno de los temas, y se concentran en opciones de seguridad especficas.
La ficha %c prove de una serie de informacin del cliente, como el nombre de usuario y el nombre de husped o el nombre de usuario y la direccin IP para hacerlo ms intimidante. Para que esta pancarta sea desplegada en todas la conexiones entrantes, hay que agregar la siguiente linea en el archivo/etc/hosts.allow:
vsftpd : ALL : banners /etc/banners/
46
La ficha %d prove el nombre del servicio al que el atacante est tratando de acceder. Para permitir una conexin y registrarla, use la directiva spawn en el archivo /etc/hosts.allow.
Nota
Ya que la directiva spawn ejecuta cualquier comando, es una buena idea crear un programa especial para notificar al administrador o ejecutar una cadena de comandos en el evento de un cliente en particular tratando de conectarse al servidor.
Esto usa la facilidad de registro por defecto authpriv, pero eleva la prioridad del valor por defecto info a emerg, lo cual escribe los mensajes de registro directamente a la consola.
47
Esto deniega cualquier intento de conexin a este puerto para ese equipo por 30 minutos. Otros valores aceptables para el atributo deny_time son FOREVER, el cual mantiene el veto en efecto hasta que xinetd es reiniciado y NEVER, el cual permite la conexin y la registra. Finalmente, la ltima linea debe ser:
disable = no
Esto habilita la trampa. Mientras que el uso de SENSOR es una buena idea para detectar y detener conexiones desde equipos indeseables, tiene dos caractersticas en contra: No funciona contra exploraciones sigilosas (stealth) Un atacante que sabe que un SENSOR esta corriendo puede montar un ataque de denegacin de servicio contra un servidor en particular al forjar su direccin IP y conectarse al puerto prohibido.
48
Asegurando Portmap
Nota
Asegurar portmap solo afecta a las implementaciones NFSv2 y NFSv3, ya que desde NFSv4 ya no es requerido. Si usted planea implementar un servidor NFSv2 o NFSv3, entonces portmap es requerido, y la siguiente seccin aplica. Si corre servicios RPC, obedezca estas reglas bsicas.
Nota
Dirjase a la Seccin 2.8, Cortafuegos para obtener mayor informacin acerca de implementar cortafuegos con comandos de iptables.
49
/usr/sbin/rpc.yppasswdd Tambin denominado servicio yppasswdd. Este demonio permite que los usuarios modifiquen sus contraseas NIS. /usr/sbin/rpc.ypxfrd Tambin denominado servicio ypxfrd. Este demonio es el responsable de las transferencias de mapas NIS sobre la red. /usr/sbin/yppush Esta aplicacin se encarga de distribuir las bases de datos NIS que han sido modificadas hacia diferentes servidores NIS. /usr/sbin/ypserv Este es el demonio del servidor NIS. De acuerdo a los estndares actuales, NIS est considerado como un mtodo inseguro. No tiene mecanismos de autenticacin y toda la informacin que transmite por la red viaja sin ser cifrada, incluyendo los hashes de las contraseas. Es por esto que hay que tomar todas las precauciones posibles cuando se configure una red que utilice NIS. Esto se complica an ms por el hecho que la configuracin establecida por defecto de NIS es en si misma insegura. Se recomienda a todo aquel que tenga intenciones de implementar un servidor NIS, que primero asegure el servicio portmap (como se puede observar en la Seccin 2.2.2, Asegurando Portmap), y que luego contine con los siguientes eventos, como la planificacin de la red.
2.2.3.2. Utilizacin de nombres de dominio y de equipo NIS, de modo similar a una contrasea
Cualquier equipo dentro de un dominio NIS puede utilizar comandos para obtener informacin del servidor sin tener que autenticarse, siempre y cuando el usuario conozca tanto el nombre del equipo del servidor DNS, como el nombre del dominio DNS. Por ejemplo, si alguien conecta una laptop en la red, o si irrumpe en ella desde el exterior (y se las ingenia para obtener una direccin IP interna), los siguientes comandos muestran el mapa de /etc/ passwd:
ypcat -d <NIS_domain> -h <DNS_hostname> passwd
Si el atacante es un usuario root, puede obtener el archivo /etc/shadow ingresando el siguiente comando:
ypcat -d <NIS_domain> -h <DNS_hostname> shadow
Nota
Si se utiliza Kerberos, el archivo /etc/shadow no se encuentra almacenado dentro de un mapa NIS.
50
Asegurando NIS
Para hacer ms complicado a los atacantes el acceso a los mapas NIS, genere una cadena aleatoria para el nombre del equipo DNS, como por ejemplo o7hfawtgmhwg.domain.com. De manera similar, genere aleatoriamente un nombre de dominio NIS distinto. Esto hace que para un atacante sea mucho ms dificil ingresar en el servidor NIS.
Advertencia
Nunca inicie un servidor NIS por vez primera sin haber antes creado el archivo / var/yp/securenets. Esta tcnica no ofrece proteccin contra ataques de simulacin de identidad, pero al menos establece lmites sobre las redes en las que el servidor NIS est funcionando.
Las siguientes reglas iptables pueden ser utilizadas para fortalecer la red que el servidor est escuchando con estos puertos:
iptables -A INPUT -p ALL -s! 192.168.0.0/24 iptables -A INPUT -p ALL -s! 192.168.0.0/24 --dport 834 -j DROP --dport 835 -j DROP
Esto significa que el servidor solo permite conexiones a los puertos 834 y 835, si es que la peticin proviene desde la red 192.168.0.0/24, y sin importar qu protocolo se est utilizando.
Nota
Dirjase a la Seccin 2.8, Cortafuegos para obtener mayor informacin acerca de implementar cortafuegos con comandos de iptables.
51
Por otro lado, la siguiente lnea en el archivo /etc/exports comparte el mismo directorio con el equipo juan.ejemplo.com, slo con permisos de lectura, y adems lo comparte con el mundo con permisos de lectura y de escritura, debido a un simple espacio en blanco dejado luego del nombre del equipo.
/tmp/nfs/ bob.example.com (rw)
52
Es una buena costumbre la de confirmar cualquier configuracin de elementos compartidos NFS, utilizar para ello el comando showmount y verificar qu es lo que est siendo compartido:
showmount -e <hostname>
53
Los administradores de sistemas deben ser cuidadosos al utilizar las siguientes opciones de configuracin (definidas en /etc/httpd/conf/httpd.conf): FollowSymLinks Esta directiva se encuentra activa por defecto, de modo que tenga cuidado al crear enlaces simblicos al documento raz del servidor Web. Por ejemplo, es una mala idea la de adjudicarle un enlace simblico a /. Indexes Esta directiva est activa por defecto, pero puede no ser deseada. Elimnela si quiere evitar que los visitantes puedan examinar los archivos del servidor. UserDir La directiva UserDir se encuentra deshabilitada por defecto, debido a que puede confirmar la presencia de una cuenta de usuario en el sistema. Para permitir que se examinen directorios de usuario en el servidor, utilice las siguientes directivas:
UserDir enabled UserDir disabled root
Estas directivas activan la posibilidad de analizar directorios de usuario para todos los directorios de usuarios que no sean /root/. Para aadir usuarios a la lista de las cuentas desactivadas, aada a esos usuarios en una lista separada por espacios en la lnea UserDir disabled.
Importante
No elimine la directiva IncludesNoExec. Por defecto, el mdulo Server-Side Includes (SSI) no puede ejecutar comandos. Se recomienda no cambiar estas configuraciones a no ser que sea absolutamente necesario, ya que potencialmente podra permitir que un atacante ejecute comandos en el sistema.
54
Asegurando FTP
En la directiva indicada recin, sustituya <insert_greeting_here> con el texto del mensaje de bienvenida. Para imgenes con varias lneas, lo mejor es utilizar un archivo de imagen. Para simplificar la administracin de mltiples imgenes, coloquelas a todas ellas en un nuevo directorio llamado /etc/ banners/. En nuestro ejemplo, el archivo de imagen para conexiones FTP es /etc/banners/ ftp.msg. A continuacin se puede observar cmo puede llegar a lucir un archivo con esstas caractersticas:
######### # Hello, all activity on ftp.example.com is logged. #########
Nota
No es necesario empezar cada lnea del archivo con 220, como se lo indica en la Seccin 2.2.1.1.1, Encapsuladores TCP y pancartas de conexin. Para tener una referencia de esta imagen de bienvenida en vsftpd, aada la siguiente directiva en el archivo /etc/vsftpd/vsftpd.conf:
banner_file=/etc/banners/ftp.msg
Tambin es posible enviar imgenes adicionales a conexiones entrantes utilizando encapsuladores TCP como se explica en la Seccin 2.2.1.1.1, Encapsuladores TCP y pancartas de conexin.
Advertencia
Si se habilita la posibilidad de acceso annimo a un servidor FTP, tenga cuidado de donde almacenar los datos importantes.
55
A continuacin, modifique los permisos de modo que los usuarios annimos no puedan conocer el contenido del directorio:
chmod 730 /var/ftp/pub/upload
Advertencia
Los administradores que permiten que usuarios annimos sean capaces de leer y de escribir sobre los directorios, a menudo se encuentran con que sus servidores se han convertido en repositorios de software robado. Adicionalmente, bajo vsftpd, aada la siguiente lnea en el archivo /etc/vsftpd/vsftpd.conf:
anon_upload_enable=YES
56
Asegurando Sendmail
Nota
Con NFSv4 utilizando Kerberos este no es el caso, ya que el mdulo del kernel SECRPC_GSS no utiliza autenticaciones basadas en UID. Sin embargo, todava hoy es considerada una buena costumbre la de no colocar el directorio mail spool en volmenes NFS compartidos.
57
Esta salida muestra que el sistema est ejecutando portmap debido a la presencia del servicio sunrpc. Sin embargo, existe adems un servicio misterioso en el puerto 834. Para verificar si el puerto est asociado con la lista oficial de servicios conocidos, ingrese:
cat /etc/services | grep 834
58
Este comando no devuelve ninguna informacin. Lo que est indicando es que si bien el puerto se encuentra dentro del rango reservado (es decir, entre 0 y 1023), y que no necesita privilegios de usuario root para abrirse, sin embargo no est asociado con ningn servicio conocido. A continuacin, verifique si existe informacin acerca del puerto utilizando netstat o lsof. Para verificar el puerto 834 utilizando netstat, ingrese el siguiente comando:
netstat -anp | grep 834
La presencia de un puerto abierto en netstat es un reaseguro, ya que si un atacante ha abierto un puerto en un sistema en el que no est autorizado a ingresar, seguramente no permitir que sea detectada su presencia mediante este comando. Adems, la opcin [p] revela el proceso ID (PID) del servicio que ha abierto el puerto. En este caso, el puerto abierto pertenece a ypbind (NIS), que es un servicio RPC administrado conjuntamente con el servicio portmap. El comando lsof muestra informacin similar a netstat, ya que tambin es capaz de enlazar puertos con servicios:
lsof -i | grep 834
Estas herramientas nos dicen mucho acerca del estado en que se encuentran los servicios en ejecucin de una mquina. Estas herramientas son flexibles y pueden ofrecer una importante cantidad de informacin acerca de los servicios de red y sus configuraciones. Para obtener ms informacuin, vea las pginas man de lsof, netstat, nmap, y services.
2.3. Identificacin nica (SSO, por las iniciales en ingls de Single Sign-on)
2.3.1. Introduccin
La funcionalidad de SSO de Fedora reduce el nmero de veces que los usuarios de escritorio de Fedora deben ingresar sus contraseas. Varias de las aplicaciones ms importantes utilizan los mismos mecanismos subyacentes de autenticacin y autorizacin, de modo que los usuarios pueden identificarse desde la pantalla de registro en Fedora y luego no necesitar reingresar sus contraseas. Estas aplicaciones se describen ms abajo. Adems, los usuarios pueden registrarse en sus mquinas an cuando no exista una red (modo desconexin), o cuando la conectividad no sea confiable, como por ejemplo, los accesos inalmbricos. En este ltimo caso, los servicios sern notablemente disminuidos.
59
60
Unifica Kerberos y NSS de modo que los usuarios que se registren en el sistema operativo utilizando una tarjeta inteligente, tambin puedan obtener credenciales de Kerberos (lo que les permite registrarse en los servidores, etc.)
Nota
Esta seccin ofrece una explicacin general para poder empezar a utilizar su tarjeta inteligente. Informacin ms especfica puede encontrarse en la Gua del Cliente del Cliente de Seguridad Empresarial del Sistema de Certificado de Red Hat. 1. 2. 3. Ingrese con su nombre de usuario y contrasea Kerberos. Asegrese de tener instalado el paquete nss-tools. Descargue e instale sus certificados corporativos especficos de usuario root. Utilice el siguiente comando para instalar el certificado root CA:
certutil -A -d /etc/pki/nssdb -n "root ca cert" -t "CT,C,C" -i ./ ca_cert_in_base64_format.crt
4. 5.
Verifique que tenga los siguientes RPMs instalados en su sistema: esc, pam_pkcs11, coolkey, ifdegate, ccid, gdm, authconfig, and authconfig-gtk. Habilite el soporte de ingreso por Tarjeta Inteligente. a. b. c. d. e. En la barra de men superior de Gnome, elija Sistema->Administracin->Autenticacin. Si es necesario, ingrese la contrasea de usuario root de su equipo. En el dilogo de configuracin de autenticacin, haga clic sobre la pestaa Autenticacin. Tilde la casilla Activar soporte para tarjeta inteligente. Haga clic en el botn Configurar tarjeta inteligente... para ver el dilogo de configuracin de Smartcard, e indique las opciones requeridas: Requiere tarjeta inteligente para ingresar Destilde esta casilla. Luego de haberse ingresado exitosamente en su sistema con la tarjeta inteligente puede elegir esta opcin para prevenir que otros usuarios ingresen a l sin una tarjeta inteligente. Accin de Retiro de Tarjeta Esto controla qu es lo que sucede cuando usted retire la tarjeta luego de haberse registrado. Las opciones disponibles son: Bloquear Si se retira la tarjeta se bloquea la pantalla X. Ignorar No sucede nada cuando se retira la tarjeta.
61
6.
Si necesita activar el Certificado de Estado de Protocolo Online (OCSP, por las siglas en ingls de Online Certificate Status Protocol), abra el archivo /etc/pam_pkcs11/pam_pkcs11.conf y ubique la siguiente lnea: enable_ocsp = false; Modifique su valor a "true", del siguiente modo: enable_ocsp = true;
7. 8.
Enrole su tarjeta inteligente. Si adems est utilizando una tarjeta CAC, tendr que realizar los siguientes pasos: a. b. Convirtase en usuario root y genere un archivo llamado /etc/pam_pkcs11/cn_map. Aada la siguiente entrada al archivo cn_map: MY.CAC_CN.123454 -> myloginid donde MY.CAC_CN.123454 es el nombre comn en su CAC y myloginid es su ID de logueo UNIX.
9.
Salida
Si ejecuta la herramienta pklogin_finder en modo de depuracin, mientras una tarjeta inteligente registrada se encuentre conectada, intentar mostrar informacin acerca de los certificados vlidos, y si tiene xito, intentar mapear un ID de registro desde los certificados que existan en la tarjeta.
62
63
Nota
No puede registrarse con una tarjeta que no haya sido inscripta, ni siquiera aunque haya sido formateada. Necesita registrarse con una tarjeta formateada e inscripta, o no utilizar ninguna que no haya sido inscripta. Para obtener mayor informacin acerca de Kerberos y PAM, vea la Seccin 2.6, Kerberos y Seccin 2.4, Mdulos de autenticacin conectables (PAM, por las iniciales en ingls de Pluggable Authentication Modules).
64
3. Haga un doble clic en la entrada network.negotiate-auth.trusted-uris para mostrar el cuadro de dilogo Ingrese valor de cadena. 4. Ingrese el nombre del dominio en el cual desea autenticarse, por ejemplo, .ejemplo.com. 5. Repita el procedimiento recin descrito para la entrada network.negotiate-auth.delegation-uris, utilizando el mismo dominio.
Nota
Puede dejar este valor vaco, ya que permite a Kerberos enviar tickets, lo que no es necesario. Si no puede ver estas dos opciones de configuracin listadas, tal vez la versin de Firefox que est utilizando sea demasiado antigua para soportar negociados de autenticacin, y debera considerar actualizarla.
Figura 2.6. Configurar Firefox para SSO con Kerberos Necesita asegurarse de poseer tickets Kerberos. En una terminal, ingrese kinit para obtenerlos. Para mostrar la lista de los tickets disponibles, ingrese klist. A continuacin se muestra un ejemplo del resultado de estos comandos:
[user@host ~] $ kinit Password for user@EXAMPLE.COM: [user@host ~] $ klist Ticket cache: FILE:/tmp/krb5cc_10920 Default principal: user@EXAMPLE.COM Valid starting Expires Service principal 10/26/06 23:47:54 10/27/06 09:47:54 krbtgt/USER.COM@USER.COM renew until 10/26/06 23:47:54 Kerberos 4 ticket cache: /tmp/tkt10920 klist: You have no tickets cached
65
3. Reinicie Firefox desde esa terminal, y visite el sitio web al que no poda autenticarse anteriormente. La informacin ser registrada en /tmp/moz.log, y podra darle alguna pista hacerca del problema. Por ejemplo:
-1208550944[90039d0]: entering nsNegotiateAuth::GetNextToken() -1208550944[90039d0]: gss_init_sec_context() failed: Miscellaneous failure No credentials cache found
Esto significa que usted no tiene tickets Kerberos, y que necesita ejecutar el comando kinit. Si puede ejecutar kinit exitosamente desde su mquina pero no puede autenticarse, debera ver algo similar a lo siguiente en el archivo log:
-1208994096[8d683d8]: entering nsAuthGSSAPI::GetNextToken() -1208994096[8d683d8]: gss_init_sec_context() failed: Miscellaneous failure Server not found in Kerberos database
Generalmente esto significa que existe un problema de configuracin de Kerberos. Asegrese de tener las entradas correctas en la seccin [domain_realm] del archivo /etc/krb5.conf. Por ejemplo:
.example.com = EXAMPLE.COM example.com = EXAMPLE.COM
Si no aparece nada en el archivo de registro, es posible que usted se encuentre detrs de un proxy, y que ese proxy est eliminando los encabezados HTTP necesarios para negociar la autenticacin. Una posible solucin a esto es intentar conectarse al servidor utilizando HTTPS, que permite a las peticiones atravesar el proxy sin modificarlas. Luego proceda a depurar utilizando el archivo de registro, como se ha explicado antes.
2.4. Mdulos de autenticacin conectables (PAM, por las iniciales en ingls de Pluggable Authentication Modules)
Los programas que permiten el acceso del usuario a un sistema utilizan una autenticacin para verificar la identidad de cada uno (es decir, para establecer que el usuario es quien dice ser). Histricamente, cada programa tena su propia forma de autenticar los usuarios. En Fedora, muchos programas se configuran para usar el mecanismo de autenticacin centralizado llamado Mdulos de Autenticacin Conectables (PAM).
66
Ventajas de PAM
PAM usa una arquitectura modular, con complementos, que le da al administrador del sistema un buen grado de flexibilidad en la configuracin de las polticas de autenticacin para el sistema. En la mayora de las situaciones, la configuracin establecida por defecto del archivo PAM ser suficiente para una aplicacin que tenga soporte de PAM. Sin embargo, algunas veces, es necesario editar un archivo de configuracin de PAM. Dado que una configuracin errnea de PAM puede llegar a poner en riesgo la seguridad del sistema, es importante comprender la estructura de estos archivos antes de realizar cualquier tipo de modificacin. Para obtener ms informacin, dirjase a la Seccin 2.4.3, Formato del archivo de configuracin de PAM.
67
account Esta interfaz de mdulo verifica que el acceso est permitido. Por ejemplo, puede chequear si una cuenta a vencido o si un usuario puede ingresar en una hora particular del da. password Esta interfaz de mdulo se usa para cambiar contraseas del usuario. session Esta interfaz de mdulo configura y administra sesiones del usuario. Los mdulos con esta interfaz pueden tambin realizar las tareas adicionales que sean necesarias para permitir accesos, tales como el montaje del directorio personal del usuario y hacer que su casilla de correo se encuentre disponible.
Nota
Un mdulo individual puede proveer cualquiera o todas las interfases de mdulo. Por ejemplo pam_unix.so provee las cuatro interfaces de mdulo. En un archivo de configuracin PAM, la interfaz de mdulo es el primer campo definido. Por ejemplo, una lnea tpica en una configuracin puede verse como sigue:
auth required pam_unix.so
Esto instruye a PAM para que utilice la interfaz auth del mdulo pam_unix.so.
La primera lnea es un comentario y no se procesa. auth sufficient pam_rootok.so Esta lnea usa el mdulo pam_rootok.so para verificaar si el usuario actual es root, confirmandoo que su UID sea 0. Si esto tiene xito, no se consulta ningn otro mdulo y el comando se ejecuta. Si esto falla, se consulta el mdulo siguiente. auth required pam_console.so Esta lnea utiliza el mdulo pam_console.so para intentar autenticar al usuario. Si este usuario ya se encuentra dentro de la consola, pam_console.so verifica si dentro del directorio /etc/security/console.apps/ hay un archivo con el mismo nombre que el del servicio (reboot). Si existe ese archivo, la autenticacin es existosa y el control es pasado al siguiente mdulo. #auth include system-auth Esta lnea es comentada y no se procesa.
68
account required pam_permit.so Esta lnea usa el mdulo pam_permit.so para permitir al usuario root o cualquier otro que haya ingresado en la consola reiniciar el sistema.
Importante
El orden en el que los mdulos required se llaman no es crtico. Slo las banderas sufficient y requisite hacen que el orden se haga importante. Existe disponible ra PAM una nueva sintaxis de bandera de control, que permite un control ms preciso. La pgina man pam.d, y la documentacin de PAM, ubicada en el directorio /usr/share/doc/ pam-<version-number>/ (donde <version-number> es el nmero de versin PAM en su sistema), explica esta nueva sintaxis en detalle.
69
Los argumentos invlidos generalmente son ignorados y de esta manera no afectan ni el xito ni el fracaso del mdulo PAM. Algunos mdulos, sin embargo, pueden fracasar con argumentos invlidos. La mayora de los mdulos reportan sus errores en el archivo /var/log/secure.
La primera lnea es un comentario, indicado por el numeral (#) al comienzo de la lnea. Las lneas 2 a la 4 apila tres mdulos para la autenticacin de ingreso. auth required pam_securetty.so Este mdulo asegura que si el usuario intenta ingresar como root, el tty donde el usuario est ingresando debe estar listado en el archivo /etc/ securetty, si ese archivo existe. Si el tty no est listado en el archivo, cualquier intento de loguearse como usuario root ser errneo con el siguiente mensaje: Login incorrect. auth required pam_unix.so nullok Este mdulo pide una contrasea al usuario, que luego confirma utilizando la informacin almacenada en /etc/passwd, y /etc/shadow, si es que existe. El argumento nullok le indica al mdulo pam_unix.so que permita el ingreso de una contrasea vaca. auth required pam_nologin.so Este es el ltimo momento de la autenticacin. Confirma que exista y en qu lugar, el archivo /etc/nologin. Si existe, pero el usuario no es root, la autenticacin falla.
70
Nota
En este ejemplo, los tres mdulos auth se encuentran verificados, an si fall el primer mdulo auth. Esto evita que los usuarios conozcan el momento exacto en que su autenticacin fall. En manos de un atacante, el conocimiento de ese dato podra permitirle deducir ms fcilmente cmo vulnerar el sistema. account required pam_unix.so Este mdulo realiza cualquier tipo de verificacin de cuenta que sea necesario. Por ejemplo, si se ha activado el enmascaramiento de contraseas, la interfaz de la cuenta del mdulo pam_unix.so verifica que la cuenta no haya expirado, o que el usuario no haya modificado la contrasea dentro del perodo permitido. password required pam_cracklib.so retry=3 Si una contrasea ha expirado, el componente contrasea del mdulo pam_cracklib.so solicita una nueva. En seguida confirma que la nueva contrasea pueda o no ser fcilmente revelada por un programa de obtencin de contraseas basado en diccionarios. El argumento retry=3 indica que si esta prueba falla la primera vez, el usuario tiene dos oportunidades ms para crear una contrasea ms poderosa. password required pam_unix.so shadow nullok use_authtok Esta lnea indica que si el programa modifica la contrasea del usuario, debera utilizar para ello la interfaz password del mdulo pam_unix.so. El argumento shadow le indica al mdulo la creacin de contraseas ocultas cada vez que actualice la contrasea del usuario. El argumento nullok le indica al mdulo que le permita al usuario modificar su contrasea desde una contrasea en blanco. De lo contrario, una contrasea vaca ser tratada como un bloqueo de cuenta. El argumento final de esta lnea, use_authtok, ofrece un buen ejemplo de la importancia que tiene el orden en que se "apilen" los modulos PAM. Este argumento le indica al mdulo que no le solicite al usuario una nueva contrasea, y que en su lugar acepte cualquier contrasea que haya sido almacenada por un mdulo anterior. De esta manera, todas las nuevas contraseas deben pasar la prueba de pam_cracklib.so para confirmar que sean seguras antes de ser aceptadas session required pam_unix.so La lnea final le indica a la interfaz de sesin del mdulo pam_unix.so que administre la sesin. Este mdulo registra el nombre de usuario y el tipo de servicio en /var/log/secure al comienzo y al final de cada sesin. Este mdulo puede ser suplementado si se lo "apila" con otros mdulos de sesin y poder as agregarle funcionalidades.
71
Esto permite a los desarrolladores y a los administradores de sistema mezclar, y al mismo tiempo verificar, diferentes mtodos de autenticacin para diferentes programas sin necesidad de recompilarlos. Se ha incluido documentacin para escribir mdulos en el directorio /usr/share/doc/ pam-<version-number>/, donde <version-number> es el nmero de versin PAM de su sistema.
Figura 2.8. Dilogo de olvidar autenticacin Con respecto al archivo de registro de tiempo de PAM, debe prestarle atencin a lo siguiente:
72
Si ha ingresado en el sistema remotamente, utilizando el comando ssh, utilice el comando /sbin/ pam_timestamp_check -k root para destruir el archivo de registro de tiempo. Ser necesario que ejecute el comando /sbin/pam_timestamp_check -k root desde la misma ventana de la terminal desde la que inici la aplicacin con este privilegio. Debe estar registrado como el usuario que originalmente invoc el mdulo pam_timestamp.so, de modo de poder utilizar el comando /sbin/pam_timestamp_check -k. No se registre como usuario root para utilizarlo. Si quiere abandonar las credenciales en el escritorio (sin utilizar la accin Olvidar Autenticacin del cono), utilice el siguiente comando:
/sbin/pam_timestamp_check -k root </dev/null >/dev/null 2>/dev/null
Una falla al utilizar este comando har que solo sean eliminadas las credenciales (en el caso que las hubiera) del pty desde donde ejecut el comando. Consulte la pgina man pam_timestamp_check para obtener ms informacin acerca del uso de pam_timestamp_check para destruir el archivo de registro de tiempo.
73
Esta instalacin permite al usuario local manipular estos dispositivos sin obtener el acceso de root, por lo que se simplifican las tareas comunes para el usuario de consola. Puede modificar la lista de dispositivos controlados por pam_console.so editando los siguientes archivos: /etc/security/console.perms /etc/security/console.perms.d/50-default.perms Puede cambiar los permisos de los otros dispositivos diferentes, adems de los que se han mostrado antes, o modificar los especificados por defecto. En lugar de modificar el archivo 50default.perms, debera crear uno nuevo (por ejemplo xx-name.perms) y luego ingresar las modificaciones requeridas. El nombre del nuevo archivo modelo debe comenzar con un nmero superior a 50 (por ejemplo 51-default.perms). Esto va a sustituir lo indicado en el archivo 50default.perms.
Advertencia
Si el archivo de configuracin del administrador de gdm, kdm, o xdm ha sido alterado de manera tal que permita que usuarios remotos puedan ingresar y si el equipo est configurado para ejecutarse en el nivel de ejecucin 5, es aconsejable modificar las directivas <console> y <xconsole>del archivo /etc/security/ console.perms con los siguientes valores:
<console>=tty[0-9][0-9]* vc/[0-9][0-9]* :0\.[0-9] :0 <xconsole>=:0\.[0-9] :
Esto evita que los usuarios ganen acceso a dispositivos y aplicaciones restringidas en la mquina. Si el archivo de configuracin del administrador de gdm, kdm, o xdm ha sido modificado de modo que permita que usuarios remotos puedan ingresar, y si el equipo est configurado para ejecutarse en cualquier nivel de ejecucin multiusuario adems del nivel de ejecucin 5, es aconsejable eliminar completamente la directiva <xconsole>, al mismo tiempo que modificar la directiva <console> con el valor siguiente:
<console>=tty[0-9][0-9]* vc/[0-9][0-9]*
74
Recursos adicionales
/sbin/halt /sbin/reboot /sbin/poweroff Debido a que estas aplicaciones utilizan PAM, llaman al mdulo pam_console.so como un requisito para usarlas. Dirjase a la Seccin 2.8.9.1, Documentacin instalada del cortafuego para obtener mayor informacin.
75
Nota
La documentacin en el sitio web de arriba es para la ltima versin de desarrollo lanzada de PAM y puede no ser 100% precisa para la versin de PAM incluida en Fedora.
76
Encapsuladores TCP
Figura 2.9. Control de acceso a servicios de red El siguiente captulo se concentra en el papel que tienen de los encapsuladores TCP y xinetd al controlar acceso a los servicios de red, y analiza de qu manera estas herramientas pueden ser utilizadas para mejorar tanto el registro como la administracin de su utilizacin. Para obtener mayor informacin utilizando cortafuegos con iptables, vea la Seccin 2.9, IPTables.
77
Adems del control de acceso y registro, los encapsuladores TCP pueden ejecutar comandos para interactuar con el cliente antes que sea negado el control de la conexin, o antes de abandonar el proceso de conexin al servicio de red solicitado. Debido a que los encapsuladores TCP son un valioso agregado al equipo de herramientas de seguridad que cualquier administrador de servidor posee, muchos servicios de red dentro de Fedora se encuentran enlazados con la biblioteca libwrap.a. Algunas de estas aplicaciones son /usr/ sbin/sshd, /usr/sbin/sendmail, y /usr/sbin/xinetd.
Nota
Para determinar si un servicio de red ejecutable est enlazado con libwrap.a, ingrese el siguiente comando como usuario root:
ldd <binary-name> | grep libwrap
Reemplace <binary-name> con el nombre del servicio de red ejecutable. Si el comando no le devuelve ninguna informacin, entonces el servicio de red no se encuentra enlazado con libwrap.a. El siguiente ejemplo inidica que /usr/sbin/sshd se encuentra enlazado con libwrap.a:
[root@myServer ~]# ldd /usr/sbin/sshd | grep libwrap libwrap.so.0 => /lib/libwrap.so.0 (0x00655000) [root@myServer ~]#
78
Cuando un servicio encapsulado por TCP recibe una peticin de un cliente, realiza los siguientes pasos: 1. Consulta con /etc/hosts.allow. El servicio encapsulado por TCP analiza secuencialmente el archivo /etc/hosts.allow y aplica la primera regla especificada para ese servicio. Si encuentra una regla concordante, permite la conexin. Si no, avanza al siguiente paso. 2. Consulta con /etc/hosts.deny. El servicio encapsulado por TCP analiza secuencialmente el archivo /etc/hosts.deny. Si encuentra una regla concordante, niega la conexin. Si no, permite el acceso al servicio. Las siguientes son cuestiones importantes para considerar cuando se utilice encapsuladores TCP para proteger servicios de red: Debido a que primero se aplican las reglas de acceso contenidas en hosts.allow, dejan un precedente sobre las reglas especificadas en hosts.deny. De este modo, si el acceso a un servicio es permitido en hosts.allow, ser ignorada una regla negando el acceso al mismo servicio del archivo hosts.deny. Las reglas de cada archivo son ledas desde arriba hacia abajo, y la primera regla concordante para un servicio dado es la nica que ser aplicada. El orden de las reglas es extremadamente importante. Si no se encuentran reglas para el servicio en el archivo, o el archivo no existe, el acceso al servicio es permitido. Los servicios encapsulados por TCP no conservan las reglas desde los archivos de acceso de los equipos, de modo que cualquier cambio en hosts.allow o hosts.deny, tienen efecto inmediato, sin necesidad de reiniciar los servicios de red.
Advertencia
Si la ltima lnea del archivo de acceso de un equipo no es un caracter de tipo nueva lnea (creado al presionar la tecla Enter key), la ltima regla del archivo fallar y un error ser registrado o bien en /var/log/messages, o bien en /var/ log/secure. Este es el mismo caso de una regla que abarca lneas mltiples sin utilizar el carcater de lnea invertida. El siguiente ejemplo muestra la seccin que nos interesa del fracaso de una regla debido a alguna de las circunstancias recin descritas:
warning: /etc/hosts.allow, line 20: missing newline or line too long
79
<daemon list> Una lista separada por comas de nombres de procesos (y no el nombre de los servicios), o el comodn ALL. La lista del demonio tambin acepta operadores (vea la Seccin 2.5.2.1.4, Operadores) para permitir mayor flexibilidad. <client list> Una lista separada por comas de nombres de equipos, direcciones IP de los equipos, patrones especiales o comodines que identifican a los equipos afectados por la regla. La lista de cliente tambin acepta los operadores mostrados en la Seccin 2.5.2.1.4, Operadores para permitir mayor flexibilidad. <option> Una accin, o una lista de acciones optativas separadas por puntos y comas (;), a realizarse cuando la regla sea disparada. Los campos de opcin tienen soporte para expansiones, comandos de apertura de terminales, permitir o negar acceso, y modificar la conducta de registro.
Nota
Puede encontrarse mayor informacin acerca de los trminos recin vistos en otras partes de esta Gua: Seccin 2.5.2.1.1, Comodines Seccin 2.5.2.1.2, Patrones Seccin 2.5.2.2.4, Expansiones Seccin 2.5.2.2, Campos de opcin A continuacin se muestra el ejemplo de una regla bsica de acceso de equipos:
vsftpd : .example.com
Esta regla est indicando a los encapsuladores TCP que observen las conexiones del demonio FTP (vsftpd) desde cualquier equipo en el dominio ejemplo.com. Si esta regla aparece en hosts.allow, la conexin es aceptada. Si esta regla figura en hosts.deny, la conexin es negada. El siguiente ejemplo de regla de acceso de equipos es ms compleja y utiliza dos campos de opciones:
sshd : .example.com \ : spawn /bin/echo `/bin/date` access denied>>/var/log/sshd.log \ : deny
Fjese que cada campo de opcin es precedido por la barra invertida (\). La utilizacin de esta barra previene el fallo de la regla debido a su longitud. Esta regla de ejemplo establece que si se intenta establecer una conexin con el demonio SSH (sshd) desde algn equipo del dominio ejemplo.com, sea ejecutado el comando echo para aadir dicho intento en un archivo especial de registro, y negar la conexin. Debido a que la directiva opcional deny es utilizada, esta lnea niega el acceso an si figura en el archivo hosts.allow. Para conocer en detalle otras opciones disponibles, vea la Seccin 2.5.2.2, Campos de opcin.
2.5.2.1.1. Comodines
Los comodines le permiten a los encapsuladores TCP poder corresponderse ms fcilmente con grupos de demonios de equipos. Son ms frecuentemente utilizados en el campo lista de cliente de las reglas de acceso.
80
Los siguientes comodines estn disponibles: ALL Se corresponde con todo. Puede ser utilizado tanto para la lista del demonio como con la lista del cliente. LOCAL Se corresponde con cualquier equipo que no contenga un punto (.), como por ejemplo el equipo local. KNOWN Se corresponde con cualquier equipo cuyo nombre y la direccin sean conocidas o donde el usuario sea conocido. UNKNOWN Se corresponde con cualquier equipo cuyo nombre o direccin sean desconocidos, o donde el usuario sea desconocido. PARANOID Se corresponde con cualquier equipo cuyo nombre no concuerde con su direccin.
Importante
Los comodines KNOWN, UNKNOWN, y PARANOID deben ser utilizados con cuidado, ya que dependen del servidor DNS que se est utilizando para su operacin correcta. Cualquier interrupcin de la resolucin de nombres podra causar que se les niegue acceso al servicio a los usuarios legtimos.
2.5.2.1.2. Patrones
Pueden utilizarse patrones en el campo cliente de las reglas de acceso para especificar grupos de equipos de clientes en forma ms precisa. A continuacin mostramos una lista con patrones comunes para entradas en el campo cliente: Nombre de equipo empezando con un punto (.) Colocar un punto al comienzo del nombre de un equipo hace que se correspondan todos los equipos que comparten los componentes del nombre en la lista. El siguiente ejemplo se aplica a cualquier equipo dentro del dominio ejemplo.com:
ALL : .example.com
Direccin IP que finaliza con un punto (.) Colocar un punto al finalizar una direccin IP hace que se correspondan todos los equipos que comparten los grupos numricos iniciales de una direccin IP. El siguiente ejemplo se aplica a cualquier equipo dentro de la red 192.168.x.x:
ALL : 192.168.
Direccin IP/par de mscara de red Las expresiones de mscaras de red tambin pueden utilizarse como un patrn para controlar el acceso de un grupo determinado de direcciones IP. El siguiente ejemplo se aplica a cualquier equipo con un rango de direcciones desde 192.168.0.0 hasta 192.168.1.255:
ALL : 192.168.0.0/255.255.254.0
81
Importante
Cuando se est trabajando en el espacio de direcciones IPv4, la longitud del par direccin/prefijo (prefixlen) en las declaraciones (notacin CIDR) no estn soportadas. Solo las reglas IPv6 pueden utilizar este formato. [direcciones IPv6]/par prefixlen los pares [red]/prefixlen tambin pueden ser utilizados como un patrn para controlar el acceso de un grupo determinado de direcciones IPv6. El siguiente ejemplo se aplica a cualquier equipo en un rango de 3ffe:505:2:1:: hasta 3ffe:505:2:1:ffff:ffff:ffff:ffff:
ALL : [3ffe:505:2:1::]/64
El asterisco (*) Los asteriscos pueden ser utilizados para hacer concordar grupos enteros de nombres de equipos o direcciones IP, siempre y cuando no estn mezclados en listas de clientes que contengan otro tipo de patrones. El siguiente ejemplo se puede aplicar a cualquier equipo dentro del dominio ejemplo.com:
ALL : *.example.com
La barra (/) Si una lista de cliente comienza con una barra, ser tratada como un nombre de archivo. Esto es til si se necesitan reglas especificando grandes cantidades de equipos. El siguiente ejemplo referencia encapsuladores TCP al archivo /etc/telnet.hosts para todas las conexiones Telnet.
in.telnetd : /etc/telnet.hosts
Existen otros patrones menos utilizados que tambin aceptan los encapsuladores TCP. Para obtener mayor informacin, vea la pgina man 5 de hosts_access.
Advertencia
Sea muy cuidadoso al utilizar nombres de equipos y de dominios. Los atacantes pueden utilizar una gran variedad de trucos para sortear dificultades y obtener resoluciones de nombres adecuadas. Adems, la interrupcin del servicio DNS impide la utilizacin de los servicios de red incluso a los usuarios autorizados. De modo que, lo mejor es utilizar direcciones IP siempre que sea posible.
82
Servicios muy utilizados, como NIS o NFS, dependen de portmap para funcionar, de modo que tenga en cuenta estas limitaciones.
2.5.2.1.4. Operadores
Hoy en da, las reglas de control de acceso aceptan un operador, EXCEPT. Puede ser utilizado tanto en la lista de demonio como en la lista cliente de una regla. El operador EXCEPT permite excepciones especficas para ampliar las correspondencias dentro de una misma regla. En el siguiente ejemplo de un archivo hosts.allow, todos los equipos ejemplo.com tienen permitido conectarse a todos los servicios, exepcto cracker.ejemplo.com:
ALL: .example.com EXCEPT cracker.example.com
En otro ejemplo de un archivo hosts.allow, los clientes de la red 192.168.0.x pueden utilizar todos los servicios con excepcin de FTP:
ALL EXCEPT vsftpd: 192.168.0.
Nota
En trminos de organizacin, generalmente es ms sencillo evitar la utilizacin de operadores EXCEPT. Esto permite que otros administradores analicen rpidamente los archivos apropiados para ver a qu equipos se les permite o se les niega el acceso a los servicios, sin tener que organizar los operadores EXCEPT.
2.5.2.2.1. Registro
Los campos de opcin permiten que los administradores modifiquen fcilmente la herramienta de registro y el nivel de prioridad para una regla, utilizando la directiva severity. En el siguiente ejemplo, las conexiones con el demonio SSH desde cualquier equipo del dominio ejemplo.com son registradas en la herramienta authpriv syslog establecida por defecto (debido a que ningn valor de la herramienta es especificado) con una prioridad de emerg:
sshd : .example.com : severity emerg
Es tambin posible especificar una herramienta utilizando la opcin severity. El siguiente ejemplo registra cualquier intento de conexin SSH realizada por equipos del dominio ejemplo.com a la herramienta local0, con una prioridad de alert:
83
Nota
En la prctica, este ejemplo no funciona hasta que el demonio syslog (syslogd) sea configurado para registrarse en la herramienta local0. Para obtener mayor informacin acerca de cmo configurar herramientas de registro establecidas por defecto, vea la pgina man de syslog.conf.
Al permitir control de acceso sobre un fundamento de reglas, el campo de opcin permite que los administradores consoliden todas los reglas de acceso en un solo archivo: o bien hosts.allow, o bien hosts.deny. Algunos administradores consideran a esto como una forma sencilla de organizar las reglas de acceso.
twist Reemplaza el servicio solicitado con el comando indicado. Esta directiva es a menudo utilizada para establecer trampas a los intrusos (tambin denominadas "tacitas de miel"). Puede tambin ser utilizada para enviar mensajes a los clientes que estn conectndose. La directiva twist debe tener lugar al final de la lnea de la regla. En el ejemplo siguiente, a los clientes que intentan acceder a los servicios FTP desde el dominio ejemplo.com, se les enva un mensaje utilizando el comando echo.
vsftpd : .example.com \
84
: twist /bin/echo "421 This domain has been black-listed. Access denied!"
Para obtener mayor informacin acerca de las opciones de comandos de terminal, vea la pgina man de hosts_options.
2.5.2.2.4. Expansiones
Cuando se utilizan junto a las directivas spawn y twist, las expansiones proveen informacin acerca del cliente, servidor, y los procesos involucrados. La siguiente es una lista de expansiones soportadas: %a Informa la direccin IP del cliente. %A Informa la direccin IP del servidor. %c Informa una gran cantidad de datos del cliente, como ser por ejemplo, el nombre de usuario y el nombre del equipo, o el nombre de usuario y la direccin IP. %d Informa el nombre del demonio encargado del proceso. %h Informa el nombre del equipo del cliente (o la direccin IP, si es que el nombre del equipo no est disponible). %H Informa el nombre del equipo del servidor (o su direccin IP, en caso que el nombre no est disponible). %n Informa el nombre del equipo cliente. Si no est disponible, se muestra unknown. Si el nombre del equipo y la direccin del cliente no concuerdan, se muestra paranoid. %N Informa el nombre del equipo del servidor. Si no est disponible, se muestra unknown. Si el nombre del equipo del servidor y la direccin no concuerdan, se muestra paranoid. %p Informa el ID del proceso del demonio. %s Informa diferentes tipos de datos acerca del servidor, como ser por ejemplo, si el proceso del demonio y la direccin del equipo o direccin IP del servidor. %u Informa el nombre de usuario del cliente. Si no est disponible, se muestra unknown. La siguiente regla de ejemplo utiliza una expansin junto con el comando spawn para identificar el equipo del cliente en un archivo de registro modificado. Cuando se intenten establecer conexiones al demonio SSH (sshd) desde un equipo del dominio ejemplo.com, ejecute el comando echo para registrar el intento en un archivo especial, incluyendo el nombre del cliente (utilizando la expancin %h).
sshd : .example.com \ : spawn /bin/echo `/bin/date` access denied to %h>>/var/log/sshd.log \ : deny
De manera similar, las expansiones pueden ser utilizadas para personalizar mensajes enviados al cliente. En el siguiente ejemplo, a los clientes que intentan acceder a servicios FTP desde el dominio ejemplo.com, se les informa que han sido eliminados del servidor:
vsftpd : .example.com \
85
Para obtener una explicacin completa de las expansiones disponibles, y al mismo tiempo conocer opciones adicionales de control de acceso, vea la seccin 5 de las pginas man de hosts_access (man 5 hosts_access), y la pgina man de hosts_options. Para obtener mayor informacin acerca de los encapsuladores TCP, vea la Seccin 2.5.5, Recursos adicionales.
2.5.3. xinetd
El demonio xinetd es un sper servicio encapsulado por TCP, que controla el acceso a un subconjunto de servicios de red muy utilizados, como por ejemplo FTP, IMAP y Telnet. Tambin ofrece opciones de configuracin de servicio especficas para control de acceso, registros mejorados, uniones, redirecciones y control de la utilizacin de los recursos. Cuando un cliente intenta conectarse a un servicio de red controlado por xinetd, el sper servicio recibe la peticin y verifica la existencia de reglas de control de acceso para encapsuladores TCP. Si el acceso es permitido, xinetd verifica que la conexin sea permitida bajo sus propias reglas de acceso para ese servicio. Tambin verifica que el servicio pueda tener ms recursos disponibles, y que no est en contradiccin con ninguna otra regla definida. Si todas estas condiciones se cumplen (es decir, el acceso al servicio es permitido; el servicio no ha alcanzado el lmite de sus recursos; y el servicio no entra en colisin con ninguna otra regla definida), entonces xinetd inicia una instancia del servicio solicitado y le pasa el control de la conexin. Luego que la conexin haya sido establecida, xinetd deja de formar parte en la comunicacin entre el cliente y el servidor.
= = = = =
86
Estas lineas controlan los siguientes aspectos de xinetd: instances Indica el nmero mximo de peticiones simultneas que puede procesar xinetd. log_type Configura xinetd para utilizar la herramienta de registro authpriv, que guarda entradas de registro en el archivo /var/log/secure. Agregar una directiva como FILE /var/ log/xinetdlog podra crear un archivo de registro modificado denominado xinetdlog en el directorio /var/log/. log_on_success Configura xinetd para registrar intentos de conexin exitosos. Por defecto, son registradas la direccin IP del equipo remoto y los ID de los procesos del servidor que est procesando la peticin. log_on_failure Configura xinetd para registrar intentos de conexin fallidos, o casos en que la conexin fue negada. cps Configura xinetd para permitir ms de 25 conexiones por segundo hacia cualquier servicio dado. Si el lmite es superado, el servicio se retira durante 30 segundos. includedir /etc/xinetd.d/ Incluye opciones declaradas en los archivos de configuracin propios de cada servicio, ubicados en el directorio /etc/xinetd.d/. Para obtener mayor infirmacin, consulte Seccin 2.5.4.2, El directorio /etc/xinetd.d/.
Nota
A menudo, tanto las configuraciones log_on_success como log_on_failure establecidas en /etc/xinetd.conf son modificadas posteriormente en los archivos de configuracin propios de cada servicio. Por lo tanto existir mayor informacin en el archivo de registro de un servicio dado, que la que pueda indicar el archivo /etc/xinetd.conf. Para mayor informacin, vea la Seccin 2.5.4.3.1, Opciones para registrado.
= REUSE = stream = no
87
Estas lneas controlan numerosos aspectos del servicio telnet: service Especifica el nombre del servicio, generalmente uno de aquellos listados en el archivo /etc/services flags Establece alguno de los atributos para la conexin. REUSE le indica a xinetd que vuelva a utilizar el socket para una conexin Telnet.
Nota
La marca REUSE es obsoleta. Todos los servicios hoy en da utilizan la marca REUSE. socket_type Establece el tipo de socket de red a stream. wait Especifica cuando el servicio es tratado como de uno solo hilo de ejecucin (yes) o como de mltiples hilos de ejecucin (no). user Especifica bajo qu ID de usuario se est ejecutando el proceso. server Especifica el binario ejecutable a ser lanzado. log_on_failure Especifica parmetros de registro para log_on_failure, adems de los que ya estn definidos en xinetd.conf. disable Especifica cundo el servicio debe ser desactivado (yes), o activado (no). Para obtener mayor informacin sobre estas opciones y su uso, consulte la pgina man de xinetd.conf.
88
HOST Registra la direccin IP del equipo remoto (log_on_failure y log_on_success). PID Registra el ID de los procesos del servidor que recibe el pedido (log_on_success). USERID Registra a los usuarios remotos que utilizan el mtodo definido en RFC 1413 para todos los servicios stream de aspectos mltiples (log_on_failure ylog_on_success). Para obtener una lista completa de opciones de registro, consulte la pgina man de xinetd.conf.
Nota
Al contrario que con los encapsuladores TCP, las modificaciones al control de acceso slo tienen efecto si el administrador de xinetd reinicia el servicio xinetd. De manera similar, al contrario que los encapsuladores TCP, el control de acceso mediante xinetd solo afecta a los servicios controlados por xinetd. El control de acceso de los equipos con xinetd difiere del mtodo utilizado por los Encapsuladores TCP. Mientras que los Encapsuladores TCP colocan todas las configuraciones de acceso en dos archivos, /etc/hosts.allow y /etc/hosts.deny, el control de acceso de xinetd se encuentra en cada uno de los archivos de configuracin de los servicios dentro del directorio /etc/xinetd.d/. Las siguientes opciones de acceso de equipos estn soportadas por xinetd: only_from Permite la utilizacin del servicio slo a los equipos especificados. no_access Impide la utilizacin del servicio a los equipos indicados. access_times Establece el perodo de tiempo en que un servicio particular puede ser utilizado. Este perodo debe ser indicado con notaciones en formato de 24 horas, HH:MM-HH:MM. Las opciones only_from y no_access pueden utilizar una lista de direcciones IP o nombres de archivo, o pueden especificar una red entera. Del mismo modo que los encapsuladores TCP, combinar el control de acceso de xinetd con la configuracin mejorada de registro puede aumentar la seguridad evitando las peticiones de los equipos bloqueados, al mismo tiempo que se registra cada intento de conexin. Por ejemplo, el siguiente archivo /etc/xinetd.d/telnet puede utilizarse para bloquear accesos Telnet desde un grupo de determinado, y restringir el tiempo total en que pueden registrarse incluso los usuarios autorizados:
service telnet {
89
disable flags socket_type wait user server log_on_failure no_access log_on_success access_times }
= no = REUSE = stream = no = root = /usr/kerberos/sbin/telnetd += USERID = 172.16.45.0/24 += PID HOST EXIT = 09:45-16:15
En este ejemplo, cuando un sistema de cliente de la red 10.0.1.0/24, como por ejemplo 10.0.1.2 intenta acceder al servicio Telnet, recibe el siguiente mensaje:
Connection closed by foreign host.
Al utilizar encapsuladores TCP junto con control de acceso xinetd, es importante comprender la relacin entre ambos mecanismos de control de acceso. La siguiente es la secuencia de eventos que realiza xinetd cada vez que un cliente solicite una conexin: 1. El demonio xinetd obtiene las reglas de acceso de los equipos con encapsuladores TCP, utilizando una llamada de biblioteca libwrap.a. Si una regla de negacin concuerda con el cliente, se abandona la conexin. Si una regla de conexin concuerda con el cliente, la conexin es entregada a xinetd. 2. El demonio xinetd verifica sus propias reglas de control de acceso tanto para el servicio xinetd, como para el servicio solicitado. Si una regla de negacin concuerda con el cliente, se abandona la conexin. De lo contrario, xinetd inicia una instancia del servicio solicitado y entrega el control de la conexin a ese servicio.
Importante
Hay que tener cuidado al utilizar controles de acceso con encapsuladores TCP, junto con controles de acceso de xinetd. Un error de configuracin puede causar efectos no deseados.
90
opcin bind slo acepta peticiones para acceder al servicio de la direccin IP correcta. Puede utilizar este mtodo para asociar diferentes servicios con diferentes interfases de acuerdo a sus propias necesidades. Esto es especialmente til para los sistemas con adaptadores de red mltiples, o con mltiples direcciones IP. En tales sistemas, los servicios no seguros (Telnet, por ejemplo), pueden ser configurados para que slo escuchen en una interfaz conectada con una red privada y no con una interfaz conectada a Internet. La opcin redirect acepta una direccin IP o nombre de equipo seguido por un nmero de puerto. Configura el servicio de modo tal de poder redireccionar cualquier peticin para este servicio hacia el equipo y nmero de puerto indicado. Esta herramienta puede ser utilizada para dirigirse hacia otro nmero de puerto en el mismo sistema, redireccionar la peticin hacia una direccin IP diferente en la misma mquina, intercambiar la peticin con un sistema y nmero de puerto totalmente diferente, o combinar entre ellas cualesquiera de estas opciones. Un usuario conectndose con un servicio determinado de un sistema, por lo tanto puede ser reruteado hacia otro sistema sin sufrir ningn tipo de interrupcin. El demonio xinetd es capaz de lograr este redireccionamiento extendiendo un proceso activo durante todo el tiempo que dure la conexin, entre la mquina del cliente que realiza la peticin y el equipo que efectivamente est proveyendo el servicio, transfiriendo los datos entre ambos sistemas. Las ventajas de bind y redirect se hacen ms evidentes cuando se utilizan de manera conjunta. Al asociar un servicio con una direccin IP determinada de un sistema, y luego redireccionar las peticiones para este servicio hacia una segunda mquina que slo pueda ser vista por la primera, puede entonces utilizarse un sistema interno que ofrezca servicios para una red comopletamente diferente. Alternativamente, estas opciones pueden ser utilizadas para limitar la exposicin de un servicio determinado en una mquina hacia una direccin IP conocida, al mismo tiempo que redirecciona cualquier peticin para ese servicio hacia otra mquina configurada para ese propsito. Por ejemplo, piense en un sistema que es utilizado como un cortafuegos con la siguiente configuracin para su servicio Telnet:
service telnet { socket_type = stream wait = no server = /usr/kerberos/sbin/telnetd log_on_success += DURATION USERID log_on_failure += USERID bind = 123.123.123.123 redirect = 10.0.1.13 23 }
Las opciones bind y redirect de este archivo aseguran que el servicio Telnet en la mquina est unido a la direccin IP externa (123.123.123.123), por medio de la cual se conecta a Internet. Adems, cualquier peticin para el servicio Telnet enviada a 123.123.123.123, es redireccionada hacia una direccin IP interna mediante un segundo adaptador de red (10.0.1.13) a la que solo el cortafuegos y los sistemas internos pueden acceder. El cortafuegos entonces enva la comunicacin entre ambos sistemas, y el sistema que est conectndose piensa que lo ha hecho con 123.123.123.123, cuando en realidad est conectado con una mquina diferente. Esta herramienta es especialmente til para usuarios con conexiones de banda ancha que slo posean una direccin IP fija. Si utilizan Traductores de Direcciones de Red (NAT por las iniciales
91
en ingls de Network Adress Translations), los sistemas detrs de la mquina que hace de puerta de enlace, que estn utilizando direcciones IP slo internas, no estn disponibles desde fuera del sistema de puerta de enlace. Sin embargo, cuando ciertos servicios controlados por xinetd son configurados con las opciones bind y redirect, la mquina que hace de puerta de enlace puede actuar como un proxy entre los sistemas externos y una mquina interna determinada que haya sido configurada para ofrecer el servicio. Adems, las diferentes opciones de registro y de control de acceso de xinetd, estn disponibles para establecer proteccin adicional.
92
Kerberos
Pginas man relacionadas con encapsuladores TCP y xinetd Existen una cantidad de pginas man para varias aplicaciones y archivos de configuracin relacionadas con encapsuladores TCP y xinetd. Las siguientes con algunas de las ms importantes: Aplicaciones de servidor man xinetd La pgina man para xinetd. Archivos de configuracin man 5 hosts_access La pgina man para los archivos de control de acceso de equipos con encapsuladores TCP. man hosts_options La pgina man para los campos de opcin de los encapsuladores TCP. man xinetd.conf La pgina man que ofrece opciones de configuracin para xinetd.
2.6. Kerberos
La seguridad e integridad del sistema dentro de la red puede ser complejo. Puede necesitarse el tiempo de varios administradores solo para poder conocer qu servicios son los que estn ejecutndose en una red, y la manera en que estn siendo utilizados. Y ms an, la autenticacin de usuarios en los servicios de red pueden ser peligrosa cuando los mtodos usados por el protocolo sean inherentemente inseguros, como lo demuestran los protocolos tradicionales FTP y Telnet, que transfieren contraseas no encriptadas sobre la red. Kerberos es una forma de eliminar la necesidad de protocolos que permitan mtodos inseguros de autenticacin, por lo que mejora la seguridad general de la red.
2.6.1. Qu es Kerberos?
Kerberos es un protocolo de autenticacin de red creado por el MIT (Massachusetts Institute of 5 Technology), y utiliza una criptografa de llave simtrica para autenticar a los usuarios de los servicios de red, lo que en pocas palabras significa que las contraseas nunca son enviadas a travs de la red.
Un sistema donde tanto el cliente como el servidor comparten una clave comn que es utilizada para encriptar y desencriptar comunicaciones a travs de una red.
93
Consecuentemente, cuando los usuarios se autentican con servicios de red usando Kerberos, los usuarios no autorizados que intenten averiguar las contraseas monitoreando el trfico de red son efectivamente bloqueados.
Kerberos slo tiene compatibilidad parcial con el sistema PAM de mdulos de autenticacin conectables, utilizado por la mayora de los servidores Fedora. Dirjase a la Seccin 2.6.4, Kerberos y PAM para obtener mayor informacin al respecto. Kerberos presupone que cada usuario es confiable, pero que est utilizando un equipo o una red que no lo es. Su objetivo principal es prevenir la transmisin en la red de contraseas no encriptadas. Sin embargo, si alguien ms tiene acceso al nico equipo que enva los comprobantes utilizados para la autenticacin denominado el centro de distribucin de claves (KDC, por las siglas en ingls de Key Distribution Center) , adems del usuario correspondiente, entonces todo el sistema de autenticacin Kerberos est corriendo riesgo. Para que una aplicacin utilice Kerberos, su origen debe ser modificado para que puede realizar las llamadas apropiadas a las bibliotecas de Kerberos. Las aplicaciones as modificadas son consideradas como compatibles con Kerberos, o kerberizadas. Para algunas, esto puede ser bastante problemtico debido al tamao de la aplicacin o debido a su diseo. Para otras aplicaciones incompatibles, los cambios deben ser hechos de manera tal de permitir que el cliente y el servidor puedan comunicarse. De nuevo, esto puede necesitar una programacin extensa. Las aplicaciones de cdigo propietario que no tienen soporte para Kerberos por defecto, son por lo general las ms problemticas.
94
Terminologa de Kerberos
Kerberos es una herramienta de tipo "todo o nada". Si Kerberos es utilizado en la red, cualquier contrasea no encriptada transferida a un servicio no compatible con Kerberos (o no Kerberizado), se encuentra en riesgo. Por lo tanto, la red no obtiene beneficio alguno al utilizarlo. Para asegurar una red con Kerberos, se debe utilizar versiones kerberizadas de todas las aplicaciones de tipo servidor/cliente que transmitan contraseas no encriptadas, o que no utilicen ninguna de este tipo de aplicaciones.
95
hash Tambin conocido como valor hash. Un valor generado por el paso de una cadena a travs de una funcin hash. Estos valores son tpicamente usados para asegurar que los datos transmitidos no fueron interceptados y modificados. funcin hash Una forma de generar una "huella digital" desde los datos de entrada. Estas funciones reordenan, trasponen, o alteran los datos de otras maneras para poder producir un valor hash. llave Los datos usados cuando se encriptan o desencriptan otros datos. Los datos encriptados no pueden ser desencriptados sin una clave apropiada o una extrema buena suerte de parte del craqueador. centro de distribucin de claves (KDC) Un servicio que emite tickets de Kerberos, y que usualmente corre en el mismo equipo que el servidor de garanta de ticket (TGS). tabla de clave (keytab) Un archivo que incluye una lista no encriptada de principales con sus respectivas claves. Los servidores obtienen las claves que necesitan desde los archivos keytab en lugar de utilizar kinit. El archivo keytab establecido por defecto es /etc/krb5.keytab. El servidor que administra el KDC /usr/kerberos/sbin/kadmind, es el nico servicio que utiliza cualquier otro archivo (utiliza /var/kerberos/krb5kdc/kadm5.keytab). kinit El comando kinit permite a un principal que ya ingres obtener y hacer cach del ticket inicial de garanta de tickets (TGT). Vaya a la pgina man de kinit para ms informacin. principal (o nombre principal) El principal es el nombre nico de un servicio o de un usuario al que le es permitido autenticarse mediante Kerberos. El principal tiene la forma de root[/instance]@REALM. Para un usuario tpico, el root es el mismo que su ID de inicio de sesin. La instance es opcional. Si el principal tiene una instancia, ser diferenciada del root con una barra invertida ("/"). Una cadena vaca ("") es considerada una instancia vlida (que difiere de la instancia NULL establecida por defecto), pero utilizarla puede llegar a ser confuso. Todos los principales de un dominio poseen su propia clave, que para los usuarios es derivada desde una contrasea, o es un conjunto de servicios aleatorios. reinado Una red que use Kerberos, compuesta de uno o ms servidores llamados KDCs y un nmero potencialmente grande de clientes. servicio Un programa accedido por la red. ticket Un conjunto temporal de credenciales electrnicas que verifican la identidad de un cliente para un servicio particular. Tambin llamados credenciales o comprobantes. servidor de garantas de tickets (TGS) Un servidor que emite tickets para un servicio deseado que son a su vez dados a los usuarios para acceder al servicio. El TGS corre normalmente en el mismo equipo que el KDC.
96
ticket de garanta de ticket (TGT) Un ticket especial que permite al cliente obtener tickets adicionales sin aplicar nuevamente en el KDC. contrasea no encriptada Una contrasea en texto plano, legible al humano.
Advertencia
El sistema Kerberos puede ser vulnerado si un usuario en la red se autentica frente a un servicio no kerberizado transmitiendo una contrasea con formato de texto simple. La utilizacin de servicios no kerberizados es altamente desalentada. Entre tales servicios se encuentra Telnet y FTP. Es preferible la utilizacin de otros protocolos encriptados, como servicios asegurados mediante SSH o SSL, aunque no es lo ideal. Esta es solamente una presentacin general acerca de cmo funciona la autenticacin de Kerberos. Dirjase a la Seccin 2.6.10, Recursos adicionales para conocer otros enlaces hacia informacin ms detallada.
97
Nota
Kerberos depende de los siguientes servicios de red para funcionar correctamente. Sincronizacin de reloj aproximado entre las mquinas de la red. Un programa de sincronizacin de relojes debera ser configurado para la red, como por ejemplo ntpd. Consulte /usr/share/doc/ntp-<versionnumber>/index.html (donde <version-number>, es el nmero de versin del paquete ntp instalado en su sistema) para obtener ms detalles acerca de cmo definir servidores de Protocolos de Horarios de Red. Servicio de Nombre de Dominio (DNS). Debe asegurarse que las entradas DNS y los equipos en la red se encuentren todos configurados adecuadamente. Dirjase a la Gua de Kerberos V5 para los administradores de sistemas en /usr/share/doc/krb5-server-<versionnumber> para obtener ms informacin, (donde <version-number> es el nmero de versin del paquete krb5-server instalado en su sistema).
Importante
Los administradores deben tener la precaucin de no permitir que los usuarios se autentiquen a determinados servicios de red, utilizando contraseas Kerberos. Muchos protocolos utilizados por estos servicios no encriptan las contraseas antes de enviarlas a travs de la red, destruyendo los beneficios del sistema Kerberos. Por ejemplo, los usuarios no deberan tener permitido autenticarse a servicios Telnet con la misma contrasea que utilizan para la autenticacin en Kerberos.
98
no podrn autenticarse en el servidor. Esta sincronizacin es necesaria para prevenir que un atacante utilice un comprobante antiguo de Kerberos enmascarado como el de un usuario vlido. Es recomendable configurar una red cliente/servidor compatible con el Protocolo de Horario de Red (NTP, por las siglas en ingls de Network Time Protocol), an cuando no se est utilizando Kerberos. Fedora incluye el paquete ntp para este propsito. Consulte /usr/share/doc/ ntp-<version-number>/index.html (donde <version-number> es el nmero de versin del paquete ntp instalado en su sistema) para conocer detalles acerca de cmo configurar servidores con Protocolos de Horario de Red, o http://www.ntp.org, para obtener ms informacin acerca de NTP. 2. Instale los paquetes krb5-libs, krb5-server y krb5-workstation en la mquina dedicada que correr KDC. Esta mquina necesita ser muy segura si es posible, no debe correr ningn otro servicio ms que KDC. Edite los archivos de configuracin /etc/krb5.conf y /var/kerberos/krb5kdc/kdc.conf para reflejar el nombre del reinado y los mapeos dominio-a-reinado. Un reinado simple puede ser construido reemplazando instancias de EJEMPLO.COM y ejemplo.com con el nombre correcto del dominio siendo seguro mantener la forma correcta de los nombres en mayscula y en mnuscula y cambiando el KDC de kerberos.elemplo.com al nombre del servidor kerberos. Por convencin, todos los nombres de reinados se escriben en maysculas, y todos los nombres de equipos y de dominios DNS en minsculas. Para obtener informacin detallada acerca de los formatos de estos archivos de configuracin, consulte sus respectivas pginas man. Genere la base de datos usando el utilitario kdb5_util desde una terminal:
/usr/kerberos/sbin/kdb5_util create -s
3.
4.
El comando create genera la base de datos que almacena las clves para el reinado de Kerberos. El interruptor -s obliga a la creacin de un archivo stash en el cual la clave del servidor principal es almacenada. Si no existe un archivo stash desde donde poder leer la clave, el servidor kerberos (krb5kdc) le pedir al usuario que ingrese la contrasea principal del servidor (que puede ser utilizada para generar nuevamente la clave) cada vez que se inicie. 5. Edite el archivo /var/kerberos/krb5kdc/kadm5.acl. Este archivo es usado por kadmind para determinar qu principales tienen acceso administrativo a la base de datos de Kerberos y sus niveles de acceso. La mayora de las organizaciones pueden obtenerlo por una nica lnea:
*/admin@EXAMPLE.COM *
La mayora de los usuarios se representan en la base de datos por un principal nico (con una instancia NULL, o vaca, tal como juan@EJEMPLO.COM). En esta configuracin, los usuarios con un segundo principal con una instancia de admin (por ejemplo, juan/ admin@EJEMPLO.COM) pueden ejercer un poder completo sobre el reinado de la base de datos de Kerberos. Despus de que se inicie kadmind en el servidor, cualquier usuario puede acceder sus servicios ejecutando kadmin en cualquier cliente o servidores en el reino. Sin embargo, slo los usuarios listados en el archivo kadm5.acl pueden modificar la base de datos de ninguna forma, excepto para cambiar sus propias contraseas.
99
Nota
La herramienta kadmin permite la comunicacin con el servidor kadmind a travs de la red, y utiliza kerberos para manipular la autenticacin. Consecuentemente, el primer principal debe existir previamente antes de intentar conectarse con el servidor a travs de la red para administrarlo. Genere el primer principal con el comando kadmin.local, que ha sido especficamente diseado para ser utilizado en el mismo equipo en el que funciona el KDC, y no utiliza Kerberos para su autenticacin. Ingrese el comando siguiente kadmin.local en la terminal KDC para crear el primer principal:
/usr/kerberos/sbin/kadmin.local -q "addprinc username/admin"
6.
7.
Agregue principales para los usuarios mediante el comando addprinc dentro de kadmin. kadmin y kadmin.local son interfaces de lneas de comando al KDC. Como este, existen disponibles otros comandos como por ejemplo addprinc luego de iniciar el programa kadmin. Para obtener mas informacin, consulte la pgina man de kadmin. Verifique que KDC est emitiendo tiques. Primero, corra kinit para obtener un tique y guardarlo en un archivo cache de credencial. Luego, use klist para ver la lista de credenciales en el cach y use kdestroy para destruir el cach y las credenciales que contiene.
8.
Nota
Por defecto, kinit intenta autenticarse utilizando el mismo nombre de usuario del de inicio de sesin (no el del servidor Kerberos). Si ese nombre de usuario no se corresponde con un principal en la base de datos de Kerberos, kinit enva un mensaje de error. Si eso sucede, indiquele a kinit el nombre del principal correcto, como un argumento en la lnea de comando (kinit <principal>). Una vez que estos pasos sean completados, el servidor Kerberos ya debera estar listo y ejecutndose.
100
1.
Asegrese que la sincronizacin de tiempo entre el cliente Kerberos y KDC exista y sea la adecuada. Dirjase a Seccin 2.6.5, Configurando un servidor Kerberos 5 para obtener mayors informacin. Adems, verifique que el DNS est funcionando apropiadamente en el cliente Kerberos antes de configurar con los programas cliente de Kerberos. Instale los paquetes krb5-libs y krb5-workstation en todas las mquinas clientes. Provea un archivo /etc/krb5.conf vlido para cada cliente (normalmente este puede ser el mismo archivo krb5.conf usado por el KDC). Antes que una estacin de trabajo del reinado pueda utilizar a Kerberos para autenticar los usuarios que se conectan mediante ssh, o mediante los rsh o rlogin Kerberizados, debe tener su propio equipo principal en la base de datos de Kerberos. Los programas de servidor sshd, kshd, y klogind, necesitan todos acceder a las llaves para los servicios del equipo principal. Adems, para poder utilizar los servicios kerberizados rsh y rlogin, esa estacin de trabajo debe tener el paquete xinetd instalado. Al utilizar kadmin se agrega un principal de equipo para la estacin de trabajo en el KDC. En este caso, la instancia es el nombre del equipo de la estacin de trabajo. Utilice la opcin randkey para el comando addprinc de kadmin, para crear el principal y asignarle una llave en forma azarosa:
addprinc -randkey host/blah.example.com
2.
3.
Ahora que se ha creado el principal, las claves se pueden extraer para la estacin trabajo ejecutando kadmin en la misma estacin de trabajo y usando el comando ktadd dentro de kadmin:
ktadd -k /etc/krb5.keytab host/blah.example.com
4.
Para usar otros servicios de red kerberizados, primero deben iniciarse. A continuacin mostramos una lista de los servicios kerberizados comunes y las instrucciones acerca de cmo habilitarlos: ssh OpenSSH utiliza GSS-API para autenticar a los usuarios en los servidores, si la configuracin del cliente y del servidor tienen ambas GSSAPIAuthentication habilitado. Si el cliente tiene tambin GSSAPIDelegateCredentials habilitado, las credenciales del usuario se hacen disponibles en el sistema remoto. rsh y rlogin Para usar las versiones kerberizadas de rsh y rlogin, habilite klogin, eklogin y kshell. Telnet Para usar Telnet kerberizado, debe habilitar krb5-telnet. FTP Para proveer acceso FTP, crear y extraer una clave para el principal con una raz de ftp. Asegrese de poner la instancia al nombre de equipo completo del servidor FTP, luego habilite gssftp. IMAP Para utilizar un servidor kerberizado IMAP, el paquete cyrus-imap utilizar Kerberos 5, si tambin se encuentra instalado el paquete cyrus-sasl-gssapi. El paquete cyrussasl-gssapi contiene el complemento Cyrus SASL que tiene soporte para autenticacin GSS-API. Cyrus IMAP debera funcionar correctamente con Kerberos siempre y cuando el usuario cyrus sea capaz de encontrar la clave correspondiente en /etc/krb5.keytab, y que la raz para el principal est definida para imap (creada con kadmin).
101
Una alternativa a cyrus-imap se puede encontrar en el paquete dovecot, que tambin se incluye en Fedora. Este paquete contiene un servidor IMAP pero no da soporte a GSS-API y Kerberos por el momento. CVS Para usar un servidor CVS kerberizado, gserver usa un principal con una raz de cvs y por lo dems es idntico al servidor CVS pserver.
En algunas configuraciones esto ser suficiente, pero en otras, el nombre del reinado derivado ser el nombre de un reinado no existente. En estos casos, el mapeo desde el nombre del dominio DNS del servidor, hacia su reinado, debe estar especificado en la seccin domain_realm del sistema krb5.conf del cliente. Por ejemplo:
[domain_realm] .example.com = EXAMPLE.COM example.com = EXAMPLE.COM
En la configuracin anterior se especifican dos mapeos. El primero indica que cualquier sistema en el dominio de DNS "ejemplo.com" pertenecen al reinado EJEMPLO.COM. El segundo, que el nombre exacto "ejemplo.com" est tambin en el reinado. (La distincin entre el dominio y un equipo especfico se marca por la presencia o ausencia del "." inicial.) El mapeo tambin se puede almacenar directamente en el DNS.
102
su comando ktadd para definir una llave aleatoria para el servicio, y al mismo tiempo almacenarla en el archivo keytab establecido por defecto. Esta llave ser utilizada por el comando kprop para autenticarse a los servidores esclavos. Usted necesitar hacer esto slo una vez, sin importar la cantidad de servidores esclavos que tenga instalados.
# kadmin.local -r EXAMPLE.COM Authenticating as principal root/admin@EXAMPLE.COM with password. kadmin: add_principal -randkey host/masterkdc.example.com Principal "host/host/masterkdc.example.com@EXAMPLE.COM" created. kadmin: ktadd host/masterkdc.example.com Entry for principal host/masterkdc.example.com with kvno 3, encryption type Triple DES cbc mode with HMAC/sha1 added to keytab WRFILE:/etc/krb5.keytab. Entry for principal host/masterkdc.example.com with kvno 3, encryption type ArcFour with HMAC/ md5 added to keytab WRFILE:/etc/krb5.keytab. Entry for principal host/masterkdc.example.com with kvno 3, encryption type DES with HMAC/sha1 added to keytab WRFILE:/etc/krb5.keytab. Entry for principal host/masterkdc.example.com with kvno 3, encryption type DES cbc mode with RSA-MD5 added to keytab WRFILE:/etc/krb5.keytab. kadmin: quit
Inicie kadmin como usuario root desde una terminal en el KDC esclavo, y utilice el comando add_principal para crear una nueva entrada para su servicio host. Luego utilice el comando ktadd, de kadmin, para establecer (y al mismo tiempo almacenar) en el archivo keytab del esclavo, una llave aleatoria para el servicio. Esta llave es utilizada por el servicio kpropd cuando se necesite autenticar a los clientes.
# kadmin -p jimbo/admin@EXAMPLE.COM -r EXAMPLE.COM Authenticating as principal jimbo/admin@EXAMPLE.COM with password. Password for jimbo/admin@EXAMPLE.COM: kadmin: add_principal -randkey host/slavekdc.example.com Principal "host/slavekdc.example.com@EXAMPLE.COM" created. kadmin: ktadd host/slavekdc.example.com@EXAMPLE.COM Entry for principal host/slavekdc.example.com with kvno 3, encryption type Triple DES cbc mode with HMAC/sha1 added to keytab WRFILE:/etc/krb5.keytab. Entry for principal host/slavekdc.example.com with kvno 3, encryption type ArcFour with HMAC/ md5 added to keytab WRFILE:/etc/krb5.keytab. Entry for principal host/slavekdc.example.com with kvno 3, encryption type DES with HMAC/sha1 added to keytab WRFILE:/etc/krb5.keytab. Entry for principal host/slavekdc.example.com with kvno 3, encryption type DES cbc mode with RSA-MD5 added to keytab WRFILE:/etc/krb5.keytab. kadmin: quit
103
Con la clave de este servicio, el KDC esclavo puede autenticar a cualquier cliente que intente conectarse a l. Obviamente, no a todos ellos debera permitrsele proveer el servicio esclavo kprop con una nueva base de datos del reinado. Para restringir el acceso, el servicio kprop en el KDC esclavo solo aceptar actualizaciones de clientes cuyos nombre de principal estn listados en /var/ kerberos/krb5kdc/kpropd.acl. Agregue el nombre del equipo KDC maestro a esa lista.
# echo host/masterkdc.example.com@EXAMPLE.COM > /var/kerberos/krb5kdc/kpropd.acl
Una vez que el KDC esclavo haya obtenido una copia de la base de datos, necesitar tambin la llave maestra que ha sido utilizada para cifrarlo. Si la llave maestra de su base de datos KDC ha sido almacenada en un archivo stash del KDC maestro (generalmente denominada /var/kerberos/ krb5kdc/.k5.REALM), cpiela en el KDC esclavo utilizando cualquier mtodo disponible que sea seguro, o cree una base de datos y un archivo escondite falsos en el KDC esclavo ejecutando kdb5_util create -s (la base de datos falsa ser sobreescrita con la primera propagacin de base de datos que sea exitosa), e indicando la misma contrasea. Asegrese que el cortafuego del KDC esclavo permita al KDC maestro contactarlo utilizando el puerto 754 con TCP (krb5_prop), e inicie el servicio kprop. Luego, vuelva a verificar si el servicio kadmin se encuentra deshabilitado. Ahora realice una prueba manual de propagacin de la base de datos volcando la base de datos del reinado, en el KDC maestro, al archivo de datos predeterminado desde donde el comando kprop leer (/var/kerberos/krb5kdc/slave_datatrans) y luego use el comando kprop para transmitir su contenido al KDC esclavo.
# /usr/kerberos/sbin/kdb5_util dump /var/kerberos/krb5kdc/slave_datatrans# kprop slavekdc.example.com
Usando kinit, verifique que un sistema cliente cuyo krb5.conf liste slo el KDC esclavo en su lista de KDCs para su reinado, pueda ahora obtener correctamente las credenciales iniciales del KDC esclavo. Hecho esto, simplemente cree un script que vuelque la base de datos del reinado y ejecute el comando kprop para transmitir la base de datos a cada KDC esclavo por vez, y configure el servicio cron para correr el script peridicamente.
104
password for principal "krbtgt/B.EXAMPLE.COM@A.EXAMPLE.COM": Re-enter password for principal "krbtgt/B.EXAMPLE.COM@A.EXAMPLE.COM": Principal "krbtgt/B.EXAMPLE.COM@A.EXAMPLE.COM" created. quit
Use el comando get_principal para verificar que ambas entradas tienen un nmero de versin de claves (valores kvno) y tipos de encriptados coincidentes.
En el ejemplo siguiente, el servicio es generalmente, o bien el nombre del protocolo en uso (otros valores comunes pueden ser ldap, imap, cvs, y HTTP), o bien equipo. server.ejemplo.com es el nombre del dominio del sistema completamente calificado que ejecuta el servicio, y EJEMPLO.COM es el nombre del reinado.
105
Para deducir el dominio al que el servicio pertenece, los clientes por lo general consultan el DNS o la seccin domain_realm del archivo /etc/krb5.conf para mapear ya sea el nombre del equipo (server.ejemplo.com) o el nombre del dominio DNS (.ejemplo.com) hacia el nombre del reinado (EJEMPLO.COM). Habiendo determinado a qu reinado pertenece el servicio, un cliente tiene que determinar luego el conjunto de reinados que debe contactar y en qu orden debe hacerlo, para obtener las credenciales a usar en la autenticacin con el servicio. Esto se puede hacer de una o dos formas. El mtodo establecido por defecto, que no requiere una configuracin explcita, es dar a los reinados nombres dentro de una jerarqua compartida. Como ejemplo, suponer los reinados llamados A.EJEMPLO.COM, B.EJEMPLO.COM, and EJEMPLO.COM. Cuando un cliente del reinado A.EJEMPLO.COM intente autenticarse en un servicio del reinado B.EJEMPLO.COM, por defecto, lo primero que har ser intentar obtener credenciales para el reinado EJEMPLO.COM, y luego utilizar esas credenciales para obtener unas nuevas para poder utilizarlas en el reinado B.EJEMPLO.COM. En este escenario el cliente trata el nombre del reinado como uno podra tratar un nombre DNS. Reiteradamente va quitando los componentes de su propio nombre de reinado para generar los nombres de los reinados que se encuentre jerrquicamente "por encima del suyo", hasta que llegue a un punto que incluso sea jerrquicamente "superior" al reinado del servicio. En ese punto empieza a analizar los componentes del nombre del servicio del reinado, hasta que obtiene el servicio del reinado. Cada reinado que se encuentre involucrado en el proceso, es considerado como otro "salto". Por ejemplo, el uso de credenciales en A.EJEMPLO.COM, autenticando a un servicio en B.EJEMPLO.COMA.EJEMPLO.COM EJEMPLO.COM B.EJEMPLO.COM A.EJEMPLO.COM y EJEMPLO.COM comparten una clave para krbtgt/ EJEMPLO.COM@A.EJEMPLO.COM EJEMPLO.COM y B.EJEMPLO.COM comparten una clave krbtgt/ B.EJEMPLO.COM@EJEMPLO.COM Otro ejemplo, usando credenciales en SITIO1.VENTAS.EJEMPLO.COM, para autenticar a un servicio en CUALQUIERLUGAR.EJEMPLO.COMSITIO1.VENTAS.EJEMPLO.COM VENTAS.EJEMPLO.COM EJEMPLO.COM CUALQUIERLUGAR.EJEMPLO.COM SITIO1.VENTAS.EJEMPLO.COM y VENTAS.EJEMPLO.COM comparten una clave para krbtgt/ VENTAS.EJEMPLO.COM@SITIO1.VENTAS.EJEMPLO.COM VENTAS.EJEMPLO.COM y EJEMPLO.COM comparten una clave para krbtgt/ EJEMPLO.COM@VENTAS.EJEMPLO.COM EJEMPLO.COM y CUALQUIERLUGAR.EJEMPO.COM comparten una clave para krbtgt/ CUALQUIERLUGAR.EJEMPLO.COM@EJEMPLO.COM Otro ejemplo, esta vez utilizando nombres de reinados que no compartan sufijos comunes (DEVEL.EJEMPLO.COM y PROD.EJEMPLO.ORG DEVEL.EJEMPLO.COM EJEMPLO.COM COM ORG EJEMPLO.ORG PROD.EJEMPLO.ORG DEVEL.EJEMPLO.COM y EJEMPLO.COM comparten una clave para krbtgt/ EJEMPLO.COM@DEVEL.EJEMPLO.COM EJEMPLO.COM y COM comparten una clave para krbtgt/COM@EJEMPLO.COM COM y ORG comparten una clave para krbtgt/ORG@COM
106
ORG y EJEMPLO.ORG comparten una clave para krbtgt/EJEMPLO.ORG@ORG EJEMPLO.ORG y PROD.EJEMPLO.ORG comparten una clave para krbtgt/ PROD.EJEMPLO.ORG@EJEMPLO.ORG El mtodo ms complicado, pero que al mismo tiempo es el ms flexible, reside en configurar la seccin capaths del archivo /etc/krb5.conf, de modo que los clientes que tengan credenciales para un reinado especfico, debern buscar qu reinado es el que le sigue en la cadena y que, eventualmente, ser quien permita su autenticacin con los servidores. El formato de la seccin capaths es relativamente sencillo: cada entrada en la seccin tiene el mismo nombre que el reinado en el que pudiera existir el cliente. Dentro de cada subseccin, el conjunto de los reinados intermedios desde donde el cliente tiene que obtener las credenciales, se muestran como los valores de la llave que se corresponde con el reinado en el que puede residir el servicio. Si no existen reinados intermedios, ser utilizado el valor ".". Aqu hay un ejemplo:
[capaths] A.EXAMPLE.COM = { B.EXAMPLE.COM = . C.EXAMPLE.COM = B.EXAMPLE.COM D.EXAMPLE.COM = B.EXAMPLE.COM D.EXAMPLE.COM = C.EXAMPLE.COM }
En este ejemplo, los clientes en el reinado A.EJEMPLO.COM pueden obtener credenciales de reinados cruzados para B.EJEMPLO.COM directamente del KDC de A.EJEMPLO.COM. Si esos clientes desean contactar un servicio en el reinado C.EJEMPLO.COM, necesitarn obtener primero credenciales necesarias del reinado B.EJEMPLO.COM (esto requiere que krbtgt/B.EJEMPLO.COM@A.EJEMPLO.COM exista), y entonces utilizar esas credenciales para obtener otras para ser utilizadas en el reinado C.EJEMPLO.COM (utilizando krbtgt/ C.EJEMPLO.COM@B.EJEMPLO.COM). Si esos clientes desean contactar un servicio en el reinado D.EJEMPLO.COM, necesitarn obtener primero las credenciales necesarias del reinado B.EJEMPLO.COM, y luego las credenciales del reinado C.EJEMPLO.COM, antes de obtener, finalmente, las credenciales necesarias para utilizar con el reinado D.EJEMPLO.COM.
Nota
Sin una entrada que indique lo contrario, Kerberos asume que las relaciones de confianza de reinados cruzados forman una jerarqua. Los clientes en el reinado A.EJEMPLO.COM pueden obtener credenciales cruzadas del reinado B.EJEMPLO.COM directamente. Sin el "." indicando esto, el cliente intentara sino usar un camino jerrquico, en este caso:
A.EXAMPLE.COM EXAMPLE.COM B.EXAMPLE.COM
107
108
Redes privadas virtuales (VPNs, por las iniciales en ingls de Virtual Private Networks)
2.7. Redes privadas virtuales (VPNs, por las iniciales en ingls de Virtual Private Networks)
Las organizaciones con diferentes oficinas satlites, a menudo se conectan entre ellas mediante lneas constituidas especficamente para proteger los datos vitales y asegurar la eficacia en su transferencia. Por ejemplo, muchos comercios utilizan lneas de frame relay o Modo de Transferencia no Sincronizada (ATM, por las iniciales en ingls de Asynchronous Transfer Mode) como una herramienta de comunicaciones de tipo punto-a-punto para enlazar una oficina con el resto. Este puede llegar a ser un recurso algo costoso, especialmente para pequeas o medianas empresas, que quieren expandirse sin tener que pagar los altos costos que involucra la utilizacin de circuitos digitales a medida, generalmente utilizados por empresas de mayor poder adquisitivo. Para poder cubrir estas necesidades, se han desarrollado las Redes Privadas Virtuales (VPNs). Utilizando los mismos principios de funcionamiento que los circuitos a medida, las VPNs permiten comunicaciones digitales seguras entre dos elementos (o redes), creando una Red de Area Global (WAN, por las iniciales en ingls de Wide Area Network) a partir de Redes de Area Local (LANs, Local Area Networks) existentes. La diferencia entre frame relay o ATM reside en el medio de transporte que se utiliza. Las VPNs transmiten sobre IP mediante la utilizacin de datagramas como su medio de transporte, convirtindolas en un conducto seguro a travs de Internet hacia un destino especfico. La mayora de las implementaciones VPN de software libre incorporan estndares abiertos de mtodos de encriptacin para, posteriormente, enmascarar los datos en trnsito. Algunas organizaciones utilizan herramientas VPN de hardware para incrementar la seguridad, mientras que otras utilizan software, o implementaciones derivadas en protocolos. Muchos proveedores ofrecen herramientas VPN de hardware, como Cisco, Nortel, IBM y Checkpoint. Existe una herramienta gratuita de software VPN para Linux denominada FreeS/Wan que utiliza una implementacin estandarizada del Protocolo de Seguridad de Internet (IPsec, por las iniciales en ingls de Internet Protocol Security). Estas herramientas VPN, ya sean derivadas de hardware o
109
de software, trabajan como enrutadores especializados que existen entre la conexin IP desde una oficina hacia otra.
2.7.3. IPsec
Fedora ofrece soporte de IPsec para conectar equipos remotos y redes entre s, utilizando un tnel seguro en un medio de transporte de red comn, como lo es Internet. IPsec puede ser implementado utilizando una configuracin de tipo equipo-a-equipo (una estacin de trabajo con otra), o de tipo reda-red (una LAN/WAN con otra). La utilizacin de IPsec en Fedora utiliza Intercambio de Clave de Internet (IKE, por las iniciales en ingls de Internet Key Exchange), un protocolo implementado por el Equipo de Tareas de Ingeniera de Internet (IETF, por las iniciales en ingls de Internet Engineering Task Force), utilizado para autenticacin mutua y asociaciones seguras entre sistemas conectados.
110
Instalacin de IPsec
La segunda etapa de la conexin IPsec consiste en la creacin de una Asociacin de seguridad (SA, por las iniciales en ingls de Security Association) entre los nodos IPsec. Esta etapa genera una base de datos SA con informacin de configuracin, como el mtodo de encriptado, los parmetros de intercambio de clave para la sesin secreta, y dems informaciones necesarias. Esta etapa administra la conexin IPsec actual entre los nodos remotos y las redes. La implementacin de IPsec en Fedora utiliza IKE para compartir claves entre equipos a travs de Internet. El demonio para claves racoon administra la distribucin y el intercambio de clave IKE. Para obtener mayor informacin acerca de este demonio, vea la pgina man de racoon.
111
Para configurar una conexin IPsec de tipo equipo-a-equipo, siga los siguientes pasos para cada equipo:
Nota
Debera realizar los siguientes procedimientos en la mquina actual que est configurando. Evite intentar establecer o configurar conexiones IPsec remotamente. 1. En una terminal, ingrese system-config-network para iniciar la Herramienta de administracin de red. 2. En la pestaa de IPsec, haga clic en Nuevo para iniciar el asistente de configuracin de IPsec. 3. haga clic en Siguiente para iniciar la configuracin de una conexin IPsec de equipo-a-equipo. 4. Ingrese un nombre nico para la conexin, por ejemplo, ipsec0. Si lo necesita, tilde la casilla para activar automticamente la conexin cada vez que encienda el equipo. Haga clic en Siguiente para continuar. 5. Seleccione Encriptado de equipo a equipo como el tipo de conexin, y luego haga clic en Siguiente. 6. Seleccione el tipo de mtodo de encriptado a utilizarse: manual o automtico. Si selecciona encriptado manual, deber indicar ms adelante una clave de encriptado. Si selecciona encriptado automtico, el demonio racoon se encarga de administrar la clave del encriptado. El paquete ipsec-tools debe estar instalado si quiere utilizar la encriptacin automtica. Haga clic en Siguiente para continuar. 7. Ingrese la direccin IP de equipo remoto. Para determinar la direccin IP del equipo remoto, utilice el siguiente comando en el equipo remoto:
[root@myServer ~] # /sbin/ifconfig <device>
donde <device> es el dispositivo Ethernet que quiere utilizar para la conexin VPN. Si solo existe una tarjeta Ethernet en el sistema, el nombre del dispositivo seguramente ser eth0. El siguiente ejemplo muestra la informacin pertinente de este comando (recuerde que ese es slo un ejemplo):
eth0 Link encap:Ethernet HWaddr 00:0C:6E:E8:98:1D inet addr:172.16.44.192 Bcast:172.16.45.255 Mask:255.255.254.0
112
Nota
Para conexiones de tipo equipo-a-equipo, los dos equipos deberan tener una direccin pblica enrutable. Alternativamente, los dos equipos pueden tener una direccin privada no enrutable (por ejemplo, entre los rangos 10.x.x.x o 192.168.x.x) siempre y cuando se encuentren en la misma LAN. Si los equipos se encuentran en diferentes LANs, o uno de ellos tiene una direccin pblica y el otro una direccin privada, vea la Seccin 2.7.7, Configuracin IPsec red-a-red. Haga clic en Siguiente para continuar. 8. Si en el paso 6 se ha seleccionado un cifrado manual, especifique la clave de cifrado a ser utilizada, o haga clic en Generar para crear una. a. Indique una clave de autenticacin o haga clic en Generar para generar una. Puede ser una combinacin de nmeros y letras. b. Haga clic en Siguiente para continuar. 9. Verifique la informacin en la pgina IPsec Resumen, y luego haga clic en el botn Aplicar. 10. Haga clic en Archivo => Guardar para guardar la configuracin. Tal vez necesite reiniciar la red para que los cambios tengan efecto. Para reiniciar la red, utilice el siguiente comando:
[root@myServer ~]# service network restart
11. Seleccione la conexin IPsec de la lista y haga clic en el botn de Activar. 12. Repita el procedimiento entero para el otro equipo. Es fundamental que se utilice la misma clave del paso 8 en los dems equipos. De lo contrario, IPsec no funcionar. Luego de configurar la conexin IPsec, aparecer en la lista IPsec como se lo indica en la Figura 2.10, Conexin IPsec.
113
Figura 2.10. Conexin IPsec Los siguientes archivos son creados cuando la conexin IPsec es configurada: /etc/sysconfig/network-scripts/ifcfg-<nickname> /etc/sysconfig/network-scripts/keys-<nickname> /etc/racoon/<remote-ip>.conf /etc/racoon/psk.txt Si se elige encriptacin automtica, entonces tambin se crea el archivo /etc/racoon/ racoon.conf. Cuando la interfaz est funcionando, el archivo /etc/racoon/racoon.conf se modifica para que pueda inlcuir a <remote-ip>.conf.
114
Una clave de autenticacin pre-compartida que es utilizada a lo largo de la etapa inicial de la conexin, y que tambin ser utilizada luego para intercambiar claves de encriptado durante de la sesin. Por ejemplo, suponga que la estacin de trabajo A y la estacin de trabajo B quieren conectarse entre ellas mediante de un tnel IPsec. Quieren conectarse utilizando una clave pre-compartida con el valor de Key_Value01, y los usuarios acuerdan la utilizacin de racoon para generar y compartir una clave de autenticacin entre cada equipo. Los usuarios de ambos equipos deciden referirse a su conexin como ipsec1..
Nota
Debera elegir una PSK (clave pre-compartida) que utilice una mezcla de caracteres en mayscula y en minscula, nmeros y signos de puntuacin. Una PSK fcil de adivinar constituye un riesgo de seguridad. No es necesario utilizar el mismo nombre de conexin para cada equipo. Debera elegir un nombre que sea conveniente y que tenga sentido para su instalacin. A continuacin mostramos un archivo de configuracin IPsec en la estacin de trabajo A para una conexin IPsec de tipo equipo-a-equipo con la estacin de trabajo B. El nombre nico para identificar la conexin en este ejemplo es ipsec1, de modo que el archivo resultante es denominado /etc/ sysconfig/network-scripts/ifcfg-ipsec1.
DST=X.X.X.XTYPE=IPSEC ONBOOT=no IKE_METHOD=PSK
Para la estacin de trabajo A, X.X.X.X es la direccin IP de la estacin de trabajo B. Para la estacin de trabajo B, X.X.X.X es la direccin IP de la estacin de trabajo A. Esta conexin no est configurada para iniciarse con el arranque del equipo (ONBOOT=no) y utiliza el mtodo de autenticacin de clave pre-compartida (IKE_METHOD=PSK). El siguiente es el contenido del archivo de clave pre-compartida (denominado /etc/sysconfig/ network-scripts/keys-ipsec1) que las dos estaciones de trabajo necesitan para poder autenticarse entre ellas. El contenido de este archivo debe ser idntico en ambas estaciones de trabajo, y solo el usuario root debera ser capaz de leer o escribir en este archivo.
IKE_PSK=Key_Value01
Importante
Para modificar el archivo keys-ipsec1 de modo que solo el usuario root pueda leerlo o editarlo, utilice el siguiente comando luego de haberlo creado:
[root@myServer ~] # chmod 600 /etc/sysconfig/network-scripts/keys-ipsec1
Para modificar la clave de autenticacin en cualquier momento, edite el archivo keys-ipsec1 en ambas estaciones de trabajo. Las dos claves de autenticacin deben ser idnticas para una conexin correcta.
115
El siguiente ejemplo muestra la configuracin especfica de la primera fase de la conexin con el equipo remoto. El archivo es denominado X.X.X.X.conf, donde X.X.X.X es la direccin IP del equipo IPsec remoto. Fijese que este archivo es generado automticamente cuando el tnel IPsec es activado y no debera ser editado directamente.
remote X.X.X.X{ exchange_mode aggressive, main; my_identifier address; proposal { encryption_algorithm 3des; hash_algorithm sha1; authentication_method pre_shared_key; dh_group 2 ; } }
El archivo de configuracin de la etapa 1 que se ha creado por defecto cuando se inicia una conexin IPsec, contiene las siguientes directivas utilizadas por la implementacin de IPsec de Fedora: remote X.X.X.X Indica que las siguientes lneas en este archivo de configuracin se aplican solo al nodo remoto identificado por la direccin IP X.X.X.X. exchange_mode aggressive La configuracin establecida por defecto en Fedora para IPsec utiliza un mtodo de autenticacin agresivo, que disminuye los excedentes de la conexin, permitiendo la configuracin de varias conexiones IPsec con mltiples equipos. my_identifier address Indica el mtodo de identificacin a ser utilizado cuando se autentican nodos. Fedora utiliza direcciones IP para identificar nodos. encryption_algorithm 3des Especifica el cifrador de encriptacin utilizado durante la autenticacin. Por defecto, se usa el Estndar de Encriptacin de Datos Triple (3DES, por las iniciales en ingls de Triple Data Encryption Standard). hash_algorithm sha1; Indica el algoritmo hash utilizado durante la negociacin entre los nodos de la etapa 1. Por defecto, se utiliza un algoritmo de hash seguro (SHA, por las iniciales en ingls de Secure Hash Algorithm). authentication_method pre_shared_key Indica el mtodo de autenticacin utilizado durante la negociacin del nodo. Por defecto, Fedora utiliza una clave pre-compartida para la autenticacin. dh_group 2 Indica el nmero de grupo Diffie-Hellman para establecer claves de sesiones generadas dinmicamente. Por defecto, se utiliza modp1024 (segundo grupo).
116
X.X.X.X en la directiva include es la direccin IP de la estacin de trabajo B. Y para la estacin de trabajo B, lo contrario. A continuacin mostramos un archivo racoon.conf tpico cuando se activa una conexin IPsec.
# Racoon IKE daemon configuration file. # See 'man racoon.conf' for a description of the format and entries. path include "/etc/racoon"; path pre_shared_key "/etc/racoon/psk.txt"; path certificate "/etc/racoon/certs"; sainfo anonymous { pfs_group 2; lifetime time 1 hour ; encryption_algorithm 3des, blowfish 448, rijndael ; authentication_algorithm hmac_sha1, hmac_md5 ; compression_algorithm deflate ; } include "/etc/racoon/X.X.X.X.conf";
Este archivo racoon.conf establecido por defecto incluye caminos definidos para la configuracin de IPsec, claves pre-compartidas y certificados. Los campos de sainfo anonymous describen la etapa SA 2 entre los nodos IPsec el tipo de conexin IPsec (incluyendo los algoritmos de encriptacin utilizados soportados), y el mtodo de intercambio de claves. La siguiente lista define los campos de la estapa 2: sainfo anonymous Indica que SA puede iniciarse annimamente con cualquier par ofrecido que se corresponda con las credenciales de IPsec. pfs_group 2 Define el protocolo de intercambio de claves Diffie-Hellman, que determina el mtodo por el cual los nodos IPsec establecen una clave de sesin mutua y temporal para la segunda etapa de la conectividad IPsec. Por defecto, la implementacin en Fedora de IPsec utiliza el segundo (o modp1024) de los grupos Diffie-Hellman de intercambio de claves criptogrficas. EL segundo grupo utiliza una exponenciacin modular de 1024 bits que evita que los atacantes puedan decriptar transmisiones IPsec, an si una de las claves privadas ha sido vulnerada. lifetime time 1 hour Este parmetro indica el perodo de vida de una SA y puede ser medido o bien en unidades de tiempo, o bien con datos. La implementacin en Fedora establecida por defecto de IPsec especifica un tiempo de vida de una hora. encryption_algorithm 3des, blowfish 448, rijndael Indica la cifra de encriptacin soportada para la etapa 2. Fedora soporta 3DES, Blowfish de 448 bits, y Rijndael (la cifra utilizada en el Estndard avanzado de encriptacin, or AES, por las iniciales en ingls de Advanced Encryption Standard). authentication_algorithm hmac_sha1, hmac_md5 Muestra los algoritmos hash soportados para la autenticacin. Los mdulos soportados son los cdigos de autenticacin de mensajes de hash sha1 y md5 (HMAC).
117
compression_algorithm deflate Indica el algoritmo de compresin Deflate para el soporte de IP Payload Compression (IPCOMP), que potencialmente permite transmisiones ms rpidas de datagramas IP sobre conexiones ms lentas. Para iniciar una conexin, utilice el siguiente comando en cada uno de los equipos:
[root@myServer ~]# /sbin/ifup <nickname>
donde <nickname> es el nombre que ha indicado para la conexin IPsec. Para verificar la conexin IPsec, ejecute la herramienta tcpdump para conocer los paquetes de red que estn siendo transferidos entre los equipos, y verifique que estn encriptados mediante IPsec. El paquete debera incluir un encabezado AH y debera mostrarse como un paquete ESP. ESP significa que est encriptado. Por ejemplo:
[root@myServer ~]# tcpdump -n -i eth0 host <targetSystem> IP 172.16.45.107 > 172.16.44.192: AH(spi=0x0954ccb6,seq=0xbb): ESP(spi=0x0c9f2164,seq=0xbb)
Figura 2.11. Una conexin por tnel IPsec de tipo red-a-red El siguiente diagrama muestra dos LANs diferentes separadas por Internet. Estas LANs utilizan enrutadores IPsec para autenticar e iniciar una conexin utilizando un tnel seguro a travs de Internet. Los paquetes en trnsito entre estas dos LANs que sean interceptados, necesitaran un mtodo de decriptado de tipo fuerza bruta para poder atravesar la proteccin que poseen. El proceso de comunicacin de un nodo en el rango IP 192.168.1.0/24, con otro del rango IP 192.168.1.0/24 es completamente transparente a los nodos, al igual que el proceso, encriptado, decriptado, y enrutado de los paquetes IPsec, es completamente manipulado por el enrutador IPsec. La informacin necesaria para una conexin de tipo red-a-red incluye: La direccin IP externamente accesible del enrutador dedicado IPsec
118
Los rangos de direccin de red de LAN/WAN ofrecidos por los enrutadores IPsec (como por ejemplo, 192.168.1.0/24 or 10.0.1.0/24) Las direcciones IP de los dispositivos de las puertas de enlace que enrutan los datos desde los nodos de red hacia Interne Un nombre nico, por ejemplo, ipsec1. Esto es utilizado para identificar la conexin IPsec y poder identificarla de otros dispositivos o conexiones. Una clave de encriptado generada manualmente, o automticamente mediante la utilizacin de racoon Una clave de autenticacin pre-compartida que es utilizada a lo largo de la etapa inicial de la conexin, y que tambin ser utilizada luego para intercambiar claves de encriptado durante de la sesin.
Figura 2.12. IPsec red-a-red Opciones alternativas para la configuracin de red pueden establecer un cortafuegos entre Internet y cada enrutador IP, y un cortafuegos de intranet entre el enrutador IPsec y la puerta de enlace de la subred. En enrutador IPsec y la puerta de enlace para la subred puede ser un sistema con dos dispositivos Ethernet: uno con una direccin IP pblica que acta como un enrutador IPsec; y otro con una direccin Ip privada que acta como la puerta de enlace para la subred privada. Cada enrutador IPsec puede utilizar la puerta de enlace para sus redes privadas, o una puerta de enlace pblica para enviar los paquetes al otro enrutador IPsec. Utilice el siguiente procedimiento para configurar una conexin IPsec de tipo red-a-red: 1. En una terminal, ingrese system-config-network para iniciar la Herramienta de administracin de red.
119
2. En la pestaa de IPsec, haga clic en Nuevo para iniciar el asistente de configuracin de IPsec. 3. Haga clic en Siguiente para empezar a configurar una conexin IPsec de tipp red-a-red. 4. Ingrese un nombre de usuario nico para la conexin, por ejemplo, ipsec0. Si lo necesita, tilde la casilla para que automticamente se active la conexin cuando se inicie el equipo. Haga clic en Siguiente para continuar. 5. Seleccione Encriptado de red a red (VPN) como el tipo de conexin, y luego haga clic en Siguiente. 6. Seleccione el tipo de mtodo de encriptado a utilizarse: manual o automtico. Si selecciona encriptado manual, deber indicar ms adelante una clave de encriptado. Si selecciona encriptado automtico, el demonio racoon se encarga de administrar la clave del encriptado. El paquete ipsec-tools debe estar instalado si quiere utilizar la encriptacin automtica. Haga clic en Siguiente para continuar. 7. En la pgina Red local, ingrese la siguiente informacin: Local Network Address La direcin IP del dispositivo en el enrutador IPsec conectado a la red privada. Local Subnet Mask La mscara de subred de la direccin IP de la red local. Local Network Gateway La puerta de enlace para la subred privada. Haga clic en Siguiente para continuar.
120
Figura 2.13. Informacin de red local 8. En la pgina de Red remota, ingrese la siguiente informacin: Remote IP Address La direccin IP pblica capaz de recibir trfico del enrutador IPsec para la otra red privada. En nuestro ejemplo, para ipsec0, ingrese la direccin IP pblica capaz de recibir trfico de upsec1, y viceversa. Remote Network Address La direccin de red de la subred privada detrs del otro enrutador IPsec. En nuestro ejemplo, ingrese 192.168.1.0 si est configurando ipsec1, e ingrese 192.168.2.0 si est configurando ipsec0. Remote Subnet Mask La mscara de subred de la direccin IP remota. Remote Network Gateway La direccin Ip de la puerta de enlace para la direccin de red remota. Si en la etapa 6 se ha seleccionado cifrado manual, especifique la clave de cifrado a ser utilizada, o haga clic en Generar para crear una. Especifique una clave de autenticacin o haga clic en Generar para crear una. Esta clave puede ser cualquier combinacin de nmeros y letras. Haga clic en Siguiente para continuar.
121
Figura 2.14. Informacin de red remota 9. Verifique la informacin en la pgina IPsec Resumen, y luego haga clic en el botn Aplicar. 10. Seleccione Archivo => Guardar para guardar la configuracin. 11. Seleccione la conexin IPsec de la lista, y luego haga clic en Activar para activar la conexin. 12. Habilitando reenvo IP: a. Edite el archivo /etc/sysctl.conf y establezca net.ipv4.ip_forward a 1. b. Use el siguiente comando para habilitar los cambios:
[root@myServer ~]# /sbin/sysctl -p /etc/sysctl.conf
El programa de red para activar la conexin IPsec automticamente crea rutas de red para enviar paquetes a travs del enrutador IPsec, si es necesario.
122
desde el exterior que tiene acceso a Internet, mientras eth1 acta como un punto de enrutamiento para procesar y transmitir los paquetes LAN de un nodo de red a otro. La conexin IPsec entre cada red utiliza una clave pre-compartida con el valor de r3dh4tl1nux, y los administradores de A y B estn de acuerdo en permitir que racoon genere automticamente y comparta una clave de autenticacin entre cada enrutador IPsec. El administrador de LAN A decide identificar a la conexin IPsec como ipsec0, mientras que el administrador de LAN B decide identificarla como ipsec1. El siguiente ejemplo muestra los contenidos del archivo ifcfg para una conexin IPsec de tipo reda-red para LAN A. El nico nombre para identificar la conexin en este ejemplo es ipsec0, de modo que el archivo resultante es /etc/sysconfig/network-scripts/ifcfg-ipsec0.
TYPE=IPSEC ONBOOT=yes IKE_METHOD=PSK SRCGW=192.168.1.254 DSTGW=192.168.2.254 SRCNET=192.168.1.0/24 DSTNET=192.168.2.0/24 DST=X.X.X.X
La siguiente lista describe los contenidos de este archivo: TYPE=IPSEC Especifica el tipo de conexin. ONBOOT=yes Indica que la conexin debera iniciarse en el arranque. IKE_METHOD=PSK Indica que la conexin utiliza el mtodo de clave pre-compartida para su autenticacin. SRCGW=192.168.1.254 La direccin IP de la puerta de enlace origen. Para LAN A, es la puerta de enlace de LAN A, y para LAN B, la puerta de enlace LAN B. DSTGW=192.168.2.254 La direccin IP de la puerta de enlace destino. Para LAN A, es la puerta de enlace de LAN B, y para LAN B, la puerta de enlace de LAN A. SRCNET=192.168.1.0/24 Indica la red de origen para la conexin IPsec, que en nuestro ejemplo es el rango de red para LAN A. DSTNET=192.168.2.0/24 Indica la red destino para la conexin IPsec, que en nuestro ejemplo, es el rango de red para LAN B. DST=X.X.X.X La direccin IP accesible desde el exterior de LAN B. El siguiente ejemplo es el contenido del archivo de clave pre-compartida denominado /etc/ sysconfig/network-scripts/keys-ipsecX (donde X es 0 para LAN A, y 1 para LAN B), que
123
utilizan ambas redes para autenticarse entre ellas. Los contenidos de este archivo deberan ser idnticos y solo el usuario root debera ser capaz de leer o escribir sobre este archivo.
IKE_PSK=r3dh4tl1nux
Importante
Para modificar el arhivo keys-ipsecX de modo que solo el usuario root pueda leerlo o editarlo, utilice el siguiente comando luego de haberlo creado:
chmod 600 /etc/sysconfig/network-scripts/keys-ipsec1
Para modificar la clave de autenticacin en cualquier momento, edite el archivo keys-ipsecX en ambos enrutadores IPsec. Ambas claves deben ser idnticas para una conexin correcta. En el siguiente ejemplo se muestran los contenidos del archivo de configuracin /etc/racoon/ racoon.conf para la conexin IPsec. Fjese que la lnea include al final del archivo es generada automticamente y solo aparece si el tunel IPsec est ejecutndose.
# Racoon IKE daemon configuration file. # See 'man racoon.conf' for a description of the format and entries. path include "/etc/racoon"; path pre_shared_key "/etc/racoon/psk.txt"; path certificate "/etc/racoon/certs"; sainfo anonymous { pfs_group 2; lifetime time 1 hour ; encryption_algorithm 3des, blowfish 448, rijndael ; authentication_algorithm hmac_sha1, hmac_md5 ; compression_algorithm deflate ; } include "/etc/racoon/X.X.X.X.conf"
La siguiente es la configuracin especfica para la conexin con la red remota. El archivo es denominado X.X.X.X.conf (donde X.X.X.X es la direccin IP del enrutador IPsec remoto). Fjese que este archivo es automticamente generado cuando el tnel IPsec es activado y no debera ser editado directamente.
remote X.X.X.X{ exchange_mode aggressive, main; my_identifier address; proposal { encryption_algorithm 3des; hash_algorithm sha1; authentication_method pre_shared_key; dh_group 2 ; } }
Antes de empezar la conexin IPsec, debera ser habilitado el reenvo de IP en el kernel. Para hacerlo: 1. Edite el archivo /etc/sysctl.conf y establezca net.ipv4.ip_forward a 1.
124
Las conexiones estn activas, y tanto LAN A como LAN B son capaces de comunicarse entre ellas. Las rutas fueron creadas automticamente mediante la inicializacin de un programa que fue activado al ejecutarse ifup en la conexin IPsec. Para mostrar una lista de rutas para la red, utilice el siguiente comando:
[root@myServer ~] # /sbin/ip route list
Para verificar la conexin IPsec, ejecute la herramienta tcpdump en el dispositivo enrutable externamente (en nuestro ejemplo, eth0) para ver los paquetes de red que estn siendo transferidos entre los equipos (o redes) y verifique que estn encriptados mediante IPsec. Por ejemplo, para verificar la conectividad IPsec de LAN A, utilice el siguiente comando:
[root@myServer ~] # tcpdump -n -i eth0 host lana.example.com
El paquete debera incluir un encabezado AH y debera mostrarse como paquetes ESP. ESP significa que est encriptado. Por ejemplo (las lneas invertidas indican que la lnea contina):
12:24:26.155529 lanb.example.com > lana.example.com: AH(spi=0x021c9834,seq=0x358): \ lanb.example.com > lana.example.com: ESP(spi=0x00c887ad,seq=0x358) (DF) \ (ipip-proto-4)
donde <nickname> es el apodo configurado antes, como por ejemplo, ipsec0. Para detener la conexin, use el siguiente comando:
[root@myServer ~] # /sbin/ifdown <nickname>
2.8. Cortafuegos
La seguridad de la informacin es comnmente entendida como un proceso, y no como un producto. Sin embargo, generalmente las implementaciones estndar de seguridad utilizan alguna forma de mecanismo especfico para controlar los accesos privilegiados y restringir los recursos de red a usuarios que estn debidamente autorizados para ello, y al mismo tiempo poder identificarlos
125
y rastrearlos. Fedora incluye diferentes herramientas para ayudar a los administradores y a los ingenieros en seguridad, con los diferentes problemas que puedan surgir al controlar los accesos jerarquizados a la red. Los cortafuegos son uno de los componentes fundamentales para la implementacin de la seguridad en una red. Diversos proveedores ofrecen herramientas para cortafuegos para todos los niveles del mercado: desde usuarios hogareos protegiendo los datos de su PC, hasta herramientas para centros de datos que permitan proteger los datos vitales de una empresa. Los cortafuegos pueden ser herramientas para un slo equipo fsico, como las aplicaciones de cortafuego que ofrecen Cisco, Nokia y Sonicwall. Proveedores como Checkpoint, McAfee y Symantec tambin han desarrollado herramientas de cortafuegos de cdigo propietario, tanto para el hogar como para los segmentos comerciales del mercado. Adems de las diferencias entre los cortafuegos basados en hardware o en software, existen tambin diferencias en la manera en que el cortafuego funciona, separando una herramienta de otra. Tabla 2.2, Tipos de cortafuegos describe tres tipos comunes de cortafuegos, y cmo funcionan cada uno de ellos: Mtodo Descripcin NAT Network Address Translation (NAT), coloca direcciones IP de subredes privadas, detrs de un pequeo grupo de direcciones IP pblicas, enmascarando todas las peticiones hacia un recurso, en lugar de varios. El kernel de Linux tiene una funcionalidad NAT predefinida, mediante el subsistema del kernel Netfilter. Ventajas Se puede configurar transparentemente para mquinas en una LAN. La proteccin de muchas mquinas y servicios detrs de una o ms direcciones IP externas simplifica las tareas de administracin. La restriccin del acceso a usuarios dentro y fuera de la LAN se puede configurar abriendo o cerrando puertos en el cortafuego/puerta de enlace NAT. Personalizable a travs del utilitario iptables. No necesita cualquier personalizacin del lado del cliente, dado que toda la actividad de red se filtra en el nivel del ruteador en vez de a nivel de aplicacin. Debido a que los paquetes no se transmiten a travs de un proxy, el rendimiento de la red es ms rpida debido a la conexin directa entre el cliente y el equipo remoto. Desventajas No se puede prevenir la actividad maliciosa una vez que los usuarios se conecten a un servicio fuera del cortafuegos.
Filtros Un cortafuegos de filtro de de paquete lee cada uno Paquete de los datos que viajan a travs de una LAN. Puede leer y procesar paquetes segn la informacin de sus encabezados, y filtrar el paquete basndose en un conjunto de reglas programables implementadas por el administrador del cortafuegos. El kernel de Linux tiene una funcionalidad de filtro de paquetes predefinida, mediante el subsistema del kernel Netfilter.
No se pueden filtrar paquetes para contenidos como en los cortafuegos proxy. Procesa los paquetes en la capa del protocolo, pero no los puede filtrar en la capa de una aplicacin. Las arquitecturas de red complejas pueden complicar el armado de las reglas de filtrado de paquetes, especialmente si se lo hace con el enmascarado de IP o con subredes locales y redes de zonas desmilitarizadas.
126
Netfilter e IPTables
Mtodo Descripcin Proxy El cortafuegos proxy filtra todas las peticiones de los clientes LAN de un determinado protocolo, o tipo, hacia una mquina proxy, la que luego realiza esas mismas peticiones a Internet, en nombre del cliente local. Una mquina proxy acta como un bfer entre usuarios remotos maliciosos y la red interna de mquinas clientes.
Ventajas Le da a los administradores el control sobre qu aplicaciones y protocolos funcionan fuera de la LAN. Algunos servidores proxy, pueden hacer cache de datos accedidos frecuentemente en vez de tener que usar la conexin a Internet para bajarlos. Esto ayuda a reducir el consumo de ancho de banda. Los servicios de proxy pueden ser registrados y monitoreados ms de cerca, lo que permite un control ms estricto sobre el uso de los recursos de la red.
Desventajas Los proxies son a menudo especficos a una aplicacin (HTTP, Telnet, etc.), o restringidos a un protocolo (la mayora de los proxies funcionan slo con servicios que usan conexiones TCP). Los servicios de aplicacin no se pueden ejecutar detrs de un proxy, por lo que sus servidores de aplicacin deben usar una forma separada de seguridad de red. Los proxies se pueden volver cuellos de botellas, dado que todos los pedidos y transmisiones son pasados a travs de una fuente, en vez de hacerlo directamente desde el cliente al servicio remoto.
127
En una instalacin por defecto de Fedora existe un cortafuegos entre su computadora o red, y cualquier otra red considerada como no segura, como por ejemplo lo es Internet. Determina qu servicios en su computadora pueden ser accedidos por usuarios remotos. Un cortafuegos correctamente configurado puede incrementar enormemente la seguridad de su sistema. Se recomienda que configure un cortafuegos para cualquier sistema Fedora que tenga una conexin a Internet.
Nota
Firewall Configuration Tool solo configura un cortafuego bsico. Si el sistema necesita reglas ms complejas, dirjase a la Seccin 2.9, IPTables para conocer ms detalles sobre la configuracin de reglas especficas de iptables.
128
Advertencia
Las configuraciones del cortafuego y cualquier reglas de cortafuegos personalizadas se almacenan en el archivo /etc/sysconfig/iptables. Si elije Deshabilitado y hace clic en Aceptar, estas configuraciones y reglas del cortafuego se perdern. Habilitado Esta opcin configura el sistema para rechazar conexiones entrantes que no una respuesta a peticiones que han sido realizadas, tales como respuestas DNS o peticiones DHCP. Si se necesita el acceso a servicios de esta mquina, puede elegir habilitar servicios especficos a travs del cortafuego. Si est conectando su sistema a Internet, pero no planea hacerlo funcionar como servidor, esta es la opcin ms segura.
129
Mail (SMTP) SMTP es un protocolo que permite que equipos remotos puedan conectarse directamente con su mquina para enviar correos electrnicos. No necesita activar este servicio si obtiene su correo electrnico a travs de su servidor ISP, utilizando POP3 o IMAP, o si utiliza una herramienta como fetchmail. Para permitir el envo de correos electrnico hacia su mquina, seleccione esta casilla. Tenga en cuenta que una configuracin incorrecta de un servidor SMTP puede permitir que otros equipos utilicen su servidor para enviar correo basura. NFS4 El Sistema de Archivos de Red (NFS, por las siglas en ingls de Network File System), es un protocolo para compartir archivos comnmente utilizado en sistemas *NIX. La versin 4 de este protocolo es ms segura que sus predecesoras. Si quiere compartir archivos y directorios de su sistema con otros en red, tilde esta casilla. Samba Samba es una implementacin del protocolo de red SMB de cdigo propietario de Microsoft. Si necesita compartir archivos, directorios o impresoras conectadas localmente con computadoras con Microsoft Windows, tilde esta casilla.
130
Uso de IPTables
Para asegurarse de que iptables se inicie cuando el sistema arranque, use el siguiente comando:
[root@myServer ~] # chkconfig --level 345 iptables on
Nota
El servicio ip6tables puede ser desactivado si usted intenta utilizar solamente el servicio iptables. Si desactiva el servicio ip6tables, recuerde tambin desactivar la red IPv6. Nunca deje un dispositivo de red activo sin su correspondiente cortafuegos. Para forzar a iptables para que se inicie por defecto cuando el sistema arranque, use el siguiente comando:
[root@myServer ~] # chkconfig --level 345 iptables on
Esto fuerza a iptables a que se inicie cuando el sistema arranque en los niveles de ejecucin 3, 4 o 5.
La opcin -A especifica que la regla se agregar a la <cadena>. Cada cadena se compone de una o ms reglas, por lo que se conoce tambin como un conjunto de reglas. Las tres cadenas predefinidas son INPUT, OUTPUT, y FORWARD. Estas cadenas son permanentes y no se pueden borrar. La cadena especifica el punto en el que el paquete es manipulado. La opcin -j <destino> especifica el destino de la regla; es decir, qu hacer si un paquete coincide con la regla. Ejemplos de destinos predeterminados son ACCEPT, DROP, y REJECT. Vaya a la pgina man de iptables para ms informacin sobre las cadenas, opciones y destinos disponibles.
131
La poltica establecida por defecto para una cadena puede ser DROP o ACCEPT. Los administradores de sistemas orientados por la seguridad implementan una poltica por defecto de DROP, y solo permiten unos pocos paquetes especficos, luego de ser analizados uno por uno. Por ejemplo, las siguientes polticas bloquean todos los paquetes que lleguen a o que partan desde una puerta de enlace:
[root@myServer ~ ] # iptables -P INPUT DROP [root@myServer ~ ] # iptables -P OUTPUT DROP
Es tambin algo recomendado que a cualquier paquete reenviado trfico de red que es enrutado desde el cortafuegos hacia su nodo de destino tambin le sea negada la entrada, para poder as restringir las posibles exposiciones inadvertidas de clientes internos a Internet. Para hacerlo, utilice la siguiente regla:
[root@myServer ~ ] # iptables -P FORWARD DROP
Cuando haya establecido las polticas por defecto para cada cadena, puede crear y guardar las reglas siguientes para su red y requerimientos de seguridad particulares. Las siguientes secciones describen cmo guardar las reglas iptables y delinea algunas de las reglas que puede implementar cuando construya su cortafuego con iptables.
Las reglas se guardan en el archivo /etc/sysconfig/iptables y se aplican cada vez que el servicio o la computadora se reinician.
Esto permite a los usuarios navegar sitios que se comunican usando el puerto estndar 80. Para permitir el acceso a sitios web seguros (por ejemplo, https://www.ejemplo.com/), tambin necesita proveer el acceso al puerto 443, como sigue:
132
Importante
Cuando se crea un conjunto de reglas de iptables, el orden es importante. Si una regla especifica que cualquier paquete desde la subred 192.168.100.0/24 debe ignorarse, y esto es seguido por una regla que permite los paquetes de 192.168.100.13 (que est dentro de la subred ignorada), la segunda regla se ignora. La regla para permitir los paquetes de 192.168.100.13 debe estar antes de la que elimina los restantes de la subred. Para insertar una regla en una ubicacin especfica en una cadena existente, use la opcin -I. Por ejemplo:
[root@myServer ~ ] # iptables -I INPUT 1 -i lo -p all -j ACCEPT
Esta regla es insertada como la primera regla en la cadena INPUT para permitir el trfico en el dispositivo loopback local. Pueden suceder que en determinadas oportunidades se necesite un acceso remoto a la LAN. Los servicios seguros, por ejemplo SSH, se pueden utilizar para encriptar la conexin remota a los servicios de la LAN. Administradores con recursos basados en PPP, o accesos de tipo dial-up (como bancos de mdems, o cuentas masivas de ISP), pueden ser utilizados para sortear con xito las barreras del cortafuegos. Debido a que son conexiones directas, las conexiones de mdems se encuentran tpicamente detrs de un cortafuegos/puerta de enlace. Sin embargo, pueden hacerse excepciones para los usuarios remotos con conexiones de banda ancha. Usted puede configurar iptables para aceptar conexiones de clientes remotos SSH. Por ejemplo, las siguientes reglas permiten acceso remoto SSH:
[root@myServer ~ ] # iptables -A INPUT -p tcp --dport 22 -j ACCEPT [root@myServer ~ ] # iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
Estas reglas permiten ingreso y egreso para un sistema individual, como una PC directamente conectada a Internet, o a un cortafuegos/puerta de enlace. Sin embrago, no permiten a los nodos detrs de un cortafuegos/puerta de enlace que tengan acceso a estos servicios. Para permitir acceso LAN a estos servicios, puede utilizar Network Address Translation (NAT) con reglas de filtro iptables.
133
Los enrutadores de borde (como los cortafuegos) pueden recibir transmisiones entrantes desde Internet y enrutar los paquetes hacia el nodo LAN correspondiente. Al mismo tiempo, los cortafuegos/ puertas de enlace pueden enrutar peticiones salientes de un nodo de la LAN hacia el servicio de Internet remoto. Este reenvo de trafico de red puede algunas veces convertirse en algo peligroso, especialmente con la disponibilidad de herramientas de crackeo modernas que pueden espiar direcciones IP internas y hacer que el el equipo del atacante remoto acte como un nodo de su LAN. Para impedir esto, iptables provee polticas de ruteado y reenvo que se pueden implementar para prevenir el uso anormal de los recursos de red. La cadena FORWARD permite a un administrador controlar hacia dnde se pueden rutear los paquetes dentro de la LAN. Por ejemplo, para permitir el reenvo para toda la LAN (asumiendo que el cortafuego/puerta de enlace tiene asignado una direccin IP interna en eth1), use las siguientes reglas:
[root@myServer ~ ] # iptables -A FORWARD -i eth1 -j ACCEPT [root@myServer ~ ] # iptables -A FORWARD -o eth1 -j ACCEPT
Esta regla le da a los sistemas detrs del cortafuego/puerta de enlace el acceso a la red interna. La puerta de enlace rutea los paquetes desde un nodo de la LAN a su nodo destino deseado, pasando todos los paquetes a travs del dispositivo eth1.
Nota
Por defecto, la poltica IPv4 en kernels de Fedora deshabilita el soporte para reenvo de IP. Esto evita que mquinas que corran Fedora funcionen como un ruteador dedicado. Para habilitar el reenvo de IP, use el siguiente comando:
[root@myServer ~ ] # sysctl -w net.ipv4.ip_forward=1
Este cambio en la configuracin slo es vlido para la sesin actual; no persiste luego de un reinicio de equipo o del servicio de red. Para poner el reenvo de IP permanente, edite el archivo/etc/sysctl.conf como sigue: Ubique la siguiente lnea:
net.ipv4.ip_forward = 0
134
Esta regla utiliza la tabla de comparacin de paquetes NAT (-t nat) y especifica la cadena predefinida POSTROUTING para NAT (-A POSTROUTING) en el dispositivo externo del cortafuegos (-o eth0). POSTROUTING permite que los paquetes puedan ser alterados mientras estn abandonando el dispositivo externo del cortafuegos. El destino -j MASQUERADE se especifica para enmascarar la direccin IP privada de un nodo con la direccin IP externa del cortafuego/puerta de enlace.
2.8.5.2. Preruteo
Si usted posee un servidor en su red interna que quiere que est disponible desde el exterior, puede utilizar -j DNAT, objetivo de la cadena PREROUTING de NAT para especificar una IP de destino, y un puerto donde los paquetes recibidos que pidan una conexin a su servicio interno, puedan ser reenviados. Por ejemplo, si quiere reenviar pedidos HTTP entrantes a su servidor HTTP Apache dedicado en 172.31.0.23, use el siguiente comando:
[root@myServer ~ ] # iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 172.31.0.23:80
Esta regla especifica que la tabla nat usa la cadena predefinida PREROUTING para enviar pedidos HTTP entrantes exclusivamente al la direccin IP destino listado 172.31.0.23.
Nota
Si tiene una poltica predeterminada de DROP en su cadena FORWARD, debe agregar una regla para reenviar todos los pedidos HTTP entrantes para que sea posible el ruteo NAT destino. Para hacerlo, use el siguiente comando:
[root@myServer ~ ] # iptables -A FORWARD -i eth0 -p tcp --dport 80 -d 172.31.0.23 -j ACCEPT
Esta regla reenva todos los pedidos HTTP entrantes desde el cortafuego al destino pretendido; el Servidor HTTP APache detrs del cortafuego.
135
Con este comando, todas las conexiones HTTP al puerto 80 provenientes desde fuera de la LAN son encaminadas al servidor HTTP en la red separada del resto de la red interna. Esta forma de segmentacin de red puede proveer seguridad permitiendo conexiones HTTP a mquinas en la red. Si el servidor HTTP est configurado para aceptar conexiones seguras, entonces el puerto 443 debe ser reenviado tambin.
Tambin se puede bloquear conexiones salientes que intenten suplantar los rangos de direcciones IP privadas para infiltrarse en su LAN. Por ejemplo, si su red usa el rango 192.168.1.0/24, se puede disear una regla que instruya al dispositivo de red del lado de Internet (por ejemplo, eth0) para que descarte cualquier paquete en ese dispositivo con una direccin en el rango IP de su red local. Dado que se recomienda rechazar paquetes reenviados como una poltica predeterminada, cualquier otra direccin IP mentida al dispositivo del lado externo (eth0) se rechaza automticamente.
[root@myServer ~ ] # iptables -A FORWARD -s 192.168.1.0/24 -i eth0 -j DROP
136
Nota
Existe una distincin entre los destinos DROP y REJECT cuando se trabaja con reglas agregadas. El destino RECHAZAR niega acceso y regresa un error de conexin denegada a los usuarios que intenten conectarse al servicio. El destino ABANDONAR, como su nombre lo indica, abandona el paquete sin previo aviso. Los administradores pueden usar su propia discrecin cuando usen estos destinos. Sin embargo, para evitar la confusin del usuario e intentos de continuar conectando, el destino REJECT es recomendado.
2.8.8. IPv6
La introduccin de la siguiente generacin del Protocolo de Internet, llamado IPv6, expande ms all de los lmites de las direcciones de 32-bit de IPv4 (o IP). IPv6 soporta direcciones de 128-bit, y las redes transportadoras que pueden soportar IPv6 son por lo tanto capaces de manejar un nmero ms grande de direcciones ruteables que el IPv4. Fedora soporta reglas de cortafuego para IPv6 utilizando el subsistema Netfilter 6 y el comando ip6tables. En Fedora 12, los servicios de IPv4 e IPv6 estn habilitados por defecto. La sintaxis del comando ip6tables es idntica a iptables en todos los aspectos menos en que soporta direcciones de 128-bit. Por ejemplo, use el siguiente comando para habilitar conexiones SSH en un servidor de red para IPv6:
137
Para ms informacin acerca de redes IPv6, vaya a la Pgina de Informacin sobre IPv6 en http:// www.ipv6.org/.
2.9. IPTables
Con Fedora estn incluidas herramientas avanzadas para el filtrado de paquetes el proceso dentro de kernel que permite controlar a los paquetes de red mientras estn ingresando a nuestro entorno, mientras lo estn recorriendo y cuando lo abandonan. Las versiones del kernel anteriores a la 2.4, dependan de ipchains para el filtrado de paquetes, y utilizaban listas de reglas aplicadas a los paquetes en cada paso del proceso de filtrado. El kernel 2.4 introdujo la utilizacin de iptables (tambin llamado netfilter), que si bien es similar a ipchains, expande enormemente el rango y la posibilidad de control disponible para filtrar los paquetes de red.
138
Filtrado de Paquete
El siguiente captulo se dedica a los conceptos bsicos del filtrado de paquetes, explica las diferentes opciones disponibles con los comandos de iptables, y explica como las reglas de filtrado pueden ser preservadas entre los reinicios del sistema. Dirjase a la Seccin 2.9.6, Recursos adicionales para obtener instrucciones sobre cmo construir reglas de iptables y configurar un cortafuego basado en ellas.
Importante
El mecanismo de un cortafuegos establecido por defecto con un kernel 2.4 o superior es iptables, pero iptables no puede ser utilizado si ipchains se encuentra en ejecucin. Si ipchains est presente en el momento del arranque, el kernel enva un mensaje de error y no puede iniciar iptables. La funcionalidad de ipchains no es afectada por estos errores.
139
PREROUTING Altera los paquetes que vienen de la red antes de ser ruteados. POSTROUTING Altera los paquetes de la red antes de ser enviados. Cada paquete de red recibido por, o enviado con un sistema Linux es sujeto de (o por) al menos una tabla. Sin embargo, un paquete puede ser sujeto por varias reglas pertenecientes a cada tabla, antes de poder emerger al final de la cadena. La estructura y el propsito de estas reglas pueden variar, pero por lo general lo que buscan es un paquete yendo o viniendo desde una direccin IP determinada (o conjunto de direcciones), cada vez que se utilice un protocolo y un servicio de red determinados.
Nota
Por defecto, las reglas del cortafuego se graban en los archivos /etc/sysconfig/ iptables o /etc/sysconfig/ip6tables. El servicio iptables se activa antes que cualquier otro servicio relacionado con DNS, cuando el sistema Linux es iniciado. Esto significa que las reglas de cortafuegos pueden slo hacer referencia a direcciones IP numricas (como por ejemplo, 192.168.0.1). En este tipo de reglas, los nombres del dominio (por ejemplo, host.example.com) producen errores. Dejando de lado el destino que tengan, cuando los paquetes se correspondan con alguna regla particular de alguna de estas tablas, un destino o accin es aplicada a ellos. Si la regla especifica una accin ACCEPT para un paquete que se corresponde con ella, ese paquete se saltea el resto de la regla y le es permitido continuar hacia su destino. Si una regla especifica una accin DROP, a ese paquete se le niega acceso al sistema y nada es devuelto al equipo que lo envi. Si una regla especifica la accin QUEUE, el paquete es colocado en un espacio de usuario. Si una regla especifica la accin optativa REJECT, el paquete es abandonado, pero un paquete de error es a la vez enviado a quien lo origin. Cada cadena posee una poltica por defecto para las acciones de ACCEPT, DROP, REJECT, o QUEUE. Si ninguna de estas reglas en la cadena se aplica al paquete, entonces el paquete es tratado de acuerdo a la poltica establecida por defecto. El comando iptables configura estas tablas, as como crea algunas nuevas si es necesario.
140
Las opciones utilizadas con reglas especficas de iptables, para que puedan ser vlidas, deben ser agrupadas lgicamente, fundamentadas en el propsito y las condiciones de la regla en su totalidad. En el recordatorio de esta seccin se explican opciones comnmente utilizadas para el comando iptables.
<table-name> Especifica a qu tabla se aplica la regla. Si se omite, se usa la tabla filter. <command> Especifica la accin a realizar, tal como agregar o eliminar una regla. <chain-name> Especifica la cadena a editar, crear o borrar. <parameter>-<option> pairs Los parmetros y las opciones asociadas que especifican cmo se procesa el paquete que coincide con una regla. La longitud y complejidad de un comando iptables puede cambiar significativamente, basado en su propsito. Por ejemplo, un comando para eliminar una regla de una cadena puede ser muy corto: iptables -D <chain-name> <line-number> En contraste, un comando que aada una regla que filtre los paquetes provenientes de una subred determinada, utilizando una variedad de parmetros y opciones especficas, podra ser bastante extenso. Cuando construya comandos iptables, es importante recordar que algunos parmetros y opciones requieren de otros parmetros y de otras opciones para poder constituir una regla vlida. Esto puede producir un efecto cascada, con los futuros parmetros pidiendo otros nuevos. La regla no ser vlida hasta que no se satisfagan cada parmetro y cada opcin que requiera otro conjunto de opciones y parmetros. Con iptables -h se puede ver una lista comprensiva de la estructura de los comandos de iptables.
141
-D <integer> | <rule> Elimina una regla de una cadena determinada por su nmero (como por ejemplo 5 para la quinta regla de una cadena), o por su especificacin. La especificacin de la regla debe coincidir exactamente con la regla existente. -E Renombra una cadena definida por el usuario. Una cadena definida por el usuario es cualquier cadena que no sea una de las ya existentes, establecidas por defecto. (Vea ms abajo la opcin -N para obtener informacin acerca de como crear cadenas definidas por el usuario). Este es un cambio de tipo esttico y no afecta la estructura de la tabla.
Nota
Si intenta renombrar alguna de las cadenas predeterminadas, el sistema informar un error de Coincidencia no encontrada. No puede renombrar las cadenas predeterminadas. -F Limpia la cadena seleccionada, lo que efectivamente borra cada regla en la cadena. Si no se especifica una cadena, limpia todas las reglas de cada cadena. -h Provee una lista de estructuras de comando, as como un resumen rpido de los parmetros y opciones de los comandos. -I [<integer>] Inserta una regla en la cadena en el punto especificado por el argumento entero dado por el usuario. Si no se especifica un argumento, se inserta al comienzo de la cadena.
Importante
Como se mencion arriba, el orden de las reglas en una cadena determina cules reglas se aplican a qu paquetes. Esto es importante para recordar cuando se agreguen reglas que usen la opcin -A o -I. Esto es especialmente importante cuando se agregan reglas utilizando la opcin -I con un argumento entero. Si especifica un nmero existente cuando agregue una regla a una cadena, iptables aade la nueva regla antes que (o sobre) la regla existente. -L Muestra todas las reglas en la cadena especificada luego del comando. Para listar todas las reglas de todas las cadenas en la tabla de filtro establecida por defecto, no especifique ni una cadena ni una tabla. De lo contrario, la siguiente sintaxis debera ser utilizada para listar las reglas de una cadena determinada, en una tabla determinada:
iptables -L <chain-name> -t <table-name>
Las opciones adicionales para la opcin -L del comando, que proveen el nmero de regla y permiten descripciones de reglas ms detalladas se describen en la Seccin 2.9.2.6, Opciones de listado. -N Crea una nueva cadena con un nombre dado por el usuario. El nombre debe ser nico, sino se mostrar un mensaje de error.
142
-P Pone la poltica predeterminada para la cadena especificada, para que cuando los paquetes atraviesen toda la cadena sin encontrar una regla con la que coincidan, se los enva al destino especificado, sea ACCEPT o DROP. -R Reemplaza una regla en la cadena especificada. El nmero de regla debe especificarse despus del nombre de la cadena. La primera regla en una cadena corresponde a la regla nmero uno. -X Borra una cadena definida por el usuario. No se puede borrar una cadena predefinida. -Z Pone los contadores de bytes y de paquetes a 0 en todas las cadenas de una tabla.
Nota
La distincin entre paquetes fragmentados y defragmentados es deseable, sin importar que los paquetes fragmentados sean una parte estndar del protocolo IP. Originalmente diseada para permitir que los paquetes IP viajen a travs de redes con marcos de diferentes tamaos, hoy en da la fragmentacin es comnmente utilizada para generar ataques DoS, mediante paquetes mal formados. En este aspecto, vale la pena saber que IPv6 no permita en absoluto la fragmentacin. -i Establece la interfaz de red entrante, como ser por ejemplo, eth0 o ppp0. Con iptables, este parmetro opcional solo puede ser utilizado con las cadenas de INPUT y FORWARD, cuando sean utilizadas con la tabla de filter, y la cadena PREROUTING con las tablas nat y mangle. Este parmetro tambin da soporte a todas las siguientes opciones especiales: El signo de exclamacin (!) Revierte la directiva, significando que las interfaces especificadas de excluyen de esta regla.
143
Signo de suma (+) Un carcter comodn utilizado para relacionar a todas las interfaces que se correspondan con una cadena determinada. Por ejemplo, el parmetro -i eth+ aplicara esta regla a cualquier interfaz Ethernet, pero excluira el resto de las interfases, como por ejemplo, ppp0. Si el parmetro -i se usa pero no se especifica una interfaz, entonces todas las interfases son afectadas por esta regla. -j Salta al destino especificado si un paquete coincide con una regla en particular. Los destinos estndares son ACCEPT, DROP, QUEUE, y RETURN. Existen tambin a disposicin algunas opciones extendidas, a travs de mdulos cargados por defecto con el paquete RPM iptables de Fedora. Algunas de las acciones vlidas de ese mdulo son LOG, MARK, y REJECT, entre otras. Para obtener mayor informacin acerca de estas y de otras acciones, consulte la pgina man de iptables. Esta opcin tambin puede usarse para dirigir el paquete coincidente a una regla particular en una cadena del usuario fuera de la cadena actual, para que se le puedan aplicar otras reglas al paquete. Si no se especifica un destino, el paquete se mueve a la regla siguiente sin hacer nada. El contador de esta regla, sin embargo, se incrementa por uno. -o Establece la interfaz de red saliente para una regla. Esta opcin slo es vlida para las cadenas OUTPUT y FORWARD en la tabla filter, y para la cadena POSTROUTING en las tablas nat y mangle tables. Este parmetro acepta las mismas opciones que el parmetro para la interfaz de red entrante (-i). -p <protocol> Establece el protocolo IP afectado por la regla. Este puede ser icmp, tcp, udp, o all, o tambin puede ser un valor numrico, representando alguno de estos protocolos, o alguno diferente. Tambin puede utilizar cualquiera de los protocolos listados en el archivo /etc/ protocols. El protocolo "all" significa que esta regla se aplica a todos los protocolos soportados. Si no se lista ningn protocolo con esta regla, por defecto se asume "all". -s Pone el fuente de un paquete particular usando la misma sintaxis del parmetro de destino (d).
144
Las definiciones de los servicios son provistas en el archivo /etc/services. Para una mejor lectura, es recomendable que se utilice el nombre de los servicios, en lugar de los nmeros de puertos.
Advertencia
Asegure el archivo /etc/services de manera de poder evitar que sea editado por usuarios no autorizados. Si este archivo es editable, los crackers pueden utilizarlo para habilitar puertos en su equipo que de otra manera permaneceran cerrados. Para segurar este archivo, ingrese los siguiente comandos siendo usuario root:
[root@myServer ~]# chown root.root /etc/services [root@myServer ~]# chmod 0644 /etc/services [root@myServer ~]# chattr +i /etc/services
145
Las posibles banderas son: ACK FIN PSH RST SYN URG ALL NONE Por ejemplo, una regla iptables que contenga las siguientes especificaciones solo se corresponder con paquetes TCP que tengan definida la marca SYN, y que no tengan definidas las marcas ACK ni FIN: --tcp-flags ACK,FIN,SYN SYN Use el signo de exclamacin (!) despus de --tcp-flags para revertir el efecto de coincidencia de la opcin. --tcp-option Intenta corresponderse con opciones especficas de TCP que puedan establecerse dentro de un paquete determinado. Esta opcin de correspondencia puede tambin revertirse con el signo de exclamacin (!).
146
147
Estos estados de conexin pueden ser utilizados combinados con otros, si se los separa con comas, como por ejemplo -m state --state INVALID,NEW. Mdulo mac Habilita el chequeo de la direccin MAC de hardware. El mdulo mac habilita la siguiente opcin: --mac-source Hace corresponder una direccin MAC de la tarjeta de interfaz de red que haya enviado el paquete. Para excluir una direccin MAC de la regla, coloque un signo de admiracin (!) luego de la opcin de correspondencia --mac-source. Vea en la pgina man de iptables para ms opciones de comparacin disponibles a travs de mdulos.
148
Hay opciones adicionales que se pueden usar despus del destino LOG para especificar la forma en que se realiza el log: --log-level Pone la prioridad de registrado del evento. Vaya a la pgina man de syslog.conf para una lista de los niveles de prioridad. --log-ip-options Registra todas las opciones puestas en la cabecera de un paquete IP. --log-prefix Pone una cadena de hasta 29 caracteres antes de la lnea de registro cuando se escribe. Esto es til cuando se escribe filtros syslog para usar junto con el registrado de paquetes.
Nota
Debido a una cuestin con esta opcin, se debe agregar un espacio al final del valor log-prefix. --log-tcp-options Registra todas las opciones puestas en la cabecera de un paquete TCP. --log-tcp-sequence Escribe el nmero de secuencia de un paquete en el log. REJECT Enva un paquete de error como respuesta al sistema remoto y descarta el paquete. El destino REJECT acepta --reject-with <type> (donde <type> es el tipo de rechazo) permitiendo que junto con el paquete errneo sea devuelta informacin ms detallada. El mensaje port-unreachable es el tipo de error establecido por defecto que ser dado si no hay otra opcin utilizndose. Vea la pgina man de iptables para una lista completa de opciones de <type>. Otras extensiones de accin, incluidas aquellas que son tiles para el enmascaramiento de IP utilizando la tabla nat, o mediante alteracin de paquete utilizando la tabla mangle, pueden ser encontradas en la pgina man de iptables.
149
--line-numbers Muestra las reglas en cada cadena junto a su orden numrico en dicha cadena. Esta opcin es til si se intenta eliminar una regla especfica de una cadena, o para saber dnde insertar una regla dentro de una cadena. -t <table-name> Especifica el nombre de una tabla. Si se omite, se usa filter como nombre de tabla.
Esto ejecuta el programa init de iptables, que a su vez ejecuta el programa /sbin/iptablessave y escribe la configuracin actual de iptables a /etc/sysconfig/iptables. El archivo existente /etc/sysconfig/iptables es guardado como /etc/sysconfig/iptables.save. La prxima vez que el sistema se reinicie, el programa init de iptables aplica nuevamente las reglas guardadas en /etc/sysconfig/iptables utilizando el comando /sbin/iptablesrestore. Si bien siempre es una buena idea probar una nueva regla iptables antes de incluirla en el archivo /etc/sysconfig/iptables, es posible copiar reglas iptables a este archivo, desde la misma versin de un sistema diferente del mismo archivo. Esto permite una rpida distribucin de los conjuntos de reglas iptables en diversas mquinas. Tambin puede grabar las reglas de iptables a un archivo separado para distribuir, respaldar u otros propsitos. Para guardar sus reglas de iptables, ingrese el siguiente comando como root:
[root@myServer ~]# iptables-save > <filename>where <filename> usuario para el conjunto de reglas. es un nombre definido por el
Importante
Si va a distribuir el archivo /etc/sysconfig/iptables a otras mquinas, debe teclear /sbin/service iptables restart para que las nuevas reglas tengan efecto.
Nota
Fjese la diferencia entre el comando iptables (/sbin/iptables), que es utilizado para manipular las tablas y cadenas que constituyen las funcionalidades de iptables, y el servicio iptables (/sbin/iptables service), que es utilizado para activar y desactivar el servicio de iptables en s.
150
Firewall Configuration Tool (system-config-securitylevel) Una interfaz grfica para crear, activar y grabar las reglas bsicas del cortafuego. Consulte la Seccin 2.8.2, Configuracin bsica de un cortafuego para obtener mayor informacin. /sbin/service iptables <option> Es utilizado para manipular varias funciones de iptables, mediante un script de inicio. Las siguientes opciones estn disponibles: start Si el cortafuego est configurado (es decir, /etc/sysconfig/iptables existe), se detienen todos los iptables completamente y se los vuelve a iniciar con el comando /sbin/ iptables-restore. Esta opcin funciona solamente si el mdulo de kernel ipchains no es cargado. Para chequear si este mdulo est cargado, teclee el siguiente comando como root:
[root@MyServer ~]# lsmod | grep ipchains
Si este comando no muestra salida, significa que no est cargado. Si es necesario, use el comando /sbin/rmmod para eliminar el mdulo. stop Si el cortafuego est ejecutndose, las reglas del cortafuego en la memoria son limpiadas y todos los mdulos y ayudantes de iptables son descargados. Si la directiva IPTABLES_SAVE_ON_STOP del archivo de configuracin /etc/sysconfig/ iptables-config es alterada de su valor original a yes, las reglas actuales sern guardadas en /etc/sysconfig/iptables y todas las reglas existentes sern trasladadas a /etc/ sysconfig/iptables.save. Dirjase a la Seccin 2.9.4.1, Archivo de Configuracin de los Scripts de Control de IPTables para obtener mayor informacin sobre el archivo iptables-config. restart Si un cortafuegos est ejecutndose, sus reglas en la memoria sern eliminadas, y el cortafuegos es iniciado nuevamente si es que est configurado en /etc/sysconfig/ iptables. Esta opcin solo funciona si el mdulo ipchains del kernel no est cargado. Si la directiva IPTABLES_SAVE_ON_RESTART en el archivo de configuracin /etc/ sysconfig/iptables-config es alterada de su valor original a yes, las reglas actuales sern guardadas en /etc/sysconfig/iptables y cualquier otra regla existente ser trasladada a /etc/sysconfig/iptables.save. Dirjase a la Seccin 2.9.4.1, Archivo de Configuracin de los Scripts de Control de IPTables para obtener mayor informacin sobre el archivo iptables-config. status Muestra el estado del cortafuego y lista todas las reglas activas La configuracin establecida por defecto para esta opcin muestra direcciones IP en cada regla. Para mostrar dominios y nombres de equipos, edite el archivo /etc/sysconfig/ iptables-config y modifique el valor de IPTABLES_STATUS_NUMERIC a no. Para obtener ms informacin acerca del archivo iptables-config, consulte la Seccin 2.9.4.1, Archivo de Configuracin de los Scripts de Control de IPTables . panic Limpia todas las reglas del cortafuego. Se configura como poltica para todas las tablas a DROP. Esta opcin puede ser til si se sabe que un servidor est comprometido. En vez de desconectarlo fsicamente de la red o apagarlo, puede usar esta opcin para detener todo trfico posterior, pero dejando a la computadora lista para un anlisis forense.
151
save Guarda las reglas del cortafuego en /etc/sysconfig/iptables utilizando iptables-save. Vea en la Seccin 2.9.3, Guardando las reglas de IPTalbes ms informacin.
Nota
Para utilizar los mismos comandos de initscript para controlar a netfilter para IPv6, sustituya ip6tables por iptables en los comandos /sbin/service listados en esta seccin. Para obtener mayor informacin acerca de IPv6 o netfilter, vea Seccin 2.9.5, IPTables e IPv6.
152
IPTables e IPv6
yes El valor predeterminado. Solo devuelve la direccin IP dentro de una salida de estado. no Devuelve el dominio o nombres de equipos en una salida de estado.
153
154
Cifrado
Existen dos clases principales de datos que deben ser protegidos: datos en reposo y datos en movimiento. Estas clases de datos son protegidas en forma similar utilizando tecnologa similar, pero la forma en que se implementa esta proteccin puede ser completamente diferente en un caso y en otro. Por s solo, ningn modo de proteccin puede prevenir nuestro sistema de todos los posibles mtodos en que puede llegar a ser daado, ya que la misma informacin puede estar en descanso y en movimiento en diferentes lugares y al mismo tiempo.
155
Captulo 3. Cifrado
El cifrado de archivos est orientado para proteger un archivo luego que ste haya abandonado su computadora, como cuando, por ejemplo, enva un CD a travs del correo postal. Algunas herramientas para cifrar archivos pueden dejar rastros de aquellos archivos que cifran, rastros que podran ser recuperados en algunas circunstancias por atacantes que tengan acceso fsico a su equipo. Para proteger de este tipo de ataques a los contenidos de los archivos, utilice la herramienta de cifrado de archivos combinada con alguna otra, como ser por ejemplo, el cifrado total del disco.
3.6. Shell seguro (SSH, por las iniciales en ingls de Secure Shell)
Shell seguro (SSH) es un protocolo de red muy poderoso que se utiliza para comunicarse con otros sistemas operativos a travs de un canal seguro. Las transmisiones realizadas con SSH estn cifradas y protegidas de cualquier tipo de intercepcin. Pueden utilizarse tambin registros de tipo criptogrfico para proveer un mejor mtodo de autenticacin adems del tradicional nombre de usuario y contrasea. SSH es muy fcil de activar. Simplemente iniciando el servicio SSH, el sistema comenzar a aceptar conexiones y les permitir acceder al sistema slo a aquellas que, durante el proceso de conexin, indiquen correctamente tanto un nombre de usuario como una contrasea. El TCP estndar para las conexiones SSH es 22, sin embargo esto puede cambiarse modificando el archivo de configuracin /etc/ssh/sshd_config, y reiniciando el servicio. Este archivo tambin contiene otras opciones de configuracin para SSH. SSH tambin ofrece la posibilidad de tneles cifrados entre computadoras, pero utilizando solamente 1 un puerto. El reenvo de puertos puede ser realizado sobre un tnel SSH , pero la utilizacin del reenvo de puertos no es tan fluido como una VPN.
1
http://www.redhatmagazine.com/2007/11/27/advanced-ssh-configuration-and-tunneling-we-dont-need-no-stinking-vpn-software
156
157
Captulo 3. Cifrado
Importante
El proceso, sin embargo, es fundamental para obtener una buena proteccin contra los intentos de descifrado. Slo djelo correr toda la noche. 6. Inicie su particin: cryptsetup --verbose --verify-passphrase luksFormat /dev/ VG00/LV_home 7. Abra el dispositivo nuevo cifrado: cryptsetup luksOpen /dev/VG00/LV_home home 8. Verifique que se encuentre presente: ls -l /dev/mapper | grep home 9. Genere un sistema de archivos: mkfs.ext3 /dev/mapper/home 10. Mntelo: mount /dev/mapper/home /home 11. Verifique que sea visible: df -h | grep home 12. Agregue lo siguiente a /etc/crypttab: home /dev/VG00/LV_home none 13. Edite su /etc/fstab, elimine la antigua entrada de /home, y agregue /dev/mapper/home /home ext3 defaults 1 2 14. Verifique su entrada fstab: mount /home 15. Restaure los contextos de seguridad de SELinux: /sbin/restorecon -v -R /home 16. Reinicie: shutdown -r now 17. La entrada en /etc/crypttab hace que su computadora le pida su frase de acceso luks al arrancar 18. Ingrese como root y restaure su respaldo
158
Enlaces de inters
COMO: Generando un volumen fsico (PV) cifrado, utilizando otro disco duro, pvmove, y un CD o 6 DVD vivo de Fedora
http://www.7-zip.org/
159
Captulo 3. Cifrado
Posicinese en el nuevo directorio: cd lugarnuevo Descomprima el archivo: (ingrese la contrasea cuando se le pida) 7za x Documentos.7z El archivo ya ha sido descomprimido en el nuevo directorio. Las instrucciones siguientes van a deshacer los pasos realizados y devolvern a su computadora el estado anterior en el que se encontraba. Dirjase al directorio superior inmediato: cd .. Borre el archivo de prueba creado y sus contenidos extrados: rm -r lugarnuevo Cierre la terminal: exit
http://www.7-zip.org/download.html
160
pidindole una frase de acceso para la llave. Elija una frase de acceso poderosa, pero que tambin le sea fcil de recordar. Haga clic en ''OK'' y la llave ser creada.
Advertencia
Si se olvida su frase de acceso, la clave no podr ser utilizada y cualquier dato encriptado por ella ser perdido. Para encontrar su ID de llave GPG, busque en la columna ''ID de llave'' junto a la llave creada recin. En la mayora de los casos, si se le solicita el ID de la llave, debera aadir "0x" al ID de la llave, como por ejemplo "0x6789ABCD". Debera realizar un respaldo de su llave privada y almacenarla en algn sitio seguro.
Advertencia
Si se olvida su frase de acceso, la clave no podr ser utilizada y cualquier dato encriptado por ella ser perdido. Para encontrar su ID de llave GPG, busque en la columna ''ID de llave'' junto a la llave creada recin. En la mayora de los casos, si se le solicita el ID de la llave, debera aadir "0x" al ID de la llave, como por ejemplo "0x6789ABCD". Debera realizar un respaldo de su llave privada y almacenarla en algn sitio seguro.
161
Captulo 3. Cifrado
correcta. Una clave DSA/ElGamal le permite no solo firmar documentos, sino tambin encriptar archivos. A continuacin, elija el tamao de la clave: el mnimo es de 768 bits, el establecido por defecto es de 1024 bits, el mayor tamao sugerido es de 2048 bits. Qu tamao prefiere? (1024). Nuevamente, el establecido por defecto es suficiente para la mayora de los usuarios, y representa un nivel de seguridad ''extremadamente'' poderoso. A continuacin, elija cundo expiar la clave. Es una buena idea elegir una fecha de expiracin en lugar de elegir la opcin establecida por defecto, que es ''ninguna.''. Si, por ejemplo, la direccin de correo electrnico de la clave deja de ser vlida, una fecha de expiracin le recordar a los dems que dejen de utilizar esa clave pblica. Por favor indique por cunto tiempo la clave debe ser vlida. 0 = la calve no expira, d = la clave expira en n das, w = la clave expira en n semanas, m = la clave expira en n meses, y = la clave expira en n aos. La clave es vlida por? (0) Ingresar un valor de 1y, por ejemplo, hace que la clave sea vlida durante un ao. (Puede modificar esta fecha de expiracin luego que la clave haya sido generada, si cambi de parecer.) Antes que el programa gpg> le pida informacin para la firma, aparece el siguiente mensaje: Es correcto (s/n)?. Ingrese scode> para finalizar el proceso. A continuacin, ingrese su nombre y direccin de correo electrnico. Recuerde que este proceso se trata de autenticarlo a usted como un individuo real. Por esta razn, incluya su verdadero nombre. No utilice apodos o alias, ya que esto oscurece o disimula su identidad. Ingrese su direccin de correo electrnico real para su clave GPG. Si elige una falsa o inexistente, ser ms difcil para los dems encontrar su clave pblica. Esto hace que autenticar sus comunicaciones sea ms difcil. Si est utilizando esta clave GPG para presentarse en una lista de correo, por ejemplo, ingrese la direccin de correo electrnico que usted utiliza con esa lista. Utilice el campo de comentario para incluir un apodo o cualquier otra informacin. (Algunas personas utilizan diferentes llaves para diferentes propsitos, e identifican cada llave con un comentario, como por ejemplo "Oficina", o "Proyectos de cdigo abierto".) En el mensaje de confirmacin, ingrese la letra O para continuar si todas las opciones son correctas, o utilice las opciones propuestas para solucionar cualquier problema. Ingrese una frase de acceso para su clave secreta. El programa GPG le pide que ingrese dos veces su frase de acceso para asegurarse que no haya cometido errores de tipeo. Por ltimo, gpg genera datos aleatorios para hacer que su clave sea lo ms autntica posible. Mueva su ratn, presione teclas de manera azarosa, o realice alguna otra tarea en el sistema durante este paso para acelerar el proceso. Una vez ha finalizado, sus claves estn completas y listas para ser utilizadas:
pub 1024D/1B2AFA1C 2005-03-31 John Q. Doe (Fedora Docs Project) <jqdoe@example.com> Key fingerprint = 117C FE83 22EA B843 3E86 6486 4320 545E 1B2A FA1C sub 1024g/CEA4B22E 2005-03-31 [expires: 2006-03-31]
La huella digital de la clave es una "firma" abreviada de su clave. Le permite confirmar a otros que han recibido su clave pblica actual sin haber sido alterada. No necesita anotar esta huella. Para verla siempre que lo desee, utilice el siguiente comando, sustituyendo su direccin de correo electrnico: gpg --fingerprint jperez@ejemplo.com
162
Su "ID de llave GPG" consiste en 8 dgitos hexadecimales identificando la llave pblica. En el ejemplo, el ID de clave GPG es 1B2AFA1C. En la mayora de los casos, si se le pregunta por el ID de su clave debera anteponer "0x" al ID de la clave, como en "0x1B2AFA1C".
Advertencia
Si se olvida su frase de acceso, la clave no podr ser utilizada y cualquier dato encriptado por ella ser perdido.
# This variable takes a list of programs that message text is piped into # after MIME decoding, prior to display. display-filters=_LEADING("-----BEGIN PGP")_ /home/max/bin/ez-pine-gpg-incoming # This defines a program that message text is piped into before MIME # encoding, prior to sending sending-filters=/home/max/bin/ez-pine-gpg-sign _INCLUDEALLHDRS_, /home/username/bin/ez-pine-gpg-encrypt _RECIPIENTS_ gpg-identifier, /home/username/bin/ez-pine-gpg-sign-and-encrypt _INCLUDEALLHDRS_ _RECIPIENTS_ gpgidentifier
163
Captulo 3. Cifrado
sea enviado correo cifrado. Tal vez tambin quiera seleccionar Siempre firmar mensajes salientes cuando sea utilizada esta cuenta.
Nota
Si no identifica las llaves pblicas como confiables en su administrador de llaves, no podr cifrar correos electrnicos a sus dueos, a menos que elija la opcin Siempre confiar en las llaves de mi administrador de llaves cuando se realicen los cifrados. En su lugar recibir un dilogo indicando que ha fallado una verificacin de confianza
164
Para poder instalar Enigmail en sistemas Fedora, siga las instrucciones dadas a continuacin. Enigmail utiliza el trmino OpenPGP en elementos del men y en las opciones. GPG es una implementacin de OpenPGP, y estos trminos pueden entenderse como siendo equivalentes. La pagina principal de Enigmail es: http://enigmail.mozdev.org/download.html. En esta pgina se pueden apreciar capturas de pantalla de Enigmail y GPG en accin: http:// enigmail.mozdev.org/screenshots.html.
165
166
Gua para la configuracin segura de un sistema Linux 5 para empresas de Red Hat (en ingls) La Agencia de Defensa de Informacin de Sistemas (DISA, por las siglas en ingls de Defense 4 Information Systems Agency) ofrece documentacin, evaluaciones, y listas con tems a ser
1 4
www.nsa.gov http://www.disa.mil/
167
verificados, que le ayudarn a asegurar su sistema (Soporte para un Entorno Seguro de la 5 6 Informacin ). La GUIA DE IMPLEMENTACION TECNICA DE SEGURIDAD UNIX (PDF) es una gua muy especfica para la seguridad en sistemas UNIX - antes de leerla, se recomienda poseer un conocimiento avanzado tanto de UNIX como de Linux. La Lista de Items a verificarse para la Seguridad de UNIX Version 5, Release 1.16 de DISA ofrece diferentes documentos y listas de verificacin, abarcando aspectos que van desde el correcto establecimiento de la pertenencia de los archivos del sistema, hasta el control de parches. Al mismo tiempo, DISA ha puesto a disposicin diferentes programas de UNIX SPR que permiten a los administradores verificar configuraciones especficas en sus sistemas. Estos programas ofrecen reportes en formato XML, en los que muestran todas las configuraciones vulnerables conocidas.
8 7
5 6
168
Instalacin segura
La seguridad comienza con la primera vez que introduce un CD o DVD para instalar Fedora. Configurar su sistema en forma segura desde un principio, hace que sea ms fcil implementar configuraciones de seguridad adicional ms adelante.
http://fedoraproject.org/wiki/Security_Guide/9/LUKSDiskEncryption
169
170
Mantenimiento de Software
Una manutencin adecuada del software es extremadamente importante a la hora de asegurar un sistema. Es fundamental enmendar software que presenta un fallo en el momento inmediato a la aparicin de la solucin, de modo de evitar que atacantes que conocen ese fallo, lo aprovechen y se infiltren en su sistema.
171
tecnologa de llave pblica para confirmar que un paquete publicado por un repositorio, no haya sido alterado desde que la identificacin fue aplicada. Esto ofrece cierta proteccin para evitar instalar software que podra haber sido alterado maliciosamente luego de haber sido creado, pero antes que usted lo haya descargado. Si se utilizan demasiados repositorios, o que no sean confiables, o que alojen paquetes sin identificacin, se corre un gran riesgo de introduccin de cdigos maliciosos o que pueden llegar a debilitar su sistema. Sea precavido al agregar repositorios para actualizar su sistema.
172
Referencias
Las siguientes referencias tienen como objetivo orientar la bsqueda de informacin adicional relacionada con SELinux y Fedora pero estn ms all del alcance de esta gua. Tenga en cuenta que debido al veloz desarrollo de SELinux, algunos de estos materiales podran utilizarse slo en versiones especficas de Fedora. Libros SELinux en Ejemplos Mayer, MacMillan y Caplan Prentice Hall, 2007 Tutoriales y asistencia Entendiendo y personalizando la poltica de SELinux para HTTP de Apache http://fedora.redhat.com/docs/selinux-apache-fc3/ Tutoriales y charlas de Russell Coker http://www.coker.com.au/selinux/talks/ibmtu-2004/ Tutorial genrico para escritura de Polticas de SELinux http://www.lurking-grue.org/writingselinuxpolicyHOWTO.html Base de Conocimientos de Red Hat http://kbase.redhat.com/ Informacin general Sitio web principal de SELinux de la NSA 1 http://www.nsa.gov/selinux/ NSA SELinux FAQ 2 http://www.nsa.gov/selinux/info/faq.cfm Fedora SELinux FAQ http://fedora.redhat.com/docs/selinux-faq-fc3/ Linux de seguridad mejorada de cdigo abierto de la NSA http://www.oreilly.com/catalog/selinux/ Tecnologa Un repaso de las clases de objetos y permisos http://www.tresys.com/selinux/obj_perms_help.html Integracin del soporte flexible para las Polticas de Seguridad dentro del Sistema Operativo Linux (una historia de la implementacin de Flask en Linux) http://www.nsa.gov/research/_files/selinux/papers/selsymp2005.pdf
1 2
http://www.nsa.gov/research/selinux/index.shtml http://www.nsa.gov/research/selinux/faqs.shtml
173
Captulo 7. Referencias
Implemenetacin de SELinux como un mdulo de seguridad de linux http://www.nsa.gov/research/_files/publications/implementing_selinux.pdf Una Configuracin de Poltica de Seguridad para el Linux de Seguridad Mejorada http://www.nsa.gov/research/_files/selinux/papers/policy/policy.shtml Comunidad Gua del Usuario de SELinux de Fedora http://docs.fedoraproject.org/selinux-user-guide/ Gua de administracin de servicios confinados de SELinux de Fedora http://docs.fedoraproject.org/selinux-managing-confined-services-guide/ Pgina comunitaria de SELinux http://selinux.sourceforge.net IRC irc.freenode.net, #selinux, #fedora-selinux, #security Historia Historia breve de Flask http://www.cs.utah.edu/flux/fluke/html/flask.html Antecedentes completos sobre Fluke http://www.cs.utah.edu/flux/fluke/html/index.html
174
El cifrado Rijndael fue desarrollado por dos criptgrafos Belgas, Joan Daemen y Vincent Rijmen, quienes lo enviaron al proceso de seleccin de AES. Rijndael (pronunciado [rindal]) es una 3 contraccin de los nombres de los dos inventores.
175
escrutinios acadmicos que motivaron la comprensin moderna de los cifradores de bloque y sus 4 criptoanlisis.
176
Diffie-Hellman
Por el contrario, los algoritmos de llaves simtricas, cuyas variaciones fueron utilizadas durante miles de aos, utilizan un sola llave secreta compartida tanto por el remitente como por el destinatario (y que tambin debe ser mantenida en privado, lo que explica la ambigedad de la terminologa comn), tanto para el cifrado como para el descifrado. Para utilizar un esquema de cifrado simtrico, 10 el remitente y el destinatario deben compartir de antemano una llave de manera segura. Debido a que los algoritmos de llaves simtricas son casi siempre de menor intensidad de cmputo, es comn el hecho de intercambiar una llave utilizando un algoritmo de intercambio de llaves, y transmitir datos utilizando esa llave y un algoritmo de llaves simtricas. Por ejemplo, esto es lo que hacen PGP y la familia de esquemas SSL/TLS, y en consecuencia son denominados criptosistemas 11 hbridos.
A.2.1. Diffie-Hellman
El intercambio de llaves Diffie-Hellman (DH) es un protocolo criptogrfico que permite que dos elementos que no tenan previo conocimiento de la existencia uno del otro, puedan establecer conjuntamente una llave secreta compartida a travs de un canal de comunicacin no seguro. Esta llave puede ser utilizada para cifrar comunicaciones subsecuentes mediante la utilizacin de un 12 cifrador de llaves simtricas.
A.2.2. RSA
En criptografa, RSA (las iniciales en ingls correspondientes a Rivest, Shamir y Adleman, quienes la describieron pblicamente por primera vez; ver ms abajo), es un algoritmo para criptografa de llave pblica. Es el primer algoritmo conocido que funciona tanto para firmar como para cifrar, y fue uno de los primeros avances importantes en criptografa de llave pblica. RSA es muy utilizado en protocolos de comercio electrnico, y se lo considera seguro si se lo establece con llaves adecuadamente 16 extensas, y si se lo utiliza con implementaciones actualizadas.
"Cifrado de llave pblica." Wikipedia (en ingls). 14 de noviembre del 2009 http://en.wikipedia.org/wiki/Public-key_cryptography "Cifrado de llave pblica." Wikipedia (en ingls). 14 de noviembre del 2009 http://en.wikipedia.org/wiki/Public-key_cryptography "Diffie-Hellman." Wikipedia (en ingls). 14 de noviembre del 2009 http://en.wikipedia.org/wiki/Diffie-Hellman "Diffie-Hellman." Wikipedia (en ingls). 14 de noviembre 2009 http://en.wikipedia.org/wiki/Diffie-Hellman "Diffie-Hellman." Wikipedia (en ingls). 14 de noviembre del 2009 http://en.wikipedia.org/wiki/Diffie-Hellman "Diffie-Hellman." Wikipedia (en ingls). 14 de noviembre del 2009 http://en.wikipedia.org/wiki/Diffie-Hellman "RSA" Wikipedia (en ingls) 14 de abril del 2010 http://en.wikipedia.org/wiki/RSA
177
A.2.3. DSA
El Algoritmo de firma digital (DSA, por las iniciales en ingls de Digital Signature Algorithm), es un estndar del Gobierno federal de los Estados Unidos (o FIPS) para firmas digitales. Fue propuesto en agosto de 1991 por el Instituto nacional norteamericano de tecnologa y estndares (NIST, por las iniciales en ingls de National Institute of Standards and Technology), para ser utilizado en su propio Estndar de firmas digitales (DSS, por las iniciales en ingls de Digital Signature Standard), indicado en FIPS 186, y adoptado en 1993. Una revisin menor fue emitida en 1996 como FIPS 186-1. El estndar ha sido luego expandido en el ao 2000 como FIPS 186-2, y por ltimo, en el ao 2009, 17 como FIPS 186-3.
A.2.4. SSL/TLS
TLS (Transport Layer Security) y su predecesor, SSL (Secure Socket Layer), son protocolos de criptografa que ofrecen seguridad a las comunicaciones establecidas sobre redes como Internet. TLS y SSL cifran los segmentos en toda la capa de transporte de las conexiones de red. Diferentes versiones de los protocolos estn siendo ampliamente utilizadas en diferentes aplicaciones: navegadores web, correo electrnico, envo de faxes por Internet, mensajeras instantneas y VoIP (voz sobre IP) TLS es un protocolo de rastreo estndar IETF, actualizado en RFC 5246, y est basado en las anteriores especificaciones SSL, desarrolladas por la corporacin Netscape. El protocolo TLS permite que aplicaciones de cliente/servidor puedan comunicarse sobre una red de una manera diseada para prevenir escuchas o manipulaciones. TLS pfrece autenticacin final y confidencialidad de las comunicaciones sobre Internet utilizando criptografa. TLS ofrece seguridad RSA con potencia de 1024 y de 2048 bits. En la utilizacin tpica de usuario final/navegador, la autenticacin TLS es unilateral: slo el servidor es autenticado (el cliente sabe la identidad del servidor), pero no viceversa (el cliente permanece sin autenticarse, o annimo). TLS tambin ofrece soporte para un modo de conexin bilateral ms seguro (generalmente utilizado en una aplicacin comercial), en donde ambos extremos de la "conversacin" pueden asegurarse acerca de con quin estn comunicndose (ofreciendo la posibilidad de conocer la informacin del certificado de la otra parte). Esto es conocido como autenticacin mutua, o 2SSL. Una autenticacin mutua necesita que la parte cliente de TLS tambin posea un certificado (lo que generalmente no sucede en un escenario de usuario final/navegador). A menos que se utilice TLS-PSK, el protocolo de Contrasea remota segura (SRP, por las iniciales en ingls de Secure Remote Password), o que cualquier otro protocolo sea utilizado para ofrecer una autenticacin mutua poderosa en la ausencia de certificados. Generalmente, la informacin de la llave y los certificados necesarios para TLS son manipulados bajo la forma de certificados X.509, que define los campos requeridos y el formato de los datos. SSL trabaja de forma modular. Ha sido diseado para ser extensible, con soporte para ser compatible 18 con versiones anteriores y posteriores, y para poder realizar negociaciones entre pares
178
Cifrado ElGamal
utilizando supuestos estndar de cifrado. Su seguridad est basada en la dificultad de cmputo (mayormente asumida, pero no probada) de la suposicin decisional DiffieHellman. Desarrollado por Ronald Cramer y Vctor Shoup en 1998, es una extensin del criptosistema Elgamal. Pero a diferencia de ste ltimo, que es muy maleable, CramerShoup agrega elementos adicionales para asegurar su no-maleabilidad frente a un atacante con recursos. Esta rigidez es lograda mediante la utilizacin de una funcin hash resistente a colisiones y de cmputos adicionales, cuyo resultado es 19 un texto cifrado del doble de la longitud que el texto Elgamal.
"Criptosistema de CramerShoup" Wikipedia (en ingls) 14 de abril del 2010 http://en.wikipedia.org/wiki/CramerShoup_cryptosystem "Cifrado ElGamal" Wikipedia (en ingls) 14 de abril del 2010 http://en.wikipedia.org/wiki/ElGamal_encryption
179
180
Revisin Fri May 14 2010 Eric Christensen 13.0-7 sparks@fedoraproject.org Suplantado el texto de "error" del captulo de 7-Zip, por el bug 591980.
Revisin Wed Apr 14 2010 Eric Christensen 13.0-6 sparks@fedoraproject.org Completado el apndice sobre estndares de cifrado.
Revisin Fri Apr 09 2010 13.0-5 Aadido "Utilizando GPG en Alpine". Agregado "Utilizando GPG en Evolution".
Revisin Tue Apr 06 2010 Eric Christensen 13.0-4 sparks@fedoraproject.org Solucionados problemas relacionados con textos imposibles de traducir en para.
Revisin Tue Apr 06 2010 Eric Christensen 13.0-3 sparks@fedoraproject.org Eliminado el texto de la vulnerabilidad de PackageKit en Fedora 12.
Revisin Fri Nov 20 2009 Eric Christensen 13.0-2 sparks@fedoraproject.org Agregado el Historial de revisiones al final del documento. Agregado el apndice Estndares de cifrado
Revisin 1.0-23
181
Actualizada a la ltima versin (una vez ms) la seccin "Usuarios locales pueden instalar paquetes que no sean confiables".
Revisin Thu Nov 19 2009 Eric Christensen 1.0-22 sparks@fedoraproject.org Actualizada a la ltima versin la seccin "Usuarios locales pueden instalar paquetes que no sean confiables".
Revisin Wed Nov 18 2009 Eric Christensen 1.0-21 sparks@fedoraproject.org Agregada la seccin "Usuarios locales pueden instalar paquetes que no sean confiables".
Revisin Sat Nov 14 2009 Eric Christensen 1.0-20 sparks@fedoraproject.org Agregada informacin desde Wikipedia al apndice Estndares de cifrado Agregado Adam Ligas a la pgina de autores por su rol en el desarrollo de las porciones de 7-Zip.
Revisin Wed Aug 05 2009 Eric Christensen 1.0-18 sparks@fedoraproject.org Solucinados los inconvenientes relacionados con el Bug 515043
Revisin Mon Jul 27 2009 Eric Christensen 1.0-17 sparks@fedoraproject.org Informacin del proveedor en SPEC reparada.
Revisin Fri Jul 24 2009 Fedora Ingeniera de lanzamiento 1.0-16 rel-eng@lists.fedoraproject.org Recompilacin para https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild
Revisin Tue Jul 14 2009 Eric Christensen 1.0-15 sparks@fedoraproject.org Aadido "desktop-file-utils" a BUILDREQUIRES en las especificaciones
Revisin 1.0-14
182
Remove more rhel specifics, major review and remove draft, ready for push
Revisin 1.0-13
Revisin Wed Feb 11 2009 Scott Radvan sradvan@redhat.com 1.0-12 nuevos pantallazos de F11 que reemplazan las anteriores/ms viejas
Revisin Tue Feb 03 2009 Scott Radvan sradvan@redhat.com 1.0-11 LUKS especfico a Fedora 9 modificado para incluir las versiones posteriores tambin. Correccin de los errores 404 en la seccin de referencias, principalmente por enlaces incorrectos a NSA. cambios de formatos menores.
Revisin Wed Jan 27 2009 Eric Christensen 1.0-10 sparks@fedoraproject.org Se corrigi la falta de un pantallazo de la configuracin del cortafuego.
Eric Christensen sparks@fedoraproject.org Se repararon items que estaban incorrectos durante la validacin. Muchas referencias de Red Hat se cambiaron a referencias de Fedora.
183
184