FTP

Como configurar FTP com TLS no Ubuntu

Como configurar FTP com TLS no Ubuntu
FTP (File Transfer Protocol) é 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 para o 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 por um canal não seguro, mas é possível configurar o FTP para transferir dados por um canal seguro. Neste tutorial, você aprenderá como configurar um servidor FTP com TLS e, em seguida, usar o FileZilla como um aplicativo cliente para se conectar ao servidor FTP.

Instalando VSFTPD

VSFTPD (Very Secure FTP Daemon) é 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.

[email protegido]: ~ $ sudo apt-get update -y

Em seguida, instale o VSFTPD usando o seguinte comando.

[email protegido]: ~ $ sudo apt-get install vsftpd -y

Finalmente, verifique a instalação verificando a versão do vsftpd com o seguinte comando.

[email protegido]: ~ $ vsftpd -v

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

FTP em 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. Então, o cliente começa a escutar em uma porta X aleatória para uma conexão de dados e informa ao servidor via conexão de controle TCP que o cliente está esperando pela conexão de dados na porta X. Depois disso, o servidor estabelece uma conexão de dados de sua porta 20 para a porta X na máquina cliente.

Pode surgir um problema quando o cliente está atrás de um firewall e a porta X está bloqueada. Neste caso, o servidor não consegue estabelecer uma conexão de dados com o cliente. Para evitar esse problema, o servidor FTP é usado principalmente no modo Passivo, que discutiremos posteriormente neste artigo. Por padrão, o VSFTPD usa o modo Passivo, então teremos que alterá-lo para o modo Ativo.

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

[email protegido]: ~ $ 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, iremos configurar '/ home / ubuntu / ftp /' como o caminho raiz para o servidor FTP.

[email protegido]: ~ $ sudo mkdir / home / ubuntu / ftp

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

local_root = / home / ubuntu / ftp

A opção 'write_enable' deve ser habilitada para permitir que os usuários gravem no servidor FTP.

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

[email protegido]: ~ $ sudo systemctl restart vsftpd

Definir uma senha para um usuário

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

[email protegido]: ~ $ sudo passwd ubuntu

O comando acima irá pedir a senha para o usuário 'ubuntu'.

Configurando o Firewall para 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 ufw para configurar o firewall no servidor. Instale o ufw usando o seguinte comando.

[email protegido]: ~ $ sudo apt-get install ufw

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

[email protegido]: ~ $ sudo ufw permitir de qualquer a qualquer porta proto tcp

Habilite e verifique o status do ufw usando os seguintes comandos.

[email protegido]: ~ $ sudo ufw enable
[email protegido]: ~ $ sudo ufw status

NOTA: se você estiver configurando seu servidor FTP na nuvem, também precisará permitir as portas 20, 21 e 22 no grupo de segurança.

AVISO: Sempre habilite a porta 22, junto com as portas necessárias, antes de habilitar ufw no sistema remoto. Por padrão, o UFW bloqueia o tráfego da porta 22, então você não poderá acessar seu servidor remoto usando SSH se habilitar 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.

[email protegido]: ~ $ 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' no arquivo de configuração '/ home / ubuntu / ftp'.

Problemas no modo ativo

Usar FTP no modo Ativo levanta problemas quando o cliente está atrás do firewall. Depois de inserir os comandos de controle iniciais, 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. O FTP pode ser usado no modo Passivo para resolver esses problemas de firewall.

FTP em modo passivo

No modo Passivo, o cliente cria uma conexão de controle com o servidor na porta 21 do servidor. O cliente então envia o comando especial 'PASV' para informar ao servidor que a conexão de dados será estabelecida pelo cliente ao invés 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 IP e número de porta para criar uma conexão de dados com o servidor. No modo Passivo, tanto as conexões de dados quanto de controle são estabelecidas pelo cliente, para que o firewall não atrapalhe a comunicação entre o cliente e o servidor.

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

[email protegido]: ~ $ sudo nano / etc / vsftpd.conf

Defina a opção 'pasv_enable' para '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' como 'SIM' para permitir que os usuários carreguem arquivos para o servidor.

Conforme 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 gama 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.

[email protegido]: ~ $ sudo systemctl restart vsftpd

Configurando o Firewall no Modo Passivo

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

[email protegido]: ~ $ sudo ufw permitir de qualquer a qualquer porta proto tcp

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

[email protegido]: ~ $ sudo ufw enable

Sempre permita portas no servidor antes de habilitar o firewall; caso contrário, você não conseguirá 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 inserir o host, nome de usuário, senha e porta, agora você pode se conectar ao seu servidor. Agora que você está conectado ao servidor FTP em execução no modo Passivo, você pode enviar 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 por meio de um canal não seguro. Este tipo de comunicação não deve ser usado se você deseja compartilhar dados sensíveis entre o cliente e o servidor. Para se comunicar por meio de um canal seguro, é necessário usar certificados SSL.

Gerando certificados SSL

Usaremos certificados SSL para configurar a comunicação segura entre o cliente e o servidor. Iremos gerar esses certificados usando o openssl. O seguinte comando irá gerar certificados SSL para o seu servidor.

[email protegido]: ~ $ sudo openssl req -x509 -nodes -dia 365 -newkey rsa: 2048 -keyout / etc / ssl / private / vsftpd.pem -out / etc / ssl / private / vsftpd.pem

Ao executar o comando acima, serão feitas algumas perguntas. Depois de responder a essas perguntas, os certificados serão gerados. Você pode verificar os certificados no terminal.

[email protegido]: ~ $ sudo ls / etc / ssl / private /

Usando certificados no arquivo de configuração

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

[email protegido]: ~ $ sudo nano / etc / vsftpd.conf

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

ssl_enable = SIM
force_local_data_ssl = NO
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 mudanças.

[email protegido]: ~ $ sudo systemctl restart vsftpd

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

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

Configuração Anônima

Você também pode habilitar o login anônimo em seu servidor FTP. Com esta configuração habilitada, qualquer usuário pode entrar 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 da raiz para usuários anônimos como '/ home / ubuntu / ftp / anon' e não solicitará a senha quando um usuário anônimo fizer login.

NOTA: Certifique-se de que o caminho '/ home / ubuntu / ftp / anon' existe no servidor FTP.

Agora, reinicie o servidor FTP.

[email protegido]: ~ $ sudo systemctl restart vsftpd

Depois de reiniciar o servidor, tentaremos nos conectar ao servidor por meio do navegador 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, primeiro será solicitada a autenticação e, em seguida, você 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.

[email protegido]: ~ $ sudo systemctl restart vsftpd

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

[email protegido]: ~ $ ssh ubuntu @ 3.8.12.52 -i

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

[email protegido]: ~ $ ftp localhost

Quando você executa o comando acima, ele gera um erro 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 servidor FTP em sua máquina. 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 maior segurança. Para saber mais sobre as configurações de FTP, visite o seguinte link.

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

Melhores distros Linux para jogos em 2021
O sistema operacional Linux percorreu um longo caminho desde sua aparência original, simples e baseada em servidor. Este sistema operacional melhorou ...
Como capturar e transmitir sua sessão de jogo no Linux
No passado, jogar era considerado apenas um hobby, mas com o tempo a indústria de jogos viu um grande crescimento em termos de tecnologia e número de ...
Melhores jogos para jogar com rastreamento manual
Oculus Quest introduziu recentemente a grande ideia de rastreamento manual sem controladores. Com um número cada vez maior de jogos e atividades que e...