Como configurar um servidor de FTP de forma simples e com host virtual

Este artigo tem por objetivo ajudar os iniciantes em servidores Linux a colocar seu servidor de FTP no ar em poucos minutos. É uma configuração fácil e simples, mas que conta com um certo nível de segurança. Além de exigir autenticação, exige que os usuários saibam o endereço completo, IP e porta onde o serviço está rodando.

[ Hits: 81.499 ]

Por: Andressa Moura em 05/05/2011


Introdução



Instalando o proftpd

Instalação:

# apt-get install proftpd

Adicione o seguinte no arquivo /etc/shells:

/bin/false

Crie o diretório para o serviço, pode ser o padrão /home/ftp ou outro qualquer.

# mkdir /var/ftp

Permissões (levando em conta que é uma pasta para download e upload):

# chmod 777 /var/ftp

Adicionar usuário:

No lugar de /var/ftp coloque o caminho da pasta criada anteriormente.

# useradd USUARIO -p SENHA -d /var/ftp -s /bin/false

Se houver algum problema com a autenticação do usuário, use o comando passwd e redigite a senha.

# passwd USUARIO

A seguir, vamos configurar o proftpd.conf.

Configurando o proftpd.conf

O arquivo de configuração do FTP está em /etc/proftpd/proftpd.conf.

Abaixo está o arquivo padrão, as alterações básicas necessárias estão destacadas. Dependendo de cada caso pode ser necessário alterar mais algum detalhe. No geral, é só copiar o texto abaixo e salvá-lo na mesma pasta e com as mesmas permissões do arquivo original.

Por segurança, pode-se salvar o arquivo original como proftpd.conf.bkp. Assim, se no futuro for preciso, o arquivo ainda estará a disposição.

#
# /etc/proftpd/proftpd.conf -- This is a basic ProFTPD configuration file.
# To really apply changes reload proftpd after modifications.
#

# Includes DSO modules

Include /etc/proftpd/modules.conf

# Set off to disable IPv6 support which is annoying on IPv4 only boxes.
UseIPv6                         on
# If set on you can experience a longer connection delay in many cases.
IdentLookups                    off


### Nome do servidor - pode ser qualquer nome
ServerName                      "meu-ftp"
ServerType                      standalone
DeferWelcome                    on

MultilineRFC2228                on
DefaultServer                   on
ShowSymlinks                    off

TimeoutNoTransfer               600
TimeoutStalled                  600
TimeoutIdle                     1200

DisplayLogin                    welcome.msg
DisplayChdir                    .message true
ListOptions                     "-l"

DenyFilter                      \*.*/


### Nome da pasta criada para o serviço, no caso /var/ftp

DefaultRoot                    /var/ftp


### Não permitir que os usuarios saiam da sua pasta home
#(isso é muito importante, do contrário os usuários poderão ter
#acesso a outras pastas do sistema, o que não seria nada bom.
DefaultRoot                    ~

# Users require a valid shell listed in /etc/shells to login.
# Use this directive to release that constrain.
# RequireValidShell             off


### A porta 21 é a padrão mas pode usar outra, no entanto é preciso especificar o numero
#da porta ao digitar o endereço (ex: ftp://ip:porta)
Port                            1980

# In some cases you have to specify passive ports range to by-pass
# firewall limitations. Ephemeral ports can be used for that, but
# feel free to use a more narrow range.
# PassivePorts                  49152 65534

# If your host was NATted, this option is useful in order to
# allow passive tranfers to work. You have to use your public
# address and opening the passive ports used on your firewall as well.
# MasqueradeAddress             1.2.3.4

# This is useful for masquerading address with dynamic IPs:
# refresh any configured MasqueradeAddress directives every 8 hours
<IfModule mod_dynmasq.c>
# DynMasqRefresh 28800
</IfModule>

# To prevent DoS attacks, set the maximum number of child processes
# to 30.  If you need to allow more than 30 concurrent connections
# at once, simply increase this value.  Note that this ONLY works
# in standalone mode, in inetd mode you should use an inetd server
# that allows you to limit maximum number of processes per service
# (such as xinetd)
MaxInstances                    30

# Set the user and group that the server normally runs at.
User                            proftpd
Group                           nogroup

# Umask 022 is a good standard umask to prevent new files and dirs
# (second parm) from being group and world writable.
Umask                           022  022
# Normally, we want files to be overwriteable.
AllowOverwrite                  on

# Uncomment this if you are using NIS or LDAP via NSS to retrieve passwords:
# PersistentPasswd              off

# This is required to use both PAM-based authentication and local passwords
# AuthOrder                     mod_auth_pam.c* mod_auth_unix.c

# Be warned: use of this directive impacts CPU average load!
# Uncomment this if you like to see progress and transfer rate with ftpwho
# in downloads. That is not needed for uploads rates.
#
# UseSendFile                   off

TransferLog /var/log/proftpd/xferlog
SystemLog   /var/log/proftpd/proftpd.log

<IfModule mod_quotatab.c>
QuotaEngine off
</IfModule>

<IfModule mod_ratio.c>
Ratios off
</IfModule>


# Delay engine reduces impact of the so-called Timing Attack described in
# http://security.lss.hr/index.php?page=details&ID=LSS-2004-10-02
# It is on by default.
<IfModule mod_delay.c>
DelayEngine on
</IfModule>

<IfModule mod_ctrls.c>
ControlsEngine        off
ControlsMaxClients    2
ControlsLog           /var/log/proftpd/controls.log
ControlsInterval      5
ControlsSocket        /var/run/proftpd/proftpd.sock
</IfModule>

<IfModule mod_ctrls_admin.c>
AdminControlsEngine off
</IfModule>

#
# Alternative authentication frameworks
#
#Include /etc/proftpd/ldap.conf
#Include /etc/proftpd/sql.conf

#
# This is used for FTPS connections
#
#Include /etc/proftpd/tls.conf

# A basic anonymous configuration, no upload directories.

# <Anonymous ~ftp>
#   User                                ftp
#   Group                               nogroup
#   # We want clients to be able to login with "anonymous" as well as "ftp"
#   UserAlias                   anonymous ftp
#   # Cosmetic changes, all files belongs to ftp user
#   DirFakeUser on ftp
#   DirFakeGroup on ftp
#
#   RequireValidShell           off
#
#   # Limit the maximum number of anonymous logins
#   MaxClients                  10
#
#   # We want 'welcome.msg' displayed at login, and '.message' displayed
#   # in each newly chdired directory.
#   DisplayLogin                        welcome.msg
#   DisplayChdir                .message
#
#   # Limit WRITE everywhere in the anonymous chroot
#   <Directory *>
#     <Limit WRITE>
#       DenyAll
#     </Limit>
#   </Directory>
#
#   # Uncomment this if you're brave.
#   # <Directory incoming>
#   #   # Umask 022 is a good standard umask to prevent new files and dirs
#   #   # (second parm) from being group and world writable.
#   #   Umask                           022  022
#   #            <Limit READ WRITE>
#   #            DenyAll
#   #            </Limit>
#   #            <Limit STOR>
#   #            AllowAll
#   #            </Limit>
#   # </Directory>
#
# </Anonymous>

    Próxima página

Páginas do artigo
   1. Introdução
   2. Criando um host virtual
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Diagnosticando problemas variados em ambientes GNU/Linux (parte 1)

NGinx - Otimizando Recursos Externos Automaticamente

Instalação do CentOS Atomic para Gerenciamento de Containers Docker

OpenVPN + Bridge no Ubuntu Server

WordPress com Docker

  
Comentários
[1] Comentário enviado por brunotec em 05/05/2011 - 13:05h

Simples e Funcional, Parabéns!

Eu mesmo por falta de tempo nunca mexi com o Proftp mas agora vejo o quanto ele é simples!

Voce no final do artigo pede para criar um link de sites-available para sites-enable que se eu não me engano é desnecessário pois pelo menos as páginas que eu crio em sites-available sempre já criam um link para enable.

um abraço.

[2] Comentário enviado por Cabeça de Teia em 05/05/2011 - 13:07h

Muito bom seu artigo, gostei da maneira com a qual você abordou o tema, sou novo na comunidade VOL e estou iniciando meus estudos no GNU/Linux, acredito que será de grande ajuda mesmo... Parabéns por sua contribuição!

[3] Comentário enviado por andressa.moura em 05/05/2011 - 13:53h

Na verdade brunotec, é preciso criar esse link apenas se vc for usar o host virtual do Apache (que nesse caso serviu para mudar a porta padrão e o ip). Se vc criar o host virtual em sites-available (sites disponíveis) e não criar um link apontando para ele em sites-enable (sites habilitados) não vai funcionar.

Isso quer dizer que vc pode ter vários hosts virtuais em sites-avaiable mas habilitar, ou pôr no ar, apenas alguns por usar o link simbólico.

Espero ter esclarecido e obrigada pelo comentário. :)

[4] Comentário enviado por batista em 05/05/2011 - 13:53h

Testei no ubuntu 10.10 e funcionou tranquilo. So deu um erro no comando pra fazer um link ou atalho, entao fiz um cp /etc/apache2/sites-available/virtualhost-ftp /etc/apache2/sites-enable e depois reiniciei o apache e o proftpd. Artigo simples mas muito funcional.
Parabens!!!

[5] Comentário enviado por andressa.moura em 05/05/2011 - 13:59h

Olá batista!

O melhor é usar um link simbólico mesmo, assim se vc alterar o host virtual em sites-avaiable também vai alterar o host em sites-enable.

O comando que está listado no artigo funciona apenas se estiver na pasta /etc/apache2/sites-enable. Dando um ls -l o link deve ficar em azul com uma flechinha apontado para /etc/sites-available/seu-hostvirtual.

Obrigada!

[6] Comentário enviado por brunotec em 06/05/2011 - 11:20h

Obrigado pelo esclarecimento Andressa!

um abraço.

[7] Comentário enviado por ltsuda em 23/09/2013 - 11:09h

Desculpa reviver o topico, mas nao estou conseguindo configurar o apache server + proftpd. Segui TODOS os passos exatamente como esta no tutorial, digito o ip:porta e abre janela pra login. Digito usuario e senha que configurei pelo tutorial, mas fica "pensando" e nao conecta. Instalado em um ubuntu server zerado.

[8] Comentário enviado por andressa.moura em 23/09/2013 - 22:49h

Olá Itsuda!
Você testou o ftp antes de instalar o apache? Procure ver primeiro se o ftp está funcionando corretamente, se estiver tudo ok passe para a configuração do Apache. Cheque também as permissões de arquivos e se o usuário está funcionando. Não sei por que mas se não fizer o comando "passwd usuario" depois de criá-lo ele não funciona mesmo que vc tenha inserido a senha no comando anterior.
Espero ter ajudado! Obrigada pela participação no tópico!

[9] Comentário enviado por ltsuda em 26/09/2013 - 10:15h

Oi Andressa, consegui configurar certinho agora.


So tenho uma duvida, teria como acessar o site mesmo. Tipo ip:porta no browser e ele aparecer o ftp como um site somente pra download?Acho que essa pagina eh configurada no apache,certo ?


Lembrando que eu consigo acessar o ftp via explorer do windows, filezilla ou qualquer outro software FTP.




Obrigado pela resposta anterior.

[10] Comentário enviado por andressa.moura em 27/09/2013 - 21:31h

Oiii que bom que deu certo!
Qual era o problema? Seria bom compartilhar para ajudar alguém na mesma situação.

Quanto a acessar pelo browser é possível sim. Via explorer você pode editar melhor os arquivos, tanto baixar como postar.
Não tenho como testar aqui mas se me lembro é só colocar ip:porta na barra de endereços e confirmar usuário e senha que você poderá visualizar os arquivos normalmente.

Bom trabalho!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts