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: 82.819 ]

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


Finalizando e criando usuários



Agora vamos fazer o acesso ficar restrito apenas para você, ou seja, o administrador. Como eu tenho o Apache2 + PHP + MySQL já instalados, vou fazer usando a minha instalação como base, caso não tenha e precise fazer isso, siga o tutorial que escrevi aqui:
Vamos agora mover o diretório do proftpdadmin para um diretório que não seja visto pelo Apache para que possamos criar um vhost:

# mv proftpd_admin-xxx /usr/local/apache2/proftpdadmin
# chown -R nobody:nobody /usr/local/apache2/proftpdadmin


Edite o httpd.conf e adicione as seguintes linhas na parte de adicionar os vhosts:

<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot /usr/local/apache2/proftpdadmin
    ServerName server.dominio.com.br
    ServerAlias proftpdadmin.dominio.com.br
    ErrorLog logs/proftpd-error_log
    CustomLog logs/proftpd-ccess_log common

    <Directory /usr/local/apache2/proftpadmin>
        deny from all
        Options ExecCGI
        AllowOverride AuthConfig
        Order deny,allow
    </Directory>
</VirtualHost>

Agora vamos criar o arquivos .htaccess e o arquivo de senha:

# cd /usr/local/apache2/proftpadmin
# vim .htaccess


E coloque os seguintes parâmetros lá dentro:

AuthType Basic
AuthUserFile /usr/local/apache2/conf/ftppasswd
AuthName ProFTPD
require valid-user
satisfy any

Salve e saia. Agora vamos criar o arquivo de senhas:

# /usr/local/apache2/bin/htpasswd -bc /usr/local/apache2/conf/ftppasswd admin senha
# chmod 644 /usr/local/apache2/conf/ftppasswd /usr/local/apache2/proftpdadmin/.htaccess
# chown nobody /usr/local/apache2/conf/ftppasswd
# chown nobody /usr/local/apache2/proftpdadmin/.htaccess


Pronto, agora reinicie o Apache, quando acessar http://proftpdadmin.dominio.com.br ele vai pedir autenticação, entre como admin e coloque a senha. E assim está pronto.

Só para finalizar uma dica, Toda vez que tiver que criar um usuário você deverá criar o diretório dele manualmente no /ftp e depois adicionar as seguintes linhas ao final do proftpd.conf:

<Directory /ftp/usuario/*>
   AllowOverwrite          on
   HideNoAccess            on
   <Limit STOR MKD WRITE DEL READ>
      AllowAll
   </Limit>
</Directory>

E reiniciar o proftpd:

# killall proftpd
# proftpd


E pronto, vai estar instalado e funcionando :-)

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

Apache2 + PHP + PostgreSQL + phpPgAdmin

Servidor FTP com NetBSD (PureFTPD + MySQL)

Samba + clamav - compartilhamento livre de vírus

Slackware com kernel 2.6.10 - passo a passo

Incremente o iptables com patch-o-matic

Leitura recomendada

Comportamento das tecnologias WEB e seus meios de acesso

Controlando e interagindo remotamente com Elluminate

Compartilhando Internet 3G entre notebook e smartphone Android no Linux

Apache Kafka

Monitorando o uso do MSN com o IM Sniffer

  
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