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: 12/12/2025 às 17:29

Tem dúvidas? Faça uma pergunta.

ou

Enviar proposta

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: 4
Interessados: 5
Tempo restante:
Valor Mínimo: R$ 50,00

Cliente

Propostas (4)
  • 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

Descompilar arquivo ex4 para mq4 - Gostaria de descompilar um arquivo robô de forex ex4 para mq4 para fins de estudo. Saliento que o robô está bloqueado para utilização em uma conta de minha autoria.

Sistema web e aplicativo Android para bilhetes de apostas - Quero um sistema web e um aplicativo Android (apenas Android). O sistema precisa gerar bilhetes para campanhas de vendas de apostas, com até 80.000 números. Deve possuir área ...

Disponibilizar Vturb para hospedar VSL - Olá a todos os prestadores de serviços do 99 freelas. Estou precisando que alguém me disponibilize um Vturb, independente do plano contratado. Após isso, envie sua propo...

Criar ferramenta de análise de produtos para Mercado Livre e marketplaces - Boa noite, freela, tudo bem? Preciso de uma pessoa para criação de uma ferramenta para analisar produtos, tendências e mais vendidos por categoria no Mercado Livre, na Amazon e...

Desenvolver bot para jogo Bac Bo - Preciso de alguém que desenvolva um programa (robô) para o jogo Bac Bo. Já tenho as estratégias definidas; preciso somente da criação do robô, pois n&...

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.