Visite também: Br-Linux ·  VivaOLinux ·  LinuxSecurity ·  Dicas-L ·  NoticiasLinux ·  SoftwareLivre.org ·  [mais]
Voltar   Under-Linux.org Fóruns > UnderLinux Wiki
Wiki Classificados Galeria Reviews Jogos Comunidades RSS Feeds FAQ Termos de Uso Sobre
Cadastre-se FotosBlogs Lista de Membros Calendário Pesquisar Mensagens de Hoje Marcar Fóruns Como Lidos

Ferramentas pessoais
Publicidade

From UnderLinux Wiki

Pure-ftpd Tutorial

Tabela de conteúdo

Introdução

O objetivo desse tutorial é implementar um servidor de ftp que consiga ser seguro e extremamente configurável, o Pure-ftpd é um servidor baseado no Troll-FTPd que consegue reunir essas duas características. Abaixo segue um texto retirado do manual do Pure-ftpd mostrando algumas de suas características.

Pure-FTPd is a fast, production-quality, standard-conformant FTP server, based upon Troll-FTPd.

Unlike other popular FTP servers, it's designed to be secure in default configuration, has no known buffer overflow, it is really trivial to set up and it is especially designed for modern kernels. It was successfully ported to Linux, FreeBSD, NetBSD, OpenBSD, MicroBSD, BSDi, Solaris, Darwin,
Tru64, Irix and HPUX.

Features include chroot()ed and/or virtual chroot()ed home directories, virtual domains, built-in 'ls', anti-warez system, bounded ports for passive downloads, FXP protocol, bandwidth throttling, ratios, LDAP / MySQL / PostgreSQL-based authentication, fortune files, Apache-like log files, fast standalone mode, text / HTML / XML real-time status report, virtual users, virtual quotas, privilege separation and more.

Instalação

Você pode adquirir o Pure-ftpd em [www.pure-ftpd.org], estou assumindo que você tenha baixado o arquivo no diretório "/usr/local/src".

bash-2.05a# cd /usr/local/src/
bash-2.05a# tar -xvzf pure-ftpd-1.0.14.tar.gz
bash-2.05a# cd pure-ftpd-1.0.14/

Recomendo você ler as opções de compilação com o comando "configure --help".

bash-2.05a# ./configure --help

Configurando o Pure-ftpd para usar o método padrão de armazenamento de senhas

bash-2.05a# ./configure --with-everything --with-language=brazilian-portuguese
bash-2.05a# make
bash-2.05a# make install-strip

Configuração

Primeiro temos que certificar se o servidor esta funcionando corretamente, para isso vamos iniciar o Pure-ftpd sem nenhuma opção especial só para testes.

bash-2.05a# /usr/local/sbin/pure-ftpd -B

Essa opção -B força o servidor rodar em background com um daemon do sistema, agora vamos conectar ao nosso servidor para checar se esta tudo em ordem.

bash-2.05a# ftp localhost
Connected to localhost.
220---------- Bem-vindo a Pure-FTPd 1.0.14 ----------
220-Você é o usuário número 1 de 50 permitidos
220-Hora local agora é 16:56 e a carga é 0.22. Porta do servidor: 21.
220 Você será desconectado após 15 minutos de inatividade.
Name (localhost:root): anonymous
230 Usuário anônimo logado
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> quit
221-Adeus. Você enviou 0 e recebeu 0 kbytes.
221 Fim de sessão - tempo de CPU utilizado: 0.020 segundos.

Parece que esta tudo ok, agora vamos dar um olhada nas opções de inicialização que o Pure-ftpd nos oferece.

-4 --ipv4only
-a --trustedgid
-A --chrooteveryone
-b --brokenclientscompatibility
-B --daemonize
-c --maxclientsnumber
-C --maxclientsperip
-d --verboselog
-D --displaydotfiles
-e --anonymousonly
-E --noanonymous
-f --syslogfacility
-F --fortunesfile
-g --pidfile
-G --norename
-h --help
-H --dontresolve
-i --anonymouscantupload
-I --maxidletime
-j --createhomedir
-k --maxdiskusagepct
-K --keepallfiles
-l --login or :
-L --limitrecursion
-m --maxload
-M --anonymouscancreatedirs
-N --natmode
-o --uploadscript
-O --altlog :
-p --passiveportrange
-P --forcepassiveip
-q --anonymousratio :
-Q --userratio :
-r --autorename
-R --nochmod
-s --antiwarez
-S --bind
-t --anonymousbandwidth
-T --userbandwidth or []:[]
-u --minuid
-U --umask
-V --trustedip
-w --allowuserfxp
-W --allowanonymousfxp
-x --prohibitdotfileswrite
-X --prohibitdotfilesread
-y --peruserlimits :
-z --allowdotfiles
-Z --customerproof

Para mais informações sobre cada opção verifique no arquivo README no diretório "/usr/local/src/pure-ftpd-1.0.14/"

Vamos desligar o servidor para usar outras opções.

bash-2.05a# killall pure-ftpd

Agora vamos iniciar o servidor com o limite máximo de 100 usuários 2 usuários por ip e que faça um log de transferências no arquivo "/var/log/pureftpd.log"

bash-2.05a# /usr/local/sbin/pure-ftpd -B -c 100 -C 2 -O clf:/var/log/pureftpd.log

bash-2.05a# ftp localhost
Connected to localhost.
220---------- Bem-vindo a Pure-FTPd 1.0.14 ----------
220-Você é o usuário número 1 de 100 permitidos
220-Hora local agora é 17:26 e a carga é 0.12. Porta do servidor: 21.
220 Você será desconectado após 15 minutos de inatividade.
Name (localhost:root): root
331 Usuário root OK. Senha requerida
Password:
230-Usuário root tem acesso de grupo a: floppy wheel disk adm
230- sys daemon bin root
230 OK. Diretório atual é /root
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> get /etc/passwd passwd
local: passwd remote: /etc/passwd
200 Comando PORT bem sucedido
150 Conectando com a porta 32786
226-Arquivo transferido com sucesso
226 0.000 segundos (medidos aqui), 6.86 Mbytes por segundo
986 bytes received in 0.000336 secs (2.9e+03 Kbytes/sec)
ftp> quit
221-Adeus. Você enviou 0 e recebeu 1 kbytes.
221 Fim de sessão - tempo de CPU utilizado: 0.010 segundos.

Checando o log de transferências

bash-2.05a# cat /var/log/pureftpd.log

localhost - root [24/Mar/2003:17:24:53 -0300] "GET /etc/passwd" 200 986

Note que o esquema é o mesmo dos logs do apache.

Usuários virtuais

A melhor forma de aproveitar todos os recursos que o Pure-ftpd tem a oferecer é usando o esquema de usuário virtual, com esse esquema você separa as contas de ftp em um outro arquivo em vez do famoso /etc/passwd, e ainda pode setar opções como quotas, ratios e bandwidth para cada usuário cadastrado.

Para usar esse esquema é necessário criar um grupo e usuário especifico para o servidor

bash-2.05a# groupadd ftpgroup
bash-2.05a# useradd -g ftpgroup -d /dev/null -s /etc ftpuser

O processo de criação de usuários virtuais é feito pelo programa pure-pw, e tem a seguinte sintaxe para inclusão de um usuário novo.

pure-pw useradd [-f ] -u [-g ]
-D/-d [-c ]
[-t ] [-T ]
[-n ] [-N ]
[-q ] [-Q ]
[-r [/][,[/]]...]
[-R [/][,[/]]...]
[-i [/][,[/]]...]
[-I [/][,[/]]...]
[-y ]
[-z -] [-m]

Vamos adicionar um usuário virtual chamado teste para exemplificar as coisas

bash-2.05a# pure-pw useradd teste -u ftpuser -d /home/ftpusers/teste
Password:
Enter it again:

Se você iniciar o pure-ftpd com a opção "-j" não é preciso criar os diretórios manualmente, a medida que o usuário logar o diretório será automaticamente criado.

Agora o usuário teste foi criado no arquivo "/etc/pureftpd.passwd", note que esse arquivo é semelhante ao "/etc/passwd".

bash-2.05a# cat /etc/pureftpd.passwd

teste:$1$K1XRWeB0$7uiAg6aV2BpHbUN0S47xF1:1008:104::/home/ftpusers/teste/./::::::::::::

Para modificar uma conta ja criada usamos o mesmo comando "pure-pw" como mostrado.

pure-pw usermod -f -u [-g ]
-D/-d -[c ]
[-t ] [-T ]
[-n ] [-N ]
[-q ] [-Q ]
[-r /] [-R /]
[-i /] [-I /]
[-y ]
[-z -] [-m]

Vou modificar a quota do usuário teste para 5 mb.

bash-2.05a# pure-pw usermod teste -N 5

Agora vendo o arquivo "/etc/pureftpd.passwd" novamente

bash-2.05a# cat /etc/pureftpd.passwd

teste:$1$K1XRWeB0$7uiAg6aV2BpHbUN0S47xF1:1008:104::/home/ftpusers/teste/./:::::::5242880:::::

Note que foi adicionado o valor 5242880 ao arquivo depois que foi modificada a quota do usuário.

Caso eu queira tirar o limite de quota para o usuário teste basta eu modificar a quota e deixar o valor nulo ().

bash-2.05a# pure-pw usermod teste -N ''

bash-2.05a# cat /etc/pureftpd.passwd

teste:$1$K1XRWeB0$7uiAg6aV2BpHbUN0S47xF1:1008:104::/home/ftpusers/teste/./::::::::::::

Veja que voltou ao que era antes de setar a quota.

Para deletar um usuário use a seguinte sintaxe.

pure-pw userdel [-f ] [-m]

Para mudar a senha use a seguinte sintaxe.

pure-pw passwd [-f ] [-m]

Para mostrar informações sobre um usuário use a seguinte sintaxe.

pure-pw show [-f ]

Vamos mostrar as informações do usuário teste.

bash-2.05a# pure-pw show teste

Login : teste
Password : $1$K1XRWeB0$7uiAg6aV2BpHbUN0S47xF1
UID : 1008 (ftpuser)
GID : 104 (ftpgroup)
Directory : /home/ftpusers/teste/./
Full name :
Download bandwidth : 0 Kb (unlimited)
Upload bandwidth : 0 Kb (unlimited)
Max files : 0 (unlimited)
Max size : 0 Mb (unlimited)
Ratio : 0:0 (unlimited:unlimited)
Allowed local IPs :
Denied local IPs :
Allowed client IPs :
Denied client IPs :
Time restrictions : 0000-0000 (unlimited)
Max sim sessions : 0 (unlimited)

O Pure-ftpd não lê o arquivo "/etc/pureftpd.passwd" diretamente, ele cria uma pequena base de dados usando o arquivo "/etc/pureftpd.passwd", para criar a base de dados use o comando.

bash-2.05a# pure-pw mkdb

Agora um arquivo chamado "/etc/pureftpd.pdb" foi criado a partir do "/etc/pureftpd.passwd", o conteúdo desse novo arquivo é otimizado para uma leitura mais rápida que um arquivo de texto comum, sendo assim o Pure-ftpd usa o "/etc/pureftpd.pdb" para autenticação de usuários virtuais.

Se você quiser que ao adicionar algum usuário novo ou modificar suas informações o arquivo "/etc/pureftpd.pdb" seja automaticamente atualizado, basta usar a opção -m no final do comando.

bash-2.05a# pure-pw passwd teste -m
Password:
Enter it again:

Neste caso, ao modificar a senha do usuário teste o arquivo "/etc/pureftpd.pdb" foi automaticamente atualizado com a nova senha, lembrando que não é necessário reiniciar o servidor para essas configurações surtirem efeito.

Agora que ja temos um usuário pronto para testar, vamos desligar o servidor para adicionar o suporte a usuários virtuais.

bash-2.05a# killall pure-ftpd
bash-2.05a# /usr/local/sbin/pure-ftpd -B -c 100 -C 2 -O clf:/var/log/pureftpd.log -j -lpuredb:/etc/pureftpd.pdb

Agora vamos ao teste

bash-2.05a# ftp localhost
Connected to localhost.
220---------- Bem-vindo a Pure-FTPd 1.0.14 ----------
220-Você é o usuário número 1 de 100 permitidos
220-Hora local agora é 18:20 e a carga é 0.17. Porta do servidor: 21.
220 Você será desconectado após 15 minutos de inatividade.
Name (localhost:root): teste
331 Usuário teste OK. Senha requerida
Password:
230-Usuário teste tem acesso de grupo a: 104
230 OK. Diretório atual é /
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> pwd
257 "/" é a sua localização atual
ftp> quit
221-Adeus. Você enviou 0 e recebeu 0 kbytes.
221 Fim de sessão - tempo de CPU utilizado: 0.010 segundos.

Note que por padrão o usuário tem seu home como a raiz do servidor ftp, ou seja "/home/ftpusers/teste = /" no servidor ftp.

Para converter usuários contidos no "/etc/passwd" para usuários virtuais do Pure-ftpd use o comando.

bash-2.05a# pure-pwconvert >> /etc/pureftpd.passwd

Com esse comando os usuários do arquivo "/etc/passwd" serão adicionados ao final do arquivo "/etc/pureftpd.passwd", ai depois e so rodar o "pure-pw mkdb" para atualizar tudo

bash-2.05a# pure-pw mkdb

Conclusão

Este foi apenas um tutorial básico sem muitas pretensões, meu objetivo aqui foi de apresentar o Pure-ftpd a comunidade em geral, realmente o software tem inúmeras opções de operação que eu deixei de fora (porque está tudo documentado nos arquivo README) inclusive a interação com banco de dados mysql e postgresql.

Mais uma vez eu recomendo fortemente ler os arquivo README para um aprofundamento melhor no programa.

Queria deixar apenas um pequeno lembrete que o diretório raiz dos usuários anonymous é o diretório do user ftp (/home/ftp).

Um abraço a todos e até a próxima.




Autor: Allisson Azevedo ( allisson@linuxmail.org)
Horários baseados na GMT -3. Agora são 12:58.


Powered by vBulletin®
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd
SEO by vBSEO 3.2.0 ©2008, Crawlability, Inc.