Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
tailsnitch — Tailscale 구성에 대한 보안 감사 도구입니다. 테일넷(tailnet)에서 잘못된 구성, 과도하게 허용적인 접근 제어, 보안 모범 사례 위반을 스캔합니다. | Kitploit
도구/GitHubGitHub/adversis/tailsnitch
Vulnerability ScannersConfiguration AuditingNetwork SecurityCloud SecurityDevSecOpsMisconfigurationIncident Response
GitHubadversis/tailsnitch

tailsnitch

Tailscale 구성에 대한 보안 감사 도구입니다. 테일넷(tailnet)에서 잘못된 구성, 과도하게 허용적인 접근 제어, 보안 모범 사례 위반을 스캔합니다.

저장소 보기
1.1k292026일 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Tailsnitch

Tailscale 구성에 대한 보안 감사 도구입니다. Tailsnitch는 테일넷에서 57가지의 잘못된 구성, 과도하게 허용적인 접근 제어, 보안 모범 사례 위반을 스캔합니다.

빠른 시작

# 1. Tailscale API 자격 증명 설정
export TS_API_KEY="tskey-api-..."

# 2. 감사 실행
tailsnitch

# 3. 높은 심각도 결과만 보기
tailsnitch --severity high

# 4. 일부 문제 수정 ~대화형~ yolo 모드
tailsnitch --fix

설치

사전 빌드된 바이너리 다운로드

GitHub Releases에서 최신 릴리스를 다운로드하세요.

macOS 사용자: 다운로드 후 격리 속성을 제거하세요:

sudo xattr -rd com.apple.quarantine tailsnitch

Go로 설치

go install github.com/Adversis/tailsnitch@latest

소스에서 빌드

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

인증

Tailsnitch는 두 가지 인증 방법을 지원합니다. 둘 다 구성된 경우 OAuth가 선호됩니다.

옵션 1: OAuth 클라이언트 (권장)

OAuth 클라이언트는 직원이 퇴사해도 만료되지 않는 범위가 지정되고 감사 가능한 액세스를 제공합니다.

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

OAuth 클라이언트 생성: https://login.tailscale.com/admin/settings/oauth

읽기 전용 감사에 필요한 범위:

all:read가 모든 것을 포함합니다. 개별적으로 범위를 부여하는 경우:

범위용도
policy_file:read테일넷 정책 파일 — ACL-, NET-, SSH-*
devices:core:read장치 목록 — DEV-, NET-, ACL-011
dns:readDNS 구성 — DNS-001, DEV-007
auth_keys:read머신 인증 키 — AUTH-*, ACL-011
feature_settings:read테일넷 설정 — DEV-008, DEV-009, DEV-014
logs:network:read네트워크 흐름 로깅 설정 — LOG-001
networking_settings:readHTTPS 인증서 설정 — NET-004
log_streaming:read로그 스트림 대상 — LOG-002
webhooks:read웹훅 엔드포인트 — LOG-005, LOG-012
oauth_keys:readOAuth 클라이언트 — LOG-006
users:read사용자 역할 및 상태 — USER-001, LOG-006
account_settings:read보안 연락처 — LOG-011
devices:posture_attributes:read포스처 통합 — DEV-014

생략한 범위는 해당 범위가 필요한 검사에만 영향을 미칩니다. 해당 검사는 통과로 보고하는 대신 설정을 읽을 수 없다고 보고합니다.

AUTH-005 및 AUTH-006은 관리 콘솔에서 신뢰 자격 증명이라고 부르는 테일넷의 페더레이션 ID를 읽습니다. 이들은 인증 키와 동일한 키 목록에서 가져오므로 auth_keys:read가 이를 포함할 것으로 예상됩니다. 이는 실제 테일넷에서 확인되지 않았습니다. 키 목록을 읽을 수 없으면 두 검사 모두 통과 대신 평가되지 않음으로 보고합니다. 누락된 범위가 오류를 반환하는지 아니면 ID가 필터링된 목록을 반환하는지는 확인되지 않았습니다. 조용히 필터링하는 경우 AUTH-005는 신뢰 자격 증명이 없다고 보고하고 AUTH-006은 확인할 항목을 찾지 못합니다.

수정 모드에 필요한 추가 범위:

  • devices:core - 장치 삭제, 태그 수정 (태그 선택 필요)
  • auth_keys - 인증 키 삭제

테일넷 잠금

DEV-010 및 DEV-012는 Tailscale API가 테일넷 설정으로 노출하지 않는 테일넷 잠금에 대해 보고합니다. 잠금으로 잠긴 장치는 API를 통해 볼 수 있지만, 잠금이 활성화되었는지 확인하려면 tailsnitch를 실행하는 머신의 데몬을 읽는 로컬 tailscale CLI가 필요합니다. --tailnet으로 다른 테일넷을 감사할 때는 결과의 해당 부분을 그에 따라 처리하세요. 바이너리가 비표준 위치에 있는 경우 --tailscale-path를 사용하세요.

옵션 2: API 키

API 키는 생성한 사용자로 작동하며 해당 사용자의 권한을 상속합니다.

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

API 키 생성: https://login.tailscale.com/admin/settings/keys

사용 예시

기본 감사

# 전체 감사 실행
tailsnitch

# 통과 검사도 표시 (자세히)
tailsnitch --verbose

# 처리를 위해 JSON으로 출력
tailsnitch --json

# 특정 테일넷 감사 (OAuth 클라이언트가 여러 테일넷에 액세스할 수 있는 경우)
tailsnitch --tailnet mycompany.com

결과 필터링

# 중요 및 높은 심각도 문제만 표시
tailsnitch --severity high

# 카테고리별 필터링
tailsnitch --category access    # ACL 문제
tailsnitch --category auth      # 인증 및 키
tailsnitch --category device    # 장치 보안
tailsnitch --category network   # 네트워크 노출
tailsnitch --category ssh       # SSH 규칙
tailsnitch --category log       # 로깅 및 관리

# 특정 검사만 실행
tailsnitch --checks ACL-001,AUTH-001,DEV-010
tailsnitch --checks stale-devices,tailnet-lock-not-enabled

# 사용 가능한 모든 검사 나열
tailsnitch --list-checks

대화형 수정 모드

수정 모드를 사용하면 Tailscale API를 통해 문제를 직접 해결할 수 있습니다:

# 대화형 수정 모드
tailsnitch --fix

# 수정될 내용 미리보기 (드라이 런)
tailsnitch --fix --dry-run

# 안전한 수정 자동 선택 (여전히 확인 필요)
tailsnitch --fix --auto

# 수정 작업의 감사 로깅 비활성화
tailsnitch --fix --no-audit-log

API로 수정 가능한 항목:

검사작업
AUTH-001, AUTH-002, AUTH-003인증 키 삭제
DEV-002사용자 장치에서 태그 제거
DEV-004오래된 장치 삭제
DEV-005대기 중인 장치 승인

수정 모드는 수동 개입이 필요한 문제에 대해 관리 콘솔로의 직접 링크도 제공합니다.

SOC 2 증거 내보내기

공통 기준(CC) 제어 매핑과 함께 SOC 2 감사용 증거 보고서 생성:

# JSON으로 내보내기
tailsnitch --soc2 json > soc2-evidence.json

# CSV로 내보내기 (스프레드시트용)
tailsnitch --soc2 csv > soc2-evidence.csv

SOC 2 보고서에는 다음이 포함됩니다:

  • 리소스별 테스트 결과 (각 장치, 키, ACL 규칙이 개별적으로 테스트됨)
  • CC 코드 매핑 (CC6.1, CC6.2, CC6.3, CC6.6, CC7.1, CC7.2 등)
  • 각 제어 테스트의 통과/실패/N/A 상태
  • 감사 추적용 타임스탬프

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

알려진 위험 무시

.tailsnitch-ignore 파일을 생성하여 수용된 알려진 위험에 대한 결과를 억제합니다:

# .tailsnitch-ignore
# 정보 제공 검사 무시
ACL-008  # 의도적으로 그룹을 사용하지 않음
ACL-009  # 레거시 ACL은 우리 사용 사례에 적합함

# 특정 중간 검사를 사유와 함께 무시
DEV-006  # 외부 장치는 승인된 계약자임
LOG-001  # 흐름 로그는 Enterprise 플랜 필요

# 전체 검사를 음소거하는 대신 검사 내 하나의 항목만 무시
ACL-011:tag:monitoring  # 설계상 광범위함; 다른 모든 태그는 여전히 검사됨
AUTH-001:tskey-auth-xxxx  # CI를 통해 자동으로 순환됨, TICKET-123에서 추적됨

한 줄은 전체 검사(ACL-011) 또는 그 안의 한 항목(CHECK-ID:item, 첫 번째 콜론에서 분할 - 항목 자체에 콜론이 포함될 수 있음)을 지정합니다. 항목별 규칙은 해당 항목만 억제합니다. 검사는 계속 실행되고 찾은 다른 모든 것을 계속 보고합니다. 플래그된 모든 항목을 억제해도 실패한 검사가 통과로 바뀌지 않습니다. 결과는 유지되며 정보 제공 수준으로 강등되므로 억제된 결과가 충족된 제어로 읽히지 않습니다.

무시 파일 위치 (순서대로 확인):

  1. 현재 디렉토리의 .tailsnitch-ignore
  2. 홈 디렉토리의 ~/.tailsnitch-ignore

첫 번째 위치가 작업 디렉토리이므로 무시 파일은 사용자가 아닌 저장소에서 올 수 있습니다. 모든 실행은 어떤 파일을 사용했는지와 억제된 결과 및 항목 수를 보고하며, --json은 이를 ignore_file 및 ignored 필드에 기록합니다 (CHECK-ID는 전체 검사, CHECK-ID:item은 억제된 항목 하나). 파일을 건너뛰려면 --no-ignore를 사용하세요.

# 특정 무시 파일 사용
tailsnitch --ignore-file /path/to/ignore

# 무시 파일 처리를 완전히 비활성화
tailsnitch --no-ignore

JSON 내보내기 및 처리

# 전체 보고서 내보내기
tailsnitch --json > audit.json

# 실패한 검사를 TSV로 추출
tailsnitch --json | jq -r '
  .suggestions
  | map(select(.pass == false))
  | .[]
  | [.id, .title, .severity, .remediation]
  | @tsv
' > findings.tsv

# 심각도별 요약
tailsnitch --json | jq '
  .suggestions
  | map(select(.pass == false))
  | group_by(.severity)
  | map({severity: .[0].severity, count: length})
'

# 중요/높음 문제를 관리 링크와 함께 나열
tailsnitch --json | jq -r '
  .suggestions
  | map(select(.pass == false and (.severity == "CRITICAL" or .severity == "HIGH")))
  | .[]
  | "\(.id): \(.title)\n  Fix: \(.fix.admin_url // "manual")\n"
'

명령 참조

플래그설명
--jsonJSON으로 출력
--severity최소 심각도로 필터링: critical, high, medium, low, info
--category카테고리로 필터링: access, auth, network, ssh, log, device, dns
--checks특정 검사 실행 (쉼표로 구분된 ID 또는 슬러그)
--list-checks사용 가능한 모든 검사 나열 후 종료
--tailnet감사할 테일넷 지정 (기본값: API 키에서)
--verbose통과 검사도 표시
--fix대화형 수정 모드 활성화
--auto안전한 수정 자동 선택 (--fix 필요)
--dry-run실행 없이 수정 작업 미리보기 (--fix 필요)
--no-audit-log수정 작업의 감사 로깅 비활성화
--soc2SOC 2 증거 내보내기: json 또는 csv
--tailscale-pathtailscale CLI 경로 (테일넷 잠금 검사용)
--timeout감사 전체 시간 예산 (기본값 2m)
--ignore-file무시 파일 경로
--no-ignore무시 파일 처리 비활성화
--version버전 정보 표시

보안 검사

Tailsnitch는 7개 카테고리에 걸쳐 57개의 보안 검사를 수행합니다. 각 검사에 대한 자세한 문서는 docs/CHECKS.md를 참조하세요.

중요 심각도

ID검사위험
ACL-001기본 '모두 허용' 정책모든 장치에 무제한 액세스
ACL-002SSH autogroup:nonroot 잘못된 구성모든 비루트 사용자로 SSH
ACL-006tagOwners가 너무 광범위함태그를 통한 권한 상승
ACL-007autogroup:danger-all 사용외부 사용자에게 액세스 부여

높은 심각도

도구 다운로드