Seu próprio servidor FTP seguro!

Quem tem um painel de controle, cPanel ou Plesk por exemplo, já tem resolvidas várias questões relacionadas ao serviço de hospedagem, por exemplo a transferência de arquivos via FTP. Claro, estes painéis tentam facilitar o gerenciamento dos seus dados e dos serviços oferecidos o máximo possível. Mas ainda existe o desenvolvedor, o pesquisador, aquela pessoa que desenvolveu um site que precisa ou depende de tecnologias não suportadas nos painéis mas comuns, ou simplesmente aquele cara hardcore, que não quer um painel no meio, e gosta de mexer diretamente no código, nos arquivos de configuração. Para estas pessoas escrevo este tutorial, que mostrará de uma maneira simples e clara, a instalação e funcionamento de um servidor básico de FTP.

Este tutorial é baseado no Pure-FTPd, existem outras opções como vsftpd, mas o Pure-FTPd é o servidor que o cPanel utiliza por default, e nossos testes indicam que é o mais rápido em termos de performance, suporta todos os comandos necessários para qualquer necessidade, escala muito bem e oferece muitas opções de segurança.

Para começar, vamos instalar o servidor:

yum install -y pure-ftpd

O seguinte a fazer, após a descarga e instalação dos pacotes necessários, é configurar o servidor:

vi /etc/pure-ftpd.conf

Comentar a seguinte linha para que fique da seguinte maneira:

# PAMAuthentication yes

E descomentar a seguinte linha:

PureDB /etc/pure-ftpd/pureftpd.pdb

Agora podemos salvar o arquivo:

:x!

Vamos agora configurar a inicialização automática no boot:

systemctl enable pure-ftpd

E vamos iniciar o serviço:

systemctl start pure-ftpd

OK! Neste ponto seu servidor FTP está funcionando, mas e aí? Root não vai, como conecto? Então, lembra aquela linha sobre autenticação que descomentamos lá encima? Ela faz referência ao local onde o Pure-FTPd armazenará os dados dos usuários. Para criar um novo usuário usamos o seguinte comando:

pure-pw useradd $USERNAME -u $USER -g $GROUP -d /caminho/até/a/pasta/desejada

Após a execução do comando será solicitada a senha que autenticará o usuário.

Os campos e variáveis possíveis deste comando são:

$USERNAME = Usuário de FTP

$USER = Usuário do sistema (pode ser apache ou www-data)

$GROUP = Nome do grupo de sistema. (Novamente pode ser apache ou www-data)

/caminho/até/a/pasta/desejada = a pasta que desejamos exportar via FTP (por exemplo /home/www/public_html /)

Para salvar os dados precisamos comitar as mudanças efetuadas, para isto utilizamos o seguinte comando:

pure-pw mkdb

Após salvar, precisamos fazer que o Pure-FTPd leia estas novas configurações, para isto utilizamos este comando:

systemctl reload pure-ftpd

Wow! Neste momento seu server está rodando e seu usuário está liberado para conectar e subir arquivos!

Ok, mas agora preciso garantir a segurança dos meus dados, preciso encriptar as transferências, então, vamos ativar TLS! Isto não é sempre necessário, mas totalmente recomendável.

Para isto, precisamos instalar OpenSSL:

yum -y install openssl

Agora precisamos editar o arquivo de configuração do Pure-FTPd novamente, para habilitar o suporte para conexões TLS:

vi /etc/pure-ftpd.conf

Para aceitar conexões plain FTP e também conexões TLS, setamos a opção 1, para aceitar somente conexões TLS, setamos a opção 2:

# 0 : disable SSL/TLS encryption layer (default).

# 2 : refuse connections that don't use SSL/TLS security mechanisms,

# 1) Your server has been compiled with SSL/TLS support (--with-tls),

TLS 1

Só resta descomentar as seguintes linhas do arquivo para fiquem da seguinte maneira:

TLSCipherSuite           HIGH
CertFile                 /etc/ssl/private/pure-ftpd.pem

  Agora vamos criar o certificado para autenticar as conexões, rodando o seguinte comando:

openssl req -x509 -nodes -days 7300 -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem

O gerador irá solicitar então as seguintes informações:

Country Name (2 letter code) [XX]: <-- Colocar o código de Pais (exemplo., "BR").
State or Province Name (full name) []:<-- Colocar aqui o Estado.
Locality Name (eg, city) [Default City]:<-- Colocar aqui a cidade.
Organization Name (eg, company) [Default Company Ltd]:<-- Aqui devemos colocar o nome da empresa ou organização.
Organizational Unit Name (eg, section) []:<-- Colocar o setor ou divisão da empresa, que seja responsável por este sistema.
Common Name (eg, your name or your server's hostname) []:<-- Colocar aqui o FQDN (exemplo "server.cloudserversan.com").
Email Address []:<-- Endereço de Email.

  Depois setamos as permissões para o certificado:

chmod 600 /etc/ssl/private/pure-ftpd.pem

E por último só resta reiniciar o serviço, para que as nossas configurações entrem em vigor.

systemctl restart pure-ftpd.service

Deu, é isso, fechou, seu servidor FTP está totalmente configurado, funciona perfeitamente e ainda autentica via TLS, o que reduz exponencialmente a possibilidade de invadir seus dados em transito.

Compartilhe esse post

Comentários (0)

Deixe um comentário