Por André Jaccon.
A plataforma de banco de dados MySQL é utilizada em boa parte dos servidores de pequenas e médias empresas atualmente. Descomplicada e acessível, pode ser até utilizada por usuários que queiram ganhar experiência na área. Veja como utilizar a plataforma para configurar um servidor de FTP seguro, com a ajuda do software Proftdp e com autenticação monitorada pelo MySQL.
Comece pela instalação do Proftpd. Baixe a última versão estável do Proftpd da web (www.proftpd.org). O Proftpd é um cliente de alta performance para a criação de servidores FTP seguros e tem uma interface muito parecida com os principais softwares do estilo como o Apache. Atualmente está na versão 1.3 e já realiza várias novas tarefas, como melhor administração de sessões SSL. Descomprima o arquivo baixado com o comando:
tar -zxvf proftpd-1.xxx.tar.gz
./configure -sysconfdir=/etc/ -localstatedir=/var/ --with-
modules=mod_sql:mod_sql_mysql --with-modules=mod_sql
make ; make install
A seguir, prepare-se para adicionar os usuários necessários para administração do MySQL:
groupadd proftpd
useradd -g proftpd proftpd
O arquivo proftpd.conf precisará ser editado agora. Você deve modificá-lo adicionando os comandos abaixo:
# DB@host Usuário Senha
SQLConnectInfo proftpd@127.0.0.1 proftpdsenha proftpd
SQLAuthenticate users* groups* usersetfast groupsetfast
SQLAuthTypes Crypt Backend
SQLUserInfo users userid passwd uid gid homedir shell
SQLGroupInfo groups groupid gid members
SQLLog PASS logincount.
Após estes passos, devemos criar um banco de dados com as tabelas que serão utilizadas para a autenticação do Proftpd. Utilize comando abaixo para logar no MySQL:
mysql -u root -p
Após ter seu usuário raiz reconhecido no MySQL, adicione as tabelas necessárias com os comandos abaixo:
mysql> create database proftpd;
mysql> use proftpd;
mysql> CREATE TABLE users (
-> userid VARCHAR(30) NOT NULL UNIQUE,
-> passwd VARCHAR(30) NOT NULL,
-> uid INT UNIQUE AUTO_INCREMENT,
-> gid INT, homedir VARCHAR(255),
-> shell VARCHAR(255)
-> );
mysql> CREATE TABLE groups (
-> groupid varchar(10) NOT NULL default '',
-> gid int(10) unsigned NOT NULL auto_increment,
-> members varchar(255) NOT NULL default '',
-> PRIMARY KEY (gid)
-> ) ;
mysql> INSERT INTO users (uid) VALUES (9999);
mysql> INSERT INTO groups (gid) VALUES (9999);
mysql> DELETE FROM users WHERE uid=9999;
mysql> DELETE FROM groups WHERE gid=9999;
mysql> grant all privileges on proftpd.* to proftpd@localhost identified by 'proftpdsenha';
mysql> quit
É importante deixar sempre prontos os arquivos de log para ver o que acontece durante a instalação. Para preparar os arquivos de log, digite as linhas abaixo:
touch /var/log/profptd.log
touch /var/log/xferlog
chown proftpd.proftpd /var/log/proftpd.log
chown proftpd.proftpd /var/log/xferlog
Em seguida, carregue o daemon do Proftpd utilizando o comando:
/usr/local/sbin/proftpd
Para adicionar usuários no Proftpd, possibilitando o login pelo MySQL, logue-se no bando de dados criado para armazenar as informações dos usuários de FTP:
mysql -u proftpd -p
mysql> INSERT INTO groups(groupid,gid,members) VALUES ('jaccon','100005','');
Com isso, inserimos o grupo jaccon, com GID 100005. Note que usamos valores altos para não haver problemas de conflito de GID no sistema. Agora aproveite e insera o usuário jaccon, com a senha crazydog. Utilize o UID 100005 e GID 100005 com o home em /var/www/htdocs/jaccon, através do comando abaixo:
mysql> INSERT INTO users(userid,passwd,uid,gid,homedir) VALUES ('jaccon', PASSWORD('crazydog'),'100001','100001','/var/www/jaccon');
O próximo passo é sair do MySQL, utilizando o seguinte:
mysql>quit
Para finalizar, crie a pasta home do usuário e não esqueça de deixar claras suas devidas permissões. Para isso, digite:
mkdir -p /var/www/jaccon ; chown -R 100005.100005 /var/www/jaccon
Pronto! Você já fez todos os passos necessários para criar um servidor de FTP seguro com Proftpd e MySQL, dois dos softwares de maior destaque atualmente. Tenha sempre em mente que a segurança é essencial no gerenciamento de aplicativos para servidores e escolha senhas e nomes de usuário que não sejam fáceis de supor para não ter problemas no futuro..