About this project
it-programming / web-development
Open
Project overview
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
Category IT & Programming
Subcategory Web development
What is the scope of the project? Medium-sized change
Is this a project or a position? Project
I currently have I have specifications
Required availability As needed
Roles needed Developer
Delivery term: Not specified
Skills needed