SferoOneBlog
Blog sobre administración de linux y programación.
Destacados
Los Comandos más utilizados en LVM
Este post presenta los comandos mas utilizados en la adminstración de volumenes LVM. Volumenes Físicos (PV) pvcreate : Inicializar un dispos...
16 octubre 2024
Los Comandos más utilizados en LVM
Administración de volumenes LVM en Linux
En el post anterior vimos que es LVM y cuales son sus principales ventajas. En este post veremos la principales operaciones que puede realizarse en un sistema LVM.
Creación de un Grupo de Volumen
Un Grupo de Volumen (VG) es una colección de uno o más Volúmenes Físicos (PVs). Los VGs forman la base del sistema de administración de volúmenes lógicos y actúan como un conjunto de almacenamiento del cual puedes asignar volúmenes lógicos. Aquí hay una guía detallada sobre cómo crear un VG a partir de uno o más PVs:
1. Identificar Discos Disponibles:
Utiliza el comando
lsblk
para listar todos los dispositivos de bloque conectados a tu sistema. Este comando proporciona una descripción general de tus discos y particiones.
Otra alternativa es el uso del comando
fdisk -l
En ciertas condiciones es posible que el nuevo disco no sea reconocido por el sistema operativo. En este caso puede re-escanearse el bus scsi mediante el siguiente comando:
echo "- - -" >> /sys/class/scsi_host/host0/scan
Este comando debe ejecutarse para cada host listado en el directorio /sys/class/scsi_host/. Por ejemplo:host0, host1, host2 ...
Una vez realizado, puede utilizarse los comandos indicados en el punto 1 para buscar el nuevo dispositivo.
2. Preparar los Discos (si es necesario):
Para discos duros nuevos:Si estás usando un disco duro nuevo, es posible que debas particionarlo primero usando una herramienta como fdisk. En el caso que se quiera incorporar el disco completo al VG, puede saltarse este paso, ya que el LVM puede reconocer los discos sin particionar.
Para particiones existentes: Si estás usando una partición existente, asegúrate de que no esté en uso y que no contenga datos valiosos, ya que usarla para LVM sobrescribirá los datos.
3. Crear Volúmenes Físicos (PVs):
Ahora, para cada disco o partición generado en el punto 2, utiliza el comando pvcreate para inicializarlo como un PV. Por ejemplo:
sudo pvcreate /dev/sdb # Usar todo el disco /dev/sdb
sudo pvcreate /dev/sdb1 # Usar la partición /dev/sdb1
4. Crear el Grupo de Volumen:
Ahora que tienes los PVs, puedes crear un VG usando el comando vgcreate. Deberás darle al VG un nombre y especificar los PVs que incluir:
sudo vgcreate my_volume_group /dev/sdb /dev/sdc1
Este comando crea un VG llamado "my_volume_group" usando todo el disco /dev/sdb y la partición /dev/sdc1.
5. Verificar el Grupo de Volumen:
Puedes usar comandos como vgdisplayo vgspara verificar que el VG se ha creado correctamente y para ver sus detalles, incluyendo los PVs que contiene y el espacio libre disponible.
6. Creación de Volúmenes Lógicos:
Los Volúmenes Lógicos (LVs) residen dentro de un VG y son las unidades que formatearás con un sistema de archivos y usarás para almacenar datos. Piensa en los LVs como particiones flexibles dentro del conjunto de almacenamiento del VG. Aquí está cómo crear LVs dentro de un VG:
a.Elegir un Nombre y Tamaño:Decide un nombre significativo para tu LV (por ejemplo, 'projects', 'database', 'home'). Determina el tamaño del LV basado en tus requisitos de almacenamiento.
b. Usar el Comando lvcreate:Emplea el comando lvcreatepara crear el LV, especificando el VG, el nombre del LV y el tamaño deseado:
Crear un LV de 20GB llamado 'data_lv'
sudo lvcreate -L 20G -n data_lv my_volume_group
Crear un LV usando el 50% del espacio libre del VG
sudo lvcreate -l 50%FREE -n web_lv my_volume_group
7. Formatear el Volumen Lógico:
Para usar el LV, necesitas formatearlo con un sistema de archivos. Elige un sistema de archivos adecuado para tus necesidades (por ejemplo, ext4, xfs).
sudo mkfs.ext4 /dev/my_volume_group/data_lv # Formatear con ext4
sudo mkfs.xfs /dev/my_volume_group/web_lv # Formatear con xfs
8. Montar el Volumen Lógico:
Crea un directorio de punto de montaje (una ubicación en tu sistema de archivos donde el LV será accesible) y monta el LV:
sudo mkdir /mnt/data
sudo mount /dev/my_volume_group/data_lv /mnt/data
9. Configurar para Montaje Automático (Opcional):
Para que el LV se monte automáticamente al inicio del sistema, agrega una entrada al archivo /etc/fstab.
B.Extender Volúmenes
El poder de LVM radica en su capacidad para ajustar dinámicamente el tamaño de los LVs para adaptarse a las cambiantes necesidades de almacenamiento.
1.Agregar Almacenamiento al VG (si es necesario):
Si necesitas extender un LV más allá del espacio libre actual del VG, primero deberás agregar más almacenamiento. Sigue los pasos en "Creación de un Grupo de Volumen" para crear un nuevo PV y agregarlo al VG existente usando vgextend.
2. Extender el LV:
Usa el comando lvextendpara aumentar el tamaño del LV.
Agregar 10GB sudo
lvextend -L +10G /dev/my_volume_group/data_lv
Usar todo el espacio disponible
sudo lvextend -l +100%FREE /dev/my_volume_group/web_lv
3.Redimensionar el Sistema de Archivos:
Después de extender el LV, debes redimensionar el sistema de archivos para utilizar el espacio recién asignado.
Para ext4
resize2fs /dev/my_volume_group/data_lv
Para xfs
sudo xfs_growfs /dev/my_volume_group/web_lv
C. Reducir LVs
Advertencia: Reducir LVs implica una posible pérdida de datos y generalmente no se recomienda para sistemas críticos sin copias de seguridad adecuadas.
1.Desmontar el Sistema de Archivos:
Desmonta el LV del punto de montaje:
sudo umount /mnt/data
2.Reducir el Sistema de Archivos:
Usa una herramienta específica del sistema de archivos para reducir el tamaño del sistema de archivos antes de reducir el LV. Este es un paso crucial para evitar la pérdida de datos.
#Para ext4
sudo resize2fs /dev/my_volume_group/data_lv 15G
#Para xfs(reducir a 15GB)
3.Reducir el LV:
Usa el comando lvreducepara reducir el LV al nuevo tamaño del sistema de archivos.
sudo lvreduce -L 15G /dev/my_volume_group/data_lv
4.Volver a Montar el Sistema de Archivos:
Monta el LV de nuevo en el punto de montaje.
D.Eliminar Volúmenes
Advertencia: Antes de eliminar cualquier componente de LVM (LVs, VGs, PVs), asegúrate de que no estén montados o en uso por ninguna aplicación o proceso. Este paso es vital para evitar la pérdida de datos.
1.Eliminar Volúmenes Lógicos:
Para eliminar un LV, usa el comando lvremove.
sudo lvremove /dev/my_volume_group/data_lv
Probablemente se te pedirá que confirmes la eliminación.
2. Eliminar Grupos de Volumen
Para eliminar un VG, usa el comando vgremove.
sudo vgremove my_volume_group
Este comando elimina el VG y todos los LVs asociados con él.
3.Eliminar Volúmenes Físicos:
Para eliminar un PV, usa el comando pvremove.
sudo pvremove /dev/sdb
Esto eliminará el encabezado de LVM del dispositivo físico, haciendo que el espacio de almacenamiento esté disponible para otros usos.
Recuerda hacer una copia de seguridad de tus datos antes de realizar cualquier operación irreversible, especialmente reducir o eliminar LVs o VGs.
¿Por qué LVM es la herramienta favorita de los administradores de sistemas?
18 abril 2024
Guía básica del cortafuegos firewalld
Mantener nuestros servidores seguros es crucial, y una pieza clave para lograrlo es la configuración de un firewall en cada uno. Un firewall añade una capa de seguridad vital, protegiendonos no solo de amenazas externas sino también de posibles ataques internos.
Las distribuciones Linux siempre han ofrecido herramientas robustas para controlar el tráfico de red. En este artículo, nos centraremos en Firewalld, un demonio de firewall dinámico que viene preinstalado en muchas distribuciones populares como Red Hat, CentOS, Fedora, AlmaLinux y Rocky Linux.
Firewall simplifica la gestión del firewall al organizar las reglas de filtrado en zonas. A estas zonas les asignamos las interfaces de red de nuestro servidor (por ejemplo eth0, enp0s3), permitiendo que el tráfico que pasa por ellas sea controlado por las reglas definidas en esa zona.
Una gran ventaja de Firewalld es su capacidad para realizar cambios de forma dinámica, lo que significa que puedes modificar las reglas del firewall sin interrumpir el tráfico de red que ya está fluyendo.
Veamos cómo gestionar Firewalld usando el comando de línea de comandos firewall-cmd.
Verificando el estado y gestionando Firewalld
Antes de empezar a configurar, es fundamental saber si Firewalld está funcionando y cómo controlarlo. En sistemas Linux modernos, usamos el comando systemctl para interactuar con los servicios.
1. ¿Cómo determinar si Firewalld está activo?
Puedes verificar el estado de Firewalld de dos maneras:a) Usando systemctl status (más detallado):
Este comando te da una visión completa del estado del servicio Firewalld.
systemctl status firewalld
Si Firewalld está activo y funcionando, verás una salida similar a esta, donde Active: active (running) indica que está en ejecución y enabled significa que se iniciará automáticamente con el sistema.
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service;enabled; vendor preset: enabled)
Active: active (running) since Mon 2024-06-23 10:00:00 -04; 2h ago
Docs: man:firewalld(1)
Main PID: 1234 (firewalld) Tasks: 2 (limit: 1140) Memory: 10.5M CPU: 130ms
CGroup: /system.slice/firewalld.service
└─1234 /usr/bin/python3 -s /usr/sbin/firewalld --nofork --nopid
b) Usando firewall-cmd --state (más conciso):
Este comando es más simple y solo te dirá si el demonio de Firewalld está corriendo.
firewall-cmd --state
Si está funcionando, la salida será running. Si no, mostrará not running.
2. ¿Cómo activar o desactivar Firewalld?
Para controlar Firewalld, usamos systemctl. Es importante diferenciar entre iniciar/detener el servicio en el momento y habilitarlo/deshabilitarlo para que se inicie con el sistema.
Para iniciar Firewalld (en la sesión actual):systemctl start firewalld
Para detener Firewalld (en la sesión actual):
systemctl stop firewalld
¡Cuidado! Detener Firewalld dejará tu servidor sin la protección del firewall.
Para habilitar Firewalld (para que inicie automáticamente con el sistema):
systemctl enable firewalld
Para deshabilitar Firewalld (para que NO inicie automáticamente con el sistema):
systemctl disable firewalld
Comandos básicos y listado de configuración
Comencemos por verificar las zonas activas y las interfaces de red que tienen asignadas. Para ello, usamos el comando:
firewall-cmd --get-active-zones
La salida será similar a esta:
public:
interfaces: eth0
Esta salida nos indica que tenemos una zona activa llamada public y que la intefaz de red eth0 está asociada a ella. Ahora, para tener una visión completa de todos los servicios, puertos y otras reglas configuradas en la zona public, utilizamos el siguiente comando:
firewall-cmd --zone=public --list-all
Obtendrás una salida detallada como esta:
public (active)
target: default
icmp-block-inversion: no
interfaces: eth0
sources:
services: dhcpv6-client ssh
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich-rules:
Como puedes observar, la zona public tiene asociada la interfaz eth0. En la sección services (servicios), vemos que el tráfico para dhcpv6-client y ssh está permitido. Nota que en la sección ports (puertos) no hay ningún puerto individualmente habilitado, ya que estos servicios usan sus puertos por defecto.
Ahora, habilitemos el tráfico para algunos servicios comunes en nuestra zona public. Agregaremos los servicios web (http y https) y ftp.
Para los servicios web (http y https) usamos
firewall-cmd --zone=public --add-service=http
firewall-cmd --zone=public --add-service=https
y para el servicio FTP:
firewall-cmd --zone=public --add-service=ftp
Es una buena práctica eliminar servicios que no se usan. Por ejemplo, si tu servidor tiene una IP estática, es probable que no necesites el cliente DHCPv6. Para eliminarlo:
firewall-cmd --zone=public --remove-service=dhcpv6-client
Si volvemos a listar la configuración completa de la zona public con firewall-cmd --zone=public --list-all, veras que la sección services ahora refleja estos cambios:
public (active)
...
services: ftp http https ssh
...
Como puedes ver, los servicios ftp, http, https y ssh ahora están listados en la sección services.
¿Eso es todo? ¡No, aún no hemos terminado!
Es importante entender que los cambios que hemos realizado hasta ahora con firewall-cmd son inmediatos y afecta la configuración en tiempo de ejecución (runtime). Esto significa que el tráfico para los servicios HTTP, HTTPS y FTP ya está permitido. Sin embargo, hay un detalle crucial: si reinicias el servidor, todos estos cambios se perderán y la configuración del firewall volverá a su estado anterior.
Para hacer que estas modificaciones sean permanentes y persistan después de un reinicio, tienes dos opciones:
1. Guardar la configuración en ejecución a la configuración permanente:
Una vez que estés satisfecho con los cambios que has hecho en tiempo de ejecución, puedes guardarlos explícitamente en la configuración permanente con este comando:
firewall-cmd --runtime-to-permanent
Este comando copia todas las reglas activas actualmente a los archivos de configuración pemanente de Firewalld.
2. Realizar los cambios directamente en la configuración permanente y luego recargar:
La otra forma es añadir el argumento --permanent a cada comando que ejecutes. Esto indica a Firewalld que la modificacion se debe aplicar directamente a la configuración permanente, no solo a la configuración en ejecución.
firewall-cmd --zone=public --add-service=http --permanent
firewall-cmd --zone=public --add-service=https --permanent
firewall-cmd --zone=public --add-service=ftp --permanent
firewall-cmd --zone=public --remove-service=dhcpv6-client --permanent
¡Importante! Cuando modificas la configuración permanente de esta manera, los cambios no se aplican inmediatamente al firewall en ejecución. Para que Firewalld active estas nuevas reglas, necesitas recargar el servicio:
firewall-cmd --reload
Ten en cuenta que al ejecutar --reload, Firewall recarga su configuración y módulos asociados. Esto puede causar una breve interrupción en el tráfico que pasa por el firewall mientras se aplican las nuevas reglas. Por lo tanto, si realizas cambios en un servidor en producción, planifica este comando con precaución.
Comandos útiles adicionales de Firewalld
a. Obtener la lista de servicios predefinidos:
firewall-cmd --get-services
La salida es una larga lista de servicios como esta (puede variar):
RH-Satellite-6 RH-Satellite-6-capsule amanda-client ... dhcp ... http https imap imaps ... ldap... ntp nrpe... ssh...
b. Añadir una regla temporal (con timeout):
Ideal para pruebas, especialmente en servidores remotos. Puedes permitir un servicio o puerto por un tiempo limitado. Por ejemplo, para abrir SSH por 15 minutos.
firewall-cmd --zone=public --add-service=ssh --timeout=15m
Después de 15 minutos, la regla se eliminará automáticamente.
c. Verificar la sintaxis de la configuración permanente:
Antes de recargar una configuración permanente, es buena idea verificar que no haya errores de sintaxis:
firewall-cmd --check-config
d. Listar puertos permitidos en una zona:
Para ver solo los puertos que tienes abiertos en una zona específica (diferente de los servicios):
firewall-cmd --zone=public --list-ports
e. Añadir un puerto específico para tráfico entrante:
Si necesitas abrir un puerto que no está asociado a un servicio predefinido (ej. puerto 566 con protocolo TCP):
firewall-cmd --zone=public --add-port=566/tcp
f. Bloquear/Eliminar un puerto específico:
Para cerrar un puerto que ya no necesitas:
firewall-cmd --zone=public --remove-port=566/tcp
g. Listar todas las zonas definidas en el sistema:
Para ver qué zonas están disponibles en tu sistema Firewalld (no solo las activas):
firewall-cmd --get-zones
Ejemplo de salida:
block dmz drop external home internal public trusted work
Recordatorio importante para los comandos adicionales:
Recuerda que, al igual que con los servicios, si deseas que los cambios realizados con estos comandos sean permanentes, debes añadir el argumento --permanent a cada comando y luego recargar Firewalld con
firewall-cmd --reload
Referencias
28 marzo 2024
Expandir una partición LVM: Guía completa para aumentar el espacio de almacenamiento de tu servidor
Es común que los administradores de servidores necesiten expandir el tamaño de las particiones cuando estas se llenan. Aunque la limpieza de datos innecesarios es una práctica recomendada, a menudo existen situaciones donde la única solución viable es aumentar la capacidad de la partición.
En los sistemas Linux existe el Linux Volumen Manager (LVM), el cual permite realizar la ampliación de la partición en "caliente" es decir sin tener que desmontarla, con todos los servicios en línea.
13 marzo 2024
Login en SSH sin retardo: Descubre el secreto para accesos relámpago
Te pasa que cuando te conectas a tu servidor por SSH, debes esperar varios segundos a que te muestre el login, o el prompt del password.
Estas demoras pueden solucionarse en la mayoría de los casos deshabilitando la resolución de DNS mediante la opción UseDNS en el archivo de configuración de SSH.
Estos son los pasos a seguir:
- Edita el archivo /etc/ssh/sshd_config.
- Cambia las opciones UseDNS y AddressFamily a:
AddressFamily inet
UseDNS no
- Reinicia el servicio SSH:
- En RHEL 4 a 6:
service sshd restart
- En RHEL 7 o posterior:
systemctl restart sshd
Este cambio mejora la velocidad de conexión SSH desactivando la resolución de nombres de host por parte del servidor.
Por su parte AddressFamily inet le indica que sólo se aceptarán conexiones IPV4.
Recursos adicionales:
-
Mantener nuestros servidores seguros es crucial, y una pieza clave para lograrlo es la configuración de un firewall en cada uno. Un firewall...
-
Este post presenta los comandos mas utilizados en la adminstración de volumenes LVM. Volumenes Físicos (PV) pvcreate : Inicializar un dispos...