Foi lançado o servidor SFTPGo 2.5.0, que permite acesso remoto a arquivos usando os protocolos SFTP, SCP/SSH, Rsync, HTTP e WebDav, assim como fornecer acesso a repositórios Git utilizando o protocolo SSH. Os dados podem ser fornecidos tanto do sistema de arquivos local quanto de armazenamento externo compatível com Amazon S3, Google Cloud Storage e Azure Blob Storage. É possível armazenar dados de forma criptografada. Para armazenar a base de usuários e metadados, são utilizados bancos de dados que suportam SQL ou formato chave/valor, como PostgreSQL, MySQL, SQLite, CockroachDB ou bbolt, mas também há a possibilidade de armazenar metadados na memória, sem necessidade de conexão com um banco de dados externo. O código do projeto é escrito na linguagem Go e é distribuído sob a licença GPLv3.
Na nova versão:
- A interface web agora permite fechar mensagens de erro. Na interface web para administradores, foi adicionada a funcionalidade de pesquisa nos logs de auditoria e exportação de dados deles, além da gestão de listas. endereços IP e redes, foi possibilitada a configuração de SMTP e parâmetros típicos ACME e SFTP. Na interface web do cliente, foi implementado um formulário próprio de login (em vez da autenticação básica), foram adicionadas operações de cópia e removida a limitação sobre o tamanho dos uploads.

- Foi adicionada a suporte a políticas de uso de senhas, por exemplo, é possível definir requisitos de robustez para a senha e estabelecer um tempo de vida para a mesma.
- No EventManager, foi incluída a capacidade de gerar notificações sobre senhas expiradas, implementada a operação de cópia, além de suporte a ações previamente invocadas (pre-*) e manipuladores que são acionados por ações específicas (por exemplo, adicionado um manipulador que é chamado ao entrar o usuário).
- Foi adicionada a possibilidade de conceder direitos de administrador aos usuários.
- A interface de linha de comando agora possui comandos para redefinir a senha do administrador e verificar a funcionalidade do serviço.
- Foi adicionada a suporte a operadores condicionais na execução de renomeações em massa de arquivos no lado dos provedores de nuvem.
- Foi adicionada a suporte ao monitoramento e reinicialização automática. certificados TLS.
- Foi adicionado o recurso de definir tipos MIME personalizados para o WebDAV.
- Para SSH, a autenticação interativa usando teclado está ativada por padrão.
- No modo portátil, agora é possível carregar senhas a partir de um arquivo.
- Suporte experimental para o serviço Terraform adicionado.
Principais recursos do SFTPGo:
- Para cada conta, é aplicada a isolação chroot, que limita o acesso ao diretório pessoal do usuário. É possível criar diretórios virtuais que referenciam dados fora do diretório pessoal do usuário.
- As contas são armazenadas em um banco de dados virtual de usuários, que não se sobrepõe ao banco de dados do sistema. Para o armazenamento do banco de dados de usuários, podem ser utilizados SQLite, MySQL, PostgreSQL, bbolt e armazenamento em memória. Ferramentas são fornecidas para mapear contas virtuais e sistemáticas — é possível um mapeamento direto ou arbitrário (um usuário do sistema pode ser mapeado a outro usuário virtual).
- A autenticação por chaves públicas, chaves SSH e senhas é suportada (incluindo autenticação interativa com a inserção de senha pelo teclado). É possível vincular várias chaves a cada usuário, assim como configurar autenticação multifatorial e de múltiplas etapas (por exemplo, após uma autenticação bem-sucedida com chave, uma senha adicional poderá ser solicitada).
- Para cada usuário, é possível configurar diferentes métodos de autenticação, bem como definir seus próprios métodos que são implementados através da chamada de programas externos de autenticação (por exemplo, para autenticação via LDAP) ou envio de solicitações via HTTP API.
- É possível conectar manipuladores externos ou chamadas de HTTP API para alterar dinamicamente os parâmetros do usuário, chamados antes do login do usuário. A criação dinâmica de usuários durante a conexão é suportada.
- Suporte para cotas individuais em tamanho de dados e número de arquivos.
- Suporte para limitação de largura de banda com configuração separada das restrições para tráfego de entrada e saída, bem como restrições no número de conexões simultâneas.
- Ferramentas de controle de acesso que atuam vinculadas ao usuário ou diretório (é possível restringir a visualização da lista de arquivos, proibir upload, download, sobrescrita, exclusão, renomeação ou alteração de permissões, proibir a criação de diretórios ou links simbólicos, etc.).
- Para cada usuário, é possível definir restrições de rede individuais, por exemplo, permitindo o acesso apenas de determinados IPs ou sub-redes.
- Suporte à conexão de filtros de conteúdo carregado vinculados a usuários e diretórios específicos (por exemplo, é possível bloquear o upload de arquivos com determinadas extensões).
- É possível vincular manipuladores que são acionados durante várias operações com arquivos (upload, exclusão, renomeação etc.). Além da chamada de manipuladores, também é suportado o envio de notificações na forma de solicitações HTTP.
- Encerramento automático de conexões inativas.
- Atualização atômica da configuração sem interrupção de conexões.
- Fornecimento de métricas para monitoramento no Prometheus.
- Suporte ao protocolo HAProxy PROXY para balanceamento de carga ou proxy de conexões para serviços SFTP/SCP sem perda de informações sobre o endereço IP de origem do usuário.
- REST API para gerenciamento de usuários e diretórios, criação de backups e geração de relatórios sobre conexões ativas.
- Interface web (http://127.0.0.1:8080/web) para configuração e monitoramento (também é possível configurar por meio de arquivos de configuração comuns).

- Possibilidade de definir configurações nos formatos JSON, TOML, YAML, HCL e envfile.
- Suporte a conexões SSH com acesso restrito a comandos do sistema. Por exemplo, é permitido executar comandos necessários para o funcionamento do Git (git-receive-pack, git-upload-pack, git-upload-archive) e rsync, além de alguns comandos integrados (scp, md5sum, sha*sum, cd, pwd, sftpgo-copy e sftpgo-remove).
- Modo portável para compartilhamento de um diretório comum com geração automática de credenciais de conexão, anunciadas por meio de multicast DNS.
- Sistema de profiling incorporado para análise de desempenho.
- Processo simplificado de migração de contas de sistema Linux.
- Armazenamento de logs em formato JSON.
- Suporte a diretórios virtuais (por exemplo, o conteúdo de um determinado diretório pode ser entregue não do sistema de arquivos local, mas de um armazenamento em nuvem externo).
- Suporte ao cryptfs para criptografia transparente de dados em tempo real ao serem armazenados no sistema de arquivos e decriptação ao serem entregues.
- Suporte ao encaminhamento de conexões para outros servidores SFTP.
- Possibilidade de usar o SFTPGo como subsistema SFTP para o OpenSSH.
- Possibilidade de armazenar dados de conta e confidenciais em formato criptografado usando servidores KMS (Key Management Services), como Vault, GCP KMS, AWS KMS.
- Suporte para autenticação de dois fatores usando senhas únicas com tempo limitado (TOTP, RFC 6238). Aplicativos como Authy e Google Authenticator podem ser usados como autenticadores.
- Expansão da funcionalidade através de plugins. Por exemplo, existem plugins que suportam serviços adicionais de troca de chaves, integração do esquema Publish/Subscribe, armazenamento e busca de informações sobre eventos em bancos de dados.
Fonte: opennet.ru


