Pesquisar

Desenvolvimento de proxy HTTPS transparente (SNI Filter) para pfSense 2.8.1

12/12/2025 às 12:43

Descrição do Projeto:

Este documento descreve, em detalhes, o escopo completo do desenvolvimento de um pacote/módulo para pfSense baseado em FreeBSD 15.x. O objetivo é criar um proxy HTTPS transparente capaz de inspecionar o IP de origem e o hostname (via SNI) para aplicar políticas de bloqueio/liberação com registro de logs e integração futura à interface web do pfSense.

Visão Geral

- **Nome do pacote:** `sni_filter_proxy`
- **Plataforma alvo:** pfSense 2.8.1 (FreeBSD 14.x)
- **Linguagens preferenciais:** C/C++ (alternativamente Go/Rust, desde que compatível e com bom desempenho)
- **Funcionamento:** Proxy TLS transparente (porta 443) que captura o ClientHello, extrai o SNI, cruza com o IP de origem e aplica regras do tipo allow/block. Todas as decisões devem ser registradas em log.
- **Requisito crítico:** o serviço precisa rodar como daemon e possuir script rc.d completo (start/stop/reload/status) para garantir persistência após reboots.
---

## Requisitos Funcionais

### 1. Core do Proxy
- Interceptar conexões TCP/443 (HTTPS) via redirecionamento `pf`.
- Ler a mensagem TLS ClientHello para extrair o hostname (SNI).
- Registrar IP de origem e SNI e checar contra as regras definidas.
- Aplicar **allow** ou **block** com prioridade para allow; ausência de regra implica allow.
- Ao bloquear, encerrar a conexão rapidamente (RST) sem alertar o usuário.

### 2. Regras e Configurações
- Arquivo principal: `/usr/local/etc/sni_filter/access_rules.txt`.
- Formato da linha: `[tipo];[ip de origem/cidr ou *];[hostname ou *]`.
- Suporte a IPv4/IPv6 e hostnames com wildcard (`*.dominio.com`).
- Implementar recarga das regras em runtime via sinal `SIGHUP`.
- Manter estrutura thread-safe ou processos múltiplos conforme necessário para atender a várias conexões.

### 3. Logs
- Local padrão: `/var/log/sni_filter_proxy.log`.
- Cada entrada precisa conter: timestamp, IP de origem, hostname e ação final (allow/block/erros).
- Manter o log rotativo via `newsyslog` (documentar sugestões) e garantir permissões corretas.

---

Fases de Entrega

### Fase 1 – Daemon + Serviço rc.d
1. Implementar o daemon (processo CLI executável em FreeBSD) com:
- Proxy TCP transparente.
- Parser de TLS ClientHello/SNI.
- Engine de regras conforme formato acima.
- Logging estruturado.
- Tratamento de sinais (SIGHUP ? reload, SIGTERM ? shutdown limpo).
2. Entregar script rc.d completo em `/usr/local/etc/rc.d/sni_filter_proxy` com funções `start/stop/restart/status/reload`.
3. Produzir documentação detalhando:
- Dependências.
- Comandos de build (`make`/`gmake`).
- Instalação manual (copiar binário + configs + script rc.d).
- Como configurar regras e testar com `openssl s_client`.

Fase 2 – Integração GUI no pfSense
1. Criar arquivos xml/php necessários para expor o serviço em **Services > SNI Filter Proxy**:
- Formulário para editar as regras (`access_rules.txt`), campos de configuração (porta, timeout etc.).
- Botões para `start/stop/reload/status` e visualização das últimas linhas do log.
2. Integrar com o `config.xml` do pfSense:
- Salvar as regras na seção própria e sincronizá-las com o arquivo físico.
- Garantir que o `rc.d` seja acionado conforme o usuário aplica mudanças.
3. Descrever, em documentação, como empacotar o módulo (Makefile do pacote, `pkg-descr`, `pkg-plist`) para distribuição pelo Package Manager do pfSense.

Instruções para os Desenvolvedores

1. **Referência:** utilizar o pacote `e2guardian` para pfSense como base de estrutura e boas práticas (organização, integração com GUI, scripts de instalação).
2. **Organização do código:** manter padrão profissional com diretórios `src/`, `include/`, `scripts/`, `docs/`, `config/`.
3. **Testes:**
- Fornecer testes unitários/automatizados quando aplicável (ex.: parser de regras, parser SNI).
- Documentar testes manuais com `openssl s_client` simulando cenários allow/block e recarga.
4. **Segurança:** validar inputs (regras, hostnames) para evitar crashes; tratar conexões sem SNI com bloqueio seguro.

Entregáveis Esperados

1. Código-fonte completo do daemon (C/C++ ou Go/Rust) com instruções de build.
2. Script rc.d funcional para instalação em `/usr/local/etc/rc.d/`.
3. Arquivo de regras de exemplo e instruções para criação de diretórios/configs.
4. Documentação Fase 1:
- Passo a passo de build/instalação/teste.
- Comandos para start/stop/reload e verificação de logs.
5. Documentação Fase 2:
- Guia de implementação dos arquivos xml/php e do package para pfSense.
- Descrição de como a GUI salva/aplica regras e interage com o daemon.
6. Checklist de testes (CLI e GUI) para validar o comportamento antes da entrega final.

Critérios de Aceite

- Daemon roda estavelmente no pfSense 2.8.1, reiniciando automaticamente via rc.d.
- Regras são aplicadas corretamente (allow prioritário, block quando aplicável, fallback allow).
- Logs registram todas as conexões analisadas, ações e recargas.
- `SIGHUP` recarrega as regras sem interromper conexões em andamento.

Atividades do cliente nesse projeto:

Última visualização: 16/12/2025 às 16:51

Informações adicionais

Categoria: Web, Mobile & Software
Subcategoria: Outra - Web, Mobile & Software
Orçamento: Aberto
Nível de experiência: Especialista
Visibilidade: Público
Propostas: 7
Interessados: 9
Tempo restante:
Valor Mínimo: R$ 50,00

Cliente

Propostas (7)
  • Freelancer novo Promovida Aceita Aceita Rejeitada

    Submetido: | Oferta: Privado | Duração estimada: Privado

  • Freelancer novo Promovida Aceita Aceita Rejeitada

    Submetido: | Oferta: Privado | Duração estimada: Privado

  • Freelancer novo Promovida Aceita Aceita Rejeitada

    Submetido: | Oferta: Privado | Duração estimada: Privado

  • Freelancer novo Promovida Aceita Aceita Rejeitada

    Submetido: | Oferta: Privado | Duração estimada: Privado

  • Freelancer novo Promovida Aceita Aceita Rejeitada

    Submetido: | Oferta: Privado | Duração estimada: Privado

  • Freelancer novo Promovida Aceita Aceita Rejeitada

    Submetido: | Oferta: Privado | Duração estimada: Privado

  • Freelancer novo Promovida Aceita Aceita Rejeitada

    Submetido: | Oferta: Privado | Duração estimada: Privado

Nenhuma proposta foi encontrada.

Carregando...
Projetos semelhantes no 99Freelas

Automação para Counter-Strike 2 com múltiplas janelas - Preciso criar uma automação para Counter-Strike 2 que rode 4 janelas do Sandbox e movimente essas telas separadamente. Dou mais detalhes e mostro ao vivo como funcionaria essa automa...

Robô de sinais para jogo Mines com envio ao Telegram - Gostaria de criar um robô (bot) que enviasse sinais para o Telegram do jogo de apostas Mines, incluindo um link de redirecionamento para a casa de apostas.

Automação de atendimento WhatsApp e gestão de aluguéis de kitnets - Preciso de um profissional para automatizar meus atendimentos pelo WhatsApp com os imóveis para aluguel e controlar o fluxo de pagamento de aluguéis. Solicitação de Or&...

Automações e integrações para agente de atendimento - Busco freelancer para complementar automações em um agente de atendimento comercial para uma empresa de viagens corporativas. Escopo: - Consulta em API - Envio de e-mails e WhatsApp...

Bot de curtidas para Free Fire e Discord - Estou procurando alguém que desenvolva um bot de curtidas para Free Fire, controlado por comandos via Discord. Vou deixar uma foto de exemplo. Por favor, informe sua experiência com p...

Carregando...

Carregando...

Pesquisar

FREELANCERS
PROJETOS
Ocorreu um erro inesperado. Caso o erro persista, entre em contato conosco através do e-mail suporte@99freelas.com.br.