Si quieres saber cómo instalar y configurar un servidor FTP en Windows mediante PowerShell acompáñanos a lo largo de este breve tutorial donde lo haremos en sencillos pasos.
Este tutorial complementa el que ya hicimos a través del entorno gráfico y que titulamos Cómo instalar y configurar un servidor FTP en Windows (IIS).
NOTA: Delante de todas las líneas se ha añadido una almohadilla (#) que se pone por razones de seguridad, ya que en caso de copiar una de estas líneas por error no se ejecutará (La almohadilla se usa para comentar código por lo que se convierte en no ejecutable). Para poder ejecutarse, se debe retirar el carácter “#” de todas las líneas.
¿Cómo instalar y configurar un servidor FTP en Windows mediante PowerShell?
Pre-requisitos o pre-configuración.
Para completar de forma satisfactoria este tutorial y poder instalar y configurar un servidor FTP en Windows mediante PowerShell se necesitará:
- Por un lado, estar dado de alta en la Plataforma Jotelulu con una organización y estar registrado en la misma tras hacer Log-in.
- Por otro lado, haber dado de alta una suscripción de Servidores
- Tener un servidor Windows operativo dentro de la suscripción.
Paso 1. Instalar y configurar un servidor FTP en Windows mediante PowerShell
Lo primero que haremos será instalar la funcionalidad de FTP server, para lo que se deberá arrancar la consola de PowerShell, o la de PowerShell ISE. Tal como comento últimamente, lo más deseable sería usar ISE (por así decirlo el IDE de Microsoft), ya que nos permite hacer test, ver donde falla, etc.
Una vez en la consola (o ISE) de PowerShell, se deberán ejecutar los comandos “Install-WindowsFeature” (1).
# Install-WindowsFeature Web-FTP-Server -IncludeAllSubFeature
# Install-WindowsFeature Web-Server -IncludeAllSubFeature -IncludeManagementTools
# Import-Module WebAdministration
Donde:
- El comando “Install-WindowsFeature” instala la funcionalidad de Windows que le pasemos como parámetro.
- El modificador “-IncludeAllSubFeature” instala todas las opciones que tenga la funcionalidad de Windows.
- El modificador “-IncludeManagementTools” instala las herramientas administrativas de esa funcionalidad.
Una vez hecho esto, continuamos la instalación importando el módulo de administración del FTP mediante el comando “Import-Module” (2).
A continuación, se configura el nuevo sitio FTP para dar servicio.
Este tendrá una serie de características que se deberán configurar, pudiendo lanzarse directamente un comando como el siguiente:
# New-WebFtpSite -Name <Nombre_Site> -Port <Puerto_Escucha> -PhysicalPath <Ruta_Datos>
Donde:
- El comando “New-WebFtpSite” despliega el nuevo site de FTP.
- “-Name <Nombre_Site>” describe el nombre que le daremos al site de FTP.
- “-Port <Puerto_Escucha>” es un número que indica por que puerto escucha el FTP.
- “-PhysicalPath <Ruta_Datos>” es la ruta del servidor donde están los datos del FTP.
De esta manera, podría quedar así:
# New-WebFtpSite -Name ‘FTP Site Nacho’ -Port ‘21’ -PhysicalPath ‘C:\datos\ftproot’
Podríamos sustituir directamente ahí y tendríamos la configuración hecha, pero esto es un poco chapuza, por lo que se suelen utilizar variables para poder mejorar el uso en futuras ocasiones.
Para tener más organizado todo, crearemos unas variables, tal como comentábamos, que serán las siguientes:
- “-Name <Nombre_Site>” describe el nombre que le daremos al site de FTP, siendo la variable “$Name”.
- “-Port <Puerto_Escucha>” es un número que indica porque puerto escucha el FTP, siendo la variable “$Port”.
- “-PhysicalPath <Ruta_Datos>” es la ruta del servidor donde están los datos del FTP, siendo la variable “$Root”.
Teniendo esto en cuenta, se configura todo y se terminan ejecutando los siguientes comandos (3):
# $Name = ‘FTP Site Nacho’
# $Root = ‘C:\datos\ftproot’
# $Port = 21
# New-WebFtpSite -Name $Name -Port $Port -PhysicalPath $Root
En este momento ya se ha instalado en servidor de FTP en sí, y quedará configurar, añadir usuarios, repositorios, asegurándolo, etc.
En este punto, parar mí, lo primero sería crear un usuario (y su grupo asociado) para poder probar que podemos hacer la conexión y no simple. Así, si después lo aseguramos cerrando puertos o configurando certificados, estaremos seguros de que esta parte estaba funcionando.
En este caso, primero creamos un grupo para los usuarios con capacidad de conectar al FTP, ya que es mejor crear un grupo al que se puedan añadir después.
Para crear el grupo de FTP (4) usamos:
# $FTPUserGroupName = «Usuarios de FTP»
# $ADSI = [ADSI]»WinNT://$env:ComputerName»
# $FTPUserGroup = $ADSI.Create(«Group», «$FTPUserGroupName»)
# $FTPUserGroup.SetInfo()
# $FTPUserGroup.Description = «Los miembros de este grupo pueden conectar al FTP»
# $FTPUserGroup.SetInfo()
En este caso, haremos uso de los comandos de ADSI para el despliegue del grupo, usando como siempre ciertas variables para hacer más sencilla la configuración.
Lo siguiente sería crear el usuario con el que se van a hacer las conexiones al FTP (5).
# $FTPUserName = «ftpnacho»
# $FTPPassword = ‘Contrasenya123!’
# $CreateUserFTPUser = $ADSI.Create(«User», «$FTPUserName»)
# $CreateUserFTPUser.SetInfo()
# $CreateUserFTPUser.SetPassword(«$FTPPassword»)
# $CreateUserFTPUser.SetInfo()
Una vez hecho esto, se debe añadir en el grupo de FTP del sistema (6), ejecutando para ello:
# $UserAccount = New-Object System.Security.Principal.NTAccount(«$FTPUserName»)
# $SID = $UserAccount.Translate([System.Security.Principal.SecurityIdentifier])
# $Group = [ADSI]»WinNT://$env:ComputerName/$FTPUserGroupName,Group»
# $User = [ADSI]»WinNT://$SID»
# $Group.Add($User.Path)
En este momento se debe habilitar la autenticación básica del sitio FTP y a continuación autorizar al grupo de Windows (7) que contiene al usuario FTP para que pueda tener acceso al sitio FTP y por tanto pueda hacer uso del servicio.
Para ello se debe ejecutar los siguientes comandos:
El siguiente paso es cambiar la política de SSL y los permisos de ficheros (NTFS) en la carpeta raíz del servidor FTP (8), o sea, donde se guardan todos los ficheros subidos por los usuarios del servicio.
Para ello ejecutamos los siguientes comandos:
# $SSLPolicy = @(
# ‘ftpServer.security.ssl.controlChannelPolicy’,
# ‘ftpServer.security.ssl.dataChannelPolicy’
# )
# Set-ItemProperty -Path $FTPSitePath -Name $SSLPolicy[0] -Value $false
# Set-ItemProperty -Path $FTPSitePath -Name $SSLPolicy[1] -Value $false
El siguiente paso para dar es lanzar los siguientes comandos para configura los permisos NTFS en la carpeta raíz y así permitir que puedan acceder y trabajar sobre esta carpeta aquellos usuarios que pertenezcan al grupo de FTP.
# $UserAccount = New-Object System.Security.Principal.NTAccount(«$FTPUserGroupName»)
# $AccessRule = [System.Security.AccessControl.FileSystemAccessRule]::new($UserAccount,
# ‘ReadAndExecute’,
# ‘ContainerInherit,ObjectInherit’,
# ‘None’,
# ‘Allow’
# )
# $ACL = Get-Acl -Path $FTPRootDir
# $ACL.SetAccessRule($AccessRule)
# $ACL | Set-Acl -Path $FTPRootDir
Por último, para que todos los cambios tomen efecto debe reiniciar la instancia del FTP (9), para ello se debe ejecutar:
# Restart-WebItem «IIS:\Sites\$Name» -Verbose
Con esto ya se ha terminado el proceso de configuración del FTP.
Conclusiones y próximos pasos:
A lo largo de este tutorial hemos visto como realizar la instalación y configurar un servidor FTP en Windows mediante PowerShell dentro de uno de los servidores Windows albergados dentro de Jotelulu.
Si lo que has leído hasta ahora, te ha resultado interesante puedes profundizar más sobre algunos servicios relacionados, es posible que los siguientes tutoriales te interesen:
- Cómo desplegar un nuevo servidor en Jotelulu.
- Cómo crear un túnel VPN site-to-site en Jotelulu.
- Cómo crear plantillas en un servidor para reutilizarlas en Escritorio Remoto.
- Cómo crear un VPC y asociar un TIER en Jotelulu.
Esperamos que, con esta pequeña guía, no tengas problemas al configurar tu servidor FTP de manera rápida y funcional, pero si los tuvieras, no dudes en contactar con nosotros para que podamos echarte una mano.
Gracias por tu confianza.