ProFTPD + MySQL - Servidor FTP com usuários em banco de dados

cvs

Aqui vamos instalar o servidor de FTP ProFTPd com suporte a MySQL para criar usuários virtuais e filtrar o IPs que podem se conectar ao serviço, assim aumentando a segurança do servidor e melhorando seu desempenho.

[ Hits: 85.972 ]

Por: Thiago Alves em 26/07/2006 | Blog: http://www.seeufosseopresidente.com.br


Instalações



MySQL


# tar zxf mysql-xx.tar.gz
# cd mysql-xx
# ./configure --prefix=/usr/local/mysql
# make
# make install


Pronto, instalado, agora vamos configurar. Para facilitar, vamos alterar o /etc/profile e inserir a seguinte linha:

export MYSQLPATH=/usr/local/mysql/bin

e alterar o linha do PATH para ficar assim:

PATH="/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/usr/games:$MYSQLPATH"

Agora sim, efetue o logout e depois logue novamente parar entrar em vigor a alteração no profile e agora vamos configurar o MySQL:

# mysql_install_db
# chown -R mysql:mysql /usr/local/mysql/var
# mysqld_safe &
# mysqladmin -u root password 'password'


Pronto, lembre-se de anotar essa senha, senão vai dar trabalho pra conseguir recuperá-la.

ProFTPD


# tar jxf proftpd-xxx.tar.bz2
# cd proftpd-xxx
# ./configure --with-modules=mod_sql:mod_sql_mysql --with-includes=/usr/local/mysql/include/mysql/ --with-libraries=/usr/local/mysql/lib/mysql/
# make
# make install


Pronto, instalação concluída.

ProFTPD-Admin


Agora vamos instalar o proftpd-admin para podermos configurar o proftpd e terminar o tutorial.

# tar xfvz proftpd_admin_v1.0.tar.gz
# cd proftpd_admin_v1.0
# mysql -psenha < misc/database_structure_mysql/db_structure.sql


Vamos ver como está o banco de dados do proftpd:

mysql> use proftpd_admin Database changed mysql> show tables;
+--------------------------+
| Tables_in_proftpd_admin  |
+--------------------------+
| ftpquotalimits           | 
| ftpquotatallies          | 
| grouptable               | 
| usertable                | 
| xfer_stat                | 
+--------------------------+
5 rows in set (0.01 sec)

Se apareceu isso é porque o banco foi criado corretamente.

Vamos para o próximo passo, dar permissão ao diretório logs e criar o diretório onde os usuários vão poder colocar os arquivos que forem "uploadeados".

# chmod -R o+w logs
# mkdir /ftp
Agora vamos editar os arquivos de configuração do proftpdadmin:

# mcedit include_config_oldstyle.php

Altere os seguintes campos:

$config_database_type     = 'MySQL';
$config_database_host     = 'localhost';
$config_database_user     = 'root';
$config_database_passord  = 'senha';
$config_database_database = 'proftpd_admin';

Agora vamos à configuração proftpd.conf, próxima página.

Página anterior     Próxima página

Páginas do artigo
   1. Iniciando
   2. Instalações
   3. proftpd.conf
   4. Bônus - Limitando IPs que podem se conectar
   5. Finalizando e criando usuários
   6. Conclusão
Outros artigos deste autor

Servidor Web com NetBSD (Apache + PHP + MySQL + *)

Tornando o OpenBSD stable

Slackware com kernel 2.6.10 - passo a passo

Snort - The Open Source Network Intrusion Detection System

Criando uma ISO bootável do OpenBSD

Leitura recomendada

Quando seria mais conveniente usar wvdial no terminal para conexões 3G ou EDGE?

Datagramas IP (Protocolo Internet)

VNC + Hamachi

Como configurar uma rádio virtual no Linux (Fedora Core 4)

Sarg + Relatórios Automáticos + Domínio Autenticado + Desbloqueio na Página do Squid

  
Comentários
[1] Comentário enviado por thelinux em 26/07/2006 - 13:37h

Thiago,

Parabéns pelo artigo.

[2] Comentário enviado por fabianotecnico em 26/07/2006 - 13:41h

Eae,

cara

Artigo de Respeito einh...muito bom!!!

[3] Comentário enviado por celiojs em 27/07/2006 - 13:45h

E aí rapaz!!
Mandando ver nos artigos!!!!
Artigo interessante.
Até mais,
Célio

[4] Comentário enviado por Airozi em 28/07/2006 - 02:44h

Legal o artigo, unica coisa ruim e q ele não
cria diretório especificado efim!!

[5] Comentário enviado por gilsonpaulo em 05/11/2006 - 01:56h

SQLHomedirOnDemand on / Adicione esta linha ao proftpd.conf
# se o diretorio nao existir criar no primeiro login

[6] Comentário enviado por baladao em 25/04/2007 - 12:25h

Usamos essa solução em servidores de hospedagem compartilhados, no entanto identificamos um problema que é um grande delay para estabelecer a conexão FTP.

Será pelo volume de acessos que é alto, ou por alguma config?

[7] Comentário enviado por airozi em 25/04/2007 - 21:05h

baladao, vc fez uma filtragem se não é o server que é fraco, link , verificou conf do BD, lembrando que bd que autentica tudo

[8] Comentário enviado por rbg000 em 27/06/2007 - 10:24h

Opa, Legal o artigo, tive um problema na parte do proftpd admin!
Estou com o proftpd e o phpmyadmin instalado e funcionando.
Qdo fui configurar o proftpd admin 1.0.4 tive um problema ao utilizar o comando mysql -psenha < misc/database_structure_mysql/db_structure.sql pois nao achou esse arquivo e tb nao entendi o q ele faz!
Qdo rodo no brownser o proftpd admin ele apresenta o seguinte erro:
Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /var/www/proftpdadmin/includes/db.php on line 72

Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /var/www/proftpdadmin/index.php on line 25

Acredito que ele n esta enxergando minha database.
A distribuicao q estou usando eh o debian 3.1
Grato aguardo um retorno!

[9] Comentário enviado por rbg000 em 27/06/2007 - 13:56h

Acredito q o promema seja o ProFTPD admin identificar o database mysql!! se for o q devo fazer?

[10] Comentário enviado por metall em 14/11/2008 - 17:33h

Boa Tarde Estou implantando esta solucao num servidor Debian 4.0 estou com o seguinte problema apos cadastrar o usuario ele cadastra normal mais aparece este erro quando da um submit

Warning: Missing argument 4 for MySQL::do_add_vhuser(), called in /var/www/ftpadmin/user_list.php on line 11 and defined in /var/www/ftpadmin/class_database_mysql.php on line 343

Warning: Missing argument 5 for MySQL::do_add_vhuser(), called in /var/www/ftpadmin/user_list.php on line 11 and defined in /var/www/ftpadmin/class_database_mysql.php on line 343

Warning: Missing argument 6 for MySQL::do_add_vhuser(), called in /var/www/ftpadmin/user_list.php on line 11 and defined in /var/www/ftpadmin/class_database_mysql.php on line 343

Warning: Missing argument 7 for MySQL::do_add_vhuser(), called in /var/www/ftpadmin/user_list.php on line 11 and defined in /var/www/ftpadmin/class_database_mysql.php on line 343

Warning: Missing argument 8 for MySQL::do_add_vhuser(), called in /var/www/ftpadmin/user_list.php on line 11 and defined in /var/www/ftpadmin/class_database_mysql.php on line 343

Alguem saberia onde qual eh o problema

Desde Ja Agradeço.

Abraço.

[11] Comentário enviado por letwu em 17/03/2009 - 16:00h

Essa parte de limitação de IP's não funcionou aqui comigo não!

Limitei, conforme dito no passo a passo, mas não limitou a ninguém! Acessando tanto internamente quanto externamente, qualquer IP consegue acessar, independente se tem a opção Allow from xxx.xxx.xxx.xx Deny from all

Outro problema que estou tendo é que no Internet Explorer ele lista todos os diretórios, desde a raiz, e preciso que ele fique somente no diretório permitido. Este problema só acontece quando é acessado pelo Internet Explorer. Nos demais navegadores, clientes de email ou mesmo no Explorer não acontece.

PS: já coloquei a opção " DefaultRoot ~ " (sem aspas) no meu arquivo proftpd.conf


Mais alguém teve algum destes problemas?

[12] Comentário enviado por gabrielsimas em 07/04/2010 - 16:43h

Falta uma informação:

Dentro do diretório misc do proftpd_admin, existe uma subdiretório chamado config_sample, dentro dele existe este arquivo proftpd.conf no qual deve ser copiado ou apontado com link dinâmico para o diretório /usr/local/etc/ e lá se encontra justamente este arquivo copiado acima. Segue a linha encontrada no manual do Proftpd_admin:
cp misc/sample_config/proftpd.conf /usr/local/etc/proftpd.conf


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts