Volver al índice

Módulo 4: Redes y Seguridad

Configuración de red, firewalls, copias de seguridad y fundamentos de seguridad

Configuración de Red

# Información de red ip addr show # Direcciones IP (moderno) ifconfig # Direcciones IP (obsoleto pero común) ip route show # Tabla de rutas hostname -I # IP del sistema
# Configuración manual temporal sudo ip addr add 192.168.1.100/24 dev eth0 # Asignar IP sudo ip route add default via 192.168.1.1 # Establecer puerta de enlace sudo ip link set eth0 up # Activar interfaz echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf # Configurar DNS temporal

Configuración permanente con Netplan (Ubuntu 18.04+):

Archivo: /etc/netplan/01-netcfg.yaml

# Ejemplo de configuración Netplan network: version: 2 ethernets: eth0: dhcp4: true # O IP estática: # addresses: [192.168.1.100/24] # gateway4: 192.168.1.1 # nameservers: # addresses: [8.8.8.8, 8..4.4]

Firewall con UFW

# Instalar UFW (si no está) sudo apt install ufw
# Comandos básicos sudo ufw enable # Activar firewall sudo ufw disable # Desactivar firewall sudo ufw status # Ver estado y reglas sudo ufw status numbered # Ver reglas numeradas
# Configuración por defecto sudo ufw default deny incoming # Denegar todo tráfico entrante sudo ufw default allow outgoing # Permitir todo tráfico saliente
# Permitir servicios comunes sudo ufw allow ssh # Puerto 22 sudo ufw allow http # Puerto 80 sudo ufw allow https # Puerto 443 sudo ufw allow 3000/tcp # Puerto específico
# Reglas específicas sudo ufw allow from 192.168.1.0/24 # Permitir desde red local sudo ufw allow from 192.168.1.10 to any port 22 # SSH solo desde IP específica
# Eliminar reglas sudo ufw delete allow ssh # Por nombre sudo ufw delete 3 # Por número (status numbered)

Fundamentos de Seguridad

Buenas prácticas de seguridad básicas:

  • Mantener el sistema actualizado: sudo apt update && sudo apt upgrade
  • Usar contraseñas fuertes
  • Configurar SSH seguro
  • Usar fail2ban para protección contra ataques
# Configurar SSH seguro # Editar /etc/ssh/sshd_config # Luego reiniciar: sudo systemctl restart ssh
# Líneas importantes en sshd_config: PermitRootLogin no # Deshabilitar login root PasswordAuthentication no # Usar solo claves SSH Port 2222 # Cambiar puerto por defecto
# Instalar fail2ban sudo apt install fail2ban sudo systemctl enable fail2ban sudo systemctl start fail2ban
# Ver logs de seguridad sudo tail -f /var/log/auth.log

AppArmor: Control de acceso obligatorio. Ver estado: sudo apparmor_status

Copias de Seguridad

# Rsync - Sincronización eficiente rsync -avh origen/ destino/ # a=archive, v=verbose, h=human readable rsync -avh --delete origen/ destino/ # Eliminar en destino lo que no está en origen rsync -avh -e ssh usuario@servidor:/ruta/ /backup/remoto/ # Backup remoto via SSH
# Tar - Archivado y compresión tar -czvf backup.tar.gz /ruta/a/backupear # Crear backup comprimido tar -xzvf backup.tar.gz # Extraer backup tar -tzvf backup.tar.gz # Ver contenido sin extraer
# Backup incremental con tar tar -g snapshot.snar -czvf backup_full.tar.gz /data tar -g snapshot.snar -czvf backup_inc1.tar.gz /data

Regla 3-2-1 de backups: 3 copias, en 2 medios diferentes, 1 fuera del sitio.

Herramientas de Desarrollo

# Instalar lenguajes de programación sudo apt install python3 python3-pip # Python sudo apt install nodejs npm # Node.js sudo apt install default-jdk # Java sudo apt install build-essential # C/C++ (gcc, g++, make, etc.)
# Entornos de desarrollo sudo snap install code --classic # VS Code sudo apt install git # Git
# Configurar Git git config --global user.name "Tu Nombre" git config --global user.email "tu@email.com"

Práctica: Configurar Servidor Web Seguro

# 1. Instalar Nginx sudo apt update sudo apt install nginx # 2. Verificar instalación sudo systemctl status nginx # 3. Configurar firewall para Nginx sudo ufw allow 'Nginx Full' # Permite HTTP (80) y HTTPS (443) # 4. Instalar certificado SSL con Let's Encrypt sudo apt install certbot python3-certbot-nginx sudo certbot --nginx -d tudominio.com -d www.tudominio.com # 5. Configurar auto-renovación de certificados sudo certbot renew --dry-run # 6. Crear script de backup del sitio #!/bin/bash # backup_sitio.sh FECHA=$(date +%Y%m%d_%H%M%S) BACKUP_DIR="/backup/sitio_web" SITIO_DIR="/var/www/html" CONFIG_DIR="/etc/nginx"
# Crear backup tar -czf "$BACKUP_DIR/sitio_$FECHA.tar.gz" "$SITIO_DIR" "$CONFIG_DIR"
# Mantener solo últimos 7 backups find "$BACKUP_DIR" -name "*.tar.gz" -mtime +7 -delete
echo "Backup completado: $BACKUP_DIR/sitio_$FECHA.tar.gz"

Para probar: Abre tu navegador y visita http://localhost o la IP de tu servidor.