Saltar al contenido

CyberSkills – Tutoriales de Seguridad y Servidores

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

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 = 3600

Habilitar 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.

Únete a la conversación

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *