Criar servidor FTP externo no Ubuntu 12.04
27 de jun de 2013 - Paulo Dias
Nesse tutorial vou mostrar como fazer as principais configurações necessárias para ter um servidor FTP externo, ou seja, acessível de qualquer lugar (que tenha internet :) Para esse tutorial estou usando o Ubuntu 12.04 e estou supondo que você tem um ip fixo ou sabe usar algum serviço como o no-ip.
O primeiro passo é instalar o proftpd, para isso digite no terminal:
sudo apt-get install proftpd
Com o proftpd instalado o próximo passo é alterar o arquivo /etc/proftpd/proftpd.conf, mas antes faça um backup da configuração padrão:
sudo cp /etc/proftpd/proftpd.conf /etc/proftpd/proftpd.conf-original sudo nano /etc/proftpd/proftpd.conf
Nesse arquivo verifique se as seguintes linhas estão presentes e com essa configuração:
ServerName "Nome para o seu servidor" ServerIdent on "Mensagem para os usuarios" ServerAdmin root@localhost ServerType standalone DefaultRoot ~ RequireValidShell off
onde:
ServerName: É o nome do seu servidor. Ex. Servidor FTP
ServerIdent: É a mensagem que é mostrada quando um usuário vai conectar no servidor.
ServerAdmin: É o e-mail do administrador do servidor.
ServerType: É a forma que proftpd vai trabalhar.
DefaultRoot: É o diretório onde usuário do ftp vai ter acesso.
RequireValidShell: Diz se o usuário precisa ter um shell válido. Ex: bash, sh, csh...
Obs. Essas linhas não estão uma embaixo da outra no arquivo, você vai precisar procurar por elas.
Com o arquivo configurado crie um usuário especificamente para acessar o ftp, com os comandos:
sudo useradd -m -s /bin/false usuario_ftp sudo passwd usuario_ftp
No primeiro comando a flag -m indica que deve ser criada uma pasta para esse usuario em /home/ e a flag -s especifica o shell desse usuário. (nesse caso sem shell ). No segundo comando é definida a senha do novo usuário.
Feito isso reinicie o proftpd com o comando:
sudo etc/init.d/proftpd restart
Pronto com isso seu servidor ftp já deve estar funcionando na rede interna( se não, deixe um comentário :). Para testar acesse a url ftp://localhost com seu navegador padrão. Com tudo funcionando na rede interna, agora é necessário configurar a parte externa.
Para que seja possível acessar o servidor ftp de fora da sua rede é necessário saber o seu ip externo, para isso acesse esse site http://www.whatismyip.com/ .
O mais provável é que o seu ip externo não seja fixo, toda vez que você desligar o seu modem você recebe um ip diferente, se esse for o caso, você vai precisar utilizar o no-ip ou algo semelhante... (no-ip??? clique aqui e veja como usar). Mesmo que seu ip não seja fixo e que você não tenha o no-ip, é possível continuar com esse tutorial, apenas verifique seu ip externo e não desligue nada.( se acontecer de algo ser desligado será necessário verificar o ip novamente)
Altere ou crie as seguinte linhas no arquivo /etc/proftpd/proftpd.conf
MasqueradeAddress aqui.vaiSeu.ip.externo PassivePorts 65500 65534
Obs. Essas linhas se existirem podem ter um # no inicio, você precisa retirar esse caractere.
O seu ip externo na verdade corresponde ao seu modem/roteador, será necessário configurar esse aparelho de forma que ao receber uma conexão ftp ele envie para o seu computador(onde está o proftpd). Para isso é necessário saber o ip da rede interna do seu computador e do seu roteador. Você pode usar os comandos ifconfig e o route para localizar essas informações.


Para acessar seu roteador coloque o ip interno dele no seu navegador, você vai precisar saber o login e a senha para acessar as configurações ( se você não sabe tente usuário admin e senha admin ou clique aqui ). Procure por "Port Forwarding" ou algo parecido, você vai ter que fazer a seguinte configuração: Obs. troque o 192.168.0.20 pelo ip interno do seu computador

Agora reinicie o proftpd novamente e pronto, você já deve ser capaz de acessar seu servidor com o ip externo. É necessário colocar o numero da porta junto do ip externo, Ex. ftp://xxx.xxx.xxx.xxx:2121
Bom, é isso. Dúvida? comenta ae :) !
Paulo Dias
Graduado no curso tecnólogo em análise e desenvolvimento de sistemas. Defensor do Software Livre e da democratização da informação. Possui as certificações Linux LPIC-1 e Java OCA. Atualmente exerce a função de coordenador técnico na área de telecomunicações.
Siga-me no Twitter