La seguridad en sistemas Linux es un aspecto crucial para proteger datos sensibles y mantener la integridad del sistema. En este tema, exploraremos diversas técnicas y herramientas para asegurar un sistema Linux. Abordaremos desde configuraciones básicas hasta prácticas avanzadas de seguridad.
Conceptos Clave
- Principio de Mínimo Privilegio: Otorgar solo los permisos necesarios a usuarios y procesos.
- Actualizaciones y Parches: Mantener el sistema y las aplicaciones actualizadas.
- Configuración de Firewall: Controlar el tráfico de red entrante y saliente.
- Autenticación y Autorización: Implementar métodos robustos de autenticación y control de acceso.
- Monitoreo y Auditoría: Registrar y revisar actividades del sistema para detectar comportamientos sospechosos.
- Principio de Mínimo Privilegio
Usuarios y Grupos
Asegúrate de que cada usuario tenga solo los permisos necesarios para realizar su trabajo.
# Crear un nuevo usuario sudo adduser nuevo_usuario # Crear un nuevo grupo sudo groupadd nuevo_grupo # Añadir un usuario a un grupo sudo usermod -aG nuevo_grupo nuevo_usuario
Permisos de Archivos
Configura los permisos de archivos y directorios adecuadamente.
# Cambiar el propietario de un archivo sudo chown usuario:grupo archivo # Cambiar los permisos de un archivo sudo chmod 750 archivo
- Actualizaciones y Parches
Mantener el sistema actualizado es fundamental para protegerlo contra vulnerabilidades conocidas.
# Actualizar la lista de paquetes sudo apt update # Actualizar todos los paquetes instalados sudo apt upgrade
- Configuración de Firewall
UFW (Uncomplicated Firewall)
UFW es una herramienta sencilla para gestionar el firewall en sistemas Linux.
# Habilitar UFW sudo ufw enable # Permitir tráfico SSH sudo ufw allow ssh # Permitir tráfico HTTP y HTTPS sudo ufw allow http sudo ufw allow https # Ver el estado de UFW sudo ufw status
- Autenticación y Autorización
SSH
Configura SSH para mejorar la seguridad.
# Editar el archivo de configuración de SSH sudo nano /etc/ssh/sshd_config # Deshabilitar el acceso root PermitRootLogin no # Cambiar el puerto por defecto Port 2222 # Reiniciar el servicio SSH sudo systemctl restart ssh
Autenticación de Dos Factores (2FA)
Implementa 2FA para añadir una capa extra de seguridad.
# Instalar Google Authenticator sudo apt install libpam-google-authenticator # Configurar Google Authenticator para un usuario google-authenticator # Editar el archivo de configuración de PAM sudo nano /etc/pam.d/sshd # Añadir la siguiente línea auth required pam_google_authenticator.so # Editar el archivo de configuración de SSH sudo nano /etc/ssh/sshd_config # Añadir la siguiente línea ChallengeResponseAuthentication yes # Reiniciar el servicio SSH sudo systemctl restart ssh
- Monitoreo y Auditoría
Logwatch
Logwatch es una herramienta que analiza y resume los logs del sistema.
# Instalar Logwatch sudo apt install logwatch # Ejecutar Logwatch sudo logwatch --detail High --mailto [email protected] --service All --range today
Auditd
Auditd es un demonio de auditoría que registra eventos del sistema.
# Instalar Auditd sudo apt install auditd # Iniciar y habilitar Auditd sudo systemctl start auditd sudo systemctl enable auditd # Ver los logs de Auditd sudo ausearch -m avc
Ejercicio Práctico
Ejercicio 1: Configuración Básica de Seguridad
-
Crear un nuevo usuario y grupo:
- Usuario:
seguridad_usuario
- Grupo:
seguridad_grupo
- Usuario:
-
Configurar permisos para un archivo:
- Archivo:
/home/seguridad_usuario/seguridad_archivo
- Permisos: Solo el propietario puede leer y escribir, el grupo puede leer, otros no tienen acceso.
- Archivo:
-
Configurar UFW para permitir solo tráfico SSH y HTTP.
-
Configurar SSH para deshabilitar el acceso root y cambiar el puerto a 2222.
Solución
# Crear un nuevo usuario y grupo sudo adduser seguridad_usuario sudo groupadd seguridad_grupo sudo usermod -aG seguridad_grupo seguridad_usuario # Crear un archivo y configurar permisos sudo touch /home/seguridad_usuario/seguridad_archivo sudo chown seguridad_usuario:seguridad_grupo /home/seguridad_usuario/seguridad_archivo sudo chmod 640 /home/seguridad_usuario/seguridad_archivo # Configurar UFW sudo ufw enable sudo ufw allow ssh sudo ufw allow http sudo ufw status # Configurar SSH sudo nano /etc/ssh/sshd_config # Cambiar las siguientes líneas: # PermitRootLogin no # Port 2222 sudo systemctl restart ssh
Conclusión
En esta sección, hemos cubierto diversas técnicas y herramientas para asegurar un sistema Linux. Desde la implementación del principio de mínimo privilegio hasta la configuración de firewalls y la auditoría del sistema, estas prácticas son esenciales para mantener un entorno seguro. En el siguiente módulo, exploraremos temas avanzados de redes y seguridad, incluyendo la configuración de firewalls y sistemas de detección de intrusos.
Maestría en Linux: De Principiante a Avanzado
Módulo 1: Introducción a Linux
- ¿Qué es Linux?
- Historia de Linux
- Distribuciones de Linux
- Instalando Linux
- Estructura del Sistema de Archivos de Linux
Módulo 2: Comandos Básicos de Linux
- Introducción a la Línea de Comandos
- Navegando el Sistema de Archivos
- Operaciones de Archivos y Directorios
- Visualización y Edición de Archivos
- Permisos y Propiedad de Archivos
Módulo 3: Habilidades Avanzadas en la Línea de Comandos
- Uso de Comodines y Expresiones Regulares
- Tuberías y Redirección
- Gestión de Procesos
- Programación de Tareas con Cron
- Comandos de Redes
Módulo 4: Scripting en Shell
- Introducción al Scripting en Shell
- Variables y Tipos de Datos
- Estructuras de Control
- Funciones y Librerías
- Depuración y Manejo de Errores
Módulo 5: Administración del Sistema
- Gestión de Usuarios y Grupos
- Gestión de Discos
- Gestión de Paquetes
- Monitoreo del Sistema y Optimización del Rendimiento
- Respaldo y Restauración
Módulo 6: Redes y Seguridad
- Configuración de Redes
- Firewall y Seguridad
- SSH y Acceso Remoto
- Sistemas de Detección de Intrusos
- Asegurando Sistemas Linux
Módulo 7: Temas Avanzados
- Virtualización con Linux
- Contenedores de Linux y Docker
- Automatización con Ansible
- Optimización del Kernel de Linux
- Alta Disponibilidad y Balanceo de Carga