Nextcloud en la Raspberry Pi (10). Avisos de seguridad de Nextcloud

Actualizado a Nextcloud 14 el 14/10/18

Pantalla de configuración de Nextcloud 14

Cuando entramos en la configuración de Nextcloud 14, nos vamos a encontrar varios avisos de cosas que no están configuradas de la mejor manera posible.  Vamos a ver cómo solucionarlo.

Correo

El primer aviso es sobre el servidor de correo que usa Nextcloud para mandar sus correos de bienvenida, avisos, etc. a los usuarios.  Hasta la versión 13, Nextcloud usaba el servidor de correo incorporado de PHP, pero ha dejado de usarlo. Ahora debemos suministrarle los datos de una cuenta de correo que funcione. Lo haremos de la siguiente manera:

Configuración de correo para Nextcloud

Como vemos, debemos ir a los Ajustes básicos de la configuración y debemos dar los datos  del apartado de Servidor de correo electrónico:

  • Modo de envío: SMTP (no parece que haya otra opción)
  • Cifrado: ninguno, si no tienes configurado en el correo
  • Desde la dirección: podemos poner la que queramos, lo suyo es poner una de la que podamos disponer
  • Método de autenticación: yo he usado Iniciar sesión, para poder dar los datos siguientes
  • Dirección del servidor: suele ser smtp.dominio o mail.dominio o algo similar, depende de cada servidor.
  • Puerto: el estándar de SMTP es 587
  • Credenciales: ponemos el usuario y contraseña. Ojo aquí, en algunos servidores hace falta poner el @dominio.com y en otros dos. Lo mejor es consultar la ayuda de cada uno.

HSTS

El aviso escrito en texto rojo de la captura anterior nos recuerda que no se ha configurado la cabecera HTTP Strict Transport Security. Esto hace que no se permita ninguna conexión que no sea segura (HTTPS) y hace más difíciles los ataques al sitio. Para configurarlo, podemos editar el archivo de configuración que ha creado Let’s Encrypt:
sudo nano /etc/apache2/sites-enabled/000-default-le-ssl.conf

Vamos al final del archivo y, bajo la línea que empieza ServerName y encima de la línea </VirtualHost> añadimos lo siguiente:

    <IfModule mod_headers.c>
      Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains; preload"
    </IfModule>

Aunque podemos limitarnos a reiniciar el servidor, como siempre, con sudo service apache2 restart, no es mala idea reiniciar la Raspberry con sudo reboot.

Nota: la última parte de la línea central (; preload) añade el dominio que hemos configurado con DDNS a una lista que incluyen los grandes navegadores y que obliga a usar HTTPS en estos dominios. Esto significa que si tienes un problema y tienes que volver a empezar, puede ser difícil volver a trabajar con el dominio antes de configurar Let’s Encrypt, porque no tendrás https y el navegador estará obligado a intentar usarlo.

Well-known

Los siguientes avisos están relacionados con el calendario y los contactos, se refieren a las llamadas direcciones «well-known» que permiten configurar estos dos elementos en clientes (móviles, por ejemplo) de forma más sencilla. Para eliminar este aviso, lo que hay que hacer es crear un archivo nuevo llamado .htaccess en la raíz del servidor, /var/www/html. Se puede hacer con sudo

 

  • Tu servidor web no está configurado correctamente para resolver «/.well-known/caldav». Se puede encontrar más información en la documentación.
  • Tu servidor web no está configurado correctamente para resolver «/.well-known/carddav».

 

Cache

La memoria caché es un sistema que permite al servidor servir ciertos objetos habituales de manera más rápida. Es fácil configurar una caché de última generación con sudo apt-get install php-redis redis-server.

Comprobamos que ha arrancado con ps ax | grep redis y editamos el archivo de configuración para que Nextcloud use esta cache: sudo nano /var/www/html/nube/config/config.php.

Aunque recomiendan otra configuración si el servidor redis está instalado en la misma máquina, a mí no solo no me funciona sino que cuelga Nextcloud. Así que como ofrecen otra posibilidad, añadimos

'memcache.local' => '\OC\Memcache\Redis',
'redis' => array(
     'host' => 'localhost',
     'port' => 6379,
      ),

para configurar la caché local, y

'memcache.locking' => '\OC\Memcache\Redis',

para configurar la caché de bloqueo de archivos.

Por último, la misma página de Administración nos recomienda configurar el archivo php.ini para la memoria OPcache. Para ello, lanzamos el comando sudo nano /etc/php/7.0/apache2/php.ini.

Tenemos que buscar (con CTRL+W) los valores de la izquierda de cada signo igual y cambiarlo a lo siguiente. Ojo: si la línea comienza con un punto y coma (;), también hay que borrarlo.

opcache.enable=1
opcache.enable_cli=1
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1

Y reiniciamos el servidor con sudo service apache2 restart.

Permisos de archivos

Me doy cuenta al repasar esta serie de entradas que no había apuntado de dónde saqué este script, y lo lamento, debería darle el reconocimiento debido al autor. No lo he encontrado, parece que es de la documentación oficial pero no encuentro la página. Aun así, vamos con esto.

Para estar seguros de que todos los archivos de Nextcloud están bien configurados en cuanto a sus permisos y propietarios, podemos crear un script que lo comprueba.

Creamos un archivo nuevo con sudo nano permisos.sh y copiamos dentro el siguiente código con MAYS+Ins. Si hace falta, hay que cambiar la segunda línea para que refleje la carpeta exacta donde hemos instalado Nextcloud.

#!/bin/bash
ocpath='/var/www/html/nextcloud'
htuser='www-data'
htgroup='www-data'
rootuser='root'

printf "Creating possible missing Directories\n"
mkdir -p $ocpath/data
mkdir -p $ocpath/updater

printf "chmod Files and Directories\n"
find ${ocpath}/ -type f -print0 | xargs -0 chmod 0640
find ${ocpath}/ -type d -print0 | xargs -0 chmod 0750

printf "chown Directories\n"
chown -R ${rootuser}:${htgroup} ${ocpath}/
chown -R ${htuser}:${htgroup} ${ocpath}/apps/
chown -R ${htuser}:${htgroup} ${ocpath}/config/
chown -R ${htuser}:${htgroup} ${ocpath}/data/
chown -R ${htuser}:${htgroup} ${ocpath}/themes/
chown -R ${htuser}:${htgroup} ${ocpath}/updater/

chmod +x ${ocpath}/occ

printf "chmod/chown .htaccess\n"
if [ -f ${ocpath}/.htaccess ]
 then
  chmod 0644 ${ocpath}/.htaccess
  chown ${rootuser}:${htgroup} ${ocpath}/.htaccess
fi
if [ -f ${ocpath}/data/.htaccess ]
 then
  chmod 0644 ${ocpath}/data/.htaccess
  chown ${rootuser}:${htgroup} ${ocpath}/data/.htaccess
fi

Cambiando en la segunda línea la carpeta donde está instalado Nextcloud. Guardamos con CTRL+X, «s» y ejecutamos el script con sudo sh ./permisos.sh.

3 comentarios

    • Miguel Ángel en 29/05/2017 a las 17:11
    • Responder

    Antes de nada felicitarte por estos grandes tutoriales paso a paso para los que nos iniciamos en el mundo de Linux y raspberry. Son los que de verdad nos ayudan. He conseguido quedar nextcloud funcionando muy bien, pero al aplicar el último script de permisos, me he quedado sin acceso a nextcloud. Pensaba que era solo una comprobación de permisos, pero en realidad los cambia. ¿Alguna ayuda?

    1. Ni idea, lo siento.

      1. Si estás en Rasbpian, Debian o Ubuntu, lo que hace es dar los permisos de archivo al usuario www-data, el del servidor web. Repasándolo ahora, quizás el problema esté en la segunda línea, si Nextcloud no está instalado en esa carpeta. Si no, no se me ocurre nada más.

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.