Configurar y asegurar servidor ownCloud
Ayer hablamos de la instalación del servicio en la nube ownCloud sobre un servidor Ubuntu 14.04 en un VPS. Hoy nos encargaremos de configurarlo, para optimizarlo y así también mejorar su seguridad. Entre otros aspectos habilitaremos el acceso mediante HTTPS y HSTS, para así utilizar el cifrado SSL en las comunicaciones.
Configurar servidor ownCloud
Antes de nada, como la interfaz por defecto viene en inglés, la vamos a cambiar al castellano, esto es bien fácil, sólo debemos ir a nuestro perfil de usuario e indicar el idioma. Desde el mismo panel podemos añadir nuestro correo electrónico, una fotografía o cambiar la contraseña del usuario.
Empecemos por lo más básico, si ya hemos instalado el servicio y hemos probado de subir ficheros de cierto tamaño nos habremos encontrado que nos habrá aparecido un aviso, indicando que el tamaño máximo se ha excedido. Para cambiar eso lo podemos hacer mediante consola de comandos, modificando el fichero /etc/php5/apache2/php.ini , cambiando los siguientes parámetros, por los que nos interesen:
upload_max_filesize = 2M
post_max_size = 8M
Es importante remarcar que la cantidad del segunda parámetro, siempre tiene que ser igual o superior al primero. En mi caso la configuración que he dejado es la siguiente:
upload_max_filesize = 1GB
post_max_size = 2GB
o bien utilizando el menú de «Administración» , de manera adicional, ya que indica por defecto una subida máxima de 512 MB. Véase la imagen:
Una vez hecho esto vamos a un tema muy importante, que es habilitar HTTPS para nuestra conexión. Para ello me he servido de la guía que escribí en su día «Habilitar HTTPS en nuestro servidor web» Alguna cosa cambia, así que os vuelvo a explicar los pasos. Primero actualizamos repositorios e instalamos el paquete openssl.
apt update
apt install openssl
Una vez instalado creamos el certificado y la llave para nuestra web, al crearlos nos hará una serie de preguntas sencillas, que debemos responder, si tenéis alguna duda siempre se puede consultar la documentación oficial de Apache al respecto.
openssl req -new -x509 -nodes -out /etc/ssl/certs/cloud.ochobitsunbyte.pw_self.crt -keyout /etc/ssl/private/cloud.ochobitsunbyte.pw_self.key
Por un tema evidente de seguridad modificaremos los permisos de los ficheros recien creados.
chmod 600 /etc/ssl/certs/*
chmod 600 /etc/ssl/private/*
Habilitamos el módulo de Apache ssl, para poder trababar con él:
a2enmod ssl
Habilitamos la plantilla web para conexiones SSL
a2ensite default-ssl
Reiniciamos el servidor web Apache
service apache2 reload
Configurar Apache para trabajar con SSL
Ahora modificaremos la configuración de nuestro virtual host, para que utilice el nuevo certificado y llave SSL. Una vez hecho esto nuestro servidor utilizará HTTPS en lugar de HTTP
Editamos el fichero:
nano /etc/apache2/sites-available/default-ssl.conf
Si utilizamos el editor nano, utilizaremos la combinación CTRL+W, para buscar el siguiente texto:
VirtualHost _default_:443
Y añadimos:
ServerAdmin davidochobits@ochobitsunbyte.pw
ServerName listas.ochobitsunbyte.pw:443
Adicionamos las dos líneas a continuación, donde indicamos la ubicación de la llave y el certificado:
SSLCertificateFile /etc/ssl/certs/cloud.ochobitsunbyte.pw_self.crt
SSLCertificateKeyFile /etc/ssl/private/cloud.ochobitsunbyte.pw_self.key
Con esto ya tendremos suficiente. Reiniciamos el servicio Apache:
service apache2 reload
Otro aspecto importante es forzar el uso de HTTPS, para ello el fichero de configuración del puerto 80, quedará así:
Y el fichero para el puerto 443, para que funcione todo correctamente, en mi caso es el siguiente:
Y más adelante tenemos las siguientes líneas:
Aquí nos referimos a HSTS, que significa, en sus siglas en inglés «HTTP Strict Transport Security» Dicho módulo se utiliza para evitar los llamados ataques man-in-the-middle Más información al respecto aquí. Para que éste módulo funcione lo debemos habilitar:
a2enmod headers
Por último, para poder utilizar el fichero .htaccess creado en la carpeta de ownCloud, se debe añadir en el VirtualHost, la línea ‘AllowOverride All’ y habilitar también el módulo Rewrite:
a2enmod rewrite
Por último reiniciamos el servicio, otra vez:
service apache2 reload
Lo dejaremos por hoy, espero que os haya sido útil e interesante. Nos leemos en la próxima 😉