Esta API, desenvolvida com Django REST Framework (DRF), permite a configuração de perfis de alerta para um sistema de inteligência contra ameaças cibernéticas (Cyber Threat Intelligence - CTI).
O sistema monitora, com a frequência definida no próprio perfil de alerta, postagens coletadas de fóruns da surface web e dark web, analisando essas informações para identificar potenciais ameaças. A API possibilita que os usuários definam critérios personalizados para os alertas, incluindo:
- Palavras-chave encontradas nos post analisados, desde o último alerta;
- Origem das postagens, podendo ser de fóruns da surface web e/ou dark web;
- Relevância da ameaça detectada na postagem.
Dessa forma, o mecanismo de notificação é direcionado, garantindo que os usuários recebam alertas relevantes e adaptados às suas necessidades.
A API permite a criação de perfis personalizados para a geração de alertas de ameaças cibernéticas, com base em configurações definidas pelos usuários. Cada perfil possibilita a especificação de critérios como palavras-chave, fonte das postagens e percentual de relevância da ameaça (percentual calculado pelo modelo treinado nas outras partes do projeto).
Dessa forma, o sistema assegura que os alertas emitidos sejam precisos e adaptados às necessidades específicas de cada usuário, aumentando a eficiência no monitoramento e na detecção de potenciais riscos cibernéticos.
O primeiro passo e instalar e configurar o Docker.
- No Windows, siga as instruções para configurar o Docker com WSL 2: Docker com WSL 2
- No Ubuntu, siga as instruções para instalar o Docker de maneira oficial: Docker no Ubuntu.
No Ubuntu, instale também o docker-compose:
sudo apt-get install docker-compose -yAlém disso, lembre de adicionar ser usuário ao grupo do Docker:
sudo usermod -aG docker $USERPara verificar se a alteração foi aplicada corretamente, execute:
groups $USERAgora, é necessário definir algumas variáveis de ambiente para o funcionamento da API.
Na pasta api/ crie um arquivo .env e adicione o seguinte conteúdo:
obs: É necessário remover os comentário apos as variáveis (os que estão marcados com * no início)
# Ambiente
ENV ='dev' # * Opções: 'dev' ou 'prod'
SECRET_KEY ='chave_gerada_pelo/para_django'
ALLOWED_HOSTS ='hosts,separados,por,virgula'
CORS_ORIGIN_WHITELIST ='cors,separados,por,vírgula'
# Database
POSTGRES_DB = 'nome_do_database' # * Criado automaticamente pelo docker-compose
POSTGRES_HOST = 'db' # * Nome do container do PostgreSQL no docker-compose
POSTGRES_PORT = 'porta_do_banco'
POSTGRES_USER = 'usuario_para_db' # * Criado automaticamente pelo docker-compose
POSTGRES_PASSWORD = 'senha_para_usario' # * Criado automaticamente pelo docker-composePara gerar uma chave segura, execute o seguinte comando Python (obs: com o Django instalado)
from django.core.management.utils import get_random_secret_key
print(get_random_secret_key())Copie o valor gerado e substitua chave_gerada_pelo/para_django no arquivo .env.
Com tudo configurado, inicie os serviços do Docker:
docker-compose up -dReiniciando container após alterações no código:
docker-compose restart nome_do_containerSe precisar recriar os container
docker-compose down
docker-compose up -dPara remover todas as imagens do Docker:
docker-compose down --rmi allPara rodar o projeto localmente sem utilizar Docker, siga os passos abaixo para configurar o ambiente virtual e instalar as dependências do projeto.
No terminal, navegue até o diretório do projeto e crie um ambiente vitual python.
No Windows python -m venv venv. No Linux python3 -m venv venv.
No Windows .\venv\Scripts\activate. No Linux source venv/bin/activate.
Com o ambiente virtual ativado, instale as dependências necessárias usando o arquivo requirements.txt (na pasta api/), com o comando: pip install -r requirements.txt.
Para acessar e gerenciar usuários, permissões e grupos na API, utilize um superusuário no painel administrativo do Django.
Execute o seguinte comando no terminal para criar um superusuário no ambiente Docker:
docker-compose exec api python manage.py createsuperuserOu, apenas python manage.py createsuperuser, caso não estiver no container.
Depois basta preencher os dados solicitados.
Com a aplicação rodando (exemplo em localhost, porta 8877) acesse: http://localhost:8877/admin
No painel, você pode:
- Criar novos usuário;
- Definir permissões;
- Gerenciar acessos;
- Manipular dados, entre outros.
A API utiliza Basic Authentication, onde as credenciais são os mesmos usuários cadastrados no Django Admin.
Para autenticar, envie no cabeçalho da requisição o seguinte:
Authorization: Basic base64(usuario:senha)Onde base64(usuario:senha) e o usuario e a senha convertido em base 64 no formato usuario:senha.
- Exemplo:
curl -u usuario:senha http://localhost:8877/api/v1/endpoint/