Artigos, Instalação e Configuração, Samba4

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 proftpd-mod-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
#
######################################################################
Include                         /etc/proftpd/modules.conf
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 garantido para %u."
User                            ftp
Group                           ftp
DirFakeUser                     on ftp
DirFakeGroup                    on ftp
DeferWelcome                    on
DisplayLogin                    welcome.msg
DisplayChdir                    .message
DefaultRoot                     /home/samba/%u/
DefaultChDir                    /home/samba/%u/
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=%u)
        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
        # Forca a criacao do homedir do usuario ja com permissoes padroes
        LDAPForceGeneratedHomedir       on
	LDAPGenerateHomedir 		on 755
	LDAPForceGeneratedHomedir 	on 755
	LDAPGenerateHomedirPrefix 	/home/samba

#SSL+TLS
</IfModule>

        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>
######################################################################

Testando nosso ambiente.

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

# cd  /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.

2 comentários sobre “Servidor PROFTPD autenticado via SAMBA4 e segurança TLS

  1. cara segui a risca ja pela 5 vez teu tuto… mais nao funfou nao… sempre boto usuario e senha do samba 4 diz que usuario e ou senha esta incorreto..

    da uma força ai….

    ######################################################################
    #
    # Servidor PROFTP TUX LTDA
    #
    ######################################################################
    Include /etc/proftpd/modules.conf
    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 garantido para %u.”
    User ftp
    Group ftp
    DirFakeUser on ftp
    DirFakeGroup on ftp
    DeferWelcome on
    DisplayLogin welcome.msg
    DisplayChdir .message
    DefaultRoot /home/samba/%u/
    DefaultChDir /home/samba/%u/
    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

    #Servidor
    LDAPServer localhost
    #Busca pelo atributo
    LDAPAttr uid SAMAccountname
    #Login de administrado
    LDAPDNInfo “cn=Administrator,cn=Users,dc=projetos,dc=kees,dc=com,dc=br” “c0n3ct@”
    #Autenticação
    LDAPAuthBinds on
    #Busca e tipos de busca
    LDAPDoAuth on “cn=Users,dc=projetos,dc=kees,dc=com,dc=br” (sAMAccountName=%u)
    LDAPDoUIDLookups on “dc=projetos,dc=kees,dc=com,dc=br”
    LDAPDoGIDLookups on “dc=projetos,dc=kees,dc=com,dc=br”
    LDAPQueryTimeout 10
    #uid e guid do usuário e grupo FTP
    LDAPDefaultUID 112
    LDAPDefaultGID 1006
    LDAPForceDefaultUID on
    LDAPForceDefaultGID on
    LDAPForceGeneratedHomedir on
    LDAPGenerateHomedir on 755
    LDAPForceGeneratedHomedir on 755
    LDAPGenerateHomedirPrefix /home/samba

    AllowOverwrite on

    #SSL+TLS

    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

    OBS: meu ftp esta separado do samba 4 e ja alterei o
    LDAPServer localhost (para o ip do meu samba4)

    1. Tem que alterar estas partes também para o seu do seu samba4:

      #Login de administrador
      LDAPDNInfo “cn=Administrator,cn=Users,dc=projetos,dc=kees,dc=com,dc=br” “c0n3ct@”

      #Busca e tipos de busca
      LDAPDoAuth on “cn=Users,dc=projetos,dc=kees,dc=com,dc=br” (sAMAccountName=%u)
      LDAPDoUIDLookups on “dc=projetos,dc=kees,dc=com,dc=br”
      LDAPDoGIDLookups on “dc=projetos,dc=kees,dc=com,dc=br”

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s