Los servidores son la columna vertebral de las redes informáticas, proporcionando servicios esenciales a otros dispositivos o clientes en la red. En el ámbito de los servidores, Linux se ha consolidado como una opción muy popular y robusta debido a su estabilidad, seguridad y flexibilidad. Estos servidores pueden manejar una amplia variedad de tareas, desde alojar sitios web y gestionar bases de datos hasta operar aplicaciones empresariales y servicios de correo electrónico.
Sistemas Operativos
Los sistemas operativos tipo Unix son conocidos por su robustez y amplia utilización en servidores y estaciones de trabajo. A continuación, se presentan algunos ejemplos destacados:
-
Unix: Un sistema operativo antiguo y robusto, utilizado principalmente en servidores y estaciones de trabajo.
-
Linux: Conocida por su flexibilidad y diversidad de distribuciones.
-
BSD (FreeBSD, OpenBSD, NetBSD): Derivados de Unix con diferentes enfoques en seguridad, portabilidad y rendimiento.
Linux es un sistema operativo de tipo Unix-like con una arquitectura y filosofía común basada en la idea de que “todo es un archivo”. Multiusuario y multitarea, permite la ejecución simultánea de múltiples tareas por diferentes usuarios.
Distribuciones de Linux
Rolling Release: Ejemplos como Arch Linux y Manjaro. Estas distribuciones reciben actualizaciones continuas, lo que proporciona las últimas características y mejoras de software de manera constante.
Fixed Release: Ejemplos como Debian, Ubuntu y Fedora. Estas distribuciones lanzan versiones específicas con actualizaciones periódicas no solo de seguridad, sino también funcionales. Están diseñadas para diferentes públicos objetivos, como hackers, servidores, usuarios comunes, gamers, entre otros. Algunas distribuciones son más estables que otras, y cada una está optimizada para cierto tipo de trabajo.
Sistemas de archivos en Linux
Los sistemas de archivos son métodos estructurados para almacenar y organizar datos en dispositivos de almacenamiento, como discos duros y unidades flash. Cada sistema de archivos tiene características distintas que afectan su rendimiento, confiabilidad y capacidad de manejar diferentes tipos de datos.
A continuación, se presentan algunos sistemas de archivos en entornos Linux:
-
Btrfs: Diseñado para manejar grandes conjuntos de datos con alta redundancia y escalabilidad.
-
Ext4: Predeterminado en muchas distribuciones, conocido por su rendimiento y confiabilidad.
-
XFS: Adecuado para sistemas de archivos muy grandes.
-
NTFS, FAT32: Compatibles con Windows, utilizados comúnmente en unidades portátiles.
El Rol del Administrador de Servidores
Habilidades clave
- Control de accesos: Gestión de permisos y autenticación de usuarios.
- Monitoreo del sistema: Uso de herramientas como top, htop, btop y ps para supervisar procesos y recursos.
- Administración de recursos: Gestión eficiente de CPU, memoria, y almacenamiento.
- Troubleshooting: Resolución de problemas mediante logs y herramientas de diagnóstico.
- Instalación y mantenimiento de software: Uso de manejadores de paquetes como APT y DNF.
- Creación de respaldos: Planificación y ejecución de respaldos regulares.
- Documentación: Mantener registros detallados de configuraciones y cambios.
Roles específicos
- DevOps Engineer: Enfocado en la integración y entrega continua en el desarrollo de software.
- Site Reliability Engineer: Garantiza la operación y confiabilidad de los sistemas.
- Security Operations Engineer: Encargado de la seguridad a nivel de red y aplicaciones.
- Network Engineer, Database Administrator, Cloud Engineer, etc.
Instalación de Servidores
Métodos de instalación
- Instalación directa: Descargar una imagen ISO y utilizarla para instalar el sistema operativo en el hardware.
- Virtualización: Uso de software como VirtualBox o KVM para crear máquinas virtuales.
- Hypervisor Tipo 1: Ejemplo: VMware ESXi, KVM, instalados directamente en el hardware.
- Hypervisor Tipo 2: Ejemplo: VirtualBox, está instalado sobre un sistema operativo host.
Gestión de Usuarios y Permisos
Creación de usuarios
useradd nombre_usuario
Asignación de contraseñas
passwd nombre_usuario
Gestión de grupos
groupadd nombre_grupo
usermod -aG nombre_grupo nombre_usuario
Permisos básicos
- chmod para cambiar permisos
- chown para cambiar propietario
chmod 755 archivo
chown usuario:grupo archivo
Administración de memoria y almacenamiento
Visualización de dispositivos de almacenamiento
lsblk
Gestión de particiones
fdisk /dev/sdX
parted /dev/sdX
Formateo de particiones
mkfs.ext4 /dev/sdX1
mkfs.xfs /dev/sdX1
mkfs.btrfs /dev/sdX1
mkfs.ntfs /dev/sdX1
mkfs.fat -F 32 /dev/sdX1
Montaje y desmontaje de sistemas de archivos
mount /dev/sdX1 /mnt
umount /mnt
Visualización del espacio de almacenamiento
df -h
du -sh /ruta
Gestión de volúmenes lógicos con LVM
LVM (Logical Volume Manager) es una tecnología de administración de almacenamiento que permite gestionar volúmenes lógicos en Linux de manera flexible y dinámica. Con LVM, puedes crear, modificar y eliminar volúmenes lógicos sin necesidad de apagar el sistema ni mover datos.
Este es un tema muy amplio. Más adelante, profundizaremos sobre LVM en un blog dedicado, donde exploraremos cada comando y su aplicación práctica en escenarios de administración de almacenamiento en Linux.
Monitoreo y Mantenimiento del Sistema
Monitoreo de procesos y recursos
Comando ps: Lista procesos en ejecución.
ps aux
Comandos top, htop y btop: Monitorean el uso de recursos en tiempo real. Aunque top viene por defecto, herramientas modernas como htop o btop ofrecen interfaces visuales mucho más ricas y fáciles de interpretar para la gestión de recursos.
top
htop
btop
Comando lsof: Lista archivos abiertos y los procesos que los utilizan.
lsof -i :80 # ver procesos que usan el puerto 80
Buscar ID de un proceso
pidof nombre_proceso
El comando kill -15 PID se usa para enviar una señal de terminación al proceso especificado por su PID.
Se puede reemplazar el -15 por el número -9 que corresponde a la señal SIGKILL, que fuerza la terminación inmediata del proceso sin permitir que el proceso realice ninguna limpieza o cierre ordenado de recursos.
Gestión de demonios y servicios
Uso de systemd
systemctl start nombre_servicio
systemctl enable nombre_servicio
Para crear un nuevo servicio personalizado en systemd, debes crear un archivo de unidad en el directorio /etc/systemd/system/.
Seguridad
Asegurar la seguridad en sistemas Linux implica implementar prácticas y herramientas adecuadas para proteger el sistema contra accesos no autorizados y vulnerabilidades.
Configuración de firewalls
Uso de ufw (Ubuntu)
ufw allow 22/tcp
ufw enable
Uso de firewalld (CentOS, Fedora, Red Hat, Oracle Linux)
firewall-cmd --permanent --add-service=http
firewall-cmd --reload
Control de Acceso Obligatorio (SELinux / AppArmor)
En entornos de producción, no basta con los permisos clásicos. Herramientas como SELinux (estándar en distribuciones como Fedora o RHEL) añaden una capa de seguridad a nivel del kernel. Por ejemplo, si configuras un servidor web Nginx, es posible que debas ajustar el contexto de seguridad de SELinux para que el servicio tenga permiso de acceder a directorios no estándar y servir el contenido web correctamente.
Gestión de actualizaciones y parches
apt update && apt upgrade # Debian/Ubuntu
dnf update # Red Hat/CentOS/Fedora
Configuración de SSH
Asegurar el acceso remoto. Cambios en el SSH: Editar /etc/ssh/sshd_config, se recomienda realizar los siguientes cambios:
- Cambio del puerto SSH
- Desactivar el acceso como root
- Restringir usuarios específicos
- Configurar autenticación de clave pública
- Limitar protocolos y cifrados débiles
- Configuración de timeout y límites de intentos
Automatización con cron jobs y systemd timers
Configurar y utilizar cron jobs de manera efectiva ayuda a automatizar procesos rutinarios y a mantener la consistencia y eficiencia del sistema operativo Linux. Es importante verificar regularmente los cron jobs existentes.
Creación de cron jobs
crontab -e
Sintaxis de crontab: minuto hora día_mes mes día_semana comando
Ejemplo (Ejecutar backup.sh todos los días a las 2 AM):
0 2 * * * /path/to/backup.sh
Systemd Timers (La alternativa moderna)
Hoy en día, las distribuciones modernas recomiendan el uso de systemd timers por encima de cron. Aunque cron es más rápido de configurar, los timers se integran nativamente con el gestor de registros (journalctl), permiten dependencias más complejas y aseguran que una tarea no se superponga si la ejecución anterior aún no ha terminado.
Respaldo y Recuperación
Métodos de creación de respaldos
Respaldo con tar
tar -czf /ruta/destino/respaldo.tar.gz /ruta/origen
Respaldo incremental con rsync
rsync -av --delete /ruta/origen /ruta/destino
Uso de herramientas de respaldo
- duplicity
- borg
Estrategias de recuperación
Restauración de archivos con tar
tar -xzf respaldo.tar.gz -C /ruta/destino
Restauración de archivos con rsync
rsync -av /ruta/destino/ /ruta/origen
Planificación de recuperación ante desastres
- Documentar procedimientos de recuperación.
- Realizar pruebas regulares de restauración.
Administración de Paquetes
Manejadores de paquetes
APT (Debian/Ubuntu)
sudo apt update # Actualizar lista de paquetes
sudo apt install nombre_paquete # Instalar un paquete
sudo apt remove nombre_paquete # Eliminar un paquete
YUM / DNF (Fedora/RHEL/CentOS)
sudo dnf update # Actualizar lista de paquetes
sudo dnf install nombre_paquete # Instalar un paquete
sudo dnf remove nombre_paquete # Eliminar un paquete
(Nota: dnf es la versión moderna y recomendada que reemplaza al antiguo comando yum en las distribuciones basadas en Red Hat).
Conclusión
La administración de servidores Linux contempla una amplia gama de competencias y conocimientos, desde la instalación y configuración inicial hasta el monitoreo con herramientas modernas, el mantenimiento continuo y la seguridad avanzada a nivel del kernel.