Como configurar um Servidor FTP no VPS Ubuntu

Este tutorial irá mostrar como configurar um servidor FTP em uma VPS Ubuntu. Um servidor vsFTPd será utilizado que é amplamente considerado como o FTP mais rápido e seguro para sistemas como UNIX por aí.

FTP ou File Transfer Protocol (protocolo de transferência de arquivos) é um meio de enviar e receber arquivos através de uma conexão de rede.

Fazendo uso de uma estrutura cliente/servidor e segurança SSL/TLS, o FTP permite aos usuários compartilhar e receber arquivos de computadores remotos via transferência segura de dados, eficiente e confiável utilizando protocolos TCP/IP.

O FTP funciona da mesma forma que o HTTP ou SMTP; a única diferença obviamente é que é responsável pelo transporte seguro de arquivos de um remetente para um receptor, ao invés de páginas na internet de servidores para o usuário ou correio eletrônico pela internet.

Etapa 1 – Instalando Vsftpd

Primeiramente vamos atualizar os pacotes antes de prosseguir com a instalação do daemon vsFTPd. Para começar, execute o seguinte comando:

sudo apt-get update

Aguarde até que o processo esteja completo e você verá uma confirmação assim que as atualizações terminarem.

Instalando vsftpd

Quando o caminho estiver livre, instale o daemon vsFTPd utilizando os seguintes comandos:

sudo apt-get install vsftpd

Você receberá uma mensagem de confirmação, que irá requerer você digite Y e aperte o Enter para continuar com a instalação.

Mensagem de confirmação

Após a instalação estar completa, crie um backup dos arquivos originais para que possamos começar nosso trabalho com um arquivo de configuração em branco:

sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.original

Agora nós estamos prontos para ir para a próxima etapa que é configurar o firewall.

Etapa  2 – Permitindo tráfego FTP do firewall

Para permitir que o servidor FTP se comunique com o mundo afora, ele precisa passar pelo firewall. Vejamos se o firewall está habilitado na máquina ou não. Para isso execute o seguinte comando para verificar seu status:

sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.original

Se você encontrar a seguinte mensagem:

ufw: command not found

Isso significa que o firewall não está instalado e você pode proceder para a próxima etapa.

No entanto, caso a saída mostra algumas regras definidas ou uma mensagem que o status do firewall está ativo, você terá que verificar se o tráfego FTP funcionará.

Vamos em frente e abrir as portas 20 e 21 para o tráfego FTP; portas 40000-50000 serão reservadas para o intervalo de portas passivas que eventualmente serão definidas no arquivo de configuração e a porta 990 será utilizada quando TLS for ativada. Execute os seguintes comandos para prosseguir:

sudo ufw allow 20/tcp
sudo ufw allow 21/tcp
sudo ufw allow 990/tcp
sudo ufw allow 40000:50000/tcp

Agora vamos conferir o status novamente:

sudo ufw status

A saída deve parecer agora como algo assim:

Output
Status: active
To                         Action      From
--                              ------      ----
990/tcp                    ALLOW       Anywhere
20/tcp                     ALLOW       Anywhere
21/tcp                     ALLOW       Anywhere
40000:50000/tcp            ALLOW       Anywhere
20/tcp (v6)                ALLOW       Anywhere (v6)
21/tcp (v6)                ALLOW       Anywhere (v6)
990/tcp (v6)               ALLOW       Anywhere (v6)
40000:50000/tcp (v6)       ALLOW       Anywhere (v6)

Agora que nós temos todas as portas necessárias abertas e disponíveis, nós podemos prosseguir para a próxima etapa.

Etapa  3 – Criando o diretório do usuário

Como a terceira etapa para criar um servidor FTP Ubuntu, precisaremos selecionar o usuário que fará uso do acesso FTP. Para mostrar como é feito, vamos adicionar um novo usuário. Para criá-lo utilize o seguinte comando:

sudo adduser alex

Quando solicitado, insira uma senha para o usuário e preencha os outros detalhes. Idealmente, o FTP deve ser restrito a um diretório específico por motivos de segurança. O vsFTPd usa cadeias chroot para realizar isso. Com o Chroot habilitado, o usuário local é restrito ao diretório inicial, definido por padrão.

No entanto, é possível que por conta da segurança vsFTPd, um usuário não consiga escrever no diretório. Nós não removeremos os privilégios de gravação da pasta inicial, em vez disso, nós vamos utilizar um diretório FTP que atuará como um chroot junto com o diretório gravável de arquivos que será responsável por manter os arquivos pertinentes. Utilize o seguinte comando para criar a pasta FTP:

sudo mkdir /home/alex/ftp

Defina a propriedade utilizando:

sudo chown nobody:nogroup /home/alex/ftp

Finalmente, remova as permissões para gravar:

sudo chmod a-w /home/alex/ftp

Agora, use o seguinte comando para verificar as permissões:

sudo ls -la /home/alex/ftp

A saída deve parecer algo como:

total 8
dr-xr-xr-x 2 nobody nogroup 4096 Jun 29 11:32 .
drwxr-xr-x 3 alex   alex    4096 Jun 29 11:32 ..

Como próximo passo, criaremos o diretório que contém os arquivos e atribuiremos a propriedade

sudo mkdir /home/alex/ftp/files
sudo chown alex:alex /home/alex/ftp/files

Finalmente, adicione um arquivo de testes ao diretório que será utilizado quando testarmos tudo isso mais tarde:

echo "vsftpd sample file" | sudo tee /home/alex/ftp/files/sample.txt

Etapa  4 – Configurando vsftpd

Como o próxima etapa em nossa tentativa de configurar um servidor FTP no Ubuntu VPS, vamos configurar estaremos configurando um vsFTPd e nosso acesso FTP.

Neste tutorial, permitiremos que um único usuário se conectar com FTP utilizando uma conta de shell local.

As duas configurações-chave de teclas necessárias para isso já estão definidas no arquivo de configuração (vsftpd.conf). Primeiramente, verifique se o arquivo de configuração realmente possui configurações são correspondentes as mencionadas abaixo utilizando o nano comando:

sudo nano /etc/vsftpd.conf
. . .
# Allow anonymous FTP? (Disabled by default).
anonymous_enable=NO
#
# Uncomment this to allow local users to log in.
local_enable=YES
. . .

No mesmo arquivo, Nós vamos prosseguir removendo # e habilitando o código write_enable:

. . .
write_enable=YES
. . ..

O chroot também será descomentado para garantir que o usuário conectado via FTP apenas acesseará arquivos dentro do diretório permitido:

. . .
chroot_local_user=YES
. . .

Alguns novos valores precisaram ser adicionados manualmente. Você pode simplesmente colá-los na parte inferior do arquivo. Em primeiro lugar, um user_sub_token será adicionado ao caminho do diretório local_root. Isso irá permitir que a configuração funcione com o usuário atual e qualquer outro usuário que posteriormente for adicionado:

user_sub_token=$USER
local_root=/home/$USER/ftp

Para garantir que uma quantidade substancial de conexões esteja disponível, limitaremos o número de portas utilizadas no arquivo de configuração:

pasv_min_port=40000
pasv_max_port=50000

Neste tutorial, planejaremos permitir o acesso caso a caso, então vamos configurar de forma que o acesso seja somente concedido aos usuários que tenham sido explicitamente adicionados a uma lista:

userlist_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_deny=NO

O indicador userlist_deny é responsável por alternar a lógica; quando configurado para “não”, somente os usuários especificados na lista terão acesso permitido. Uma vez feito isso, clique em CTRL + X e confirme as alterações no arquivo.
Por fim, procederemos àa criação e adição de nossos usuários ao arquivo:

echo "alex" | sudo tee -a /etc/vsftpd.userlist

Verifique se o usuário está realmente ativo, executando o seguinte comando:

cat /etc/vsftpd.userlist

A saída deve ser “alex” como mostra a imagem:

Usuário ftp adicionado no ubuntu

Reinicie o daemon utilizando o seguinte comando para carregar as alterações nas configuraçẽos:

sudo systemctl restart vsftpd

Etapa  5 – Criando um  FTP seguro

Como padrão, o FTP não faz criptografia de dados, então vamos usar o TTL/SSL para tornar as coisas mais seguras. Como primeiro passo, precisamos criar o certificado de segurança SSL e utiliza-lo para proteger o servidor FTP ubuntu. Para começar , use o seguinte comando:

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem

A bandeira -days tornaá o certificado váalido por um ano e nóos incluíimos uma chave privada RSA de 2048-bit no mesmo comando. Quando solicitado, insira os detalhes pessoais pertinentes no campo fornecido.

Depois de terminar a criação do certificado, abra o arquivo de configuração novamente:

sudo nano /etc/vsftpd.conf

O final do arquivo deve conter duas linhas que começam com “_rsa”. Comente ambas as linhas como:

# rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
# rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key

Em vez disso, vamos apontar o arquivo de configuração para o certificado que acabamos de criar. Adicione as seguintes linhas:

rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem

Agora vamos habilitar o SSL e garantir que somente clientes com SSL habilitado entrem em contato conosco. Altere o valor do ssl_enable para “SIM”:

ssl_enable=YES

Agora adicione as seguintes linhas para proteger ainda mais as coisas: (note que isso não permitirá conexões anônimas sobre SSL)

allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES

Configure o servidor para usar TLS:

ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO

Aqui iremos adicionar mais 2 opções. Em primeiro lugar a reutilização de SSL não será necessários pois pode levar a muitos clientes FTP a quebrarem. Em segundo lugar, usaremos conjuntos de alta criptografia, o que significa que os comprimentos das chaves são iguais ou maiores que 128 bits.

require_ssl_reuse=NO
ssl_ciphers=HIGH

Vamos reiniciar novamente para aplicar as novas configurações:

sudo systemctl restart vsftpd

Ótimo trabalho! Você já configurou o servidor FTP em sua VPS Ubuntu para trabalhar com protocolo SSL/TLS.

Etapa  6 – Testando conexões com FileZilla

Atualmente, a maioria dos clientes de FTP suporta configurações de criptografia TLS, por isso é uma ótima maneira de testar se o seu servidor FTP Ubuntu está funcionando como pretendido. Para testar as conexões, usaremos o FileZilla FTP Client. Para começar, inicie o FileZilla, clique no ícone do Gerenciador do Site:

Gerenciador de site filezilla

Clique no botão Novo Site na janela solicitada para começar a inserir os detalhes do servidor FTP do Ubuntu.

Adicionando servidor ubuntu ftp no filezilla

Preencha todos os detalhes necessários com as informações recém criadas do servidor FTP Ubuntu. Uma vez que o configuramos para usar o TLS, também podemos marcar a criptografia para ser FTP explícito sobre o TLS. A configuração final deve ficar assim:

Filezilla: configuracao final para servidor ftp

Quando estiver pronto, clique em Conectar e uma tela solicitando a senha do usuário do  e senha FTP será exibida.

Senha usuário ftp

Finalmente, você precisará verificar o certificado SSL do seu servidor FTP na VPS Ubuntu.

Confirmar certificado no ftp

Após confirmar, o diretório root com o arquivo de testes agora deve aparecer na tela.

Conectado com sucesso ao FTP

Isso é tudo! Agora, você pode executar várias transferências de arquivos do seu computador para o servidor FTP Ubuntu e vice versa.

Dica

VPS com mais recursos e alto desempenho é na Hostinger. Aproveite até 67% OFF na nossa hospedagem de servidores!

VPS com mais recursos e alto desempenho é na Hostinger. Aproveite até 67% OFF na nossa hospedagem de servidores!

Conclusão

Neste tutorial, passamos por uma jornada passo a passo para criar uma maneira para um usuário local transferir arquivos via FTP com SSL/TLS no servidor FTP Ubuntu. Nós também testamos a conexão utilizando o FileZilla para garantir que tudo seja funcional.

Caso seu site ainda esteja desprotegido, a Hostinger pode te ajudar com isso!

Author
O autor

Ariane G.

A Ariane é SEO Team Leader com experiência em conteúdo, localização e SEO. Seu desafio é levar a Hostinger ao topo dos resultados no Brasil, França e Reino Unido. Eventualmente ela compartilha seu conhecimento no blog e nos tutoriais da Hostinger e no tempo livre ela gosta de explorar lugares novos e viver intencionalmente.