DevSecOps

11 jul, 2007

Montando um servidor de FTP no Debian

Publicidade

Olá pessoal. No artigo de hoje irei falar um pouco sobre a transferência de arquivos via FTP.

Mas o que realmente é o FTP?

FTP significa “File Transfer Protocol”, ou seja, “Protocolo de Transferência de Arquivos.” O FTP é a forma mais comum de transferir arquivos na internet, bastante utilizado nos provedores de hospedagem.

Exemplo real de utilização do FTP .

Suponhamos que você acaba de configurar um servidor Web utilizando o Apache e, necessita disponibilizar uma forma de seus clientes publicarem os arquivos em seu servidor, de maneira rápida e segura na área Web que você acabou de configurar. Então surge a pergunta que não quer calar:

Qual a melhor maneira de permitir que os clientes efetuem a publicação de seus arquivos em meu servidor de forma segura ?

A resposta é simples, montando um servidor de FTP .

Existem muitos programas servidores de FTP disponíveis para Linux que atendem essa necessidade, porém o mais utilizado é o ProFtpd. É com ele que iremos configurar nosso servidor.

Por que o ProFtpd ?

O ProFtpd é um software que fornece o serviço de FTP de forma bastante eficiente e, tem como principais características a segurança e flexibilidade.

Dentre as principais vantagens do ProFtpd podemos citar :

Fácil configuração, utilizando um único arquivo de configuração (/etc/proftpd.conf);

Pode ser executado em modo stand-alone ou através do inetd e xinetd, dependendo do sistema;

O PID é executado por um usuário sem privilégios especiais (nobody);

Arquivos de log facilmente configurável de acordo com sua necessidade;

Restrição de acesso via .ftpaccess , similar ao apache .htaccess .

É possível configurar o número máximo de processos em execução, minimizando vulnerabilidades;

Instalando o ProFtpd:

O download do ProFTPd poderá ser feito em: http://www.proftpd.org

A instalação pode ser feita também via APT através do seguinte comando:

apt-get install proftpd

Entendendo a configuração do ProFtpd:

Conforme vimos nas características do ProFtpd, ele é configurado através de um único arquivo de configuração, o /etc/proftpd.conf. O ProFTPd lê esse arquivo toda vez que é iniciado, após realizar alterações neste arquivo, as mudanças somente surtirão efeito após o restart do serviço.

O proftpd.conf utiliza o conceito de contextos em sua configuração, em cada contexto aplicamos diretivas de configuração, ou seja, os contextos são opções globais de um comportamento e, a diretiva seria um sub-comportamento.

Os contextos são divididos em cinco categorias:

Contexto Principal: possui as configurações padrão utilizadas por outros contextos;

Contexto <Directory DIR>: especifica a forma que o programa deve se comportar no diretório.

Contexto <Anonymous DIR>: especifica a forma que o programa deve se comportar quando o usuário anonymous efetuar o login, ou seja, a partir de qual diretório(DIR) ele será servido;

Contexto <Limit AÇÃO>: especifica as ações no ProFTPd que são:

LOGIN – usuário válido se logando. READ – downloads de arquivos. WRITE – uploads de arquivos. STOR – upload de arquivos sem possibilidade ou deletar diretórios.

Contexto <VirtualHost IP>: define a criação de ftp’s virtuais;

Abaixo segue um exemplo de configuração do proftpd.conf , para subir o serviço de FTP autenticado com os usuários do Linux, sem permissão de acesso anônimo e restringindo o acesso dos usuários somente em seu diretório HOME.



ServerName                     "Servidor de FTP Imasters"
ServerType                      standalone
DeferWelcome                    off
MultilineRFC2228                on
DefaultServer                   on
ShowSymlinks                    on
TimeoutNoTransfer               600
TimeoutStalled                  600
TimeoutIdle                     1200
DisplayLogin                    welcome.msg
DisplayFirstChdir               .message
ListOptions                     "-l"
DenyFilter                      \*.*/

Para funcionar em modo Stand-Alone, deve-se usar a porta 21. Somente mudar caso queira configurar um servidor virtual.

Port                            21

Esta opção é utilizada para prevenir ataques do tipo DoS, sendo assim você poderá  aumentar ou diminuir o numero de conexões simultâneas. Esta opção somente tem validade em modo stand-alone.

MaxInstances                    30

Esta opção opção faz com que o usuário acesse somente seu diretório HOME.

DefaultRoot 

Usuário e grupo normalmente utilizado para rodar o servidor de FTP. Esta opção aumenta a segurança do serviço, pois roda com usuário e grupo sem privilégios especiais.

User                            nobody
Group                           nogroup

Umask define as permissões nos diretórios. Umask 022 tem uma boa definição pois não permitirá que o grupo e outros usuários criem diretórios e gravem arquivos.

Umask                           022       022

Descomente essa linha para utilizar o módulo de autenticação via NIS ou LDAP:

PersistentPasswd               off

Descomente essa linha se desejar utilizar o módulo TLS:

TLSEngine                      on

Descomente essa linha se desejar utilizar o módulo de quotas:

Quotas                         on

Descomente essa linha se desejar utilizar o módulo  ratio:

Ratios                         on

Após escrever as configurações acima em seu arquivo /etc/proftpd.conf , inicie o serviço com o seguinte comando:

/etc/init.d/proftpd start

Para checar se o serviço subiu corretamente, utilize o seguinte comando:

netstat -an grep 21

Caso toda a configuração tenha sido realizada corretamente, o servidor irá retornar a seguinte resposta:

tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN

Se a resposta que você obteve foi igual a acima, meus parabéns! Você acaba de configurar seu servidor de FTP seguro e confiável.

Os logs das operações em seu servidor de FTP, serão gravados no arquivo: /var/log/xferlog

Espero que tenha sido útil a todos, até a próxima!