Lançamento do Servidor SFTP SFTPGo 1.0

O primeiro lançamento significativo do servidor ocorreu SFTPGo 1.0, que permite organizar o acesso remoto a arquivos usando os protocolos SFTP, SCP/SSH e Rsync. Entre outras coisas, SFTPGo pode ser usado para fornecer acesso a repositórios Git usando o protocolo SSH. Os dados podem ser transferidos tanto do sistema de arquivos local quanto de armazenamento externo compatível com Amazon S3 e Google Cloud Storage. Para armazenar o banco de dados e metadados do usuário, são utilizados SGBDs com suporte a SQL ou formato chave/valor, como PostgreSQL 9.4+, MySQL 5.6+, SQLite 3.x ou bbolt 1.3.x. Também existe um modo de armazenamento de metadados na RAM, que não requer conexão com um banco de dados externo. O código do projeto é escrito em Go e distribuído por licenciado sob GPLv3.

Características principais:

  • Cada conta é chroot, limitando o acesso ao diretório inicial do usuário. É possível criar diretórios virtuais que façam referência a dados fora do diretório inicial do usuário.
  • As contas são armazenadas em um banco de dados de usuários virtual que não se sobrepõe ao banco de dados de usuários do sistema. SQLite, MySQL, PostgreSQL, bbolt e armazenamento na memória podem ser usados ​​para armazenar bancos de dados de usuários. São fornecidas facilidades para mapear contas virtuais e de sistema - é possível mapear diretamente ou aleatoriamente (um usuário do sistema pode ser mapeado para outro usuário virtual).
  • A autenticação usando chaves públicas, chaves SSH e senhas é suportada (incluindo autenticação interativa com uma senha inserida no teclado). É possível vincular várias chaves para cada usuário, bem como configurar a autenticação multifator e multietapas (por exemplo, no caso de autenticação de chave bem-sucedida, uma senha pode ser solicitada adicionalmente).
  • Para cada usuário é possível configurar diferentes métodos de autenticação, bem como definir métodos próprios, implementados chamando programas autenticadores externos (por exemplo, para autenticação via LDAP) ou enviando solicitações via API HTTP.
  • É possível conectar manipuladores externos ou chamadas de API HTTP para alterar dinamicamente os parâmetros do usuário, chamados antes do login do usuário. Suportado dinâmico criando usuários na conexão.
  • Suporta cotas individuais para tamanho de dados e número de arquivos.
  • Suporte para limitação de largura de banda com configuração separada de restrições para tráfego de entrada e saída, bem como restrições ao número de conexões simultâneas.
  • Ferramentas de controle de acesso que operam em relação a um usuário ou diretório (você pode limitar a visualização de uma lista de arquivos, proibir upload, download, sobrescrever, excluir, renomear ou alterar direitos de acesso, proibir a criação de diretórios ou links simbólicos, etc.).
  • Para cada usuário, você pode definir restrições de rede individuais, por exemplo, você só pode permitir logins de determinados IPs ou sub-redes.
  • Ele suporta a conexão de filtros para conteúdo baixado em relação a usuários e diretórios individuais (por exemplo, você pode bloquear o download de arquivos com uma determinada extensão).
  • É possível vincular manipuladores que são iniciados durante várias operações com um arquivo (baixar, excluir, renomear, etc.). Além de chamar manipuladores, há suporte para o envio de notificações na forma de solicitações HTTP.
  • Encerramento automático de conexões inativas.
  • Atualização de configuração atômica sem interromper conexões.
  • Provisão métricas para monitoramento no Prometheus.
  • O protocolo HAProxy PROXY é compatível para organizar balanceamento de carga ou conexões proxy para serviços SFTP/SCP sem perder informações sobre o endereço IP de origem do usuário.
  • API REST para gerenciar usuários e diretórios, criar backups e gerar relatórios sobre conexões ativas.
  • interface web (http://127.0.0.1:8080/web) para configuração e monitoramento (a configuração por meio de arquivos de configuração regulares também é suportada).
  • Capacidade de definir configurações nos formatos JSON, TOML, YAML, HCL e envfile.
  • apoio conexões via SSH com acesso limitado aos comandos do sistema. Por exemplo, é permitido executar comandos necessários para Git (git-receive-pack, git-upload-pack, git-upload-archive) e rsync, bem como vários comandos integrados (scp, md5sum, sha*sum , cd, pwd, sftpgo-copy e sftpgo-remove).
  • regime portátil para compartilhar um diretório comum com geração automática de credenciais de conexão anunciadas via DNS multicast.
  • Sistema incorporado perfil para análise de desempenho.
  • Simplificado processo migração de contas do sistema Linux.
  • Armazenamento registros no formato JSON.

Fonte: opennet.ru

Adicionar um comentário