Instalando e Configurando o Pure-FTPd

Instalando o pacote do Pure-ftpd

aptitude -y install pure-ftpd

Agora vamos ajustar ele para rodar como deamon

echo "yes" > /etc/pure-ftpd/conf/Daemonize

Vamos proibir o login de anomymous

echo "yes" > /etc/pure-ftpd/conf/NoAnonymous

Vamos habilitar o chroot

echo "yes" > /etc/pure-ftpd/conf/ChrootEveryone

Vamos habilitar o nosso servidor escutar somente em ipv4

echo "yes" > /etc/pure-ftpd/conf/IPV4Only

Vamos limitar a quantidade de Cliente para 10

echo "10" > /etc/pure-ftpd/conf/MaxClientsNumber

Vamos limitar a quantidade de conexões de um IP

echo "2" > /etc/pure-ftpd/conf/MaxClientsPerIP

Vamos ajustar os logs

echo "ftp" > /etc/pure-ftpd/conf/SyslogFacility

Vamos habilitar o verbose nos logs para termos mais informações sobre o que os usuário estão fazendo

echo "yes" > /etc/pure-ftpd/conf/VerboseLog

Vamos habilitar a listagem de arquivos ocultos

echo "yes" > /etc/pure-ftpd/conf/DisplayDotFiles

Vamos desabilitar a resolução de nomes nos logs

echo "yes" > /etc/pure-ftpd/conf/DontResolve

Vamos ajustar o tempo máximo que um cliente pode ficar ocioso

echo "10" > /etc/pure-ftpd/conf/MaxIdleTime

Vamos ajustar o uid mínimo para efetuar login no ftp

echo "1000" > /etc/pure-ftpd/conf/MinUID

Vamos habilitar o usuário a poder escrever ou remover arquivos ocultos

echo "no" > /etc/pure-ftpd/conf/ProhibitDotFilesWrite

Vamos habilitar o usuário poder ler arquivos ocultos

echo "no" > /etc/pure-ftpd/conf/ProhibitDotFilesRead

Vamos habilitar o servidor a nunca deixar sobreescrever arquivos

echo "no" > /etc/pure-ftpd/conf/AutoRename

Vamos desabilitar o usuário a mudar a permissão de seus arquivos

echo "yes" > /etc/pure-ftpd/conf/NoChmod

Vamos habilitar a criação do diretório home caso não exista

echo "yes" > /etc/pure-ftpd/conf/CreateHomeDir

Vamos habilitar o percentual máximo de uso do disco, com isso quando chegar a este ponto não vamos mais habilitar uploads

echo "85" > /etc/pure-ftpd/conf/MaxDiskUsage

Vamos habilitar proteção contra usuário fazer coisa errada como chmod 0 nos arquivos

echo "yes" > /etc/pure-ftpd/conf/CustomerProof

Agora já podemos reiniciar o serviço

/etc/init.d/pure-ftpd restart 

Vamos criar um usuário para testar a conexão

useradd -m douglas -s /bin/bash

Vamos setar uma senha para o usuário douglas

passwd douglas

Agora vamos testar a conexão com o servidor ftp

ftp localhost
ftp: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.
220---------- Welcome to Pure-FTPd [privsep] [TLS] ----------
220-You are user number 1 of 50 allowed.
220-Local time is now 17:33. Server port: 21.
220-This is a private system - No anonymous login
220 You will be disconnected after 15 minutes of inactivity.
Name (localhost:root): douglas
331 User douglas OK. Password required
Password:
230 OK. Current restricted directory is /
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> quit
221-Goodbye. You uploaded 0 and downloaded 0 kbytes.
221 Logout.

Habilitando o TLS

Habilitando que o TLS, se o valor for 1 podemos utilizar ou não a opção de TLS se o valor for dois é obrigatório utilizar o TLS na conexão.

echo "1" > /etc/pure-ftpd/conf/TLS

Vamos acessar o diretório que vai armazenar as nossas chaves

cd /etc/ssl/private 

Agora vamos gerar a nossa chave auto-assinada

openssl req -x509 -nodes -newkey rsa:1024 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem 
Generating a 1024 bit RSA private key
.........++++++
...................................................................................................................................................++++++
writing new private key to '/etc/ssl/private/pure-ftpd.pem'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:BR
State or Province Name (full name) [Some-State]:Parana
Locality Name (eg, city) []:Curitiba
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Douglas 
Organizational Unit Name (eg, section) []:IT
Common Name (e.g. server FQDN or YOUR name) []:pure.douglasqsantos.com.br
Email Address []:douglas.q.santos@gmail.com

Agora vamos ajustar a permissão da nossa chave

chmod 400 pure-ftpd.pem

Agora vamos reiniciar o serviço

/etc/init.d/pure-ftpd restart 

Referências