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 -y
Além disso, lembre de adicionar ser usuário ao grupo do Docker:
sudo usermod -aG docker $USER
Para verificar se a alteração foi aplicada corretamente, execute:
groups $USER
Agora, é 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-compose
Para 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 -d
Reiniciando container após alterações no código:
docker-compose restart nome_do_container
Se precisar recriar os container
docker-compose down
docker-compose up -d
Para remover todas as imagens do Docker:
docker-compose down --rmi all
Para 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 createsuperuser
Ou, 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/