Guía Completa de Instalación de Ubuntu Server 24.04.3 LTS
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.
