Pesquisar
Projeto exclusivo

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

hoje à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: hoje à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: 2
Interessados: 2
Tempo restante:
Valor Mínimo: R$ 50,00
Propostas (2)
  • 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

Criar site de bingo online com transmissão ao vivo no YouTube - Preciso de alguém que possa criar um site de bingo online, sem limite de cartelas, com sistema de sorteio e possibilidade de transmissão ao vivo no YouTube.

Agente de automação para agendamento - Busco um profissional (preferencialmente Engenheiro/Técnico em Software ou Desenvolvedor Backend) para revisar, otimizar e finalizar um projeto de automação em uma aplica&ccedi...

Automação com ManyChat para WhatsApp e Instagram - Estou à procura de um profissional para integrar o ManyChat ao WhatsApp do nosso e-commerce e a quatro contas do Instagram (cada conta corresponde a um produto específico veiculado no...

Laudo técnico de um sistema - Preciso de um laudo tecnico feito por um engenheiro de software ou um arquiteto de software. Sistema: java com quarkus, react. Mais detalhes serão repassados depois ...entre em contato

Desenvolvedor full stack para site de portfólio - Preciso de um desenvolvedor full stack qualificado que possa me ajudar a criar um site de portfólio. É necessário domínio do inglês para este projeto. Experi&ecir...

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.