Railander Marques
Posted on January 30, 2024
Apresentamos um guia fundamental para a criação de um servidor FTP personalizado utilizando o ProFTPD. Este tutorial abrange elementos essenciais que são cruciais para a configuração eficaz do servidor, incluindo:
- Definição do nome do servidor FTP,
- Configuração de portas,
- Especificação da faixa de portas para o modo passivo,
- Ajustes relacionados a logs.
Ao seguir este tutorial, você será capaz de estabelecer um ambiente de servidor FTP personalizando as configurações conforme suas necessidades específicas.
Além disso, foi disponibilizado um script Bash para a criação de usuários FTP no ProFTPD, simplificando o processo e permitindo a rápida configuração de novos usuários com seus respectivos diretórios FTP.
Ao final do tutorial, incluímos um segmento de resolução de problemas (Troubleshooting) que aborda uma possível questão relacionada ao erro 550. O tutorial também fornece comandos úteis para corrigir permissões de diretórios específicos no servidor FTP.
Link do Vídeo: https://www.youtube.com/watch?v=3cUpCeQ5lBQ
Parte 1: Instalação do ProFTPd:
apt update
apt install proftpd -y
Parte 2: Configuração personalizada do ProFTPD:
cp /etc/proftpd/proftpd.conf /etc/proftpd/proftpd.conf.bkp
> /etc/proftpd/proftpd.conf
vim /etc/proftpd/proftpd.conf
Cole o script abaixo:
# Nome do servidor FTP
ServerName "Seu Nome de Servidor FTP"
# Tipo de servidor (standalone = independente)
ServerType standalone
# Define como servidor padrão
DefaultServer on
# Porta 21 é a porta FTP padrão.
Port 21
# Umask 022 é uma boa umask padrão para evitar que novos diretórios e arquivos
# sejam graváveis por grupo e mundo.
Umask 022
# Para prevenir ataques DoS, defina o número máximo de processos filhos
# para 30. Se precisar permitir mais de 30 conexões simultâneas
# de uma vez, simplesmente aumente esse valor.
MaxInstances 30
# Define o usuário e grupo sob o qual o servidor será executado.
User nobody
Group nogroup
# Configuração de Faixa de Portas para Modo Passivo
PassivePorts 49152 65534
# Configurações de Log
ExtendedLog /var/log/proftpd/access.log WRITE,READ default
DisplayLogin "Bem-vindo ao meu servidor FTP"
# Desativação do Acesso Anônimo
<Anonymous ~ftp>
DenyAll
</Anonymous>
# Configurações de usuários
<Global>
RequireValidShell off
DefaultRoot /var/www/html
</Global>
Script para criação de Usuários FTP:
#!/bin/bash
# Script para criar usuário FTP no ProFTPD
echo "########################################################"
read -p "Digite o username ser criado: " username
echo "########################################################"
read -p "Digite a senha do usuário: " password
echo "########################################################"
# Configurações
ftp_root="/var/www/html"
user_group="www-data"
proftpd_conf_dir="/etc/proftpd/conf.d"
user_conf_file="$proftpd_conf_dir/$username.conf"
# Criação do usuário sem pasta home
useradd -M -N -s /bin/false -g "$user_group" "$username"
echo -e "$password\n$password" | passwd "$username" > /dev/null # Redireciona a saída para /dev/null para ocultar a saída padrão
# Criação do arquivo de configuração específico para o usuário
echo -e "\n<Directory $ftp_root>\n UploadOnCreate on\n ForceGroup $user_group\n ForceUser $username\n</Directory>" > "$user_conf_file"
# Reinicia o ProFTPD
systemctl restart proftpd
# Exibe uma mensagem formatada
echo -e "\n#################################################"
echo -e "## Usuário FTP criado com sucesso:"
echo -e "## Usuário: $username"
echo -e "## Diretório FTP: $ftp_root"
echo -e "## Grupo: $user_group"
Troubleshooting:
Obs.: Utilizei o grupo www-data simulando um servidor web com apache2.
Caso receba um erro 550, pode ser a permissão da pasta, você pode corrigir executando o comando:
sudo chmod -R 0775 /var/www/
Este comando altera as permissões recursivamente para o diretório /var/www/ e todos os seus subdiretórios e arquivos. Cuidado ao executar este comando, procure saber se tem algum arquivo sensível dentro desta pasta antes de executar.
sudo chown -R www-data:www-data /var/www/html
Define o grupo (www-data) para todos os arquivos e subdiretórios recursivamente dentro de /var/www/html/uploads.
sudo chmod -R g+s /var/www/html
Define o bit setgid nos diretórios e subdiretórios, garantindo que novos arquivos criados dentro deles herdem o grupo do diretório pai (www-data).
Posted on January 30, 2024
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.