🎃 Grandes descuentos en libros en línea, eformaciones y vídeos*. Código CALABAZA30. Pulse aquí
¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
  1. Libros
  2. LINUX
  3. Seguridad del sistema
Extrait - LINUX Preparación a la certificación LPIC-2 (exámenes LPI 201 y LPI 202) – 5ª edición
Extractos del libro
LINUX Preparación a la certificación LPIC-2 (exámenes LPI 201 y LPI 202) – 5ª edición Volver a la página de compra del libro

Seguridad del sistema

Requisitos y objetivos

1. Requisitos

Los conocimientos necesarios para la certificación LPIC-1:

Comandos de seguimiento de los procesos.

Edición de archivos.

Comandos de gestión de directorios y archivos

Comandos de gestión de cuentas de usuario y control de accesos.

Los conocimientos adquiridos en los anteriores capítulos, especialmente:

Gestión de la red local.

Gestión de los servicios.

2. Objetivos

Al final de este capítulo, deberá poder:

Configurar un sistema Linux como un router.

Activar y configurar el firewall del núcleo con iptables.

Implementar reglas de gestión de los paquetes de redes con iptables.

Administrar la traducción de direcciones (NAT).

Configurar diferentes programas servidores FTP en modo seguro.

Configurar y proteger un servidor SSH.

Administrar las alertas de seguridad de diferentes fuentes.

Configurar y ejecutar sistemas de detección de intrusión.

Configurar una VPN (red privada virtual) con OpenVPN.

Seguridad del sistema

Este tema está divido en cinco partes con pesos diferentes.

1. Configuración de un router

Peso

3

Objetivos

Configurar un sistema para transferir paquetes IP, efectuar la traducción de dirección de red (NAT, IP masquerading) y entender su importancia en la protección de una red. Configurar la redirección de puertos, la administración de las reglas de filtrado y la prevención de ataques.

a. Competencias principales

  • Archivos y herramientas de configuración iptables y ip6tables.

  • Archivos y herramientas de configuración para la gestión de las tablas de enrutamiento.

  • Rangos de direcciones privadas IPv4, direcciones locales únicas (Unique Local Addresses) y direcciones de enlace local (Link Local Addresses) IPv6.

  • Redirección de puertos y transmisión IP (IP forwarding).

  • Listar y escribir reglas y filtros basados en el protocolo, la dirección o los puertos de origen o destino, para aceptar o bloquear paquetes IP.

  • Guardar y cargar configuraciones de filtrado.

b. Elementos empleados

  • /proc/sys/net/ipv4/

  • /proc/sys/net/ipv6/

  • /etc/services

  • iptables

  • ip6tables

2. Gestión de servidores FTP

Peso

2

Objetivos

Configurar un servidor FTP para descargar y enviar archivos de forma anónima. Este objetivo incluye las precauciones que se tienen que tomar en el caso en que el envío anónimo esté autorizado y también la configuración de accesos de los usuarios.

a. Competencias principales

  • Archivos y herramientas de configuración de Pure-FTPd y vsftpd.

  • Conocimientos básicos de ProFTPd.

  • Comprender las diferencias entre las conexiones...

Configuración de un router

Un router IP es un equipo que participa en distintas redes IP y que puede transferir (forwarding) paquetes entre esas redes.

La función de enrutamiento está integrada directamente en el núcleo de Linux pero, por defecto, no está activada.

El router hace de intermediario entre esas redes, y se puede utilizar para controlar y filtrar el tráfico entre esas redes (firewall), o para esconder las redes internas del exterior (IP masquerading o NAT, Network Address Translation).

1. Configuración de un servidor Linux como router

Para que un sistema Linux pueda enrutar mensajes entre dos redes IP en las que participa, basta con activar la función de enrutamiento en el núcleo. También puede ser necesario configurar rutas estáticas en la tabla de enrutamiento del sistema, para especificar hacia qué router hay que transferir los mensajes según las redes de destino.

Por defecto, Linux es un router estático IP, no intercambia información de enrutamiento con otros routers de la red, a través de un protocolo de enrutamiento (RIP, OSPF…). Para que pueda hacerlo, habría que instalar un programa de enrutamiento dinámico como Quagga, Bird o Zebra.

a. Activación del enrutamiento

La activación del enrutamiento puede hacerse dinámicamente, usando el sistema de archivos virtual montado en /proc. El contenido del archivo /proc/sys/net/ipv4/ip_forward, 1 o 0, determinará si el núcleo actual enruta en IPv4 o no.

Ejemplo

Activación del enrutamiento:

echo 1 > /proc/sys/net/ipv4/ip_forward 

Desactivación del enrutamiento:

echo 0 > /proc/sys/net/ipv4/ip_forward 

También se puede usar el comando sysctl, que permite modificar todos los parámetros dinámicos del núcleo accesible a partir de /proc/sys. La ventaja es que el comando comprueba que el parámetro que se va a escribir es válido.

Ejemplo

Activación del enrutamiento:

sysctl net.ipv4.ip_forward=1 

Desactivación del enrutamiento:

sysctl net.ipv4.ip_forward=0 

Para que este cambio se aplique cada vez que se inicie el sistema, hay que especificarlo en el archivo de configuración /etc/sysctl.conf.

Sintaxis

net.ipv4.ip_forward = 1 

Para la configuración dinámica de IPv6, hay que usar el directorio /proc/sys/net/ipv6/. La activación o la desactivación...

Gestión de los servidores FTP

1. El protocolo FTP

FTP (File Transfer Protocol) es un protocolo cliente-servidor de transferencia de archivos. Definido en la RFC 114 de 1971, reemplazada por la RFC 959 de 1985, es uno de los protocolos más antiguos de la familia TCP/IP.

Implementado en muchas aplicaciones en el conjunto de los sistemas operativos, y particularmente Linux, sigue siendo muy usado. Sin embargo, necesita una configuración atenta en el servidor, para asegurar un nivel de seguridad suficiente.

Los tres servidores que se tienen que conocer para la certificación LPIC-2 son Pure-FTPd, vsftpd y, de manera menos profunda, ProFTPd.

a. Principios de funcionamiento

El protocolo de aplicaciones FTP se basa en TCP y usa el puerto bien conocido 21 para la transmisión de comandos entre el cliente y el servidor. Los datos se intercambian a través de una segunda conexión TCP con el puerto 20.

FTP puede funcionar en modo anónimo o autenticando los clientes. En este último caso, el cliente tiene que introducir una cuenta de usuario y contraseña válidos para el sistema del servidor. No obstante, el protocolo FTP usa intercambios no cifrados entre el cliente y el servidor, lo que es un problema de seguridad con respecto a la contraseña.

En modo anónimo, los servidores FTP asocian todas las conexiones de los clientes a una cuenta única del sistema, con derechos limitados a lo estrictamente necesario.

El protocolo FTP tiende a ser reemplazado por SFTP (SSH File Transfer Protocol), que utiliza comunicaciones cifradas.

b. Modos FTP activo y FTP pasivo

Históricamente, los clientes FTP utilizan el modo activo: el cliente envía una solicitud de conexión al servidor, en el puerto TCP 21. Para transferir los datos, el servidor abre una conexión desde el puerto TCP 20, hacia un puerto TCP del cliente, establecido dinámicamente.

Este tipo de funcionamientos puede causar problemas si existe un firewall entre el servidor y el cliente, porque la solicitud de conexión del servidor hacia un puerto dinámico del cliente podría ser bloqueada.

En modo pasivo, el cliente efectúa las dos solicitudes de conexión, en el puerto TCP 21 (para intercambio de comandos) y en un puerto dinámico del servidor, especificado al cliente por este último, a través de la conexión de control....

Shell seguro (SSH)

El protocolo SSH (Secured SHell) se basa en servicios de autentificación y de confidencialidad para asegurar los intercambios entre los clientes y el servidor a través de un transporte seguro de datos. Lo podemos usar para conectarnos como terminal a un servidor SSH para una sesión en modo de línea de comandos (como una especie de Telnet seguro), pero también puede asegurar funcionalidades de tipo transferencia de datos segura (SFTP, SCP) así como el transporte seguro para otros protocolos aplicativos.

1. Usos de OpenSSH

El protocolo Telnet se ha utilizado durante mucho tiempo para permitir a los clientes que se conecten en modo terminal a los sistemas remotos, a través de redes TCP/IP. Pero ese protocolo no es seguro: todos los intercambios entre el cliente y el servidor atraviesan las redes sin cifrar, incluyendo la contraseña del usuario que solicita la conexión.

El protocolo SSH, más reciente, usa una comunicación cifrada entre el cliente y el servidor, y procede a una auténticación entre el cliente y el servidor, que garantiza la confidencialidad de los intercambios.

OpenSSH es una implementación open source del protocolo SSH, muy usada en los entornos Linux y BSD.

a. Configuración del servidor OpenSSH

El archivo de configuración por defecto del servidor es /etc/ssh/sshd_config. Contiene una serie de directivas bajo la forma:

Directiva Valor,...,Valor 

Las directivas más habituales son las siguientes:

Protocol

Version del protocolo (a menudo la 2).

ListenAddress

Direcciones en las que el servidor SSH espera las solicitudes de conexión (por defecto: todas las direcciones locales).

Port

Número del puerto en el que el servidor se pone en escucha (por defecto: 22).

PermitRootLogin

Autoriza o no a un cliente a conectarse con la cuenta de superusuario (por defecto: yes).

AllowUsers

Lista de los usuarios autorizados. Los otros serán rechazados.

DenyUsers

Lista de los usuarios denegados. Los otros serán autorizados.

PasswordAuthentication

Autoriza o no la conexión con la contraseña del usuario (por defecto: yes).

PubkeyAuthentication

Autoriza o no la autenticación usando una clave pública.

b. Cifrado de las comunicaciones

El cifrado de los datos transmitidos entre el cliente y el servidor se basa en un par de claves que pertenecen al servidor SSH. Este último...

Tareas de seguridad

Debido a la interconexión cada vez más grande de las redes privadas y públicas, la seguridad se ha convertido en una preocupación mayor de los administradores del sistema. Existen diferentes herramientas que permiten seguir y diagnosticar las alertas de seguridad.

1. Comandos de prueba y de vigilancia

Existen diferentes comandos que permiten efectuar pruebas de accesibilidad en los servidores de red, para encontrar posibles fallos de seguridad.

Estos comandos están detallados en el capítulo Configuración de red de este libro.

a. El comando nc

El comando ncat o nc (netcat) es una herramienta multiusos, que permite establecer comunicaciones a través de sockets, locales o en red, en TCP y en UDP, en IPv4 o IPv6, como cliente o servidor, especificando un puerto de escucha.

Con todas sus opciones, este comando permite comprobar los diferentes tipos de comunicación, en particular a través de la red.

El comando nc reemplaza al comando tradicional telnet. Este ya no se encuentra generalmente en las distribuciones recientes, para disuadir de su uso en relación con un servidor telnet, lo que provoca un problema de seguridad (contraseña del usuario transmitida sin cifrar por la red).

b. El comando nmap

El comando nmap (Network Mapper), que se encuentra en el paquete nmap, es una herramienta potente de exploración de una red y de auditoría de seguridad. Permite determinar las máquinas activas en la red y los servicios de red disponibles en esas máquinas.

El comando puede ofrecer en particular una tabla de los puertos de cada máquina de destino, con su estado (abierto, cerrado o filtrado por un firewall). Este comando puede opcionalmente buscar y mostrar información más detallada: sistema operativo y aplicación a la escucha en cada puerto, incluyendo los números de la versión.

El uso de este comando tiene que hacerse con prudencia y respetando las obligaciones legales, porque comprobar...

OpenVPN

OpenVPN es un programa open source de gestión de redes virtuales privadas (VPN, Virtual Private Network). Apoyándose en SSL, permite crear un canal de comunicación seguro a través de una red IP. Lo proporciona el paquete openvpn.

1. Los principios de OpenVPN

OpenVPN ofrece servicios de autenticación y de confidencialidad. Permite conectar hosts con redes, dándoles un canal seguro (túnel) a través de redes IP.

a. Autentificación

Los extremos del túnel seguro, es decir los dos sistemas que aseguran el cifrado de los flujos salientes y el descifrado de los flujos entrantes, tienen que autenticarse mutuamente.

OpenVPN administra diferentes modos de autentificación, los dos más usados son la autenticación por clave compartida y la autentificación por certificados digitales X.509. La primera técnica es más simple de implementar, pero menos segura.

b. Confidencialidad

La confidencialidad de las comunicaciones la asegura la biblioteca OpenSSL. El cifrado de los intercambios utiliza por defecto el algoritmo Blowfish, pero acepta también algoritmos simétricos (AES especialmente). 

c. Tipos de funcionamiento de red

OpenVPN propone diferentes tipos de conexión entre sistemas y redes:

  • El modo punto a punto: la VPN conecta solamente dos máquinas.

  • El modo sitio a sitio: la VPN se usa para conectar dos redes entre ellas. Dos servidores OpenVPN aseguran la implementación del túnel, pero los extremos de tráfico son las dos redes conectadas. Los servidores OpenVPN tienen una función de enrutamiento seguro entre las dos redes.

  • El modo acceso remoto: la VPN permite conectar una máquina a una red.

  • El modo bridge: la VPN conecta dos redes remotas a nivel físico.

2. Creación de un túnel punto a punto

El túnel punto a punto permite conectar dos máquinas a través de una red.

a. Autentificación por clave compartida

El archivo de clave puede ser generado por el comando openvpn. Tiene que estar presente en el servidor y en el cliente, por lo tanto hay que copiarlo en la otra máquina después de haberlo generado, usando un medio seguro (pendrive USB, scp o sftp).

Sintaxis

openvpn --genkey --secret RutaArchivoClave 

Ejemplo

Creación del archivo de clave:

openvpn --genkey --secret secret.key    
cat secret.key  
#  
# 2048 bit OpenVPN static key  
#  
-----BEGIN OpenVPN Static key V1-----  
1a0cf1144f1e99f9976cbb1609c917d3  
44d4a7b8e9da0b0ec6a9a728a24ad545  
0027ba5552bf1195ba4108beecb62b5a  
b0cfe83e41007d250ce95e5f493312e9  
7586f78da40b437138970b0246f9f4cf  
296f95b5e477bc23bfd79ccc38bf12d9  
51587df33fce4f3986ce930445887e47  
9826d8276d5f5b9e1c6cde1c8e285e19  
7ae80be18a3d4122cafdc8e6e49ec259  
c3d810e2457b23c1bb58029b516feefa  
8a4d503c556b06bbd5f32348f2082259  
67e5a24bd7ff64e2a6c16e2e2b1a8fe2  
24efb6061a53b8cc37bee3b4fa39ed37  
2b883890046b1640de4b8c3887d17f1c  
c0f07c9908808f859044df8a07d2d891  
de44880fce62153b2ae3083bd7861183  
-----END OpenVPN Static key V1----- 

b. Archivos de configuración

Los archivos de configuración se encuentran por defecto en /etc/openvpn/client y /etc/openvpn/server. Son necesarios un archivo, con extensión .conf, para el cliente y otro para servidor.

Archivo de configuración OpenVPN

remote idServidor   
dev tun   
ifconfig IP_local IP_remota   
secret RutaArchivoclave   
route idRedRemota Máscara 

Donde:

remote idServidor 

En el cliente: nombre o dirección del servidor OpenVPN.

dev tun 

Modo de funcionamiento de red (tun = túnel).

ifconfig IP_local IP_remota

Dirección IP local y remota. Estarán asociadas, por OpenVPN, a una tarjeta de interfaz virtual punto a punto.

secret RutaArchivoClave

Camino de acceso al archivo de clave. 

route idRedRemota Máscara

En el cliente: identificador y máscara de red accesible a partir del servidor OpenVPN.

Ejemplo

Archivo de configuración en el servidor:

vi /etc/openvpn/server/server.conf    
dev tun    
ifconfig 10.8.0.1 10.8.0.2    
secret secret.key 

Archivo de configuración en el cliente:

vi /etc/openvpn/client/client.conf    
remote srvrh    
dev tun    
ifconfig 10.8.0.2 10.8.0.1    
secret secret.key  ...

Validación de lo aprendido: preguntas/respuestas

Responda a estas preguntas abiertas, parecidas a las que le harán en el examen de la certificación, pero estas últimas serán de tipo test o pidiéndole una respuesta corta que introducirá mediante el teclado.

1. Preguntas

1 ¿Cómo activar el enrutamiento IPv4 en un sistema Linux?

2 ¿Cómo mostrar las cadenas de las reglas de la tabla nat de iptables?

3 ¿Qué cadena iptables se aplica a las operaciones de enrutamiento del sistema?

4 ¿Cuál es el principal problema de seguridad del protocolo FTP?

5 ¿Por qué el modo activo FTP puede ser problemático?

6 ¿Cuál es la ventaja de una conexión SSH con respecto a una de Telnet?

7 ¿Que es un túnel SSH?

8 ¿Qué línea de comandos permite copiar de manera segura un archivo de un sistema remoto a un sistema local?

9 ¿Cuál es el rol de ssh-agent?

10 ¿Qué significa IDS?

11 Hay reglas de iptables que aparecen a veces automáticamente en la configuración dinámica. ¿Por qué?

12 ¿Qué comando permite escanear los puertos de un sistema remoto?

13 ¿Cuál es la diferencia entre un túnel VPN sitio a sitio y uno punto a punto?

14 ¿Puede OpenVPN conectar dos máquinas remotas sin que haya enrutamiento...

Trabajos prácticos

Aquí se proponen ejercicios para implementar algunos de los puntos abordados en el capítulo. En cada uno de ellos se da un ejemplo comentado de la realización del ejercicio, que deberá adaptar a la configuración de sus sistemas.

1. Configuración de un firewall Linux

Decidimos implementar un firewall IPv4 en un servidor Linux Debian 10. Tendrá que filtrar todo el tráfico entrante o saliente, que no sea SSH, HTTP, HTTPS y DNS.

Comandos y archivos utiles

  • iptables

  • wget

  • ping

  • host

  • iptables-save

  • /etc/iptables/rules.v4

Etapas

1.

En el servidor srvdebian, compruebe que el comando iptables está disponible y muestre las reglas de filtrado actuales.

2.

Configure el firewall para que acepte las conexiones entrantes y salientes SSH.

3.

Configure el firewall para que, por defecto, rechace cualquier tráfico de red. Compruebe que las reglas se han aplicado correctamente.

4.

Configure el firewall para autorizar el tráfico entrante y saliente HTTP, HTTPS y DNS. Compruebe que las reglas se han aplicado correctamente.

5.

Configure el servidor para que las reglas del firewall sean activadas automáticamente durante el inicio de la red. Compruebe que las reglas se han aplicado correctamente después del reinicio.

Resumen de los comandos y resultado en pantalla

1.

En el servidor srvdebian, compruebe que el comando iptables está disponible y muestre las reglas de filtrado actuales.

¿Está el paquete de software instalado?

root@srvdebian:~# apt list iptables  
Listando... Hecho  
iptables/stable,now 1.8.2-4 amd64  [instalado, automático] 

Las reglas iptables cargadas actualmente:

root@srvdebian:~# iptables -L  
Chain INPUT (policy ACCEPT)  
target     prot opt source               destination  
  
Chain FORWARD (policy ACCEPT)  
target     prot opt source               destination  
  
Chain OUTPUT (policy ACCEPT)  
target     prot opt source               destination 

No hay ninguna restricción de acceso configurada.

2.

Configure el firewall para que acepte las conexiones entrantes y salientes SSH.

Se autorizan las conexiones entrantes hacia el servidor SSH local:

root@srvdebian:~# iptables -A INPUT...