Como configurar FTP com TLS no Ubuntu

Como configurar FTP com TLS no Ubuntu
FTP (protocolo de transferência de arquivos) é usado principalmente para transferir arquivos entre computadores. O FTP funciona na arquitetura cliente-servidor, na qual o cliente pede um arquivo do servidor e o servidor retorna o arquivo necessário ao cliente. Na máquina cliente, o aplicativo cliente FTP é usado para se comunicar com o servidor. Também é possível acessar o servidor FTP no navegador. Por padrão, o FTP se comunica em um canal inseguro, mas é possível configurar o FTP para transferir dados sobre um canal seguro. Neste tutorial, você aprenderá como configurar um servidor FTP com TLS e depois usará o Filezilla como um aplicativo cliente para se conectar com o servidor FTP.

Instalando o vsftpd

Vsftpd (daemon FTP muito seguro) é um programa de software usado para configurar o FTP em um servidor. Neste tutorial, o VSFTPD será usado para configurar o servidor FTP na máquina. Antes de instalar o vsftpd, atualize os repositórios em seu servidor emitindo o seguinte comando.

ubuntu@ubuntu: ~ $ sudo apt -get update -y

Em seguida, instale o vsftpd usando o seguinte comando.

ubuntu@ubuntu: ~ $ sudo apt -get install vsftpd -y

Por fim, verifique a instalação verificando a versão do vSFTPD com o seguinte comando.

ubuntu@ubuntu: ~ $ vsftpd -v

O comando acima produzirá a versão do vsftpd se a instalação for bem -sucedida.

FTP no modo ativo

No modo ativo, o cliente FTP inicia a sessão estabelecendo a conexão de controle TCP de qualquer porta aleatória na máquina cliente para a porta 21 do servidor. Em seguida, o cliente começa a ouvir em uma porta aleatória x para uma conexão de dados e informa o servidor via conexão de controle TCP que o cliente está aguardando a conexão de dados na porta x. Depois disso, o servidor estabelece uma conexão de dados da porta 20 para a porta X na máquina cliente.

Pode surgir um problema onde o cliente está por trás de um firewall e a porta X está bloqueada. Nesse caso, o servidor não pode estabelecer uma conexão de dados com o cliente. Para evitar esse problema, o servidor FTP é usado principalmente no modo passivo, que discutiremos mais adiante neste artigo. Por padrão, o VSFTPD usa o modo passivo, por isso teremos que alterá -lo para o modo ativo.

Primeiro, abra o arquivo de configuração do VSFTPD.

ubuntu@ubuntu: ~ $ sudo nano /etc /vsftpd.conf

Adicione a seguinte linha ao final do arquivo.

pasv_enable = não

Além disso, certifique -se de que a opção 'Connect_From_port_20' esteja definida como 'Sim.'Esta opção garante que a conexão de dados seja estabelecida na porta 20 do servidor.

Em seguida, crie um diretório que o servidor FTP usará para armazenar arquivos. Para este tutorial, configuraremos '/home/ubuntu/ftp/' como o caminho raiz para o servidor FTP.

ubuntu@ubuntu: ~ sudo mkdir/home/ubuntu/ftp

Agora, especifique este diretório no arquivo de configuração alterando a opção 'Local_root'. O parâmetro a seguir configurará o caminho raiz do servidor.

local_root =/home/ubuntu/ftp

A opção 'write_enable' deve estar ativada para permitir que os usuários escrevam no servidor FTP.

Toda vez que você altera o arquivo de configuração, sempre reinicie o servidor.

ubuntu@ubuntu: ~ $ sudo systemctl reiniciar vsftpd

Definindo uma senha para um usuário

O cliente FTP se conecta com o servidor usando um nome de usuário e senha. Defina a senha para o seu usuário na máquina usando o seguinte comando.

ubuntu@ubuntu: ~ $ sudo passwd ubuntu

O comando acima solicitará a senha do usuário 'ubuntu'.

Configurando o firewall para o modo ativo

Se o FTP for usado no modo ativo, o servidor FTP usará duas portas para se comunicar com o cliente, as portas 21 e 22. A porta 21 é usada para passar comandos para o cliente e a porta 20 é usada para transferir dados para qualquer porta aleatória do cliente. Usaremos o UFW para configurar o firewall no servidor. Instale a UFW usando o seguinte comando.

ubuntu@ubuntu: ~ $ sudo apt-get install ufw

Agora, no lado do servidor, abriremos as portas 20, 21 e 22 (para a conexão SSH).

ubuntu@ubuntu: ~ $ sudo ufw permitir de qualquer um porto proto tcp

Ativar e verifique o status da UFW usando os seguintes comandos.

ubuntu@ubuntu: ~ $ sudo ufw atable
ubuntu@ubuntu: ~ status de ufw

OBSERVAÇÃO: Se você estiver configurando seu servidor FTP na nuvem, também precisará permitir que as portas 20, 21 e 22 no grupo de segurança.

AVISO: Sempre habilite a porta 22, juntamente com as portas necessárias, antes de ativar o UFW no sistema remoto. Por padrão, o UFW bloqueia o tráfego da porta 22, para que você não possa acessar seu servidor remoto usando SSH se ativar o UFW sem permitir o tráfego da porta 22.

Instalando o cliente FTP

Agora, nosso servidor está configurado no modo ativo e podemos acessá -lo do lado do cliente. Para o aplicativo cliente, usaremos o FileZilla, um aplicativo cliente FTP. Instale o Filezilla usando o seguinte comando.

ubuntu@ubuntu: ~ $ sudo apt -get install filezilla -y

Abra o aplicativo cliente FTP e insira o endereço IP público e outras credenciais do servidor FTP.

Ao clicar em 'QuickConnect', você se conectará ao servidor FTP e será automaticamente levado ao diretório especificado na opção 'Local_root' na opção de configuração '/home/ubuntu/ftp'.

Problemas no modo ativo

O uso do FTP no modo ativo levanta problemas quando o cliente está atrás do firewall. Depois de inserir os comandos de controle inicial, quando o servidor cria uma conexão de dados com o cliente em uma porta aleatória, a porta pode ser bloqueada pelo firewall no cliente, fazendo com que a transferência de dados falhe. FTP pode ser usado no modo passivo para resolver esses problemas de firewall.

FTP no modo passivo

No modo passivo, o cliente cria uma conexão de controle com o servidor na porta 21 do servidor. O cliente envia o comando 'pasv' especial para informar o servidor que a conexão de dados será estabelecida pelo cliente em vez do servidor. Em resposta, o cliente recebe o IP do servidor e o número da porta aleatória (este número da porta será configurado no servidor). O cliente usa este número de IP e porta para criar uma conexão de dados com o servidor. No modo passivo, as conexões de dados e controle são estabelecidas pelo cliente, para que o firewall não perturbe a comunicação entre o cliente e o servidor.

Abra o arquivo de configuração do FTP em seu editor favorito.

ubuntu@ubuntu: ~ $ sudo nano /etc /vsftpd.conf

Defina a opção 'pasv_enable' como 'sim' no arquivo para que o servidor possa se comunicar com o cliente no modo passivo. Além disso, defina a opção 'Local_root' para especificar o diretório raiz do servidor e defina a opção 'write_enable' para 'sim' para permitir que os usuários enviem arquivos no servidor.

Como discutido anteriormente, a conexão de dados é estabelecida pelo cliente e o servidor envia seu IP público e uma porta aleatória para o cliente para criar uma conexão de dados. Esta porta aleatória no servidor pode ser especificada a partir de uma variedade de portas no arquivo de configuração.

A conexão de dados entre o servidor e o cliente será estabelecida em uma porta entre 1024 e 1048. Reinicie o servidor FTP após alterar o arquivo de configuração.

ubuntu@ubuntu: ~ $ sudo systemctl reiniciar vsftpd

Configurando o firewall no modo passivo

Se usarmos o FTP no modo passivo, a conexão de dados será estabelecida em qualquer porta de 1024 a 1048, por isso é necessário permitir que todas essas portas no servidor FTP.

ubuntu@ubuntu: ~ $ sudo ufw permitir de qualquer um porto proto tcp

Depois de permitir todas as portas no firewall, ative a UFW executando o seguinte comando.

ubuntu@ubuntu: ~ $ sudo ufw atable

Sempre permitir portas no servidor antes de ativar o firewall; Caso contrário, você não poderá acessar seu servidor via SSH como UFW, que bloqueia a porta 22 por padrão.

Testando a conexão

Agora, configuramos o servidor FTP no modo passivo e podemos verificar a conexão FTP com o aplicativo cliente. Abra o Filezilla em seu sistema para fazer isso.

Depois de entrar no host, nome de usuário, senha e porta, agora você pode se conectar com seu servidor. Agora que você está conectado ao servidor FTP em execução no modo passivo, você pode fazer upload de arquivos para o servidor.

Configurando certificados SSL com o servidor FTP

Por padrão, o servidor FTP estabelece a conexão entre o cliente e o servidor em um canal não garantido. Este tipo de comunicação não deve ser usado se você deseja compartilhar dados confidenciais entre o cliente e o servidor. Para se comunicar em um canal seguro, é necessário usar certificados SSL.

Gerando certificados SSL

Usaremos os certificados SSL para configurar a comunicação segura entre o cliente e o servidor. Vamos gerar esses certificados usando o OpenSSL. O comando a seguir gerará certificados SSL para o seu servidor.

ubuntu@ubuntu: ~ $ sudo openssl req -x509 -nodes -day 365 -NewKey RSA: 2048 -Keyout/etc/ssl/privado/vsftpd.PEM --out/etc/ssl/privado/vsftpd.PEM

Quando você executa o comando acima, você receberá algumas perguntas. Depois de responder a essas perguntas, os certificados serão gerados. Você pode verificar os certificados no terminal.

ubuntu@ubuntu: ~ $ sudo ls/etc/ssl/privado/

Usando certificados no arquivo de configuração

Agora, nossos certificados estão prontos para usar. Vamos configurar o 'vsftpd.arquivo conf 'para usar os certificados SSL para comunicação. Abra o arquivo de configuração com o seguinte comando.

ubuntu@ubuntu: ~ $ sudo nano /etc /vsftpd.conf

Adicione as seguintes linhas ao final dos arquivos. Essas alterações garantirão que o servidor FTP use os recém -gerados certificados SSL para se comunicar com segurança com o cliente.

ssl_enable = sim
force_local_data_ssl = não
force_local_logins_ssl = não
ssl_tlsv1 = sim
ssl_sslv2 = não
SSL_SSLV3 = Não
rsa_cert_file =/etc/ssl/private/vsftpd.PEM
rsa_private_key_file =/etc/ssl/private/vsftpd.PEM

Reinicie o servidor FTP para aplicar essas alterações.

ubuntu@ubuntu: ~ $ sudo systemctl reiniciar vsftpd

Depois de reiniciar o servidor, tente conectar -se ao seu servidor usando o aplicativo FileZilla Client. Desta vez, o aplicativo cliente perguntará se deve confiar nesses certificados.

Se você tiver certificados de uma autoridade de certificados confiáveis, esse aviso não deve aparecer. Geramos nossos certificados usando o OpenSSL, que não é uma autoridade de certificados confiáveis, e é por isso que pediu autenticação de certificado em nosso caso. Agora, podemos nos comunicar entre o cliente e o servidor em um canal seguro.

Configuração anônima

Você também pode ativar o login anônimo no seu servidor FTP. Com esta configuração ativada, qualquer usuário pode fazer login no servidor FTP com qualquer nome de usuário e senha. Os seguintes parâmetros no arquivo de configuração tornarão o servidor FTP acessível anonimamente.

A configuração acima define o caminho raiz para os usuários anônimos serem '/home/ubuntu/ftp/anon' e não solicitará a senha quando um usuário anônimo efetua login.

OBSERVAÇÃO: Verifique se o caminho '/home/ubuntu/ftp/anon' existe no servidor FTP.

Agora, reinicie o servidor FTP.

ubuntu@ubuntu: ~ $ sudo systemctl reiniciar vsftpd

Depois de reiniciar o servidor, tentaremos nos conectar ao servidor através do navegador do Google Chrome. Vá para o seguinte URL.

ftp: // 3.8.12.52

O URL acima o levará ao diretório raiz do servidor FTP, conforme especificado no arquivo de configuração. Com o login anônimo desativado, quando você tenta se conectar ao servidor FTP usando um navegador, você será solicitado primeiro a autenticação e depois será levado ao diretório raiz do servidor.

Configure o acesso local

Também podemos permitir ou bloquear o acesso local ao servidor FTP alterando o arquivo de configuração. Atualmente, podemos acessar nosso servidor FTP localmente sem usar o aplicativo cliente FTP, mas podemos bloquear esse acesso. Para fazer isso, devemos modificar o parâmetro 'local_enable'.

Primeiro, reinicie o servidor FTP.

ubuntu@ubuntu: ~ $ sudo systemctl reiniciar vsftpd

Depois de reiniciar o servidor, tente acessar o servidor FTP localmente usando a interface da linha de comando. Faça login no seu servidor remoto usando SSH.

ubuntu@ubuntu: ~ ssh [email protected] -i

Agora, emita o seguinte comando para fazer login no servidor FTP localmente usando a interface da linha de comando.

ubuntu@ubuntu: ~ $ ftp localhost

Quando você executa o comando acima, ele lançará um erro de 500.

Conclusão

O protocolo de transferência de arquivos tem sido usado por muitos anos para transferir arquivos e documentos pela Internet. VSFTPD é um dos pacotes usados ​​como um servidor FTP em sua máquina. O VSFTPD contém várias configurações que você pode usar para personalizar seu servidor FTP. Este tutorial mostrou como configurar um servidor FTP com TLS para segurança aprimorada. Para saber mais sobre as configurações do FTP, visite o seguinte link.

http: // vsftpd.bestas.org/vsftpd_conf.html