Gestión Avanzada de Servidores Linux: Mejores Prácticas

La administración de servidores Linux es fundamental para mantener infraestructuras robustas y seguras. En este artículo exploramos las mejores prácticas para la gestión diaria de servidores Linux.

Configuración Inicial del Servidor

Actualización del Sistema

# Ubuntu/Debian
sudo apt update && sudo apt upgrade -y

# RHEL/CentOS/Rocky
sudo dnf update -y

Configuración de SSH Seguro

# Editar configuración SSH
sudo nano /etc/ssh/sshd_config

# Cambios recomendados:
# Port 2222
# PermitRootLogin no
# PubkeyAuthentication yes
# PasswordAuthentication no

Monitoreo de Recursos

Comandos Esenciales

  • htop - Monitor de procesos interactivo
  • iotop - Monitor de I/O por proceso
  • netstat -tulpn - Conexiones de red activas
  • df -h - Uso de espacio en disco
  • free -h - Memoria RAM disponible

Scripts de Monitoreo Automatizado

#!/bin/bash
# monitor.sh - Script básico de monitoreo

echo "=== ESTADO DEL SERVIDOR ==="
echo "Fecha: $(date)"
echo "Uptime: $(uptime)"
echo "Uso de CPU: $(top -bn1 | grep "Cpu(s)" | awk '{print $2}' | cut -d'%' -f1)"
echo "Memoria: $(free | grep Mem | awk '{printf("%.2f%%\n", ($3/$2) * 100.0)}')"
echo "Disco: $(df -h / | awk 'NR==2{printf "%s\n", $5}')"

Gestión de Usuarios y Permisos

Creación de Usuarios del Sistema

# Crear usuario para aplicaciones
sudo useradd -r -s /bin/false appuser

# Crear usuario administrador
sudo useradd -m -s /bin/bash admin
sudo usermod -aG sudo admin

Configuración de Sudoers

# Editar sudoers de forma segura
sudo visudo

# Ejemplo de configuración
admin ALL=(ALL) NOPASSWD: /usr/bin/systemctl, /usr/bin/tail

Automatización con Cron

Tareas de Mantenimiento

# Backup diario a las 2:00 AM
0 2 * * * /scripts/backup.sh

# Limpieza de logs semanalmente
0 3 * * 0 /usr/sbin/logrotate /etc/logrotate.conf

# Verificación de actualizaciones
0 9 * * 1 /usr/bin/apt list --upgradable

Optimización de Rendimiento

Kernel Parameters

# /etc/sysctl.conf
vm.swappiness=10
net.core.rmem_max=134217728
net.core.wmem_max=134217728
net.ipv4.tcp_rmem=4096 87380 134217728

Configuración de Límites

# /etc/security/limits.conf
* soft nofile 65536
* hard nofile 65536
* soft nproc 32768
* hard nproc 32768

Backup y Recuperación

Script de Backup Incremental

#!/bin/bash
BACKUP_DIR="/backups"
SOURCE_DIR="/var/www"
DATE=$(date +%Y%m%d_%H%M%S)

# Crear backup incremental con rsync
rsync -avz --link-dest=$BACKUP_DIR/latest \
  $SOURCE_DIR $BACKUP_DIR/$DATE

# Actualizar enlace simbólico
ln -sfn $BACKUP_DIR/$DATE $BACKUP_DIR/latest

Conclusión

Una gestión eficiente de servidores Linux requiere:

  • Configuración segura desde el inicio
  • Monitoreo constante de recursos
  • Automatización de tareas rutinarias
  • Estrategias sólidas de backup
  • Optimización continua del rendimiento

Implementar estas prácticas asegura la estabilidad y seguridad de tu infraestructura.