Mostrando postagens com marcador FTP. Mostrar todas as postagens
Mostrando postagens com marcador FTP. Mostrar todas as postagens

sexta-feira, 20 de novembro de 2009

Instalando e Configurando um Servidor FTP com o VSFTPD



Seguindo a Série de Artigos para serem utilizados em sala de aula, desta vez apresentaremos o Servidor FTP - File Transfer Protocol.
FTP significa File Transfer Protocol (Protocolo de Transferência de Arquivos), e é uma forma bastante rápida e versátil de transferir arquivos (também conhecidos como ficheiros), sendo uma das mais usadas na internet.

Pode referir-se tanto ao protocolo quanto ao programa que implementa este protocolo (Servidor FTP, neste caso, tradicionalmente aparece em letras minúsculas, por influência do programa de transferência de arquivos do Unix).

A transferência de dados em redes de computadores envolve normalmente transferência de arquivos e acesso a sistemas de arquivos remotos (com a mesma interface usada nos arquivos locais). O FTP (RFC 959) é baseado no TCP, mas é anterior à pilha de protocolos TCP/IP, sendo posteriormente adaptado para o TCP/IP. É o padrão da pilha TCP/IP para transferir arquivos, é um protocolo genérico independente de hardware e do sistema operacional e transfere arquivos por livre arbítrio, tendo em conta restrições de acesso e propriedades dos mesmos.
Fonte: http://pt.wikipedia.org/wiki/File_Transfer_Protocol

Para instalarmos um servidor FTP poderíamos utilzar várias soluções do mundo Linux como o Proftpd. Mas escolhemos para este tutorial o VSFTP - Very Secure FTP que tem em seu site oficial http://freshmeat.net/projects/vsftpd/

Arquivo de configuração:
/etc/vsftpd.conf

Daemon:
/etc/init.d/vsftpd

Porta TCP/IP envolvidas:
20 e 21 tcp/udp

Instalação:
#apt-get install vsftpd

Pronto. Já neste ponto, você já tem um servidor FTP com acesso anônimo liberado. Vamos testar?

Iniciando o servidor:
#/etc/init.d/vsftpd restart

a) Utilizando a linha de comando:
# ftp localhost Connected to localhost.
220 (vsFTPd 2.0.7)

Name (localhost:root): anonymous

Password: qualquersenha

Porém o acesso anônimo é de somente leitura.
Se você desejar disponibilizar algum arquivo pra que usuários anônimos da sua rede ou da Internet baixem a partir deste servidor que você acabou de montar, coloque no seguinte caminho:
/home/ftp

Este é o diretório local no seu HD que os usuários anônimos caem quando logam no seu servidor.

b) Utilizando o browser
Você pode fazer o teste utilizando o Firefox, Konquerror, Opera, Chomium ou IE. Basta na barra de endereços digitar:
ftp://localhost (caso você esteja na mesma máquina que está o servidor)
ftp://10.0.0.1 (supondo que este é o IP do servidor FTP que você está montando).

c) Utilizando um Cliente FTP
Para fazer testes de FTP, não use Browsers. Use clientes de FTP. No Linux eu utilizo dois: Filezilla e o GFTP
Eu prefiro o Filezilla. Caso você use Debian, Ubuntu ou derivados, basta instalar com o comando:
apt-get install filezilla

Um teste de acesso utilizando o Filezilla.
Se você utiliza Windows, você também pode utilizar o Filezilla.

Para fazer um acesso autenticado, ou liberar gravação do usuário anônimo, é necessário alterar algumas linhas do /etc/vsftpd.conf. Vamos conhecer melhor este arquivo.

As opções do /etc/vsftpd.conf

Habilita o protocolo IPv6
listen_ipv6=YES

Libera/Nega acesso Anônimo
anonymous_enable=YES

Permite que usuários do servidor façam o login no servidor FTP
local_enable=YES

Permite que os usuários tenham acesso de gravação no servidor de FTP (Menos o anônimo)
write_enable=YES

Permite que o usuário anonimo faça upload para o servidor de FTP
anon_upload_enable=YES
Obs: Para esta opção funcionar a linha write_enable=YES deve estar ativada.

# Permite que o usuário Anônimo crie diretorios
anon_mkdir_write_enable=YES

Proibindo usuários de Logar no Servidor FTP
Configure as seguintes linhas:
userlist_deny=YES
userlist_file=/etc/vsftpd.denied_users
Crie o arquivo /etc/vsftpd.denied_users e escreva um por linha os usuários que não podem logar no servidor.

Autorizando somente alguns usuários a logarem no servidor:
Configure as seguintes linhas:
userlist_deny=NO
userlist_enable=YES
userlist_file=/etc/vsftpd.allowed_users
Crie o arquivo /etc/vsftpd.allowed_users e escreva um por linha quem pode logar no servidor.

Enjaulando Usuários
Para impedir que os usuários autenticados saiam do seu diretório home e possam navegar pelo HD do servidor, ative a opção abaixo:
chroot_local_user=YES
Obs: Esta técnica é chamada de Enjaular usuários

Para "enjaular" somente alguns usuários:
Configure as seguintes linhas
chroot_local_user=NO
chroot_list_enable=YES
Crie o seguinte arquivo: /etc/vsftpd.chroot_list e escreva o nome dos usuários que você deseja enjaular um por linha

Para "enjaular" todos e deixar alguns livres:
Configure as seguintes linhas:
chroot_local_user=YES
chroot_list_enable=YES
Crie o seguinte arquivo: /etc/vsftpd.chroot_list e escreva o nome dos usuários que você deseja que não seja enjaulado um por linha.

Possibilitando que o usuário Anônimo faça Upload.
Obs: Se você ativar esta opção e for logar com no servidor com o usuário anonymous, você irá receber a seguinte mensagem:
500 OOPS: vsftpd: refusing to run with writable anonymous root

Isto contradiz toda a história de permissionamento do Linux, mas é isto mesmo. Para você permitir que o Anonymous faça login e consiga fazer uploads para o servidor de FTP, é necessário que o diretório /home/ftp não pertença ao usuário ftp e ainda mais, não pode ter permissão de gravação. Você deverá criar um subdiretório dentro do diretório /home/ftp e ai sim, você libera a gravação deste subiretório. Então para evitar este erro faça o seguinte:

Passe o diretório /home/ftp para o root
# chown root:root /home/ftp

Tire as permissões de gravação deste diretório
# chmod 555 /home/ftp

Crie um subdiretório que contenha permissão para gravação
# mkdir /home/ftp/upload

Altere as permissões deste subdiretório
# chmod 777 /home/ftp/upload

Faça o teste: Logue como anonimo utilizando o filezilla e faça uploads de arquivos.

Referências:
http://ubuntuforums.org/showthread.php?t=518293