Como compartir una carpeta a través de Internet (mediante WebDav)

Por diversas razones, a menudo e necesitado acceder a ficheros que tengo en mi casa desde el exterior cuando estoy fuera. Cuando te conectas desde fuera (un wifi publico p.e. ), es posible que el acceso al exterior esté muy restringuido permitiendo únicamente navegación web (puerto 80 y 443 únicamente). Por lo que para estar seguro de tener acceso en cualquier lugar y momento, la mejor manera es compartir una carpeta de manera segura podría ser mediante WebDav utilizando el protocolo HTTPS sobre el puerto 443. Para ello necesitamos nuestra RaspberryPI con Raspbyan Downloads el servidor Apache instalado.

Como vamos a trabajar como root, ejecutamos:

sudo su

Si no tenemos instalado apache lo instalamos.

sudo apt-get update install apache2

Como vamos a utilizar SSL, necesitamos crear los certificados para el servidor web. Para ello, crearemos una carpeta en /tmp, nos cambiaremos a ella y ejecutamos openssl con los parámetros correspondientes.

Ojo! Es importante cuando os pregunte por el common name, indicarle el FQDN del servidor web (por ejemplo micarpetapersonal.dominio.com), ya que tiene que conincidir el common name del certificado con la URL a la hora de conectarnos desde el cliente, como veremos al final. el host miwebpersonal.no-ip.biz debe de estar registrado debidamente en no-ip.com.

sudo mkdir /tmp/sslconf
sudo cd /tmp/sslconf
openssl req -config /etc/ssl/openssl.cnf -new -out server.csr

Esto generará 2 ficheros: privkey.pem y server.csr

Generaremos los certificados (a partir de lo generado):

openssl rsa -in privkey.pem -out server.key
openssl x509 -in server.csr -out server.crt -req -signkey server.key -days 3650
openssl x509 -in server.crt -out server.der.crt -outform DER

y los copiamos a su ubicación definitiva.

cp server.crt /etc/apache2
cp server.key /etc/apache2

Terminamos con los certificados!. Creamos la carpeta que queremos compartir, y ponemos al usuario www-data como owner de la misma.

mkdir -p /var/www/webdav
chown www-data /var/www/webdav

Ahora nos toca crear un usuario del sistema, previamente creado o usar pi que usaremos para validar el acceso a la carpeta (si no lo hiciéramos cualquiera se podria conectar y no queremos eso). Ése usuario se incorporará a un fichero donde estarám los usuarios con acceso a la carpeta compartida, y ese fichero por motivos de seguridad no lo debemos de meter en la misma carpeta compartida. Lo meteremos en /home/www-data. Si no existe la creamos y le damos los permisos

mkdir /home/www-data

chown www-data /home/www-data

chgrp www-data /home/www-data

Agregamos el usuario pi, creando el fichero si no existe ( parámetro -c ) e introducimos la contraseña que se nos pedirá.

htpasswd -c /home/www-data/passwd.dav pi

Cambiaremos los permisos del fichero para que únicamente root y los usuarios en el grupo www-data puedan acceder a él.

chown root:www-data /home/www-data/passwd.dav
chmod 640 /home/www-data/passwd.dav

Vamos a por el Apache!!!!

Activamos lo módulos WebDav y SSL en apache

a2enmod dav_fs
a2enmod dav
a2enmod ssl

Creamos el fichero vacio siguiente

nano /etc/apache2/sites-available/mywebdav-ssl

Copiando/pegando lo siguiente:

<IfModule mod_ssl.c>

<VirtualHost *:443>

ServerAdmin micorreo@dominio.es

# importante!!!!!!. Tiene que coincidir con lo que pusimos en el certificado.

ServerName  micarpetapersonal.dominio.com

# arrancamos el motor ssl y apuntamos hacia los certificados

SSLEngine on
SSLCertificateFile /etc/apache2/server.crt
SSLCertificateKeyFile /etc/apache2/server.key

DocumentRoot /var/www/

Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all

Alias /webdav /var/www/webdav

DAV On
AuthType Basic
AuthName «webdav»

# apuntamos hacia el fichero de configuración

AuthUserFile /home/www-data/passwd.dav
Require valid-user

</VirtualHost>

</IfModule>

Deshabilitamos el site ssl por defecto y habilitamos el nuestro.

a2dissite default-ssl
a2ensite mywebdav-ssl

y recargamos apache2

/etc/init.d/apache2 reload

Ahora ya podremos conectarnos desde un equipo windows (p.e.) mediante crear unidad de red, y colocando la url https://micarpetapersonal.dominio.com/webdav. Nos solicitará usuario (pi) y contraseña y podremos trabajar en ella.

No hay que olvidarse el hacer port_forwarding de nuestro router para que reenvíe el tráfico entrante del puerto 443 a la ip y mismo puerto de nuestra raspberry.

Espero que os haya gustado.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies