# FTP (File Transfer Protocol)

## Introdução

O FTP (File Transfer Protocol) é um protocolo padrão de rede usado para transferência de arquivos entre um cliente e um servidor em uma rede de computadores. Um servidor FTP é um software que implementa o protocolo FTP para permitir o compartilhamento e transferência de arquivos.

> [!NOTA] Importância do FTP 
> Apesar de ser um protocolo antigo, o FTP ainda é amplamente utilizado para transferência de arquivos, especialmente em ambientes que não requerem alta segurança.

## Funcionamento Básico

O FTP opera no modelo cliente-servidor e utiliza duas conexões separadas:

1. **Conexão de Controle**: Porta 21 (por padrão)
2. **Conexão de Dados**: Porta 20 (modo ativo) ou porta aleatória (modo passivo)

## Modos de Operação

### Modo Ativo

- O cliente inicia a conexão de controle
- O servidor inicia a conexão de dados

### Modo Passivo

- O cliente inicia ambas as conexões
- Mais comum em ambientes com firewalls

## Implementações Populares de Servidores FTP

1. **vsftpd** (Very Secure FTP Daemon)
2. **ProFTPD**
3. **FileZilla Server**
4. **Pure-FTPd**

## Configuração Básica (exemplo com vsftpd)

1. Instalar o vsftpd:
    
```bash
sudo apt-get install vsftpd
```
    
2. Editar o arquivo de configuração `/etc/vsftpd.conf`:
    
```bash
listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES
```
    
3. Reiniciar o serviço:
    
```bash
sudo systemctl restart vsftpd
```
    

## Segurança

### Riscos de Segurança

- FTP padrão transmite dados em texto claro
- Vulnerável a ataques de interceptação

### Melhorias de Segurança

1. **Usar FTPS (FTP sobre SSL/TLS)**
2. **Implementar autenticação forte**
3. **Limitar acesso por IP**
4. **Configurar chroot para usuários**

## Comparação: FTP vs SFTP vs FTPS

|PROTOCOLO|PORTA PADRÃO|CRIPTOGRAFIA|COMENTÁRIOS|
|---|---|---|---|
|FTP|21|Nenhuma|Inseguro para dados sensíveis|
|SFTP|22|SSH|Mais seguro, usa infraestrutura SSH|
|FTPS|990|SSL/TLS|FTP com camada adicional de segurança|

## Casos de Uso Comuns

1. **Hospedagem Web**: Upload de arquivos para servidores web
2. **Compartilhamento de Arquivos**: Distribuição de arquivos grandes
3. **Backup**: Transferência de backups para servidores remotos
4. **Atualização de Software**: Distribuição de atualizações de software

## Comandos FTP Básicos

|COMANDO|DESCRIÇÃO|
|---|---|
|GET|Baixar arquivo|
|PUT|Enviar arquivo|
|LS|Listar diretório|
|CD|Mudar diretório|
|MKDIR|Criar diretório|
|DELE|Deletar arquivo|

## Fluxo de Conexão FTP

```mermaid
sequenceDiagram
    participant Cliente
    participant Servidor
    Cliente->>Servidor: Inicia conexão (porta 21)
    Servidor-->>Cliente: Aceita conexão
    Cliente->>Servidor: Envia credenciais
    Servidor-->>Cliente: Autenticação bem-sucedida
    Cliente->>Servidor: Solicita transferência de arquivo
    Servidor-->>Cliente: Inicia conexão de dados
    Servidor->>Cliente: Transfere arquivo
    Cliente->>Servidor: Encerra conexão
```

## Monitoramento e Logs

- Logs geralmente localizados em `/var/log/vsftpd.log` (para vsftpd)
- Monitorar acessos e transferências para segurança e desempenho

## Otimização de Desempenho

1. Ajustar limites de banda
2. Configurar número máximo de conexões simultâneas
3. Usar modo passivo para melhor compatibilidade com firewalls

## Troubleshooting Comum

1. **Problemas de Conexão**: Verificar firewall e configurações de rede
2. **Erros de Autenticação**: Checar permissões de usuário e senha
3. **Falhas de Transferência**: Verificar espaço em disco e permissões de arquivo

## Alternativas Modernas

- **WebDAV**: Protocolo baseado em HTTP para transferência de arquivos
- **Serviços de Nuvem**: Dropbox, Google Drive, OneDrive
- **Rsync**: Para sincronização eficiente de arquivos

## Considerações Finais

Embora o FTP seja um protocolo antigo e tenha limitações de segurança, ainda é amplamente utilizado devido à sua simplicidade e compatibilidade. Para ambientes que requerem maior segurança, considere usar SFTP ou FTPS.

## Etiquetas

#FTP #Transferencias  #RedeDeComputadores #Seguranca 

## Leia Também

- [[backup do sistema|Backup do Sistema]]
- [[backup em ambiente virtualizado|Backup em ambiente virtualizado]]
- [[disco de backup no sistema|Disco de backup no sistema]]
- [[armazenamento de backups e a importancia de discos separados - conceito|Armazenamento de backups e a importância de discos separados - Conceito]]
- [[sftp (ssh file transfer protocol)|SFTP (SSH File Transfer Protocol)]]