quinta-feira, 13 de dezembro de 2012

Instalando e Configurando um Servidor FTP com ProFTPD


Pessoal hoje iremos abordar o serviço de FTP, o FTP significa File Transfer Protocol (Protocolo de Transferência de Arquivos), e é uma forma bastante rápida e versátil de transferir arquivos (também conhecidos como ficheiros), sendo uma das mais usadas na Internet. A transferência de dados em redes de computadores envolve normalmente transferência de arquivos e acesso a sistemas de arquivos remotos (com a mesma interface usada nos arquivos locais). O FTP (RFC 959) é baseado no TCP, mas é anterior à pilha de protocolos TCP/IP, sendo posteriormente adaptado para o TCP/IP. É o padrão da pilha TCP/IP para transferir arquivos, é um protocolo genérico independente de hardware e do sistema operacional e transfere arquivos por livre arbítrio, tendo em conta restrições de acesso e propriedades dos mesmos. Iremos usar o ProFTP como servidor, ele é uma das aplicações mais usadas do mundo, bem chega de papo e vamos para o que interessa:

Para instala-lo basta:

# aptitude install proftpd

Na hora da instalação você será questionado sobre qual modo de instalação do Proftp, selecione o modo Standalone, é o mais adequado, depois de instalar o Proftp iremos para seu arquivo de configuração onde fica a mágica da coisa, hehehe.

# pico /etc/proftpd/proftpd.conf

Podem os observar que o arquivo de configuração é razoavelmente grande, mas ele é bem fácil de entender.

A primeira coisa a se fazer é modificar a linha UseIPv6 deixando ela como off, pois caso contrario você terá que utilizar o endereço IPv6.

UseIPv6                         off

A próxima linha a ser modificada é a do ServerName, coloque o nome do seu servidor  entre as aspas.

ServerName                      "ODIN"

Agora iremos adicionar a opção AllowForeignAddress, esta linha é a responsável por autorizar as conexões externas. Se estamos usando um FTP, lógico que a intenção não é usa-lo interno, então essa linha deve estar presente no arquivo.

AllowForeignAddress             on

O DefaultRoot é o responsável por limitar o usuário ha sua pasta home ou seja ele fica preso dentro do seu próprio home, ele não é capaz de navegar nos diretórios no sistema.

DefaultRoot                     ~

Outra opção é a RequireValidShell, deixando ela como off o Proftp irá aceitar conexões de usuários que não possuem Shell valida no sistema, consequentemente usuários sem Shell não podem utilizar o SSH por exemplo.

RequireValidShell               off

A próxima opção importante é mudar a porta do Proftp, não escassas de abrir a porta em seu Firewall.

Port                            58791

# iptables -A INPUT –p tcp --dport 58791 -j ACCEPT

Outra linha que não pode ser esquecida é a PassivePorts que define um intervalo de portas para a transferência dos dados, será necessário você aceitar a conexão nessas portas em seu Firewall.

PassivePorts                  27000 28000

# iptables --A INPUT -p tcp --dport 27000:28000 -j ACCEPT

A proxima opção é a MasqueradeAddress que define o ip que ele responderá, adicione o ip do seu Server aqui.

MasqueradeAddress               201.xx.86.xx

Mais uma opção é a MaxInstances que define a quantidade de conexões simultâneas que o Server aceitará.

MaxInstances                    20

Basicamente a configuração é isso ai, reinicie o Proftp.

# /etc/init.d/proftpd restart

Agora pode tentar logar com algum usuário valido no sistema.


Para criar os usuários é interessante cria-lós de Shell:

# adduser --shell /bin/false fulano

Bem é isso ai, até a próxima.

12 comentários:

  1. Onde devo alterar para em vez de digitar meu ip eu digitaria um nome, tipo:

    FTP://matrix:58791

    Posso deixar como proxy transparente? quero que os clientes ao tentar navegar peça nome de usuário e senha.

    ResponderExcluir
    Respostas
    1. Edvan resolução de nomes se faz com DNS, vc vai precisar de um DNS que responda pelo seu nominio, seja ele publico ou não, não entendi sua segunda pergunta, o que tem haver proxy tranparente com ftp,pode explicar melhor por favor?

      Excluir
    2. Nada haver, essa pergunta do proxy tranparente era para ser num outro tópico seu que li, me atrapalhei e postei sem me aperceber.

      O FTP está funcionando perfeitamente, agora sobre o DNS estou vendo como se faz!..

      Excluir
  2. Este comentário foi removido pelo autor.

    ResponderExcluir
  3. Amigo essa regra está errada, por isso que nao estava conseguindo:

    errada: iptables –A INPUT -p tcp –dport 58791 -j ACCEPT
    certa: iptables -A INPUT -p tcp –-dport 58791 -j ACCEPT

    ResponderExcluir
    Respostas
    1. Amigo a regra esta certa, o problema é que o editor de texto unil os dois ifens, se vc tivesse escrito a regra ao inves de copiar e colar isso não teria acontecido, existem outros posts aqui no blog falando sobre iptables.
      obs: a sintaxe já foi corrigida.

      Excluir
  4. Realmente eu copiei e cole.

    O problema é nos hifens que unil, mais a segunda regra foi normal, copiei e colei e deu certo:
    iptables -A INPUT -p tcp --dport 27000:28000 -j ACCEPT


    OBS: Meu FTP está funcionando perfeitamente, mais o acesso externo não dar certo tentei de tudo.

    P<S: Vem um cabo de rede do Modem do Apartamento do meu pai para meu roteador. Só que o modem do meu pai tem a função de roteador também, ele joga o sinal wirelles com a faixa de ip 192.168.0.1, só que meu roteador DI524 recebe o sinal do modem e joga outra faixa que é 192.168.1.1, Por isso acho que nao vai dar certo.

    ResponderExcluir
  5. Acesso externo... o q fazer ?? não consigo achar solução, já tentei de tudo.

    ResponderExcluir
  6. Ola pessoal tenho uma maquina rodando o proftpd funcionando tudo certo. Porem estou com problema no usuario qe esta conseguindo navegar pelo servidor....Alguem de me ajudar

    ResponderExcluir
  7. Ola pessoal tenho uma maquina rodando o proftpd funcionando tudo certo. Porem estou com problema no usuario qe esta conseguindo navegar pelo servidor....Alguem de me ajudar

    ResponderExcluir
  8. Oi Fernando, qual o problema exatamente? Você está acessando pelo navegador ou por um cliente ftp? Está conseguindo autenticar?

    ResponderExcluir
  9. Onde eu seto a pasta onde os arquivos vão ficar. Coloquei ~ mais nada até agora

    ResponderExcluir