ID-DEB-001 - Configuração Do Servidor SFTP Para Consignado

ID: KB-ID-DEB-001

Responsável: Thiago Amaral, TI

Status: Publicado

Última Atualização: 16/09/2025


Propósito

Padronizar e guiar o time de Suporte TI Nível 1 na criação, configuração e gerenciamento de um servidor SFTP, incluindo a criação de usuários com acesso restrito a diretórios específicos via autenticação por chave SSH.

Aplica-se a

  • Time de Suporte TI Nível 1 da Fictor.

  • Servidores Linux designados para operar como SFTP.

Pré-requisitos

  • Acesso com permissões sudo ao servidor Linux.

  • Conhecimento básico de comandos de terminal e do editor de texto vim.

  • Um cliente SFTP (como WinSCP) instalado na máquina local para testes de conexão.


Instruções

Este procedimento é dividido em etapas: criação de grupos e usuários, configuração de diretórios, autenticação por chave e configuração do cliente.

1. Criação de Grupos e Usuários Base

Primeiro, crie um grupo geral para usuários de SFTP e um usuário de exemplo.

  1. Crie um grupo principal para todos os usuários SFTP:

    sudo groupadd sftp-group
  2. Crie um novo usuário (ex: sftpuser):

    sudo useradd sftpuser
  3. Adicione o usuário ao grupo recém-criado:

    sudo usermod -aG sftp-group sftpuser
  • Para verificar, use o comando groups sftpuser.

2. Configuração da Estrutura de Diretórios e Permissões

Crie uma estrutura de pastas para os uploads e configure grupos específicos para cada diretório, garantindo que os usuários só acessem as áreas permitidas.

  1. Defina as permissões do diretório de upload principal. O proprietário deve ser root e o grupo sftp-group:

    sudo chown root:sftp-group /srv/sftp/uploads
    sudo chmod 750 /srv/sftp/uploads
  2. Crie os grupos departamentais que terão acesso a subpastas específicas:

    sudo groupadd operations
    sudo groupadd products
    sudo groupadd has-health
    sudo groupadd asset-sinqia
  3. Ajuste a propriedade e as permissões de cada subpasta para o respectivo grupo. O modo `770` permite que o dono (`root`) e os membros do grupo leiam, escrevam e executem, mas ninguém mais.

    # Permissões para Operações
    sudo chown root:operations "/srv/sftp/uploads/Operações"
    sudo chmod 770 "/srv/sftp/uploads/Operações"
    
    # Permissões para Produtos
    sudo chown root:products /srv/sftp/uploads/Produtos
    sudo chmod 770 /srv/sftp/uploads/Produtos
    
    # Permissões para Tem Saúde
    sudo chown root:has-health "/srv/sftp/uploads/Tem Saúde"
    sudo chmod 770 "/srv/sftp/uploads/Tem Saúde"
    
    # Permissões para Asset E SINQIA
    sudo chown root:asset-sinqia "/srv/sftp/uploads/Asset E SINQIA"
    sudo chmod 770 "/srv/sftp/uploads/Asset E SINQIA"
  4. Adicione um usuário aos grupos específicos para conceder acesso às pastas:

    # Exemplo: Dar à usuária 'silvania' acesso a três diretórios
    sudo usermod -aG operations,products,has-health silvania

3. Configuração da Autenticação por Chave SSH

Para aumentar a segurança, o login será feito com um par de chaves SSH em vez de senha.

  1. Na sua máquina local (não no servidor), gere um par de chaves para o usuário:

    ssh-keygen -t ed25519 -f sftpuser_ssh_key
    • Isso criará dois arquivos: `sftpuser_ssh_key` (chave privada) e `sftpuser_ssh_key.pub` (chave pública).

  2. No servidor, crie a estrutura de diretórios `home` e `.ssh` para o usuário:

    sudo mkdir -p /home/sftpuser/.ssh
    sudo usermod -d /home/sftpuser sftpuser
  3. Ajuste a propriedade e as permissões dos diretórios criados:

    sudo chown sftpuser:sftpuser /home/sftpuser
    sudo chmod 700 /home/sftpuser
    sudo chown sftpuser:sftpuser /home/sftpuser/.ssh
    sudo chmod 700 /home/sftpuser/.ssh
  4. Crie o arquivo authorized_keys e cole o conteúdo da chave pública (sftpuser_ssh_key.pub) dentro dele:

    sudo touch /home/sftpuser/.ssh/authorized_keys
    sudo vim /home/sftpuser/.ssh/authorized_keys
  5. Ajuste as permissões do arquivo authorized_keys

    sudo chmod 600 /home/sftpuser/.ssh/authorized_keys
    sudo chown sftpuser:sftpuser /home/sftpuser/.ssh/authorized_keys

4. Restringir o Acesso do Usuário ao Diretório (Chroot)

Edite a configuração do serviço SSH para "prender" (chroot) o usuário em seu diretório designado ao fazer login.

  1. Abra o arquivo de configuração do SSH:

    sudo vim /etc/ssh/sshd_config
  2. Adicione o seguinte bloco no final do arquivo:

    Match User sftpuser
    ChrootDirectory /srv/sftp/uploads
    ForceCommand internal-sftp
    AllowTcpForwarding no
  3. Reinicie o serviço SSH para aplicar as alterações:

    sudo systemctl restart sshd

5. Conectar via Cliente SFTP (WinSCP)

Instrua o usuário final a configurar seu cliente SFTP.

  1. Envie o arquivo da chave privada (sftpuser_ssh_key) para o usuário de forma segura.

  2. No WinSCP, o usuário deve clicar em Nova Sessão.

  3. Preencha os campos da seguinte forma: * Host: fictor.suporte.com.br * Porta: 22 * Usuário: sftpuser (ou o nome de usuário criado)

  4. Para adicionar a chave privada, clique em Avançado.

  5. Navegue até SSH > Autenticação.

  6. No campo Arquivo de Chave Privada, selecione o arquivo sftpuser_ssh_key que você enviou.

  7. Clique em Ok e, em seguida, em Login.


Resultado Esperado

Ao final do processo, um usuário SFTP consegue se conectar ao servidor usando uma chave SSH e terá acesso de leitura e escrita apenas nos diretórios para os quais seu usuário foi explicitamente autorizado (Operações, Produtos, etc.), sem conseguir navegar para outras partes do sistema de arquivos do servidor.

Solução de Problemas

  • Problema/Erro: Falha na autenticação ou erro "Permission denied".

    • Solução: Verifique triplamente as permissões nos diretórios e arquivos do usuário no servidor: /home/sftpuser (deve ser 700), /home/sftpuser/.ssh (deve ser 700), e /home/sftpuser/.ssh/authorized_keys (deve ser 600). Certifique-se de que todos pertencem ao usuário (sftpuser:sftpuser). Verifique os logs do sistema com sudo journalctl -u sshd para mensagens de erro detalhadas.

  • Problema/Erro: O usuário foi criado com informações incorretas.

    • Solução: Para remover completamente um usuário e seu diretório home, use sudo deluser --remove-home sftpuser. Isso permite recomeçar o processo de criação do zero.

  • Problema/Erro: Usuário consegue remover outros usuários de grupos.

    • Solução: Para remover um usuário de um grupo de forma segura, utilize o comando sudo gpasswd -d nome_do_usuario nome_do_grupo.

Artigos Relacionados

  • Não se aplica.

Anexos

  • Não se aplica.

Referências

  • Não se aplica.

Histórico de Revisões

Data
Versão
Responsável
Mudança

22/11/2024

v1.0

Thiago Amaral

Confecção do documento.

25/11/2024

v2.0

Thiago Amaral

Adicionado detalhes para autenticação do usuário com chaves.

05/12/2024

v2.1

Thiago Amaral

Adicionado instruções para o WinSCP e seção de agendamento.

05/12/2024

v2.1

Gabriel Briz

Colaboração e revisão técnica.

16/09/2025

v3.0

Thiago Amaral

Revisão para novo modelo.

Last updated