Servidor PROFTPD autenticado via SAMBA4 e segurança TLS
Introdução
O Proftpd é conhecido por ser um servidor de FTP seguro, de fácil configuração (baseada no modelo do Apache), bom desempenho e muitos recursos.
Ele permite a utilização de diversos módulos para autenticação dos usuários, LDAP, Radius, Mysql, Postgres, entre outros. Nesse artigo vamos falar sobre a autenticação LDAP com o Proftpd. Dentre as vantagens de se utilizar a autenticação LDAP com o Proftpd podemos destacar a utilização de uma base central de usuários que pode ser compartilhada por diversos servidores, sem a necessidade de criação de usuários locais no sistema, os diretórios dos usuários podem ser criados automaticamente assim que eles conectam-se ao Proftpd. Neste artigo vamos demonstrar sua capacidade de integração com o SAMBA4 (Active Directory Livre) através do modulo mod_ldap.

Instalação
A instalação do Proftpd pode ser feita a partir dos pacotes da sua distribuição preferida ou através da compilação dos fontes.
Compilação
#./configure --prefix=/usr --sysconfdir=/etc/proftpd/ --localstatedir=/var/run --with-modules=mod_tls:mod_ldap # make # make install -> Verificando os módulos instalados: # proftpd -l Compiled-in modules: mod_core.c mod_xfer.c mod_auth_unix.c mod_auth_file.c mod_auth.c mod_ls.c mod_log.c mod_site.c mod_delay.c mod_facts.c mod_ident.c mod_ratio.c mod_readme.c mod_tls.c mod_ldap.c mod_cap.c
* Com os parâmetros de compilação acima, a instalação do Proftpd vai habilitar o suporte a autenticação LDAP e segurança utilizando certificado TLS.
Debian
# apt-get install proftpd-ldap openssl
* Durante a instalação será solicitado escolher o jeito que você quer que o proftp seja iniciado, inetd ou standalone (modo solitário). Escolha standalone (modo solitário).
Configurações
Segue abaixo as configurações que devem ser adicionais ao arquivo de configuração do Proftpd para funcionar a autenticação LDAP.
Gerando chave SSL para TLS
# mkdir /etc/proftpd/cert # openssl req -new -x509 -days 365 -nodes -out /etc/proftpd/cert /proftpd.cert.pem -keyout /etc/proftpd/cert/proftpd.key.pem
Arquivo: /etc/proftpd/proftpd.conf
###################################################################### # # Servidor PROFTP TUX LTDA # ###################################################################### ServerName "ProFTPD TuX LTDA" ServerType standalone ServerAdmin suporte@tux.org ServerIdent off MultilineRFC2228 on SyslogFacility AUTH DefaultServer on ShowSymlinks on Port 21 RootLogin off UseIPv6 off AllowLogSymlinks on IdentLookups off UseReverseDNS off Umask 077 022 MaxInstances 30 MaxClientsPerHost 2 "Você já está com muitas conexões simultâneas." AccessGrantMsg "Acesso anônimo aceito para %u." User ftp Group ftp DirFakeUser on ftp DirFakeGroup on ftp DeferWelcome on DisplayLogin welcome.msg DisplayChdir .message DefaultRoot /home/samba/%u/ DefaultChDir samba AuthOrder mod_ldap.c RequireValidShell off UseFtpUsers off ListOptions "-l" DenyFilter \*.*/ AllowOverwrite on SystemLog /var/log/proftpd/proftpd.log TransferLog /var/log/proftpd/xferlog # Especifica o modo de transferencia padrao (ascii ou binary). DefaultTransferMode binary #Criando a Pasta do usuário no primeiro acesso e já fazendo a copia de skel default CreateHome on 755 skel /home/samba/skel/ # Comunicação com Samba4 <IfModule mod_ldap.c> #Servidor LDAPServer localhost #Busca pelo atributo LDAPAttr uid SAMAccountname #Login de administrado LDAPDNInfo cn=Administrator,cn=Users,dc=tux,dc=org SENHA #Autenticação LDAPAuthBinds on #Busca e tipos de busca LDAPDoAuth on "dc=tux,dc=org" (&(samaccountname=%v)(objectClass=top)(ObjectCategory=user)(objectclass=person)) LDAPDoUIDLookups on "dc=tux,dc=org" LDAPDoGIDLookups on "dc=tux,dc=org" LDAPQueryTimeout 10 #uid e guid do usuário e grupo FTP LDAPDefaultUID 14 LDAPDefaultGID 50 LDAPForceDefaultUID on LDAPForceDefaultGID on </IfModule> <Directory /*> AllowOverwrite on </Directory> #SSL+TLS <IfModule mod_tls.c> TLSEngine on TLSLog /var/log/proftpd/tls.log TLSProtocol SSLv23 TLSOptions NoCertRequest TLSRSACertificateFile /etc/proftpd/cert/proftpd.cert.pem TLSRSACertificateKeyFile /etc/proftpd/cert/proftpd.key.pem TLSVerifyClient off #Para que fique obrigatório o uso de TLS altere para ON TLSRequired off </IfModule> ######################################################################
Teste
Criando a pasta onde irão ficar os arquivos dos usuário, e também cirando o skel padrão, depois iniciando o Proftpd em modo debug:
#mkdir –p /home/samba #mkdir –p /home/samba/skel #echo “Servidor Autenticado via Samba4” > welcome.msg #echo “Seje Bem Vindo” > .message #ls –al -rw-r--r-- 1 root root 15 2010-09-16 10:53 .message -rw-r--r-- 1 root root 15 2010-09-16 10:51 .welcome.msg #proftpd -nd12 192.168.11.1 - ProFTPD 1.3.3a (maint) (built Thu Aug 26 2010 12:18:41 BRT) standalone mode STARTUP 192.168.11.1 - ROOT PRIVS at pidfile.c:48 192.168.11.1 - RELINQUISH PRIVS at pidfile.c:50
Acessando de uma máquina pela primeira vez
#ftp localhost Connected to localhost. 220-Seje Bem Vindo ao FTP TUX LTDA 220 127.0.0.1 FTP server ready Name (localhost:root): administrator 331 Password required for administrator Password: 230-Seje bem vindo 230 Acesso anônimo aceito para administrator. Remote system type is UNIX. ftp> ls -al 150 Opening BINARY mode data connection for file list drwxr-xr-x 2 ftp ftp 4096 Sep 16 13:57 . drwxr-xr-x 2 ftp ftp 4096 Sep 16 13:57 .. -rw-r--r-- 1 ftp ftp 15 Sep 16 13:57 .message -rw-r--r-- 1 ftp ftp 15 Sep 16 13:57 welcome.msg
* No momento do acesso já é criado a pasta e copiado os arquivos e exibido as mensagens que estão gravadas nele.