Servidor Debian - SFTP
#Instalar SFTP
#Instalar Open SSL
sudo apt install vsftpd
sudo apt install openssl
# Criar diretório para o FTP
sudo mkdir -p /var/arquivos
sudo chown root:root /var/arquivos
sudo chmod 755 /var/arquivos
# Criar diretório para o usuário FTP
sudo mkdir -p manuel
#Como vamos utilizar uma pasta diferente da home do usuário para o SFTP, usamos esse comando. Caso for usar a home, não precisa rodar esse comando
sudo usermod -d /var/arquivos manuel
# Gerar certificado SSL/TLS autoassinado
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
# Ajustar permissões para o certificado
sudo chmod 600 /etc/ssl/private/vsftpd.pem
# Fazendo backup do vsftpd.conf original
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak
# Configurar vsftpd para FTPS
listen=YES
listen_port=22
#Todas essas linhas vão no final do arquivo
ssl_enable=YES
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
require_ssl_reuse=NO
ssl_ciphers=HIGH
local_enable=YES
write_enable=YES
chroot_local_user=YES
pasv_enable=YES
pasv_min_port=40000
pasv_max_port=50000
userlist_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_deny=NO
# Criar e adicionar o usuário FTP
sudo useradd -m -d /home/manuel -s /usr/sbin/nologin manuel
sudo passwd manuel
# Adicionar o usuário ao arquivo de lista de usuários permitidos no FTP. Basta escrever o nome do usuário. Um por linha.
/etc/vsftpd.userlist
# Configurar firewall
sudo ufw allow 21/tcp
sudo ufw allow 40000:50000/tcp
sudo ufw enable
# Reiniciar o serviço vsftpd
sudo systemctl restart vsftpd
sudo systemctl enable vsftpd
Prontinho!
No Windows você pode acessar através do Filezilla!
Sobre o FTPS:
FTPS precisa proteger também a conexão de dados (não só a de comando).
Em modo ativo, a proteção é muito complicada.
Em modo passivo, é fácil proteger tudo com TLS.
Por isso praticamente todos os clientes e servidores FTPS usam modo passivo.
Quando falamos de FTP ou FTPS, existem dois modos principais de conexão:
Modo ativo (active mode)
Modo passivo (passive mode)
Como funciona o modo ativo:
O cliente (tipo FileZilla) conecta no servidor pela porta 21 para comandos (login, listar arquivos, etc.).
Depois, o servidor tenta abrir uma nova conexão de volta para o cliente, usando uma porta aleatória para enviar os dados (arquivos, listagens).
Problema:
Se o cliente está atrás de NAT/roteador (como quase todo mundo na internet doméstica), o servidor não consegue abrir essa nova conexão, porque o roteador bloqueia conexões vindas de fora. Resultado: falha para listar arquivos ou transferir.
Como funciona o modo passivo (que é o que o FTPS geralmente usa):
O cliente conecta no servidor pela porta 21 (comando).
Quando precisa transferir arquivos ou listar uma pasta, o cliente é quem inicia uma nova conexão para o servidor em uma porta que o servidor informa.
Ou seja: o servidor nunca precisa abrir conexão de volta. Só recebe conexões.
É por isso que liberamos as portas 40000-50000 no servidor: para o servidor poder "esperar" essas conexões passivas.