• Crear un servicio FTP compartido 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 compartido entre usuarios locales y usuarios anónimos. La carpeta será accesible por ambos, pero sólo podrán escribir en ella los usuarios que tengan cuenta en el sistema. 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 "FTPCompartido" -IPAddress "*" -Port 21

    Crear la carpeta raíz del sitio:

    mkdir "c:\inetpub\ftproot\FTPCompartido"

    Asignar la carpeta raíz al sitio:

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

    Crear el banner y el mensaje de bienvenida:

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

    Activar la autenticación anónima:

    Set-ItemProperty "IIS:\Sites\FTPCompartido" -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 FTPCompartido -PSPath IIS:\ -Value @{accessType="Allow";users="?";permissions="Read"}

    Activar la autenticación básica:

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

    Crear las reglas de permisos para los usuarios locales:

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

    Permitir la política SSL:

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

    Asignar permisos de lectura a nivel de disco para los usuarios anónimos:

    icacls "C:\inetpub\ftproot\FTPCompartido" /grant "IUSR:(OI)(CI)(R)" /t

    Asignar permisos de lectura y escritura a nivel de disco para las cuentas de usuarios locales:

    icacls "C:\inetpub\ftproot\FTPCompartido" /grant "Cuenta local:(OI)(CI)(M)" /t
    

    Reiniciar el servicio para aplicar los cambios:

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

    OPCIONAL: Permitir en el cortafuegos:

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

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


    Deja una respuesta