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

Putftpd Tutorial - Servidor FTP Seguro e Robusto

Tabela de conteúdo

Introdução

Imagine um servidor ftp com essas características: robusto, seguro, autenticação totalmente separada do sistema, controle da quantidade de arquivos, controle do tamanho dos arquivos e que so permita o envio de arquivos. Se você precisa de algo desse tipo leia esse tutorial :-).

O Putftpd reúne todas as características acima além de ser de fácil instalação e configuração. O mesmo trata-se de um patche para o Publicfile, depois do patche modificar alguns arquivo fonte o resultado da compilação sera o putftpd.

Arquivos necessários

Instalação

Para começar vamos instalar as dependências para o putftpd que são o "daemontools" e o "ucspi-tcp", lembrando que todos os arquivos estão localizados em "/usr/local/src".

bash-2.05a# cd /usr/local/src/
bash-2.05a# tar -xvzf daemontools-0.76.tar.gz
bash-2.05a# cd admin/daemontools-0.76/
bash-2.05a# package/install
bash-2.05a# cd /usr/local/src/
bash-2.05a# tar -xzvf ucspi-tcp-0.88.tar.gz
bash-2.05a# cd ucspi-tcp-0.88/
bash-2.05a# make setup check

Agora vamos descompactar o fonte do publicfile e aplicar o patche putftpd

bash-2.05a# cd /usr/local/src/
bash-2.05a# tar -xvzf publicfile-0.52.tar.gz
bash-2.05a# cd publicfile-0.52/
bash-2.05a# gzip -dc /usr/local/src/putftpd-0.1.patch.gz | patch -p1
bash-2.05a# make setup check

O putftpd foi instalado no diretório "/usr/local/putftpd"

Configuração

O putftpd gera um binário chamado configure localizado no diretório "/usr/local/putftpd/bin", executando esse arquivo temos a seguinte resposta

bash-2.05a# /usr/local/putftpd/bin/configure

configure: usage: configure acct logacct /public

Traduzindo isso temos

acct: usuário responsável pela execução do putftpd
logacct: usuário responsável pelos logs do putftpd
/public: diretório base do putftpd

Criando os usuários

bash-2.05a# groupadd putftpd
bash-2.05a# useradd -g putftpd -s /bin/false putftpd
bash-2.05a# useradd -g putftpd -s /bin/false putlog

Agora executando o configure novamente para finalizar

bash-2.05a# /usr/local/putftpd/bin/configure putftpd putlog /public

Como visto o diretório base escolhido foi o "/public", vamos acessa-lo

bash-2.05a# cd /public/
bash-2.05a# ls

ftp-incoming putftpd

Agora para que o putftpd inicie basta criar um link simbólico do diretório /public/putftpd em /service

bash-2.05a# ln -s /public/putftpd/ /service/

Para verificar se o putftpd foi iniciado basta olhar os processos que estão em execução e verificar a existência dos processos mostrados abaixo

bash-2.05a# ps -aux

root 3026 0.0 0.0 1272 296 ? S 21:37 0:00 supervise putftpd
root 3027 0.0 0.0 1272 296 ? S 21:37 0:00 supervise log
root 3028 0.0 0.0 1296 300 ? S 21:37 0:00 tcpserver -vDRHl0 -B220 Features: a p .?? 0 2001 /usr/local/putftpd/bin/putftpd
putlog 3029 0.0 0.0 1284 288 ? S 21:37 0:00 multilog t ./main -* +* * status: * =status

Lembrando que o putftpd roda por padrão na porta 2001

Criando usuários

O processo para criação de usuários no putftpd é bastante simples, basta criar um diretório com o mesmo nome do login do usuário dentro de "/public/ftp-incoming", no exemplo abaixo eu vou criar o usuário allisson

bash-2.05a# cd /public/ftp-incoming/
bash-2.05a# mkdir allisson

Para definir uma senha para o usuário "allisson" basta criar um arquivo com o nome .passwd (incluindo o ponto) contendo a senha dentro do diretório "/public/ftp-incoming/allisson" como mostrado abaixo

bash-2.05a# cd allisson/
bash-2.05a# echo 123456 > .passwd
bash-2.05a# cat .passwd

123456

Por fim vamos criar mais dois arquivos dentro do diretório "/public/ftp-incoming/allisson", o primeiro com o nome de ".maxfiles" (incluindo o ponto) deve ter em seu conteúdo o numero máximo de arquivos permitido ao usuário

bash-2.05a# echo 10 > .maxfiles

O outro arquivo deve ter o nome de ".maxfilesize" e no seu conteúdo deve conter o tamanho máximo permitido ao usuário

bash-2.05a# echo 1000000 > .maxfilesize

Para funcionar o diretório "/public/ftp-incoming/allisson" tem que ter seu dono e grupo setados corretamente como mostrado abaixo

bash-2.05a# chown putftpd.putftpd /public/ftp-incoming/allisson/ -R

Testando

Agora com um usuário criado chegou a hora de testar o putftpd

bash-2.05a# ftp localhost 2001

Connected to localhost.

220 Features: a p .

Name (localhost:root): allisson

331 Password required.

Password:

230 Ok, logged in.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp> put /etc/passwd passwd

local: /etc/passwd remote: passwd

200 PORT Okay.

150 Making transfer connection...

226 Success, now total filesize is 900.

900 bytes sent in 0.000117 secs (7.5e+03 Kbytes/sec)

ftp> ls

200 PORT Okay.

150 Making transfer connection...

-rw-r--r-- 1 pub pub 900 Jan 17 00:00 passwd

226 Success.

ftp> exit

221 Bye.

Alterando a porta padrão do putftpd

O putftpd roda sobre a porta 2001 por padrão, para alterar a porta basta editar o arquivo "/public/putftpd/run" e mudar o valor 2001 para o desejado. Abaixo segue o "/public/putftpd/run" original.

bash-2.05a# cat run
#!/bin/sh

exec 2>&1

exec envdir ./env softlimit -o20 -d50000 tcpserver -vDRHl0 -B'220 Features: a p .

' 0 2001 /usr/local/putftpd/bin/putftpd

Segue abaixo o /public/putftpd/run modificado para rodar sobre a porta 20202

bash-2.05a# cat run

#!/bin/sh

exec 2>&1

exec envdir ./env softlimit -o20 -d50000 tcpserver -vDRHl0 -B'220 Features: a p .

' 0 20202 /usr/local/putftpd/bin/putftpd

Limitando o acesso ao putftpd

Podemos limitar o acesso ao putftpd por ip, criando o arquivo "/public/putftpd/tcp.putftpd" veja o conteúdo do meu abaixo

bash-2.05a# cat /public/putftpd/tcp.putftpd

192.168.1.:allow
127.0.0.1:allow

Como mostrado acima os endereços ips "127.0.0.1" e "192.168.1.1-192.168.1.255" estão aptos a usar o putftpd. Ainda é necessário transformar esse arquivo para o formato .cdb como descrito abaixo

bash-2.05a# /usr/local/bin/tcprules /public/putftpd/tcp.putftpd.cdb /public/putftpd/tcp.putftpd.tmp < /public/putftpd/tcp.putftpd

Temos que adicionar o parâmetro -x /service/putftpd/tcp.putftpd.cdb no arquivo /public/putftpd/run veja como ficou o meu abaixo.

bash-2.05a# cat run

#!/bin/sh
exec 2>&1
exec envdir ./env softlimit -o20 -d50000 tcpserver -x /public/putftpd/tcp.putftpd.cdb -vDRHl0 -B'220 Features: a p .
' 0 2001 /usr/local/putftpd/bin/putftpd

Finalizando

Resolvi fazer esse tutorial para mostrar mais um programa interessante mais pouco conhecido, espero que sirva para alguém.

Queria lembrar também que o putftpd pode conviver sem problemas com o publicfile

E a minha procura por programas desconhecidos continua :-).




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


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