FileZilla
En Windows Server
Last updated
Was this helpful?
En Windows Server
Last updated
Was this helpful?
Voy a utilizar el servidor de Windows Server 2016 que tengo instalado y que brinda servicio de DNS y DHCP.
Características:
Windows Server 2016
FileZilla server, versión1.5.1
trantor.local
dominio del servidor
IP LAN
192.168.5.100
La IP estática del servidor
IP WAN
192.168.X.Y
La IP otorgada por el DHCP del router de casa
DNS
DHCP
192.168.5.20 - 192.168.5.40
rango de IP
Los grupos a crear son:
Crear dos usuarios para los dos grupos previamente creados y asignar un usuario a cada uno. FileZilla Server utiliza un sistema de archivos virtual bajo el cual los archivos y directorios estarán disponibles para aquellos usuarios conectados al servidor FTP.
La llamada ruta virtual
es la ubicación en el sistema de archivos virtual al que se asignará el directorio nativo
y su contenido. De este modo, lo que se visualiza a través de FTP es independiente de la estructura del sistema de archivos nativo subyacente.
Importante tener control del log file. En caso de errores, ahí es donde tenemos que entrar a analizar qué es lo que puede estar fallando. Esto es:
C:\Program Files\FileZilla Server\Logs\filezilla-server.log
El servicio de FTP soporta dos modos de establecimiento de la conexión: modo activo y modo pasivo.
El modo pasivo es el modo recomendado para la mayoría de los clientes. En este modo, el equipo cliente pregunta al servidor de FileZilla a qué puerto del servidor debe conectarse. Por el contrario, el modo activo no requiere de configuración en el lado del servidor.
En el modo pasivo es necesario establecer un rango de puertos a utilizar por el servidor para las conexiones de datos. Me voy a quedar con el rango de puertos por defecto de 49512
al 65534
.
Las recomendaciones del asistente nos dice que en caso de tener el servidor de FileZilla conectado a la red externa a través de un router NAT
, entonces debemos especificar la IP externa o el nombre de host desde el que se puede acceder al servidor de FileZilla. En este punto podemos ingresar la IP pública, el nombre de host o dejarlo vacío en cuyo caso FileZilla utilizará la IP local.
Utilizaremos la IP estática del servidor: 192.168.5.100
y clicamos en Usar la IP local para la conexiones locales, que es lo recomendado y justo lo que probaremos.
Lo siguiente que debemos hacer será abrir los puertos necesarios en el firewall.
Vamos a crear una nueva regla de entrada y salida que permita la conexión del protocolo TCP
a los puertos del rango previamente establecido, esto es: del 49512
al 65534
.
Una vez hecho esto ya estamos en condiciones de testear la conexión con el servidor.
Aunque no tiene mucho sentido realizar la prueba de conectividad desde el propio servidor, al menos no sirve para testear la configuración básica del servicio de FTP, sin certificado de seguridad:
Para ello, desde el propio CMD podemos hacer:
ftp 192.168.5.100
Nos pedirá usuario y contraseña y como vemos nos ha dado un mensaje de bienvenida que ya había establecido anteriormente.
Desde el cliente podemos testear la conexión tanto desde el cliente de FileZilla como desde la línea de comandos, haciendo exactamente lo mismo que en el caso anterior.
A modo de mostrar la conexión establecida os muestro un pantallazo de Wireshark, instalado en el cliente de Windows 10, que muestra:
IP del equipo cliente: 192.168.5.20
IP del servidor de FTP: 192.168.5.100
Usuario: pepa
Esta configuración tiene un grave inconveniente como podéis observar y es que no tiene seguridad y los datos se transmiten en texto plano. Esto sería inadmisible en un entorno real, con lo cual tenemos que configurar el servicio.
¿Pudiéramos conectarnos desde una app en nuestro móvil?
En el PowerShell, vamos a crear un certificado raíz firmado de modo automático con el nombre "FTPCert
" y que se instalará automáticamente en Certificates-Current User\Personal\Certificates.
Para ver el certificado escribe certmgr.msc
, o bien busca Administrar certificados de usuario
.
$cert = New-SelfSignedCertificate -Type Custom -KeySpec Signature -Subject "CN=FTPCert" -KeyExportPolicy Exportable -HashAlgorithm sha256 -KeyLength 2048 ` -CertStoreLocation "Cert:\CurrentUser\My" -KeyUsageProperty Sign -KeyUsage CertSign
Cada equipo cliente que se conecta debe tener instalado un certificado (de cliente). Es posible generarlo desde un certificado raíz auto firmado y, más tarde, exportar e instalarlo, puesto que de no encontrarlo se producirá un error de autenticación.
Desde el mismo certificado raíz se pueden generar varios certificados de cliente. En este caso, el certificado de cliente se instala automáticamente en el equipo que se usó para generar el certificado. Para instalar un certificado de cliente en otro equipo, es posible exportar el certificado.
El ejemplo siguiente genera un certificado de cliente con el nombre "FTPChildCert". Puedes modificar el nombre del certificado secundario, modificando el valor CN.
El certificado de cliente que se genera se instala en Certificates - Current User\Personal\Certificates
.
New-SelfSignedCertificate -Type Custom -DnsName FTPChildCert -KeySpec Signature -Subject "CN=FTPChildCert" -KeyExportPolicy Exportable -HashAlgorithm sha256 -KeyLength 2048 -CertStoreLocation "Cert:\CurrentUser\My" -Signer $cert -TextExtension @("2.5.29.37={text}1.3.6.1.5.5.7.3.2")
Si vas a crear otros certificados de clientes, o en caso de no usar la misma sesión de PowerShell que has utilizado previamente para crear el certificado raíz auto firmado, entonces:
Identifica el certificado raíz auto firmado que se instaló en el equipo. Para ello haz lo siguiente y verás una lista de certificados instalados en el equipo.
Get-ChildItem -Path "Cert:\CurrentUser\My"
Busca el nombre del firmante de la lista devuelta. Después, busca la huella digital que se encuentra en un archivo de texto. El nombre CN es el nombre del certificado raíz auto firmado a partir del que va a generar un certificado secundario. En nuestro caso, "FTPCert
".
Declara una variable para el certificado raíz con la huella digital del paso anterior. Reemplaza la huella digital con la del certificado raíz a partir del que va a generar un certificado secundario.
$cert = Get-ChildItem -Path "Cert:\CurrentUser\My\AED812AD883826FF76B4D1D5A77B3C08EFA79F3F"
Modifica y ejecuta el comando siguiente para generar un certificado de cliente. El resultado es un certificado de cliente con el nombre "FTPCert
" y se instala automáticamente en la ruta del equipo Certificates - Current User\Personal\Certificates
.
New-SelfSignedCertificate -Type Custom -DnsName FTPCert -KeySpec Signature -Subject "CN=FTPChildCert" -KeyExportPolicy Exportable -HashAlgorithm sha256 -KeyLength 2048 -CertStoreLocation "Cert:\CurrentUser\My" -Signer $cert -TextExtension @("2.5.29.37={text}1.3.6.1.5.5.7.3.2")
Una vez creado el certificado raíz, se puede exportar el archivo .cer de clave pública. Este archivo se cargará más adelante en Azure. Esto es:
Abre el Administrar certificados de usuario
.
Busca el certificado raíz auto firmado en Certificados - Usuario actual\Personal\Certificados
Haz clic en Todas las tareas
y, luego, en Exportar
.
Abre el Asistente para exportar certificados
.
Sigue las indicaciones del Asistente y selecciona No exportar la clave privada
En Formato de archivo de exportación
, selecciona X.509 codificado base 64 (.CER)
Haz clic en clic en Examinar
para buscar una ruta adecuada.
En caso de querer exportar el certificado auto firmado para tener una copia de seguridad necesitas seguir los pasos anteriores pero exportando el archivo .pfx
.
Al generar un certificado cliente, éste se instala automáticamente en el equipo utilizado para generarlo. Pero en caso de querer instalarlo en otro equipo cliente, éste se debe exportar.
Exportar
certificado cliente:
Abre el Administrar certificados de usuario.
Haz clic en Todas las tareas y en Exportar para abrir el Asistente para exportar certificados.
Selecciona Exportar la clave privada.
Deja seleccionados los valores predeterminados
En Seguridad , debes usar una contraseña para proteger la clave privada.
Establece la ubicación
Una vez exportado el certificado:
Busca y copia el archivo .pfx en el equipo cliente.
Haz doble clic en el archivo .pfx para instalarlo. Deja la Ubicación del almacén como Usuario actual y selecciona Siguiente.
En File to import no hagas cambios.
En Protección de clave privada, escribe la contraseña del certificado
En el Almacén de certificados, deja la ubicación predeterminada
Finalizar