El protocolo FTP es uno de los protocolos más antiguos (tiene más de 40 años), pero todavía se usa ampliamente cuando se requiere un protocolo de transferencia de archivos simple. 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 funciones nuevas. En particular, el servidor FTP en Windows le permite configurar Aislamiento de usuarios de 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). Por lo tanto, se puede evitar el acceso a los datos de otros usuarios en el servidor FTP. El aislamiento de usuario FTP es ampliamente utilizado por proveedores de ISP / hosting cuando es necesario proporcionar acceso individual a un único almacenamiento de archivos para diferentes usuarios.
Como 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 usando la consola del Administrador del servidor marcando la opción Servicio FTP y Extensibilidad 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-Server
Para 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 de 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 ftproot
Para proteger los datos FTP transmitidos a través de la red, es posible configurar SSL para FTP (en este caso, todos los datos y contraseñas / cuentas enviados por los usuarios de ftp durante la sesión estarán encriptados), pero en nuestra demostración esto no es necesario. Todas las demás configuraciones quedan predeterminadas.
Import-Module WebAdministration
# Set the FTP site name
$FTPSiteName="CORP_FTP"
#FTP folder
$FTPRoot="D:wwwFTPRoot"
#FTP port
$FTPPort = 21
New-WebFtpSite -Name $FTPSiteName -PhysicalPath $FTPRoot -Port $FTPPort
Seleccione un nuevo sitio FTP y desactive la Autenticación anónima en el Autenticación FTP sección. Autenticación básica debe estar habilitado.
El servicio FTP en Windows Server 2016/2012 R2 puede utilizar 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 de usuarios. Para que sea más fácil de describir, usaremos cuentas locales de Windows.
Cree algunos usuarios de FTP, suponga que estos son ftp_user1, ftp_user2 y ftp_user3. También crea un grupo ftp_users que incluye a estos usuarios. Puede crear usuarios locales en el Usuarios locales y grupos sección de la Gestión informática consola.
También puede crear usuarios y grupos locales desde el símbolo del sistema (o usando PowerShell). Crea un grupo local:net localgroup ftp_users /add
Cree un nuevo usuario local:net user ftp_user1 /add *
Agregar usuario al grupo:net localgroup ftp_users ftp_user1 /add
Cree los otros dos usuarios de la misma manera.
Asigne los permisos de lectura y escritura en el directorio C: inetpub ftproot para el grupo ftp_users.
Crea un directorio con el nombre LocalUser (el nombre debe ser el mismo, ¡¡¡es importante!!!) en la carpeta C: inetpub ftproot. Luego, cree tres directorios con los nombres ftp_user1, ftp_user2, ftp_user3 en la carpeta C: inetpub ftproot LocalUser.
Tipo de cuenta | Sintaxis de la denominación de directorios de inicio |
Usuarios anónimos | % FtpRoot% LocalUser Public |
Cuenta de Windows local | % FtpRoot% LocalUser % UserName% |
Cuenta de dominio de Windows | % FtpRoot% % UserDomain% % UserName% |
Cuentas especiales de IIS Manager o ASP.NET | % FtpRoot% LocalUser % UserName% |
Regrese a la consola de IIS y cree una nueva regla (Agregar AllowRules) en Reglas de autorización de FTP sección del sitio. Especifique que el grupo ftp_users debe tener los permisos de lectura y escritura.
¿Cómo configurar el aislamiento de usuarios de FTP en Windows Server 2016/2012 R2?
Pasemos a la configuración del 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 FTP le permite organizar su carpeta ftp-home para cada usuario.
Abierto Aislamiento de usuarios de FTP en la configuración del sitio FTP.
Esta sección contiene varias configuraciones. 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 nombres 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 raíz FTP 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 tenga 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 ftp de un usuario está aislada en un directorio físico que tiene el mismo nombre que el nombre de la cuenta de usuario 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 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 configurados en la raíz del sitio FTP (si tienen los permisos NTFS adecuados).
Seleccione el modo de aislamiento requerido (yo uso la segunda opción para aislar a los usuarios de ftp).
Se recomienda 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 del 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 rango 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.
- Abre el Soporte de firewall FTP sección en la configuración del sitio FTP y en la Rango de puertos del canal de datos campo especifique el rango 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 al 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 firewall contenga permisos para el Servidor FTP papel.
Luego, verifique que las siguientes reglas estén habilitadas en la configuración del Firewall de Windows con seguridad avanzada:
- Servidor FTP (entrada de tráfico FTP): protocolo TCP, puerto 21;
- Servidor FTP pasivo (entrada de tráfico pasivo de FTP): dirección del puerto local 1024-65535 (50000-50100 en nuestro caso);
- Servidor FTP seguro (entrada de tráfico FTP SSL): puerto 990 (cuando se utiliza FTP con SSL);
- Servidor FTP (salida de tráfico FTP) - puerto 20;
- Servidor FTP seguro (salida de tráfico FTP SSL): puerto 989 (cuando se utiliza 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 mediante el cmdlet Test-NetConnection:
Test-NetConnection -ComputerName yourftpservername -Port 21
O usando el ftp mando:
ftp yourftpservername
Intente conectarse a su sitio FTP con cualquier cliente FTP o directamente desde el Explorador de archivos (especifique ftp: // nombredeservidor / en la barra de direcciones).
Ingrese 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 huésped como nombre de usuario y 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 público 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 el c: inetpub logs logfiles carpeta en el u_exYYMMDD.log archivos.
Para ver las conexiones de usuario activas a su servidor FTP, puede utilizar los valores de los contadores de rendimiento de IIS a través de PowerShell o el "Sesiones FTP actuales”En la consola de IIS. En esta consola, puede ver los nombres y la dirección IP del usuario de FTP y desconectar la sesión de ftp si es necesario.
Entonces, hemos visto cómo configurar un sitio FTP con el 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.