Cómo instalar y configurar un servidor FTP en Windows mediante PowerShell

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á:

 

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.
Paso 1. Hacemos el despliegue del servicio de FTP mediante PowerShell
Paso 1. Hacemos el despliegue del servicio de FTP mediante PowerShell

Una vez hecho esto, continuamos la instalación importando el módulo de administración del FTP mediante el comando “Import-Module” (2).

Paso 1. Importamos el módulo de administración del FTP mediante PowerShell
Paso 1. Importamos el módulo de administración del FTP mediante PowerShell

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

Paso 1. Configuramos el site de FTP para el servicio
Paso 1. Configuramos el site de FTP para el servicio

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()

Paso 1. Creamos el grupo de FTP para el servicio
Paso 1. Creamos el grupo de FTP para el servicio

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()

Paso 1. Creamos un usuario para las conexiones de FTP
Paso 1. Creamos un usuario para las conexiones de FTP

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)

Paso 1. Añadimos el usuario de FTP al grupo de FTP del sistema
Paso 1. Añadimos el usuario de FTP al grupo de FTP del sistema

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:

# $FTPSitePath = «IIS:\Sites\$FTPSiteName«
# $BasicAuth = ‘ftpServer.security.authentication.basicAuthentication.enabled’
# Set-ItemProperty -Path $FTPSitePath -Name $BasicAuth -Value $True
# $Param = @{
# Filter = «/system.ftpServer/security/authorization»
# Value = @{
# accessType = «Allow»
# roles = «$FTPUserGroupName«
# permissions = 1
# }
# PSPath = ‘IIS:\’
# Location = $FTPSiteName
# }
# Add-WebConfiguration @param
Paso 1. Configuramos la autenticación básica para nuestro sitio de FTP
Paso 1. Configuramos la autenticación básica para nuestro sitio de FTP

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

Paso 1. Cambiamos la política de SSL y los permisos de ficheros en la carpeta raíz del servidor FTP
Paso 1. Cambiamos la política de SSL y los permisos de ficheros en la carpeta raíz del servidor FTP

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

Paso 1. Reiniciamos el servicio de FTP desde consola de PowerShell
Paso 1. Reiniciamos el servicio de FTP desde consola de PowerShell

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:

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.

Categorías:Servidores

Rellena el formulario y nuestro equipo de Sales contactará contigo lo antes posible.

growth@jotelulu.com  |  +34 911 333 712  |  jotelulu.com 

Puedes darte de baja de estas comunicaciones en cualquier momento.  Consulta nuestra Política de privacidad.