notas.archivos.cc

Notas.

Utilizar la IP Pública Estática de una VPS para Acceder a los Servicios PROXMOX del Servidor en Casa con IP Pública Dinámica.

reverseproxy


Aunque depende de la complejidad y la cantidad de usuarios, y si bien existen formas más populares y sencillas como usar servicios DDNS (No-IP, Duck DNS, DynDNS, Cloudflare, Dynu, etc.), para un servicio personal, la opción de utilizar una VPS puede traer grandes beneficios, como por ejemplo enmascarar el servidor en CASA, ya que su IP pública no queda expuesta, lo que reduce significativamente la superficie de ataque. Además, aunque se utilice un proveedor externo para alojar la VPS, esta opción ofrece mayor privacidad que los servicios DDNS, ya que la IP pública de la CASA no queda visible para ningún servicio de terceros, esto sumado al control completo que se tiene sobre la instalación Linux de la VPS, donde todas las configuraciones son administradas directamente por nosotros.

Esta guía está diseñada para ser simple y accesible, con la idea principal de que el usuario tome el control de sus propios datos, al menos en lo que se puede controlar.

La solución crea un túnel desde una VPS a un servidor en CASA con WireGuard, lo que permite aprovechar la IP Pública Estática de la VPS para acceder a nuestros servicios instalados en CASA, que normalmente tiene IP Pública Dinámica.

Se configura un Reverse Proxy que podrá generar certificados SSL para los dominios en la VPS, permitiendo acceder de forma segura a las aplicaciones en CASA.

Se configura un Servidor PROXMOX y se agregará, a modo de ejemplo, un servicio (Jellyfin) desde Proxmox creando un contenedor LXC. Proxmox y este servicio serán accesados también por internet, todo enmascarado por el Reverse Proxy y túnel WireGuard.

Para la instalación se utiliza lo siguiente:

  • Un Dominio
  • Un Servidor Linux Ubuntu VPS
  • Un Servidor Proxmox en CASA

Si bien la instalación de Proxmox, WireGuard, el Reverse Proxy y demás es rápida, tenga en cuenta que, como es habitual en cualquier proyecto, los preparativos suelen ser un poco más extensos.

Si ya tiene preparados los servidores Linux y tiene un Dominio, puede saltar al paso 5.

Flujo de instalación:

  • Crear el servidor en la VPS.
  • Asignar la IP Pública Estática al subdominio (proxmox.varlogsys.com en los ejemplos).
  • Preparar la VPS con actualizaciones, configurar el túnel y el Reverse Proxy.
  • Instalar Proxmox en el servidor en CASA y configurar el túnel.
  • Acceder al servidor Proxmox por internet y agregar el nuevo contenedor LXC con el servicio.
  • Agregar las configuraciones para el nuevo servicio y acceder por internet.

Notas:

  • Únicamente se abrirán los puertos (80, 443 y 51820) en la VPS.
  • La configuración de dominios y la generación de certificados SSL se realizarán exclusivamente en la VPS.
  • En el servidor en CASA puede realizar cualquier configuración o cambio sin que esto afecte a la VPS (Excepto servicios muy específicos).
  • Si necesita cambiar de proveedor de VPS, el proceso es sencillo y no afecta el funcionamiento del servidor en CASA (Excepto servicios muy específicos).

Para estas notas, se puede utilizar cualquier VPS basado en Linux Debian y adquirir un Dominio con cualquier registrador, ya que las configuraciones son muy similares. En los ejemplos de estas notas se utilizan los servicios "Siempre Gratis" de Oracle Cloud OCI para crear el servidor Linux Ubuntu (permite hasta 4 servidores Linux permanentes de forma gratuita en "Try OCI for free") y los servicios de Gandi.net para registrar un dominio (por su interfaz simple y política de "No Bullshit") .


1. Lista de Usuarios y Passwords

Usuarios y Passwords utilizados:

Esta es una lista de usuarios y passwords que se crean durante la instalación:

  1. User y Password para los servicios VPS Linux (Oracle Cloud OCI en los ejemplos).
  2. User y Password para el registrador de dominios.
  3. Password para la Clave SSH (para ingresar al servidor Linux con el usuario pruebauser).
  4. User y Password para el nuevo usuario de Linux (pruebauser en los ejemplos).
  5. Password para Proxmox (root como usuario y el password)
  6. User y Password para el Usuario de Jellyfin (usuario Jellyfin de las plantillas de Turnkey).

Nota: Para facilitar la administración, se recomienda utilizar un gestor de passwords como KeepassXC.

imagen



2. Crear la Clave SSH

Crear la llave SSH en Linux desde la terminal:

 
#1. Crear la llave SSH con el nombre "server" (Usar cualquier nombre o el nombre por defecto). 
ssh-keygen -o -t rsa -b 4096 -f ~/.ssh/server

#2. Solicitará agregar una contraseña cualquiera (normalmente una nueva) y luego confirmarla.       
#3. Se crea en la carpeta ~/.ssh la Clave privada (server) y la Clave pública (server.pub).  
#4. Consultar la llave SSH.            
cat ~/.ssh/server.pub

crear-ssh

Nota: El principio de la criptografía asimétrica es que el cliente posee una clave privada y el servidor una clave pública, solo quienes posean la clave privada pueden descifrar la clave SSH para acceder al servidor. Este par de archivos puede ser copiado o movido a cualquier ruta o dispositivo.


En Windows se pueden utilizar herramientas como PuTTY, WSL o incluso una máquina virtual con Linux. Sin embargo, se recomienda instalar Git SCM y utilizar su herramienta Git Bash:

https://git-scm.com/downloads/win (64-bit Git for Windows Setup)

La guía utiliza nano como editor de texto. Durante la instalación de Git SCM, hay una sección para elegir entre Vim y otros, se puede elegir nano.

Crear la llave SSH en Git Bash:

 
#1. Crear la llave SSH con el nombre "server" (Usar cualquier nombre o el nombre por defecto). 
ssh-keygen -o -t rsa -b 4096 -f ~/.ssh/server 

#2. Solicitará agregar una contraseña cualquiera (normalmente una nueva) y luego confirmarla.    
#3. Consultar la llave SSH para copiar y utilizar en Oracle Cloud.            
cat ~/.ssh/server.pub

crear-ssh-w

#En Windows los archivos Clave privada (server) y la Clave pública (server.pub) se crearon en C:/Users/USUARIO/.ssh/

Nota: El principio de la criptografía asimétrica es que el cliente posee una clave privada y el servidor una clave pública, solo quienes posean la clave privada pueden descifrar la clave SSH para acceder al servidor. Este par de archivos puede ser copiado o movido a cualquier ruta o dispositivo.



3. Crear el Servidor Linux

Crear una instancia OCI:

Una vez creada la cuenta en Oracle Cloud se inicia sesion.

  1. Ir al menú de opciones.
  2. Seleccionar "Instancias".

imagen

  1. Seleccionar la raíz.
  2. Crear instancia.

imagen

  1. Agregar un nombre, el cual sera el nombre del host (en el ejemplo es radicale, puede ser cualquiera).
  2. Cambiar la imagen de Linux.

imagen

  1. Seleccionar Ubuntu.
  2. Seleccionar la versión.
  3. Seleccionar imagen.

imagen

  1. Verificar si la red está creada, si no es así, crearla.
  2. Seleccionar "Pegar claves públicas".
  3. Agregar la clave SSH creada y copiada anteriormente.
  4. Crear.

imagen

  1. Controles de la instancia OCI (la máquina virtual Linux). Con el botón "Terminar" se puede eliminar la instancia.
  2. Obtenemos la IP pública estática.
  3. Obtenemos el usuario de la instancia llamado "ubuntu" (es el usuario del servidor Linux, más adelante se cambia por seguridad).

imagen

Abrir puertos en las configuraciones de red de Oracle Cloud:

  1. Buscar " Default Security List ".
  2. Hacer clic en la Subred encontrada.

imagen

  1. Agregar reglas de entrada.
  2. CIDR de origen: 0.0.0.0/0
  3. Protocolo IP: TCP.
  4. Rango de puertos de destino: 80,443.
  5. Agregar reglas de entrada.

imagen

  1. Agregar otra regla de entrada.
  2. CIDR de origen: 0.0.0.0/0
  3. Protocolo IP: UDP.
  4. Puertos de destino: 51820.
  5. Agregar reglas de entrada.

imagen



4. Agregar la IP a los DNS del Registrador de Dominios

En el ejemplo con gandi.net, después de adquirir un dominio ingresar a la pantalla principal.

  1. Ir a Dominio.
  2. Hacer clic en el dominio.

imagen

  1. Ir a Zonas DNS.
  2. Add record.

imagen

  1. Seleccionar tipo A.
  2. Normalmente se utiliza un TTL de 3600 (1 hora).
  3. Agregar cualquier nombre de subdominio (en los ejemplos se utiliza "proxmox".
  4. Agregar la IP pública obtenida de la VPS (Oracle Cloud en este caso).
  5. Crear.

imagen



5 Ingresar y Preparar Servidor VPS y CASA-Proxmox

Ingresar desde el cliente con la terminal:

 
#Ejemplo de ingreso a la VPS (Oracle CLoud OCI).

#1. Colocar el comando especificando la clave pública con el usuario y la IP pública. 
ssh -i ~/.ssh/server ubuntu@168.138.92.191

#2. Escribir "yes".       
#3. Agregar la contraseña de la clave SSH.
#4. Ahora se ha ingresado al servidor Linux.

imagen

 
#Ingresar como root con cualquiera de las dos opciones: 

su -

o 

sudo su -


Solo si utiliza Oracle Cloud OCI: Crear un usuario nuevo y eliminar el usuario por defecto "ubuntu".

 
#1. Crear usuario, en el ejemplo se llama "pruebauser". 
adduser pruebauser

#2. Agregar una nueva contraseña para el usuario nuevo y repetir.       
#3. Se puede dejar en blanco o agregar información.
#4. Se agrega el usuario al grupo de sudo.
usermod -aG sudo pruebauser

#4. Copiar la carpeta con la Clave Pública SSH al nuevo usuario para permitir su ingreso.
cp -r /home/ubuntu/.ssh /home/pruebauser/

#4. Se le agregan los permisos del usuario nuevo a la carpeta copiada.
chown -R pruebauser:pruebauser /home/pruebauser/.ssh

#5. "exit" dos veces para salir completamente e iniciar sesión con el nuevo usuario.
#6. Iniciar con el nuevo usuario, se utiliza el password para la Clave SSH.
ssh -i ~/.ssh/server pruebauser@168.138.92.191

imagen

 
#Eliminar el usuario "ubuntu".

userdel -f ubuntu

rm -r /home/ubuntu


Cambiar la zona horaria en la VPS:

 
#Buscar el nombre correcto de la zona horaria (Ctrl+c para salir).
timedatectl list-timezones

#Cambiar la zona horaria.
timedatectl set-timezone America/Costa_Rica


Actualizar e instalar herramientas básicas en la VPS:

 
#Actualizar Linux.
apt update && apt upgrade -y

#Instalar nano, rsyslog, el framework para el firewall, etc.

apt install curl nano rsyslog netfilter-persistent iptables-persistent -y


Instalar Proxmox en el servidor CASA

Crear la USB booteable con cualquier herramienta, si está en Windows puede optar por Ventoy:
https://github.com/ventoy/Ventoy/releases/

Descargar la "Proxmox VE ISO Installer ", copiar y pegar la ISO en la USB creada con Ventoy:
https://www.proxmox.com/en/downloads/proxmox-virtual-environment

La instalación de Proxmox es sencilla, y en el apartado de red se puede configurar de la siguiente forma:

Si está en Windows, puede encontrar los datos de la IP local y el gateway con CMD y el comando ipconfig.

  1. Agregar un NOMBRE.local (en el ejemplo, "casa.local").
  2. Agregar una IP disponible de la red local (en el ejemplo, 192.168.0.15).
  3. Agregar el Default Gateway o puerta de enlace predeterminada.
  4. Agregar DNS (en el ejemplo, se agregan los de Quad9: 9.9.9.9).
  5. Next.

imagen

  1. Ingresar a Proxmox con la IP local 192.168.0.15:8006, usuario root y la contraseña configurada.
  2. Ir al nombre.
  3. Abrir una terminal para actualizar y configurar.

imagen

Configurar y actualizar el servidor de Proxmox en CASA:

 
#Deshabilitar los repositorios de Proxmox de la versión de pago. 

mv /etc/apt/sources.list.d/pve-enterprise.list /etc/apt/sources.list.d/pve-enterprise.list.bak

mv /etc/apt/sources.list.d/ceph.list /etc/apt/sources.list.d/ceph.list.bak


Cambiar la zona horaria:

 
#Buscar el nombre correcto de la zona horaria (Ctrl+c para salir).
timedatectl list-timezones

#Cambiar la zona horaria.
timedatectl set-timezone America/Costa_Rica


Actualizar e instalar herramientas básicas:

 
#Actualizar Linux.
apt update && apt upgrade -y

#Instalar herramientas

apt install curl nano rsyslog resolvconf -y

resolvconf -u

#Actualizar Plantillas o Templates en Proxmox.
pveam update


6. Instalar y Configurar el Servidor VPS y CASA-Proxmox.


Abrir el puerto UDP 51820 Únicamente en el VPS

#Apertura del puerto UDP 51820 en el VPS

sudo iptables -I INPUT -m state --state NEW -p udp --dport 51820 -j ACCEPT

sudo netfilter-persistent save


Instalar WireGuard en la VPS y CASA-Proxmox

 
#Esta vez ingresar como root en ambos con sudo su - o con su -

sudo su -

apt install wireguard -y


Generar la Key Pública y Privada en Ambos

Ejecutar los comandos en el servidor VPS y el servidor CASA-Proxmox

 
#Generar las Key en ambos:
wg genkey | tee /etc/wireguard/private.key | wg pubkey > /etc/wireguard/public.key

#Consultar la Key Privada en ambos:
cat /etc/wireguard/private.key

#Consultar la Key Pública en ambos:
cat /etc/wireguard/public.key

#Configurar las Key en ambos:
nano /etc/wireguard/wg0.conf


#Para la VPS:
[Interface]
Address = 10.10.10.1/24
ListenPort = 51820
PrivateKey = KEY PRIVADA DEL VPS

[Peer]
PublicKey = KEY PUBLICA DE CASA-Proxmox
AllowedIPs = 10.10.10.10/32
PersistentKeepalive = 25
#Para CASA-Proxmox (agregar la IP pública estática de la VPS, en el ejemplo 168.138.92.191):
[Interface]
Address = 10.10.10.10/32
PrivateKey = KEY PRIVADA DE CASA-Proxmox
DNS = 9.9.9.9, 149.112.112.112

[Peer]
PublicKey = KEY PUBLICA DEL VPS
Endpoint = 168.138.92.191:51820
AllowedIPs = 10.10.10.1/32
PersistentKeepalive = 25

imagen


 
#Habilitar en ambos:

systemctl enable wg-quick@wg0.service

systemctl start wg-quick@wg0.service

systemctl status wg-quick@wg0.service



#Verificar en VPS:

ping -c 4 10.10.10.10

wg show


#Verificar en CASA-Proxmox:

ping -c 4 10.10.10.1

wg show



imagen

Listo, ya la VPS y CASA-Proxmox se comunican.


Instalar Caddy Reverse Proxy en el VPS

Para el VPS solo debemos abrir los puertos necesarios a Internet e instalar y configurar Caddy. (http 80 - https 443)

 
#Abrir los puertos

iptables -I INPUT 6 -m state --state NEW -p tcp --match multiport --dports 80,443 -j ACCEPT

netfilter-persistent save


#Instalar
apt install caddy -y


#Respaldar el archivo de configuración de Caddy
mv /etc/caddy/Caddyfile /etc/caddy/Caddyfile.bak

#Abrir el archivo de configuración de Caddy y agregar la configuración
nano /etc/caddy/Caddyfile

#Esta configuración garantiza la redirección del domino a HTTPS.
http:// {
    redir https://{host}{uri}
}

https://proxmox.varlogsys.com {
    reverse_proxy https://10.10.10.10:8006 {
        header_up X-Real-IP {remote_host}
        header_up X-Forwarded-For {remote_host}
        header_up X-Forwarded-Proto {scheme}
        transport http {
            tls_insecure_skip_verify
        }
    }

    header {
        Strict-Transport-Security "max-age=15552000; includeSubDomains; preload"
    }

    log {
        output file /var/log/caddy/proxmox_access.log
    }
}
#Reiniciar y verificar Caddy systemctl restart caddy systemctl status caddy #Ahora Caddy agregará los certificados SSL automáticamente. #Puede ingresar a su dominio y abrir Proxmox (en el ejemplo https://proxmox.varlogsys.com).

La configuración de Caddy es sencilla y bien estructurada como se ve en este ejemplo:

  1. Bloque que asegura que cualquier solicitud que llegue por HTTP sea redirigida automáticamente a HTTPS
  2. Bloque que redirige a Proxmox en la IP 10.10.10.10, puerto 8006 (proxmox.varlogsys.com).
  3. Ejemplo de bloque que redirige a un servicio instalado en Proxmox con Jellyfin en la IP 10.10.10.10, puerto 8096 (media.varlogsys.com).

imagen



7. Ejemplo: Instalar y Configurar en Proxmox un Servicio Jellyfin


En VPS


#Agregar al archivo de Caddy en la VPS:

nano /etc/caddy/Caddyfile
https://media.varlogsys.com {
reverse_proxy http://10.10.10.10:8096  {
        header_up Host {host}
        header_up X-Real-IP {remote_host}
        header_up X-Forwarded-For {remote_host}
        header_up X-Forwarded-Proto {scheme}
        header_up X-Forwarded-Host {host}
    }

    header {
        Strict-Transport-Security "max-age=15552000; includeSubDomains; preload"
    }

    log {
        output file /var/log/caddy/media_access.log
    }
}

#Antes de generar los certificados, verificar que hay acceso al subdominio. host media.varlogsys.com #El comando anterior debería devolver la IP Pública del VPS. #Reiniciar y verificar Caddy sudo systemctl restart caddy sudo systemctl status caddy

En CASA-Proxmox Instalar Caddy

Agregar la redirección hacia el contenedor LXC de Proxmox con Caddy:

1. Seleccionar el host, en el ejemplo es Casa.
2. o 3. Abrir una Terminal.

imagen


#Instalar Caddy
apt install caddy -y

#Respaldar el archivo de configuración de Caddy
mv /etc/caddy/Caddyfile /etc/caddy/Caddyfile.bak

#Abrir el archivo de configuración de Caddy y agregar la configuración
nano /etc/caddy/Caddyfile

#Caddy recibe el tráfico desde WireGuard y lo reenvía al contenedor LXC.
#Es necesario asignar una IP local estática para el LXC (jellyfin), en el ejemplo 192.168.0.16.
:8096  {
    reverse_proxy http://192.168.0.16 :8096 {
        header_up X-Real-IP {remote_host}
        header_up X-Forwarded-For {remote_host}
        header_up X-Forwarded-Proto {scheme}
    }

    log {
        output file /var/log/caddy/jellyfin_access.log
    }
}
#Reiniciar y verificar Caddy systemctl restart caddy systemctl status caddy #En este mismo archivo se deben añadir los demás servicios que vayan agregando.

En CASA-Proxmox (agregar Jellyfin)

  1. En este ejemplo se usa Local.
  2. CT Templates.
  3. Templates.
  4. Buscar la plantilla y seleccionar.
  5. Descargar.
  6. Agregada.

imagen



  1. Crear un nuevo contenedor LXC.
  2. Agregar las configuraciones deseadas.
  3. Siguiente pestaña.

imagen

Ejemplo de configuración:

imagen



  1. Ir al nuevo contenedor.
  2. Abrir la consola, el usuario es root.
  3. Iniciar el contenedor.
  4. Agregar las contraseñas solicitadas. Algunas opciones se pueden saltar.

imagen

Ingresar al sitio web (en el ejemplo https://media.varlogsys.com).

imagen



Para que el contenedor se inicie automáticamente, puede ir a Options y cambiar el "Start at boot".

Puede ingresar a la Shell de Jellyfin y actualizar como cualquier Linux.

Faltarían algunas configuraciones propias para Jellyfin que dependerán de cómo el usuario desee ajustarlas.

Se puede tomar este ejemplo para la configuración de los demás servicios, básicamente:

  1. Agregar la configuración al archivo de Caddy VPS.
  2. Agregar la configuración al archivo de Caddy CASA-Proxmox.
  3. Crear el contenedor con el servicio en Proxmox.





Proxmox Desplegado

imagen




Protección y Seguridad General del Servidor (Información Genérica)

En un servicio personal se pueden evitar los intentos de ingreso por SSH, de hecho, se puede visualizar estos intentos de ingreso.

Cambiar opciones de SSH:


# Ver intentos fallidos de inicio de sesión.
sudo lastb

# Ingresar a las configuraciones de SSH
sudo nano /etc/ssh/sshd_config

# - Descomentar y cambiar la línea #MaxSessions 10 por las deseadas, por ejemplo MaxSessions 2

# - Desactivar el inicio por ssh del usuario root PermitRootLogin no

# - Tiempo en segundos que se cierra la sesión: ClientAliveInterval 900

# - Agregar la siguiente linea para permitir solo nuestro usuario AllowUsers pruebause

# - Descomentar y cambiar la línea #port 22 por algún otro puerto, por ejemplo port 22090
#    Recordar abrir el puerto 22090:
     iptables -I INPUT 6 -m state --state NEW -p tcp --match multiport --dports 22090 -j ACCEPT
     netfilter-persistent save
#    Si usa Oracle Cloud, Azure, AWS, etc, abrir en las reglas.
#    Ahora se inicia sesión con ssh -p 22090 pruebauser@168.138.92.191

sudo systemctl restart sshd


Deshabilitar el ingreso con contraseña root:


# Deshabilita el ingreso con contraseña root
passwd -d root
passwd -l root

Esta configuración habilita actualizaciones automáticas de seguridad y mantenimiento esenciales de la versión de Linux (en el ejemplo Ubuntu). Sin embargo, no cubre algunas actualizaciones, por eso es importante verificar el sistema cada cierto tiempo.


#Instalar las actualizaciones automáticas
sudo apt install unattended-upgrades -y

sudo mv /etc/apt/apt.conf.d/50unattended-upgrades /etc/apt/apt.conf.d/50unattended-upgrades.bak

sudo nano /etc/apt/apt.conf.d/50unattended-upgrades

#Copiar y pegar el siguiente contenido en el archivo abierto con nano:
// Automatically upgrade packages from these origins and components
Unattended-Upgrade::Origins-Pattern {
        "origin=Ubuntu,codename=${distro_codename},label=Ubuntu";
        "origin=Ubuntu,codename=${distro_codename},label=Ubuntu-Security";
        "origin=UbuntuESMApps,codename=${distro_codename},label=UbuntuESMApps";
        "origin=UbuntuESM,codename=${distro_codename},label=UbuntuESM";
};

// List of blacklisted packages that should not be automatically upgraded
Unattended-Upgrade::Package-Blacklist {
};

// Automatically reboot *without* confirmation if needed
Unattended-Upgrade::Automatic-Reboot "true";

// Automatically reboot even if users are logged in
Unattended-Upgrade::Automatic-Reboot-WithUsers "true";

// Time to reboot the system when unattended upgrades are done
Unattended-Upgrade::Automatic-Reboot-Time "02:00";

// Enable notifications of upgrades
Unattended-Upgrade::Mail "root";
Unattended-Upgrade::MailOnlyOnError "true";

// Remove unused dependencies
Unattended-Upgrade::Remove-Unused-Dependencies "true";

// Do not automatically upgrade to newer kernel versions if the system requires a reboot
Unattended-Upgrade::MinimalSteps "true";
sudo mv /etc/apt/apt.conf.d/20auto-upgrades /etc/apt/apt.conf.d/20auto-upgrades.bak sudo nano /etc/apt/apt.conf.d/20auto-upgrades #Copiar y pegar el siguiente contenido en el archivo abierto con nano:
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";
APT::Periodic::Download-Upgradeable-Packages "1";
APT::Periodic::AutocleanInterval "7";
APT::Periodic::Unattended-Upgrade "1";
#Seleccionar Yes sudo dpkg-reconfigure --priority=low unattended-upgrades

Sobre el consumo del servidor

Siendo objetivos, es importante mencionar que utilizar la memoria Swap para suplir la falta de memoria RAM es una mala práctica.

La memoria Swap utiliza parte del almacenamiento del disco y, en términos generales, la emplea como si fuera RAM.

El problema de esta práctica es que la memoria Swap es significativamente más lenta y, además, provoca un desgaste en la unidad de almacenamiento.

Sin embargo, en ocasiones tenemos aplicaciones que solo se ejecutan esporádicamente y requieren picos de memoria RAM como sucede con ClamAV, que durante sus escaneos puede llegar a tener picos de consumo de RAM. Dado que esto no ocurre de manera constante, podemos recurrir a la memoria Swap como apoyo.

Por otro lado, si estamos usando servicios en la nube y no nuestro propio hardware, algunos picos de consumo de RAM a la semana no son tan preocupantes.

#Agregar 4GB de Swap:
sudo fallocate -l 4G /swapfile && sudo chmod 600 /swapfile && sudo mkswap /swapfile && sudo swapon /swapfile

sudo cp /etc/fstab /etc/fstab.bak

echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab && sudo sysctl vm.swappiness=10 && echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf

#Verificar la memoria:
free -mh

Nota: Si el servidor tiene menos de 1 GB, se recomienda no continuar o agregar memoria Swap. La instalación de rkhunter, chkrootkit y ClamAV es opcional.

Instalación de rkhunter y chkrootkit

rkhunter y chkrootkit detectan rootkits y malware en Linux, escaneando archivos y buscando comportamientos sospechosos o signos de infecciones conocidas.

En un sistema recién instalado, es una buena oportunidad para escanear y obtener los posibles 'falsos positivos' para en un futuro tenerlo de referencia.

#Instalar
sudo apt install rkhunter chkrootkit -y
Si pregunta sobre configurar Postfix: "No configuration"

#Habilitar escaneos automáticos con cron.(Seleccionar 1. nano.)
sudo crontab -e

#Agregar al final del texto lo siguiente para escanear una vez a la semana:
0 5 * * 1 /usr/bin/rkhunter --check --report-warnings-only | tee /var/log/rkhunter.log
0 6 * * 1 /usr/sbin/chkrootkit | tee /var/log/chkrootkit.log
# Actualizar la base de datos de propiedades. sudo rkhunter --propupd #Realizar un escaneo manual con rkhunter. sudo rkhunter --check #Solo ver los mensajes de advertencia. sudo rkhunter --check --report-warnings-only #Realizar un escaneo manual con chkrootkit. sudo chkrootkit | sudo tee /var/log/chkrootkit.log #Ver los resultados de los escaneos. sudo cat /var/log/rkhunter.log sudo cat /var/log/chkrootkit.log

Instalación de ClamAV

ClamAV es un antivirus de código abierto para Linux, diseñado para detectar malware y virus.

Es posible que, después de la instalación se inicie un escaneo, lo que puede provocar lentitud o que la conexión se congele, lo mejor es esperar que termine, especialmente si la máquina es modesta.


#Instalar ClamAV.
sudo apt install clamav clamav-daemon clamav-freshclam -y

#Habilitar las actualizaciones.
sudo systemctl enable clamav-freshclam

sudo systemctl start clamav-freshclam

sudo systemctl status clamav-freshclam

#Habilitar escaneos automáticos con cron.(Seleccionar 1. nano.)
sudo crontab -e

#Agregar al final del texto lo siguiente para escanear a las 4am:
0 4 * * * /usr/bin/clamscan -r / --log=/var/log/clamav/clamav.log
#Ver los resultados de los escaneos. sudo cat /var/log/clamav/scan.log #Verificar el estado de la base de datos. sudo cat /var/log/clamav/freshclam.log