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.