host-ids
IDS baseado em host (Linux): monitora processos, conexões e integridade, sem deps externas.
8 testes · 8 passou · 0 falhou · 0 skip
- test_new_process_detection0.00s
- test_suspicious_process_is_critical0.00s
- test_new_connection_detection0.00s
- test_new_user_alert0.00s
- test_file_integrity_modified0.00s
- test_file_integrity_new_and_removed0.00s
- test_real_collectors_run0.02s
- test_snapshot_and_diff0.06s
Entrypoints (CLI)
hostids
Módulos e funções principais
hostids/__init__.py
- —
hostids/cli.py
main()
hostids/collectors.py
list_processes()list_connections()logged_users()— Usuários logados via `who`-like parsing de /var/run/utmp (fallback: env).hash_file()snapshot_files()— Hash de arquivos monitorados para checagem de integridade.
hostids/engine.py
check_new_processes()check_new_connections()check_users()check_file_integrity()take_snapshot()diff()
Estrutura de arquivos
- LICENSE
- README.md
- host_ids.egg-info/PKG-INFO
- host_ids.egg-info/SOURCES.txt
- host_ids.egg-info/dependency_links.txt
- host_ids.egg-info/entry_points.txt
- host_ids.egg-info/requires.txt
- host_ids.egg-info/top_level.txt
- hostids/__init__.py
- hostids/cli.py
- hostids/collectors.py
- hostids/engine.py
- pyproject.toml
- tests/test_engine.py
README
# Host IDS 🛡️
Sistema de detecção de intrusão baseado em host (**HIDS**) para Linux. Monitora continuamente o sistema e emite **alertas** quando detecta mudanças suspeitas — sem dependências externas (usa `/proc` e a stdlib).
> ⚠️ Ferramenta educacional/defensiva. Rode no **seu próprio** sistema. Alguns dados (todos os processos/arquivos) exigem privilégios para visibilidade completa.
## O que monitora
- **Novos processos** — com detecção de linhas de comando suspeitas (reverse shell `bash -i`, `/dev/tcp/`, `nc -e`, `curl | sh`, base64 decode, nmap…)
- **Novas conexões de rede** — TCP/UDP via `/proc/net`, destacando destinos externos
- **Usuários logados** — alerta em novas sessões interativas
- **Integridade de arquivos** — hash SHA256 de arquivos/diretórios monitorados (modificação/remoção/criação)
## Severidades
`info` (verde) · `warning` (amarelo) · `critical` (vermelho)
## Instalação
```bash
git clone https://github.com/Diogo-Damasceno/host-ids.git
cd host-ids
pip install -e .
```
## Uso
```bash
# monitorar processos/conexões/usuários a cada 3s
hostids
# incluir integridade de arquivos críticos
hostids -w /etc/passwd -w /etc/shadow -w ~/.ssh/authorized_keys
# intervalo customizado
hostids -i 1.5 -w /etc/crontab
# apenas baseline (uma varredura) e sair
hostids --once
```
### Testar a detecção
Em outro terminal, dispare algo suspeito (no seu próprio host):
```bash
bash -i >& /dev/tcp/127.0.0.1/9999 0>&1 # gera alerta critical
echo "x" >> /etc/... (num arquivo monitorado) # gera alerta de integridade
```
## Testes
```bash
pip install -e '.[dev]'
pytest -q
```
## Arquitetura
```
hostids/
├── collectors.py # snapshots via /proc (processos, conexões, usuários, hashes)
├── engine.py # diff de snapshots + regras de alerta
└── cli.py # loop de monitoramento
```
## Licença
MIT
Como rodar na prática (entrada → saída):
$ host-ids --once
baseline: 312 processos, 48 conexoes monitor ativo (intervalo 30s)
$ host-ids
ALERTA: novo processo 'miner-x' (PID 8841) fora do baseline ALERTA: conexao saida 185.220.101.x:4444