Guía de seguridad
Guía para proteger a Red Hat Enterprise Linux
Edición 1.5
Resumen
Capítulo 1. Visión general de seguridad Copiar enlaceEnlace copiado en el portapapeles!
Nota
/lib. Cuando se usan sistemas de 64 bits, algunos de los archivos mencionados pueden localizarse en /lib64.
1.1. Introducción a seguridad Copiar enlaceEnlace copiado en el portapapeles!
1.1.1. ¿Qué es la seguridad informática? Copiar enlaceEnlace copiado en el portapapeles!
1.1.1.1. ¿Cómo surgió la seguridad informática? Copiar enlaceEnlace copiado en el portapapeles!
1.1.1.2. La seguridad actual Copiar enlaceEnlace copiado en el portapapeles!
- En un determinado día, hay aproximadamente 225 incidencias de violación de seguridad reportadas al CERT: Coordination Center at Carnegie Mellon University.[6]
- El número de incidencias reportadas al CERT de 52.658 en 2001, 82.094 en 2002 y hasta 137.529 en 2003.[7]
- Según el FBI, los delitos relacionados con la informática costaron a los negocios estadounidenses $67.2 mil millones de dólares en 2006.[8]
- Apenas el 23% de participantes tienen políticas para usar tecnologías de Web 2.0. Dichas tecnologías, tales como Twitter, Facebook y LinkedIn pueden proporcionar a compañías e individuos una forma conveniente para comunicarse y colaborar, sin embargo pueden abrir espacio para nuevas vulnerabilidades, principalmente en filtraje de información confidencial.
- Incluso durante la reciente crisis financiera de 2009, se halló en la encuesta que los presupuestos para seguridad o el aumento eran en su mayoría igual que en los años anteriores (cerca de 2 a 3 participantes esperan que el gasto en seguridad aumente o permanezca igual). Son buenas noticias y reflejan la importancia que las empresas están prestando a la seguridad hoy en día.
1.1.1.3. Estándares de seguridad Copiar enlaceEnlace copiado en el portapapeles!
- Confidencialidad — La información confidencial debe estar disponible únicamente para un grupo de individuos pre-establecido. La transmisión y uso de información no autorizada debe restringirse. Por ejemplo, la confidencialidad de información garantiza que la información personal o financiera no esté al alcance de individuos no autorizados con propósitos malintencionados tales como robo de identidad o fraude de crédito.
- Integridad — La información no se debe alterar en formas que la reproduzcan incompleta o incorrecta. Se debe restringir a los usuarios no autorizados de la capacidad de modificar o destruir información confidencial.
- Disponibilidad — La información debe estar accesible a usuarios autorizados, en cualquier momento. Es decir, cuando se necesite. La disponibilidad garantiza que la información pueda obtenerse con una frecuencia y puntualidad acordadas. Suele medirse en términos de porcentajes y se acepta de manera formal en los Acuerdos de Nivel de Servicio (SLA) usados por los proveedores de servicios de red y los clientes corporativos.
1.1.2. SELinux Copiar enlaceEnlace copiado en el portapapeles!
1.1.3. Controles de seguridad Copiar enlaceEnlace copiado en el portapapeles!
- Físicos\n\n\n
- Técnicos
- Administrativos
1.1.3.1. Controles físicos Copiar enlaceEnlace copiado en el portapapeles!
- Vigilancia de cámaras de circuito cerrado
- Sistemas de alarma térmica o de movimiento
- Guardias de seguridad
- ID de retratos
- Puertas de acero cerradas y cerrojos de seguridad con punto muerto
- Biometría (incluye huellas digitales, voz, cara, iris, tipo de letra y otros métodos usados de identificación)
1.1.3.2. Controles técnnicos Copiar enlaceEnlace copiado en el portapapeles!
- Cifrado
- Tarjetas inteligentes
- Autenticidad de redes
- Listas de control de acceso (ACL)
- Software de auditoría de integridad de archivos
1.1.3.3. Controles administrativos Copiar enlaceEnlace copiado en el portapapeles!
- Formación y reconocimiento
- Preparación para desastres y planes de recuperación
- Reclutamiento de personal y estrategias de separación
- Registro de personal y contabilidad
1.1.4. Conclusión Copiar enlaceEnlace copiado en el portapapeles!
1.2. Evaluación de vulnerabilidad Copiar enlaceEnlace copiado en el portapapeles!
- La habilidad de la persona responsable de la configuración, monitorización y mantenimiento de tecnologías.
- La habilidad de corregir y actualizar servicios y kernel en forma rápida y efectiva.
- La habilidad de la persona responsable para mantener constante vigilancia en la red.
1.2.1. Pensar como el enemigo Copiar enlaceEnlace copiado en el portapapeles!
1.2.2. Definición de evaluación y prueba Copiar enlaceEnlace copiado en el portapapeles!
Aviso
- Crea un enfoque proactivo en la seguridad de la información.
- Busca vulnerabilidades potenciales antes de que los agresores las encuentren
- Resulta en sistemas que se mantienen actualizados y corregidos.
- Promueve crecimiento y ayuda en el desarrollo de conocimientos del personal.
- Abate pérdidas financieras y publicidad negativa
1.2.2.1. Establece una metodología Copiar enlaceEnlace copiado en el portapapeles!
- http://www.isecom.org/osstmm/ The Open Source Security Testing Methodology Manual (OSSTMM)
- http://www.owasp.org/ The Open Web Application Security Project
1.2.3. Evaluación de herramientas Copiar enlaceEnlace copiado en el portapapeles!
1.2.3.1. Cómo escanear hosts con Mmap Copiar enlaceEnlace copiado en el portapapeles!
1.2.3.1.1. Uso de Nmap Copiar enlaceEnlace copiado en el portapapeles!
nmap seguido por el nombre de host o la dirección IP de la máquina que va a ser escaneada.
nmap foo.example.com
nmap foo.example.com
1.2.3.2. Nessus Copiar enlaceEnlace copiado en el portapapeles!
Nota
1.2.3.3. Nikto Copiar enlaceEnlace copiado en el portapapeles!
1.2.3.4. Anticipación a sus necesidades futuras Copiar enlaceEnlace copiado en el portapapeles!
1.3. Atacantes y vulnerabilidades Copiar enlaceEnlace copiado en el portapapeles!
1.3.1. Breve historia de los hackers Copiar enlaceEnlace copiado en el portapapeles!
1.3.1.1. Tonos de gris Copiar enlaceEnlace copiado en el portapapeles!
1.3.2. Amenazas a la seguridad de la red Copiar enlaceEnlace copiado en el portapapeles!
1.3.2.1. Arquitecturas inseguras Copiar enlaceEnlace copiado en el portapapeles!
1.3.2.1.1. Redes de difusión Copiar enlaceEnlace copiado en el portapapeles!
1.3.2.1.2. Servidores centralizados Copiar enlaceEnlace copiado en el portapapeles!
1.3.3. Amenazas a la seguridad del servidor Copiar enlaceEnlace copiado en el portapapeles!
1.3.3.1. Servicios no utilizados y puertos abiertos Copiar enlaceEnlace copiado en el portapapeles!
1.3.3.2. Servicios sin parches Copiar enlaceEnlace copiado en el portapapeles!
1.3.3.3. Administración inatenta Copiar enlaceEnlace copiado en el portapapeles!
1.3.3.4. Servicios intrínsecamente inseguros Copiar enlaceEnlace copiado en el portapapeles!
1.3.4. Amenazas a la estación de trabajo y a la seguridad del computador personal Copiar enlaceEnlace copiado en el portapapeles!
1.3.4.1. Malas contraseñas Copiar enlaceEnlace copiado en el portapapeles!
1.3.4.2. Aplicaciones de clientes vulnerables Copiar enlaceEnlace copiado en el portapapeles!
1.4. Vulnerabilidades y ataques comunes Copiar enlaceEnlace copiado en el portapapeles!
| Vulnerabilidades | Descripción | Notas | |||
|---|---|---|---|---|---|
| Contraseñas predeterminadas o ninguna | El hecho de dejar las contraseñas en blanco o de usar una contraseña predeterminada por el fabricante. Es lo más común en hardware tales como enrutadores y cortafuegos, aunque algunos servicios que se ejecutan en Linux pueden contener contraseñas de administrador predeterminadas (aunque Red Hat Enterprise Linux no se distribuye con ellas). |
| |||
| Llaves compartidas predeterminadas | Los servicios seguros algunas veces empaquetan las llaves de seguridad predeterminadas para propósitos de desarrollo o de evaluación. Si estas llaves no se cambian y se sitúan en un entorno de producción en la Internet, todos los usuarios con las mismas llaves predeterminadas tendrán acceso a ese recurso de llave compartida y a cualquier información confidencial que la contenga. |
| |||
| Suplantación de IP | Una máquina remota actúa como un nodo en su red local, encuentra vulnerabilidades con sus servidores e instala un programa trasero o Caballo de Troya para obtener control sobre los recursos de la red. |
| |||
| Interceptación pasiva | Recolectar los datos que pasan entre dos nodos activos en la red mediante interceptación pasiva en la conexión entre los dos nodos. |
| |||
| Vulnerabilidades de servicios | El atacante busca una falla o debilidad en un servicio en la red; a través de esta vulnerabilidad, el agresor compromete todo el sistema y los datos que pueda contener y posiblemente comprometa otros sistemas en la red. |
| |||
| Vulnerabilidades de aplicaciones | Los atacantes buscan fallas en el escritorio y aplicaciones de trabajo (tales como clientes de correo-e) y ejecutan código arbitrario, implantan caballos de Troya para compromiso futuro o para dañar sistemas. Otras vulnerabilidades se pueden presentar si la estación de trabajo tiene privilegios administrativos en la parte restante de la red. |
| |||
| Ataques de denegación de servicio (DoS) | El atacante o grupo de atacantes coordina contra una red de organización o recursos de servidor al enviar paquetes no autorizados al host de destino (ya sea servidor, enrutador o estación de trabajo). De esta manera se fuerza al recurso a convertirse en disponible para usuarios legítimos. |
|
1.5. Actualizaciones de seguridad Copiar enlaceEnlace copiado en el portapapeles!
1.5.1. Actualización de paquetes Copiar enlaceEnlace copiado en el portapapeles!
Nota
1.5.2. Cómo verificar paquetes firmados Copiar enlaceEnlace copiado en el portapapeles!
/mnt/cdrom, use el siguiente comando para importarlo en el archivo de claves archivo de llaves (una base de datos de llaves confiables en el sistema):
rpm --import /mnt/cdrom/RPM-GPG-KEY
rpm --import /mnt/cdrom/RPM-GPG-KEY
rpm -qa gpg-pubkey*
rpm -qa gpg-pubkey*
gpg-pubkey-db42a60e-37ea5438
gpg-pubkey-db42a60e-37ea5438
rpm -qi seguido por la salida del comando anterior, como el siguiente ejemplo:
rpm -qi gpg-pubkey-db42a60e-37ea5438
rpm -qi gpg-pubkey-db42a60e-37ea5438
rpm -K /tmp/updates/*.rpm
rpm -K /tmp/updates/*.rpm
gpg OK. Si no lo es, verifique si está utilizando la llave pública apropiada de Red Hat y verifique también el origen del contenido. Los paquetes que no pasan las verificaciones de GPG no se deben instalar, ya que pueden haber sido alterados por un tercero.
1.5.3. Cómo instalar paquetes firmados Copiar enlaceEnlace copiado en el portapapeles!
rpm -Uvh /tmp/updates/*.rpm
rpm -Uvh /tmp/updates/*.rpm
rpm -ivh /tmp/updates/<kernel-package>
rpm -ivh /tmp/updates/<kernel-package>
rpm -e <old-kernel-package>
rpm -e <old-kernel-package>
Nota
Importante
1.5.4. Cómo aplicar los cambios Copiar enlaceEnlace copiado en el portapapeles!
Nota
- Aplicaciones
- Las aplicaciones de espacio de usuario son los programas que pueden ser iniciados por un usuario del sistema. Normalmente, tales aplicaciones se utilizan únicamente cuando un usuario, script o tarea automática las abre y no persisten por largos períodos de tiempo.Cuando una aplicación tal de espacio de usuario se actualiza, detenga cualquier instancia de la aplicación en el sistema y lance el programa nuevamente para así utilizar la versión actualizada.
- Kernel
- El kernel es el componente de software de núcleo para el sistema operativo de Red Hat Enterprise Linux. Administra el acceso a memoria, al procesador y periféricos como también programa todas las tareas.Debido a su papel central, el kernel no puede reiniciar el equipo sin que se detenga. Por lo tanto, la versión actualizada del kernel no se puede utilizar hasta que el sistema no sea reiniciado.
- Bibliotecas compartidas
- Las bibliotecas compartidas son unidades de código, tales como
glibc, las cuales son utilizadas por un número de aplicaciones y servicios. Las aplicaciones que utilizan una biblioteca compartida por lo general cargan el código compartido cuando se inicia la aplicación, por lo tanto las aplicaciones que utilizan la biblioteca actualizada se deben detener y volver a abrir.Para determinar cuáles aplicaciones en ejecución se enlazan con una biblioteca determinada, use el comandolsofcomo en el siguiente ejemplo:lsof /lib/libwrap.so*
lsof /lib/libwrap.so*Copy to Clipboard Copied! Toggle word wrap Toggle overflow Este comando retorna una lista de todos los programas en ejecución que utilizan envolturas TCP para controlar el acceso de host. Por lo tanto, cualquier programa en la lista debe ser detenido y relanzado al actualizar el paquetetcp_wrappers. - Servicios de SysV
- Los servicios de SysV son programas de servidor persistente ejecutados durante el proceso de arranque. Los ejemplos de servicios de SysV incluyen
sshd,vsftpdyxinetd.Debido a que estos programas suelen persistir en la memoria, siempre y cuando la máquina sea reiniciada, cada servicio de SysV actualizado debe detenerse y relanzarse después de actualizar el paquete. Esto se puede hacer con la Herramienta de configuración de servicios , o ingresando en un indicador de comandos de shell de root y emitiendo el comando/sbin/servicecomo en el ejemplo siguiente:/sbin/service <service-name> restart
/sbin/service <service-name> restartCopy to Clipboard Copied! Toggle word wrap Toggle overflow En el ejemplo anterior, remplace <service-name> con el nombre del servicio, tal comosshd. xinetdServices- Los servicios controlados por el súper servicio de
xinetdsolamente se ejecutan cuando hay una conexión activa. Entre los ejemplos de servicios controlados porxinetdse incluyen Telnet, IMAP y POP3.Puesto quexinetdlanza nuevas instancias de estos servicios cada vez que se recibe una solicitud, las conexiones que suceden después de una actualización son manejadas por el software actualizado. Sin embargo, si hay conexiones activas en el momento en que el servicio controlado dexinetdes actualizado, son manejadas por la versión anterior del software.Para matar instancias anteriores de un determinado servicio controlado dexinetd, actualice el paquete para el servicio y luego detenga todos los procesos que se estén ejecutando en el momento. Para determinar si el proceso se está ejecutando, use el comandopsy luego el comandokillokillallpara detener las instancias actuales del servicio.Por ejemplo, si se lanzan los paquetes de erratas de seguridadimap, actualice los paquetes y luego escriba el siguiente comando como root en el indicador de comanodos de shell:ps aux | grep imap
ps aux | grep imapCopy to Clipboard Copied! Toggle word wrap Toggle overflow Este comando retorna todas las sesiones IMAP activas. Para finalizar las sesiones individuales utilice el siguiente comando:kill <PID>
kill <PID>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Si este comando no puede terminar la sesión, use le siguiente comando en su lugar:kill -9 <PID>
kill -9 <PID>Copy to Clipboard Copied! Toggle word wrap Toggle overflow En los ejemplos anteriores, remplace <PID> por el número de identificación del proceso (que se encuentra en la segunda columna del comandops) para una sesión de IMAP.Para matar todas las sesiones IMAP activas, emita el siguiente comando:killall imapd
killall imapdCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Capítulo 2. Cómo proteger la red Copiar enlaceEnlace copiado en el portapapeles!
2.1. Seguridad de estación de trabajo Copiar enlaceEnlace copiado en el portapapeles!
2.1.1. Evaluación de la seguridad de la estación de trabajo Copiar enlaceEnlace copiado en el portapapeles!
- BIOS y Seguridad del gestor de arranque — ¿Puede un usuario no autorizada acceder físicamente a la máquina y arrancar como usuario único o modo de rescate sin una contraseña?
- Seguridad de contraseña — ¿Qué tan seguras están sus contraseñas de cuenta de usuario en la máquina?
- Controles administrativos — ¿Quíen tiene una cuenta en el sistema y cuánto control administrativo tiene?
- Servicios de redes disponibles — ¿Qué servicios escuchan las solicitudes desde la red y deben estarse ejecutando?
- Cortafuegos personales — ¿Qué tipo de cortafuegos , si lo hay, es necesario?
- Herramientas de protección de comunicación mejoradas — ¿Qué herramientas deben utilizarse para comunicarse entre estaciones de trabajo y cuáles deberían evitarse?
2.1.2. BIOS y seguridad del gestor de arranque Copiar enlaceEnlace copiado en el portapapeles!
2.1.2.1. Contraseñas de BIOS Copiar enlaceEnlace copiado en el portapapeles!
- Evitar cambios a la configuración del BIOS — Si los intrusos tienen acceso al BIOS, pueden configurarlo para que arranque desde un disquete o un CD-ROM. Esto les permite entrar en modo de rescate y a su vez, iniciar procesos arbitrarios en el sistema o copiar datos confidenciales.
- Evitar arrancar el sistema — Algunos BIOS permiten la protección de contraseña del proceso de arranque. Cuando están activados, el agresor es obligado a ingresar una contraseña antes de que el BIOS lance el gestor de arranque.
2.1.2.1.1. Cómo proteger las plataformas que no son x-86 Copiar enlaceEnlace copiado en el portapapeles!
2.1.2.2. Contraseñas de gestor de arranque Copiar enlaceEnlace copiado en el portapapeles!
- Evitar el acceso en modo monousuario — Si los agresores pueden arrancar el sistema en modo monousuario, se pueden registrar automáticamente como root sin que se les pida la contraseña de root.
- Evitar el acceso a la consola de GRUB — Si la máquina utiliza a GRUB como el gestor de arranque, el agresor puede utilizar la interfaz del editor de GRUB para cambiar la configuración o para reunir información mediante el comando
cat. - Evitar el acceso a sistemas operativos inseguros — Si se trata de un sistema de doble arranque, el agresor puede seleccionar un sistema operativo en tiempo de arranque (por ejemplo, DOS), el cual ignora los controles de acceso y los permisos de archivos.
2.1.2.2.1. Contraseña de protección de GRUB Copiar enlaceEnlace copiado en el portapapeles!
/sbin/grub-md5-crypt
/sbin/grub-md5-crypt
/boot/grub/grub.conf. Abra el archivo y debajo de la línea timeout en la sección principal del documento, añada la siguiente línea:
password --md5 <password-hash>
password --md5 <password-hash>
/sbin/grub-md5-crypt[12].
/boot/grub/grub.conf.
title del sistema operativo que desea proteger y añada una línea con la directiva lock inmediatamente.
title DOS lock
title DOS lock
Aviso
password debe estar presente en la sección principal del archivo /boot/grub/grub.conf para que este método funcione correctamente. De lo contrario puede acceder a la interfaz del editor de GRUB y retirar la línea de bloqueo.
lock a la estanza, seguida de una línea de contrasaña.
title DOS lock password --md5 <password-hash>
title DOS lock password --md5 <password-hash>
2.1.3. Seguridad de contraseña Copiar enlaceEnlace copiado en el portapapeles!
/etc/passwd, lo que hace al sistema vulnerable a ataques de piratas de contraseñas fuera de línea. Si el intruso puede obtener acceso a la máquina como un usuario normal, puede copiar el archivo /etc/passwd en su propia máquina y ejecutar cualquier cantidad de programas para descifrar las contraseñas. Si hay una contraseña insegura en el archivo, es sólo cuestión de tiempo antes de que el pirata la descubra.\n
/etc/shadow, el cual únicamente puede ser leído por el usuario root.
2.1.3.1. Cómo crear contraseñas fuertes Copiar enlaceEnlace copiado en el portapapeles!
- No utilice solo palabras o números — Nunca use únicamente números o palabras en la contraseña.Algunos ejemplos inseguros se incluyen a continuación:
- 8675309
- juan
- hackme
- No utilice palabras reconocibles — Palabras tales como nombres propios, palabras de diccionario, o incluso términos de los programas de televisión o novelas deben evitarse, incluso si terminan en números.Algunos ejemplos inseguros se incluyen a continuación:
- john1
- DS-9
- mentat123
- No utilice palabras en otro idioma — Los programas para descubrir contraseñas suelen comparar todas las listas de los diccionarios en muchos idiomas. Depender de idiomas extranjeros para proteger sus contraseñas no es seguro.Algunos ejemplos inseguros se incluyen a continuación:
- cheguevara
- bienvenido1
- 1dumbKopf
- No utilice terminología de hacker — Si piensa que pertenece a una élite porque utiliza en su contraseña terminología de hacker — conocida también como l337 o LEET — ¡piénselo dos veces!. Muchas listas de palabras incluyen LEET.Algunos ejemplos inseguros se incluyen a continuación:
- H4X0R
- 1337
- No use información personal — Evite el uso de información personal en sus contraseñas. Si el agresor conoce su identidad, la tarea de deducir su contraseña será más fácil. A continuación se enumeran los tipos de información que se deben evitar al crear una contraseña:Algunos ejemplos inseguros se incluyen a continuación:
- Su nombre
- Los nombres de mascotas
- Los nombres de miembros de familia
- Las fechas de cumpleaños
- Su número telefónico o código postal
- No ponga al revés palabras reconocibles — Los revisores de contraseñas siempre reversan las palabras comunes, por lo tanto al invertir una mala contraseña no la hace más segura.Algunos ejemplos inseguros se incluyen a continuación:
- R0X4H
- nauj
- 9-DS
- No anote su contraseña — Nunca escriba una contraseña en papel. Es más seguro memorizarla.
- No use la misma contraseña para todas las máquinas — Es importante crear contraseñas independientes para cada máquina. De esta forma si un sistema pierde su caracter confidencial, no todas sus máquinas estarán en riesgo.
- Cree una contraseña de por lo menos ocho caracteres — Entre más larga su contraseña, mejor. Si utiliza contraseñas MD5, debe ser por lo menos de 15 caracteres. Con contraseñas DES, use la longitud máxima (ocho caracteres).
- Mezcle letras mayúsculas y minúsculas — Red Hat Enterprise Linux es sensible a mayúsculas y minúsculas, por lo tanto, mezcle las mayúsculas y minúsculas para fortalecer la contraseña.
- Mezcle letras y números — Si añade números a contraseñas, especialmente en el medio (no solo al comienzo o al final), puede mejorar la fortaleza de la contraseña.
- Incluya caracteres no alfanuméricos — Caracteres especiales tales como &, $, y > pueden mejorar ampliamente la fortaleza de la contraseña (no es posible si se utilizan contraseñas DES).
- Elija una contraseña que usted recuerde — La mejor contraseña del mundo no sirve de nada si usted no la recuerda; use acrónimos u otros dispositivos nemotécnicos para ayudar a memorizar las contraseñas.
2.1.3.1.1. Metodología para la creación de una contraseña segura Copiar enlaceEnlace copiado en el portapapeles!
- Piense en una frase fácil de recordar, tal como esta en Inglés:"over the river and through the woods, to grandmother's house we go."
- Luego conviértala en un acrónimo (incluyendo la puntuación)
otrattw,tghwg. - Añada complejidad al sustituir por números y símbolos las letras en el acrónimo. Por ejemplo, substituya
7paraty el símbolo de arroba (@) paraa:o7r@77w,7ghwg. - Añada más complejidad al poner en mayúsculas al menos una letra, tal como
H.o7r@77w,7gHwg. - Por último, no utilice nunca la contraseña del ejemplo anterior para ningún sistema.
2.1.3.2. Cómo crear contraseñas de usuario dentro de una organización Copiar enlaceEnlace copiado en el portapapeles!
2.1.3.2.1. Cómo forzar contraseñas fuertes Copiar enlaceEnlace copiado en el portapapeles!
passwd, la cual reconoce los Módulos de autenticación conectables (PAM) y por lo tanto verifica si la contraseña es demasiado corta o fácil de averiguar. Esta revisión se realiza mediante el módulo PAM de pam_cracklib.so. Puesto que PAM puede personalizarse, es posible añadir más revisores de integridad de contraseñas, tales como pam_passwdqc (disponible en http://www.openwall.com/passwdqc/) o escribir un nuevo módulo. Para obtener una lista de los módulos PAM disponibles, consulte http://www.kernel.org/pub/linux/libs/pam/modules.html. Para mayor información sobre PAM, consulte Managing Single Sign-On and Smart Cards.
- John The Ripper — Un programa rápido y flexible de violación de contraseñas. Permite el uso de múltiples listas de palabras y puede usar la fuerza bruta para violar las contraseñas. Está disponible en http://www.openwall.com/john/.
- Crack — Quizás el software de violación de contraseñas más conocido, Crack también es rápido, aunque no fácil de usar como John The Ripper. Puede encontrarlo en http://www.crypticide.com/alecm/security/crack/c50-faq.html.
- Slurpie — Slurpie es una aplicación similar a John The Ripper y Crack, pero está diseñada para ser ejecutada en varios equipos al mismo tiempo, creando un ataque de violación de contraseñas distribuido. Se encuentra junto con otro número de herramientas de evaluación de seguridad de ataques distribuidos en http://www.ussrback.com/distributed.htm.
Aviso
2.1.3.2.2. Frases de paso Copiar enlaceEnlace copiado en el portapapeles!
2.1.3.2.3. Caducidad de las contraseñas Copiar enlaceEnlace copiado en el portapapeles!
chage o la aplicación gráfica Administrador de usuario (system-config-users).
-M del comando chage especifica el número de días máximo que la contraseña es válida. Por ejemplo, para establecer una contraseña de usuario que expire en 90 días, use el siguiente comando:
chage -M 90 <username>
chage -M 90 <username>
99999 después de -M (esto equivale a un poco más de 273 años).
chage en modo interactivo para modificar la caducidad de varias contraseñas e información de cuentas. Use el siguiente comando para ingresar en modo interactivo:
chage <username>
chage <username>
- Haga clic en el menú en el panel, señale y luego haga clic en para desplegar el administrador de usuario. De modo alternativo, escriba el comando
system-config-usersen el indicador de shell. - Haga clic en la pestaña Usuarios y seleccione el usuario requerido en la lista de usuarios.
- Haga clic en en la barra de herramientas para desplegar el cuadro de diálogo del usuario (o elija en el menú ).
- Haga clic en Información de contraseña, y selecciones la cajilla de verificación para Habilitar expiración de contraseña.
- Ingrese el valor requerido en el campo Días antes del cambio requerido y haga clic en .
Figura 2.1. Cómo especificar opciones de caducidad de contraseñas
2.1.4. Controles administrativos Copiar enlaceEnlace copiado en el portapapeles!
sudo o su. Un programa de setuid es el que funciona con el ID de usuario (UID) del propietaio del programa en lugar del usuario que opera el programa. Dichos programas se indican con una s en la sección de listado de formato largo, como en el siguiente ejemplo:
-rwsr-xr-x 1 root root 47324 May 1 08:09 /bin/su
-rwsr-xr-x 1 root root 47324 May 1 08:09 /bin/su
Nota
s puede estar en minúscula o mayúscula. Si aparece en mayúscula, significa que el bit de permiso subyacente aún no se ha establecido.
pam_console.so, algunas actividades normalmente reservadas para el usuario root, tales como reinicio o el montaje de medios extraíbles, para el primer usuario que ingrese en la consola física (consulte la Managing Single Sign-On and Smart Cards para obtener más información acerca del módulo pam_console.so) Sin embargo, otras tareas administrativas del sistema, tales como alterar la configuración de red, configurar un nuevo ratón o montar dispositivos de red, no son posibles sin privilegios de administrador. Como resultado, los administradores de sistemas deben decidir cuánto acceso pueden tener los usuarios en la red.
2.1.4.1. Permitir acceso de root Copiar enlaceEnlace copiado en el portapapeles!
- Error en la configuración de la máquina — Los usuarios con acceso de root pueden desconfigurar las máquinas y necesitarán ayuda para resolver los problemas. Peor aún, podrían abrir agujeros de seguridad sin saberlo.
- Ejecutar servicios inseguros — Los usuarios con acceso de root pueden ejecutar servicios inseguros en sus máquinas, tales como FTP o Telnet, poniendo en riesgo los nombres de usuario y contraseñas. Estos servicios transmiten la información a través de la red en texto plano.
- Ejecutar anexos de correo-e como root — Aunque escasos, los virus de correo-e que afectan a Linux existen. No obstante, el único momento en que son una amenaza, es cuando son ejecutados por el usuario root.
2.1.4.2. Desactivación del acceso root Copiar enlaceEnlace copiado en el portapapeles!
| Método | Descripción | Efectos | No afecta | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Cambio de shell de root. | Edite el archivo /etc/passwd y cambie el shell de /bin/bash a /sbin/nologin. |
|
| |||||||||||||||
| Desactivación del acceso de root a través de un dispositivo de consola (tty). | Un archivo vacío /etc/securetty impide el ingreso de root a los dispositivos conectados al equipo. |
|
| |||||||||||||||
| Desactivación de nombres de usuario de root SSH. | Edite el archivo /etc/ssh/sshd_config y establezca el parámetro PermitRootLogin a no. |
|
| |||||||||||||||
| Use PAM para limitar el acceso de root a servicios. | Edite el archivo para el servicio de destino en el directorio /etc/pam.d/. Asegúrese de que pam_listfile.so se requiera para la autenticación.[a] |
|
| |||||||||||||||
[a]
Consulte la Sección 2.1.4.2.4, “Desactivación de root mediante PAM” for details.
| ||||||||||||||||||
2.1.4.2.1. Desactivación del shell de root Copiar enlaceEnlace copiado en el portapapeles!
/sbin/nologin en el archivo /etc/passwd. Así impide el acceso a la cuenta de root a través de los comandos que requieren un shell, tal como los comandos su y ssh.
Importante
sudo, aún pueden acceder a la cuenta de root.
2.1.4.2.2. Desactivación de los nombres de usuario de root Copiar enlaceEnlace copiado en el portapapeles!
/etc/securetty. Este archivo muestra todos los dispositivos a los que el usuario de root puede conectarse. Si el archivo no existe en absoluto, el usuario puede conectarse a través de cualquier dispositivo de comunicación en el sistema, ya sea a través de la consola o una interfaz de red cruda. Esto es peligroso, ya que un usuario puede conectarse a su máquina como root a través de Telnet, la cual transmite por la red a contraseña en texto plano. De forma predeterminada, el archivo /etc/securetty de Red Hat Enterprise Linux solamente permite que el usuario de root inicie sesión en la consola conectada físicamente a la máquina. Para impedir que root ingrese, retire el contenido de este archivo mediante el siguiente comando:
echo > /etc/securetty
echo > /etc/securetty
Aviso
/etc/securetty no impide que el usuario de root ingrese de forma remota mediante el paquete de herramientas de OpenSSH porque la consola no se abre sino después de la autenticación.
2.1.4.2.3. Desactivación de los nombres de usuario de root SSH Copiar enlaceEnlace copiado en el portapapeles!
/etc/ssh/sshd_config). Cambie la línea que se lee:
PermitRootLogin yes
PermitRootLogin yes
PermitRootLogin no
PermitRootLogin no
kill -HUP `cat /var/run/sshd.pid`
kill -HUP `cat /var/run/sshd.pid`
2.1.4.2.4. Desactivación de root mediante PAM Copiar enlaceEnlace copiado en el portapapeles!
/lib/security/pam_listfile.so, permite gran flexibilidad en la negación de cuentas específicas. El administrador puede usar este módulo para hacer referencia a una lista de usuarios que no tienen permiso de ingreso. A continuación verá un ejemplo de cómo se utiliza el módulo para el servidor FTP de vsftpd en el archivo de configuración /etc/pam.d/vsftpd (el caracter \ al final de la primera línea en el siguiente ejemplo no es necesario si la directiva está un una línea):
auth required /lib/security/pam_listfile.so item=user \ sense=deny file=/etc/vsftpd.ftpusers onerr=succeed
auth required /lib/security/pam_listfile.so item=user \
sense=deny file=/etc/vsftpd.ftpusers onerr=succeed
/etc/vsftpd.ftpusers y niegue el acceso al servicio para cualquier usuario en la lista. El administrador puede cambiar el nombre de este archivo y mantener listas independientes para cada servicio o usar una lista central para negar acceso a múltiples servicios.
/etc/pam.d/pop y /etc/pam.d/imap para clientes de correo o /etc/pam.d/ssh para clientes SSH.
2.1.4.3. Limitación del acceso de root Copiar enlaceEnlace copiado en el portapapeles!
su o sudo.
2.1.4.3.1. El comando su Copiar enlaceEnlace copiado en el portapapeles!
su se le solicitará la contraseña de root y después de la autenticación, se le dará un indicador de shell de root.
su, el usuario se convierte en el usuario de root y tiene acceso administrativo total en el sistema[13]. Además, una vez que el usuario se convierta en root, le será posible utilizar el comando su para cambiar a cualquier otro usuario en el sistema sin que se le solicite una contraseña.
usermod -G wheel <username>
usermod -G wheel <username>
wheel.
- Haga clic en el menú en el panel, señale y luego haga clic en para desplegar el administrador de usuario. De modo alternativo, escriba el comando
system-config-usersen el indicador de shell. - Haga clic en la pestaña Usuarios y seleccione el usuario requerido en la lista de usuarios.
- Haga clic en en la barra de herramientas para desplegar el cuadro de diálogo del usuario (o elija en el menú ).
- Haga clic en la pestaña Groups, seleccione la cajilla de verificación para el grupo wheel y luego haga clic en el botón . Consulte la Figura 2.2, “Adición de usuarios al grupo "wheel".”.
Figura 2.2. Adición de usuarios al grupo "wheel".
su (/etc/pam.d/su) en un editor de texto y retire el comentario # de la siguiente línea:
auth required /lib/security/$ISA/pam_wheel.so use_uid
auth required /lib/security/$ISA/pam_wheel.so use_uid
wheel pueden usar este programa.
Nota
wheel de forma predeterminada.
2.1.4.3.2. El comando sudo Copiar enlaceEnlace copiado en el portapapeles!
sudo ofrece otro método para proporcionar acceso administrativo a los usuarios. Cuando los usuarios fiables preceden un comando administrativo con sudo, se les solicitará su propia contraseña. Luego, cuando el usuario ha sido autenticado y se supone que el comando es permitido, el comando administrativo se ejecutará como si el usuario fuera root.
sudo es el siguiente:
sudo <command>
sudo <command>
mount.
Importante
sudo deben tener extremo cuidado al salir antes de abandonar las máquinas ya que los usuarios de sudo pueden usar el comando otra vez en un lapso de 5 minutos sin que se les pregunte la contraseña. Esta configuración puede modificarse en el archivo de configuración, /etc/sudoers.
sudo permite un alto grado de flexibilidad. Por ejemplo, solamente los usuarios listados en el archivo de configuración /etc/sudoers tienen permiso para usar el comando sudo y el comando se ejecuta en el shell del usuario, no en el shell de root. Esto significa que el shell de root puede estar completamente desactivado, como se muestra en la Sección 2.1.4.2.1, “Desactivación del shell de root”.
sudo también proporciona un rastro de auditoría integral. Cada autenticación correcta se registra en el archivo /var/log/messages y el comando expedido junto con el nombre de usuario de quien lo expide se registran en el archivo /var/log/secure.
sudo es que el administrador puede permitir a diferentes usuarios el acceso a comandos específicos con base en sus necesidades.
sudo, deben usar el comando visudo.
visudo y añada una línea similar a la siguiente en la sección de especificación de privilegios del usuario.
juan ALL=(ALL) ALL
juan ALL=(ALL) ALL
juan, puede usar sudo desde cualquier host y ejecutar cualquier comando.
sudo:
%users localhost=/sbin/shutdown -h now
%users localhost=/sbin/shutdown -h now
/sbin/shutdown -h now siempre y cuando se ejecute desde la consola.
sudoers tiene un listado detallado de las opciones para este archivo.
2.1.5. Servicios de red disponibles Copiar enlaceEnlace copiado en el portapapeles!
2.1.5.1. Riesgos para los servicios Copiar enlaceEnlace copiado en el portapapeles!
- Ataques de denegación de servicio (DoS) Al inundar un servicio con solicitudes, un ataque de denegación de servicio puede volver inservible a un sistema, ya que trata de registrar y responder a cada solicitud.
- Ataque de denegación de servicio distribuido (DDoS) — Un tipo de ataque DoS que utiliza varias máquinas que han perdido su caracter confidencial (a menudo enumerándolas en miles o más) para dirigir un ataque coordinado en un servicio, inundarlo con solicitudes y convertirlo en inservible.
- Ataques de vulnerabilidad de Scripts — Si un servidor utiliza scripts para ejecutar acciones relacionadas con el servidor, como comúnmente lo hacen los servidores de Web, un cracker puede atacar incorrectamente los scripts escritos. Estos ataques de vulnerabilidades de script pueden conducir a una condición de desbordamiento de buffer o permitir que el agresor altere los archivos en el sistema.
- Ataques de desbordamientos de buffer — Los servicios que se conectan a puertos enumerados del 0 al 1023 deben ser ejecutados como usuario administrativo. Si la aplicación sufre un desbordamiento de buffer, el atacante podría obtener acceso al sistema como el usuario al ejecutar el demonio. Puesto que los desbordamientos de buffer existen, los agresores utilizan herramientas automatizadas para identificar vulnerabilidades en los sistemas, y una vez que han obtenido acceso, utilizarán rootkits para mantener el acceso al sistema.\n
Nota
Importante
2.1.5.2. Identificación y configuración de servicios Copiar enlaceEnlace copiado en el portapapeles!
cupsd— El servidor de impresión predeterminado para Red Hat Enterprise Linux.lpd— Un servidor de impresión alternativo.xinetd— Un súper servidor que controla conexiones para un rango de servidores subordinados, tales comogssftpytelnet.sendmail— El Mail Transport Agent (MTA) de Sendmail está habilitado de forma predeterminada, pero no solamente escucha conexiones desde el host local.sshd— El servidor de OpenSSH, el cual es un remplazo seguro para Telnet.
cupsd ejecutándose. Lo mismo se cierto para portmap. Si usted no monta volúmenes NFSv3 o usa NIS (el servicio ypbind), entonces portmap debe estar desactivado.
Figura 2.3. Services Configuration Tool
2.1.5.3. Servicios inseguros Copiar enlaceEnlace copiado en el portapapeles!
- Transmitir por la red nombres de usuarios y contraseñas sin cifrar — Muchos protocolos anteriores, tales como Telnet y FTP, no cifran la sesión de autenticación y deben evitarse cuando sea posible.
- Transmitir por la red datos confidenciales sin cifrar — Muchos protocolos transmiten datos sin cifrar por la red. Estos protocolos incluyen Telnet, FTP, HTTP, y SMTP. Muchos sistemas de archivos de red, tales como NFS y SMB, también transmiten información sin cifrar por la red. Es responsabilidad del usuario cuando use estos protocolos, limitar el tipo de datos que se transmite.Servicios de volcado de memoria, tales como
netdump, transmiten el contenido de memoria por la red sin cifrar. Los volcados de memoria pueden contener contraseñas o incluso peor, entradas de base de datos y otra información confidencial.Otros servicios comofingeryrwhodrevelan información sobre usuarios del sistema.
rlogin, rsh, telnet, y vsftpd.
rlogin, rsh, and telnet) deben evitarse en favor de SSH. Consulte la Sección 2.1.7, “Herramientas de comunicación de Seguridad Mejorada ” para obtener mayor información sobre sshd.
fingerauthd(conocido comoidentden lanzamientos anteriores de Red Hat Enterprise Linux.)netdumpnetdump-servernfsrwhodsendmailsmb(Samba)yppasswddypservypxfrd
2.1.6. Cortafuegos personales Copiar enlaceEnlace copiado en el portapapeles!
Importante
system-config-firewall). Esta herramiena crea amplias reglas iptables para un cortafuegos de propósitos generales mediante una interfaz de panel de control.
iptables probablemente es una mejor opción. Consulte la Sección 2.5, “Cortafuegos” para obtener más información. Consulte la Sección 2.6, “IPTables” para obtener una guía integral de iptables.
2.1.7. Herramientas de comunicación de Seguridad Mejorada Copiar enlaceEnlace copiado en el portapapeles!
- OpenSSH — Una implementación libre de protocolo SSH para cifrar la comunicación de redes.
- Gnu Privacy Guard (GPG) — Una aplicación de cifrado PGP (Pretty Good Privacy) para cifrado de datos.
telnet y rsh. OpenSSH incluye un servicio de red llamado sshd y tres aplicaciones de cliente de línea de comandos:
ssh— Un cliente de consola de acceso remoto seguro.scp— Un comando de copia remoto seguro.sftp— Un seudo cliente ftp que permite sesiones de transferencia de archivos.
Importante
sshd es esencialmente seguro, el servicio debe mantenerse actualizado para prevenir amenazas de seguridad. Consulte la Sección 1.5, “Actualizaciones de seguridad” para obtener mayor información.
2.2. Seguridad del servidor Copiar enlaceEnlace copiado en el portapapeles!
- Mantenga todos los servicios actualizados, para proteger contra últimas amenazas.
- Use protocolos seguros cuando sea posible.
- Sirva solamente un tipo de servicio por máquina cuando sea posible.
- Monitorice cuidadosamente todos los servicios para actividades sospechosas.
2.2.1. Cómo proteger servicios con envolturas TCP y xinetd Copiar enlaceEnlace copiado en el portapapeles!
xinetd, un súper servidor que proporciona acceso adicional, ingreso, enlace, redirección y control de uso de recursos.
Nota
xinetd para crear redundancia dentro de controles de acceso de servicios. Consulte, la Sección 2.5, “Cortafuegos” para obtener información sobre implementación de cortafuegos con comandos de iptables.
2.2.1.1. Cómo mejorar la seguridad con envolturas TCP Copiar enlaceEnlace copiado en el portapapeles!
hosts_options para obtener mayor información sobre la funcionalidad de envolturas TCP y el lenguaje de control. También puede consultar la página de manual xinetd.conf disponible en http://linux.die.net/man/5/xinetd.conf para obtener información sobre indicadores disponibles que actúan como opciones que se pueden aplicar a un servicio.\n
2.2.1.1.1. Envolturas TCP y pancartas de conexión Copiar enlaceEnlace copiado en el portapapeles!
banner.\n\t\n
vsftpd. Para comenzar, cree un archivo de pancartas. El archivo puede estar en cualquier parte del sistema, pero debe tener el mismo nombre del demonio. En este ejemplo, el archivo se denomina /etc/banners/vsftpd y contiene la siguiente línea:
220-Hello, %c 220-All activity on ftp.example.com is logged. 220-Inappropriate use will result in your access privileges being removed.
220-Hello, %c
220-All activity on ftp.example.com is logged.
220-Inappropriate use will result in your access privileges being removed.
%c ofrece una variedad de información del cliente, tal como el nombre de usuario y el nombre de host o el nombre de usuario y la dirección IP para hacer la conexión mucho más intimidante.
/etc/hosts.allow:
vsftpd : ALL : banners /etc/banners/
vsftpd : ALL : banners /etc/banners/
2.2.1.1.2. Envolturas TCP y Advertencias de ataques Copiar enlaceEnlace copiado en el portapapeles!
spawn.
ALL : 206.182.68.0 : spawn /bin/echo `date` %c %d >> /var/log/intruder_alert
ALL : 206.182.68.0 : spawn /bin/echo `date` %c %d >> /var/log/intruder_alert
%d provee el nombre del servicio al que el atacante está tratando de acceder.
spawn en el archivo /etc/hosts.allow.
Nota
spawn ejecuta cualquier comando de shell, es una buena idea crear un script especial para notificar al administrador o ejecutar una cadena de comandos en caso de que un cliente particular intente conectarse al servidor.
2.2.1.1.3. Envolturas TCP e ingreso mejorado Copiar enlaceEnlace copiado en el portapapeles!
severity.
emerg en los archivos de registro en lugar del indicador predeterminado, info, y niegue la conexión.
/etc/hosts.deny:
in.telnetd : ALL : severity emerg
in.telnetd : ALL : severity emerg
authpriv, pero se eleva la prioridad del valor predeterminado de info a emerg, la cual envía directamente mensajes de registro a la consola.
2.2.1.2. Cómo mejorar la seguridad con xinetd Copiar enlaceEnlace copiado en el portapapeles!
xinetd para establecer el servicio de trampa y al usarlo controlar los niveles de recursos disponibles para un determinado servicio de xinetd. Si establece límites de recurso para servicios puede ayudar a frustrar ataques de Denegación del servicio (DoS). Consulte las páginas de manual para xinetd y xinetd.conf para obtener una lista de las opciones disponibles.
2.2.1.2.1. Cómo establecer una trampa Copiar enlaceEnlace copiado en el portapapeles!
xinetd es la capacidad de añadir hosts a una lista global de no_access. A los hosts en esta lista se les niegan las conexiones posteriores a servicios administrados por xinetd por un periodo específico de tiempo o hasta que se reinicie xinetd. Puede hacerlo mediante el atributo SENSOR. Esta es una forma fácil de bloquear los hosts que intentan escanear los puertos en el servidor.
SENSOR es seleccionar el servicio que no piensa utilizar. Para este ejemplo, se utiliza Telnet.
/etc/xinetd.d/telnet y cambie la línea flags para que se lea:
flags = SENSOR
flags = SENSOR
deny_time = 30
deny_time = 30
deny_time son FOREVER, el cual mantiene el bloqueo hasta que se inicie xinetd y NEVER, el cual permite la conexión y la conecta.
disable = no
disable = no
SENSOR es una buena forma de detectar y detener las conexiones de hosts no deseables, hay dos inconvenientes:
- No funciona con escáner invisible
- Un agresor que sepa que
SENSORse está ejecutando, puede montar un ataque de Denegación del servicio contra determinados hosts falsificando sus direcciones IP y conectándose al puerto prohibido.
2.2.1.2.2. Cómo controlar recursos de servidor Copiar enlaceEnlace copiado en el portapapeles!
xinetd es su habilidad de establecer límites de recursos para servicios bajo su control.
cps = <number_of_connections> <wait_period>— Limita la tasa de conexiones entrantes. Esta directiva toma dos argumentos:<number_of_connections>— El número de conexiones a manejar por segundo. Si la tasa de conexiones entrantes es mayor que ésta, el servicio se inhabilitará temporalmente. El valor predeterminado es cincuenta (50).<wait_period>— El número de segundos de espera antes de volver a habilitar el servicio después de que ha sido desactivado. El intervalo predeterminado es de diez (10) segundos.
instances = <number_of_connections>— Especifica el número total de conexiones permitidas para el servicio. Esta directiva acepta ya sea un valor entero o un valorUNLIMITED(ILIMITADO).per_source = <number_of_connections>— Especifica el número de conexiones permitidas a un servicio por cada host. Esta directiva acepta un valor entero o un valorUNLIMITED.rlimit_as = <number[K|M]>— Especifica la cantidad de espacio de dirección de memoria que el servicio puede ocupar en kilobytes o megabytes. Esta directiva acepta un valor entero o un valorUNLIMITED.rlimit_cpu = <number_of_seconds>— Especifica la cantidad de tiempo en segundos que un servicio puede ocupar la CPU. Esta directiva acepta el valor entero y el valorUNLIMITED.
xinetd sobrecargue el sistema y que resulte en una negación del servicio.
2.2.2. Cómo proteger a Portmap Copiar enlaceEnlace copiado en el portapapeles!
portmap es un demonio de asignación de puerto dinámico para servicios de RPC tales como NIS y NFS. Tiene mecanismos de autenticación débiles y la capacidad de asignar un amplio rango de puertos para los servicios que controla. Por estos motivos es difícil proteger dicho servicio.
Nota
portmap solamente afecta las implementaciones NFSv2 y NFSv3, puesto que NFSv4 ya no lo requiere. Si piensa implementar un servidor NFSv2 o NFSv3, entonces necesitará portmap y la siguiente sección se aplicará.
2.2.2.1. Proteja a portmap con envolturas TCP Copiar enlaceEnlace copiado en el portapapeles!
portmap, ya que éste no tiene una forma de autenticación incorporada.
2.2.2.2. Proteja a portmap con iptables Copiar enlaceEnlace copiado en el portapapeles!
portmap, se recomienda añadir reglas de iptables al servidor y restringir el acceso a las redes específicias.
portmap) desde la red 192.168.0.0/24. El segundo permite conexiones TCP al mismo puerto desde el host local. Esto es necesario para el servicio sgi_fam usado por Nautilus. Los demás paquetes se descartan.
iptables -A INPUT -p tcp ! -s 192.168.0.0/24 --dport 111 -j DROP iptables -A INPUT -p tcp -s 127.0.0.1 --dport 111 -j ACCEPT
iptables -A INPUT -p tcp ! -s 192.168.0.0/24 --dport 111 -j DROP
iptables -A INPUT -p tcp -s 127.0.0.1 --dport 111 -j ACCEPT
iptables -A INPUT -p udp ! -s 192.168.0.0/24 --dport 111 -j DROP
iptables -A INPUT -p udp ! -s 192.168.0.0/24 --dport 111 -j DROP
Nota
2.2.3. Cómo proteger a NIS Copiar enlaceEnlace copiado en el portapapeles!
ypserv, el cual se utiliza junto con portmap y otros servicios relacionados para distribuir mapas de nombres de usuarios, contraseñas y otra información confidencial para cualquier equipo que diga que está dentro de su dominio.
/usr/sbin/rpc.yppasswdd— Conocido también como el servicioyppasswdd, este demonio permite a los usuarios cambiar sus contraseñas de NIS./usr/sbin/rpc.ypxfrd— Conocido también como el servicioypxfrd, es el demonio responsable de las transferencias de mapas de NIS en la red./usr/sbin/yppush— Esta aplicación propaga las bases de datos cambiadas de NIS a múltiples servidores de NIS./usr/sbin/ypserv— Este es el demonio del servidor de NIS.
portmap como se describe en la Sección 2.2.2, “Cómo proteger a Portmap”, luego aborde los siguientes problemas, tal como el planeamiento de redes.
2.2.3.1. Planee cuidadosamente la red Copiar enlaceEnlace copiado en el portapapeles!
2.2.3.2. Utilice un nombre de dominio NIS como contraseña y el nombre de host. Copiar enlaceEnlace copiado en el portapapeles!
/etc/passwd:
ypcat -d <NIS_domain> -h <DNS_hostname> passwd
ypcat -d <NIS_domain> -h <DNS_hostname> passwd
/etc/shadow mediante el siguiente comando:
ypcat -d <dominio de NIS> -h <nombre de host de DNS> shadow
ypcat -d <dominio de NIS> -h <nombre de host de DNS> shadow
Nota
/etc/shadow no es almacenado dentro de un mapa de NIS.
o7hfawtgmhwg.domain.com. Igualmente, cree un nombre de dominio NIS aleatorio diferente.
2.2.3.3. Edite el archivo /var/yp/securenets Copiar enlaceEnlace copiado en el portapapeles!
/var/yp/securenets está en blanco o no existe (como sucede después de una instalación predeterminada), NIS escucha a todas las redes. Una de las primeras cosas que se deben hacer es poner una máscara de red o pares de red en el archivo para que ypserv responda únicamente a la red apropiada.
/var/yp/securenets:
255.255.255.0 192.168.0.0
255.255.255.0 192.168.0.0
Aviso
/var/yp/securenets.
2.2.3.4. Asigne puertos estáticos y utilice reglas de iptables Copiar enlaceEnlace copiado en el portapapeles!
rpc.yppasswdd — el demonio que permite a los usuarios cambiar sus contraseñas de ingreso. La asignación de puertos a otros dos demonios de servidor NIS, rpc.ypxfrd y ypserv, permite la creación de reglas de cortafuegos para proteger de intrusos los demonios del servidor NIS.
/etc/sysconfig/network:
YPSERV_ARGS="-p 834" YPXFRD_ARGS="-p 835"
YPSERV_ARGS="-p 834" YPXFRD_ARGS="-p 835"
iptables -A INPUT -p ALL ! -s 192.168.0.0/24 --dport 834 -j DROP iptables -A INPUT -p ALL ! -s 192.168.0.0/24 --dport 835 -j DROP
iptables -A INPUT -p ALL ! -s 192.168.0.0/24 --dport 834 -j DROP
iptables -A INPUT -p ALL ! -s 192.168.0.0/24 --dport 835 -j DROP
Nota
2.2.3.5. Utilice autenticación de kerberos Copiar enlaceEnlace copiado en el portapapeles!
/etc/shadow se envía por la red. Si un intruso obtiene acceso a un dominio NIS y husmea el tráfico de red, puede recoletar nombres de usuario y contraseñas. Con tiempo suficiente, el programa de descifrado de contraseñas puede adivinar las contraseñas débiles, y el agresor puede obtener acceso a una cuenta válida en la red.
2.2.4. Cómo proteger a NFS Copiar enlaceEnlace copiado en el portapapeles!
Importante
portmap como se establece en la Sección 2.2.2, “Cómo proteger a Portmap”. Ahora, el tráfico NFS utiliza TCP en todas las versiones, en lugar de UDP y requiere TCP cuando utiliza NFSv4. NFSv4 incluye ahora la autenticación de usuario Kerberos y de grupo, como parte del módulo de kernel RPCSEC_GSS. La información sobre portmap aún se incluye, porque Red Hat Enterprise Linux 6 soporta NFSv2 y NFSv3, y ambos utilizan portmap.
2.2.4.1. Planee cuidadosamente la red Copiar enlaceEnlace copiado en el portapapeles!
2.2.4.2. Tenga cuidado con los errores de sintaxis Copiar enlaceEnlace copiado en el portapapeles!
/etc/exports. Tenga cuidado de no añadir espacios extraños al editar este archivo.
/etc/exports comparte el directorio /tmp/nfs/ para el host bob.example.com con permisos de lectura o escritura.
/tmp/nfs/ bob.example.com(rw)
/tmp/nfs/ bob.example.com(rw)
/etc/exports, comparte el mismo directorio al del host bob.example.com con permisos de solo-lectura y lo comparte con el mundo con permisos de lectura o escritura debido al caracter de un espacio después del nombre de host.
/tmp/nfs/ bob.example.com (rw)
/tmp/nfs/ bob.example.com (rw)
showmount para verificar si se están compartiendo.
showmount -e <hostname>
showmount -e <hostname>
2.2.4.3. No utilice la opción no_root_squash Copiar enlaceEnlace copiado en el portapapeles!
nfsnobody, una cuenta de usuario sin privilegios. Esto cambia el propietario de todos los archivos creados de root a nfsnobody, lo cual evita la carga de programas con un conjunto de bits de setuid.
no_root_squash, los usuarios de root remotos pueden cambiar cualquier archivo en el sistema de archivos compartido y dejar las aplicaciones infectadas por troyanos para otros usuarios que las ejecuten sin darse cuenta.
2.2.4.4. Configuración de cortafuegos NFS Copiar enlaceEnlace copiado en el portapapeles!
MOUNTD_PORT— puertos TCP y UDP para mountd (rpc.mountd)STATD_PORT— puertos TCP y UDP para estatus (rpc.statd)LOCKD_TCPPORT— puerto TCP para nlockmgr (rpc.lockd)LOCKD_UDPPORT— puerto UDP nlockmgr (rpc.lockd)
rpcinfo -p en el servidor NFS para ver los puertos y programas de RPC se están utilizando.
2.2.5. Cómo proteger el servidor HTTP de Apache Copiar enlaceEnlace copiado en el portapapeles!
chown root <directory_name>
chown root <directory_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow chmod 755 <directory_name>
chmod 755 <directory_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
/etc/httpd/conf/httpd.conf):
FollowSymLinks- Esta directiva se habilita de forma predeterderminada, por lo tanto sea cauteloso al crear enlaces simbólicos en la raíz del documento del servidor de Web. Por ejemplo, es una mala idea proporcionar el enlace simbólico a
/.\n Indexes- Esta directiva está habilitada de forma predeterminada, pero puede no ser deseable. Para evitar que los visitantes naveguen los archivos en el servidor, retire esta directiva.
UserDir- La directiva
UserDirse inhabilita de forma predeterminada porque puede confirmar la presencia de la cuenta de un usuario en el sistema. Para habilitar el directorio de usuario en el servidor, use las siguientes directivas:UserDir enabled UserDir disabled root
UserDir enabled UserDir disabled rootCopy to Clipboard Copied! Toggle word wrap Toggle overflow Estas directivas activan la navegación del directorio de usuario para todos los directorios de usuarios diferentes a/root/. Para añadir usuarios a la lista de cuentas inhabilitadas, añada una lista delimitada por espacios en la líneaUserDir disabled.
Importante
IncludesNoExec directive. Por defecto, el módulo Server-Side Includes (SSI) no puede ejecutar comandos. Se recomienda no cambiar esta configuración a menos que sea absolutamente necesario, ya que podría permitir que un agresor ejecute comandos en el sistema.
2.2.6. Cómo proteger FTP Copiar enlaceEnlace copiado en el portapapeles!
gssftpd— Un kerberos que reconoce axinetd-demonio basado en FTP no transmite información de autenticación por la red.- Red Hat Content Accelerator (
tux) — Un servidor de espacio de web con capacidades de FTP. vsftpd— Una implementación de seguridad autónoma del servicio FTP.
vsftpd.
2.2.6.1. Pancarta de saludo de FTP Copiar enlaceEnlace copiado en el portapapeles!
vsftpd, añada la siguiente directiva al archivo /etc/vsftpd/vsftpd.conf:
ftpd_banner=<inserte_saludo_aquí>
ftpd_banner=<inserte_saludo_aquí>
/etc/banners/. El archivo de pancartas para conexiones FTP en este ejemplo es /etc/banners/ftp.msg. El siguiente es un ejemplo de cómo se vería un archivo tal:\n
######### # Hello, all activity on ftp.example.com is logged. #########
######### # Hello, all activity on ftp.example.com is logged. #########
Nota
220 como se especifica en la Sección 2.2.1.1.1, “Envolturas TCP y pancartas de conexión ”.
vsftpd, añada la siguiente directiva al archivo /etc/vsftpd/vsftpd.conf:
banner_file=/etc/banners/ftp.msg
banner_file=/etc/banners/ftp.msg
2.2.6.2. Acceso de anónimo Copiar enlaceEnlace copiado en el portapapeles!
/var/ftp/ activa la cuenta anónima.
vsftpd. Este paquete establece un árbol de directorios para usuarios anónimos y configura los permisos en directorios de solo lectura para usuarios anónimos.
Aviso
2.2.6.2.1. Descarga de anónimo Copiar enlaceEnlace copiado en el portapapeles!
/var/ftp/pub/.\n
mkdir /var/ftp/pub/upload
mkdir /var/ftp/pub/upload
chmod 730 /var/ftp/pub/upload
chmod 730 /var/ftp/pub/upload
drwx-wx--- 2 root ftp 4096 Feb 13 20:05 upload
drwx-wx--- 2 root ftp 4096 Feb 13 20:05 upload
Aviso
vsftpd, añada la siguiente línea al archivo /etc/vsftpd/vsftpd.conf:
anon_upload_enable=YES
anon_upload_enable=YES
2.2.6.3. Cuentas de usuarios Copiar enlaceEnlace copiado en el portapapeles!
vsftpd, añada la siguiente directiva a /etc/vsftpd/vsftpd.conf:
local_enable=NO
local_enable=NO
2.2.6.3.1. Cómo restringir las cuentas de usuarios Copiar enlaceEnlace copiado en el portapapeles!
sudo, la forma más fácil es usar la lista de PAM como se describe en la Sección 2.1.4.2.4, “Desactivación de root mediante PAM”. El archivo de configuración PAM para vsftpd es /etc/pam.d/vsftpd.
vsftpd, añada el nombre de usuario a /etc/vsftpd/ftpusers
2.2.6.4. Use las envolturas TCP para controlar acceso Copiar enlaceEnlace copiado en el portapapeles!
2.2.7. Cómo proteger a Sendmail Copiar enlaceEnlace copiado en el portapapeles!
2.2.7.1. Limitar el ataque de Denegación del servicio Copiar enlaceEnlace copiado en el portapapeles!
/etc/mail/sendmail.mc, se limitará la eficacia de dichos ataques
confCONNECTION_RATE_THROTTLE— El número de conexiones que el servidor puede recibir por segundo. Por defecto, Sendmail no limita el número de conexiones. Si se establece y alcanza el límite, otras conexiones se retrasarán.confMAX_DAEMON_CHILDREN— El número máximo de procesos hijos que pueden ser generados por el servidor. De forma predeterminada, Sendmail no asigna un límite al número de procesos. Si se establece y alcanza un límite, se retrasarán las siguientes conexiones.confMIN_FREE_BLOCKS— El número mínimo de bloques libres que deben estar disponibles para que el servidor acepte el correo. El número predeterminado de bloques es 100.confMAX_HEADERS_LENGTH— El tamaño máximo aceptable (en bytes) para un encabezado de mensaje.confMAX_MESSAGE_SIZE— El tamaño aceptable máximo (en bytes) para un mensaje.
2.2.7.2. NFS y Sendmail Copiar enlaceEnlace copiado en el portapapeles!
/var/spool/mail/ en un volumen compartido NFS.
Nota
SECRPC_GSS no utiliza autenticación basada en UID. Sin embargo, aún se considera una buena práctica no poner el directorio de cola de impresión de correo en volúmenes compartidos de NFS.
2.2.7.3. Usuarios de solo-correo Copiar enlaceEnlace copiado en el portapapeles!
/etc/passwd se deben configurar para /sbin/nologin (con la posible excepción del usuario de root).
2.2.8. Cómo verificar los puertos que están escuchando Copiar enlaceEnlace copiado en el portapapeles!
netstat -an o lsof -i. Este método es menos confiable, ya que los programas no se conectan a la máquina desde la red, sino que chequean cuál está en ejecución en el sistema. Por esta razón, estas aplicaciones son objetos frecuentes de remplazo para los agresores. Los crackers intentan cubrir sus rastros al abrir puertos de red no autorizadas remplazando a netstat y lsof por sus propias versiones modificadas.
nmap.
nmap -sT -O localhost
nmap -sT -O localhost
portmap debido a la presencia del servicio sunrpc. Sin embargo, también hay un servicio misterioso en el puerto 834. Para verificar si el puerto está asociado con la lista de servicios conocidos, escriba:
cat /etc/services | grep 834
cat /etc/services | grep 834
netstat o lsof. Para revisar el puerto 834 mediante netstat, use el siguiente comando:
netstat -anp | grep 834
netstat -anp | grep 834
tcp 0 0 0.0.0.0:834 0.0.0.0:* LISTEN 653/ypbind
tcp 0 0 0.0.0.0:834 0.0.0.0:* LISTEN 653/ypbind
netstat es tranquilizante puesto que un cracker que abre un puerto subrepticiamente en un sistema pirateado no es probable que le permita ser revelado a través de este comando. También, la opción [p] revela el ID del proceso (PID) del servicio que abrío el puerto. En este caso, el puerto abierto pertenece a ypbind (NIS), el cual es un servicio RPC manejado junto con el servicio portmap.
lsof revela informaición simitar netstat puesto que también puede conectar los puertos abiertos a los servicios:
lsof -i | grep 834
lsof -i | grep 834
ypbind 653 0 7u IPv4 1319 TCP *:834 (LISTEN) ypbind 655 0 7u IPv4 1319 TCP *:834 (LISTEN) ypbind 656 0 7u IPv4 1319 TCP *:834 (LISTEN) ypbind 657 0 7u IPv4 1319 TCP *:834 (LISTEN)
ypbind 653 0 7u IPv4 1319 TCP *:834 (LISTEN)
ypbind 655 0 7u IPv4 1319 TCP *:834 (LISTEN)
ypbind 656 0 7u IPv4 1319 TCP *:834 (LISTEN)
ypbind 657 0 7u IPv4 1319 TCP *:834 (LISTEN)
lsof, netstat, nmap y services para obtener más información.
2.3. Envolturas TCP y xinetd Copiar enlaceEnlace copiado en el portapapeles!
iptables filtran, dentro de una pila de redes de kernel, los paquetes de red no esperados. Para los servicios de redes que los utilizan las envolturas TCP añaden una capa adicional de protección al definir los hosts que tienen o no permiso para conectarse a los servicios de redes "wrapped". Un servidor de redes con envolturas es el súper servidor xinetd. Este servicio se denomina súper servidor puesto que controla las conexiones para un subconjunto de servicios de redes y refina un mayor control de acceso.
Figura 2.4. Control de acceso a servicios de redes
xinetd en el control de acceso a los servicios de redes y revistas de cómo pueden utilizarse estas herramientas para mejorar tanto el ingreso como la administración de uso. Consulte Sección 2.6, “IPTables” para obtener mayor información acerca de los cortafuegos con iptables.
2.3.1. Envolturas TCP Copiar enlaceEnlace copiado en el portapapeles!
tcp_wrappers y tcp_wrappers-libs) están instalados de forma predeterminada y proporcionan un control de acceso de host a los servicios de redes. El componente más importante dentro del paquete es la biblioteca /lib/libwrap.a or /lib64/libwrap.a. En términos generales, un servicio de envolturas TCP es uno que ha sido recopilado a nombre de la biblioteca libwrap.a.
/etc/hosts.allow y /etc/hosts.deny) para determinar si el cliente está autorizado para conectarse. En la mayoría de los casos, luego usa el demonio de syslog (syslogd) para escribir el nombre del cliente que lo solicita y el servicio solicitado para /var/log/secure o /var/log/messages.
libwrap.a. Algunas de estas aplicaciones incluyen /usr/sbin/sshd, /usr/sbin/sendmail, y /usr/sbin/xinetd.
Nota
libwrap.a, escriba el siguiente comando como usuario de root:
ldd <binary-name> | grep libwrap
ldd <binary-name> | grep libwrap
libwrap.a.
/usr/sbin/sshd está vinculado a libwrap.a:
ldd /usr/sbin/sshd | grep libwrap
libwrap.so.0 => /lib/libwrap.so.0 (0x00655000)
[root@myServer ~]# ldd /usr/sbin/sshd | grep libwrap
libwrap.so.0 => /lib/libwrap.so.0 (0x00655000)
[root@myServer ~]#
2.3.1.1. Ventajas de las envolturas TCP Copiar enlaceEnlace copiado en el portapapeles!
- La transparecia tanto del cliente como del servicio de red protegido — desconocen que las envolturas TCP están en uso. Los usuarios legítimos se registran y conectan al servicio solicitado mientras que las conexiones de los clientes no autorizados fallan.
- Administración centralizada de múltiples protocolos — Las envolturas TCP operan independientemente de los servicios de red que ellas protegen, permitiendo así que muchas aplicaciones de servidor compartan un conjunto común de archivos de configuración de control de acceso, para una administración más sencilla.
2.3.2. Archivos de configuración de envolturas TCP Copiar enlaceEnlace copiado en el portapapeles!
/etc/hosts.allow/etc/hosts.deny
- Hacer referencia a
/etc/hosts.allow— El servicio de envolturas TCP lee en secuencia el archivo/etc/hosts.allowy aplica la primera regla especificada para ese servicio. Si encuentra una regla que coincida, permitirá la conexión. Si no, irá al siguiente paso. - Hacer referencia a
/etc/hosts.deny— El servicio de envolturas TCP lee en secuencia el archivo/etc/hosts.deny. Si encuentra la regla coincidente, negará la conexión. Si no, otorgará acceso al servicio.
- Puesto que las reglas de acceso en
hosts.allowse aplican primero, pueden tener prioridad sobre las reglas especificadas enhosts.deny. Por lo tanto, si se permite el acceso al servicio enhosts.allow, se omitirá la regla que niega el acceso al mismo servicio enhosts.deny. - Las reglas en cada archivo se leen de arriba a abajo y la primera que concuerde para el servicio determinado será la única que se aplica. El orden de las reglas es extremadamente importante.
- Si no se encuentran reglas para el servicio en cada archivo o si no existe ningún archivo, se otorgará el acceso al servicio.
- Los servicios de envolturas TCP no guardan en cache las reglas de los archivos de acceso de hosts, por lo tanto los cambios a
hosts.allowohosts.denyse efectuarán inmediatamente, sin reiniciar los servicios de redes.
Aviso
/var/log/messages o en /var/log/secure. También es el caso para la regla que extiende varias líneas sin necesidad de usar el caracter de barra invertida. El ejemplo a continuación ilustra la parte importante de un mensaje de registro de un error de la directiva debido a alguna de estas circunstancias:
warning: /etc/hosts.allow, line 20: missing newline or line too long
warning: /etc/hosts.allow, line 20: missing newline or line too long
2.3.2.1. Cómo dar formato a las reglas de acceso Copiar enlaceEnlace copiado en el portapapeles!
/etc/hosts.allow y /etc/hosts.deny es idéntico. Cada regla debe tener su propia línea. Las líneas en blanco o líneas que inician con el símbolo de numeral (#) se omiten.
<daemon list>: <client list> [: <option>: <option>: ...]
<daemon list>: <client list> [: <option>: <option>: ...]
- <Lista de demonios> — Una lista de los nombres de procesos separados por coma (no los nombres del servicio) o el comodín
ALL. La lista de demonios también acepta operadores (consulte la Sección 2.3.2.1.4, “Operadores”) para permitir mayor flexibilidad. - <Lista de clientes> — Una lista de nombres de hosts separados por coma, direcciones IP de host, patrones especiales o comodines que identifican a los hosts afectados por la regla. El cliente también acepta los operadores listados en la Sección 2.3.2.1.4, “Operadores” para permitir mayor flexibilidad.
- <opción> — Una acción óptima o lista separada por comas de las acciones realizadas cuando se activa la regla. Los campos de opciones soportan expansiones, lanzan los comandos de shell, permiten o niegan el acceso y alteran la conducta de registro.
Nota
vsftpd : .example.com
vsftpd : .example.com
vsftpd) desde cualquier host en el dominio example.com. Si la regla aparece en hosts.allow, se acepta la conexión. Si la regla aparece en hosts.deny, se rechaza la conexión.
sshd : .example.com \ : spawn /bin/echo `/bin/date` access denied>>/var/log/sshd.log \ : deny
sshd : .example.com \ : spawn /bin/echo `/bin/date` access denied>>/var/log/sshd.log \ : deny
sshd) desde un host en el dominio example.com, se ejecuta el comando echo para anexar el intento en un archivo de registro especial y se niega la conexión. Puesto que se utiliza la directiva opcional deny, esta línea niega el acceso incluso si aparece en el archivo hosts.allow. Consulte la Sección 2.3.2.2, “Campos de opciones\n” para obtener una visión más detallada en opciones disponibles.
2.3.2.1.1. Comodines Copiar enlaceEnlace copiado en el portapapeles!
ALL— Concuerda con todo. Puede servir tanto para la lista de demonios como para la lista de clientes.LOCAL— Concuerda con cualquier host que no contiene un punto (.), tal como localhost.KNOWN— Concuerda con cualquier host cuyo nombre y dirección se conocen o cuando el usuario es conocido.UNKNOWN— Concuerda con cualquier host cuyo nombre o dirección se desconozcan o cuando el usuario es desconocido.PARANOID— Concuerda con cualquier host cuyo nombre no corresponda a la dirección.
Importante
KNOWN, UNKNOWN y PARANOID se deben usar con cuidado, puesto que dependen de un servidor de DNS para corregir la operación. Cualquier interrupción de la resolución de nombre puede impedir que usuarios legítimos puedan acceder a un servicio.
2.3.2.1.2. Patrones Copiar enlaceEnlace copiado en el portapapeles!
- Nombre de host que comienza por un punto (.) — Al poner un punto en el comienzo de un nombre de host buscará todos los hosts que comparten los componentes listados del nombre. El ejemplo a continuación se aplica a cualquier host dentro del dominio
example.com:ALL : .example.com
ALL : .example.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow - Dirección IP que termina en un punto (.) — Al poner un punto al final de una dirección IP encontrará todos los hosts que compartan los grupos numéricos de una dirección IP. El ejemplo a continuación se aplica a cualquier host dentro de la red
192.168.x.x:ALL : 192.168.
ALL : 192.168.Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Par de dirección IP y máscara de red — Las expresiones de máscara de red también sirven de patrón para controlar el acceso a un grupo de direcciones IP determinado. Los ejemplos a continuación se aplican a cualquier host con un rango de direcciones de
192.168.0.0a192.168.1.255:ALL : 192.168.0.0/255.255.254.0
ALL : 192.168.0.0/255.255.254.0Copy to Clipboard Copied! Toggle word wrap Toggle overflow Importante
Cuando se opera en un espacio de direcciones IPv4, el par de longitud del prefijo y dirección (prefixlen) las declaraciones de pares (notación CIDR) are no son compatibles. Solamente las reglas IPv6 pueden usar este formato. - [IPv6 address]/prefixlen pair — los pares [net]/prefixlen también sirven de patrón para controlar el acceso a un grupo determinado de direcciones IPv6. El siguiente ejemplo se aplicaría a cualquier host con un rango de direcciones de
3ffe:505:2:1::through3ffe:505:2:1:ffff:ffff:ffff:ffff:ALL : [3ffe:505:2:1::]/64
ALL : [3ffe:505:2:1::]/64Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Asterisco (*) — Los asteriscos pueden usarse para buscar todos los grupos o nombres de hosts o direcciones IP siempre y cuando no estén mezclados en una lista de cliente que contenga otros tipos de patrones. El ejemplo a continuación se aplicaría a cualquier host dentro del dominio
example.com:ALL : *.example.com
ALL : *.example.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow - Barra invertida (/) — Si la lista de un cliente comienza por una barra invertida, se considerará como un nombre de archivo. Esto es útil si se necesitan las reglas que especifican grandes cantidades de hosts. El ejemplo a continuación, se refiere a las envolturas TCP para el archivo
/etc/telnet.hostspara todas las conexiones de Telnet:in.telnetd : /etc/telnet.hosts
in.telnetd : /etc/telnet.hostsCopy to Clipboard Copied! Toggle word wrap Toggle overflow
hosts_access para obtener mayor información.
Aviso
2.3.2.1.3. Portmap y envolturas TCP Copiar enlaceEnlace copiado en el portapapeles!
Portmap de envolturas TCP no soporta la búsqueda de hosts, lo cual significa que portmap no puede usar nombres de host para identificar hosts. Como consecuencia, las reglas de control de acceso para portmap en hosts.allow o hosts.deny deben usar direcciones IP o la palabra clave ALL, para especificar hosts.
portmap no se efectúan inmediatamente. Necesitará reiniciar el servicio de portmap.
portmap para operar, por lo tanto tenga en cuenta estas limitaciones.
2.3.2.1.4. Operadores Copiar enlaceEnlace copiado en el portapapeles!
EXCEPT. Se puede utilizar tanto para la lista de demonios como para la lista de clientes de una regla.
EXCEPT permite a excepciones específicas ampliar las coincidencias dentro de la misma regla.
hosts.allow, todos los hosts example.com tienen permiso para conectarse a los servicios, a excepción de cracker.example.com:
ALL: .example.com EXCEPT cracker.example.com
ALL: .example.com EXCEPT cracker.example.com
hosts.allow, los clientes de la red 192.168.0.x pueden usar todos los servicios a excepción de FTP:
ALL EXCEPT vsftpd: 192.168.0.
ALL EXCEPT vsftpd: 192.168.0.
Nota
EXCEPT. De esta manera se permite que otros administradores puedan escanear rápidamente los archivos para ver qué hosts tienen permiso o no de acceder a los servicios sin tener que ordenar a través de los operadores EXCEPT.
2.3.2.2. Campos de opciones\n Copiar enlaceEnlace copiado en el portapapeles!
2.3.2.2.1. Registro Copiar enlaceEnlace copiado en el portapapeles!
severity.
example.com se registran de forma predeterminada a la instalación authpriv syslog (porque no se especifica el valor de la instalación) con la prioridad de emerg:
sshd : .example.com : severity emerg
sshd : .example.com : severity emerg
severity. El ejemplo a continuación registra todos los intentos de conexión SSH por hosts desde el dominio example.com al recurso local0 con una prioridad de alert:
sshd : .example.com : severity local0.alert
sshd : .example.com : severity local0.alert
Nota
syslogd) sea configurado para la instalación local0. Consulte la página de manual syslog.conf para obtener información sobre los recursos de registro personalizados.
2.3.2.2.2. Control de acceso Copiar enlaceEnlace copiado en el portapapeles!
allow o deny respectivamente como opción final.
client-1.example.com, pero niegan conexiones desde client-2.example.com:
sshd : client-1.example.com : allow sshd : client-2.example.com : deny
sshd : client-1.example.com : allow
sshd : client-2.example.com : deny
hosts.allow o hosts.deny. Algunos administradores consideran que esta es la forma más fácil de organizar las reglas de acceso.
2.3.2.2.3. Comandos de shell Copiar enlaceEnlace copiado en el portapapeles!
spawn— Lanza un comando de shell como un proceso hijo. Esta directiva puede realizar tareas tales como la de usar/usr/sbin/safe_fingerpara obtener mayor información sobre el cliente solicitado o para crear archivos de registro especiales mediante el comandoecho.En el siguiente ejemplo, los clientes que intentan acceder a servicios de Telnet desde el dominioexample.comse registran silenciosamente en un archivo especial:in.telnetd : .example.com \ : spawn /bin/echo `/bin/date` from %h>>/var/log/telnet.log \ : allow
in.telnetd : .example.com \ : spawn /bin/echo `/bin/date` from %h>>/var/log/telnet.log \ : allowCopy to Clipboard Copied! Toggle word wrap Toggle overflow twist— Remplaza el servicio que se solicita por el comando especificado. Esta directiva suele utilizarse para establecer trampas a intrusos conocidas también como "honey pots" (ollas de miel). También pueden utilizarse para enviar mensajes a los clientes que se conectan. La directivatwistdebe ir al final de la línea de la regla.En el ejemplo a continuación, los clientes que intentan acceder a servicios FTP desde el dominioexample.comreciben un mensaje mediante el comandoecho: command:vsftpd : .example.com \ : twist /bin/echo "421 This domain has been black-listed. Access denied!"
vsftpd : .example.com \ : twist /bin/echo "421 This domain has been black-listed. Access denied!"Copy to Clipboard Copied! Toggle word wrap Toggle overflow
hosts_options.
2.3.2.2.4. Extensiones Copiar enlaceEnlace copiado en el portapapeles!
spawn y twist, proporcionan información sobre el cliente, servidor y procesos involucrados.
%a— Retorna la dirección IP del cliente.%A— Retorna la dirección IP del servidor.%c— Retorna una variedad de información de cliente, tal como nombre de usuario y nombre de host o nombre de usuario y dirección IP.%d— Retorna el nombre del proceso del demonio.%h— Retorna el nombre de host del cliente (o dirección IP, si el nombre de host no está disponible).%H— Retorna el nombre de host del servidor (o dirección IP, si el nombre de host no está disponible).%n— Retorna el nombre de host del cliente. Si no está disponible, aparecerá en pantalla:unknown. Si el nombre de host del cliente y la dirección del host no coinciden, aparecerá en pantalla:paranoid.%N— Retorna el nombre de host del servidor. Si no está disponible, aparecerá en pantalla:unknown. Si el nombre de host del servidor y la dirección del host no coinciden, aparecerá en pantalla:paranoid.%p— Retorna el ID del proceso del demonio.%s—Retorna varios tipos de información del servidor, tal como el proceso del demonio y la dirección IP del servidor.%u— Retorna el nombre de usuario del cliente. Si no está disponible,unknownaparece en pantalla.
spawn para identificar el host del cliente en un archivo de registro personalizado.
sshd) desde un host en el dominio example.com, ejecute el comando echo para registrar el intento, el cual incluye el nombre de host del cliente (al usar la extensión %h), para un archivo especial:
sshd : .example.com \ : spawn /bin/echo `/bin/date` access denied to %h>>/var/log/sshd.log \ : deny
sshd : .example.com \
: spawn /bin/echo `/bin/date` access denied to %h>>/var/log/sshd.log \
: deny
example.com se les informan que han sido rechazados del servidor:
vsftpd : .example.com \ : twist /bin/echo "421 %h has been banned from this server!"
vsftpd : .example.com \
: twist /bin/echo "421 %h has been banned from this server!"
hosts_access (man 5 hosts_access) y la página de manual para hosts_options.
2.3.3. xinetd Copiar enlaceEnlace copiado en el portapapeles!
xinetd es un súper servicio de envolturas TCP que controla acceso a un subconjunto de servicios de red populares, entre ellos FTP, IMAP y Telnet. También ofrece opciones de configuración para control de acceso, registro mejorado, vinculación, redirección y control de utilización de recursos.
xinetd, el súper servicio recibe la solicitud y revisa si hay reglas de control de acceso de envolturas TCP.
xinetd verificará si la conexión está permitida bajo sus propias reglas de acceso para ese servicio. También verificará si el servicio puede tener más recursos asignados y si no infringe ninguna de las reglas definidas.
xinetd iniciará una instancia del servicio solicitado y pasará control de la conexión. Cuando la conexión se establezca, xinetd no hará más parte de la comunicación entre el cliente y el servidor.
2.3.4. Archivos de configuración xinetd Copiar enlaceEnlace copiado en el portapapeles!
xinetd son los siguientes:
/etc/xinetd.conf— El archivo de configuración globalxinetd./etc/xinetd.d/— El directorio que contiene todos los archivos específicos del servicio.
2.3.4.1. El archivo /etc/xinetd.conf Copiar enlaceEnlace copiado en el portapapeles!
/etc/xinetd.conf contiene los parámetros de configuración generales que afectan a cada servicio bajo el control de xinetd. Se lee cuando el servicio xinetd inicia, para que los cambios de configuración pueden efectuarse, necesitará reiniciar el servicio xinetd. A continuación, se presenta un ejemplo del archivo /etc/xinetd.conf:
xinetd:
instances— Especifica el número máximo de solicitudes simultáneas quexinetdpuede procesar.log_type— Configuraxinetdpara usar el recurso de registroauthpriv, el cual registra las entradas al archivo/var/log/secure. Al añadir una directiva tal comoFILE /var/log/xinetdlogse crearía un archivo de registro personalizado llamadoxinetdlogen el directorio/var/log/.log_on_success— Configura axinetdpara que registre los intentos de conexión correctos. La dirección IP de host remoto predeterminada y el ID del proceso del servidor que procesa la solicitud serán registrados.log_on_failure— Configura axinetdpar registrar los intentos de conexiones fallidas o que han sido denegadas.cps— Configura axinetdpara que no permita más de 25 conexiones por segundo para ningún servicio. Si se sobrepasa este límite, el servicio será retirado por 30 segundos.includedir/etc/xinetd.d/— Incluye las opciones declaradas en los archivos de configuración del servicio localizados en el directorio/etc/xinetd.d/. Consulte la Sección 2.3.4.2, “El directorio /etc/xinetd.d/” para obtener mayor información.
Nota
log_on_success como de log_on_failure en el directorio /etc/xinetd.conf suelen ser modificados en los archivos de configuración específica del servicio. Por lo tanto, puede aparecer más información en el archivo de registro de un determinado archivo que en el archivo /etc/xinetd.conf puede indicar. Consulte la Sección 2.3.4.3.1, “Opciones de registro” para obtener mayor información.
2.3.4.2. El directorio /etc/xinetd.d/ Copiar enlaceEnlace copiado en el portapapeles!
/etc/xinetd.d/ contiene los archivos de configuración para cada servicio administrado por xinetd y los nombres de los archivos se relacionan con el servicio. Como con xinetd.conf, este directorio se lee únicamente cuando se inicia el servicio xinetd. Para que los cambios se efectúen, el administrador debe reiniciar el servicio xinetd.
/etc/xinetd.d/ usa las mismas convenciones que /etc/xinetd.conf. La razón principal por la cual la configuración para cada servicio se almacena en un servicio independiente es la de facilitar la personalización y para que otros servicios se afecten menos.
/etc/xinetd.d/krb5-telnet:
telnet:
service— Especifica el nombre del servicio, por lo general uno de los que aparece en la lista del archivo/etc/services.flags— Establece el número de atributos para la conexión.REUSEle pide axinetdque reutilice el socket para una conexión de Telnet.Nota
El indicadorREUSEestá depreciado. Ahora, todos los servicios implícitamente usan el indicadorREUSE.socket_type— Establece el tipo de conexión de red parastream.wait— Especifica si el servicio es de un solo hilo (yes) o de varios hilos (no).user— Especifica el ID de usuario bajo el cual se ejecuta el proceso.server— Especifica el binario ejecutable que se va a lanzar.log_on_failure— Especifica los parámetros paralog_on_failureademás de los que ya están definidos enxinetd.conf.disable— Especifica si el servicio está inhabilitado (yes) o habilitado (no).
xinetd.conf para obtener mayor información sobre estas opciones y su uso.
2.3.4.3. Cómo alterar los archivos de configuración xinetd Copiar enlaceEnlace copiado en el portapapeles!
xinetd. Esta sección resalta algunas de las opciones más comunes.
2.3.4.3.1. Opciones de registro Copiar enlaceEnlace copiado en el portapapeles!
/etc/xinetd.conf como para los archivos de configuración de servicios específicos dentro del directorio /etc/xinetd.d/.
ATTEMPT— Registra el hecho de que se hizo un intento fallido (log_on_failure).DURATION— Registra el tiempo de servicio utilizado por un sistema remoto (log_on_success).EXIT— Registra el estatus de salida o señal de terminación del servicio (log_on_success).HOST— Registra la dirección IP de host (log_on_failureylog_on_success).PID— Registra el ID de proceso del servidor que recibe la solicitud (log_on_success).USERID— Registra al usuario remoto que utiliza el método definido en RFC 1413 para todos los servicios de flujo de multihilos (log_on_failureylog_on_success).
xinetd.conf.
2.3.4.3.2. Opciones de control de acceso Copiar enlaceEnlace copiado en el portapapeles!
xinetd pueden elegir el uso de las reglas de acceso de hosts de envolturas TCP, proporcionar control de acceso a través de archivos de configuración de xinetd o una combinación de los dos. Consulte la Sección 2.3.2, “Archivos de configuración de envolturas TCP ” para obtener mayor información sobre archivos de control de acceso de hosts de envolturas TCPor more information about TCP Wrappers hosts access control files.
xinetd para controlar el acceso a servicios.
Nota
xinetd reinicia el servicio xinetd.
xinetd solamente afecta los servicios controlados por xinetd.
xinetd difiere del método utilizado por envolturas TCP. Cuando las envolturas TCP sitúan toda la configuración de acceso en dos archivos, /etc/hosts.allow y /etc/hosts.deny, el control de acceso de xinetd se encuentra en cada archivo de configuración en el directorio /etc/xinetd.d/.
xinetd:
only_from— Únicamente acepta hosts especificados para usar el servicio.no_access— Bloquea a los hosts listados para usar el servicio.access_times— Especifica el rango de tiempo que un servicio determinado puede utilizarse. El rango debe establecerse en un formato de 24 horas, HH:MM-HH:MM.
only_from y no_access pueden utilizar una lista de todas las direcciones IP o nombres de hosts, o pueden especificar una red completa. Igual que las envolturas TCP, al combinar el control de acceso xinetd con la configuración de registro mejorada se puede aumentar la seguridad al bloquear solicitudes de los hosts rechazados mientras se registra detalladamente cada intento de conexión.
/etc/xinetd.d/telnet se utiliza para bloquear el acceso Telnet desde un grupo de red determinado y restringir todo el intervalo de tiempo que incluso los usuarios autorizados pueden ingresar:
172.16.45.0/24 tal como 172.16.45.2, intenta acceder al servicio Telnet, recibe el siguiente mensaje:
Conexión cerrada por un host externo
Conexión cerrada por un host externo
/var/log/messages, así:
Sep 7 14:58:33 localhost xinetd[5285]: FAIL: telnet address from=172.16.45.107 Sep 7 14:58:33 localhost xinetd[5283]: START: telnet pid=5285 from=172.16.45.107 Sep 7 14:58:33 localhost xinetd[5283]: EXIT: telnet status=0 pid=5285 duration=0(sec)
Sep 7 14:58:33 localhost xinetd[5285]: FAIL: telnet address from=172.16.45.107
Sep 7 14:58:33 localhost xinetd[5283]: START: telnet pid=5285 from=172.16.45.107
Sep 7 14:58:33 localhost xinetd[5283]: EXIT: telnet status=0 pid=5285 duration=0(sec)
xinetd, es importante entender la relación entre los dos mecanismos de control de acceso.
xinetd cuando el cliente solicita una conexión:
- El demonio
xinetdaccede a las reglas de acceso de las envolturas TCP mediante una llamada de bibliotecalibwrap.a. Si una regla de negación coincide con el cliente, la conexión se descartará. Si una regla de permiso coincide con el cliente, la conexión pasará axinetd. - El demonio
xinetdverifica sus propias reglas de acceso tanto para el servicioxinetdcomo para el servicio solicitado. Si una regla de negación coincide con el cliente, la conexión se descartará. De lo contrario,xinetdiniciará una instancia del servicio solicitado y pasará control de la conexión de ese servicio.
Importante
xinetd. Si no se configuran correctamente pueden ocasionar efectos indeseables.
2.3.4.3.3. Opciones de vinculación y redirección Copiar enlaceEnlace copiado en el portapapeles!
xinetd soportan la vinculación del servicio a una dirección IP y las solicitudes de entrada de redirección para ese servicio a otra dirección IP, nombre de host o puerto.
bind en los archivos de configuración específicos del servicio y enlaza al servicio a una dirección IP en el sistema. Cuando se configura, la opción bind únicamente permite solicitudes para acceder al servicio a la dirección IP correcta. Puede usar este método para vincular diferentes servicios a diversas interfaces de red con base en los requisitos.
redirect acepta una dirección IP o nombre de host seguido de un número de puerto. Esta opción configura el servicio para redirigir las solicitudes para este servicio a un host especificado o número de puerto. Esta funcionalidad puede utilizarse para señalar las diferentes direcciones IP en la misma máquina, cambiar la solicitud a un sistema y número de puerto totalmente diferentes o alguna combinación de estas opciones. Un usuario que se conecte a un servicio en un sistema puede por lo tanto ser redirigido a otro sistema sin interrupción.
xinetd puede realizar esta redirección al generar un proceso que permanezca vivo para la duración de la conexión entre el cliente que solicita la máquina y el host que proporciona el servicio, al transferir los datos entre los dos sistemas.
bind y redirect son evidentes cuando se utilizan juntas. Al vincular un servicio a una dirección IP particular en un sistema y luego redirigir las solicitudes para este servicio a una segunda máquina que únicamente la primera máquina puede ver, se puede utilizar un sistema interno para proporcionar servicios a una red totalmente diferente. También estas opciones sirven para limitar la exposición de un determinado servicio en un equipo de host múltiple a una dirección IP conocida, como también para redirigir las solicitudes para ese servicio a otra máquina especialmente configurada con ese propósito.
bind y redirect en este archivo garantizan que el servicio de Telnet en la máquina esté asociado a una dirección IP externa (123.123.123.123), la que se encarga de la Internet. Además, las solicitudes al servicio de Telnet enviadas a 123.123.123.123 se redirigen a través de un segundo adaptador de red a una dirección IP interna (10.0.1.13) que únicamente el cortafuegos puede acceder. Luego, el cortafuegos envía la comunicación entre los dos sistemas y el sistema que se conecta piensa que está conectado a 123.123.123.123 cuando en realidad está conectado a una máquina diferente.
bind y redirect, la máquina de puerta de enlace puede actuar como un proxy entre los sistemas externos y la máquina interna configurada para proporcionar el servicio. Además, las diversas opciones de registro y control de acceso xinetd están disponibles como protección adicional.\n
2.3.4.3.4. Opciones de administración de recursos Copiar enlaceEnlace copiado en el portapapeles!
xinetd puede añadir un nivel básico de protección contra ataques de \tDenegación de Servicio (DoS). La siguiente es una lista de las directivas que ayudan a limitar la eficacia de dichos ataques:
per_source— Define el número máximo de instancias para un servicio por dirección IP. Acepta únicamente enteros como argumento y puede utilizarse enxinetd.confy en los archivos de configuración específicos del servicio en el directorioxinetd.d/.cps— Define el número máximo de conexiones por segundo. Esta directiva toma dos argumentos de enteros separados por un espacio en blanco. El primer argumento es el número máximo de conexiones por segundo permitidas para el servicio. El segundo argumento es el número de segundos quexinetddebe esperar antes de rehabilitar el servicio. Aparecen únicamente los enteros como argumentos y pueden ser utilizados en el archivoxinetd.confo los archivos de configuración específicos del servicio en el directorioxinetd.d/.max_load— Define el uso de la CPU o umbral promedio de carga para un servicio. Acepta un argumento de número de punto flotante.El promedio de carga es una medida aproximada del número de procesos activos en un tiempo determinado. Vea los comandosuptime,whoyprocinfopara obtener mayor información sobre el promedio de carga.
xinetd. Consulte la página de manual xinetd.conf para obtener mayor información.
2.3.5. Recursos adicionales Copiar enlaceEnlace copiado en el portapapeles!
xinetd se puede obtener en la documentación del sistema y la Internet.
2.3.5.1. Documentación sobre envolturas TCP instaladas Copiar enlaceEnlace copiado en el portapapeles!
xinetd y control de acceso.
/usr/share/doc/tcp_wrappers-<version>/— Este directorio contiene un archivoREADMEque aborda cómo funcionan las envolturas TCP y los varios riesgos de nombres y direcciones de hosts falsos que existen./usr/share/doc/xinetd-<version>/— Este directorio contiene un archivoREADMEque aborda los aspectos de control de acceso y un archivosample.confcon varias ideas para modificar los archivos de configuración de servicios en el directorio/etc/xinetd.d/.- TCP Wrappers and
xinetd-related man pages — Una cantidad de páginas de manual para varias aplicaciones y archivos de configuración relacionados con envolturas TCP yxinetd. A continuación presentamos las páginas de manual más importantes:- Aplicaciones de servidor
man xinetd— La página de manual paraxinetd.
- Archivos de configuración
man 5 hosts_access— La página de manual para los archivos de control de acceso de hosts de envolturas TCP.man hosts_options— La página de manual para campos de envolturas TCP.man xinetd.conf— El listado de la página de manual de opciones de configuración dexinetd.
2.3.5.2. Sitios web útiles sobre envolturas TCP Copiar enlaceEnlace copiado en el portapapeles!
- http://www.docstoc.com/docs/2133633/An-Unofficial-Xinetd-Tutorial — Un guía que aborda varias formas de optimizar los archivos de configuración predeterminados de
xinetdpara cumplir con las metas de seguridad específicas.
2.3.5.3. Bibliografía relacionada Copiar enlaceEnlace copiado en el portapapeles!
- Hacking Linux Exposed por Brian Hatch, James Lee y George Kurtz; Osbourne/McGraw-Hill — Un recurso de seguridad excelente con información sobre envolturas TCP y
xinetd.
2.4. Redes privadas virtuales (VPN) Copiar enlaceEnlace copiado en el portapapeles!
2.4.1. ¿Cómo funciona la VPN? Copiar enlaceEnlace copiado en el portapapeles!
2.4.2. Openswan Copiar enlaceEnlace copiado en el portapapeles!
2.4.2.1. Visión general Copiar enlaceEnlace copiado en el portapapeles!
Openswan es una implementación IPsec a nivel de kernel de código abierto en Red Hat Enterprise Linux. Emplea protocolos de establecimiento de llaves IKE (Internet Key Exchange) v1 y v2, implementadas como demonios de usuario. También se pueden establecer las llaves de forma manual a través de los comandos ip xfrm, sin embargo no se recomienda.
Openswan tiene una biblioteca criptográfica incorporada, no obstante también soporta la biblioteca de NSS (Servicios de seguridad de red), la cual está completamente soportada y se requiere para cumplimiento de seguridad FIPS. Para mayor información sobre FIPS (Federal Information Processing Standard) puede buscar en la Sección 7.2, “Estándar de procesamiento de información federal (FIPS)”.
Ejecute el comando yum install openswan para instalar Openswan.
2.4.2.2. Configuración Copiar enlaceEnlace copiado en el portapapeles!
Esta sección enumera y describe los directorios y archivos utilizados para configurar Openswan.
- Directorio principal -
/etc/ipsec.d. Almacena archivos relacionados con Openswan. - Archivo maestro de configuración -
/etc/ipsec.conf. Otros archivos de configuración*.confse pueden crear en/etc/ipsec.dpara configuraciones individuales. - Archivo de secretos maestro -
/etc/ipsec.secrets. Otros archivos*.secretsse pueden crear en/etc/ipsec.dpara configuraciones individuales. - Certificado de archivo de base de datos -
/etc/ipsec.d/cert*.db. El archivo anterior predeterminado de base de datos NSS escert8.db. Desde Red Hat Enterprise Linux 6 en adelante, las bases de datos NSS sqlite se utilizan en el archivocert9.db. - Archivos de claves de base de datos -
/etc/ipsec.d/key*.db. El archivo anterior de base de datos predeterminado NSS eskey3.db. Desde Red Hat Enterprise Linux 6 en adelante, las bases de datos NSS sqlite se utilizan en el archivokey4.db. - Sitio para certificados de autoridad certificadora (CA)
/etc/ipsec.d/cacerts. - Sitio para certificados de usuario
/etc/ipsec.d/certs. No son necesarios al usar NSS. - Políticas de grupos -
/etc/ipsec.d/policies. Las políticas se pueden definir como de bloque, claras, claras-o-privadas, privadas, privadas-o-claras. - Archivo de contraseñas NSS -
/etc/ipsec.d/nsspassword. Este archivo no existe de forma predeterminada y se requiere si la base de datos de NSS en uso se crea con una contraseña.
Esta sección enumera algunas de las opciones de configuración disponibles, la mayoría escritas a /etc/ipsec.conf.
protostack- define la pila de protocolo que se utiliza. La opción predeterminada en Red Hat Enterprise Linux 6 es netkey. Otros valores válidos auto, klips y mast.nat_traversal- define si la solución de NAT para conexiones es aceptada. Se predetermina como no.dumpdir- define el sitio para archivos de vaciado de núcleo.nhelpers- Al usar NSS, se define el número de hilos utillizados para operaciones criptográficas. Si no se utiliza NSS, se define el número de procesos utilizados para operaciones criptográficas.virtual_private- subredes permitidas para conexión de clientes. Los rangos que pueden existir detrás de un enrutador NAT a través de los cuales se conecta el cliente.plutorestartoncrash- se establece a sí de forma predeterminada.plutostderr- ruta para registro de error pluto. Señala el sitio syslog de forma predeterminada.connaddrfamily- puede establecerse como ipv4 o ipv6.
ipsec.conf(5).
2.4.2.3. Comandos Copiar enlaceEnlace copiado en el portapapeles!
Nota
service ipsec start/stop es el método recomendado para cambiar el estado del servicio ipsec. También el la técnica que se recomienda para iniciar y detener todos los servicios en Red Hat Enterprise Linux 6.
- Cómo iniciar y detener a Openswan:
ipsec setup start/stopservice ipsec start/stop
- Adición o borrado de una conexión:
ipsec auto --add/delete <connection name>
- Establecer conexión o desconexión
ipsec auto --up/down <connection-name>
- Generación de llaves RSA:
ipsec newhostkey --configdir /etc/ipsec.d --password password --output /etc/ipsec.d/<name-of-file>
- Revisión de políticas ipsec en el kernel:
ip xfrm policyip xfrm state
- Creación de un certificado de auto-firmado:
certutil -S -k rsa -n <ca-cert-nickname> -s "CN=ca-cert-common-name" -w 12 -t "C,C,C" -x -d /etc/ipsec.d
- Creación de certificado de usuario firmado por la autoridad certificadora anterior:
certutil -S -k rsa -c <ca-cert-nickname> -n <user-cert-nickname> -s "CN=user-cert-common-name" -w 12 -t "u,u,u" -d /etc/ipsec.d
2.4.2.4. Recursos de Openswan\n Copiar enlaceEnlace copiado en el portapapeles!
- El paquete Openswan-doc: HTML, examples, README.*
- README.nss
2.5. Cortafuegos Copiar enlaceEnlace copiado en el portapapeles!
| Método | Descripción | Ventajas | Desventajas | ||||||
|---|---|---|---|---|---|---|---|---|---|
| NAT | Traducción de dirección de red (NAT) sitúa subredes IP detrás de una o un grupo pequeño de direcciones IP públicas, las cuales enmascaran todas las solicitudes a una fuente en lugar de varias. El kernel de Linux tiene una funcionalidad NAT incorporada a través del subsistema de kernel Netfilter. |
|
| ||||||
| Filtro de paquetes | Un cortafuegos de filtraje de paquetes lee cada paquete de datos que pasa a través de una LAN. Puede leer y procesar paquete por información de encabezado y flitra el paquete basado en conjuntos de reglas progamables implementadas por el administrador de cortafuegos. El kernel de Linux tiene una funcionalidad de filtraje incorporada a través del subsistema de kernel Netfilter. |
|
| ||||||
| Proxy | Los cortafuegos de proxy filtran todas las solicitudes de algún protocolo o tipo desde clientes LAN a una máquina proxy y luego hacen esas solicitudes a la Internet en nombre del cliente local. Una máquina proxy actúa como un buffer entre usuarios malintencionados remotos y las máquinas de cliente de redes internas. |
|
|
2.5.1. Netfilter e IPTables Copiar enlaceEnlace copiado en el portapapeles!
iptables.
2.5.1.1. Vision general de IPTables Copiar enlaceEnlace copiado en el portapapeles!
iptables, una herramienta de línea de comandos similar en sintaxis a su predecesora, ipchains, la cual fue remplazada por Netfilter o iptables en el kernel de Linux 2.4 y versiones superiores.
iptables usa el subsistema Netfilter para mejorar la conexión de redes, la inspección y el procesamiento. iptables ofrece ingreso avanzado, acciones de pre y post-enrutamiento, traducción de dirección de redes y el reenvío de puertos, todo en una interfaz de línea de comandos.
iptables. Para obtener mayor información, consulte Sección 2.6, “IPTables”.
2.5.2. Configuración básica de cortafuegos Copiar enlaceEnlace copiado en el portapapeles!
2.5.2.1. Firewall Configuration Tool Copiar enlaceEnlace copiado en el portapapeles!
[root@myServer ~] # system-config-firewall
[root@myServer ~] # system-config-firewall
Figura 2.5. Firewall Configuration Tool
Nota
iptables específicas.
2.5.2.2. Habilitar o inhabilitar el cortafuegos Copiar enlaceEnlace copiado en el portapapeles!
- Desactivado — La desactivación del cortafuegos proporciona acceso completo al sistema y no verifica la seguridad. Solamente debe seleccionarse si se ejecuta en una red confiable (no la Internet) o si necesita configurar un cortafuegos personal mediante la línea de comandos de iptables.
Aviso
Las configuraciones de cortafuegos y las reglas personalizadas de cortafuegos se almacenan en el archivo/etc/sysconfig/iptables. Si selecciona Disactivado y hace clic en , estas reglas de configuraciones y cortafuegos se perderán. - Activado — Esta opción configura el sistema para que rechace las conexiones de entrada que no responden a solicitudes salientes, tales como respuestas de DNS o solicitudes de DHCP. Si es necesario el acceso a servicios que se están ejecutando en esta máquina, puede elegir servicios específicos a través del cortafuegos.Si conecta su sistema a la Internet, pero no planea ejecutar un servidor, esta es la opción más segura.
2.5.2.3. Servicios fiables Copiar enlaceEnlace copiado en el portapapeles!
- WWW (HTTP)
- El protocolo HTTP es utilizado por Apache (y por otros servidores de red) para servir páginas web. Si planea que su servidor esté disponible al público, seleccione esta cajilla de verificación. Esta opción no se requiere para ver localmente páginas o para desarrollar páginas web. Este servicio requiere que el paquete
httpdesté instalado.Al habilitar WWW (HTTP) no se abrirá el puerto para HTTPS, la versión sencilla de HTTP. Si requiere este servicio, seleccione la cajilla de verificación Secure WWW (HTTPS). - FTP
- El protocolo FTP sirve para transferir archivos entre máquinas en una red. Si planea que el servidor FTP esté disponible al público, seleccione esta cajilla de verificación. Este servicio requiere que el paquete
vsftpdesté instalado. - SSH
- Shell segura (SSH) es un paquete de herramientas para ingresar y ejecutar comandos en una máquina remota. Par permitir acceso remoto a una máquina a través de ssh, seleccione esta cajilla de verificación ahora. Este servicio requiere que el paquete
openssh-serveresté instalado. - Telnet
- Telnet es un protocolo para ingresar a máquinas remotas. Las comunicaciones de Telnet están cifradas y no proporcionan seguridad de redes. Se recomienda permitir el acceso de Telnet. Para permitir el acceso remoto la máquina a través de Telnet, seleccione esta cajilla de verificación: Este servicio requiere que el paquete
telnet-serveresté instalado. - Mail (SMTP)
- SMTP es un protocolo que permite a los hosts conectarse directamente al equipo para enviar correo. No necesita activar este servicio si recoge el correo desde su servidor de ISP mediante POP3 o IMAP, o si utiliza una herramienta tal como
fetchmail. Para permitir la entrega de correo a su máquina, seleccione esta cajilla de verificación. Observe que un servicio SMTP mal configurado puede permitir que máquinas remotas usen su servidor para enviar correo no deseado. - NFS4
- El Sistema de archivos de red (NFS) es un protocolo para compartir archivos comúnmente usados en sistemas *NIX. La versión 4 de este protocolo es más segura que sus predecesoras. Si desea compartir archivos o directorios en su sistema con otros usuarios de red, seleccione esta cajilla de verificación.
- Samba
- Samba es una implementación del protocolo de red SMB propietario de Microsoft. Si necesita archivos compartidos, directorios o impresoras conectadas localmente con equipos de Microsoft Windows, seleccione esta cajilla de verificación,
2.5.2.4. Otros puertos Copiar enlaceEnlace copiado en el portapapeles!
iptables. Por ejemplo, para permitir a IRC y al protocolo de impresora (IPP) pasar a través del cortafuegos, añada la siguiente sección Other ports:
194:tcp,631:tcp
2.5.2.5. Cómo guardar la configuración Copiar enlaceEnlace copiado en el portapapeles!
iptables y se escriben al archivo /etc/sysconfig/iptables. El servicio iptables también se inicia para que el cortafuegos se active inmediatamente después de guardar las opciones seleccionadas. Si seleccionó Desactivar cortafuegos, el archivo /etc/sysconfig/iptables se elimina y el servicio de iptables se detiene inmediatamente.
/etc/sysconfig/system-config-firewall para que la configuración se restaure la próxima vez que la aplicación inicie. No modifique a mano este archivo.
iptables no está configurado para iniciar de forma automática en el momento del inicio. Consulte Sección 2.5.2.6, “Activación del servicio de IPTables” para obtener mayor información.
2.5.2.6. Activación del servicio de IPTables Copiar enlaceEnlace copiado en el portapapeles!
iptables está en ejecución. Para iniciar el servicio, use el siguiente comando:
[root@myServer ~] # service iptables restart
[root@myServer ~] # service iptables restart
iptables inicie en el arranque del sistema, use el siguiente comando:
[root@myServer ~] # chkconfig --level 345 iptables on
[root@myServer ~] # chkconfig --level 345 iptables on
2.5.3. Uso de IPTables Copiar enlaceEnlace copiado en el portapapeles!
iptables es iniciar el servicio de iptables. Use el comando a continuación para iniciar el servicio iptables:
[root@myServer ~] # service iptables start
[root@myServer ~] # service iptables start
Nota
ip6tables puede apagarse si intenta usar únicamente el servicio de iptables. Si desactiva el servicio de ip6tables, recuerde desactivar también la red IPv6. Nunca deje el dispositivo de red activo sin el correspondiente cortafuegos.
iptables para que inicie de forma predeterminada al arrancar el sistema, use el siguiente comando:
[root@myServer ~] # chkconfig --level 345 iptables on
[root@myServer ~] # chkconfig --level 345 iptables on
iptables a iniciar cada vez que el sistema se arranque en nivel de ejecución 3, 4, o 5.
2.5.3.1. Sintaxis del comando de IPTables Copiar enlaceEnlace copiado en el portapapeles!
iptables ilustra la sintaxis básica del comando:
[root@myServer ~ ] # iptables -A <cadena> -j <destino>
[root@myServer ~ ] # iptables -A <cadena> -j <destino>
-A especifica que la regla debe ser añadida a <chain>. Cada cadena comprende una o más reglas y se conoce también como conjunto de reglas.
-j <target> especifica el destino de la regla; es decir, qué hacer si el paquete coincide con la regla. ACEPTAR, ENTREGAR Y RECHAZAR son ejemplos de destinos incorporados.
iptables para obtener mayor información en las cadenas disponibles, opciones y destinos.
2.5.3.2. Políticas básicas de cortafuegos Copiar enlaceEnlace copiado en el portapapeles!
iptables consta de una política predeterminada y cero o más reglas que funcionan en concierto con la política predeterminada para definir todo el conjunto de reglas para el cortafuegos.
[root@myServer ~ ] # iptables -P INPUT DROP [root@myServer ~ ] # iptables -P OUTPUT DROP
[root@myServer ~ ] # iptables -P INPUT DROP
[root@myServer ~ ] # iptables -P OUTPUT DROP
[root@myServer ~ ] # iptables -P FORWARD DROP
[root@myServer ~ ] # iptables -P FORWARD DROP
2.5.3.3. Guardado y restauración de reglas de IPTables Copiar enlaceEnlace copiado en el portapapeles!
iptables son transitorios; si vuelve a arrancar el sistema o si reinicia el servicio de iptables, las reglas se pierden y se restablecen de forma automática. Para guardar las reglas para que se carguen al iniciar el servicio de iptables, use el siguiente comando:
[root@myServer ~ ] # service iptables save
[root@myServer ~ ] # service iptables save
/etc/sysconfig/iptables y se aplican cuando el servicio inicia o al arrancar la máquina.
2.5.4. Filtraje de IPTables comunes Copiar enlaceEnlace copiado en el portapapeles!
[root@myServer ~ ] # iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
[root@myServer ~ ] # iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
[root@myServer ~ ] # iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
[root@myServer ~ ] # iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
Importante
iptables, el orden es importante.
-I. Por ejemplo:
[root@myServer ~ ] # iptables -I INPUT 1 -i lo -p all -j ACCEPT
[root@myServer ~ ] # iptables -I INPUT 1 -i lo -p all -j ACCEPT
iptables para aceptar conexiones desde clientes remotos SSH. Por ejemplo, las siguientes reglas permiten el 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
[root@myServer ~ ] # iptables -A INPUT -p tcp --dport 22 -j ACCEPT
[root@myServer ~ ] # iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
iptables.
2.5.5. Reglas FORWARD y NAT Copiar enlaceEnlace copiado en el portapapeles!
iptables proporciona políticas de enrutamiento y reenvío que se pueden implementar para prevenir el uso anormal de los recursos de la red.
FORWARD permite al administrador controlar a dónde se pueden dirigir los paquetes dentro de una LAN. Por ejemplo, para permitir el reenvío de toda la LAN (asumiendo que al cortafuegos o puerta de enlade se le asigna una dirección 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
[root@myServer ~ ] # iptables -A FORWARD -i eth1 -j ACCEPT
[root@myServer ~ ] # iptables -A FORWARD -o eth1 -j ACCEPT
eth1.
Nota
[root@myServer ~ ] # sysctl -w net.ipv4.ip_forward=1
[root@myServer ~ ] # sysctl -w net.ipv4.ip_forward=1
/etc/sysctl.conf, así:
net.ipv4.ip_forward = 0
net.ipv4.ip_forward = 0
net.ipv4.ip_forward = 1
net.ipv4.ip_forward = 1
sysctl.conf:
[root@myServer ~ ] # sysctl -p /etc/sysctl.conf
[root@myServer ~ ] # sysctl -p /etc/sysctl.conf
2.5.5.1. Post-enrutamiento y enmascarado de IP Copiar enlaceEnlace copiado en el portapapeles!
[root@myServer ~ ] # iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
[root@myServer ~ ] # iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
-t nat) y especifica la cadena incorporada POSTROUTING para NAT (-A POSTROUTING) en el dispositivo de red externo de cortafuegos (-o eth0).
-j MASQUERADE se especifica para enmascarar la dirección IP privada de un nodo con la dirección IP externa del cortafuegos o Puerta de enlace.
2.5.5.2. Pre-enrutamiento Copiar enlaceEnlace copiado en el portapapeles!
-j DNAT para especificar una dirección de destino IP y puerto en el que los paquetes que solicitan una conexión a su servicio interno pueden ser reenviados.
[root@myServer ~ ] # iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 172.31.0.23:80
[root@myServer ~ ] # iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 172.31.0.23:80
Nota
[root@myServer ~ ] # iptables -A FORWARD -i eth0 -p tcp --dport 80 -d 172.31.0.23 -j ACCEPT
[root@myServer ~ ] # iptables -A FORWARD -i eth0 -p tcp --dport 80 -d 172.31.0.23 -j ACCEPT
2.5.5.3. DMZs e IPTables Copiar enlaceEnlace copiado en el portapapeles!
iptables para enrutar el tráfico a algunas máquinas, tales como un servidor HTTP o FTP, en una zona desmilitarizada (DMZ). Un DMZ es una subred local especial dedicada a proporcionar servicios en un transportador público, tal como la Internet.
PREROUTING para reenviar los paquetes al destino apropiado:
[root@myServer ~ ] # iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 10.0.4.2:80
[root@myServer ~ ] # iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 10.0.4.2:80
2.5.6. Software malintencionado y direcciones IP falsas Copiar enlaceEnlace copiado en el portapapeles!
[root@myServer ~ ] # iptables -A OUTPUT -o eth0 -p tcp --dport 31337 --sport 31337 -j DROP [root@myServer ~ ] # iptables -A FORWARD -o eth0 -p tcp --dport 31337 --sport 31337 -j DROP
[root@myServer ~ ] # iptables -A OUTPUT -o eth0 -p tcp --dport 31337 --sport 31337 -j DROP
[root@myServer ~ ] # iptables -A FORWARD -o eth0 -p tcp --dport 31337 --sport 31337 -j DROP
[root@myServer ~ ] # iptables -A FORWARD -s 192.168.1.0/24 -i eth0 -j DROP
[root@myServer ~ ] # iptables -A FORWARD -s 192.168.1.0/24 -i eth0 -j DROP
Nota
DROP y REJECT cuando se emplean las reglas appended.
REJECT niega acceso y retorna un error de connection refused para usuarios que intentan conectar el servicio. El destino DROP, como su nombre lo indica, lanza el paquete sin ninguna advertencia.
REJECT.
2.5.7. IPTables y trazado de conexiones Copiar enlaceEnlace copiado en el portapapeles!
iptables usa el método llamado rastreo de conexión para almacenar información sobre conexiones entrantes. Puede aceptar o negar acceso con base en los siguientes estados de conexión:
NEW— Un paquete que solicita una nueva conexión, tal como una solicitud HTTP.ESTABLISHED— Un paquete que hace parte de una coexión existente.RELATED— Un paquete que solicita una nueva conexión pero que hace parte de una conexión existente. Por ejemplo, FTP usa el puerto 21 para establecer una conexión, pero los datos se transfieren en un puerto diferente (por lo general, el puerto 20).INVALID— Un paquete que no hace parte de ninguna conexión en la tabla de seguimiento de conexión.
iptables que rastrea con cualquier protocolo de redes, incluso si el protocolo mismo no tiene estado (tal como UDP). El siguiente ejemplo muestra la regla que usa el seguimiento de conexión para reenviar únicamente los paquetes asociados a una conexión establecida:
[root@myServer ~ ] # iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
[root@myServer ~ ] # iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
2.5.8. IPv6 Copiar enlaceEnlace copiado en el portapapeles!
ip6tables. En Red Hat Enterprise Linux 6, tanto los servicio IPv4 como los servicios IPv6 se habilitan de forma predeterminada.
ip6tables es idéntica a iptables en cada aspecto excepto en el número de direcciones de 128 bits que soporta. Por ejemplo, use el siguiente comando para habilitar conexiones SSH en el servidor de redes que reconoce IPv6:
[root@myServer ~ ] # ip6tables -A INPUT -i eth0 -p tcp -s 3ffe:ffff:100::1/128 --dport 22 -j ACCEPT
[root@myServer ~ ] # ip6tables -A INPUT -i eth0 -p tcp -s 3ffe:ffff:100::1/128 --dport 22 -j ACCEPT
2.5.9. Recursos adicionales Copiar enlaceEnlace copiado en el portapapeles!
2.5.9.1. Documentación instalada de cortafuegos Copiar enlaceEnlace copiado en el portapapeles!
- Consulte Sección 2.6, “IPTables” para obtener mayor información sobre el comando
iptables, entre ellos definiciones para varias opciones de comandos. - La página de manual
iptablescontiene un breve resumen de varias opciones.
2.5.9.2. Páginas web útiles sobre cortafuegos Copiar enlaceEnlace copiado en el portapapeles!
- http://www.netfilter.org/ — La página principal oficial de Netfilter y del proyecto de
iptables. - http://www.tldp.org/ — El proyecto de documentación de Linux contiene varias guías relacionadas con la creación y administración de cortafuegos.
- http://www.iana.org/assignments/port-numbers — La lista oficial de puertos de servicios comunes y registrados como asignados por la Autoridad de números asignados de Internet.
2.5.9.3. Documentación relacionada Copiar enlaceEnlace copiado en el portapapeles!
- Red Hat Linux Firewalls, por Bill McCarty; Red Hat Press — una referencia completa de la creación de cortafuegos de red y de servidor mediante la tecnología de filtrado de paquetes de código abierto tal como Netfilter e
iptables. Incluye temas que abordan el análisis de registros de cortafuegos, el desarrollo de reglas de cortafuegos y la personalización de su cortafuegos mediante varias herramientas gráficas. - Linux Firewalls, por Robert Ziegler; New Riders Press — contiene una información valiosa sobre la construcción de cortafuegos mediante
ipchainsde kernel 2.2 como también de Netfilter eiptables. Además aborda temas sobre aspectos de acceso remoto y sistemas de detección de intrusos.
2.6. IPTables Copiar enlaceEnlace copiado en el portapapeles!
ipchains para filtraje de paquetes y utilizaban listas de reglas aplicadas a paquetes en cada paso del proceso del filtraje. El kernel 2.4 introdujo iptables (conocidas también como netfilter), el cual es similar a ipchains pero extiende ampliamente el alcance y control disponibles para filtrar paquetes de redes.
iptables y cómo se pueden preservan las reglas de filtraje entre reinicios del sistema.
iptables y cómo establecer un cortafuegos en ellas.
Importante
iptables, pero iptables no se puede utilizar si ipchains ya se está ejecutando. Si ipchains está presente en el momento de arranque, el kernel expide un error y falla al iniciar iptables.
ipchains no se afecta por esos errores.
2.6.1. Filtraje de paquetes Copiar enlaceEnlace copiado en el portapapeles!
filter— La tabla predeterminada para manejar paquetes de redes.nat— Sirve para alterar paquetes que crean una nueva conexión y es utilizado por Traducción de dirección de red (NAT).mangle— Sirve para tipos específicos de alteración de paquetes.
netfilter.
filtraje son las siguientes:
- INPUT — Se aplica a los paquetes de redes destinados al host.
- OUTPUT — Se aplica a los paquetes de red generados localmente.
- FORWARD — Se aplica a los paquetes de redes enrutados a través del host.
nat son las siguientes:
- PREROUTING — Altera los paquetes de redes a la llegada.
- OUTPUT — Altera los paquetes de redes generados localmente antes de ser enviados.
- POSTROUTING — Altera los paquetes de redes antes de ser enviados.
mangle son las siguientes:
- INPUT — Altera los paquetes de redes destinados al host.
- OUTPUT — Altera los paquetes de redes generados localmente antes de ser enviados.
- FORWARD — Altera los paquetes de redes enrutados a través del host.
- PREROUTING — Altera los paquetes entrantes de red antes de ser enrutados.
- POSTROUTING — Altera los paquetes de redes antes de ser enviados.
Nota
/etc/sysconfig/iptables o /etc/sysconfig/ip6tables.
iptables inicia antes de los servicios relacionados con DNS cuando se arranca el sistema de Linux. Esto significa que las reglas de cortafuegos solamente pueden hacer referencia a las direcciones IP numéricas (por ejemplo, 192.168.0.1). Nombres de dominio (por ejemplo, host.example.com) en dichas reglas se producen errores.
ACCEPT para el paquete coincidente, el paquete omite la parte restante de las revisiones de la regla y puede continuar su destino. Si la regla especifica un destino DROP, ese paquete no podrá acceder al sistema y no se enviará nada al host que envío el paquete. Si la regla especifica un destino QUEUE, el paquete se pasa a espacio de usuario . Si la regla especifica el destino opcional de REJECT, el paquete es descargado, pero se envía al originador del paquete.
ACCEPT, DROP, REJECT, o QUEUE. Si ninguna de estas reglas en la cadena se aplican al paquete, entonces el paquete es tratado de acuerdo con la política predeterminada.
iptables configura estas tablas y establece las nuevas tablas si es necesario.
2.6.2. Opciones de comandos para IPTables Copiar enlaceEnlace copiado en el portapapeles!
iptables. Los siguientes aspectos del paquete en su mayoría se utilizan como criterios:
- Tipo de paquetes — Especifica el tipo de filtros de comandos.
- Destino u origen de paquetes — Especifica los paquetes que filtra el comando basado en la fuente o el destino del paquete.
- Destino — Especifica la acción que se realiza en paquetes coincidente con los criterios mencionados.
iptables deben agruparse localmente. La parte restante de esta sección explica las opciones utilizadas comúnmente para el comando iptables.
2.6.2.1. Estructura de opciones de comandos de IPTables Copiar enlaceEnlace copiado en el portapapeles!
iptables tienen la siguiente estructura:
iptables [-t <nombre-tabla>] <command> <nombre-cadena> \ <parámetro-1> <option-1> \ <parámetro-n> <opción-n>
iptables [-t <nombre-tabla>] <command> <nombre-cadena> \ <parámetro-1> <option-1> \ <parámetro-n> <opción-n>
filter se utiliza.
iptables puede cambiar significativamente, según el propósito.
iptables -D <nombre-cadena> <númeroline-number>
iptables, es importante recordar que algunos parámetros y opciones requieren otros parámetros y opciones para construir una regla válida. Esto puede producir un efecto en cascada, con los otros parámetros que requieren aún más parámetros. La regla no será válida, hasta que todos los parámetros y opciones que requieran otro conjunto de opciones hayan sido satisfechos.
iptables -h para ver una lista completa de estructuras de comandos iptables.
2.6.2.2. Opciones de comandos Copiar enlaceEnlace copiado en el portapapeles!
iptables para realizar una acción específica. Solamente una opción de comandos se permite por comando de iptables. A excepción del comando de ayuda, todos los comandos se escriben en mayúsculas.
iptables son los siguientes:
-A— Añade la regla al final de la cadena especificada. A diferencia de la opción-Idescrita abajo, esta opción no lleva un argumento de entero. Siempre añade la regla al final de la cadena especificada.-D <integer> | <rule>— Borra una regla en una cadena determinada por número (tal como el número5para la quinta regla en la cadena) o por especificación de la regla. La especificación de la regla debe coincidir exactamente con una regla existente.-E— Renombra una cadena de usuario definido. Una cadena de usuario definido es una cadena en cualquier otra cadena diferente a la predeterminada, cadenas pre-existentes. (Consulte la opción-Na continuación, para obtener información sobre cómo crear cadenas de usuario definido.) Este es un cambio cosmético y no afecta la estructura de la tabla.Nota
Si intenta renombrar una de las cadenas predeterminadas, el sistema reporta un error deNo se encuentra la coincidencia. No pueden renombrar las cadenas predeterminadas.-F— Vacía la cadena seleccionada, la cual borra cada regla en la cadena. Si no se especifica, este comando vacía todas las reglas de todas las cadenas.-h— Proporciona una lista de estructuras de comandos, como también un breve resumen de parámetros de comandos y opciones.-I [<integer>]— Inserta la regla en una cadena especificada en el punto determinado por un argumento de entero de usuario definido. Si no se especifica ningún argumento, la regla se inserta en la parte superior de la cadena.Importante
Como se anotó anteriormente, el orden de las reglas en una cadena determina las reglas que se aplican a cada paquete. Esto se debe tener presente al adicionar reglas mediante la opción-Ao la opción-I.Es de suma importancia añadir reglas mediante la opción-Icon un argumento de entero. Si especifica un número existente al añadir una regla a una cadena,iptablesañade la nueva regla antes (o por encima) de la regla existente.-L— Lista todas las reglas en una cadena especificada después del comando. Para listar todas las reglas en todas las cadenas en la tabla defilterpredeterminada, no especifique la cadena o la tabla. De lo contrario, se deberá usar la siguiente sintaxis para listar las reglas en una cadena específica en una tabla particular:iptables -L <nombre-cadena> -t <nombre-tabla>
iptables -L <nombre-cadena> -t <nombre-tabla>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Las opciones adicionales para la opción del comando-L, la cual proporciona números de regla y permite descripciones de regla más verbosas, se describen en la Sección 2.6.2.6, “Listado de opciones”.-N— Crea una nueva cadena con el nombre especificado por el usuario. El nombre de cadena debe ser único, de lo contrario se desplegará un mensaje de error.-P— Establece la política predeterminada para la cadena especificada, para que cuando los paquetes atraviesen toda la cadena sin coincidir con una regla, sean enviados al destino especificado, tal como ACCEPT o DROP.-R— Remplaza una regla en una cadena especificada. El número de la regla debe especificarse después del nombre de la cadena. La primer regla en una cadena corresponde a la regla número uno.-X— Borra una cadena especificada por el usuario. Usted no puede borrar una cadena incorporada.-Z— Establece los contadores de bytes y paquetes en todas las cadenas para una tabla a cero.
2.6.2.3. Opciones de parámetros de IPTables Copiar enlaceEnlace copiado en el portapapeles!
iptables, entre ellos los utilizados para adicionar, adjuntar, borrar insertar, o remplazar reglas dentro de una cadena particular, requieren varios parámetros para construir una regla de filtraje de paquetes.
-c— Restablece los contadores para una regla determinada. Este parámetro acepta las opcionesPKTSyBYTESpara especificar el contador que debe restablecerse.-d— Establece el nombre de host de destino, la dirección IP, o la red de un paquete que corresponda con la regla. Al coincidir con una red, los formatos de dirección IP o máscara de red son soportados:N.N.N.N/M.M.M.M— Donde N.N.N.N es el rango de la dirección IP y M.M.M.M es la máscara de red.N.N.N.N/M— Donde N.N.N.N es el rango de la dirección IP y M es la máscara de bits.
-f— Aplica esta regla únicamente a paquetes fragmentados.Puede usar la opción del signo de exclamación (!) antes de este parámetro para especificar que únicamente paquetes des-fragmentados coinciden.Nota
La distinción entre paquetes fragmentados y des-fragmentados es deseable, a pesar de que los paquetes fragmentados sean una parte estándar del protocolo IP.En un principio fueron diseñados para viajar a través de las redes de tamaños diferentes, actualmente es más común usarlos para generar ataques DoS mediante paquetes mal construidos. Es también importante anotar que IPv6 no permite la fragmentación completa.-i— Establece la interfaz de redes, tal comoeth0oppp0. Coniptables, este parámetro opcional puede servir como cadenas de ENTRADA y REENVÍO cuando se usan con la tabla defiltery la cadena de PRE-ENRUTAMIENTO con las tablasnatymangle.Este parámetro también soporta las siguientes opciones:- Signo de exclamación (
!) — Reversa la directiva, lo que significa que cualquier interfaz se excluirá de esta regla. - El signo más (
+) — Un comodín utilizado para hacer concordar todas las interfaces con la cadena especificada. Por ejemplo, el parámetro-i eth+aplicaría esta regla a todas las interfaces de Ethernet pero excluiría cualquier otra interfaz, tal comoppp0.
Si se utiliza el parámetro-isin especificar la interfaz, entonces todas las interfaces se afectarán por la regla.-j— Salta al destino especificado cuando el paquete coincide con una regla determinada.Los destinos estándar sonACCEPT,DROP,QUEUEyRETURN.Las opciones extendidas también están disponibles a través de módulos cargados de forma predeterminada con el paquete RPM deiptablesRed Hat Enterprise Linux. Los destinos válidos en estos módulos incluyen las opcionesLOG,MARKyREJECT, entre otras. Consulte la página de manualiptablespara obtener mayor información sobre otros destinos.Esta opción también sirve para dirigir el paquete coincidente con una regla determinada a una cadena definida por usuario fuera de la actual cadena para que otras reglas puedan aplicarse al paquete.Si no se especifica el destino, el paquete pasa la regla sin llevar a cabo ninguna acción. No obstante, el contador para esta regla aumenta en uno.-o— Establece la interfaz de red saliente para una regla. Esta opción es solamente válida para las cadenas de SALIDA Y REENVÍO en la tablafilter, y la cadena de POSTENRUTAMIENTO en las tablasnatymangle. Este parámetro acepta las mismas opciones que las del parámetro de interfaz de redes (-i).-p <protocol>— Establece el protocolo IP afectado por la regla. Este protocolo puede sericmp,tcp,udpoall, o también puede ser un valor numérico que represente alguno de estos protocolos o un protocolo diferente. También puede usar cualquiera de los protocolos listados en el archivo/etc/protocols.El protocolo "all" significa que la regla se aplica a cada protocolo soportado. Si no hay un protocolo listado con esta regla, se predeterminará el protocolo "all".-s— Establece el origen para un paquete determinado mediante la misma sintaxis del parámetro de destino (-d).
2.6.2.4. Opciones coincidentes de IPTables Copiar enlaceEnlace copiado en el portapapeles!
iptables. Por ejemplo, -p <nombre-protocolo> activa opciones para el protocolo especificado. Tenga en cuanta que puede usar el ID de protocolo, en lugar del nombre de protocolo. Consulte los siguientes ejemplos, cada uno de los cuales tiene el mismo efecto:
iptables -A INPUT -p icmp --icmp-type any -j ACCEPT
iptables -A INPUT -p icmp --icmp-type any -j ACCEPT
iptables -A INPUT -p 5813 --icmp-type any -j ACCEPT
iptables -A INPUT -p 5813 --icmp-type any -j ACCEPT
/etc/services. Para facilitar la lectura, se recomienda el uso de nombres de servicios en lugar de números de puertos.
Aviso
/etc/services para evitar la modificación no autorizada. Si este archivo se puede editar, los ciberpiratas pueden usarlo para activar puertos en su máquina si no la ha cerrado. Para proteger este archivo, escriba los siguientes comandos como root:
chown root.root /etc/services chmod 0644 /etc/services chattr +i /etc/services
[root@myServer ~]# chown root.root /etc/services
[root@myServer ~]# chmod 0644 /etc/services
[root@myServer ~]# chattr +i /etc/services
2.6.2.4.1. Protocolo TCP Copiar enlaceEnlace copiado en el portapapeles!
-p tcp):
--dport— Establece el puerto de destino para el paquete.Para configurar esta opción, utilice el nombre del servicio de red (tal como www o smtp); un número de puerto; o un rango de números de puerto.Para especificar un rango de número de puertos, separe los dos números con dos puntos (:). Por ejemplo:-p tcp --dport 3000:3200. El rango más amplio que se acepta es0:65535.Use el signo de exclamación (!) antes de la opción--dportpara hacer coincidir todos los paquetes que no usen ese servicio o puerto de red.Para explorar los nombres y alias de los servicios de red y los números de puerto que utilizan, consulte el archivo/etc/services.La opción coincidente--destination-portes sinónima de--dport.--sport— Establece el puerto de origen mediante las mismas opciones como--dport. La opción coincidente--source-portes sinónima de--sport.--syn— Se aplica a todos los paquetes TCP diseñados para iniciar la comunicación, conocidos comúnmente como Paquetes SYN. Los paquetes que llevan carga útil de datos no se tocan.Use un signo de exclamación (!) antes de la opción--synpara que coincida con todos los paquetes non-SYN.--tcp-flags <tested flag list> <establece la lista de indicadores>— Permite que los paquetes TCP que tienen establecidos bits específicos (indicadores), coincidan con una regla.La opción de coincidencia--tcp-flagsacepta dos parámetros. El primer parámetro es la máscara; una lista de indicadores separados por coma que van a ser examinados en el paquete. El segundo paquete es una lista de indicadores separados por coma que se deben establecer para que la regla coincida.Los indicadores posibles son:ACKFINPSHRSTSYNURGALLNONE
Por ejemplo, una regla deiptablesque contiene la siguiente especificación solamente concuerda con los paquetes TCP que tienen el indicador SYN y los indicadores de ACK y FIN no configurados:--tcp-flags ACK,FIN,SYN SYNUse el signo de exclamación (!) antes de--tcp-flagspara reversar el efecto de la opción de coincidencia.--tcp-option— Intenta coincidir con opciones específicas de TCP que puedan establecerse dentro de un paquete determinado. Esta opción de coincidencia también se puede reversar con el signo de exclamación (!).
2.6.2.4.2. Protocolo UDP Copiar enlaceEnlace copiado en el portapapeles!
-p udp):
--dport— Especifica el puerto de destino del paquete UDP, mediante el nombre del servicio, el número de puerto o el rango de número de puertos. La opción de coincidencia--destination-portes sinónima de--dport.--sport— Especifica el puerto de origen del paquete UDP, mediante el nombre de servicio, el número de puerto o el rango de números de puerto. La opción--source-portes sinónima de--sport.
--dport y --sport, para especificar el rango de números de puerto, separe los dos números con dos puntos (:). Por ejemplo: -p tcp --dport 3000:3200. El rango más amplio aceptable es 0:65535.
2.6.2.4.3. Protocolo ICMP Copiar enlaceEnlace copiado en el portapapeles!
-p icmp):
--icmp-type— Establece el nombre o número de tipo ICMP para que coincida con la regla. Para obtener una lista de nombres de ICMP válidos, escriba el comandoiptables -p icmp -h.
2.6.2.4.4. Módulos de opciones de coincidencia adicionales Copiar enlaceEnlace copiado en el portapapeles!
iptables.
-m <nombre-módulo>, donde <nombre-módulo> es el nombre del módulo.
limitmodule — Coloca los límites en la cantidad de paquetes que coinciden con una regla determinada.Cuando se utiliza junto con el destino deLOG, el módulolimitpuede evitar que el flujo de paquetes coincidentes llenen el registro del sistema con mensajes repetitivos o agoten todos los recursos del sistema.Consulte la Sección 2.6.2.5, “Opciones de destino” para obtener mayor información sobre el destino deLOG.El módulolimitpermite las siguientes opciones:--limit— Establece el número máximo para un periodo de tiempo determinado, especificado como un par de<valor>/<periodo>. Por ejemplo, el uso de--limit 5/hourpermite cinco coincidencias de regla por hora.Los periodos pueden ser en segundos, minutos, horas o días.Si el modificador de número y tiempo no se utiliza, se toma el valor predeterminado3/hour.--limit-burst—Establece un límite en el número de paquetes que pueden coincidir con una regla a la vez.Esta opción se especifica como un entero y debe utilizarse junto con la opción--limit.Si no se especifica el valor, se toma el valor predeterminado de cinco (5).
- Módulo de
state— Permite coincidencias de estado.El módulostatepermite las siguientes opciones:--state— corresponde a un paquete con los siguientes estados de conexión:ESTABLISHED— El paquete coincidente con otros paquetes en una conexión establecida. Necesita aceptar este estado para mantener una conexión entre el cliente y el servidor.INVALID— El paquete coincidente no puede conectarse a una conexión conocida.NEW— El paquete coincidente crea una nueva conexión o hace parte de una conexión de dos vías no vista anteriormente. Necesita aceptar este estado si desea permitir nuevas conexiones para el servicio.RELATED— El paquete coincidente inicia una nueva conexión relacionada de alguna forma con una conexión existente. Un ejemplo de ella es el FTP, el cual usa una conexión para controlar el tráfico (puerto 21), y una conexión independiente para transferir los datos (puerto 20).
Estos estados de conexión pueden usarse en combinación con otros al separarlos con comas, tal como-m state --state INVALID,NEW.
macmodule — Permite la concordancia entre direcciones MAC de hardware.El módulomacpermite la siguiente opción:--mac-source— Coincide con una dirección MAC de la tarjeta de interfaz de red que envió el paquete. Para excluir una dirección MAC de una regla, coloque un signo de exclamación (!) antes de la opción coincidente--mac-source.
iptables para obtener más opciones de coincidencia disponibles a través de los módulos.
2.6.2.5. Opciones de destino Copiar enlaceEnlace copiado en el portapapeles!
<user-defined-chain>— Una cadena definida por usuario dentro de la tabla. Los nombres de cadena definidos por usuario deben ser únicos. Este destino pasa al paquete de la cadena especificada.ACCEPT— Acepta que el paquete continúe a su destino o a otra cadena.DROP— elimina el paquete sin responder al solicitante. El sistema que envió el paquete no es notificado sobre la falla.QUEUE— El paquete está en la cola para ser manejado por una aplicación de espacio de usuario.RETURN— Para de comparar el paquete con las reglas en la cadena actual. Si el paquete con un destino deRETURNconcuerda con una regla en una cadena llamada desde otra cadena, el paquete retorna a la primera cadena para continuar la revisión de la regla donde había quedado. Si la regla deRETURNse utiliza en una cadena incorporada y el paquete no se puede desplazar a la cadena anterior, se utilizará el destino predeterminado para la cadena actual.
LOG— Registra todos los paquetes coincidentes con esta regla. Puesto que el kernel registra los paquetes, el archivo/etc/syslog.confdetermina el sitio en donde se escriben estos registros. Los registros se sitúan de forma predeterminada en el archivo/var/log/messages.Se pueden usar las opciones adicionales después del destinoLOGpara especificar la forma en la que el registro se presenta:--log-level— Establece el nivel de prioridad de un evento de registro. Consulte la página de manualsyslog.confpara obtener una lista de los niveles de prioridad.--log-ip-options— Registra las opciones establecidas en el encabezamiento del paquete IP.--log-prefix— Sitúa una cadena de hasta 29 caracteres antes de la línea de registro cuando se escribe. Esto es útil para escritura de filtraje de syslog para usar junto con el registro de paquetes.Nota
Debido a un problema con esta opción, debe añadir un espacio final al valor log-prefix.--log-tcp-options— Registra las opciones establecidas en el encabezamiento de un paquete TCP.--log-tcp-sequence— Escribe el número de secuencia TCP para el paquete en el registro.
REJECT— Devuelve un paquete de errores al sistema remoto y elimina el paquete.El destinoREJECTacepta--reject-with <tipo>(donde <tipo> es el tipo de rechazo) y permite una información más detallada que va a ser devuelta con el paquete de errores. El mensajeport-unreachablees el tipo de error predeterminado si no se utiliza otra opción. Consulte la página de manual deiptablespara obtener una lista completa de opciones<type>.
nato con la alteración de paquetes mediante la tabla mangle, se puede hallar en la página de manual de iptables.
2.6.2.6. Listado de opciones Copiar enlaceEnlace copiado en el portapapeles!
iptables -L [<chain-name>], proporciona una visión general básica de las cadenas actuales de la tabla de filtros predeterminadas. Opciones adicionales proporcionan mayor información:
-v— Despliega una salida verbosa, tal como el número de paquetes y bytes que cada cadena ha procesado, el número de paquetes que cada cadena ha coincidido y las interfaces que se aplican a una determinada regla.-x— Extiende los números a sus valores exactos. En un sistema ocupado, el número de paquetes y bytes procesados por una cadena determinada o regla puede abreviarse aKilobytes,Megabytes(Megabytes) oGigabytes. Esta opción fuerza a que el número completo sea desplegado.-n— Despliega las direcciones IP y números de puertos en formato numérico, en lugar del formato predeterminado nombre de host y servicio de red.--line-numbers— Lista las reglas en cada cadena cerca del orden numérico en la cadena. Esta opción sirve para cuando se intenta borrar la regla específica en al cadena o localizar dónde insertar la regla dentro de una cadena.-t <table-name>— Especifica un nombre de tabla. Si se omite, se predetermina a la tabla de filtro.
2.6.3. Cómo guardar reglas de IPTables Copiar enlaceEnlace copiado en el portapapeles!
iptables se almacenan en la memoria. Si el sistema se inicia antes de guardar el conjunto de reglas iptables, todas las reglas se perderán. Para que las reglas de netfilter persistan a través del re-arranque del sistema, es necesario guardarlas. Para guardar las reglas de netfilter, escriba el siguiente comando como root:
/sbin/service iptables save
/sbin/service iptables save
iptables, el cual ejecuta el programa /sbin/iptables-save y escribe la configuración actual de iptables a /etc/sysconfig/iptables. El archivo existente /etc/sysconfig/iptables se guarda como /etc/sysconfig/iptables.save.
iptables reaplica las reglas guardas en /etc/sysconfig/iptables mediante el comando /sbin/iptables-restore.
iptables antes de enviarla al archivo /etc/sysconfig/iptables, es posible copiar las reglas de iptables dentro de este archivo desde otra versión del archivo. Así, se provee una forma rápida de distribuir los conjuntos de reglas de iptables a varias máquinas.
iptables-save > <nombredearchivo>donde <filename> es el nombre definido por usuario para su conjunto de reglas.
[root@myServer ~]# iptables-save > <nombredearchivo>donde <filename> es el nombre definido por usuario para su conjunto de reglas.
Importante
/etc/sysconfig/iptables a otras máquinas, escriba /sbin/service iptables restart para que las nuevas reglas se efectúen.
Nota
iptables command (/sbin/iptables), el cual se utiliza para manipular las tablas y cadenas que constituyen la funcionalidad de iptables e iptables service (/sbin/service iptables), el cual se utiliza para habilitar o inhabilitar el servicio iptables.
2.6.4. Scripts de control de IPTables Copiar enlaceEnlace copiado en el portapapeles!
iptables en Red Hat Enterprise Linux:
- Firewall Configuration Tool (
system-config-firewall) — Una interfaz gráfica para crear, activar y guardar reglas de cortafuegos básicas. Consulte la Sección 2.5.2, “Configuración básica de cortafuegos” para obtener mayor información. /sbin/service iptables <option>— Se utiliza para manipular varias funciones deiptablesmediante el initscript. Las siguientes opciones están disponibles:start— Si un cortafuegos está configurado (es decir,/etc/sysconfig/iptablesexiste), todos losiptablesque se estén ejecutando se detendrán completamente y luego se iniciarán mediante el comando/sbin/iptables-restore. Esta opción solamente funciona si el módulo de kernelipchainsse carga, escriba el siguiente comando como root:lsmod | grep ipchains
[root@MyServer ~]# lsmod | grep ipchainsCopy to Clipboard Copied! Toggle word wrap Toggle overflow Si este comando no retorna ninguna salida, significa que el módulo no está cargado. Si es necesario, utilice el comando/sbin/rmmodpara retirar el módulo.stop— Si el cortafuegos está en ejecución, las reglas de cortafuegos en memoria se vacían y todos los módulos de iptables y asistentes se descargan.Si la directivaIPTABLES_SAVE_ON_STOPen el archivo de configuración/etc/sysconfig/iptables-configse cambia de su valor predeterminadoyes, las reglas actuales se guardarán en/etc/sysconfig/iptablesy las reglas existentes se desplazan al archivo/etc/sysconfig/iptables.save.Consulte la Sección 2.6.4.1, “Archivo de configuración de scripts de control de IPTables” para obtener mayor información sobre el archivoiptables-config.restart— Si un cortafuegos está en ejecución, las reglas de cortafuegos en memoria se eliminan, y el cortafuegos se reinicia si está configurado en/etc/sysconfig/iptables. Esta opción solamente funciona si el módulo de kernelipchainsno está cargado.Si la directivaIPTABLES_SAVE_ON_RESTARTen el archivo de configuración/etc/sysconfig/iptables-configcambia de su valor predeterminado ayes, las reglas actuales se guardan en/etc/sysconfig/iptablesy las reglas existentes se desplazan al archivo/etc/sysconfig/iptables.save.Consulte la Sección 2.6.4.1, “Archivo de configuración de scripts de control de IPTables” para obtener mayor información sobre el archivoiptables-config.status— Muestra el estatus del cortafuegos y lista todas las reglas activas.La configuración predeterminada para esta opción muestra las direcciones IP en cada regla. Para desplegar la información sobre el dominio y el nombre de host, modifique el archivo/etc/sysconfig/iptables-configy cambie el valor deIPTABLES_STATUS_NUMERICano. Consulte la Sección 2.6.4.1, “Archivo de configuración de scripts de control de IPTables” para obtener mayor información sobre el archivo deiptables-config.panic— Vacía todas las reglas. La política de todas las tablas configuradas se establece aDROP.Esta opción podría ser útil si se sabe que el servidor está comprometido. En lugar de desconectarlo físicamente desde la red o de apagar el sistema, puede usar esta opción para detener el tráfico de red posterior y dejar a la máquina lista para el análisis u otros exámenes forenses.save— Guarda las reglas de cortafuegos para/etc/sysconfig/iptablesmedianteiptables-save. Consulte la Sección 2.6.3, “Cómo guardar reglas de IPTables” para obtener mayor información.
Nota
ip6tables por iptables en los comandos /sbin/service listados en esta sección. Para obtener mayor información sobre IPv6 y netfilter, consulte la Sección 2.6.5, “IPTables e IPv6”.
2.6.4.1. Archivo de configuración de scripts de control de IPTables Copiar enlaceEnlace copiado en el portapapeles!
iptables es controlada por los archivos de configuración /etc/sysconfig/iptables-config. La siguiente es una lista de directivas contenidas en este archivo:
IPTABLES_MODULES— Especifica una lista de módulos deiptables, separada por espacios, para cargar cuando un cortafuegos esté activo. Estos módulos pueden incluir rastreo de conexiones y asistentes NAT.IPTABLES_MODULES_UNLOAD— Descarga módulos en el reinicio y se detiene. Esta directiva acepta los siguientes valores:yes— Es el valor predeterminado. Esta opción debe configurarse para establecer un estado correcto para que un cortafuegos reinicie o se detenga.no— Esta opción se debe establecer únicamente si hay problemas con la descarga de módulos de netfilter.
IPTABLES_SAVE_ON_STOP— Guarda las reglas de cortafuegos actuales para/etc/sysconfig/iptablescuando el cortafuegos se detiene. Esta directiva acepta los siguientes valores:yes— Guarda las reglas existentes para/etc/sysconfig/iptablescuando el cortafuegos se detiene, se desplaza la versión anterior a la del archivo/etc/sysconfig/iptables.save.\nno— El valor predeterminado. No guarda las reglas existentes cuando se detiene el cortafuegos.
IPTABLES_SAVE_ON_RESTART— Guarda las reglas de cortafuegos actuales cuando se reinicia el cortafuegos. Esta directiva acepta los siguientes valores:yes— Guarda las reglas existentes en/etc/sysconfig/iptablescuando se reinicia el cortafuegos, desplazando la versión anterior del archivo/etc/sysconfig/iptables.save.no— El valor predeterminado. No guarda reglas cuando se reinicia el cortafuegos.
IPTABLES_SAVE_COUNTER— Guarda y restaura todos los paquetes y contadores de bytes en todas las cadenas y reglas. Esta directiva acepta los siguientes valores:yes— Guarda los valores de contador.no— Es el valor predeterminado. No guarda los valores de contador.
IPTABLES_STATUS_NUMERIC— Direcciones IP de salida en forma numérica en lugar de dominio o nombres de host. Esta directiva acepta los siguientes valores:yes— Es el valor predeterminado. Retorna únicamente direcciones IP dentro de una salida de estatus.no— Retorna el dominio o nombres de host dentro de una salida de estatus.
2.6.5. IPTables e IPv6 Copiar enlaceEnlace copiado en el portapapeles!
iptables-ipv6 está instalado, netfilter en Red Hat Enterprise Linux puede filtrar la siguiente generación de protocolo de Internet IPv6. El comando utilizado para manipular el netfilter IPv6 es ip6tables.
iptables, excepto la tabla nat que aún no es compatible. Es decir que aún no es posible realizar tareas de traducción de direcciones de red IPv6, tales como enmascaramiento y reenvío de puertos.
ip6tables se almacenan en el archivo /etc/sysconfig/ip6tables. Las reglas anteriores guardadas por initscripts ip6tables se guardan en el archivo /etc/sysconfig/ip6tables.save.
ip6tables se almacenan en /etc/sysconfig/ip6tables-config y los nombres de cada directiva varían levemente de sus homólogos de iptables.
iptables-config IPTABLES_MODULES:la equivalente en el archivo ip6tables-config es IP6TABLES_MODULES.
2.6.6. Recursos adicionales Copiar enlaceEnlace copiado en el portapapeles!
iptables.
- Sección 2.5, “Cortafuegos” — Contiene un capítulo sobre el rol de los cortafuegos dentro de una estrategia general de seguridad como también estrategias para construir reglas de cortafuegos.
2.6.6.1. Documentación de tablas IP instaladas Copiar enlaceEnlace copiado en el portapapeles!
man iptables— Contiene una descripción deiptablescomo también una lista completa de destinos, opciones y extensiones de coincidencia.
2.6.6.2. Sitios web útiles de tablas IP Copiar enlaceEnlace copiado en el portapapeles!
- http://www.netfilter.org/ — El hogar del proyecto netfilter o iptables. Contiene información variada sobre
iptables, entre ellas Preguntas frecuentes que resuelven problemas específicos y varias guías útiles de Rusty Russell, el mantenedor de cortafuegos de Linux IP. Los documentos de CÓMO en el sitio cubren temas tales como conceptos básicos de redes, filtraje de paquetes de kernel y configuraciones de NAT. - http://www.linuxnewbie.org/nhf/Security/IPtables_Basics.html — Una introducción a la forma como los paquetes se desplazan a través del kernel de Linux, más una introducción a la creación de comandos básicos de
iptables.
Capítulo 3. Cifrado Copiar enlaceEnlace copiado en el portapapeles!
3.1. Datos quietos Copiar enlaceEnlace copiado en el portapapeles!
3.2. Cifrado total de disco Copiar enlaceEnlace copiado en el portapapeles!
3.3. Cifrado basado en archivos Copiar enlaceEnlace copiado en el portapapeles!
3.4. Datos en movimiento Copiar enlaceEnlace copiado en el portapapeles!
3.5. Redes virtuales privadas Copiar enlaceEnlace copiado en el portapapeles!
3.6. Shell segura Copiar enlaceEnlace copiado en el portapapeles!
3.7. Motor OpenSSL PadLock Copiar enlaceEnlace copiado en el portapapeles!
Nota
/etc/pki/tls/openssl.cnf y añada lo siguiente al comienzo del archivo:
openssl_conf = openssl_init
openssl_conf = openssl_init
openssl engine -c -tt
# openssl engine -c -tt
openssl speed aes-128-cbc
# openssl speed aes-128-cbc
dd if=/dev/zero count=100 bs=1M | ssh -c aes128-cbc localhost "cat >/dev/null"
# dd if=/dev/zero count=100 bs=1M | ssh -c aes128-cbc
localhost "cat >/dev/null"
3.8. Cifrado de disco LUKS Copiar enlaceEnlace copiado en el portapapeles!
3.8.1. Implementación de LUKS en Red Hat Enterprise Linux Copiar enlaceEnlace copiado en el portapapeles!
cryptsetup --help) es aes-cbc-essiv:sha256 (ESSIV - Encrypted Salt-Sector Initialization Vector). Observe que el programa de instalación, Anaconda, emplea de forma predeterminada el modo XTS (aes-xts-plain64). El tamaño de la llave para LUKS es de 256 bits. El tamaño de llave predeterminada para LUKS con Anaconda (modo XTS) es de 512 bits. Las cifras que están disponibles son:
- AES - Estándar de cifrado avanzado - FIPS PUB 197
- Twofish (un cifrado de bloque de 128 bits)
- Serpent
- cast5 - RFC 2144
- cast6 - RFC 2612
3.8.2. Directorios de cifrado manual Copiar enlaceEnlace copiado en el portapapeles!
Aviso
3.8.3. Instrucciones paso a paso Copiar enlaceEnlace copiado en el portapapeles!
- Ingrese el nivel de ejecución 1:
telinit 1 - Desmonte su /home actual:
umount /home - Si esto falla utilice
fuserpara buscar y matar todos los procesos que acaparan a /home:fuser -mvk /home - Verifique si /home ya no está montado:
cat /proc/mounts | grep home - Llene su partición con datos aleatorios:
dd if=/dev/urandom of=/dev/VG00/LV_homeEste proceso tarda varias horas en completar.Importante
Sin embargo, el proceso es imperativo para tener una buena protección contra intentos de ingreso. Deje que se ejecute durante la noche. - Inicie la partición:
cryptsetup --verbose --verify-passphrase luksFormat /dev/VG00/LV_home - Abra el dispositivo recién cifrado:
cryptsetup luksOpen /dev/VG00/LV_home home - Verifique si está ahí:
ls -l /dev/mapper | grep home - Cree un sistema de archivos:
mkfs.ext3 /dev/mapper/home - Móntelo:
mount /dev/mapper/home /home - Revise si está visible:
df -h | grep home - Añada lo siguiente a /etc/crypttab:
home /dev/VG00/LV_home none - Modifique su /etc/fstab, retire la entrada anterior para /home y añada
/dev/mapper/home /home ext3 defaults 1 2 - Restaure los contextos predeterminados de seguridad de SELinux:
/sbin/restorecon -v -R /home - Reinicie:
shutdown -r now - La entrada en /etc/crypttab hace que su equipo pregunte la contraseña de
luksen el arranque - Ingrese como root y restaure su copia de seguridad
3.8.4. ¿Qué ha logrado? Copiar enlaceEnlace copiado en el portapapeles!
3.8.5. Enlaces de interés Copiar enlaceEnlace copiado en el portapapeles!
3.9. Uso del Guarda de privacidad GNU (GNUPG) Copiar enlaceEnlace copiado en el portapapeles!
3.9.1. Creación de llaves GPG in GNOME Copiar enlaceEnlace copiado en el portapapeles!
Administración del sistema> Administración > Añadir/Eliminar software y espere el PackageKit para iniciar. Ingrese Seahorse en la cajilla de texto y seleccione buscar. Seleccione la cajilla de verificación cerca del paquete ''seahorse'' y seleccione ''Aplicar'' para añadir el software. Puede instalar Seahorse en la línea de comandos con el comando su -c "yum install seahorse"
Seahorse. Desde el menú de ''Archivo'' seleccione ''Nueva'' luego ''llave PGP''. Después haga clic en ''Continuar''. Escriba su nombre completo, dirección de correo-e y un comentario opcional que describa quién es usted (por ejemplo.: John C. Smith, jsmith@example.com, The Man). Haga clic en ''Crear''. Se desplegará un diálogo que le preguntará su frase de paso para la llave. Elija una contraseña poderosa pero a la vez fácil de recordar. Haga clic en ''Aceptar'' y la llave se creará.
Aviso
3.9.2. Creación de llaves GPG en KDE Copiar enlaceEnlace copiado en el portapapeles!
KGpg.
Aviso
3.9.3. Creación de llaves GPG mediante la línea de comandos Copiar enlaceEnlace copiado en el portapapeles!
gpg --gen-key
Enter para asignar el valor predeterminado si se desea. El primer indicador le pide que seleccione la clase de llave que usted prefiere.
1y, por ejemplo, valida la llave por un año. (Puede cambiar esta fecha de expiración después de generar la llave, si cambia de parecer.)
gpg pide información sobre la firma, aparece el siguiente mensaje: Is this correct (y/n)? Ingrese y para finalizar el proceso.
gpg le pedirá que ingrese la frase de paso dos veces para asegurarse de que no se incurre en errores al escribirla.
gpg genera datos aleatorios para crear la llave tan única como sea posible. Desplace el ratón, escriba las llaves aleatorias o realice otras tareas en el sistema durante este paso para agilizar el proceso. Cuando haya terminado, sus llaves estarán completas y listas para ser usadas:
pub 1024D/1B2AFA1C 2005-03-31 John Q. Doe <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]
pub 1024D/1B2AFA1C 2005-03-31 John Q. Doe <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]
gpg --fingerprint jqdoe@example.com
Aviso
3.9.4. Acerca del cifrado de llaves públicas Copiar enlaceEnlace copiado en el portapapeles!
Capítulo 4. Principios generales de protección de información Copiar enlaceEnlace copiado en el portapapeles!
- Cifra todos los datos transmitidos en redes para ayudar a prevenir los ataques de intermediarios e intrusos. Es importante cifrar la información de autenticación como por ejemplo las contraseña.
- Minimiza la cantidad de software instalado y de servicios en ejecución.
- Utiliza software de mejoramiento de seguridad y herramientas, por ejemplo, Seguridad mejorada de Linux (SELinux) para Control de acceso obligatorio (MAC), los iptables Netfilter para filtraje de paquetes (cortafuegos) y el Guardián de Privacidad GNU (GnuPG) para cifrar archivos .
- Si es posible, ejecute cada servicio de red en un sistema independiente para minimizar el riesgo de un servicio en peligro de ser utilizado para comprometer otros servicios.
- Mantenga cuentas de usuario: cree y aplique un política de contraseñas vigorosas; borre cuentas de usuarios no utilizadas.
- Revise de forma rutinaria el sistema y los registros de aplicación. Los registros de sistemas relevantes se escriben a
/var/log/securey/var/log/audit/audit.log. Nota: el envío de registros a un servidor de registros dedicado evita que los atacantes modifiquen fácilmente los registros locales para evitar detección. - Nunca ingrese como usuario root a menos que sea absolutamente necesario. Se recomienda que los administradores usen
sudopara ejecutar comandos como root cuando se requiera. Los usuarios que pueden ejecutarsudose especifican en/etc/sudoers. Use la herramientavisudopara editar/etc/sudoers.
4.1. Consejos, guías y herramientas Copiar enlaceEnlace copiado en el portapapeles!
Nota
Capítulo 5. Instalación segura Copiar enlaceEnlace copiado en el portapapeles!
5.1. Particiones de discos Copiar enlaceEnlace copiado en el portapapeles!
5.2. Utilice el cifrado de particiones LUKS Copiar enlaceEnlace copiado en el portapapeles!
Capítulo 6. Mantenimiento de software Copiar enlaceEnlace copiado en el portapapeles!
6.1. Software mínimo de instalación Copiar enlaceEnlace copiado en el portapapeles!
6.2. Planeación y configuración de actualizaciones de seguridad Copiar enlaceEnlace copiado en el portapapeles!
6.3. Ajuste de actualizaciones automáticas Copiar enlaceEnlace copiado en el portapapeles!
Sistema -> Preferencias -> Actualizaciones de software. En KDE se localiza en: Aplicaciones -> Configuración -> Actualizaciones de software.
6.4. Instalación de paquetes firmados desde repositorios bien conocidos Copiar enlaceEnlace copiado en el portapapeles!
Capítulo 7. Normas y regulaciones federales Copiar enlaceEnlace copiado en el portapapeles!
7.1. Introducción Copiar enlaceEnlace copiado en el portapapeles!
7.2. Estándar de procesamiento de información federal (FIPS) Copiar enlaceEnlace copiado en el portapapeles!
- Nivel 1 - El nivel de seguridad 1 proporciona en nivel inferior de seguridad. Los requerimientos de seguridad básica se especifican para un módulo criptográfico (por ejemplo, se debe usar al menos un algoritmo aprobado o una función de seguridad aprobada). Los mecanismos de seguridad no específicos se requieren en un nivel 1 de seguridad criptográfico que va más allá de los requerimientos básicos para componentes de grado de producción. Un ejemplo de un módulo criptográfico de nivel 1 de seguridad es una panel de cifrado de un computador personal.
- Nivel 2 - El nivel de seguridad 2 mejora los mecanismos de seguridad física de un módulo de nivel de seguridad criptográfica 1 al añadir el requerimiento de manipulación de pruebas, el cual incluye el uso de revestimientos a prueba de manipulaciones o sellos o de cerraduras resistentes en cubiertas desplazables o puertas del módulo. Los revestimientos a prueba de manipulaciones o sellos se colocan en un módulo criptográfico para que el recubrimiento o el sello se rompan para acceder físicamente a las claves de cifrado de texto plano y los parámetros críticos de seguridad (CSP) en el módulo. Los sellos a prueba de manipulaciones o las cerraduras resistentes se colocan en cubiertas o puertas para protegerlas de accesos no autorizados.
- Nivel 3 - Además de los mecanismos de seguridad a prueba de manipulaciones físicas requeridas en el nivel de protección 2, el nivel de seguridad 3 intenta evitar que los intrusos puedan acceder a los CSP dentro del módulo criptográfico. Los mecanismos de seguridad físicos, necesarios en el nivel de seguridad 3 están destinados a tener una alta probabilidad de detección y respuesta tanto a los intentos de acceso físico, como al uso o modificación de los módulos criptográficos. Los mecanismos de seguridad física pueden incluir el uso de encerramientos fuertes y manipulación de detección o respuesta de circuitos que establecen a cero todos los CSP de texto cuando se abren las cubiertas o puertas desplazables del módulo criptográfico.
- Nivel 4 - El nivel de seguridad 4 proporciona el máximo nivel de protección definido en esta norma. En este nivel de seguridad, los mecanismos de seguridad física ofrecen una capa de protección completa en todo el módulo criptográfico para detectar y responder a todos los intentos no autorizados de acceso físico. La penetración de la caja del módulo criptográfico desde cualquier dirección tiene una muy alta probabilidad de ser detectada, lo que resulta en el establecimiento a cero de los CSP de texto. Los módulos criptográficos del nivel de seguridad 4 son útiles para el funcionamiento en entornos que no tienen físicamente protección.
7.3. Manual de operación de programa de seguridad industrial Nacional (NISPON) Copiar enlaceEnlace copiado en el portapapeles!
7.4. Estándar de seguridad de datos de industria de tarjetas de pago (PCI DSS) Copiar enlaceEnlace copiado en el portapapeles!
7.5. Guía de implementación de seguridad técnica Copiar enlaceEnlace copiado en el portapapeles!
Capítulo 8. Referencias Copiar enlaceEnlace copiado en el portapapeles!
Libros
- SELinux por ejemplo
- Mayer, MacMillan y CaplanPrentice Hall, 2007
Guías y ayuda
- Entendimiento y personalización de la política SELinux Apache HTTP
- Guías y charlas de Russell Coker
- CÓMO escribir la política de SELinux
- Base de conocimientos de Red Hat
Información general
- Sitio web de NSA SELinux
- Preguntas frecuentes sobre NSA SELinux
- Preguntas frecuentes sobre SELinux de Fedora
- Seguridad mejorada Linux de código abierto de NSA SELinux
Tecnología
- Una visión general sobre clases de objetos y permisos
- Integración de soporte flexible para políticas de seguridad en el sistema operativo de Linux (Una historia de la implementación de Flask en Linux)
- Implementación de SELinux como un módulo de seguridad de Linux
- Configuración de políticas para Seguridad Mejorada de Linux
Comunidad
- Guía de usuario SELinux Fedora
- Guía de servicios confinados de Administración de SELinux Fedora
- Página de la comunidad de SELinux
- IRC
- irc.freenode.net, #selinux, #fedora-selinux, #security
Historia
- Breve historia de Flask
- Fondo total en Fluke
Apéndice A. Estándares de cifrado Copiar enlaceEnlace copiado en el portapapeles!
A.1. Cifrado sincronizado Copiar enlaceEnlace copiado en el portapapeles!
A.1.1. Estándar de cifrado avanzado - AES Copiar enlaceEnlace copiado en el portapapeles!
A.1.1.1. Usos de AES Copiar enlaceEnlace copiado en el portapapeles!
A.1.1.2. Historia de AES Copiar enlaceEnlace copiado en el portapapeles!
A.1.2. Estándar de cifrado de datos - DES Copiar enlaceEnlace copiado en el portapapeles!
A.1.2.1. Usos de DES Copiar enlaceEnlace copiado en el portapapeles!
A.1.2.2. Historia de DES Copiar enlaceEnlace copiado en el portapapeles!
A.2. Cifrado de llave pública Copiar enlaceEnlace copiado en el portapapeles!
A.2.1. Diffie-Hellman Copiar enlaceEnlace copiado en el portapapeles!
A.2.1.1. Historia de Diffie-Hellman Copiar enlaceEnlace copiado en el portapapeles!
A.2.2. RSA Copiar enlaceEnlace copiado en el portapapeles!
A.2.3. DSA Copiar enlaceEnlace copiado en el portapapeles!
A.2.4. SSL/TLS Copiar enlaceEnlace copiado en el portapapeles!
A.2.5. Cripto-sistema Cramer-Shoup Copiar enlaceEnlace copiado en el portapapeles!
A.2.6. Cifrado ElGamal Copiar enlaceEnlace copiado en el portapapeles!
Apéndice B. Historial de revisiones Copiar enlaceEnlace copiado en el portapapeles!
| Historial de revisiones | |||
|---|---|---|---|
| Revisión 1.5-3.35.402 | Fri Oct 25 2013 | ||
| |||
| Revisión 1.5-3.35 | August 7 2012 | ||
| |||
| Revisión 1.5-3 | 2012-07-18 | ||
| |||
| Revisión 1.5-0 | Apr 19 2010 | ||
| |||
| Revisión 1.4.1-0 | Mar 5 2010 | ||
| |||
| Revisión 1.3-0 | Feb 19 2010 | ||
| |||