Servidor FTP vsftpd no Centos-Debian

 

O FTP File Transfer Protocol é um protoloco simples para transferência de arquivos. O cliente FTP faz uma solicitação ao servidor FTP, a seção é estabelecida e então é solicitado o usuário e senha válidos no caso de um FTP autenticado, ou, caso este servidor permita navegação anônima, basta entrar como o usuário “anonymous” e um endereço de e-mail qualquer como senha. O FTP pode atuar como servidor ativo ou passivo.

No modo ativo, os comandos são enviados por uma porta alta pelo cliente, e são recebidas pela porta 21 no servidor, enquanto que os dados são transmitidos pelo servidor ao cliente através da porta 20. O problema desta implementação é que os dados podem ser barrados por um firewall de acordo com as regras estabelecidas poe Administrador de Sistemas.

VSFTPD (Very Secure File Transfer Protocol Daemon), é a escolha de empresas como Red Hat, IBM e Novell (Suse Linux) quando o assunto é servidores de FTP confiáveis e seguros. Inclusive, o projeto OpenBSD utiliza o VSFTPD como servidor FTP da distribuição, logo, podemos considerar este software como bem qualificado em termos de segurança de código.

Apesar de alguns Administradores apontarem o VSFTPD como carente em termos de docmuentação, todos os seus parâmetros podem ser encontrados em sua man page, o que facilita o processo de configuração.

Configurando o servidor FTP

# yum install vsftpd

2

Faça uma copia do conf fo vsftpd

?

3

Adicione dentro do arquivo /etc/shells a seguinte linha abaixo:

/bin/false

4

5

Coloque o vsftpd para iniciar junto com o inicalização do sistema

# chkconfig –level 123456 vsftpd on

6

edite o arquivo vsftpd.conf

# Exemplo de configuração /etc/vsftpd/vsftpd.conf

# Se usuários anonimos são permitidos ou não
anonymous_enable=NO
#
# Permiti inicio de sessão de usuarios local, usuarios em /etc/passwd
local_enable=YES
#
#Usuarios preso no seu diretorio home
chroot_local_user=YES
#
# Permite que usuarios escrevam na suas pastas por FTP
write_enable=YES
#
#Define as permissões de arquivos depois de upload (077 escrita/leitura so pelo dono
local_umask=022
#
#opcao para usuario anonimo fazer upload, para isso funcionar o parametro ‘write_anable’
# que ser ativado
#anon_upload_enable=YES
#
# ativa a criação de pasta por usuários anon.
#anon_mkdir_write_enable=YES
#
#permiti que o conteudo do arquivo(msg) seja exibido caso exista no diretorio atual.
dirmessage_enable=YES
#
# Ativa log detalhado por uploads/downloads.
xferlog_enable=YES
#
# Permite conexão na porta 20 (ftp-data).
connect_from_port_20=YES
#
#usuarios anonimos terao posse mudada para o usuario especificado em (chown_username) util para administração
#chown_uploads=YES
#chown_username=’usuarios’
#
#log e gravado no caminho especificado, xferlog_std_format = no
xferlog_file=/var/log/vsftpd.log
#
# Se permitido a linha se registro sera escirta no formato padrão do xferlog(estatisticas de transferencia)
#registro /var/log/xferlog
xferlog_std_format=YES
#
#Define  o tempo de desconexao por inatividade
idle_session_timeout=700
#
#Tempo max. por segundo para clientes na transf. de dados
data_connection_timeout=220
#
#Nome do usuario q esta sendo usando pelo ftp para ser previlegiado, pode ser usuado
# para muitas coisas
#nopriv_user=ftpsecure
#
# Comando do vsftp especificos serão permitidos como ‘Abort’ padrão NO
async_abor_enable=NO
#
# transferencia de dados na modalidade ASCII serão honradas para upload/download
#ascii_upload_enable=YES
#ascii_download_enable=YES
#
# Mensagem de boas vindas no ato de conexão
ftpd_banner= Bem vindo ao FTP Server em teste3
#
#Manda msg para usuarios anonimos caso a sessão dele seja recusada
#deny_email_enable=YES
#
# (mensagens)
#banned_email_file=/etc/vsftpd/banned_emails
#
#Quando usuario logar  seu diretorio home e iniciado na sessao
chroot_list_enable=YES
#
#usuarios locais que serao colocados em uma cadeia chroot em seu diretorio home
# chroot_lis -> e a lista de suarios q nao terao acesso aos outros home
chroot_list_file=/etc/vsftpd/chroot_list
#
#Quando YES permite o uso de “ls -R”  Iso e um risco a segurança ele consome muito recurso
ls_recurse_enable=NO
#
# ele corta o nome vsftpd do serviço do PAM
pam_service_name=vsftpd
#
userlist_enable=YES
#O vsftpd funciona na modalidade autonoma, ele não funciona no modo inetd. o vsftp proprio tomara
#o cuidado de escutar e segurar conexões. se for iniciado pelo xinetd deve ficar NO
listen=YES
#
#Se permitido  o vsftpd foi copilado com sustentacao dos tcp_wrappers, as conexoes entradas serao
# alinhadas com o controlo de acesso dos tcp_wrappers.
tcp_wrappers=YES
#
#Porta de conexao do FTP(connect_from_port_20=YES/NO)
#ftp_data_port=20
#
#Se o FTP estiver em modo autonomo essa e a porta que escuta o ftp
#listen_port=21
#
#Taxa de trans. max de usuarios locais
#local_max_rate=20
#
#max. de clientes que pode conectar com o mesmo ip/ no modo autonomo
#max_per_ip=10
#
cmds_allowed
Esta opção especifica uma lista separada por vírgula de comandos de FTP autorizados (após o login. USER, PASS e QUIT são sempre permitidas pré-login). Outros comandos são rejeitados. Este é um método poderoso de realmente bloquear um servidor FTP.

Exemplo:
cmds_allowed = PASV, RETR, QUIT

cmds_denied
Esta opção especifica uma lista separada por vírgula de recusa de comandos de FTP (login post. USER, PASS, QUIT e outros são sempre permitidos pré-login). Se um comando aparece sobre o mesmo e cmds_allowed seguida, a negação tem precedência.

# ABOR – abort a file transfer
# CWD – change working directory
# DELE – delete a remote file
# LIST – list remote files
# MDTM – return the modification time of a file
# MKD – make a remote directory
# NLST – name list of remote directory
# PASS – send password
# PASV – enter passive mode
# PORT – open a data port
# PWD – print working directory
# QUIT – terminate the connection
# RETR – retrieve a remote file
# RMD – remove a remote directory
# RNFR – rename from
# RNTO – rename to
# SITE – site-specific commands
# SIZE – return the size of a file
# STOR – store a file on the remote host
# TYPE – set transfer type
# USER – send username

# ACCT* – send account information
# APPE – append to a remote file
# CDUP – CWD to the parent of the current directory
# HELP – return help on using the server
# MODE – set transfer mode
# NOOP – do nothing
# REIN* – reinitialize the connection
# STAT – return server status
# STOU – store a file uniquely
# STRU – set file transfer structure
# SYST – return system type

deny_file
Esta opção pode ser usada para definir um padrão para nomes (os nomes de diretório e etc), que não deve ser acessível de qualquer forma. Os itens afetados não estão ocultos, mas qualquer tentativa de fazer alguma coisa para eles (mudar download, no diretório, afetar algo dentro do diretório etc) será negado.

Exemplo:
deny_file={*.mp3,*.mov,.private}

hide_file
Esta opção pode ser usada para definir um padrão para nomes (os nomes de diretório e etc), que deve ser escondido de listagens de diretórios. Apesar de ser escondido, os arquivos / diretórios, etc são totalmente acessíveis para os clientes que sabem o que realmente usar nomes. Os itens deverão ser escondidas, se os seus nomes contenham a seqüência dada por hide_file, ou se eles correspondem à expressão regular especificada pelo hide_file. Nota expressão regular que vsftpd de correspondência de código é uma aplicação simples, que é um subconjunto da funcionalidade plena expressão regular. Veja deny_file para obter detalhes sobre exatamente o que a sintaxe regex é suportado.

Exemplo:
hide_file={*.mp3,.hidden,hide*,h?}

Utilização do FTP

Para chamar o FTP o usuario deve digitar:

%ftp

O programa inicia e apresenta o prompt inicial para o usuário ( ftp>), de onde serão solicitados novos comandos. Para conhecer a lista de comandos disponíveis, utilize o comando help:

ftp> help

Para saber a função de cada comando, basta digitar help e o nome do comando. Exemplo:

ftp> help ls

ls – lista o conteúdo do diretório remoto

!ls – Lista os arquivos da máquina local

ftp> help cd

cd – troca de diretório remoto de trabalho

!CMD – Executa na máquina local o comando CMD

lcd – Troca de diretório da máquina local

Os principais comandos de FTP são:

get – recebe um arquivo

mget – recebe múltiplos arquivos

put – envia um arquivo

mput – envia múltiplos arquivos

rename – renomeia um arquivo

delete – deleta um arquivo remoto

binary – seta tipo de transferência binária

quit – termina uma sessão de FTP e sai do programa

Por padrão, o VSFTPD não permite o upload de arquivos pelo usuário anônimo. Além disso, o VSFTPD também não permite que o usuário anônimo navegue pela arvore de diretórios, reforçando assim a segurança local do servidor.

O usuário anônimo está limitado, através de um sistema chroot, ao diretório /home/ftp, logo, todo arquivo deve a ser disponibilizado publicamente deve estar neste diretório.

Para verificar os logs do VSFTPD

# cat /var/log/vsftpd.log

Crie o arquivo /home/user/.message e coloque a mensagem abaixo:

## ESTE SISTEMA É PARA USO EXCLUSIVO DA EMPRESA SUA-EMPRESA
## TODAS AS ATIVIDADES SERÃO REGISTRADAS

Após escrever a mensagem, salve o arquivo e reinicie o serviço FTP.

/etc/init.d/vsftpd restart

SCRIPT PARA CADASTRAR USUÁRIOS NO FTP.

#!/bin/bash

while
clear
echo “… SCRIPT PARA ADICIONAR USUARIO’s NO FTP …”
do
read -p “DIGITE O NOME DO NOVO USUARIO PARA O FTP: ” nome

adduser -g ftp $nome -d /ftp/$nome -s /bin/false
chmod -R 0775 /ftp/$nome
cat /etc/vsftpd/message.txt > /ftp/$nome/.message
echo “USUARIO $nome FOI ADICIONANDO COM SUCESSO. SUA HOME E /ftp/$nome”
read -p “DIGITE (y) PARA CONTINUAR CADASTRANDO, OU QUALQUER OUTRA LETRA PARA ENCERRAR O SCRIPT: ” y

if [ “$y” = y ]; then
continue
else
break
fi

done
echo FIM DO SCRIPT

CRIE O ARQUIVO message.txt COM O ARQUIVO DENTRO DO DIRETÓRIO /etc/vsftpd/

#
# ESTE SISTEMA É PARA USO EXCLUSIVO DA EMPRESA “NOME DA SUA EMPRESA” – www.NOMEDASUAEMPRESA.com.br
# TODAS AS ATIVIDADES SERÃO REGISTRADAS
# FICA VEDADA A UTILIZAÇÃO DESTE SISTEMA PARA TRANSFERÊNCIA DE ARQUIVOS PROTEGIDOS POR DIREITOS AUTORAIS
# E/OU ARQUIVOS QUE ATENTAM CONTRA A LEGISLAÇÃO VIGENTE.
#

Fonte: http://gnulinuxbr.com/2011/01/06/servidor-ftp-vsftpd-no-centos-debian/

CATEGORIES:

Software Livre

Tags:

No responses yet

    Deixe um comentário

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