Configuración de un servidor FTP con aislamiento de usuario en Windows Server 2016/2012 R2
El protocolo FTP es uno de los protocolos más antiguos (tiene más de 40 años), pero todavía se usa mucho cuando se requiere un protocolo simple de transferencia de archivos. Es posible instalar un servidor FTP en cualquier versión del sistema operativo de Microsoft. La última modernización profunda del servicio ftp se realizó en Windows 7/Server 2008 R2 (en realidad, el código del servicio casi se ha escrito desde cero). La seguridad del servicio ha mejorado significativamente y han aparecido varias características nuevas. En particular, el servidor FTP en Windows le permite configurar el aislamiento de usuario FTP. Permite restringir el acceso de muchos usuarios a sus propias carpetas en un solo servidor FTP.
Debido al aislamiento, los usuarios solo pueden trabajar con sus carpetas y no pueden subir en el árbol de directorios FTP (el directorio de nivel ftp superior del usuario se muestra como la raíz del servidor FTP). Así, se puede impedir el acceso a los datos de otros usuarios en el servidor FTP. El aislamiento de usuarios de FTP es ampliamente utilizado por ISP/proveedores de alojamiento cuando es necesario proporcionar acceso individual a un único almacenamiento de archivos para diferentes usuarios.
Al igual que en versiones anteriores de Windows, el servicio FTP en Windows Server 2016/2012 R2 (no lo confunda con sFTP y TFTP) está basado y profundamente integrado en el servicio IIS y tiene una única interfaz de gestión administrativa.
En este artículo, mostraremos cómo instalar un servidor FTP basado en IIS en Windows Server 2016/2012 R2 y configurar el aislamiento de usuario FTP (este manual también se aplica a Windows 10 y 8.1).
¿Cómo instalar la función del servidor FTP en Windows Server 2016/2012 R2?
Puede instalar el servicio FTP utilizando la consola del Administrador del servidor marcando la opción Servicio FTP y Extensibilidad de FTP en la sección Servidor web (IIS) -> Servidor FTP .
También puede instalar la función del servidor FTP con un solo comando de PowerShell:
Install-WindowsFeature Web-FTP-ServerPara instalar la consola de administración del servidor FTP, ejecute el siguiente comando:
Install-WindowsFeature -Name "Web-Mgmt-Console"Creación de un sitio FTP, gestión de permisos de usuario FTP
Inicie el Administrador del servidor y abra la consola de administración de IIS (Administrador de servicios de información de Internet).
Cree un nuevo sitio FTP (Sitios -> Agregar sitio FTP).
El nombre del sitio FTP: MyTestSite
El directorio raíz del sitio FTP: C:\inetpub tproot
Para proteger los datos de FTP transmitidos a través de la red, es posible configurar FTPS/SSL para FTP (en este caso, todos los datos y contraseñas/cuentas enviadas por los usuarios de ftp durante la sesión serán encriptados), pero en nuestra demostración esto no es necesario. Todas las demás configuraciones se dejan por defecto.
Puede administrar su sitio FTP mediante el módulo de PowerShell WebAdministration. Por ejemplo, para crear un nuevo sitio FTP, simplemente ejecute los comandos:
Import-Module WebAdministration
# Set the FTP site name
$FTPSiteName = 'CORP_FTP'
#FTP folder
$FTPRoot = 'D:\www\FTPRoot'
#FTP port
$FTPPort = 21
New-WebFtpSite -Name $FTPSiteName -PhysicalPath $FTPRoot -Port $FTPPortSeleccione un nuevo sitio FTP y deshabilite la Autenticación anónima en la sección Autenticación FTP.La autenticación básicadebe estar habilitada.
El servicio FTP en Windows Server 2016/2012 R2 puede usar dos tipos de cuenta: dominio o local. Según el tipo de cuenta, existen algunas diferencias en la estructura de los directorios FTP y la configuración de aislamiento del usuario. Para que sea más fácil de describir, usaremos cuentas locales de Windows.
Cree algunos usuarios de FTP, supongamos que estos son ftp_user1, ftp_user2 y ftp_user3. También cree un grupo ftp_users que incluya a estos usuarios. Puede crear usuarios locales en la sección Usuarios y grupos locales de la consola Administración de equipos.
También puede crear usuarios y grupos locales desde el símbolo del sistema (o usando PowerShell). Crear un grupo local:
net localgroup ftp_users /add
Crear un nuevo usuario local:
net user ftp_user1 /add *Agregar usuario al grupo:
net localgroup ftp_users ftp_user1 /addCree los otros dos usuarios de la misma manera.
Asigne los permisos de lectura y escritura en el directorio C:\inetpub tproot para el grupo ftp_users.
Cree un directorio con el nombre LocalUser (el nombre debe ser el mismo, es importante!!! ) en la carpeta C:\inetpub troot. Luego cree tres directorios debajo con los nombres ftp_user1, ftp_user2, ftp_user3 en la carpeta C:\inetpub tproot\LocalUser.
Nota. Según el tipo de cuenta, debe crear las siguientes estructuras de directorios (en %FtpRoot%\ nos referimos a la raíz del sitio FTP; en nuestro caso, es C:\inetpub tproot\):
| Account Type | Syntax of Home Directory Naming |
| Anonymous users | %FtpRoot%\LocalUser\Public |
| Local Windows account | %FtpRoot%\LocalUser\%UserName% |
| Domain Windows account | %FtpRoot%\%UserDomain%\%UserName% |
| Special IIS Manager or ASP.NET accounts | %FtpRoot%\LocalUser\%UserName% |
Regrese a la consola de IIS y cree una nueva regla (Agregar AllowRules) en la sección Reglas de autorización de FTP del sitio. Especifique que el grupo ftp_users debe tener permisos de lectura y escritura.
¿Cómo configurar el aislamiento de usuarios de FTP en Windows Server 2016/2012 R2?
Pasemos a configurar el aislamiento de usuarios de FTP. El aislamiento de los usuarios de FTP se configura en el nivel del sitio FTP, no en todo el servidor. El aislamiento de usuario de FTP le permite organizar su carpeta ftp-home para cada usuario.
Abra Aislamiento de usuario FTP en la configuración del sitio FTP.
Esta sección contiene varios ajustes. Los dos primeros no sugieren el aislamiento del usuario:
directorio raíz de FTP (una sesión FTP de un usuario comienza en el directorio raíz del sitio FTP);
Directorio de nombre de usuario (el usuario comienza con el directorio físico/virtual con el nombre de usuario. Si falta el directorio, se inicia una sesión en el directorio FTP raíz del sitio).
Las siguientes tres opciones son diferentes modos de aislamiento del usuario:
Directorio de nombre de usuario (deshabilitar directorios virtuales globales) sugiere que la sesión ftp de un usuario está aislada en un directorio físico/virtual que tiene el mismo nombre que el usuario ftp. Los usuarios solo ven su propio directorio (es su directorio ftp raíz) y no pueden ir más allá (al directorio superior del árbol FTP). Se ignoran todos los directorios virtuales globales;
Directorio físico de nombre de usuario (habilitar directorios virtuales globales) sugiere que la sesión de ftp de un usuario está aislada en un directorio físico que tiene el mismo nombre que el nombre de la cuenta de usuario de ftp. Un usuario no puede ir por encima de su directorio. Sin embargo, todos los directorios virtuales globales creados están disponibles para el usuario;
Directorio de inicio de FTP configurado en Active Directory: un usuario de FTP está aislado dentro de su directorio de inicio especificado en la configuración de su cuenta de Active Directory (propiedades FTPRoot y FTPDir).
Importante. Si los directorios virtuales globales están activos, todos los usuarios pueden acceder a todos los directorios virtuales establecidos en la raíz del sitio FTP (si tienen los permisos NTFS apropiados).
Seleccione el modo de aislamiento requerido (yo uso la segunda opción para aislar a los usuarios de ftp).
Es recomendable reiniciar el servicio FTP de Microsoft (FTPSVC) con cualquier cambio en la configuración del sitio FTP.
Configuración de las reglas del Firewall de Windows para acceder al servidor FTP
Cuando instala la función de servidor FTP, todas las reglas necesarias para que los usuarios accedan a FTP se activan automáticamente en la configuración del Firewall de Windows.
Para que FTP funcione correctamente en modo FTP pasivo, los usuarios deben conectarse al intervalo de puertos RPC (1025-65535). Para no abrir todos estos puertos en un firewall externo, puede limitar el rango de puertos TCP dinámicos utilizados para la transmisión de datos FTP.
Abra la sección Compatibilidad con cortafuegos de FTP en la configuración del sitio FTP y, en el campo Intervalo de puertos del canal de datos, especifique el intervalo de puertos que desea utilizar para las conexiones FTP. Por ejemplo - 50000-50100;
Guarde los cambios y reinicie IIS (
iisreset);
Abra el Panel de control de Windows y vaya a Panel de control\Sistema y seguridad\Firewall de Windows\Aplicaciones permitidas;
Asegúrese de que la lista de aplicaciones a las que se permite el acceso a través del cortafuegos contenga permisos para la función Servidor FTP.
Luego verifique que las siguientes reglas estén habilitadas en la configuración de Firewall de Windows con seguridad avanzada:
Servidor FTP (FTP Traffic-In) - protocolo TCP, puerto 21;
Servidor FTP pasivo (FTP Passive Traffic-In): dirección del puerto local 1024-65535 (50000-50100 en nuestro caso);
Servidor FTP seguro (FTP SSL Traffic-In) - puerto 990 (cuando se usa FTP con SSL);
Servidor FTP (FTP Traffic-Out) - puerto 20;
Servidor FTP seguro (FTP SSL Traffic-Out): puerto 989 (cuando se usa FTP con SSL).
En consecuencia, estos puertos deben abrirse en su enrutador (puerta de enlace, firewall) para que los usuarios de FTP externos puedan conectarse a su sitio.
Prueba de una conexión de servidor FTP desde Windows
Puede verificar la disponibilidad de puertos en un servidor FTP usando el cmdlet Test-NetConnection:
Test-NetConnection -ComputerName yourftpservername -Port 21O usando el comando ftp:
ftp yourftpservernameIntente conectarse a su sitio FTP con cualquier cliente FTP o directamente desde el Explorador de archivos (especifique ftp://yourservername/ en la barra de direcciones).
Introduzca el nombre de usuario y la contraseña.
Y ahora tiene acceso al directorio de inicio con los archivos del usuario (que es la raíz del sitio FTP para el usuario). Como podemos ver, la sesión del usuario está aislada y el usuario solo ve sus archivos en el servidor ftp.
Consejo. Si desea utilizar el acceso anónimo (Todos los usuarios anónimos), cualquier usuario podrá conectarse a su servidor FTP utilizando las credenciales: anónimo o invitado como el nombre de usuario y la dirección de correo electrónico como contraseña. Si se conecta a un sitio FTP de forma anónima, la sesión se limitará al directorio LocalUser\Public (es obvio, el directorio Public debe crearse con anticipación).
Puede utilizar los registros de FTP para ver información sobre el acceso de los usuarios al servidor FTP. Los archivos de registro se almacenan de forma predeterminada en la carpeta c:\inetpub\logs\logfiles en los archivos u_exYYMMDD.log.
Para ver las conexiones activas de los usuarios a su servidor FTP, puede usar los valores de los contadores de rendimiento de IIS a través de PowerShell o la sección "Sesiones FTP actuales" en la consola de IIS. En esta consola, puede ver los nombres y la dirección IP de los usuarios de FTP y desconectar la sesión de ftp si es necesario.
Por lo tanto, hemos visto cómo configurar un sitio FTP con aislamiento de usuario basado en Windows Server 2016/2012 R2. En el modo de aislamiento, los usuarios se autentican en FTP utilizando sus credenciales locales o de dominio para acceder a su directorio raíz correspondiente al nombre de usuario.



















