Voltar às atualizações
New releaseSep 4, 2026

tailsnitch v1.7

Um auditor de segurança para configurações do Tailscale. Escaneia sua tailnet em busca de configurações incorretas, controles de acesso excessivamente permissivos e violações de boas práticas de segurança.

Compartilhar

Tailsnitch

Um auditor de segurança para configurações do Tailscale. O Tailsnitch verifica sua tailnet em busca de 57 configurações incorretas, controles de acesso excessivamente permissivos e violações de boas práticas de segurança.

Início Rápido

# 1. Defina suas credenciais da API do Tailscale
export TS_API_KEY="tskey-api-..."

# 2. Execute a auditoria
tailsnitch

# 3. Veja apenas descobertas de alta gravidade
tailsnitch --severity high

# 4. Corrija alguns problemas  ~interativamente~ modo yolo
tailsnitch --fix

Instalação

Baixar Binário Pré-compilado

Baixe a versão mais recente em GitHub Releases.

Usuários de macOS: Remova o atributo de quarentena após o download:

sudo xattr -rd com.apple.quarantine tailsnitch

Instalar via Go

go install github.com/Adversis/tailsnitch@latest

Compilar a partir do Código-fonte

git clone https://github.com/Adversis/tailsnitch.git
cd tailsnitch
go build -o tailsnitch .

Autenticação

O Tailsnitch suporta dois métodos de autenticação. OAuth é preferido quando ambos estão configurados.

Opção 1: Cliente OAuth (Recomendado)

Clientes OAuth fornecem acesso com escopo e auditável que não expira quando funcionários saem da empresa.

export TS_OAUTH_CLIENT_ID="..."
export TS_OAUTH_CLIENT_SECRET="tskey-client-..."

Crie um cliente OAuth em: https://login.tailscale.com/admin/settings/oauth

Escopos necessários para auditoria somente leitura:

all:read cobre tudo. Concedendo escopos individualmente:

EscopoUsado para
policy_file:readArquivo de política da tailnet — ACL-, NET-, SSH-*
devices:core:readLista de dispositivos — DEV-, NET-, ACL-011
dns:readConfiguração de DNS — DNS-001, DEV-007
auth_keys:readChaves de autenticação de máquina — AUTH-*, ACL-011
feature_settings:readConfigurações da tailnet — DEV-008, DEV-009, DEV-014
logs:network:readConfiguração de registro de fluxo de rede — LOG-001
networking_settings:readConfiguração de certificado HTTPS — NET-004
log_streaming:readDestinos de streaming de logs — LOG-002
webhooks:readEndpoints de webhook — LOG-005, LOG-012
oauth_keys:readClientes OAuth — LOG-006
users:readFunções e status de usuários — USER-001, LOG-006
account_settings:readContato de segurança — LOG-011
devices:posture_attributes:readIntegrações de postura — DEV-014

Qualquer escopo que você omitir afeta apenas as verificações que precisam dele: essas verificações relatam que não conseguiram ler a configuração em vez de passar.

AUTH-005 e AUTH-006 leem as identidades federadas da tailnet, que o console de administração chama de credenciais de confiança. Elas chegam da mesma listagem de chaves que as chaves de autenticação, então espera-se que auth_keys:read as cubra. Isso não foi confirmado contra uma tailnet ativa. Se a listagem de chaves não puder ser lida, ambas as verificações relatam "não avaliado" em vez de passar. Se um escopo ausente retorna um erro ou em vez disso retorna a listagem com as identidades filtradas não foi confirmado; se filtrar silenciosamente, AUTH-005 relataria que nenhuma credencial de confiança existe e AUTH-006 não encontraria nada para verificar.

Escopos adicionais para o modo de correção:

  • devices:core - Excluir dispositivos, modificar tags (requer seleção de tag)
  • auth_keys - Excluir chaves de autenticação

Tailnet Lock

DEV-010 e DEV-012 relatam sobre Tailnet Lock, que a API do Tailscale não expõe como uma configuração da tailnet. Dispositivos bloqueados por ele são visíveis através da API, mas determinar se o lock está habilitado precisa do CLI local tailscale, que lê o daemon na máquina que executa o tailsnitch. Ao auditar outra tailnet com --tailnet, trate essa parte do resultado de acordo. Use --tailscale-path se o binário estiver em um local não padrão.

Opção 2: Chave de API

Chaves de API operam como o usuário que as criou e herdam as permissões desse usuário.

export TS_API_KEY="tskey-api-..."

Crie uma chave de API em: https://login.tailscale.com/admin/settings/keys

Exemplos de Uso

Auditoria Básica

# Executar auditoria completa
tailsnitch

# Mostrar também verificações aprovadas (verboso)
tailsnitch --verbose

# Saída como JSON para processamento
tailsnitch --json

# Auditar uma tailnet específica (quando o cliente OAuth tem acesso a várias)
tailsnitch --tailnet mycompany.com

Filtrar Resultados

# Mostrar apenas problemas críticos e de alta gravidade
tailsnitch --severity high

# Filtrar por categoria
tailsnitch --category access    # Problemas de ACL
tailsnitch --category auth      # Autenticação e chaves
tailsnitch --category device    # Segurança de dispositivos
tailsnitch --category network   # Exposição de rede
tailsnitch --category ssh       # Regras de SSH
tailsnitch --category log       # Registros e administração

# Executar apenas verificações específicas
tailsnitch --checks ACL-001,AUTH-001,DEV-010
tailsnitch --checks stale-devices,tailnet-lock-not-enabled

# Listar todas as verificações disponíveis
tailsnitch --list-checks

Modo de Correção Interativo

O modo de correção permite remediar problemas diretamente via API do Tailscale:

# Modo de correção interativo
tailsnitch --fix

# Pré-visualizar o que seria corrigido (execução de teste)
tailsnitch --fix --dry-run

# Auto-selecionar correções seguras (ainda requer confirmação)
tailsnitch --fix --auto

# Desabilitar registro de auditoria das ações de correção
tailsnitch --fix --no-audit-log

Itens corrigíveis via API:

VerificaçãoAção
AUTH-001, AUTH-002, AUTH-003Excluir chaves de autenticação
DEV-002Remover tags de dispositivos de usuários
DEV-004Excluir dispositivos obsoletos
DEV-005Autorizar dispositivos pendentes

O modo de correção também fornece links diretos para o console de administração para problemas que exigem intervenção manual.

Exportação de Evidências SOC 2

Gere relatórios de evidências para auditorias SOC 2 com mapeamentos de controles de Critérios Comuns (CC):

# Exportar como JSON
tailsnitch --soc2 json > soc2-evidence.json

# Exportar como CSV (para planilhas)
tailsnitch --soc2 csv > soc2-evidence.csv

O relatório SOC 2 inclui:

  • Resultados de teste por recurso (cada dispositivo, chave, regra de ACL testada individualmente)
  • Mapeamentos de códigos CC (CC6.1, CC6.2, CC6.3, CC6.6, CC7.1, CC7.2, etc.)
  • Status Aprovado/Reprovado/N/A para cada teste de controle
  • Carimbo de data/hora para trilha de auditoria

Exemplo de saída CSV:

resource_type,resource_id,resource_name,check_id,check_title,cc_codes,status,details,tested_at
device,node123,prod-server,DEV-001,Tagged devices with key expiry disabled,CC6.1;CC6.3,PASS,Tags: [tag:server] key expiry enabled,2025-01-05T10:30:00Z
key,tskey-auth-xxx,tskey-auth-xxx,AUTH-001,Reusable auth keys exist,CC6.1;CC6.2;CC6.3,FAIL,Reusable key expires in 45 days,2025-01-05T10:30:00Z

Ignorar Riscos Conhecidos

Crie um arquivo .tailsnitch-ignore para suprimir descobertas de riscos conhecidos e aceitos:

# .tailsnitch-ignore
# Ignorar verificações informativas
ACL-008  # Não usamos grupos intencionalmente
ACL-009  # ACLs legadas são suficientes para nosso caso de uso

# Ignorar verificações médias específicas com justificativa
DEV-006  # Dispositivos externos são contratados aprovados
LOG-001  # Logs de fluxo exigem plano Enterprise

# Ignorar um item dentro de uma verificação, em vez de silenciar a verificação inteira
ACL-011:tag:monitoring  # amplo por design; todas as outras tags ainda são verificadas
AUTH-001:tskey-auth-xxxx  # rotaciona automaticamente via CI, rastreado em TICKET-123

Categorias