
Auditor de configuração de segurança do kernel Linux somente leitura e sem agente (local e SSH). Foco inicial: verificações de migração TCP / MPTCP para CVE-2026-98432.
Uma ferramenta de auditoria de segurança para Linux leve e de código aberto, escrita em Python.
Audite servidores Linux locais e remotos via SSH sem instalar agentes ou modificar a configuração do sistema.
Este é um auditor de configuração e status de patches, não um scanner de exploits. Ele reporta configurações de kernel e uso associados a uma vulnerabilidade, e compara o pacote do kernel em execução com a versão corrigida pelo fornecedor. Ele nunca tenta acionar uma vulnerabilidade.
| Recurso | v0.2.0 |
|---|---|
| Python 3.8+, sem dependências de terceiros | ✅ |
| Auditoria local em Linux | ✅ |
| Auditoria remota via SSH (sem agente) | ✅ |
| Varredura de múltiplos servidores em paralelo | ✅ |
| Ubuntu / Debian / Rocky / AlmaLinux / RHEL / Fedora | ✅ |
| Inspeção da migração de sockets de requisição TCP | ✅ |
| Inspeção da configuração e do uso de MPTCP | ✅ |
| Detecção de kernel, distribuição e reinicialização pendente | ✅ |
| Relatórios em JSON / CSV | ✅ |
| Verificação de patches de CVE do kernel (Ubuntu, Debian, RHEL, Rocky, AlmaLinux, CentOS) | ✅ |
| Atualizações de segurança automáticas | ❌ nunca |
| Alteração da configuração do servidor | ❌ nunca |
O controlador (sua estação de trabalho Mac ou Linux) monta um pequeno script
POSIX sh a partir das verificações selecionadas e o envia via pipe para sh -s em cada alvo por
SSH. Nada é copiado ou instalado no alvo. O script imprime
fatos no formato key=value; toda a avaliação acontece no controlador, que trata
a saída do alvo como não confiável (caracteres de controle removidos, valores truncados,
injeção de fórmula em CSV neutralizada).
Revise exatamente o que será executado em seus servidores antes de executá-lo:
python3 netviser_cve_audit.py --print-script
Alvos precisam apenas de sh e ferramentas padrão (ss do iproute2, awk,
grep, sed). Python não é necessário nos alvos.
Controlador precisa de Python 3.8+ e OpenSSH (macOS ou Linux).
git clone https://github.com/maxigentr/netviser-linux-security-auditor.git
cd netviser-linux-security-auditor
# Audit this Linux machine
python3 netviser_cve_audit.py --local
# Audit a remote server
python3 netviser_cve_audit.py --host [email protected]
# Custom SSH port and key
python3 netviser_cve_audit.py --host [email protected] --port 2290 --identity ~/.ssh/audit_ed25519
# Multiple servers, 10 in parallel
python3 netviser_cve_audit.py --hosts servers.txt --workers 10
# Non-root SSH user with passwordless sudo, for full process and BPF visibility
python3 netviser_cve_audit.py --host admin@web01 --sudo
# Watch MPTCP counters for 60 seconds to see if MPTCP is used right now
python3 netviser_cve_audit.py --hosts servers.txt --sample-interval 60
# Also check whether other kernel CVEs are patched
python3 netviser_cve_audit.py --hosts servers.txt --cve CVE-2024-1086,CVE-2024-26925
A ferramenta também pode ser instalada (pip install .) e executada como netviser-audit
ou python3 -m netviser_audit.
Consulte examples/servers.example.txt para o
formato do arquivo de hosts. As portas por host usam ssh://user@host:port ou um
alias em ~/.ssh/config.
| Opção | Descrição |
|---|---|
--local / --host H / --hosts FILE | O que auditar |
--checks IDS | Subconjunto separado por vírgulas (consulte --list-checks); as dependências são adicionadas automaticamente |
--cve IDS | Também relata o status de patch do kernel para esses CVEs (repetível ou separado por vírgulas) |
--offline | Não baixa dados de avisos do fornecedor |
--advisories FILE | Usa dados de avisos salvos anteriormente; registros ausentes ainda são baixados, a menos que --offline seja usado |
--save-advisories FILE | Salva os dados de avisos utilizados, para execuções offline ou repetíveis |
--sudo | Executa o coletor com sudo -n (nunca solicita senha) |
--sample-interval N | Lê os contadores MPTCP duas vezes, com N segundos de intervalo |
--output PREFIX | Prefixo do relatório (padrão netviser_audit → .json, .csv) |
--no-report | Exibe apenas no terminal |
--fail-on-review | Sai com código 3 quando existe qualquer achado REVIEW (para CI / cron) |
-v, --verbose | Mostra todos os achados, não apenas REVIEW / UNKNOWN |
As execuções SSH usam BatchMode=yes (apenas autenticação por chave) e
StrictHostKeyChecking=accept-new.
Status de saída: 0 sucesso, 1 um alvo não pôde ser escaneado, 2 erro de uso,
3 achados de revisão presentes (apenas com --fail-on-review).
| Id | O que inspeciona |
|---|---|
kernel | Distribuição, versão do kernel, pacote do kernel em execução, kernel mais novo instalado / reinicialização necessária |
patch | Status de patch de cada CVE para o pacote do kernel em execução, a partir dos dados de avisos do fornecedor |
tcp_migration | net.ipv4.tcp_migrate_req; programas BPF sk_reuseport carregados (root + bpftool) |
mptcp | net.mptcp.enabled, gerenciador de caminhos, CONFIG_MPTCP, sockets e processos MPTCP, contadores de handshake, uso do mptcpize |
cve_2026_98432 | Configuração relacionada ao CVE-2026-98432; seu status de patch é patch.CVE-2026-98432 |
Cada achado tem um status — OK, INFO, REVIEW ou UNKNOWN — e um
veredito legível por máquina (por exemplo, mptcp.usage = IN_USE).
A verificação patch responde a uma pergunta por CVE: o kernel que está em execução
agora está corrigido de acordo com o fornecedor da distribuição?
dpkg-query / rpm -qf): seu nome, versão exata e pacote de origem. Ele também lista os ids de CVE mencionados no changelog desse pacote e nos
livepatches carregados (canonical-livepatch, kpatch-patch).~
sejam tratados corretamente.| Distribuição | Fonte de avisos |
|---|---|
| Ubuntu | Ubuntu Security API — por release e sabor de kernel (linux, linux-hwe-*, linux-aws, …) |
| Debian | Dados do Debian Security Tracker via OSV |
| RHEL, Rocky Linux, AlmaLinux, CentOS | Red Hat Security Data API — fluxo principal do RHEL |
Apenas identificadores de CVE são enviados a esses serviços; nada sobre seus hosts
sai do controlador. Para uso em ambientes isolados (air-gapped), execute uma vez com
--save-advisories adv.json e depois com --offline --advisories adv.json.