Atualmente estão disponíveis diversos softwares que implementam o servidor FTP. Neste curso nos deteremos às funcionalidades Proftpd, que é um servidor FTP bastante estável e de fácil manutenção. Para instalar o Proftpd em distribuições Debian/Linux utiliza-se o comando:
#apt-get install proftpd
Ao iniciar o processo de instalação será exibida uma tela onde se deve responder de que forma o serviço deverá ser configurado. Para criar um servidor FTP que possa responder por muitos acessos é indicado informar que o servidor deverá ser executado de forma autônoma.
O arquivo de configuração do serviço é instalado no diretório /etc/proftpd/ e chama-se proftpd.conf. Outro arquivo que também é instalado é o ftpusersno diretório /etc/, onde é possível informaraosusuários que não podem utilizar o serviço de FTP. No proftpd.conf é possível realizar diversas customizações que determinam a forma como o servidor FTP realizará suas tarefas. Por exemplo, para alterar a porta de comunicação pela qual o servidor responde, basta alterar a cláusula Port, veja o exemplo:
Port 4445
Pode haver situações em que se faz necessário limitar a quantidade de usuários que podem ter acesso a este serviço em um servidor (como para evitar a sobrecarga de acessos ao mesmo, por exemplo). Para realizar essa tarefa utiliza-se a cláusula Maxclients. Veja o exemplo:
MaxClients 10
Assim, limita-se o acesso ao servidor a apenas 10 usuários simultâneos. Quando o décimo primeiro usuário tentar conectar-se ao servidor, terá o seu acesso negado.
Ao realizar o acesso ao servidor por padrão o usuário posiciona-se no seu diretório home onde tem acesso a seus arquivos pessoais, porém, ele pode navegar livremente por vários diretórios do servidor e isto, é claro, pode acarretar problemas. Para evitar esse tipo de comportamento dos usuários utiliza-se uma técnica denominada de jaula, onde se limita o acesso dos usuários exclusivamente ao seu diretório home. Para configurar esta política no servidor é necessário habilitar a cláusula DefaultRoot. Veja o exemplo:
DefaultRoot ~
O "~" é um caractere curinga, que é automaticamente substituído pela pasta home do usuário que está solicitando o acesso.
Vejamos um exemplo prático do uso deste recurso: vamos supor que você seja o administrador de um servidor em um provedor de acesso que armazene paginas web de diversos usuários. Você deve possibilitar que cada um desses usuários atualize o conteúdo de suas páginas, via FTP, no diretório específico onde elas estão armazenadas. Nesse caso, uma política interessante seria você habilitar o recurso de jaula e criar um usuário cujo diretório é o próprio diretório da pagina web. Veja o exemplo:
#adduser --home /var/www/meusite/ --no-create-home usuario
Dessa forma, sempre que o usuário se logar no servidor web, através do cliente FTP, ele será posicionado automaticamente no diretório do seu site e poderá realizar a atualização do seu conteúdo normalmente, porém não terá acesso a mais nenhuma área do servidor. Vale lembrar que para realizar a cópia dos arquivos devemos também ajustar as permissões do usuário deste diretório:
#chown -R usuario. usuario /var/www/meusite/
O proftpd tem suporte a acesso anônimo e para habilitá-lo basta retirar os comentários no bloco de comandos iniciado pela cláusula <Anonymous ~ftp> e encerrado por </Anonymous > no arquivo de configuração do proftpd. No trecho de código a seguir podemos ver a configuração padrão do que regula o acesso anônimo ao servidor:
As linhas 2, 3 e 4 definem como será realizada a autenticação no acesso anônimo. Para realizar este acesso será utilizado um usuário chamado ftp, que foi criado durante a instalação do serviço, que também atenderá pelo apelido anonymous (User Alias). Por padrão, usuário ftp é criado com permissões restritas e está vinculado a um grupo denominado nogroup igualmente limitado. Todos dos diretórios que serão compartilhados anonimamente deverão ser criados no diretório home deste usuário, ou seja, em /home/ftp.
Após a criação desses diretórios que serão compartilhados deve-se realizar o ajuste das permissões, atribuindo a posse desses diretórios ao usuário ftp e seu respectivo grupo. Vamos supor a configuração do compartilhamento anônimo um diretório denominado “publico”:
#cd /home/ftp
# mkdir publico
#chown –R ftp.nogroup publico
Primeiramente devemos nos posicionar no diretório home do usuário ftp e então criar o diretório desejado e a seguir é necessário ajustar as permissões de acesso ao mesmo, ou seja, dando a posse desta pasta para o usuário ftp. Para realizar o acesso a esse diretório compartilhado podemos utilizar qualquer cliente FTP, qualquer como o Internet Explorer(IE), por exemplo, como podemos ver na figura C.2.1.2. Na barra de endereços, devemos informar o endereço IP do servidor ou seu nome DNS e disparar a consulta. Quando o servidor for localizado será solicitado um login. Para realizar acesso anônimo basta informar o usuário ftp ou utilizar seu apelido e no campo senha informar um e-mail qualquer. No caso do IE se você clicar na caixa “Fazer logon anônimo” essas informações são automaticamente inseridas nos campos correspondentes, bastando clicar no botão “Logon” para ter acesso às pastas compartilhadas.
É possível controlar com permissões o acesso às pastas compartilhadas. Nas linhas 12 a 15 do compartilhamento anônimo vê-se que o servidor está restringindo o acesso de leitura e escrita a todas as pastas compartilhadas (<Limit WRITE> DenyAll </Limit>). Esse é o comportamento padrão. Se quisermos compartilhar pastas com permissões diferentes devemos informá-las após esse trecho de código. A ideia é negar todo qualquer acesso e ir liberando de forma controlada o acesso a determinadas pastas. Para controlar o acesso aos diretórios compartilhados anonimamente o proftpd, deve-se declarar o diretório compartilhado através da cláusula <Directory> e controlar as restrições com a cláusula <Limit>. As restrições mais comumente declaradas nesta cláusula são:
Voltando ao exemplo da pasta “publico”: se quisermos que esse diretório tenha permissão apenas de receber arquivos e pastas e não permitir a exclusão dos mesmos, devemos adicionar as seguintes instruções, após a linha 15:
<Directory /home/ftp/publico>
<Limit STOR>
AllowAll
</Limit>
</Directory>
No exemplo, na cláusula Directory informa-se a que pasta este trecho de código se refere (neste caso /home/ftp/publico) e na instrução Limit informamos as restrições de acesso da mesma (neste caso STOR). Neste exemplo, estamos permitindo a execução de uma ação com a instrução AllowAll se quiséssemos negá-la, deveríamos informar DenyAll. Por exemplo, na linha 13 estamos dizendo que a permissão de leitura e escrita está sendo negada para todos (DenyAll) já no trecho acima estamos informando que para o diretório informado é permitido o upload de arquivos e pastas (AllowAll). Para que as restrições se tornem efetivas devem estar encadeadas desta forma, ou seja, em primeiro lugar devem vir as instruções mais restritivas e na sequência as instruções que liberem comedidamente o acesso às pastas compartilhadas no servidor
Para efetivar as alterações realizadas no arquivo de configuração do servidor após salva-lo é necessário reiniciar o serviço através do comando:
#invoke-rc.d proftpd restart
Assim como em todos os demais serviços de rede, além da opção restart podemos gerenciar o proftpd, através dos comandos: invoke-rc.d proftpd start e invoke-rc.d proftpd stop.
Um dos problemas do servidor FTP é que todos os dados trocados entre o cliente e servidor estão desprotegidos e trafegam como plain text. Uma forma de tornar a transferência de arquivos mais segura é utilizar o protocolo SFTP, que é instalado juntamente com o pacote do SSH. Esse protocolo oferece uma interface similar ao FTP, mas a transferência de arquivos é realizada através de um túnel encriptado. O cliente SFTP também é instalado com o pacote SSH nas distribuições Debian. Para utilizá-lo para se conectar a um servidor utiliza-se o comando:
# sftp nome_do_usuario@192.168.1.10
Assim que se estabelece a conexão com o servidor de SFTP, é solicitado a password. Após o login, é possível utilizar os comandos FTP na interface texto. Também é possível se conectar ao servidor, via SFTP, utilizando um cliente gráfico como o WinSCP. Para tanto, ao iniciar o programa basta informar qual será o protocolo e a porta de comunicação que serão utilizadas para acessar o servidor. Veja o exemplo na figura C.2.1.3:
Esse serviço também é gerenciado pelo arquivo de configuração do servidor SSH, o sshd_config. Todas as alterações realizadas neste arquivo (alteração de porta, restrição de usuários, etc.) refletirão também no comportamento do SFTP.
| ||||
| ||||
|