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