Red Hat Training
A Red Hat training course is available for Red Hat Enterprise Linux
Guía de seguridad
Guía para proteger a Red Hat Enterprise Linux
Edición 1.5
Red Hat Inc.
Resumen
Capítulo 1. Visión general de seguridad
Nota
/lib
. Cuando se usan sistemas de 64 bits, algunos de los archivos mencionados pueden localizarse en /lib64
.
1.1. Introducción a seguridad
1.1.1. ¿Qué es la seguridad informática?
1.1.1.1. ¿Cómo surgió la seguridad informática?
1.1.1.2. La seguridad actual
- 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
- 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
1.1.3. Controles de seguridad
- Físicos\n\n\n
- Técnicos
- Administrativos
1.1.3.1. Controles físicos
- 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
- 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
- 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
1.2. Evaluación de vulnerabilidad
- 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
1.2.2. Definición de evaluación y prueba
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
- 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
1.2.3.1. Cómo escanear hosts con Mmap
1.2.3.1.1. Uso de Nmap
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
Interesting ports on foo.example.com: Not shown: 1710 filtered ports PORT STATE SERVICE 22/tcp open ssh 53/tcp open domain 80/tcp open http 113/tcp closed auth
1.2.3.2. Nessus
Nota
1.2.3.3. Nikto
1.2.3.4. Anticipación a sus necesidades futuras
1.3. Atacantes y vulnerabilidades
1.3.1. Breve historia de los hackers
1.3.1.1. Tonos de gris
1.3.2. Amenazas a la seguridad de la red
1.3.2.1. Arquitecturas inseguras
1.3.2.1.1. Redes de difusión
1.3.2.1.2. Servidores centralizados
1.3.3. Amenazas a la seguridad del servidor
1.3.3.1. Servicios no utilizados y puertos abiertos
1.3.3.2. Servicios sin parches
1.3.3.3. Administración inatenta
1.3.3.4. Servicios intrínsecamente inseguros
1.3.4. Amenazas a la estación de trabajo y a la seguridad del computador personal
1.3.4.1. Malas contraseñas
1.3.4.2. Aplicaciones de clientes vulnerables
1.4. Vulnerabilidades y ataques comunes
Tabla 1.1. Vulnerabilidades comunes
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
1.5.1. Actualización de paquetes
Nota
1.5.2. Cómo verificar paquetes firmados
/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 -qa gpg-pubkey*
gpg-pubkey-db42a60e-37ea5438
rpm -qi
seguido por la salida del comando anterior, como el siguiente ejemplo:
rpm -qi gpg-pubkey-db42a60e-37ea5438
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
rpm -Uvh /tmp/updates/*.rpm
rpm -ivh /tmp/updates/<kernel-package>
rpm -e <old-kernel-package>
Nota
Importante
1.5.4. Cómo aplicar los cambios
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 comandolsof
como en el siguiente ejemplo:lsof /lib/libwrap.so*
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
,vsftpd
yxinetd
.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/service
como en el ejemplo siguiente:/sbin/service <service-name> restart
En el ejemplo anterior, remplace <service-name> con el nombre del servicio, tal comosshd
. xinetd
Services- Los servicios controlados por el súper servicio de
xinetd
solamente se ejecutan cuando hay una conexión activa. Entre los ejemplos de servicios controlados porxinetd
se incluyen Telnet, IMAP y POP3.Puesto quexinetd
lanza 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 dexinetd
es 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 comandops
y luego el comandokill
okillall
para 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
Este comando retorna todas las sesiones IMAP activas. Para finalizar las sesiones individuales utilice el siguiente comando:kill <PID>
Si este comando no puede terminar la sesión, use le siguiente comando en su lugar:kill -9 <PID>
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
Capítulo 2. Cómo proteger la red
2.1. Seguridad de estación de trabajo
2.1.1. Evaluación de la seguridad de la estación de trabajo
- 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
2.1.2.1. Contraseñas de BIOS
- 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
2.1.2.2. Contraseñas de gestor de arranque
- 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
/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>
/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
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>
2.1.3. Seguridad de contraseña
/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
- 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
- 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
7
parat
y 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
2.1.3.2.1. Cómo forzar contraseñas fuertes
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
2.1.3.2.3. Caducidad de las contraseñas
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>
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>
[root@myServer ~]# chage davido Changing the aging information for davido Enter the new value, or press ENTER for the default Minimum Password Age [0]: 10 Maximum Password Age [99999]: 90 Last Password Change (YYYY-MM-DD) [2006-08-18]: Password Expiration Warning [7]: Password Inactive [-1]: Account Expiration Date (YYYY-MM-DD) [1969-12-31]: [root@myServer ~]#
- Haga clic en el menú Sistema en el panel, señale Administración y luego haga clic en Usuarios y grupos para desplegar el administrador de usuario. De modo alternativo, escriba el comando
system-config-users
en el indicador de shell. - Haga clic en la pestaña Usuarios y seleccione el usuario requerido en la lista de usuarios.
- Haga clic en Propiedades en la barra de herramientas para desplegar el cuadro de diálogo del usuario (o elija Propiedades en el menú Archivo).
- 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 Aceptar.

Figura 2.1. Cómo especificar opciones de caducidad de contraseñas
2.1.4. Controles administrativos
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
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
- 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
Tabla 2.1. Métodos para desactivar la cuenta de root
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
/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
/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
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
/etc/ssh/sshd_config
). Cambie la línea que se lee:
PermitRootLogin yes
PermitRootLogin no
kill -HUP `cat /var/run/sshd.pid`
2.1.4.2.4. Desactivación de root mediante PAM
/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
/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
su
o sudo
.
2.1.4.3.1. El comando su
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>
wheel
.
- Haga clic en el menú Sistema en el panel, señale Administración y luego haga clic en Usuarios y grupos para desplegar el administrador de usuario. De modo alternativo, escriba el comando
system-config-users
en el indicador de shell. - Haga clic en la pestaña Usuarios y seleccione el usuario requerido en la lista de usuarios.
- Haga clic en Propiedades en la barra de herramientas para desplegar el cuadro de diálogo del usuario (o elija Propiedades en el menú Archivo).
- 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 Aceptar. 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
wheel
pueden usar este programa.
Nota
wheel
de forma predeterminada.
2.1.4.3.2. El comando sudo
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>
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
, puede usar sudo
desde cualquier host y ejecutar cualquier comando.
sudo
:
%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
2.1.5.1. Riesgos para los servicios
- 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
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 comogssftp
ytelnet
.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
- 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 comofinger
yrwhod
revelan 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
.
finger
authd
(conocido comoidentd
en lanzamientos anteriores de Red Hat Enterprise Linux.)netdump
netdump-server
nfs
rwhod
sendmail
smb
(Samba)yppasswdd
ypserv
ypxfrd
2.1.6. Cortafuegos personales
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
- 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
- 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
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
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
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.
%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/
2.2.1.1.2. Envolturas TCP y Advertencias de ataques
spawn
.
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
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
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
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
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
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
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
SENSOR
se 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
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
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
portmap
, ya que éste no tiene una forma de autenticación incorporada.
2.2.2.2. Proteja a portmap con iptables
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 udp ! -s 192.168.0.0/24 --dport 111 -j DROP
Nota
2.2.3. Cómo proteger a NIS
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
2.2.3.2. Utilice un nombre de dominio NIS como contraseña y el nombre de host.
/etc/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
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
/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
Aviso
/var/yp/securenets
.
2.2.3.4. Asigne puertos estáticos y utilice reglas de iptables
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"
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
/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
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
2.2.4.2. Tenga cuidado con los errores de sintaxis
/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)
/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)
showmount
para verificar si se están compartiendo.
showmount -e <hostname>
2.2.4.3. No utilice la opción no_root_squash
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
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
chown root <directory_name>
chmod 755 <directory_name>
/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
UserDir
se 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
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
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
vsftpd
, añada la siguiente directiva al archivo /etc/vsftpd/vsftpd.conf
:
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. #########
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
2.2.6.2. Acceso de anónimo
/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
/var/ftp/pub/
.\n
mkdir /var/ftp/pub/upload
chmod 730 /var/ftp/pub/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
2.2.6.3. Cuentas de usuarios
vsftpd
, añada la siguiente directiva a /etc/vsftpd/vsftpd.conf
:
local_enable=NO
2.2.6.3.1. Cómo restringir las cuentas de usuarios
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
2.2.7. Cómo proteger a Sendmail
2.2.7.1. Limitar el ataque de Denegación del servicio
/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
/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
/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
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
Starting Nmap 4.68 ( http://nmap.org ) at 2009-03-06 12:08 EST Interesting ports on localhost.localdomain (127.0.0.1): Not shown: 1711 closed ports PORT STATE SERVICE 22/tcp open ssh 25/tcp open smtp 111/tcp open rpcbind 113/tcp open auth 631/tcp open ipp 834/tcp open unknown 2601/tcp open zebra 32774/tcp open sometimes-rpc11 Device type: general purpose Running: Linux 2.6.X OS details: Linux 2.6.17 - 2.6.24 Uptime: 4.122 days (since Mon Mar 2 09:12:31 2009) Network Distance: 0 hops OS detection performed. Please report any incorrect results at http://nmap.org/submit/ . Nmap done: 1 IP address (1 host up) scanned in 1.420 seconds
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
netstat
o lsof
. Para revisar el puerto 834 mediante netstat
, use el siguiente comando:
netstat -anp | grep 834
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
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
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
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
libwrap.a
.
/usr/sbin/sshd
está vinculado a libwrap.a
:
[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
- 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
/etc/hosts.allow
/etc/hosts.deny
- Hacer referencia a
/etc/hosts.allow
— El servicio de envolturas TCP lee en secuencia el archivo/etc/hosts.allow
y 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.allow
se 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.allow
ohosts.deny
se 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
2.3.2.1. Cómo dar formato a las reglas de acceso
/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>: ...]
- <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
) 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
) 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
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
- 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
- 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.
- 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.0
a192.168.1.255
:ALL : 192.168.0.0/255.255.254.0
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
- 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
- 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.hosts
para todas las conexiones de Telnet:in.telnetd : /etc/telnet.hosts
hosts_access
para obtener mayor información.
Aviso
2.3.2.1.3. Portmap y envolturas TCP
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
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
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.
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
2.3.2.2.1. Registro
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
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
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
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
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
spawn
— Lanza un comando de shell como un proceso hijo. Esta directiva puede realizar tareas tales como la de usar/usr/sbin/safe_finger
para 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.com
se registran silenciosamente en un archivo especial:in.telnetd : .example.com \ : spawn /bin/echo `/bin/date` from %h>>/var/log/telnet.log \ : allow
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 directivatwist
debe 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.com
reciben un mensaje mediante el comandoecho
: command:vsftpd : .example.com \ : twist /bin/echo "421 This domain has been black-listed. Access denied!"
hosts_options
.
2.3.2.2.4. Extensiones
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,unknown
aparece 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
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!"
hosts_access
(man 5 hosts_access
) y la página de manual para hosts_options
.
2.3.3. xinetd
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
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
/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
:
defaults { instances = 60 log_type = SYSLOG authpriv log_on_success = HOST PID log_on_failure = HOST cps = 25 30 } includedir /etc/xinetd.d
xinetd
:
instances
— Especifica el número máximo de solicitudes simultáneas quexinetd
puede procesar.log_type
— Configuraxinetd
para usar el recurso de registroauthpriv
, el cual registra las entradas al archivo/var/log/secure
. Al añadir una directiva tal comoFILE /var/log/xinetdlog
se crearía un archivo de registro personalizado llamadoxinetdlog
en el directorio/var/log/
.log_on_success
— Configura axinetd
para 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 axinetd
par registrar los intentos de conexiones fallidas o que han sido denegadas.cps
— Configura axinetd
para 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/
/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
:
service telnet { flags = REUSE socket_type = stream wait = no user = root server = /usr/kerberos/sbin/telnetd log_on_failure += USERID disable = yes }
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.REUSE
le pide axinetd
que reutilice el socket para una conexión de Telnet.Nota
El indicadorREUSE
está 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_failure
ademá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
xinetd
. Esta sección resalta algunas de las opciones más comunes.
2.3.4.3.1. Opciones de registro
/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_failure
ylog_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_failure
ylog_on_success
).
xinetd.conf
.
2.3.4.3.2. Opciones de control de acceso
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:
service telnet { disable = no flags = REUSE socket_type = stream wait = no user = root server = /usr/kerberos/sbin/telnetd log_on_failure += USERID no_access = 172.16.45.0/24 log_on_success += PID HOST EXIT access_times = 09:45-16:15 }
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
/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)
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
xinetd
accede 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
xinetd
verifica sus propias reglas de acceso tanto para el servicioxinetd
como para el servicio solicitado. Si una regla de negación coincide con el cliente, la conexión se descartará. De lo contrario,xinetd
iniciará 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
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.
service telnet { socket_type = stream wait = no server = /usr/kerberos/sbin/telnetd log_on_success += DURATION USERID log_on_failure += USERID bind = 123.123.123.123 redirect = 10.0.1.13 23 }
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
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.conf
y 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 quexinetd
debe esperar antes de rehabilitar el servicio. Aparecen únicamente los enteros como argumentos y pueden ser utilizados en el archivoxinetd.conf
o 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
,who
yprocinfo
para 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
xinetd
se puede obtener en la documentación del sistema y la Internet.
2.3.5.1. Documentación sobre envolturas TCP instaladas
xinetd
y control de acceso.
/usr/share/doc/tcp_wrappers-<version>/
— Este directorio contiene un archivoREADME
que 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 archivoREADME
que aborda los aspectos de control de acceso y un archivosample.conf
con 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
- 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
xinetd
para cumplir con las metas de seguridad específicas.
2.3.5.3. Bibliografía relacionada
- 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)
2.4.1. ¿Cómo funciona la VPN?
2.4.2. Openswan
2.4.2.1. Visión general
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
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*.conf
se pueden crear en/etc/ipsec.d
para configuraciones individuales. - Archivo de secretos maestro -
/etc/ipsec.secrets
. Otros archivos*.secrets
se pueden crear en/etc/ipsec.d
para 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
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/stop
service 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 policy
ip 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
- El paquete Openswan-doc: HTML, examples, README.*
- README.nss
2.5. Cortafuegos
Tabla 2.2. Tipos de cortafuegos
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
iptables
.
2.5.1.1. Vision general de IPTables
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
2.5.2.1. Firewall Configuration Tool
[root@myServer ~] # system-config-firewall

Figura 2.5. Firewall Configuration Tool
Nota
iptables
específicas.
2.5.2.2. Habilitar o inhabilitar el cortafuegos
- 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 OK, 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
- 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
httpd
esté 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
vsftpd
esté 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-server
esté 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-server
esté 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
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
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
iptables
está en ejecución. Para iniciar el servicio, use el siguiente comando:
[root@myServer ~] # service iptables restart
iptables
inicie en el arranque del sistema, use el siguiente comando:
[root@myServer ~] # chkconfig --level 345 iptables on
2.5.3. Uso de IPTables
iptables
es iniciar el servicio de iptables
. Use el comando a continuación para iniciar el servicio iptables
:
[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
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
iptables
ilustra la sintaxis básica del comando:
[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
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 FORWARD DROP
2.5.3.3. Guardado y restauración de reglas de IPTables
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
/etc/sysconfig/iptables
y se aplican cuando el servicio inicia o al arrancar la máquina.
2.5.4. Filtraje de IPTables comunes
[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
Importante
iptables
, el orden es importante.
-I
. Por ejemplo:
[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
iptables
.
2.5.5. Reglas FORWARD
y NAT
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
eth1
.
Nota
[root@myServer ~ ] # sysctl -w net.ipv4.ip_forward=1
/etc/sysctl.conf
, así:
net.ipv4.ip_forward = 0
net.ipv4.ip_forward = 1
sysctl.conf
:
[root@myServer ~ ] # sysctl -p /etc/sysctl.conf
2.5.5.1. Post-enrutamiento y enmascarado de IP
[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
-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
Nota
[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
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
2.5.6. Software malintencionado y direcciones IP falsas
[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
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
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
2.5.8. IPv6
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
2.5.9. Recursos adicionales
2.5.9.1. Documentación instalada de cortafuegos
- 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
iptables
contiene un breve resumen de varias opciones.
2.5.9.2. Páginas web útiles sobre cortafuegos
- 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
- 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
ipchains
de 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
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
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
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
iptables
tienen la siguiente estructura:
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
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-I
descrita 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úmero5
para 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-N
a 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-A
o la opción-I
.Es de suma importancia añadir reglas mediante la opción-I
con un argumento de entero. Si especifica un número existente al añadir una regla a una cadena,iptables
añ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 defilter
predeterminada, 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>
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
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 opcionesPKTS
yBYTES
para 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 comoeth0
oppp0
. Coniptables
, este parámetro opcional puede servir como cadenas de ENTRADA y REENVÍO cuando se usan con la tabla defilter
y la cadena de PRE-ENRUTAMIENTO con las tablasnat
ymangle
.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-i
sin 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
,QUEUE
yRETURN
.Las opciones extendidas también están disponibles a través de módulos cargados de forma predeterminada con el paquete RPM deiptables
Red Hat Enterprise Linux. Los destinos válidos en estos módulos incluyen las opcionesLOG
,MARK
yREJECT
, entre otras. Consulte la página de manualiptables
para 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 tablasnat
ymangle
. 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
,udp
oall
, 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
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 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:
[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
-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--dport
para 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-port
es sinónima de--dport
.--sport
— Establece el puerto de origen mediante las mismas opciones como--dport
. La opción coincidente--source-port
es 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--syn
para 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-flags
acepta 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:ACK
FIN
PSH
RST
SYN
URG
ALL
NONE
Por ejemplo, una regla deiptables
que 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 SYN
Use el signo de exclamación (!
) antes de--tcp-flags
para 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
-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-port
es 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-port
es 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
-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
iptables
.
-m <nombre-módulo>
, donde <nombre-módulo> es el nombre del módulo.
limit
module — 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ódulolimit
puede 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ódulolimit
permite 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/hour
permite 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ódulostate
permite 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
.
mac
module — Permite la concordancia entre direcciones MAC de hardware.El módulomac
permite 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
<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 deRETURN
concuerda 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 deRETURN
se 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.conf
determina 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 destinoLOG
para 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.conf
para 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 destinoREJECT
acepta--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-unreachable
es el tipo de error predeterminado si no se utiliza otra opción. Consulte la página de manual deiptables
para obtener una lista completa de opciones<type>
.
nat
o 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
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
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
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.
[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
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 deiptables
mediante el initscript. Las siguientes opciones están disponibles:start
— Si un cortafuegos está configurado (es decir,/etc/sysconfig/iptables
existe), todos losiptables
que 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 kernelipchains
se carga, escriba el siguiente comando como root:[root@MyServer ~]# lsmod | grep ipchains
Si este comando no retorna ninguna salida, significa que el módulo no está cargado. Si es necesario, utilice el comando/sbin/rmmod
para 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_STOP
en el archivo de configuración/etc/sysconfig/iptables-config
se cambia de su valor predeterminadoyes
, las reglas actuales se guardarán en/etc/sysconfig/iptables
y 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 kernelipchains
no está cargado.Si la directivaIPTABLES_SAVE_ON_RESTART
en el archivo de configuración/etc/sysconfig/iptables-config
cambia de su valor predeterminado ayes
, las reglas actuales se guardan en/etc/sysconfig/iptables
y 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-config
y cambie el valor deIPTABLES_STATUS_NUMERIC
ano
. 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/iptables
medianteiptables-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
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/iptables
cuando el cortafuegos se detiene. Esta directiva acepta los siguientes valores:yes
— Guarda las reglas existentes para/etc/sysconfig/iptables
cuando 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/iptables
cuando 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
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
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
man iptables
— Contiene una descripción deiptables
como también una lista completa de destinos, opciones y extensiones de coincidencia.
2.6.6.2. Sitios web útiles de tablas IP
- 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
3.1. Datos quietos
3.2. Cifrado total de disco
3.3. Cifrado basado en archivos
3.4. Datos en movimiento
3.5. Redes virtuales privadas
3.6. Shell segura
3.7. Motor OpenSSL PadLock
Nota
/etc/pki/tls/openssl.cnf
y añada lo siguiente al comienzo del archivo:
openssl_conf = openssl_init
[openssl_init] engines = openssl_engines [openssl_engines] padlock = padlock_engine [padlock_engine] default_algorithms = ALL dynamic_path = /usr/lib/openssl/engines/libpadlock.so init = 1
# openssl engine -c -tt
# openssl speed aes-128-cbc
# dd if=/dev/zero count=100 bs=1M | ssh -c aes128-cbc localhost "cat >/dev/null"
3.8. Cifrado de disco LUKS
3.8.1. Implementación de LUKS en Red Hat Enterprise Linux
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
Aviso
3.8.3. Instrucciones paso a paso
- Ingrese el nivel de ejecución 1:
telinit 1
- Desmonte su /home actual:
umount /home
- Si esto falla utilice
fuser
para 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_home
Este 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
luks
en el arranque - Ingrese como root y restaure su copia de seguridad
3.8.4. ¿Qué ha logrado?
3.8.5. Enlaces de interés
3.9. Uso del Guarda de privacidad GNU (GNUPG)
3.9.1. Creación de llaves GPG in GNOME
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
KGpg
.
Aviso
3.9.3. Creación de llaves GPG mediante la línea de comandos
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]
gpg --fingerprint jqdoe@example.com
Aviso
3.9.4. Acerca del cifrado de llaves públicas
Capítulo 4. Principios generales de protección de información
- 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/secure
y/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
sudo
para ejecutar comandos como root cuando se requiera. Los usuarios que pueden ejecutarsudo
se especifican en/etc/sudoers
. Use la herramientavisudo
para editar/etc/sudoers
.
4.1. Consejos, guías y herramientas
Nota
Capítulo 5. Instalación segura
5.1. Particiones de discos
5.2. Utilice el cifrado de particiones LUKS
Capítulo 6. Mantenimiento de software
6.1. Software mínimo de instalación
6.2. Planeación y configuración de actualizaciones de seguridad
6.3. Ajuste de actualizaciones automáticas
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
Capítulo 7. Normas y regulaciones federales
7.1. Introducción
7.2. Estándar de procesamiento de información federal (FIPS)
- 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)
7.4. Estándar de seguridad de datos de industria de tarjetas de pago (PCI DSS)
7.5. Guía de implementación de seguridad técnica
Capítulo 8. Referencias
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
A.1. Cifrado sincronizado
A.1.1. Estándar de cifrado avanzado - AES
A.1.1.1. Usos de AES
A.1.1.2. Historia de AES
A.1.2. Estándar de cifrado de datos - DES
A.1.2.1. Usos de DES
A.1.2.2. Historia de DES
A.2. Cifrado de llave pública
A.2.1. Diffie-Hellman
A.2.1.1. Historia de Diffie-Hellman
A.2.2. RSA
A.2.3. DSA
A.2.4. SSL/TLS
A.2.5. Cripto-sistema Cramer-Shoup
A.2.6. Cifrado ElGamal
Apéndice B. Historial de revisiones
Historial de revisiones | |||
---|---|---|---|
Revisión 1.5-3.35.402 | Fri Oct 25 2013 | Rüdiger Landmann | |
| |||
Revisión 1.5-3.35 | August 7 2012 | Ruediger Landmann | |
| |||
Revisión 1.5-3 | 2012-07-18 | Anthony Towns | |
| |||
Revisión 1.5-0 | Apr 19 2010 | Scott Radvan | |
| |||
Revisión 1.4.1-0 | Mar 5 2010 | Scott Radvan | |
| |||
Revisión 1.3-0 | Feb 19 2010 | Scott Radvan | |
|