Se ha publicado la versión del servidor SFTPGo 2.5.0, que permite organizar el acceso remoto a archivos utilizando los protocolos SFTP, SCP/SSH, Rsync, HTTP y WebDav, así como proporcionar acceso a repositorios de Git utilizando el protocolo SSH. Los datos pueden provenir tanto del sistema de archivos local como de almacenes externos compatibles con Amazon S3, Google Cloud Storage y Azure Blob Storage. Es posible almacenar datos en formato cifrado. Para almacenar la base de usuarios y los metadatos se utilizan bases de datos que soportan SQL o formato clave/valor, tales como PostgreSQL, MySQL, SQLite, CockroachDB o bbolt, pero también existe la posibilidad de almacenar metadatos en memoria, sin necesidad de conectar a una base de datos externa. El código del proyecto está escrito en el lenguaje Go y se distribuye bajo la licencia GPLv3.
En la nueva versión:
- En la interfaz web se ha añadido la opción de cerrar mensajes de error. Se ha agregado soporte para la búsqueda en el registro de auditoría y la exportación de datos desde él en la interfaz web para administradores, así como la gestión de listas direcciones IP y redes, se ha proporcionado la posibilidad de configurar SMTP y parámetros estándar de ACME y SFTP. En la interfaz web del cliente se ha implementado un formulario de inicio de sesión propio (en lugar de la autenticación básica), se han añadido operaciones de copia y se ha eliminado la restricción en el tamaño de las cargas.

- Se ha añadido soporte para políticas de uso de contraseñas, por ejemplo, se pueden definir los requisitos de robustez de la contraseña y establecer el tiempo de vida de la misma.
- En EventManager se ha añadido la posibilidad de enviar notificaciones sobre contraseñas caducadas, se ha implementado la operación de copia, se ha añadido soporte para acciones predefinidas (pre-*) y manejadores que se activan en ciertas acciones (por ejemplo, se ha añadido un manejador que se activa al iniciar sesión el usuario).
- Se ha añadido la posibilidad de otorgar derechos de administrador a los usuarios.
- En la interfaz de línea de comandos se han añadido comandos para restablecer la contraseña del administrador y verificar el funcionamiento del servicio.
- Se ha añadido soporte para operadores condicionales al realizar el renombrado masivo de archivos en proveedores de nube.
- Se ha añadido soporte para el seguimiento y reinicio automático de certificados TLS.
- Se ha agregado la posibilidad de definir tipos MIME propios para WebDAV.
- Para SSH, por defecto se ha habilitado la autenticación interactiva mediante teclado.
- En el modo portátil, se ha añadido la opción de cargar contraseñas desde un archivo.
- Se ha añadido soporte experimental para el servicio Terraform.
Principales características de SFTPGo:
- Se aplica aislamiento chroot a cada cuenta, limitando el acceso al directorio principal del usuario. Es posible crear directorios virtuales que hagan referencia a datos fuera del directorio principal del usuario.
- Las cuentas se almacenan en una base de datos virtual de usuarios, que no se cruza con la base de datos de usuarios del sistema. Para el almacenamiento de la base de datos de usuarios se pueden utilizar SQLite, MySQL, PostgreSQL, bbolt y almacenamiento en memoria. Se proporcionan herramientas para asociar cuentas virtuales y del sistema, permitiendo la asociación directa o arbitraria (un usuario del sistema puede estar asociado a otro usuario virtual).
- Se admite la autenticación mediante claves públicas, claves SSH y contraseñas (incluida la autenticación interactiva con entrada de contraseña desde el teclado). Es posible vincular múltiples claves para cada usuario, así como configurar autenticación multifactor y escalonada (por ejemplo, en caso de autenticación exitosa con clave, se puede solicitar adicionalmente una contraseña).
- Para cada usuario, es posible configurar diferentes métodos de autenticación, así como definir métodos propios implementados a través de la llamada a programas externos de autenticación (por ejemplo, para autenticación mediante LDAP) o mediante solicitudes a través de la API HTTP.
- Es posible conectar controladores externos o llamadas a la API HTTP para cambiar dinámicamente los parámetros del usuario, utilizando antes de que el usuario inicie sesión. Se admite la creación dinámica de usuarios al conectarse.
- Soporte para cuotas individuales en tamaño de datos y número de archivos.
- Soporte para limitación de ancho de banda con configuración separada de restricciones para tráfico entrante y saliente, así como restricciones en el número de conexiones simultáneas.
- Herramientas de control de acceso, vinculadas al usuario o al directorio (se puede restringir la visualización de la lista de archivos, prohibir cargas, descargas, sobrescrituras, eliminaciones, renombramientos o cambios en los permisos, así como prohibir la creación de directorios o enlaces simbólicos, etc.).
- Se pueden definir restricciones de red individuales para cada usuario, por ejemplo, se puede permitir el acceso solo desde ciertas IP o subredes.
- Se admite la conexión de filtros de contenido cargado vinculados a usuarios y directorios específicos (por ejemplo, se pueden bloquear las cargas de archivos con ciertas extensiones).
- Es posible vincular controladores que se ejecuten durante varias operaciones con archivos (carga, eliminación, renombrado, etc.). Además de llamar a los controladores, se admite el envío de notificaciones en forma de solicitudes HTTP.
- Cierre automático de conexiones inactivas.
- Actualización atómica de la configuración sin romper conexiones.
- Proporcionar métricas para monitoreo en Prometheus.
- Se admite el protocolo HAProxy PROXY para organizar el balanceo de carga o el proxy de conexiones a servicios SFTP/SCP sin perder la información sobre la IP de origen del usuario.
- REST API para gestionar usuarios y directorios, crear copias de seguridad y generar informes sobre conexiones activas.
- Interfaz web (http://127.0.0.1:8080/web) para configuración y monitoreo (también se admite la configuración a través de archivos de configuración normales).

- Posibilidad de definir configuraciones en formatos JSON, TOML, YAML, HCL y envfile.
- Soporte para conexiones SSH con acceso restringido a comandos del sistema. Por ejemplo, se permite ejecutar comandos necesarios para el funcionamiento de Git (git-receive-pack, git-upload-pack, git-upload-archive) y rsync, así como varios comandos integrados (scp, md5sum, sha*sum, cd, pwd, sftpgo-copy y sftpgo-remove).
- Modo portable para compartir un único directorio común con generación automática de credenciales de conexión, anunciadas a través de multicast DNS.
- Sistema de perfilado incorporado para análisis de rendimiento.
- Proceso simplificado de migración de cuentas de usuario de Linux.
- Almacenamiento de registros en formato JSON.
- Soporte para directorios virtuales (por ejemplo, el contenido de un directorio específico se puede servir no desde el sistema de archivos local, sino desde un almacenamiento en la nube externo).
- Soporte para cryptfs para cifrado transparente de datos sobre la marcha al guardarlos en el sistema de archivos y descifrado al ser servido.
- Soporte para el forwarding de conexiones a otros servidores SFTP.
- Posibilidad de usar SFTPGo como subsistema SFTP para OpenSSH.
- La posibilidad de almacenar datos de cuentas y confidenciales de forma cifrada utilizando servidores KMS (Key Management Services), como Vault, GCP KMS, AWS KMS.
- Soporte para autenticación de dos factores utilizando contraseñas de un solo uso con tiempo limitado (TOTP, RFC 6238). Aplicaciones como Authy y Google Authenticator pueden ser utilizadas como autenticadores.
- Ampliación de funcionalidades a través de plugins. Por ejemplo, hay plugins disponibles que soportan servicios adicionales de intercambio de claves, integración del esquema Publish/Subscribe, almacenamiento y búsqueda de información sobre eventos en bases de datos.
Fuente: opennet.ru


