Configurando um servidor FTP com VSFTP

Dando continuidade a nossa série de artigos sobre a configuração de um servidor de redes linux, iremos nesse artigo mostrar como implementar um servidor FTP, se ficar perdido no processo de configuração, acesse o seguinte artigo: Clique Aqui

Noções gerais sobre o protocolo FTP

O FTP (File Transfer Protocol) é um protocolo utilizado para transferir arquivos entre computadores na internet, os clientes tanto podem fazer download quanto upload. O ftp utiliza o protocolo de transporte TCP, estabelece duas conexões paralelas: uma conexão de controle na porta 21 que irá cuidar da parte que se refere a autenticação e a tramitação dos comandos, e outra conexão para o transporte dos dados na porta 20 que fará efetivamente o transporte dos arquivos, levando em consideração que o transporte é feito pelo TCP (Transport Control Protocol) sabemos que o processo é orientado a conexão, ou seja, há uma confirmação no envio dos dados

Conceitos gerais e Instalação do VSFTP

O VSFTP é uma implementação de servidor FTP, se destaca pela sua segurança, possui também as seguintes características:

Suporte ao protocolo IPV6;
Usuários virtuais;
Configuração de IP virtual;
Suporte a criptografia através de integração com SSL (Socket Secure Layer);
Controle da largura de banda
Instalação via apt-get:

Para instalar o VSFTP, execute o seguinte comando:

apt-get install vsftpd

Logo após a instalação você deve reinicializar o servidor para isso digite: service vsftpd restart

Repare que normalmente sempre aparece ao final de alguns serviços a letra “d”, a aparição dessa letra não é por acaso, essa letra significa daemon, daemon seria um processo que fica sempre em estado “listen”, como um servidor, preparado para atender as requisições dos clientes, para boa parte dos serviços existe sempre um processo daemon e um processo cliente.
Para testar a instalação do VSFTP acesse o terminal da máquina virtual com o debian cliente e digite o seguinte comando::

ftp ip_do_servidor
ou você pode fazer isso em duas etapas, assim:
ftp
open ip_do_servidor

deverá aparecer uma mensagem informando que você está conectado, e em seguida será solicitado o nome de usuário, como estamos apenas testando, informe anonymous, ao informar o nome de usuário será solicitada a senha, basta teclar enter, esse usuário não tem senha, você está logado com um usuário anonymous no entanto esse usuário é somente para leitura, não consegue gravar dados no servidor. Veja como ficou o meu exemplo:
conexão anônima no ftp

conexão anônima no ftp

Alterando o arquivo de configuração do VSFTP

O arquivo de configuração do VSFTP, tem cerca de 150 linhas, não são muitas se compararmos com outras implementações de serviços de rede, sugiro que o leitor dê uma lida nesse arquivo para um melhor entendimento da ferramenta. A localização do arquivo como de praxe fica na pasta /etc/vsftpd.conf
A primeira diretiva que iremos alterar é a que permite o login de um usuário anônimo, para isso iremos precisar alterar o arquivo de configuração do servidor:

pico /etc/vsftpd.conf

procure a seguinte linha: anonymous_enable=YES

e altere o seu valor para NO

Agora vamos mudar uma diretiva para permitir o acesso de utilizadores locais, você poderá logar no servidor ftp utilizando o seu usuário linux, ou poderá criar um usuário exclusivo para logar no servidor ftp.

procure a linha abaixo:
#local_enable=YES
e descomente-a retirando a cerquilha (#).

Uma dica, é sempre reiniciar o servidor para testar as configurações isoladamente, lembrando que para reiniciar basta executar o comando abaixo:

service vsftpd restart

Ao tentar logar com o usuário anonymous você irá perceber que não é mais possível, ao inserir a senha o servidor recusará a conexão. Veja no arquivo abaixo como ficaram as alterações propostas no arquivo de configuração e para que servem cada uma
anonymous_enable=NO
local_enable=YES 
#permissão de escrita (gravar dados), exceto para o usuário anonymous
write_enable=YES 
#Habilitar umask para permissão de grupo, permissão de escrita para o usuário e usuários de seu grupo
local_umask=022
#Habilitar o log detalhado, xferlog é um leitor de log's em modo gráfico
xferlog_enable=YES 
#Habilitar a porta 20 para dados  
connect_from_port_20=YES  
#Habilitar formato detalhado de logs  
xferlog_std_format=YES  
#Liberar acesso somente ao diretório Home do usuário, evitando o acesso a outras pastas.
chroot_local_user=YES

Entendendo os comandos FTP

Vamos realizar algumas transferências entre servidor e cliente para exemplificar os comandos, antes de mais nada criaremos duas pastas uma no servidor, com o nome de upload e outra no cliente com o nome de download-ftp.
mkdir /home/usuario/upload
mkdir /home/usuario/download-ftp
Utilize ou crie um usuário para acessar como cliente o servidor, lembrando que esse usuário deve ser criado no servidor. Deve ter permissões para acessar as pastas que você desejar dentro do ftp, é como se você fizesse um cadastro em um serviço de hospedagem de site e a empresa fornecedora do serviço te fornecesse um login e senha para você acessar o seu ftp, definindo inclusive as pastas que você poderia acessar, enfim, acesse o cliente e faça login no servidor:

ftp
open 192.168.3.10
user cliente

Ao contrário do HTTP, o FTP é um protocolo statefull, ou seja ele precisa ter conhecimento do estado da aplicação, precisa fazer um monitoramento constante da localização do usuário logado dentro do servidor ftp, precisa saber em quais diretórios o usuário está navegando.
para descobrir em qual diretório o usuário está use o comando:

pwd

Para descobrir em qual pasta os seus arquivos serão salvos (download) utilize o comando lcd, esse mesmo comando serve para alterar a pasta onde os arquivos serão salvos, altere para a pasta que criamos anteriormente:

lcd /home/aluno/download-ftp

Para testar o funcionamento disso, precisamos navegar nas pastas do servidor e ver o que podemos “baixar” e verificar se de fato foi salvo na pasta download-ftp, previamente é necessário que tenhamos criado algum arquivo no servidor para que possamos agora realizar seu download, o comando utilizado para “pegar” um arquivo é o GET.

get arquivo

usando o comando ftp get

usando o comando ftp get

O processo inverso ao do get (download), seria o put (upload), para isso precisamos escolher um arquivo dentro do cliente e usar o comando put para “copiá-lo” para o servidor, para o teste criei um arquivo com o nome de arquivo-cliente dentro da pasta /home/aluno/Documentos/, um detalhe importante que você precisa saber é que é necessário especificar o caminho de destino já com o nome que o arquivo terá, não basta especificar a pasta, exemplo:

put /home/aluno/Documentos/arquivo-cliente /home/aluno/upload/arquivo-destino

o arquivo-destino é o nome que escolhi, caso você não informe o nome poderá ocorrer o erro 553, dizendo que não foi possível escrever o arquivo: 553 Could not create file. Veja como ficou o meu arquivo.
Utilizando o comando ftp put

Utilizando o comando ftp put

Existem uma série de comandos FTP, todos eles estão listados na RFC 959, alguns são idênticos aos que vemos no próprio Linux, tais como o ls que lista os arquivos, o cd que alterna entre os diretórios.

CLOSE: fecha a sessão ftp;

LS: Lista arquivos e diretórios assim como no Linux.
DELETE: Apaga arquivos do servidor ftp
USER: usado para mudar o usuário que está logado.
BYE/QUIT: fecha as sessões abertas e fecha o programa.

APPEND: Caso você esteja realizando um download e ele por alguma razão seja interrompido, esse comando irá inicializar novamente o download a partir de onde parou, evitando que você tenha que baixar o arquivo desde o início.

MPUT: Transfere vários arquivos para o servidor de uma única vez
MGET: Realiza o download de vários arquivos do servidor de uma só vez.

Para outros comando basta digitar help que aparecerá uma lista com os vários comandos possíveis.

Cliente FTP em modo gráfico

Iremos instalar o FileZilla, que é um cliente FTP em modo gráfico, para isso vá até o terminal e digite:
apt-get install filezilla

depois de instalado abra o programa e informe o nome do servidor, o nome de usuário e a senha, não é obrigatório informar a porta. O uso do cliente ftp no modo gráfico é simplificado e de fácil aprendizado, contudo é interessante que também saibamos utilizar os comando no modo texto para o caso de nos depararmos com uma situação onde não há ambiente gráfico.
Segue a imagem:
Login no filezilla

Login no filezilla

Compartilhe com seus amigosShare on Google+Share on FacebookTweet about this on Twitter

Uma ideia sobre “Configurando um servidor FTP com VSFTP

  1. Pingback: Configuração de Servidores Linux | Concursos de TI

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *