• Crear un servicio FTP aislado en Windows Server con IIS y PowerShell

    En este hack vamos a utilizar el IIS de Windows Server para, mediante PowerShell, crear un sitio FTP que tenga los usuarios aislados en sus propias carpetas. Los usuarios anónimos compartirán todos la misma carpeta, pero los usuarios locales tendrán cada uno su propia carpeta donde podrán leer y escribir datos, pero no podrán acceder a la carpeta de ningún otro usuario. Vamos allá:

    Instalar el paquete:

    install-windowsfeature web-ftp-server -includemanagementtools -includeallsubfeature

    Importar el módulo WebAdministration:

    Import-Module WebAdministration

    Crear el sitio:

    New-WebFtpSite -Name "FTPAislado" -IPAddress "*" -Port 21

    Crear la carpeta raíz del sitio:

    mkdir "c:\inetpub\ftproot\FTPAislado"

    Asignar la carpeta raíz al sitio:

    Set-ItemProperty "IIS:\Sites\FTPAislado" -Name physicalPath -Value 'C:\inetpub\ftproot\FTPAislado'

    Crear el banner y el mensaje de bienvenida:

    Set-ItemProperty "IIS:\Sites\FTPAislado" -Name ftpServer.messages.bannerMessage -Value "-Servidor FTP Aislado-"
    Set-ItemProperty "IIS:\Sites\FTPAislado" -Name ftpServer.messages.greetingMessage -Value "-Bienvenido al servidor FTP Aislado-"

    Activar la autenticación anónima:

    Set-ItemProperty "IIS:\Sites\FTPAislado" -Name ftpServer.security.authentication.anonymousAuthentication.enabled -Value $true

    Crear las reglas de permisos para los usuarios anónimos:

    Add-WebConfiguration "/system.ftpServer/security/authorization" -Location FTPAislado -PSPath IIS:\ -Value @{accessType="Allow";users="?";permissions="Read"}

    Activar la autenticación básica:

    Set-ItemProperty "IIS:\Sites\FTPAislado" -Name ftpServer.security.authentication.basicAuthentication.enabled -Value $true

    Crear las reglas de permisos para los usuarios locales:

    Add-WebConfiguration "/system.ftpServer/security/authorization" -Location FTPAislado -PSPath IIS:\ -Value @{accessType="Allow";roles="Cuenta local";permissions="Read,Write"}

    Permitir la política SSL:

    Set-ItemProperty "IIS:\Sites\FTPAislado" -Name ftpServer.security.ssl.controlChannelPolicy -Value "SslAllow"
    Set-ItemProperty "IIS:\Sites\FTPAislado" -Name ftpServer.security.ssl.dataChannelPolicy -Value "SslAllow"

    Activar la directiva de aislamiento de usuarios:

    Set-ItemProperty "IIS:\Sites\FTPAislado" -Name ftpServer.userIsolation.mode -Value "IsolateRootDirectoryOnly"

    Crear la carpeta base para los usuarios:

    mkdir C:\inetpub\ftproot\FTPAislado\LocalUser

    Crear la carpeta para los usuarios anónimos:

    mkdir C:\inetpub\ftproot\FTPAislado\LocalUser\Public
    icacls "C:\inetpub\ftproot\FTPAislado\LocalUser\Public" /grant "IUSR:(OI)(CI)(F)" /t

    Crear las carpetas individuales para los usuarios locales:

    mkdir C:\inetpub\ftproot\FTPAislado\LocalUser\Administrador
    icacls "C:\inetpub\ftproot\FTPAislado\LocalUser\Administrador" /grant "Administrador:(OI)(CI)(F)" /t
    mkdir C:\inetpub\ftproot\FTPAislado\LocalUser\usuariox
    icacls "C:\inetpub\ftproot\FTPAislado\LocalUser\usuariox" /grant "UsuarioX:(OI)(CI)(F)" /t

    Crear las carpetas para los usuarios de dominio:

    mkdir "c:\inetpub\ftproot\FTPAislado\NombreDeDominio\NombreDeUsuario"
    icacls "C:\inetpub\ftproot\FTPAislado\NombreDeDominio\NombreDeUsuario" /grant "Dominio\Usuario:(OI)(CI)(F)"

    Reiniciar el servicio para aplicar los cambios:

    Restart-WebItem -PSPath 'IIS:\Sites\FTPAislado'

    OPCIONAL: Permitir en el cortafuegos:

    Set-ItemProperty "IIS:\Sites\FTPAislado" -Name ftpServer.firewallSupport.externalIp4Address -Value "x.x.x.x"

    Si estás buscando crear un servicio FTP compartido en Windows Server con IIS y PowerShell, sigue este otro hack.


    Deja una respuesta