Configuración esencial y optimización de sistemas Linux en entornos virtuales

Gestión de almacenamiento y depuración de memoria

Para realizar pruebas de estrés en el disco o verificar el comportamiento del sistema ante la falta de espacio, se puede generar un archivo de gran tamaño utilizando el comando dd. El siguiente ejemplo crea un archivo de 1GB:

# Generar un archivo de prueba de 1GB
dd if=/dev/zero of=/tmp/archivo_prueba.img bs=100M count=10

# Eliminar el archivo para liberar espacio
rm -f /tmp/archivo_prueba.img

Para optimizar el uso de la memoria RAM eliminando datos innecesarios en el caché (pagecache, dentries e inodes), se puede interactuar directamente con el kernel:

# Liberar caché del sistema
sync; echo 3 > /proc/sys/vm/drop_caches

# Verificar el estado de la memoria en MB
free -m

Administración avanzada de usuarios mediante scripts

La automatización de la creación de cuentas es fundamental en la administración de servidores. A continuación, se presenta un script en Bash para generar múltiples usuarios con contraseñas aleatorias seguras:

#!/bin/bash
# Crear 50 usuarios de prueba (dev_user1 a dev_user50)
for id in $(seq 1 50); do
    USER_NAME="dev_user$id"
    # Generar contraseña aleatoria de 16 caracteres
    USER_PASS=$(openssl rand -base64 12)
    
    # Crear usuario sin shell de login para mayor seguridad
    useradd "$USER_NAME" -s /sbin/nologin
    echo "$USER_NAME:$USER_PASS" | chpasswd
    
    echo "Usuario $USER_NAME creado exitosamente."
done

Auditoría de red y conexiones activas

Para supervisar la carga del servidor y las conexiones TCP activas, se puede utiliazr una combinación de netstat y awk para agrupar y contar los estados de las conexiones:

netstat -ant | awk '{print $6}' | sort | uniq -c | sort -n

Si se requiere identificar la dirección IP de una interfaz específica de forma rápida:

ifconfig ens33 | grep 'inet ' | awk '{print $2}'

Configuración de red y resolución de nombres

La configuración manual de una IP estática en sistemas basados en RHEL/CentOS se realiza editando el archivo de la interfaz:

# Ejemplo de configuración en /etc/sysconfig/network-scripts/ifcfg-ens33
DEVICE="ens33"
BOOTPROTO="static"
ONBOOT="yes"
IPADDR="192.168.1.50"
NETMASK="255.255.255.0"
GATEWAY="192.168.1.1"
DNS1="8.8.8.8"
DNS2="1.1.1.1"

Para la resolución local de nombres sin depender de un DNS externo, se edita el archivo hosts:

cat <<eof>> /etc/hosts
192.168.1.100 servidor-principal
192.168.1.101 nodo-datos-01
192.168.1.102 nodo-datos-02
EOF</eof>

Seguridad: Firewall, SELinux y Swap

En entornos de desarrollo controlados, a menudo es necesario desactivar temporalmente ciertos mecanismos de seguridad para facilitar la comunicación entre servicios:

# Desactivar el Firewall de forma permanente
systemctl stop firewalld
systemctl disable firewalld

# Configurar SELinux en modo permisivo (temporal)
setenforce 0

# Desactivar SELinux permanentemente en el archivo de configuración
sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

Para desactivar el uso del área de intercambio (Swap), especialmente útil en entornos de Kubernetes:

# Desactivar swap inmediatamente
swapoff -a

# Evitar que se active tras un reinicio comentando la línea en fstab
sed -i '/swap/s/^/#/' /etc/fstab

Sincronización horaria (NTP)

Mantener el reloj del sistema sincronizado es crítico para la consistencia de los logs y protocolos de autenticación:

# Instalación y sincronización rápida
yum install ntpdate -y
ntpdate pool.ntp.org

# Visualizar la fecha y hora actual
date

Generación de identificadores únicos (MAC y UUID)

En la clonación de máquinas virtuales, es vital asegurar que cada instancia tenga identificadores únicos:

# Generar una dirección MAC aleatoria
openssl rand -hex 6 | sed 's/\(..\)/\1:/g; s/.$//'

# Generar un nuevo UUID para el sistema
uuidgen

Comandos de diagnóstico rápido

  • uname -a: Muestra información detallada del kernel y la aqruitectura.
  • hostnamectl set-hostname nuevo-nombre: Cambia el nombre del host permanentemente.
  • uptime: Indica cuánto tiempo lleva el sistema encendido y la carga promedio.
  • lscpu: Despliega la arquitectura y detalles de los procesadores disponibles.
  • lsblk: Muestra la estructura de los dispositivos de bloque y sus puntos de montaje.

Etiquetas: linux Sysadmin bash Networking security

Publicado el 7-29 13:35