notas.archivos.cc

Notas.

Servidor Nextcloud

radicale


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.

Si bien la instalación de Nexcloud, Let's Encrypt y Apache 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 preparado el servidor Linux y tiene un Dominio puede saltar al paso 5.

Para estas notas, se puede utilizar cualquier VPS basado en Linux Debian y adquirir un dominio con el registrador de tu preferencia, 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 y los servicios de Gandi.net (por su interfaz simple y política de "No Bullshit") para registrar un dominio.


1. Requisitos

Requisitos:

  • Una IP pública estática
  • Un servidor Linux
  • Un dominio

Para sistemas de 1GB de RAM, se recomienda leer la sección "Agregar Swap y Evitar Caídas por Picos de Consumo de RAM" que esta al final.

Para asegurar un flujo de datos seguro y sin interrupciones, esta guía utiliza un Dominio, Normalmente y en cualquier registrador, los dominios tienen precios accesibles y se puede optar por dominios .com, .org, .cc, .net, etc., o dominios específicos de un país, y pueden ser de utilidad para múltiples proyectos.

Para obtener una IP pública estática y un servidor Linux, es posible utilizar los servicios de oracle.com/cloud/ a través de la opción "Try OCI for free".

Nota: Para registrar una cuenta gratuita en Oracle Cloud, es necesario proporcionar información de una persona real, incluyendo una tarjeta que valide al usuario, y una vez creada, se tiene acceso hasta 4 servidores Linux de forma gratuita , Oracle no hará ningún cobro a menos que se solicite explícitamente cambiar a una cuenta de pago.

El sitio oficial de Nextcloud recomienda Apache y mínimo 1 GB de RAM: https://docs.nextcloud.com/server/latest/admin_manual/installation/system_requirements.html

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 (gandi.net en los ejemplos).
  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 el usuario root de MariDB.
  6. User y Password para el nuevo usuario de la DB de MariaDB (lucia en los ejemplos, password sin simbolos preferiblemente).
  7. User y Password para el usuario administrador de Nextcloud (Karla en los ejemplos).

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 nombre del host).
  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


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 el ejemplo se utiliza "cloud".
  4. Agregar la IP pública obtenida de Oracle Cloud.
  5. Crear.

imagen


5. Ingresar y Preparar el Servidor

Ingresar al servidor desde el cliente con la terminal:

 
#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


Crear un usuario nuevo y eliminar el usuario por defecto "ubuntu" creado por Oracle Cloud OCI:

 
#1. Crear usuario, en el ejemplo se llama "pruebauser". 
sudo 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.
sudo usermod -aG sudo pruebauser

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

#4. Se le agregan los permisos del usuario nuevo a la carpeta copiada.
sudo 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".
#Usar sudo con el password del nuevo usuario.
sudo userdel -f ubuntu
sudo rm -r /home/ubuntu


Cambiar la zona horaria:

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

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


Actualizar e instalar herramientas básicas:

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

#Instalar nano, rsyslog y el framework para el Firewall (normalmente ya instalado).
sudo apt install nano rsyslog netfilter-persistent iptables-persistent -y


Abrir puerto 80 (http) y 443 (https) en el servidor Linux:

#Abrir puertosnen el servidor Linux:
sudo iptables -I INPUT 6 -m state --state NEW -p tcp --match multiport --dports 80,443 -j ACCEPT

#Hacer la regla persistente:
sudo netfilter-persistent save


6. Instalar y Configurar Nextcloud con Apache, MariaDB, PHP y Let's Encrypt.


Instalar herramientas

 
sudo apt install php php-curl php-cli php-mysql php-gd php-common php-xml php-json php-intl php-pear php-imagick php-dev php-common php-mbstring php-zip php-soap php-bz2 php-bcmath php-gmp php-apcu libmagickcore-dev rsyslog unzip cron mariadb-server mariadb-client certbot -y


Configurar PHP

 
#Buscar el formato correcto de la zona horaria que desea agregar:
sudo php -r "print_r(DateTimeZone::listIdentifiers());"

# Verificar la versión de PHP instalada. En este ejemplo, es 8.3.6, por lo tanto, se usa 8.3:

php -v

ls /etc/php/

# Crear y abrir con nano un archivo .ini personalizado ajustando el número de versión de PHP.
# Este archivo cancelará las opciones por defecto de /etc/php/8.3/apache2/php.ini.
# Está ajustado para subir o descargar archivos de hasta 10GB.
# Se puede configurar a gusto.

#Copiar y pegar el siguiente contenido en el archivo abierto con nano:

sudo nano /etc/php/8.3/apache2/conf.d/custom-settings.ini

file_uploads = On
allow_url_fopen = On
memory_limit = 2048M
upload_max_filesize = 10G
post_max_size = 10G
max_execution_time = 3600
display_errors = Off
date.timezone = America/Costa_Rica
zend_extension=opcache
output_buffering = Off
opcache.enable = 1
opcache.interned_strings_buffer = 16
opcache.max_accelerated_files = 10000
opcache.memory_consumption = 128
opcache.save_comments = 1
opcache.revalidate_freq = 1

Configurar MariaDB

 
#Configuración inicial de MariaDB para la base de datos de Nextcloud:
sudo mysql_secure_installation

  1. Ejecutar el comando para configurar MariaDB.
  2. Presionar la tecla Enter.
  3. Escribir "y" y presionar Enter.
  4. Escribir "y" y presionar Enter, luego agregar la contraseña y repetir.
  5. Escribir "y" y presionar Enter en todas las demás opciones.

imagen


Crear la Base de Datos para Nextcloud

 
# Ingresar a la aplicación de MariaDB como root:
sudo mysql -u root -p

# Crear una base de datos con cualquier nombre, en el ejemplo es dbnextcloud:
CREATE DATABASE dbnextcloud;

# Añadir un usuario y una contraseña cualquiera:
# (si utiliza caracteres especiales, que sean básicos o evítelos si es posible):
CREATE USER lucia@localhost IDENTIFIED BY 'e8ade1WQBwV9gKV';

# Otorgar privilegios a lucia y salir de la aplicación MariaDB:

GRANT ALL PRIVILEGES ON dbnextcloud.* TO lucia@localhost;

FLUSH PRIVILEGES;

quit

imagen


Descargar y Añadir Nextcloud

Visitar el sitio web de https://download.nextcloud.com/server/releases/ solo para verificar la última versión disponible (en el ejemplo, es la 30.0.1). No es necesario descargar el archivo en el equipo cliente.

imagen

 
# Descargar archivo en el servidor con wget, descomprimir y dar permisos:

cd /var/www/

sudo wget https://download.nextcloud.com/server/releases/nextcloud-30.0.1.zip

sudo unzip nextcloud*.zip

sudo chown -R www-data:www-data nextcloud

sudo rm /var/www/nextcloud*.zip


Generar los Certificados SSL con Let's Encrypt

 
#Crear el directorio necesario para el desafío HTTP de Let's Encrypt:
sudo mkdir -p /var/lib/letsencrypt/.well-known

#Cambiar el grupo propietario del directorio a www-data:
sudo chgrp www-data /var/lib/letsencrypt

#Garantiza que los archivos creados hereden el grupo www-data:
sudo chmod g+s /var/lib/letsencrypt

#Este directorio valida ls certificados SSL de Let's Encrypt con HTTP-01.
#Copiar y pegar el siguiente contenido en el archivo abierto con nano:

sudo nano /etc/apache2/conf-available/well-known.conf
Alias /.well-known/acme-challenge/ "/var/lib/letsencrypt/.well-known/acme-challenge/"

<Directory "/var/lib/letsencrypt/">
    AllowOverride None
    Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
    Require method GET POST OPTIONS
</Directory>
#Definir el nombre del servidor agregando la siguiente linea a apache2.conf: echo "ServerName nextcloud.varlogsys.com" | sudo tee -a /etc/apache2/apache2.conf #Habilitar el módulo ssl: sudo a2enmod ssl #Crear un enlace simbólico para habilitar la configuración de "well-known" en Apache: sudo ln -s /etc/apache2/conf-available/well-known.conf /etc/apache2/conf-enabled/ #Probar la configuración de Apache para asegurarse de que no haya errores: sudo apachectl configtest #Recargar el daemon de systemd: sudo systemctl daemon-reload #Reiniciar el servicio de Apache para aplicar los cambios: sudo systemctl restart apache2 # Verificar que el DNS está configurado correctamente. Debería devolver la IP pública del servidor: host nextcloud.varlogsys.com #Obtener el certificado SSL usando webroot, cambiar el correo y el dominio: sudo certbot certonly --agree-tos --email mi@correo.com --webroot -w /var/lib/letsencrypt/ -d nextcloud.varlogsys.com

imagen


Configurar Host Virtual para Nextcloud

 
#Crear el archivo de configuración de Nextcloud:

#Copiar y pegar el siguiente contenido en el archivo abierto con nano:
sudo nano /etc/apache2/sites-available/nextcloud.conf 

<VirtualHost *:80>
    ServerName nextcloud.varlogsys.com
    ServerAlias www.nextcloud.varlogsys.com
    # Redirección automática de HTTP a HTTPS
    Redirect permanent / https://nextcloud.varlogsys.com/
</VirtualHost>

<VirtualHost *:443>
    ServerName nextcloud.varlogsys.com
    ServerAlias www.nextcloud.varlogsys.com
    DocumentRoot /var/www/nextcloud/
    Protocols h2 http/1.1

    # Redirección de www a la versión sin www
    <If "%{HTTP_HOST} == 'www.nextcloud.varlogsys.com'">
        Redirect permanent / https://nextcloud.varlogsys.com/
    </If>

    # Redirecciones para .well-known
    Redirect 301 /.well-known/carddav /remote.php/dav
    Redirect 301 /.well-known/caldav /remote.php/dav    

    # Archivos de registro
    ErrorLog /var/log/apache2/nextcloud.varlogsys.com-error.log
    CustomLog /var/log/apache2/nextcloud.varlogsys.com-access.log combined

    # Configuración de SSL
    SSLEngine On
    SSLCertificateFile /etc/letsencrypt/live/nextcloud.varlogsys.com/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/nextcloud.varlogsys.com/privkey.pem

    # HSTS (HTTP Strict Transport Security)
    <IfModule mod_headers.c>
        Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"
    </IfModule>

    <Directory /var/www/nextcloud/>
        Options +FollowSymlinks
        AllowOverride All
        <IfModule mod_dav.c>
            Dav off
        </IfModule>
        SetEnv HOME /var/www/nextcloud
        SetEnv HTTP_HOME /var/www/nextcloud
    </Directory>
</VirtualHost>

#Habilitar el archivo de configuración de Nextcloud: sudo a2ensite nextcloud.conf #Verificar la configuración de Apache: sudo apachectl configtest #Reiniciar Apache para aplicar los cambios: sudo systemctl restart apache2

Instalar Nextcloud

Acceder al sitio web (en este ejemplo, nextcloud.varlogsys.com):

  1. Crear un nuevo usuario administrador.
  2. Ruta donde estarán los archivos de los usuarios, se puede dejar la ruta predeterminada o cambiarla según preferencia.
  3. Usuario y contraseña creados en MariaDB (en este ejemplo es "lucia" y "e8ade1WQBwV9gKV").
  4. Agregar el nombre de la base de datos creada en MariaDB (en el ejemplo dbnextcloud).
  5. Iniciar la instalación, esto tomará un tiempo, y luego se preguntará por las aplicaciones adicionales a instalar.

imagen


Para finalizar

En Configuración de Administrador / Generalidades podemos verificar las "Advertencias de seguridad y configuración". Dependiendo de la necesidad, se pueden corregir, ya que tal vez hay opciones innecesarias.

 
# Reparar la instalación de Nextcloud, incluyendo operaciones avanzadas
sudo -u www-data php /var/www/nextcloud/occ maintenance:repair --include-expensive

# Añadir índices de base de datos que faltan en Nextcloud para mejorar el rendimiento
sudo -u www-data php /var/www/nextcloud/occ db:add-missing-indices

# Establecer la región predeterminada para números de teléfono en Nextcloud (Códigos ISO)
sudo sed -i "/'installed' => true,/a\ \ 'default_phone_region' => 'CR'," /var/www/nextcloud/config/config.php

# Configurar la hora de inicio de la ventana de mantenimiento de Nextcloud
sudo sed -i "/'installed' => true,/a\ \ 'maintenance_window_start' => '01:00'," /var/www/nextcloud/config/config.php

# Configurar Redis como bloqueo de caché en Nextcloud para mejorar la concurrencia
sudo sed -i "/'maintenance' => false,/a\ \ 'memcache.locking' => '\\\OC\\\Memcache\\\Redis',\n\ \ 'redis' => [\n\ \ \ \ 'host' => 'localhost',\n\ \ \ \ 'port' => 6379,\n\ \ \ \ 'timeout' => 0.0,\n\ \ ]," /var/www/nextcloud/config/config.php

# Configurar APCu como caché local en Nextcloud para mejorar el rendimiento
sudo sed -i "/'maintenance' => false,/a\ \ 'memcache.local' => '\\\OC\\\Memcache\\\APCu'," /var/www/nextcloud/config/config.php

# Instalar y activar Redis, php-redis y php-apcu para Nextcloud

sudo apt install redis-server php-redis php-apcu

sudo systemctl enable redis-server --now

sudo systemctl restart apache2

Listo!



Nextcloud Desplegado

imagen




Protección y Seguridad General del Servidor

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 en un servidor donde solo está Radicale.

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.

#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