
tailsnitch v1.7
Tailscale कॉन्फ़िगरेशन के लिए एक सुरक्षा ऑडिटर। आपके टेलनेट में गलत कॉन्फ़िगरेशन, अत्यधिक अनुमति वाले एक्सेस कंट्रोल और सुरक्षा सर्वोत्तम प्रथाओं के उल्लंघनों को स्कैन करता है।
Tailsnitch
Tailscale कॉन्फ़िगरेशन के लिए एक सुरक्षा ऑडिटर। Tailsnitch आपके tailnet को 57 मिसकॉन्फ़िगरेशन, अत्यधिक अनुमतिपूर्ण एक्सेस नियंत्रण, और सुरक्षा सर्वोत्तम अभ्यास उल्लंघनों के लिए स्कैन करता है।
त्वरित आरंभ
# 1. अपनी Tailscale API क्रेडेंशियल सेट करें
export TS_API_KEY="tskey-api-..."
# 2. ऑडिट चलाएँ
tailsnitch
# 3. केवल उच्च-गंभीरता वाले निष्कर्ष देखें
tailsnitch --severity high
# 4. कुछ समस्याओं को ठीक करें ~इंटरैक्टिवली~ yolo मोड
tailsnitch --fix
स्थापना
पूर्व-निर्मित बाइनरी डाउनलोड करें
GitHub Releases से नवीनतम रिलीज़ डाउनलोड करें।
macOS उपयोगकर्ता: डाउनलोड के बाद quarantine विशेषता हटाएँ:
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 | Tailnet नीति फ़ाइल — ACL-, NET-, SSH-* |
devices:core:read | डिवाइस सूची — DEV-, NET-, ACL-011 |
dns:read | DNS कॉन्फ़िगरेशन — DNS-001, DEV-007 |
auth_keys:read | मशीन प्रमाणीकरण कुंजियाँ — AUTH-*, ACL-011 |
feature_settings:read | Tailnet सेटिंग्स — DEV-008, DEV-009, DEV-014 |
logs:network:read | नेटवर्क फ़्लो लॉगिंग सेटिंग — LOG-001 |
networking_settings:read | HTTPS प्रमाणपत्र सेटिंग — NET-004 |
log_streaming:read | लॉग स्ट्रीम गंतव्य — LOG-002 |
webhooks:read | Webhook एंडपॉइंट — LOG-005, LOG-012 |
oauth_keys:read | OAuth क्लाइंट — LOG-006 |
users:read | उपयोगकर्ता भूमिकाएँ और स्थिति — USER-001, LOG-006 |
account_settings:read | सुरक्षा संपर्क — LOG-011 |
devices:posture_attributes:read | Posture एकीकरण — DEV-014 |
आप जो भी स्कोप छोड़ते हैं वह केवल उन जाँचों को प्रभावित करता है जिन्हें उसकी आवश्यकता होती है: वे जाँचें पास होने के बजाय रिपोर्ट करती हैं कि वे सेटिंग नहीं पढ़ सकीं।
AUTH-005 और AUTH-006 tailnet की federated पहचान पढ़ते हैं, जिसे एडमिन कंसोल trust credentials कहता है। वे auth keys के समान कुंजी सूची से आते हैं, इसलिए auth_keys:read उन्हें कवर करने की उम्मीद है। यह एक लाइव tailnet के विरुद्ध पुष्टि नहीं किया गया है। यदि कुंजी सूची नहीं पढ़ी जा सकती है, तो दोनों जाँचें पास होने के बजाय not evaluated रिपोर्ट करती हैं। क्या एक लापता स्कोप त्रुटि लौटाता है या इसके बजाय पहचान को फ़िल्टर करके सूची लौटाता है, यह अपुष्ट है; यदि यह चुपचाप फ़िल्टर करता है, तो AUTH-005 रिपोर्ट करेगा कि कोई trust credentials मौजूद नहीं हैं और AUTH-006 को जाँचने के लिए कुछ नहीं मिलेगा।
फिक्स मोड के लिए अतिरिक्त स्कोप:
devices:core- डिवाइस हटाएँ, टैग संशोधित करें (टैग चयन की आवश्यकता है)auth_keys- प्रमाणीकरण कुंजियाँ हटाएँ
Tailnet Lock
DEV-010 और DEV-012 Tailnet Lock पर रिपोर्ट करते हैं, जिसे Tailscale API tailnet सेटिंग के रूप में उजागर नहीं करता। इसके द्वारा लॉक किए गए डिवाइस API के माध्यम से दिखाई देते हैं, लेकिन यह निर्धारित करना कि lock सक्षम है या नहीं, स्थानीय tailscale CLI की आवश्यकता होती है, जो tailsnitch चलाने वाली मशीन पर daemon पढ़ता है। --tailnet के साथ किसी अन्य tailnet का ऑडिट करते समय, परिणाम के उस भाग को तदनुसार मानें। यदि बाइनरी एक गैर-मानक स्थान में है तो --tailscale-path का उपयोग करें।
विकल्प 2: API कुंजी
API कुंजियाँ उस उपयोगकर्ता के रूप में कार्य करती हैं जिसने उन्हें बनाया है और उस उपयोगकर्ता की अनुमतियाँ विरासत में लेती हैं।
export TS_API_KEY="tskey-api-..."
API कुंजी यहाँ बनाएँ: https://login.tailscale.com/admin/settings/keys
उपयोग उदाहरण
बुनियादी ऑडिट
# पूर्ण ऑडिट चलाएँ
tailsnitch
# पास होने वाली जाँचें भी दिखाएँ (verbose)
tailsnitch --verbose
# प्रोसेसिंग के लिए JSON के रूप में आउटपुट
tailsnitch --json
# एक विशिष्ट tailnet का ऑडिट करें (जब 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
# पूर्वावलोकन करें कि क्या ठीक किया जाएगा (dry run)
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 साक्ष्य निर्यात
Common Criteria (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, आदि)
- प्रत्येक नियंत्रण परीक्षण के लिए पास/फेल/एन/ए स्थिति
- ऑडिट ट्रेल के लिए टाइमस्टैम्प
उदाहरण 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 में ट्रैक किया गया