Criando um servidor SFTP

Este artigo abrange a criação de um servidor SFTP.

[ Hits: 420 ]

Por: Luciano Hanzo em 28/06/2024


Introdução



Criar um servidor SFTP (Secure File Transfer Protocol) é uma tarefa fundamental para aqueles que desejam transferir arquivos de forma segura entre diferentes sistemas. Neste guia, vamos detalhar passo a passo como configurar um servidor SFTP em sistemas baseados em Debian, utilizando o usuário root. Iremos desde a instalação dos pacotes necessários até a configuração dos diretórios e permissões para os usuários.

Preparação

Primeiramente, é necessário garantir que você está operando como o usuário root, pois todas as ações descritas aqui requerem permissões administrativas. Você pode se tornar root usando um dos seguintes comandos:

sudo -i

ou

su - root

ou ainda prefixando os comandos com sudo.

Instalação do OpenSSH Server

Para começar, precisamos instalar o servidor OpenSSH, que inclui o suporte para SFTP. Em sistemas baseados em Debian, execute o seguinte comando:

# apt install openssh-server

Criação dos Diretórios

Agora, vamos criar a estrutura de diretórios necessária para o SFTP. Usaremos o comando mkdir para isso:

# mkdir /sftp # Cria o diretório sftp dentro do diretório raiz (/).
# cd /sftp # Navega até o diretório sftp.
# mkdir user01 user02 user03 # Cria 3 diretórios dentro do diretório /sftp.

Observação: O proprietário desses diretórios deve ser o usuário root, caso contrário, o SFTP não funcionará corretamente.

Criação dos Usuários

Em seguida, precisamos criar os usuários que terão acesso ao SFTP. Estes usuários não necessitam de diretórios home ou grupos adicionais. Para isso, use os seguintes comandos:

# useradd luciano -s /bin/false # Cria o usuário luciano.
# useradd danilo -s /bin/false # Cria o usuário danilo.
# useradd ney -s /bin/false # Cria o usuário ney.

Definindo Senhas para os Usuários

Definir senhas para os usuários é crucial para a segurança. Execute os comandos abaixo para criar senhas para cada usuário:

# passwd luciano
# passwd danilo
# passwd ney

Criação dos Diretórios de Usuários

Agora, vamos criar os diretórios específicos para cada usuário dentro de seus respectivos diretórios. Isso é feito da seguinte forma:

# cd /sftp # Navega até o diretório sftp.
# mkdir user01/luciano # Cria o diretório "luciano" dentro do diretório user01.
# mkdir user02/danilo # Cria o diretório "danilo" dentro do diretório user02.
# mkdir user03/ney # Cria o diretório "ney" dentro do diretório user03.

Observação: Os diretórios user01, user02 e user03 não serão diretamente acessados pelos usuários do SFTP.

Ajustando Permissões dos Diretórios

Precisamos agora ajustar as permissões para que cada diretório de usuário pertença ao respectivo usuário:

# cd /sftp # Navega até o diretório sftp.
# chown luciano:luciano user01/luciano # Muda o dono do diretório para luciano.
# chown danilo:danilo user02/danilo # Muda o dono do diretório para danilo.
# chown ney:ney user03/ney # Muda o dono do diretório para ney.

Observações:
  1. Aqui, mudamos tanto o proprietário quanto o grupo do diretório.
  2. Somente o diretório final (por exemplo, user01/luciano) deve pertencer ao usuário.

Editando o Arquivo de Configurações do SFTP

Abra o arquivo de configuração do SSH com seu editor de texto preferido:

# vim /etc/ssh/sshd_config

Adicionando Configurações ao Arquivo

No final do arquivo /etc/ssh/sshd_config, abaixo do comentário # override default of no subsystems, adicione as seguintes linhas:

Subsystem sftp /usr/lib/openssh/sftp-server

Match User luciano # Usuário sftp.
   ChrootDirectory /sftp/user01 # Diretório que será carregado ao logar.
   X11Forwarding no
   AllowTcpForwarding no
   PermitTTY no
   ForceCommand internal-sftp

Match User danilo # Usuário sftp.
   ChrootDirectory /sftp/user02 # Diretório que será carregado ao logar.
   X11Forwarding no
   AllowTcpForwarding no
   PermitTTY no
   ForceCommand internal-sftp

Match User ney # Usuário sftp.
   ChrootDirectory /sftp/user03 # Diretório que será carregado ao logar.
   X11Forwarding no
   AllowTcpForwarding no
   PermitTTY no
   ForceCommand internal-sftp

Finalizando

Para aplicar as alterações feitas na configuração do SSH, reinicie o serviço SSH com o comando:

# systemctl restart sshd # Ou service sshd restart

Conclusão

Configurar um servidor SFTP seguro envolve vários passos, desde a instalação do software necessário até a configuração de diretórios e permissões apropriadas. Este guia detalhou cada um desses passos de maneira clara e didática. Agradeço à comunidade Linux pelo suporte contínuo e a todos que contribuíram para o meu aprendizado. Espero que este guia seja útil para você. Se houver dúvidas, sinta-se à vontade para buscar mais informações e continuar aprendendo.

Agradecimentos

Sou apenas uma pessoa normal que dedicou um tempo estudando Linux. Tudo que aprendi não foi sozinho; tive muita ajuda, tanto diretamente quanto indiretamente. Agradeço à comunidade Linux por compartilhar conhecimento, aos meus amigos pelo apoio, à minha família por sempre estar comigo, e a você que está lendo, pois graças a você, tudo que digitei não está perdido no limbo.
   

Páginas do artigo
   1. Introdução
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Instalação e Configuração de Servidor SSH no Debian

Debian SID, OpenBox, LightDM e XFS

Fazendo o Mate Terminal iniciar sem a Barra de Menu

Compartilhando diretórios em rede com o NFS

Recebendo notificações de seus servidores no seu celular e e-mail

  
Comentários
[1] Comentário enviado por vmmello em 29/06/2024 - 22:24h

Muito bom o artigo.

Só uma sugestão, se você criar um grupo, chamado por exemplo, "sftp" e criar uma regra de grupo no ssh, aí o trabalho de criar um novo usuario se reduziria a dois comandos.

Regra de grupo no sshd_config (uma única vez):
Match Group sftp
ChrootDirectory %h
X11Forwarding no
AllowTcpForwarding no
PermitTTY no
ForceCommand internal-sftp

Cria o grupo sftp:
# groupadd sftp

Assim o trabalho de criar um novo usuário sftp restrito em chroot seriam apenas dois comandos:

# useradd -G sftp -m -d /sftp/usuario usuario
# passwd usuario

Pessoalmente eu acho ruim fazer procedimentos de rotina de meia dúzia de comandos em que é fácil cometer erros e depois é mais difícil de descobrir onde foi que se cometeu um erro.

[2] Comentário enviado por lucianohanzo em 30/06/2024 - 10:37h


[1] Comentário enviado por vmmello em 29/06/2024 - 22:24h

Muito bom o artigo.

Só uma sugestão, se você criar um grupo, chamado por exemplo, "sftp" e criar uma regra de grupo no ssh, aí o trabalho de criar um novo usuario se reduziria a dois comandos.

Regra de grupo no sshd_config (uma única vez):
Match Group sftp
ChrootDirectory %h
X11Forwarding no
AllowTcpForwarding no
PermitTTY no
ForceCommand internal-sftp

Cria o grupo sftp:
# groupadd sftp

Assim o trabalho de criar um novo usuário sftp restrito em chroot seriam apenas dois comandos:

# useradd -G sftp -m -d /sftp/usuario usuario
# passwd usuario

Pessoalmente eu acho ruim fazer procedimentos de rotina de meia dúzia de comandos em que é fácil cometer erros e depois é mais difícil de descobrir onde foi que se cometeu um erro.


Obrigado pela dica, a ideia aqui é mostrar que dá para colocar em mais campos, ao invés de usar a opção (User) use (Group), imagina um cenário onde foi vendido um serviço de SFTP para 3 empresas diferentes, compensa criar 3 grupos, para acessar o serviço.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts