En este módulo, aprenderás sobre la configuración y gestión de firewalls en sistemas Linux, así como las mejores prácticas de seguridad para proteger tu sistema. Los firewalls son una parte esencial de la seguridad de la red, ya que controlan el tráfico de red entrante y saliente basado en reglas de seguridad predefinidas.

  1. Introducción a los Firewalls

¿Qué es un Firewall?

Un firewall es un sistema de seguridad de red que monitorea y controla el tráfico de red entrante y saliente basado en reglas de seguridad predefinidas. Los firewalls pueden ser hardware, software o una combinación de ambos.

Tipos de Firewalls

  • Firewalls de Red: Protegen redes enteras y se implementan en el perímetro de la red.
  • Firewalls de Host: Protegen un solo dispositivo y se implementan en el sistema operativo del dispositivo.

  1. Firewalls en Linux

iptables

iptables es una herramienta de línea de comandos utilizada para configurar las reglas del firewall en sistemas Linux. Es parte del paquete de software netfilter.

Comandos Básicos de iptables

# Listar todas las reglas
sudo iptables -L

# Añadir una regla para permitir el tráfico HTTP entrante
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT

# Añadir una regla para bloquear el tráfico SSH entrante
sudo iptables -A INPUT -p tcp --dport 22 -j DROP

# Guardar las reglas
sudo iptables-save > /etc/iptables/rules.v4

ufw (Uncomplicated Firewall)

ufw es una interfaz simplificada para iptables, diseñada para facilitar la configuración del firewall.

Comandos Básicos de ufw

# Habilitar ufw
sudo ufw enable

# Permitir el tráfico HTTP
sudo ufw allow 80/tcp

# Bloquear el tráfico SSH
sudo ufw deny 22/tcp

# Ver el estado y las reglas actuales
sudo ufw status

  1. Configuración de Firewalls

Configuración Básica de iptables

# Limpiar todas las reglas existentes
sudo iptables -F

# Establecer políticas por defecto
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT ACCEPT

# Permitir tráfico entrante relacionado y establecido
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Permitir tráfico entrante en el puerto 22 (SSH)
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT

# Permitir tráfico entrante en el puerto 80 (HTTP)
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT

# Guardar las reglas
sudo iptables-save > /etc/iptables/rules.v4

Configuración Básica de ufw

# Habilitar ufw
sudo ufw enable

# Establecer políticas por defecto
sudo ufw default deny incoming
sudo ufw default allow outgoing

# Permitir tráfico entrante en el puerto 22 (SSH)
sudo ufw allow 22/tcp

# Permitir tráfico entrante en el puerto 80 (HTTP)
sudo ufw allow 80/tcp

# Ver el estado y las reglas actuales
sudo ufw status

  1. Seguridad Adicional

Fail2ban

fail2ban es una herramienta que monitorea los archivos de registro en busca de intentos de intrusión y bloquea las direcciones IP que muestran comportamientos maliciosos.

Instalación y Configuración de fail2ban

# Instalar fail2ban
sudo apt-get install fail2ban

# Configurar fail2ban
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local

# Añadir la configuración para proteger SSH
[sshd]
enabled = true
port = 22
filter = sshd
logpath = /var/log/auth.log
maxretry = 5

SELinux y AppArmor

SELinux y AppArmor son sistemas de control de acceso obligatorio que proporcionan una capa adicional de seguridad al restringir las capacidades de los procesos.

Habilitar y Configurar SELinux

# Verificar el estado de SELinux
sestatus

# Habilitar SELinux
sudo setenforce 1

# Configurar SELinux en modo permisivo
sudo setenforce 0

Habilitar y Configurar AppArmor

# Verificar el estado de AppArmor
sudo aa-status

# Habilitar AppArmor
sudo systemctl enable apparmor
sudo systemctl start apparmor

# Configurar perfiles de AppArmor
sudo aa-complain /etc/apparmor.d/usr.sbin.mysqld
sudo aa-enforce /etc/apparmor.d/usr.sbin.mysqld

  1. Ejercicios Prácticos

Ejercicio 1: Configuración de iptables

  1. Limpia todas las reglas existentes en iptables.
  2. Establece políticas por defecto para denegar todo el tráfico entrante y permitir todo el tráfico saliente.
  3. Permite el tráfico entrante en los puertos 22 (SSH) y 80 (HTTP).
  4. Guarda las reglas.

Solución

sudo iptables -F
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT ACCEPT
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables-save > /etc/iptables/rules.v4

Ejercicio 2: Configuración de ufw

  1. Habilita ufw.
  2. Establece políticas por defecto para denegar todo el tráfico entrante y permitir todo el tráfico saliente.
  3. Permite el tráfico entrante en los puertos 22 (SSH) y 80 (HTTP).
  4. Verifica el estado y las reglas actuales.

Solución

sudo ufw enable
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw status

Conclusión

En esta sección, has aprendido sobre la importancia de los firewalls y cómo configurarlos en sistemas Linux utilizando iptables y ufw. También has explorado herramientas adicionales como fail2ban, SELinux y AppArmor para mejorar la seguridad de tu sistema. Con estos conocimientos, estás mejor preparado para proteger tu sistema Linux contra amenazas de red y mantener un entorno seguro.

Maestría en Linux: De Principiante a Avanzado

Módulo 1: Introducción a Linux

Módulo 2: Comandos Básicos de Linux

Módulo 3: Habilidades Avanzadas en la Línea de Comandos

Módulo 4: Scripting en Shell

Módulo 5: Administración del Sistema

Módulo 6: Redes y Seguridad

Módulo 7: Temas Avanzados

Módulo 8: Proyectos Prácticos

© Copyright 2024. Todos los derechos reservados