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!