Mini-Howto
Compilando o Pure ftpd com suporte ao OpenLDAP
Autor: André Alexandre Gaio
aagaio (at) linwork.com.br
O que é o pure-ftpd???
Pure-FTPd é um servidor de ftp rápido, estável, concordante com o
padrão de servidores ftp e muito seguro, é baseado no Troll-FTPd.
Este servidor foi desenhado para ser seguro e não existem
históricos de vulnerabilidades, ele é fácil de configurar e é
especialmente desenhado para kernel's modernos. Foi portado com
sucesso para Linux, FreeBSD,NetBSD, OpenBSD, ISOS, EkkoBSD,
MirBSD, BSDi, Solaris, Darwin, Tru64, Irix, AIX
and HPUX.
Suas características são chroot() e/ou virtual chroot() home
directories,virtual domains, built-in 'ls', anti-warez system,
configurable 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, SSL/TLS e ainda mais.
Quem usa???
Algumas empresas são: (A lista completa pode ser vista em
http://www.pureftpd.org/users.shtml)
SUSE, Silicon Graphics, LinkSys, the Spanish National Research
Network, etc
Compilação e instalação:
1-) Baixe o pacote em:
# wget ftp://ftp.pureftpd.org/pub/pure-ftpd/releases/pureftpd-1.0.20.tar.bz2
2-) Descompacte-o em algum lugar. P. Ex: /var/tmp
# cd /var/tmp; tar -xvjf pure-ftpd-1.0.20.tar.bz2
# cd pure-ftpd-1.0.20
3-) Crie o Makefile´s e os demais arquivos para a compilação com:
# ./configure --with-ldap --with-cookie --with-throttling \
--with-ratios --with-altlog --with-ftpwho –-with-boring \
-–with-language=brazilian-portuguese --with-quotas \
--with-virtualhosts --with-welcomemsg
Isto habilitará suporte à consequentemente:
ao ldap;
fortunes;
controle de banda;
rate de (up|down)loads;
suporte a logs alternativos (o padrão é o syslog);
suporte ao pure-ftpwho (lista de usuários que não podem usar
o ftp);
suporte à pt_BR;
suporte a .ftpquota (controle de quotas pelo próprio daemon)
suporte a vários servidores virtuais com um único ip;
suporte a arquivos welcome.msg com mensagens.
suporte a mensagens profissionais (???).
*** Para maiores informações digite: ./configure --help
4-) Compile com:
# make
5-) Instale:
# make install
OBS: Recomendo o uso do checkinstall. -->
http://freshmeat.net/projects/checkinstall/
6-) O pure-ftpd não necessita de arquivo de configuração, porém
quando usamos informações de autenticação em algum banco de dados,
ldap, etc, é interessante a criação do mesmo no objetivo de
esconder informações sensíveis dos usuários locais que poderiam
vê-las com um ps -axfwww por exemplo.
Crie um diretório no /etc com o nome de pureftpd e copie o
arquivo de configuração de exemplo do diretório /var/tmp/pureftpd-1.0.20/configuration-files para o /etc, e o arquivo que
contém as configurações do ldap que está em /var/tmp/pure-ftpd1.0.20/pureftpd-ldap.conf.
# mkdir /etc/pureftpd
# cp /var/tmp/pure-ftpd-1.0.20/configuration-files/pureftpd.conf /etc/pureftpd
# cp /var/tmp/pure-ftpd-1.0.20/pureftpd-ldap.conf /
etc/pureftpd
7-) Edite o arquivo de configuração de acordo com as suas
necessidades (o arquivo é bem comentado e auto-explicativo).
Não se esqueça do principal, para fazer com que ele reconheça as
configurações do ldap descomente a linha que contém a diretiva
"LDAPConfigFile" e referencie o arquivo /etc/pureftpd/pureftpdldap.conf.
-> LDAPConfigFile
/etc/pureftpd/pureftpd-ldap.conf
8-) Copie o arquivo /var/tmp/pure-ftpd-1.0.20/configurationfiles/pure-config.pl para /usr/local/bin, e ajuste as permissões.
# cp /var/tmp/pure-ftpd-1.0.20/configuration-files/pureconfig.pl /usr/local/bin
# chmod 700 /usr/local/bin/pure-config.pl
9-) Crie um arquivo rc.pureftpd em /etc/rc.d com o seguinte
conteúdo:
----------------------- < rc.pureftpd > ---------------------#!/bin/bash
function start
{
BIN_DIR=/usr/local/bin
CONF_FILE=/etc/pureftpd/pure-ftpd.conf
[ ! -e "$CONF_FILE" ] && echo "Arquivo de configuração não
encontrado." && exit
if ps -axf | grep -v grep | grep pure-ftpd > /dev/null 2>&1 ;
then
echo "O Serviço já está em execução." ; exit
fi
perl $BIN_DIR/pure-config.pl $CONF_FILE > /dev/null 2>&1
if ps -axf | grep -v grep | grep pure-ftpd > /dev/null 2>&1;
then
echo "Servidor Pure-ftpd iniciado com sucesso."
else
echo "Falha na inicialiazação." ; exit
fi
}
function stop
{
killall pure-ftpd
}
case $1 in
"")
start;;
start)
start;;
stop)
stop;;
restart)
stop; start;;
*)
echo "Opções possíveis: $(basename $0) {stop | start |
restart}" && exit;;
esac
---------------------- </ rc.pureftpd > ---------------------10-) Coloque a permissão de 700 no arquivo:
# chmod 700 /etc/rc.d/rc.pureftpd
11-) Edite o arquivo /etc/pureftpd/pureftpd-ldap.conf:
--------------------< pureftpd-ldap.conf >----------------LDAPServer ldap.seudominio.com.br <-- Seu servidor ldap
LDAPPort
389
<-- Porta de seu servidor ldap
LDAPBaseDN ou=Users,ou=TI,o=enterprise,c=BR <-- O contexto se seus
usuários na árvore
de diretórios
LDAPBindDN cn=Manager,c=BR
<-- O usuário para a conexão ao
LDAP
LDAPBindPW senha
<-- Senha do user definido em
LDAPBindDN
LDAPDefaultUID 500
<-- UID default quando o
usuário no ldap não possuir
este campo definido.
LDAPDefaultGID 100
<-- GID default quando o
usuário no ldap nao possuir
este campo definido.
---------------------< /pureftpd-ldap.conf >-----------------12-) Copie o schema do pureftpd para o diretório de schemas do
OpenLDAP.
# cp /var/tmp/pure-ftpd-1.0.20/pureftpd.schema /
usr/local/etc/openldap/schema
13-) Inclua o schema do pureftpd no final dos "includes" no
arquivo slapd.conf.
include
/usr/local/etc/openldap/schema/pureftpd.schema
14-) E agora o macete da história. A fim de não termos a
desagradável mensagem de "object class violation" quando
importarmos os usuários com as propriedades do pureftpd, modifique
o arquivo /usr/local/etc/openldap/schema/pureftpd.schema:
Onde está:
---> objectclass ( 1.3.6.1.4.1.6981.11.2.3 NAME 'PureFTPdUser'
Coloque:
---> objectclass ( 1.3.6.1.4.1.6981.11.2.3 NAME 'PureFTPdUser' SUP
top AUXILIARY
15-) Reinicie o slapd.
16-) O arquivo LDIF com os atributos para os usuários do pureftpd
são:
----------------------- <arquivo ldif> ------------------dn: uid=user,ou=Users,ou=TI,o=enterprise,c=BR
objectClass: PureFTPdUser
objectClass: posixAccount
cn: User da Silva
uid: usilva
uidNumber: 888
gidNumber: 888
homeDirectory: /home/usilva
userPassword: {SSHA}1w58NLo5z...
FTPStatus: enabled
FTPQuotaFiles: 50
FTPQuotaMBytes: 10
FTPDownloadBandwidth: 50
FTPUploadBandwidth: 50
FTPDownloadRatio: 5
FTPUploadRatio: 1
---------------------- </arquivo ldif> --------------------Onde:
FTPStatus: enabled
FTPQuotaFiles: 50
<-- enable/disable o acesso ao ftp
<-- A quota em número de arquivos do
objeto (usuário)
FTPQuotaMBytes: 10
<-- A quota em MB do objeto (usuário)
FTPDownloadBandwidth: 50 <-- A largura de banda máxima para
download
FTPUploadBandwidth: 50
<-- A largura de banda máxima para upload
FTPDownloadRatio: 5
<-- Se você deseja forçar as pessoas a
fazer upload
de novos arquivos antes de poderem
baixar outros arquivos, ratios são
para você. Não se sabe que tipo de
negócio (Warez?) você tem, mas PureFTPd é projetado para favorecer a
todos. ;-)
FTPUploadRatio: 1
<-- Esta linha e a de cima juntas querem
dizer, para você baixar 5 arquivo,
você deve subir pelo menos 1.
17-) Importe o arquivo ldif para a sua base ldap:
# ldapadd -x -v -D 'cn=Manager,c=BR' -W -f <arquivo ldif>
18-) Dicas:
18.1-) Os objetos devem ser do tipo "posixAccount", embora seja
possível outros tipos de objetos, leia a documentação para maiores
detalhes.
18.2-) Não se esqueça que a propriedade "loginShell" deve
existir para o objeto e deve apontar para um shell válido
(/etc/shells):
loginShell: /bin/bash
Se isto não for observado você pode digitar um par nome/senha
válidos no login e receber a mensagem:
"Sorry, I can't trust you".
18.3-) Para melhorar a performance de pesquisa ao ldap
acrescente esta linha no final de seu arquivo slapd.conf e dê um
restart no slapd:
-->
index
uid
pres,eq,sub
19-) Inicie o pure-ftpd e faça os testes.
20-) Be happy! :-)
Observação: Este artigo pode ser reproduzido à vontade desde que
seja preservado o nome do autor.
Qualquer dúvida, por favor leia a documentação do programa.
Sugestões? Por favor email-me:
Autor: André Alexandre Gaio
Linwork Informática
aagaio (at) linwork.com.br
"...Porquê Deus amou o mundo de "tal" maneira, que deu o Seu Filho
único para que todo aquele que Nele crer não pereça, mas tenha a
vida eterna..." (João 3:16)
Download

Mini-Howto Compilando o Pure ftpd com suporte ao OpenLDAP