quarta-feira, 4 de janeiro de 2012

Configurando ProFTPd e explicando passo a passo - Debian

O ProFTPd é um software que provê serviço de FTP de forma bastante eficiente e tem como característica a segurança e flexibilidade.

Dentre as vantagens do ProFTPd podemos citar as principais:
  • configuração fácil;
  • o PID é executado por um usuário desprivilegiado (nobody);
  • formato do arquivo de log extremamente configurável;
  • permite a configuração do número máximo de processos em execução, minimizando vulnerabilidades; 
     

Instalação

A instalação do ProFTPd no Debian é extremamente simples, basta utilizar o apt-get:

# apt-get install proftpd

Caso não tenha configurado os repositórios oficiais, pode-se utilizar o próprio CD 1 do Debian.

Após instalado, vamos as configurações.


Configurando o ProFTPd

A configuração do ProFTPd é feita basicamente em um único arquivo de configuração, o proftpd.conf, para editá-lo vamos abrí-lo em um editor de texto qualquer, minha escolha foi o vim:

# vim /etc/proftpd/proftpd.conf

Ao abrí-lo, ele já mostra todas as configurações sem muita enrolação, mas no caso, vou especificar somente as que irão ser importantes para deixá-lo funcionando e a seu gosto.

Vamos começar pelo início do arquivo (obviamente), por volta da linha 10, existe a seguinte opção:

UseIPV6                    on

Se sua rede dispõe de suporte IPV6, deixe esta opção como "on" mas se não dispõe e não tem intenção de aplicá-lo na rede, marque esta opção como "off" para melhor desempenho.

Uma opção bem interessante, é a que está na linha 33:

# Use this to jail all users in their homes
# DefaultRoot            ~

(Esta opção só funciona no modo autenticado, obviamente)
Já é auto explicativo, mas para quem não intendeu, esta opção "prende" o usuário na sua pasta home, assim, o usuário só terá acesso aos arquivos da sua pasta home. Em alguns casos esta opção se torna insdispensável, por exemplo, quando é desejável que o usuário tenha uma pasta no servidor com acesso restrito somente a ele.

Para ativá-la, basta somente retirar o "#" da frente da linha, ficando:
# Use this to jail all users in their homes
DefaultRoot               ~

Um pouco mais abaixo, na linha 40, existe a opção port:

# Port 21 is the standard FTP port.
Port                            21

Isto significa que, o servido FTP estará rodando na porta 21, ou seja, sua porta padrão.
Em alguns casos, é provavel que se queira, por questões de segurança, que o ProFTPd rode em outra porta, como por exemplo e aleatoriamente, a porta 44.

Ficando assim:

# Port 21 is the standard FTP port.
Port                            44

Assim, na hora de acessar seu servidor FTP, deverá ser especificada a porta, acessando o endereço mais a porta:

ftp://enderecodoservidor:44

Bem mais abaixo, existe uma regra que se inicia na linha 137 e só termina no fim do arquivo, a linha 176, esta regra define se será necessária a autenticação do usuário para acessar o FTP, isto se torna interessante quando você precisa de um servidor FTP público, onde inúmeras pessoas vão acessar o FTP mas não possuem conta no servidor ou não possuem nenhum tipo de cadastro, simplesmente o que você quer é disponibilizar alguns arquivos públicos no servidor FTP.

Para ativar, deve retirar o comentário de todas estas linhas, começando por <Anonymous ~ftp> e terminando em </Anonymous>, ficando assim:


  <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>
Agora vamos configurar esta regra. Logo no começo, na linha 137, está escrito:

<Anonymous ~ftp>

Isto está definindo que quando o usuário entrar, nao irá pedir senha, e irá ser direcionado para a pasta ~ftp, ou seja, a pasta raiz dele será a pasta ~ftp do sistema.

Lembrando que, o simbolo "~" representa a pasta home do sistema e o nome que vem depois representa o usuário, então se eu digitar o seguinte comando:

# ls ~fred

O sistema me retorna todos os arquivos listados dentro da home do usuário fred, ou seja, vai me retornar o conteúdo da pasta "/home/fred".

Mas, voltando a vaca fria, vamos entender uma situação aleatória:

Digamos que o sistema foi formatado definindo somente 512MB para a partição /home, e no servidor FTP está configurado para que seja aceito conexões anônimas e como pasta raiz a ~ftp, aí meu amigo, eu te pergunto: "É viável um servidor FTP utilizar apenas 512MB?" E ainda deve ser lembrado que existe os usuários do sistema dentro desta mesma partição, concorda comigo que isso vai gerar uma baita dor de cabeça?

Para evitar esses problemas, é aconselhável até que seja criada uma partição extra somente para o servidor FTP, dependendo de sua utilização.

Então, digamos que eu criei uma pasta para o servidor FTP (no caso de se criar uma partição para o FTP, basta montar na pasta e setar para que seja sempre montada lá):

# mkdir /ftp

Lembrando que a pasta pode ser criada no lugar que desejar.
Basta alterar no arquivo a seção <Anonymous ~ftp> para:

<Anonymous /ftp>


Você pode também limitar o número máximo de clientes conectados no servidor simultâneamente alterando a seguinte opção:

MaxClients                   10

Podendo alterar para o valor que achar conveniente, por exemplo 50 pessoas:

MaxClients                   50

Agora, para permitir que os usuário façam uploads para o servidor no modo anônimo, provavelmente na linha 158, procure por:

  <Directory *>
     <Limit WRITE>
         DenyAll
     </Limit>
  </Directory>

E deixe assim:

  <Directory *>
     <Limit WRITE>
         AllowAll
     </Limit>
  </Directory>

Assim, todo usuário que entrar no FTP terá acesso e permissão para alterar o conteúdo da pasta.


Com isso, o servidor está configurado de forma básica e ao seu gosto.

Nenhum comentário:

Postar um comentário

DropBox