Visite também: Br-Linux ·  VivaOLinux ·  LinuxSecurity ·  Dicas-L ·  NoticiasLinux ·  SoftwareLivre.org ·  [mais]
Voltar   Under-Linux.org > UnderLinux Wiki
Fóruns Wiki Classificados Videos Jogos Grupos Sociais RSS Feeds FAQ Termos de Uso Contato Sobre
Registrar FotosBlogs Calendário Marcar Fóruns Como Lidos

Publicidade

Ferramentas pessoais
Publicidade

From UnderLinux Wiki

VSFtpD usando autenticação MySQL

Tabela de conteúdo

Introdução

O foco deste artigo é mostrar como fazer a configuração do VSFtpD usando autenticação baseada em MySQL. Encontrei um pouco de dificuldade para fazer esta configuração, visto que conhecia muito pouco de PAM e de VSFtpD, e também porque encontrei pouca documentação sobre esse tipo de configuração na internet.

O VSFtpD não possuí suporte nativo a autenticação via MySQL, mas possuí suporte a autenticação via PAM, e, usando o PAM, podemos fazer a autenticação baseada no MySQL.

Estaremos assumindo aqui, que os usuários estarão armazenados um uma tabela MySQL, mas que os usuários existirão localmente também, afinal eles precisam ser os donos dos seus arquivos. Aqui não será permitido logins anônimos, somente personificados.

Assumiremos também que o VSFtpD irá rodar em modo standalone - e não sobre o "xinetd/inetd" - e que o PAM estará com a configuração sendo feita por diretório "/etc/pam.d/" e não por arquivo único "/etc/pam.conf".

Instalação do VSFtpD

A instalação do VSFtpD é extremamente simples e rápida:

Baixar o fonte de: "http://vsftpd.beasts.org"

# tar xvzf vsftpd-1.2.1.tar.gz
# cd vsftpd-1.2.1
# make
# make install
# mkdir /var/ftp
# chown root:root /var/ftp
# chmod og-w /var/ftp

Obs: Assume-se que o usuário 'ftp' já existe na máquina

Instalação do pam_mysql

Baixar o fonte de: "http://pam-mysql.sf.net"

# tar xvzf pam_mysql-0.5.tar.gz
# cd pam_mysql
# make
# cp pam_mysql.so /lib/security

Obs: O pam_mysql.c pode ser personalizado para fazer logs em banco de dados das tentativas de autenticação.

Configuração do pam_mysql

Vamos criar o arquivo do PAM para o VSFtpD:

# vi /etc/pam.d/vsftpd

Inserir as linhas:

auth required /lib/security/pam_mysql.so user= passwd= host= db= table= usercolumn= passwdcolumn= crypt=2
account required /lib/security/pam_mysql.so user= passwd= host= db= table= usercolumn= passwdcolumn= crypt=2
session required /lib/security/pam_mysql.so user= passwd= host= db= table= usercolumn= passwdcolumn= crypt=2

OBS: A opção crypt aceita 3 parâmetros:

  • 0 - Senha em texto plano
  • 1 - Senha criptografada usando o comando mysql crypt() / encrypt()
  • 2 - Senha criptografada usando o comando mysql password()

Configuração do VSFtpD

Arquivo de configuração geral: "/etc/vsftpd.conf"

# Desabilitar logins anonimos
anonymous_enable=NO

# Permite login de contas locais ( e usuarios virtuais )
local_enable=YES

# Permite rodar o servidor em modo standalone
listen=YES

# Numero maximo de clientes total e por IP
max_clients=60
max_per_ip=20

# Porta em que o servidor ira rodar
listen_port=21

# Define qual o servico do PAM o vsftpd vai usar
pam_service_name=vsftpd

# Permite o login de usuarios sem entrada no /etc/passwd
guest_enable=YES

# Para os virtual users terem as mesmas permissoes dos usuarios locais
virtual_use_local_privs=YES

# Configuracao por usuario
user_config_dir=/etc/vsftpd_user_conf
local_root=/usr/share/empty

# Para enjaular os usuários em seus homes
chroot_local_user=YES

# O umask padrao do VSFtpD e 077
local_umask=022

# Ativa o log de downloads/uploads
xferlog_enable=YES
xferlog_file=/var/hosting_logs/vsftpd.log

# Timeout de sessoes IDLE
idle_session_timeout=180

# Timeout de conexao
data_connection_timeout=120

# Banner de entrada
ftpd_banner=Meu VSFtpD Server

Arquivo de configuração por usuário: "/etc/vsftpd_user_conf/"

# Especifica onde o usuario vai entrar quando logar
local_root=

# Faz o chown logo apos o upload de um determinado arquivo
chown_uploads=YES

# Nome usuario que sera feito o chown
chown_username=

# Permite Upload / Delete
write_enable=YES

# Usuario local utilizado por aquele login
guest_username=

Arquivo de init: "/etc/rc.d/init.d/vsftpd.init"

#!/bin/sh
. /etc/rc.d/init.d/functions

RETVAL=0
pid=`ps ax|grep /usr/local/sbin/vsftpd|grep -v grep|awk '{print $1}'`

case "$1" in
start)
echo -n "Starting vsftpd: "

if [ "$pid" = "" ]; then
/usr/local/sbin/vsftpd &
success
echo
RETVAL=$?
else
echo "VSFtpD alredy running."
fi
;;
stop)
echo -n "Shutting down vsftpd: "

if [ "$pid" != "" ]; then
killproc vsftpd
success
RETVAL=$?
echo
else
echo "VSFtpD not running."
fi
;;
esac

Finalizando

Com isso encerramos a configuração do VSFtpD, agora basta iniciá-lo:

# /etc/rc.d/init.d/vsftpd start

Espero que este artigo tenha sido útil. Sugestões e críticas, mandem um e-mail para: kamogawa@yahoo.com

Autor

Hélio Rubens Kamogawa kamogawa@yahoo.com Programalista de Sistemas Central Server Informática

http://www.centralserver.com.br

Horários baseados na GMT -3. Agora são 10:40.


Powered by vBulletin®
Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.2.0 ©2008, Crawlability, Inc.
Powered by vbWiki Pro 1.3 RC5. Copyright ©2006-2007, NuHit, LLC