Skip to content

felinux0x/PyVigial

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

   dMMMMb  dMP dMP dMP dMP dMP .aMMMMP dMP .aMMMb  dMP 
  dMP.dMP dMP.dMP dMP dMP amr dMP"    amr dMP"dMP dMP  
 dMMMMP"  VMMMMP dMP dMP dMP dMP MMP"dMP dMMMMMP dMP   
dMP     dA .dMP  YMvAP" dMP dMP.dMP dMP dMP dMP dMP    
dMP      VMMMP"    VP"  dMP  VMMMP" dMP dMP dMP dMMMMMP

O nome PyVigil é uma combinação de 'Py', celebrando a linguagem Python com a qual a ferramenta foi construída, e 'Vigil', do latim vigilia, que significa "o ato de se manter acordado para guardar". O nome reflete a natureza da ferramenta: uma sentinela de software vigilante e incansável que guarda seus logs.


HIDS Simples Baseado em Logs em Python

Um HIDS (Host-based Intrusion Detection System) simples, porém robusto e profissional, escrito em Python. O sistema monitora arquivos de log em tempo real, aplicando um conjunto de regras flexíveis para detectar atividades suspeitas e gerar alertas.

Funcionalidades Principais

  • Monitoramento em Tempo Real: Acompanha as novas linhas adicionadas a um arquivo de log sem a necessidade de reler o arquivo inteiro.
  • Motor de Regras Flexível: As regras de detecção são carregadas de um arquivo config.yaml externo, permitindo fácil customização sem alterar o código-fonte.
  • Detecção Baseada em Regex: Utiliza expressões regulares (regex) para identificar padrões específicos nas linhas de log.
  • Alertas com Limiar (Threshold): Suporta regras que só são acionadas após um certo número de correspondências (threshold) dentro de uma janela de tempo (timeframe), ideal para detectar ataques de força bruta.
  • Arquitetura Profissional: Construído com uma arquitetura modular e concorrente (produtor-consumidor) para garantir performance e escalabilidade.
  • Logging Interno: Registra as atividades do próprio HIDS para facilitar a depuração e o monitoramento.

Arquitetura

O projeto foi refatorado de um script simples para uma aplicação com uma arquitetura mais profissional, separando as responsabilidades:

  • main.py: O ponto de entrada da aplicação. Orquestra os componentes e gerencia o loop de monitoramento manual.
  • hids/engine.py: O cérebro do HIDS. Gerencia uma fila de processamento e um pool de workers (threads) que aplicam as regras às linhas de log.
  • hids/config.py: Responsável por carregar e validar as regras do arquivo config.yaml.
  • hids/alerter.py: Define uma interface para alertas, permitindo a fácil adição de novos métodos de notificação (ex: email, Slack) no futuro.
  • log_generator.py: Um script auxiliar para simular a escrita de eventos em um arquivo de log e facilitar os testes.

Estrutura de Arquivos

.
├── hids/
│   ├── __init__.py
│   ├── alerter.py
│   ├── config.py
│   └── engine.py
├── main.py
├── log_generator.py
├── config.yaml
├── requirements.txt
└── README.md

Instalação

  1. Clone o repositório:

    git clone https://github.com/felinux0x/PyVigial.git
  2. Navegue até o diretório do projeto:

    cd PyVigial
  3. Instale as dependências:

    pip install -r requirements.txt

Como Usar

Para ver o HIDS em ação, você precisará de dois terminais.

1. No Terminal 1, inicie o HIDS:

O HIDS começará a monitorar o arquivo auth.log (que será criado pelo gerador).

python main.py auth.log config.yaml

2. No Terminal 2, execute o gerador de logs:

Isso irá simular vários eventos de segurança, escrevendo-os no arquivo auth.log.

python log_generator.py

Observe o Terminal 1 para ver os alertas de segurança sendo impressos em tempo real conforme os eventos são gerados.

Configuração de Regras

As regras são definidas no arquivo config.yaml. Você pode adicionar ou modificar regras facilmente. A estrutura de uma regra é a seguinte:

  • name: Um nome único e descritivo para a regra.
  • description: Uma breve explicação do que a regra detecta.
  • pattern: A expressão regular (regex) para encontrar o padrão. Se a regra precisar rastrear uma entidade específica (como um endereço IP), use um grupo de captura (...).
  • threshold (opcional): O número de correspondências necessárias para disparar o alerta.
  • timeframe_seconds (opcional): A janela de tempo em segundos para o threshold.

Exemplo de config.yaml

rules:
  - name: "Multiplas_Falhas_Login_SSH"
    description: "Detecta 5 ou mais tentativas de login SSH falhas do mesmo IP em 60 segundos."
    # Captura o endereço IP para rastreamento
    pattern: 'Failed password for .* from (\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})'
    threshold: 5
    timeframe_seconds: 60

  - name: "Conexao_SSH_Aceita"
    description: "Alerta sobre uma conexão SSH bem-sucedida."
    # Apenas detecta o padrão, sem threshold
    pattern: 'Accepted password for .* from (\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})'

  - name: "Erro_de_Aplicacao_Critico"
    description: "Detecta uma mensagem de erro crítico no log."
    pattern: 'CRITICAL: Application failed to start'

Licença

Este projeto está licenciado sob a Licença MIT. Veja o arquivo LICENSE para mais detalhes.

About

Um HIDS (Host-based Intrusion Detection System) simples, porém robusto e profissional, escrito em Python. O sistema monitora arquivos de log em tempo real, aplicando um conjunto de regras flexíveis para detectar atividades suspeitas e gerar alertas.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages