Analisando propostas

Filtro de Dns (Dns Filter) em Python

Publicado em 22 de Abril de 2025 dias na TI e Programação

Sobre este projeto

Aberto

Sistema de Filtragem DNS com Interface Web de Gerenciamento Multiusuário
Desenvolvimento de um servidor DNS personalizado com filtragem de domínios baseada em blacklist, operando localmente em ambiente FreeBSD (pfSense), com sincronização remota via web service. A interface de administração web (PHP) permitirá o gerenciamento de dispositivos, domínios bloqueados e usuários de forma centralizada e multiusuária.

Contexto Geral do Projeto

Escopo do Projeto: Servidor DNS com Filtro e Interface Web de Gerenciamento Funcionalidades Esperadas - Servidor DNS Deve rodar localmente na porta padrão 53 (udp/tcp). Capaz de receber e processar requisições DNS. - Filtro de Domínios (Blacklist) Para cada requisição DNS: Verificar se o domínio solicitado está presente na lista de domínios bloqueados (blacklist). Se o domínio estiver bloqueado, retornar uma resposta DNS inválida (ex.: NXDOMAIN, 0.0.0.0 ou resposta vazia). Caso o domínio não esteja na blacklist, encaminhar a requisição para um servidor DNS confiável externo (ex.: Google DNS 8.8.8.8) e retornar a resposta normalmente. - Banco de Dados Pode ser utilizado SQLite, PostgreSQL ou outro banco de dados simples (a definir). Estrutura básica da tabela de blacklist: id (inteiro, chave primária) dominio (texto) - Facilidade de Configuração Utilização de um arquivo .env ou .ini para configurar: Porta do servidor DNS Endereço do servidor DNS de encaminhamento Parâmetros de conexão com o banco de dados - Logs Registrar todas as requisições DNS recebidas. Indicar quais foram bloqueadas e quais foram permitidas. - Ambiente de Execução O programa será executado em um firewall pfSense, que utiliza o sistema operacional FreeBSD. - Gerenciamento via Interface Web Interface Web (PHP) Desenvolvida preferencialmente em PHP. Deve rodar em um servidor externo ao pfSense. - Cadastro e Regras Permitir o cadastro de dispositivos (clientes/firewalls). Para cada dispositivo, associar: Lista de IPs dos clientes internos Lista de domínios bloqueados - Vinculação com o Servidor DNS Local A vinculação entre o dispositivo cadastrado na interface web e o programa dns local pode ser feita utilizando o ip externo de internet. - Multitenancy A interface web deve suportar múltiplos usuários (clientes). Cada cliente poderá acessar e gerenciar apenas o seu próprio dispositivo/firewall. - Acesso Administrativo Deve haver um painel administrativo para uso interno da equipe técnica: Acesso total às configurações de todos os dispositivos Criação e gerenciamento de usuários e permissões - Sincronização e Atualização O programa Python local deverá: Verificar periodicamente (a cada 1 minuto) se há atualizações no web service referente ao seu cliente. Se houver, fazer o download das configurações e armazená-las localmente. Garantir o funcionamento offline, utilizando a última versão das configurações em caso de perda de conexão com o servidor remoto. Requisitos Técnicos Linguagem: Python 3 Bibliotecas sugeridas: dnslib – manipulação de pacotes DNS asyncio – concorrência assíncrona sqlite3 ou SQLAlchemy – persistência de dados Compatibilidade: Sistemas Linux (priorizar FreeBSD) Qualidade de código: Limpo, modular, bem documentado - Entrega Esperada Código-fonte completo do projeto Script de instalação e setup Instruções de uso detalhadas Exemplo de base de dados com alguns domínios bloqueados Arquivo requirements.txt com todas as dependências do ambiente

Categoria TI e Programação
Subcategoria Programação
Qual é o alcance do projeto? Alteração média
Isso é um projeto ou uma posição de trabalho? Um projeto
Tenho, atualmente Eu tenho especificações
Disponibilidade requerida Conforme necessário
Funções necessárias Desenvolvedor

Prazo de Entrega: Não estabelecido

Habilidades necessárias

Outro projetos publicados por G. M.