Guía Completa de Instalación de Ubuntu Server 24.04.3 LTS
Índice
Introducción
Ubuntu Server 24.04.3 LTS (Long Term Support) es una distribución de Linux diseñada específicamente para servidores, ofreciendo estabilidad, seguridad y soporte extendido hasta 2029. Esta guía proporciona un proceso paso a paso para la instalación y configuración inicial del sistema.
Características Principales
- Soporte LTS: 5 años de actualizaciones de seguridad
- Kernel Linux 6.8: Mejoras en rendimiento y compatibilidad de hardware
- Snapd integrado: Gestión simplificada de aplicaciones
- Cloud-init: Configuración automatizada para entornos cloud
- Netplan: Configuración de red declarativa
Requisitos del Sistema
Requisitos Mínimos
- Procesador: 1 GHz (x86-64)
- Memoria RAM: 1 GB
- Almacenamiento: 2.5 GB de espacio libre
- Red: Tarjeta de red Ethernet (recomendado)
Requisitos Recomendados
- Procesador: 2 GHz dual-core o superior
- Memoria RAM: 4 GB o más
- Almacenamiento: 25 GB o más (SSD recomendado)
- Red: Conexión Gigabit Ethernet
Compatibilidad de Hardware
- Arquitecturas soportadas: x86-64, ARM64, s390x, ppc64el
- Soporte para virtualización (KVM, VMware, VirtualBox, Hyper-V)
- Compatibilidad con hardware UEFI y Legacy BIOS
Descarga de Ubuntu Server 24.04.3 LTS
Fuentes Oficiales
- Sitio web oficial: https://ubuntu.com/download/server
- Mirrors oficiales: https://launchpad.net/ubuntu/+cdmirrors
Verificación de Integridad
Descargar checksums
wget https://releases.ubuntu.com/24.04.3/SHA256SUMS
wget https://releases.ubuntu.com/24.04.3/SHA256SUMS.gpg
Verificar firma GPG
gpg –keyid-format long –verify SHA256SUMS.gpg SHA256SUMS
Verificar checksum del archivo ISO
sha256sum -c SHA256SUMS 2>&1 | grep ubuntu-24.04.3-live-server-amd64.iso
Preparación del Medio de Instalación
Creación de USB Booteable
En Linux
Identificar dispositivo USB
lsblk
Crear USB booteable (reemplazar /dev/sdX con tu dispositivo)
sudo dd if=ubuntu-24.04.3-live-server-amd64.iso of=/dev/sdX bs=4M status=progress && sync
En Windows
- Descargar Rufus desde https://rufus.ie/
- Seleccionar el archivo ISO de Ubuntu Server
- Configurar esquema de partición (GPT para UEFI, MBR para Legacy)
- Hacer clic en «START»
En macOS
Convertir ISO a formato DMG
hdiutil convert -format UDRW -o ubuntu-server.dmg ubuntu-24.04.3-live-server-amd64.iso
Identificar dispositivo USB
diskutil list
Crear USB booteable
sudo dd if=ubuntu-server.dmg.dmg of=/dev/rdiskX bs=1m
Proceso de Instalación
1. Arranque desde USB
- Configurar BIOS/UEFI:
– Acceder al setup (F2, F12, DEL según fabricante)
– Habilitar arranque desde USB
– Configurar orden de arranque
- Seleccionar idioma: Español o English según preferencia
- Actualizar instalador: Seleccionar «Update to the new installer» si está disponible
2. Configuración de Red
Configuración Automática (DHCP)
- El instalador detectará automáticamente la configuración de red
- Verificar conectividad a Internet
Configuración Manual
Ejemplo de configuración estática
network:
version: 2
ethernets:
enp0s3:
dhcp4: false
addresses:
– 192.168.1.100/24
gateway4: 192.168.1.1
nameservers:
addresses:
– 8.8.8.8
– 8.8.4.4
3. Configuración de Proxy (Opcional)
- Configurar si la red requiere proxy para acceso a Internet
- Formato:
http://proxy.empresa.com:8080
- Formato:
4. Configuración de Mirrors
- Seleccionar mirror geográficamente cercano
- El instalador sugerirá automáticamente el mejor mirror
5. Configuración de Almacenamiento
Opción 1: Configuración Automática
- Use entire disk: Utiliza todo el disco
- Use entire disk and set up LVM: Configura LVM para flexibilidad
Opción 2: Configuración Manual
Esquema de particiones recomendado
/boot/efi 512MB (EFI System Partition)
/boot 1GB (Boot partition)
/ 20GB (Root filesystem)
/var 10GB (Variable data)
/tmp 2GB (Temporary files)
/home Resto (User data)
swap 2x RAM (Swap space)
Configuración LVM Avanzada
Crear grupo de volúmenes
pvcreate /dev/sda3
vgcreate ubuntu-vg /dev/sda3
Crear volúmenes lógicos
lvcreate -L 20G -n root ubuntu-vg
lvcreate -L 10G -n var ubuntu-vg
lvcreate -L 2G -n tmp ubuntu-vg
lvcreate -L 8G -n swap ubuntu-vg
lvcreate -l 100%FREE -n home ubuntu-vg
6. Configuración de Usuario
Usuario Administrador
- Nombre completo: Administrador del Sistema
- Nombre de usuario: admin (evitar ‘root’ por seguridad)
- Contraseña: Mínimo 12 caracteres, combinando mayúsculas, minúsculas, números y símbolos
- Confirmar contraseña: Repetir la contraseña
Configuración SSH
- Instalar OpenSSH server: ✓ Recomendado
- Importar claves SSH: Desde GitHub/Launchpad (opcional)
7. Selección de Software
Snaps Populares
docker: Plataforma de contenedores
microk8s: Kubernetes ligero
nextcloud: Plataforma de colaboración
postgresql: Base de datos relacional
Paquetes Adicionales (se instalarán post-instalación)
htop: Monitor de sistema mejorado
vim: Editor de texto avanzado
curl: Cliente HTTP
wget: Descargador de archivos
git: Control de versiones
8. Finalización de la Instalación
- Revisión de configuración: Verificar todos los parámetros
- Inicio de instalación: El proceso tomará 10-30 minutos
- Reinicio: Remover el medio de instalación cuando se solicite
Configuración Post-Instalación
1. Primer Arranque
Actualizar sistema
sudo apt update && sudo apt upgrade -y
Instalar paquetes esenciales
sudo apt install -y htop vim curl wget git tree unzip software-properties-common apt-transport-https ca-certificates gnupg lsb-release
2. Configuración de Red Avanzada
Netplan – Configuración Estática
/etc/netplan/00-installer-config.yaml
network:
version: 2
renderer: networkd
ethernets:
enp0s3:
dhcp4: false
addresses:
– 192.168.1.100/24
routes:
– to: default
via: 192.168.1.1
nameservers:
addresses:
– 8.8.8.8
– 1.1.1.1
search:
– local.domain
Aplicar configuración
sudo netplan apply
Verificar configuración
ip addr show
ip route show
3. Configuración de Hostname y Hosts
Configurar hostname
sudo hostnamectl set-hostname servidor-ubuntu
Editar /etc/hosts
sudo vim /etc/hosts
/etc/hosts
127.0.0.1 localhost
127.0.1.1 servidor-ubuntu
192.168.1.100 servidor-ubuntu.local.domain servidor-ubuntu
IPv6
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
4. Configuración de Zona Horaria
Listar zonas horarias disponibles
timedatectl list-timezones | grep America
Configurar zona horaria
sudo timedatectl set-timezone America/Mexico_City
Verificar configuración
timedatectl status
5. Configuración de Locales
Generar locales
sudo locale-gen es_ES.UTF-8 en_US.UTF-8
Configurar locale por defecto
sudo update-locale LANG=es_ES.UTF-8
Verificar configuración
locale
Hardening de Seguridad
1. Configuración de SSH Seguro
Backup de configuración original
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.backup
Editar configuración SSH
sudo vim /etc/ssh/sshd_config
/etc/ssh/sshd_config – Configuración segura
Port 1422
Protocol 2
PermitRootLogin no
PasswordAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PermitEmptyPasswords no
ChallengeResponseAuthentication no
UsePAM yes
X11Forwarding no
PrintMotd no
AcceptEnv LANG LC_*
Subsystem sftp /usr/lib/openssh/sftp-server
MaxAuthTries 3
ClientAliveInterval 300
ClientAliveCountMax 2
AllowUsers admin
DenyUsers root
Reiniciar servicio SSH
sudo systemctl restart ssh
sudo systemctl enable ssh
2. Configuración de Firewall con nftables
Instalar nftables
sudo apt install -y nftables
Crear configuración básica
sudo vim /etc/nftables.conf
#!/usr/sbin/nft -f
flush ruleset
table inet filter {
chain input {
type filter hook input priority 0; policy drop;
# Permitir loopback
iif lo accept
# Permitir conexiones establecidas y relacionadas
ct state established,related accept
# Permitir SSH en puerto personalizado
tcp dport 1422 accept
# Permitir HTTP y HTTPS
tcp dport { 80, 443 } accept
# Permitir ping
icmp type echo-request limit rate 1/second accept
# Log y drop del resto
log prefix "nftables-drop: " drop
}
chain forward {
type filter hook forward priority 0; policy drop;
}
chain output {
type filter hook output priority 0; policy accept;
}
}Habilitar y iniciar nftables
sudo systemctl enable nftables
sudo systemctl start nftables
Verificar reglas
sudo nft list ruleset
3. Configuración de Fail2ban
Instalar fail2ban
sudo apt install -y fail2ban
Crear configuración local
sudo vim /etc/fail2ban/jail.local
[DEFAULT]
bantime = 3600
findtime = 600
maxretry = 3
backend = systemd
[sshd]
enabled = true
port = 1422
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 3600
[nginx-http-auth]
enabled = true
filter = nginx-http-auth
logpath = /var/log/nginx/error.log
maxretry = 3
bantime = 3600Habilitar y iniciar fail2ban
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
Verificar estado
sudo fail2ban-client status
sudo fail2ban-client status sshd
4. Configuración de Actualizaciones Automáticas
Instalar unattended-upgrades
sudo apt install -y unattended-upgrades
Configurar actualizaciones automáticas
sudo dpkg-reconfigure -plow unattended-upgrades
Editar configuración
sudo vim /etc/apt/apt.conf.d/50unattended-upgrades
Unattended-Upgrade::Allowed-Origins {
"${distro_id}:${distro_codename}";
"${distro_id}:${distro_codename}-security";
"${distro_id}ESMApps:${distro_codename}-apps-security";
"${distro_id}ESM:${distro_codename}-infra-security";
};
Unattended-Upgrade::AutoFixInterruptedDpkg "true";
Unattended-Upgrade::MinimalSteps "true";
Unattended-Upgrade::Remove-Unused-Dependencies "true";
Unattended-Upgrade::Automatic-Reboot "false";5. Configuración de Auditoría del Sistema
Instalar auditd
sudo apt install -y auditd audispd-plugins
Configurar reglas de auditoría
sudo vim /etc/audit/rules.d/audit.rules
Eliminar todas las reglas previas
-D
Buffer size
-b 8192
Failure mode
-f 1
Auditar cambios en archivos de configuración críticos
-w /etc/passwd -p wa -k identity
-w /etc/group -p wa -k identity
-w /etc/shadow -p wa -k identity
-w /etc/sudoers -p wa -k identity
Auditar cambios en configuración SSH
-w /etc/ssh/sshd_config -p wa -k sshd
Auditar intentos de login
-w /var/log/auth.log -p wa -k logins
Auditar cambios en firewall
-w /etc/nftables.conf -p wa -k firewall
Hacer reglas inmutables
-e 2
Reiniciar auditd
sudo systemctl restart auditd
sudo systemctl enable auditd
Configuración de Servicios Esenciales
1. Servidor Web Nginx
Instalar Nginx
sudo apt install -y nginx
Configurar firewall para HTTP/HTTPS
sudo nft add rule inet filter input tcp dport { 80, 443 } accept
Crear configuración básica
sudo vim /etc/nginx/sites-available/default
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
server_name _;
location / {
try_files $uri $uri/ =404;
}
# Seguridad básica
server_tokens off;
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
}Habilitar y iniciar Nginx
sudo systemctl enable nginx
sudo systemctl start nginx
Verificar estado
sudo systemctl status nginx
2. Base de Datos MySQL/MariaDB
Instalar MariaDB
sudo apt install -y mariadb-server mariadb-client
Configuración segura inicial
sudo mysql_secure_installation
-- Configuración inicial de base de datos
CREATE DATABASE aplicacion_db;
CREATE USER 'app_user'@'localhost' IDENTIFIED BY 'contraseña_segura';
GRANT ALL PRIVILEGES ON aplicacion_db.* TO 'app_user'@'localhost';
FLUSH PRIVILEGES;3. PHP (Opcional)
Instalar PHP y módulos comunes
sudo apt install -y php8.3-fpm php8.3-mysql php8.3-curl php8.3-gd php8.3-mbstring php8.3-xml php8.3-zip
Configurar Nginx para PHP
sudo vim /etc/nginx/sites-available/default
location ~ .php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;
}4. Monitoreo del Sistema
Instalar herramientas de monitoreo
sudo apt install -y htop iotop nethogs ncdu
Configurar logrotate para logs del sistema
sudo vim /etc/logrotate.d/sistema
/var/log/sistema/*.log {
daily
missingok
rotate 52
compress
delaycompress
notifempty
create 644 syslog adm
}Mantenimiento y Actualizaciones
1. Rutinas de Mantenimiento
#!/bin/bash
Script de mantenimiento diario
Actualizar sistema
apt update && apt upgrade -y
Limpiar paquetes innecesarios
apt autoremove -y
apt autoclean
Verificar espacio en disco
df -h
Verificar memoria
free -h
Verificar servicios críticos
systemctl status ssh nginx mariadb
Backup de configuraciones críticas
tar -czf /backup/config-$(date +%Y%m%d).tar.gz /etc/ssh /etc/nginx /etc/mysql
2. Monitoreo de Logs
Verificar logs de autenticación
sudo tail -f /var/log/auth.log
Verificar logs de sistema
sudo journalctl -f
Verificar logs de Nginx
sudo tail -f /var/log/nginx/access.log
sudo tail -f /var/log/nginx/error.log
Verificar intentos de intrusión
sudo fail2ban-client status sshd
3. Backup y Restauración
#!/bin/bash
Script de backup completo
BACKUP_DIR=»/backup/$(date +%Y%m%d)»
mkdir -p $BACKUP_DIR
Backup de configuraciones
tar -czf $BACKUP_DIR/etc-backup.tar.gz /etc
Backup de bases de datos
mysqldump –all-databases > $BACKUP_DIR/mysql-backup.sql
Backup de datos de usuario
tar -czf $BACKUP_DIR/home-backup.tar.gz /home
Backup de logs importantes
tar -czf $BACKUP_DIR/logs-backup.tar.gz /var/log
echo «Backup completado en $BACKUP_DIR»
Solución de Problemas
1. Problemas de Red
Verificar configuración de red
ip addr show
ip route show
cat /etc/netplan/*.yaml
Probar conectividad
ping -c 4 8.8.8.8
nslookup google.com
Reiniciar servicios de red
sudo netplan apply
sudo systemctl restart systemd-networkd
2. Problemas de SSH
Verificar estado del servicio
sudo systemctl status ssh
Verificar configuración
sudo sshd -t
Verificar logs
sudo journalctl -u ssh
Verificar firewall
sudo nft list ruleset | grep 1422
3. Problemas de Rendimiento
Verificar uso de CPU
htop
top
Verificar uso de memoria
free -h
cat /proc/meminfo
Verificar uso de disco
df -h
du -sh /*
Verificar procesos que consumen recursos
ps aux –sort=-%cpu | head -10
ps aux –sort=-%mem | head -10
4. Problemas de Servicios
Verificar estado de todos los servicios
sudo systemctl list-units –failed
Reiniciar servicios específicos
sudo systemctl restart nginx
sudo systemctl restart mariadb
Verificar logs de servicios
sudo journalctl -u nginx
sudo journalctl -u mariadb
Conclusión
Esta guía proporciona una base sólida para la instalación y configuración de Ubuntu Server 24.04.3 LTS con enfoque en seguridad y mejores prácticas. El sistema resultante incluye:
- Instalación base optimizada con particionado LVM
- Configuración de seguridad robusta con SSH endurecido, firewall nftables y fail2ban
- Servicios esenciales configurados (Nginx, MariaDB, PHP)
- Monitoreo y auditoría del sistema
- Rutinas de mantenimiento automatizadas
Próximos Pasos Recomendados
- Configurar backup automatizado en ubicación externa
- Implementar monitoreo avanzado (Prometheus, Grafana)
- Configurar certificados SSL (Let’s Encrypt)
- Implementar contenedores (Docker, Kubernetes)
- Configurar CI/CD para aplicaciones
Recursos Adicionales
—
Nota: Esta guía se actualiza regularmente para reflejar las mejores prácticas y cambios en Ubuntu Server. Para obtener la versión más reciente, visite el repositorio oficial de documentación.
