इसे छोड़कर कंटेंट पर जाएं

डायग्नोस्टिक्स और सत्यापन

यह पृष्ठ आपके क्लाइंट-साइड डिफेंस परिनियोजन को एंड-टू-एंड सत्यापित करने के लिए एक स्तरीय UAT सत्यापन मैट्रिक्स प्रदान करता है। प्रत्येक परीक्षण मामला अवसंरचना निर्भरता श्रृंखला का अनुसरण करता है — DNS रिज़ॉल्यूशन से लेकर CSD टेलीमेट्री तक — ताकि आप व्यवस्थित रूप से यह सिद्ध कर सकें कि प्रत्येक घटक सही ढंग से कार्य कर रहा है।

ये कमांड CSD Console Walkthrough के API समकक्ष हैं — इनका उपयोग तब करें जब आपको टर्मिनल से सत्यापन करना हो, निगरानी स्वचालित करनी हो, या UI के बिना CSD क्षमताओं का प्रदर्शन करना हो।

पूर्वापेक्षाएँ

Section titled “पूर्वापेक्षाएँ”

API स्वचालन — परिवेश सेटअप में वर्णित अनुसार अपने परिवेश चर सेट करें:

Terminal window
set -a && source .env && set +a

नीचे दिए गए सभी कमांड xTOKENx प्लेसहोल्डर प्रारूप का उपयोग करते हैं। अपने परिवेश चरों ($F5XC_API_TOKEN, $F5XC_NAMESPACE, आदि) से प्रतिस्थापित करें या पृष्ठ के शीर्ष पर इंटरैक्टिव फ़ॉर्म का उपयोग करें।

API व्यवहार संबंधी नोट्स

Section titled “API व्यवहार संबंधी नोट्स”

कई CSD एंडपॉइंट को epoch टाइमस्टैम्प (Unix epoch के बाद से सेकंड) की आवश्यकता होती है। ये वन-लाइनर सामान्य श्रेणियों के लिए प्रारंभ/समाप्ति समय की गणना करते हैं।

क्रॉस-प्लेटफ़ॉर्म (macOS + Linux):

Terminal window
# Current time as epoch seconds
NOW=$(date +%s)
# 1 hour ago
START_1H=$(( NOW - 3600 ))
# 24 hours ago
START_24H=$(( NOW - 86400 ))
# 7 days ago
START_7D=$(( NOW - 604800 ))
# 30 days ago
START_30D=$(( NOW - 2592000 ))
प्रीसेटसेकंडशेल एक्सप्रेशन
1 घंटा3,600$(( $(date +%s) - 3600 ))
24 घंटे86,400$(( $(date +%s) - 86400 ))
7 दिन604,800$(( $(date +%s) - 604800 ))
30 दिन2,592,000$(( $(date +%s) - 2592000 ))

परीक्षण मामले का प्रारूप

Section titled “परीक्षण मामले का प्रारूप”

नीचे दिए गए प्रत्येक परीक्षण की यह संरचना है:

फ़ील्डविवरण
परीक्षण IDपरत संख्या + अनुक्रमिक ID (जैसे, DNS-1, TLS-2)
यह क्या सिद्ध करता हैसत्यापित की जा रही विशिष्ट अवसंरचना तथ्य
कमांडचलाने के लिए तैयार curl या dig कमांड
PASS / FAILस्वस्थ बनाम अस्वस्थ स्थिति के लिए अपेक्षित आउटपुट
सुधारसंबंधित सेटअप या समस्या निवारण अनुभाग का लिंक

परत 1: DNS रिज़ॉल्यूशन

Section titled “परत 1: DNS रिज़ॉल्यूशन”

DNS आधार है — यदि डोमेन लोड बैलेंसर VIP पर रिज़ॉल्व नहीं होता, तो कुछ भी काम नहीं करता।

DNS-1: A रिकॉर्ड रिज़ॉल्यूशन

Section titled “DNS-1: A रिकॉर्ड रिज़ॉल्यूशन”

यह क्या सिद्ध करता है: डोमेन लोड बैलेंसर VIP IP पते पर रिज़ॉल्व होता है।

Terminal window
dig +short xF5XC_DOMAINNAMEx A
परिणामअर्थ
PASS — VIP IP लौटाया गया (जैसे, 72.19.3.185)डोमेन LB वर्चुअल IP पर रिज़ॉल्व होता है
FAIL — खाली प्रतिक्रियाDNS A रिकॉर्ड कॉन्फ़िगर नहीं किया गया

सुधार: API स्वचालन — चरण 4: DNS कॉन्फ़िगर करें

DNS-2: ACME चैलेंज रिकॉर्ड

Section titled “DNS-2: ACME चैलेंज रिकॉर्ड”

यह क्या सिद्ध करता है: स्वचालित TLS प्रमाणपत्र प्रावधान के लिए ACME चैलेंज रिकॉर्ड मौजूद है।

Terminal window
dig +short _acme-challenge.xF5XC_DOMAINNAMEx CNAME
dig +short _acme-challenge.xF5XC_DOMAINNAMEx TXT
परिणामअर्थ
PASS*.autocerts.ves.volterra.io. को CNAME (बाहरी DNS)ACME चैलेंज CNAME जगह पर है
PASS — डोमेन मान के साथ TXT रिकॉर्ड (F5 Distributed Cloud (F5 XC) प्रबंधित DNS)प्लेटफ़ॉर्म-प्रबंधित ACME चैलेंज TXT रिकॉर्ड के माध्यम से
FAIL — दोनों खालीACME रिकॉर्ड कॉन्फ़िगर नहीं; प्रमाणपत्र PreDomainChallengePending में रहेगा

सुधार: बाहरी DNS के लिए, CNAME बनाएँ: _acme-challenge.xF5XC_DOMAINNAMEx*.autocerts.ves.volterra.io। F5 XC प्रबंधित DNS के लिए, DNS ज़ोन पर allow_http_lb_managed_records सक्षम करें — DNS-4 देखें। API स्वचालन — चरण 4 देखें।

DNS-3: नेमसर्वर अधिकार

Section titled “DNS-3: नेमसर्वर अधिकार”

यह क्या सिद्ध करता है: क्या F5 XC रूट डोमेन के लिए आधिकारिक DNS प्रदाता है।

Terminal window
dig +short NS xF5XC_ROOT_DOMAINx
परिणामअर्थ
ns1.f5clouddns.com और ns2.f5clouddns.com शामिल हैंF5 XC प्रबंधित DNS — रिकॉर्ड स्वतः बनाए जा सकते हैं
अन्य नेमसर्वरबाहरी DNS — रिकॉर्ड मैन्युअल रूप से बनाने होंगे

सुधार: API स्वचालन — DNS अधिकार का पता लगाएँ

DNS-4: F5 XC प्रबंधित रिकॉर्ड सक्षम

Section titled “DNS-4: F5 XC प्रबंधित रिकॉर्ड सक्षम”

यह क्या सिद्ध करता है: F5 XC DNS ज़ोन लोड बैलेंसर के लिए स्वचालित रिकॉर्ड निर्माण की अनुमति देता है (केवल F5 XC प्रबंधित DNS)।

Terminal window
curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/config/dns/namespaces/system/dns_zones/xF5XC_ROOT_DOMAINx" \
| jq '.spec.primary.allow_http_lb_managed_records'
परिणामअर्थ
PASStrueप्लेटफ़ॉर्म LBs के लिए A और ACME रिकॉर्ड स्वतः बनाएगा
FAILfalse या nullप्रबंधित रिकॉर्ड अक्षम; ज़ोन अपडेट के माध्यम से सक्षम करें

सुधार: API स्वचालन — विकल्प A: F5 XC प्रबंधित DNS


परत 2: TLS प्रमाणपत्र

Section titled “परत 2: TLS प्रमाणपत्र”

DNS रिज़ॉल्व होने के बाद, लोड बैलेंसर के पास एक वैध TLS प्रमाणपत्र होना चाहिए।

TLS-1: प्रमाणपत्र स्थिति

Section titled “TLS-1: प्रमाणपत्र स्थिति”

यह क्या सिद्ध करता है: HTTPS LB पर स्वचालित TLS प्रमाणपत्र जारी किया गया है।

Terminal window
curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/config/namespaces/xF5XC_NAMESPACEx/http_loadbalancers/xF5XC_LB_NAMEx-https" \
| jq '.spec.cert_state'
परिणामअर्थ
PASS"CertificateValid" या "AutoCertRenewing"प्रमाणपत्र वैध और सक्रिय है
WARN"DomainChallengePending" या "DomainChallengeStarted"ACME चैलेंज प्रगति में — 5–10 मिनट प्रतीक्षा करें
INFO"AutoCertDomainRateLimited"Let’s Encrypt दर सीमा पहुँच गई — डेमो परिवेशों में अपेक्षित, HTTP LB को प्रभावित नहीं करता
FAIL"PreDomainChallengePending"ACME चैलेंज रिकॉर्ड गायब — DNS-2 देखें

सुधार: सुनिश्चित करें कि ACME चैलेंज रिकॉर्ड जगह पर है (बाहरी DNS के लिए CNAME, या F5 XC DNS के लिए प्रबंधित रिकॉर्ड सक्षम करें)। रिकॉर्ड कॉन्फ़िगर होने के बाद प्रमाणपत्र प्रावधान में 5–10 मिनट लगते हैं। यदि 15 मिनट से अधिक समय के बाद भी अटका हुआ है, तो Certificate Stuck — Clean Recreation देखें। यदि दर-सीमित है, तो HTTP LB अप्रभावित है।

TLS-2: प्रमाणपत्र विवरण

Section titled “TLS-2: प्रमाणपत्र विवरण”

यह क्या सिद्ध करता है: प्रमाणपत्र अपेक्षित डोमेन को कवर करता है और समाप्ति जानकारी दिखाता है। केवल HTTPS LB पर लागू।

Terminal window
curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/config/namespaces/xF5XC_NAMESPACEx/http_loadbalancers/xF5XC_LB_NAMEx-https" \
| jq '{
cert_state: .spec.cert_state,
auto_cert_info: .spec.auto_cert_info
}'
परिणामअर्थ
PASSauto_cert_info में dns_records और प्रमाणपत्र मेटाडेटा शामिल हैप्रमाणपत्र प्रावधान विवरण उपलब्ध है
FAILauto_cert_info null या खाली हैप्रमाणपत्र अभी तक प्रावधानित नहीं हुआ

TLS-3: लाइव TLS हैंडशेक

Section titled “TLS-3: लाइव TLS हैंडशेक”

यह क्या सिद्ध करता है: TLS प्रमाणपत्र वैध है और हैंडशेक क्लाइंट पक्ष से पूर्ण होता है। केवल तब लागू जब HTTPS LB के पास वैध प्रमाणपत्र हो।

Terminal window
curl -sv "https://xF5XC_DOMAINNAMEx/" 2>&1 \
| grep -E 'SSL connection|subject:|expire date:|issuer:'
परिणामअर्थ
PASSSSL connection using TLSv1.3, वैध विषय और समाप्ति दिखाता हैएंड-टू-एंड TLS काम कर रहा है
FAIL — कनेक्शन अस्वीकृत या प्रमाणपत्र त्रुटिDNS रिज़ॉल्यूशन और प्रमाणपत्र स्थिति जाँचें; यदि दर-सीमित है, तो HTTP का उपयोग करें

TLS-4: LB से ACME रिकॉर्ड लक्ष्य

Section titled “TLS-4: LB से ACME रिकॉर्ड लक्ष्य”

यह क्या सिद्ध करता है: HTTPS लोड बैलेंसर प्रमाणपत्र सत्यापन के लिए सही ACME लक्ष्य रिपोर्ट करता है।

Terminal window
curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/config/namespaces/xF5XC_NAMESPACEx/http_loadbalancers/xF5XC_LB_NAMEx-https" \
| jq '{
vip_ip: .spec.dns_info[0].ip_address,
acme_target: .spec.auto_cert_info.dns_records
}'
परिणामअर्थ
PASSvip_ip और acme_target आबादDNS रिकॉर्ड इन मानों के विरुद्ध सत्यापित किए जा सकते हैं
FAILnull मानLB में https_auto_cert कॉन्फ़िगर नहीं हो सकता

परत 3: HTTP लोड बैलेंसर

Section titled “परत 3: HTTP लोड बैलेंसर”

लोड बैलेंसर तैयार स्थिति में होना चाहिए और सही ढंग से कॉन्फ़िगर होना चाहिए।

LB-1: परिचालन स्थिति

Section titled “LB-1: परिचालन स्थिति”

यह क्या सिद्ध करता है: HTTP लोड बैलेंसर (प्राथमिक) पूरी तरह से परिचालन में है और ट्रैफ़िक स्वीकार कर रहा है।

Terminal window
curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/config/namespaces/xF5XC_NAMESPACEx/http_loadbalancers/xF5XC_LB_NAMEx-http" \
| jq '.spec.state'
परिणामअर्थ
PASS"VIRTUAL_HOST_READY"LB परिचालन में है
FAIL"VIRTUAL_HOST_PENDING_A_RECORD"DNS A रिकॉर्ड कॉन्फ़िगर नहीं — DNS-1 देखें

सुधार: LB VIRTUAL_HOST_PENDING_A_RECORD में अटका हुआ

LB-2: डोमेन कॉन्फ़िगरेशन

Section titled “LB-2: डोमेन कॉन्फ़िगरेशन”

यह क्या सिद्ध करता है: HTTP लोड बैलेंसर सही डोमेन(s) के लिए कॉन्फ़िगर किया गया है।

Terminal window
curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/config/namespaces/xF5XC_NAMESPACEx/http_loadbalancers/xF5XC_LB_NAMEx-http" \
| jq '.spec.domains'
परिणामअर्थ
PASS — array में आपका FQDN शामिल है (जैसे, ["app.example.com"])LB अपेक्षित डोमेन के लिए कॉन्फ़िगर है
FAIL — गायब या गलत डोमेनसही डोमेन के साथ LB spec अपडेट करें

यह क्या सिद्ध करता है: क्लाइंट-साइड डिफेंस सही JS इंजेक्शन नीति के साथ लोड बैलेंसर पर सक्षम है।

Terminal window
curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/config/namespaces/xF5XC_NAMESPACEx/http_loadbalancers/xF5XC_LB_NAMEx-http" \
| jq '{
csd_enabled: (if .spec.client_side_defense then true else false end),
js_policy: .spec.client_side_defense.policy
}'
परिणामअर्थ
PASScsd_enabled: true नीति में js_insert_all_pages के साथCSD सभी पृष्ठों पर JS इंजेक्शन के साथ सक्रिय
FAILcsd_enabled: falseLB पर CSD कॉन्फ़िगर नहीं

सुधार: API Reference — लोड बैलेंसर पर CSD सक्षम करें

LB-4: डिफ़ॉल्ट रूट पूल

Section titled “LB-4: डिफ़ॉल्ट रूट पूल”

यह क्या सिद्ध करता है: लोड बैलेंसर अपेक्षित वज़न और प्राथमिकता के साथ सही ऑरिजिन पूल को संदर्भित करता है।

Terminal window
curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/config/namespaces/xF5XC_NAMESPACEx/http_loadbalancers/xF5XC_LB_NAMEx-http" \
| jq '.spec.default_route_pools[] | {
pool: .pool.name,
namespace: .pool.namespace,
weight: .weight,
priority: .priority
}'
परिणामअर्थ
PASS — वज़न/प्राथमिकता के साथ आपका ऑरिजिन पूल नाम दिखाता हैLB सही बैकएंड पर रूट कर रहा है
FAIL — खाली या गलत पूलLB default_route_pools कॉन्फ़िगरेशन अपडेट करें

LB-5: परिनियोजन स्थिति (प्रति-साइट स्थितियाँ)

Section titled “LB-5: परिनियोजन स्थिति (प्रति-साइट स्थितियाँ)”

यह क्या सिद्ध करता है: लोड बैलेंसर परिनियोजित है और सभी साइटों में स्वस्थ स्थितियाँ रिपोर्ट करता है।

Terminal window
curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/config/namespaces/xF5XC_NAMESPACEx/http_loadbalancers/xF5XC_LB_NAMEx-http" \
| jq '{
state: .spec.state,
dns_info: .spec.dns_info,
host_name: .spec.host_name
}'
परिणामअर्थ
PASSstate VIRTUAL_HOST_READY है, dns_info आबाद हैLB VIP असाइन के साथ पूरी तरह से परिनियोजित
FAIL — लंबित स्थिति या खाली dns_infoDNS या प्रमाणपत्र समस्या परिनियोजन को अवरुद्ध कर रही है

LB-6: पूर्ण LB सारांश

Section titled “LB-6: पूर्ण LB सारांश”

यह क्या सिद्ध करता है: डीबगिंग के लिए दोनों LB कॉन्फ़िगरेशन का व्यापक स्नैपशॉट।

HTTP LB (प्राथमिक):

Terminal window
curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/config/namespaces/xF5XC_NAMESPACEx/http_loadbalancers/xF5XC_LB_NAMEx-http" \
| jq '{
name: .metadata.name,
state: .spec.state,
domains: .spec.domains,
csd_enabled: (if .spec.client_side_defense then true else false end),
route_pools: [.spec.default_route_pools[] | .pool.name],
advertise: (if .spec.advertise_on_public_default_vip then "public_default_vip" else "custom" end)
}'

HTTPS LB (द्वितीयक — प्रमाणपत्र स्थिति सहित):

Terminal window
curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/config/namespaces/xF5XC_NAMESPACEx/http_loadbalancers/xF5XC_LB_NAMEx-https" \
| jq '{
name: .metadata.name,
state: .spec.state,
cert_state: .spec.cert_state,
domains: .spec.domains,
csd_enabled: (if .spec.client_side_defense then true else false end),
route_pools: [.spec.default_route_pools[] | .pool.name]
}'

ऑरिजिन पूल उन बैकएंड सर्वरों को परिभाषित करता है जिन पर लोड बैलेंसर ट्रैफ़िक रूट करता है।

OP-1: ऑरिजिन पूल कॉन्फ़िगरेशन

Section titled “OP-1: ऑरिजिन पूल कॉन्फ़िगरेशन”

यह क्या सिद्ध करता है: ऑरिजिन पूल सही बैकएंड सर्वर, पोर्ट, और LB एल्गोरिदम के साथ मौजूद है।

Terminal window
curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/config/namespaces/xF5XC_NAMESPACEx/origin_pools/xF5XC_ORIGIN_POOLx" \
| jq '{
name: .metadata.name,
origin_servers: [.spec.origin_servers[] | {
ip: .public_ip.ip,
labels: .labels
}],
port: .spec.port,
lb_algorithm: .spec.loadbalancer_algorithm,
endpoint_selection: .spec.endpoint_selection
}'
परिणामअर्थ
PASS — सही IP, पोर्ट, और एल्गोरिदम दिखाता हैऑरिजिन पूल सही ढंग से कॉन्फ़िगर है
FAIL404 या गलत मानऑरिजिन पूल गायब या गलत कॉन्फ़िगर

सुधार: API स्वचालन — चरण 2: ऑरिजिन पूल बनाएँ

OP-2: ऑरिजिन सर्वर से TLS

Section titled “OP-2: ऑरिजिन सर्वर से TLS”

यह क्या सिद्ध करता है: LB और ऑरिजिन सर्वर के बीच कनेक्शन के लिए TLS कॉन्फ़िगर है या नहीं।

Terminal window
curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/config/namespaces/xF5XC_NAMESPACEx/origin_pools/xF5XC_ORIGIN_POOLx" \
| jq '{
tls_config: (if .spec.no_tls then "no_tls (plaintext)" elif .spec.use_tls then "use_tls (encrypted)" else "unknown" end)
}'
परिणामअर्थ
no_tls (plaintext)LB HTTP पर ऑरिजिन सर्वर से कनेक्ट होता है (Juice Shop डेमो के लिए अपेक्षित)
use_tls (encrypted)LB HTTPS पर ऑरिजिन सर्वर से कनेक्ट होता है

OP-3: स्वास्थ्य जाँच संबद्धता

Section titled “OP-3: स्वास्थ्य जाँच संबद्धता”

यह क्या सिद्ध करता है: ऑरिजिन पूल में सही स्वास्थ्य जाँच लिंक की गई है (यदि लागू हो)।

Terminal window
curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/config/namespaces/xF5XC_NAMESPACEx/origin_pools/xF5XC_ORIGIN_POOLx" \
| jq '.spec.healthcheck'
परिणामअर्थ
PASS — स्वास्थ्य जाँच संदर्भ (नाम, namespace, प्रकार) के साथ arrayस्वास्थ्य जाँच लिंक है
OK — खाली array []कोई स्वास्थ्य जाँच नहीं (स्वीकार्य — CSD को एक की आवश्यकता नहीं है)
FAIL — एक स्वास्थ्य जाँच अपेक्षित थी लेकिन array खाली हैनिर्माण के समय स्वास्थ्य जाँच नहीं मिली — Healthcheck Not Linked देखें

OP-4: ऑरिजिन कनेक्टिविटी

Section titled “OP-4: ऑरिजिन कनेक्टिविटी”

यह क्या सिद्ध करता है: ऑरिजिन सर्वर क्लाइंट पक्ष से पहुँचनीय है (LB-से-ऑरिजिन पथ का परीक्षण नहीं करता)।

Terminal window
curl -s -o /dev/null -w '%{http_code}' \
"http://xF5XC_ORIGIN_IPx:xF5XC_ORIGIN_PORTx/"
परिणामअर्थ
PASS200 (या अन्य वैध HTTP कोड)ऑरिजिन सर्वर प्रतिक्रिया दे रहा है
FAIL000 या कनेक्शन अस्वीकृतइस नेटवर्क से ऑरिजिन सर्वर अप्राप्य

परत 5: स्वास्थ्य जाँच

Section titled “परत 5: स्वास्थ्य जाँच”

स्वास्थ्य जाँच बैकएंड उपलब्धता की निगरानी करती है। ये CSD के लिए वैकल्पिक हैं लेकिन उत्पादन परिनियोजन के लिए उपयोगी हैं।

HC-1: स्वास्थ्य जाँच कॉन्फ़िगरेशन

Section titled “HC-1: स्वास्थ्य जाँच कॉन्फ़िगरेशन”

यह क्या सिद्ध करता है: स्वास्थ्य जाँच सही प्रकार, पथ, समयिंग, और सीमाओं के साथ मौजूद है।

Terminal window
curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/config/namespaces/xF5XC_NAMESPACEx/healthchecks/xF5XC_HC_NAMEx" \
| jq '{
name: .metadata.name,
type: (if .spec.http_health_check then "HTTP" elif .spec.tcp_health_check then "TCP" else "unknown" end),
path: .spec.http_health_check.path,
expected_status: .spec.http_health_check.expected_status_codes,
timeout: .spec.timeout,
interval: .spec.interval,
unhealthy_threshold: .spec.unhealthy_threshold,
healthy_threshold: .spec.healthy_threshold
}'
परिणामअर्थ
PASS — पथ / और अपेक्षित 200 के साथ HTTP प्रकार दिखाता हैस्वास्थ्य जाँच सही ढंग से कॉन्फ़िगर है
FAIL404 प्रतिक्रियास्वास्थ्य जाँच मौजूद नहीं (हो सकता है छोड़ दी गई हो — चरण 1 Phase 1 देखें)

HC-2: सभी स्वास्थ्य जाँचें सूचीबद्ध करें

Section titled “HC-2: सभी स्वास्थ्य जाँचें सूचीबद्ध करें”

यह क्या सिद्ध करता है: नामकरण और गिनती सत्यापित करने के लिए namespace में सभी स्वास्थ्य जाँचें गिनाता है।

Terminal window
curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/config/namespaces/xF5XC_NAMESPACEx/healthchecks" \
| jq -r '
["NAME", "NAMESPACE", "DESCRIPTION"],
(.items[] | [
.name,
.namespace,
(.description | if length == 0 then "—" else . end)
])
| @tsv' | column -t

परत 6: CSD कॉन्फ़िगरेशन

Section titled “परत 6: CSD कॉन्फ़िगरेशन”

CSD को टेनेंट स्तर पर सक्षम होना चाहिए और JavaScript इंजेक्शन टैग कॉन्फ़िगर होना चाहिए।

CSD-1: टेनेंट CSD स्थिति

Section titled “CSD-1: टेनेंट CSD स्थिति”

यह क्या सिद्ध करता है: CSD टेनेंट के लिए कॉन्फ़िगर और सक्षम है।

Terminal window
curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/status" \
| jq '{isConfigured, isEnabled}'
परिणामअर्थ
PASS — दोनों trueइस टेनेंट के लिए CSD सक्रिय है
FAILisConfigured: falseCSD टेनेंट स्तर पर सक्षम नहीं — F5 XC प्रशासक से संपर्क करें
FAILisEnabled: falseCSD कॉन्फ़िगर लेकिन सक्रिय नहीं

CSD-2: JS इंजेक्शन टैग

Section titled “CSD-2: JS इंजेक्शन टैग”

यह क्या सिद्ध करता है: CSD JavaScript इंजेक्शन टैग उत्पन्न हुआ है और इंजेक्शन के लिए तैयार है।

Terminal window
curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/js_configuration" \
| jq '{has_script_tag: (.scriptTag | length > 0)}'
परिणामअर्थ
PASShas_script_tag: trueJS इंजेक्शन टैग कॉन्फ़िगर है
FAILhas_script_tag: falseकोई स्क्रिप्ट टैग नहीं — सत्यापित करें कि CSD सक्षम है और एक संरक्षित डोमेन पंजीकृत है

यह क्या सिद्ध करता है: सत्यापन या मैन्युअल इंजेक्शन के लिए पूरा स्क्रिप्ट टैग दिखाता है।

Terminal window
curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/js_configuration" \
| jq '.scriptTag'

CSD-4: संरक्षित डोमेन पंजीकरण

Section titled “CSD-4: संरक्षित डोमेन पंजीकरण”

यह क्या सिद्ध करता है: रूट डोमेन टेनेंट पर CSD संरक्षित डोमेन के रूप में पंजीकृत है।

Terminal window
curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/protected_domains" \
| jq '.items[] | {name, namespace, description}'
परिणामअर्थ
PASS — गैर-खाली name के साथ एक आइटम दिखाता हैडोमेन संरक्षित है
FAIL — आइटमों में खाली name और namespace फ़ील्डकोई संरक्षित डोमेन पंजीकृत नहीं — Phase 1 चरण 6 देखें

CSD-5: लाइव JS इंजेक्शन सत्यापन

Section titled “CSD-5: लाइव JS इंजेक्शन सत्यापन”

यह क्या सिद्ध करता है: CSD JavaScript वास्तव में लोड बैलेंसर द्वारा प्रदान किए गए पृष्ठ प्रतिक्रियाओं में इंजेक्ट किया जा रहा है।

Terminal window
curl -s "http://xF5XC_DOMAINNAMEx/" \
| grep -oE '(zeronaught|shape)\.com[^"]*' | head -1
परिणामअर्थ
PASS — एक zeronaught.com या shape.com URL खंड लौटाता है (जैसे, zeronaught.com/__imp_apg__/js/...)CSD JavaScript पृष्ठों में इंजेक्ट किया जा रहा है
FAIL — खाली आउटपुटJS इंजेक्ट नहीं — LB-3 और CSD-1 जाँचें

परत 7: ट्रैफ़िक सत्यापन

Section titled “परत 7: ट्रैफ़िक सत्यापन”

सत्यापित करें कि लाइव ट्रैफ़िक लोड बैलेंसर तक पहुँच रहा है और सही ढंग से संसाधित हो रहा है।

TV-1: अनुरोध गिनती (पिछले 24 घंटे)

Section titled “TV-1: अनुरोध गिनती (पिछले 24 घंटे)”

यह क्या सिद्ध करता है: ट्रैफ़िक लोड बैलेंसर तक पहुँच रहा है। शून्य परिणाम का मतलब है कोई ट्रैफ़िक नहीं आ रहा।

Terminal window
curl -s -X POST \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
-H "Content-Type: application/json" \
-d '{
"start_time": "'"$(date -u -d '24 hours ago' +%Y-%m-%dT%H:%M:%SZ 2>/dev/null || date -u -v-24H +%Y-%m-%dT%H:%M:%SZ)"'",
"end_time": "'"$(date -u +%Y-%m-%dT%H:%M:%SZ)"'"
}' \
"xF5XC_API_URLx/api/data/namespaces/xF5XC_NAMESPACEx/access_logs/aggregation" \
| jq '{total_requests: .total_hits}'
परिणामअर्थ
PASStotal_requests एक गैर-शून्य स्ट्रिंग है (जैसे, "380")ट्रैफ़िक LB से होकर प्रवाहित हो रहा है
FAIL"0" या कोई डेटा नहींLB तक कोई ट्रैफ़िक नहीं — DNS-1 और LB-1 जाँचें

TV-2: स्टेटस कोड वितरण

Section titled “TV-2: स्टेटस कोड वितरण”

यह क्या सिद्ध करता है: प्रतिक्रिया स्टेटस कोड का विश्लेषण त्रुटि पैटर्न प्रकट करता है।

Terminal window
curl -s -X POST \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
-H "Content-Type: application/json" \
-d '{
"start_time": "'"$(date -u -d '24 hours ago' +%Y-%m-%dT%H:%M:%SZ 2>/dev/null || date -u -v-24H +%Y-%m-%dT%H:%M:%SZ)"'",
"end_time": "'"$(date -u +%Y-%m-%dT%H:%M:%SZ)"'",
"sort": "DESCENDING",
"limit": 100
}' \
"xF5XC_API_URLx/api/data/namespaces/xF5XC_NAMESPACEx/access_logs" \
| jq -r '
[.logs[] | fromjson | .rsp_code_class]
| group_by(.) | map({class: .[0], count: length})
| sort_by(-.count)
| ["STATUS_CLASS", "COUNT"], (.[] | [.class, .count])
| @tsv' | column -t

स्वस्थ साइट के लिए अपेक्षित आउटपुट:

STATUS_CLASS COUNT
2xx 82
downstream_remote_disconnect 18
परिणामअर्थ
PASS — बहुसंख्यक 2xxसाइट सफल प्रतिक्रियाएँ दे रही है
WARN — उच्च 4xx गिनतीक्लाइंट त्रुटियाँ (खराब URL, गायब संसाधन)
FAIL — उच्च 5xx गिनतीसर्वर त्रुटियाँ — ऑरिजिन सर्वर स्वास्थ्य जाँचें

downstream_remote_disconnect वर्ग इंगित करता है कि प्रतिक्रिया पूर्ण होने से पहले क्लाइंट ने कनेक्शन बंद कर दिया (लॉन्ग-पोलिंग या WebSocket अपग्रेड अनुरोधों के लिए सामान्य)।

TV-3: हालिया अनुरोध नमूने

Section titled “TV-3: हालिया अनुरोध नमूने”

यह क्या सिद्ध करता है: व्यक्तिगत अनुरोध सही फ़ील्ड के साथ लॉग किए जा रहे हैं।

Terminal window
curl -s -X POST \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
-H "Content-Type: application/json" \
-d '{
"start_time": "'"$(date -u -d '1 hour ago' +%Y-%m-%dT%H:%M:%SZ 2>/dev/null || date -u -v-1H +%Y-%m-%dT%H:%M:%SZ)"'",
"end_time": "'"$(date -u +%Y-%m-%dT%H:%M:%SZ)"'",
"sort": "DESCENDING",
"limit": 10
}' \
"xF5XC_API_URLx/api/data/namespaces/xF5XC_NAMESPACEx/access_logs" \
| jq -r '
["TIMESTAMP", "METHOD", "PATH", "STATUS", "SRC_IP"],
(.logs[] | fromjson | [.["@timestamp"], .method, .req_path, .rsp_code, .src_ip])
| @tsv' | column -t

TV-4: एक्सेस लॉग में CSD JS इंजेक्शन

Section titled “TV-4: एक्सेस लॉग में CSD JS इंजेक्शन”

यह क्या सिद्ध करता है: एक्सेस लॉग पुष्टि करते हैं कि CSD JavaScript प्रतिक्रियाओं में इंजेक्ट किया जा रहा है।

Terminal window
curl -s -X POST \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
-H "Content-Type: application/json" \
-d '{
"start_time": "'"$(date -u -d '1 hour ago' +%Y-%m-%dT%H:%M:%SZ 2>/dev/null || date -u -v-1H +%Y-%m-%dT%H:%M:%SZ)"'",
"end_time": "'"$(date -u +%Y-%m-%dT%H:%M:%SZ)"'",
"sort": "DESCENDING",
"limit": 20
}' \
"xF5XC_API_URLx/api/data/namespaces/xF5XC_NAMESPACEx/access_logs" \
| jq '[.logs[] | fromjson | select(.csd_js_injection == "true")] | length as $injected |
{injected_count: $injected, total_sampled: 20}'
परिणामअर्थ
PASSinjected_count > 0CSD JS पृष्ठ प्रतिक्रियाओं में इंजेक्ट किया जा रहा है
FAILinjected_count: 0JS इंजेक्ट नहीं — CSD-1 और LB-3 जाँचें

TV-5: एंड-टू-एंड कनेक्टिविटी परीक्षण

Section titled “TV-5: एंड-टू-एंड कनेक्टिविटी परीक्षण”

यह क्या सिद्ध करता है: एक पूरा अनुरोध क्लाइंट से DNS, LB, और ऑरिजिन सर्वर के माध्यम से प्रवाहित होता है और एक वैध प्रतिक्रिया लौटाता है।

Terminal window
curl -sv "http://xF5XC_DOMAINNAMEx/" 2>&1 \
| grep -E 'Connected to|< HTTP|< content-type'
परिणामअर्थ
PASS — कनेक्शन, HTTP 200, और content-type दिखाता हैपूर्ण स्टैक परिचालन में है
FAIL — कनेक्शन अस्वीकृत या DNS त्रुटिपरत 1: DNS से डीबगिंग शुरू करें

परत 8: CSD टेलीमेट्री और डोमेन नीति

Section titled “परत 8: CSD टेलीमेट्री और डोमेन नीति”

ये कमांड CSD कंसोल डैशबोर्ड, स्क्रिप्ट सूची, फ़ॉर्म फ़ील्ड, और नेटवर्क दृश्यों में प्रदर्शित समान डेटा क्वेरी करते हैं।

TEL-1: स्क्रिप्ट इन्वेंटरी

Section titled “TEL-1: स्क्रिप्ट इन्वेंटरी”

यह क्या सिद्ध करता है: CSD संरक्षित डोमेन पर चल रही स्क्रिप्ट का पता लगा रहा है और उन्हें सूचीबद्ध कर रहा है।

Terminal window
NOW=$(date +%s)
START=$(( NOW - 604800 ))
curl -s -X POST \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
-H "Content-Type: application/json" \
-d "{
\"startTime\": \"${START}\",
\"endTime\": \"${NOW}\"
}" \
"xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/scripts" \
| jq -r '
["SCRIPT", "RISK", "STATUS", "FIELDS", "USERS"],
(.scripts[] | [
(.script_name | if length > 50 then .[:47] + "..." else . end),
.risk_level,
.status,
(.form_fields_read // 0),
(.affected_users_count // 0)
])
| @tsv' | column -t
परिणामअर्थ
PASS — जोखिम स्तरों के साथ स्क्रिप्ट सूचीबद्धCSD सक्रिय रूप से स्क्रिप्ट की निगरानी कर रहा है
FAIL — खाली arrayसमस्या निवारण: खाली स्क्रिप्ट array देखें

TEL-2: पता लगाए गए डोमेन

Section titled “TEL-2: पता लगाए गए डोमेन”

यह क्या सिद्ध करता है: CSD ने स्क्रिप्ट स्रोत डोमेन का पता लगाया है और उन्हें स्थिति के अनुसार वर्गीकृत किया है।

Terminal window
curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/detected_domains" \
| jq '{
summary: {
action_needed: .domain_summary.actionNeededCount.count,
mitigated: .domain_summary.mitigatedDomains.count,
allowed: .domain_summary.allowedDomains.count,
total: .domain_summary.totalDomains.count
},
domains: [.domains_list[] | {
domain: .domain,
category: .category,
status: .status,
first_seen: (.firstSeenDate | tonumber | todate),
latest_seen: (.latestSeenDate | tonumber | todate)
}]
}'
परिणामअर्थ
PASStotal > 0 डोमेन सूचीबद्ध के साथCSD स्क्रिप्ट डोमेन ट्रैक कर रहा है
WARNaction_needed > 0कुछ डोमेन की समीक्षा आवश्यक
FAIL — खाली प्रतिक्रियाकोई टेलीमेट्री डेटा नहीं — CSD-5 जाँचें

TEL-3: डोमेन नीति स्थिति

Section titled “TEL-3: डोमेन नीति स्थिति”

यह क्या सिद्ध करता है: अनुमत बनाम शमन किए गए डोमेन का वितरण और नीति सुसंगत है या नहीं दिखाता है।

Terminal window
curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/detected_domains" \
| jq '{
action_needed: .domain_summary.actionNeededCount.count,
mitigated: .domain_summary.mitigatedDomains.count,
allowed: .domain_summary.allowedDomains.count,
total: .domain_summary.totalDomains.count,
domains_needing_action: [.domains_list[] | select(.status == "AN") | .domain]
}'
परिणामअर्थ
PASSaction_needed: 0सभी डोमेन की समीक्षा और वर्गीकरण हो चुका है
WARNaction_needed > 0domains_needing_action में सूचीबद्ध डोमेन की समीक्षा आवश्यक

TEL-4: फ़ॉर्म फ़ील्ड इन्वेंटरी

Section titled “TEL-4: फ़ॉर्म फ़ील्ड इन्वेंटरी”

यह क्या सिद्ध करता है: CSD ने ऐसे फ़ॉर्म फ़ील्ड का पता लगाया है जिन्हें स्क्रिप्ट पढ़ रही हैं, संवेदनशीलता वर्गीकरण के साथ।

Terminal window
NOW=$(date +%s)
START=$(( NOW - 604800 ))
curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/formFields?startTime=${START}&endTime=${NOW}" \
| jq -r '
["FIELD", "SENSITIVITY", "SCRIPTS"],
(.form_fields[] | [
.name,
.analysis,
(.scripts_count // 0)
])
| @tsv' | column -t
परिणामअर्थ
PASS — संवेदनशीलता के साथ फ़ॉर्म फ़ील्ड सूचीबद्धCSD फ़ॉर्म फ़ील्ड एक्सेस ट्रैक कर रहा है
INFO — खाली arrayकोई फ़ॉर्म फ़ील्ड पता नहीं लगा (अपेक्षित यदि साइट पर कोई फ़ॉर्म नहीं है)

TEL-5: स्क्रिप्ट का विस्तृत विश्लेषण

Section titled “TEL-5: स्क्रिप्ट का विस्तृत विश्लेषण”

यह क्या सिद्ध करता है: जोखिम, व्यवहार, और नेटवर्क इंटरैक्शन सहित किसी विशिष्ट स्क्रिप्ट के बारे में विस्तृत जानकारी।

पहले TEL-1 से एक स्क्रिप्ट ID प्राप्त करें, फिर उसके विवरण क्वेरी करें:

Terminal window
SCRIPT_ID="your-script-id"
# Overview (risk level, type, source domain)
curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/scripts/${SCRIPT_ID}/dashboard" \
| jq '{script_name, risk_level, type, source_domain, status}'
# Behaviors over time
curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/scripts/${SCRIPT_ID}/behaviors" \
| jq '.behaviors'
# Network interactions (domains the script communicates with)
curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/scripts/${SCRIPT_ID}/networkInteractions" \
| jq '.network_interactions'

TEL-6: प्रभावित उपयोगकर्ता

Section titled “TEL-6: प्रभावित उपयोगकर्ता”

यह क्या सिद्ध करता है: किसी विशिष्ट स्क्रिप्ट से प्रभावित उपयोगकर्ताओं को सूचीबद्ध करता है, एक्सपोज़र के दायरे को दिखाता है।

Terminal window
SCRIPT_ID="your-script-id"
NOW=$(date +%s)
START=$(( NOW - 604800 ))
curl -s -X POST \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
-H "Content-Type: application/json" \
-d "{
\"startTime\": \"${START}\",
\"endTime\": \"${NOW}\"
}" \
"xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/scripts/${SCRIPT_ID}/affectedUsers" \
| jq -r '
["IP_ADDRESS", "DEVICE_ID", "GEO", "CHANNEL", "USER_AGENT"],
(.affected_users[] | [
.ip_address,
(.device_id | if length > 12 then .[:12] + "..." else . end),
.geolocation,
.channel,
(.user_agent | if length > 30 then .[:27] + "..." else . end)
])
| @tsv' | column -t

TEL-7: जोखिम स्तर के अनुसार स्क्रिप्ट गिनती

Section titled “TEL-7: जोखिम स्तर के अनुसार स्क्रिप्ट गिनती”

यह क्या सिद्ध करता है: सभी पता लगाई गई स्क्रिप्ट में एकत्रित जोखिम वितरण।

Terminal window
NOW=$(date +%s)
START=$(( NOW - 604800 ))
curl -s -X POST \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
-H "Content-Type: application/json" \
-d "{
\"startTime\": \"${START}\",
\"endTime\": \"${NOW}\"
}" \
"xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/scripts" \
| jq '[.scripts[] | .risk_level] | group_by(.) | map({risk_level: .[0], count: length}) | sort_by(-.count)'
परिणामअर्थ
PASS — सभी No Riskकोई जोखिमपूर्ण स्क्रिप्ट पता नहीं चली
WARNLow Risk या High Risk मौजूदTEL-5 में चिह्नित स्क्रिप्ट की समीक्षा करें

TEL-8: टेलीमेट्री ताजगी

Section titled “TEL-8: टेलीमेट्री ताजगी”

यह क्या सिद्ध करता है: CSD टेलीमेट्री डेटा हाल का है, सक्रिय निगरानी की पुष्टि करता है।

Terminal window
curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/detected_domains" \
| jq '{
total_domains: .domain_summary.totalDomains.count,
latest_update: (.domain_summary.totalDomains.lastUpdated // "unknown"),
most_recent_domain: (.domains_list | sort_by(.latestSeenDate) | last | {
domain: .domain,
latest_seen: (.latestSeenDate | tonumber | todate)
})
}'
परिणामअर्थ
PASSlatest_seen पिछले 24 घंटों के भीतर हैटेलीमेट्री सक्रिय रूप से डेटा एकत्र कर रही है
WARNlatest_seen 24 घंटे से पुराना हैट्रैफ़िक रुक गया हो सकता है या CSD प्रसंस्करण में देरी है

पूर्ण-स्टैक डैशबोर्ड

Section titled “पूर्ण-स्टैक डैशबोर्ड”

एक एकल कमांड चलाएँ जो प्रत्येक परत में सभी महत्वपूर्ण स्वास्थ्य संकेतकों की जाँच करे और एक सारांश तालिका प्रस्तुत करे:

Terminal window
echo "=== CSD Verification Dashboard ==="
echo ""
# Layer 1: DNS
DNS_A=$(dig +short xF5XC_DOMAINNAMEx A | head -1)
DNS_ACME=$(dig +short _acme-challenge.xF5XC_DOMAINNAMEx CNAME | head -1)
# Layers 2-3: LB + TLS
LB=$(curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/config/namespaces/xF5XC_NAMESPACEx/http_loadbalancers/xF5XC_LB_NAMEx-http")
LB_HTTPS=$(curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/config/namespaces/xF5XC_NAMESPACEx/http_loadbalancers/xF5XC_LB_NAMEx-https")
LB_STATE=$(echo "$LB" | jq -r '.spec.state // "UNKNOWN"')
CERT_STATE=$(echo "$LB_HTTPS" | jq -r '.spec.cert_state // "UNKNOWN"')
CSD_ON_LB=$(echo "$LB" | jq -r 'if .spec.client_side_defense then "ENABLED" else "DISABLED" end')
DOMAINS=$(echo "$LB" | jq -r '.spec.domains | join(", ")')
ROUTE_POOL=$(echo "$LB" | jq -r '[.spec.default_route_pools[] | .pool.name] | join(", ")')
# Layer 6: CSD status
CSD=$(curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/status")
CSD_CONFIGURED=$(echo "$CSD" | jq -r '.isConfigured // false')
CSD_ENABLED=$(echo "$CSD" | jq -r '.isEnabled // false')
# Layer 6: JS config
JS_TAG=$(curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/js_configuration" \
| jq -r 'if (.scriptTag | length) > 0 then "PRESENT" else "MISSING" end')
# Layer 7: Traffic (last 24h)
TRAFFIC=$(curl -s -X POST \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
-H "Content-Type: application/json" \
-d "{
\"start_time\": \"$(date -u -d '24 hours ago' +%Y-%m-%dT%H:%M:%SZ 2>/dev/null || date -u -v-24H +%Y-%m-%dT%H:%M:%SZ)\",
\"end_time\": \"$(date -u +%Y-%m-%dT%H:%M:%SZ)\"
}" \
"xF5XC_API_URLx/api/data/namespaces/xF5XC_NAMESPACEx/access_logs/aggregation" \
| jq -r '.total_hits // "0"')
printf "%-28s %s\n" "CHECK" "STATUS"
printf "%-28s %s\n" "----------------------------" "----------------------------"
printf "%-28s %s\n" "[DNS] A Record" "${DNS_A:-NOT_FOUND}"
printf "%-28s %s\n" "[DNS] ACME CNAME" "${DNS_ACME:-NOT_FOUND}"
printf "%-28s %s\n" "[TLS] Certificate" "$CERT_STATE"
printf "%-28s %s\n" "[LB] State" "$LB_STATE"
printf "%-28s %s\n" "[LB] Domains" "$DOMAINS"
printf "%-28s %s\n" "[LB] Route Pool" "$ROUTE_POOL"
printf "%-28s %s\n" "[LB] CSD on LB" "$CSD_ON_LB"
printf "%-28s %s\n" "[CSD] Configured (tenant)" "$CSD_CONFIGURED"
printf "%-28s %s\n" "[CSD] Enabled" "$CSD_ENABLED"
printf "%-28s %s\n" "[CSD] JS Script Tag" "$JS_TAG"
printf "%-28s %s\n" "[Traffic] Requests (24h)" "$TRAFFIC"

एक्सेस लॉग फ़ील्ड संदर्भ

Section titled “एक्सेस लॉग फ़ील्ड संदर्भ”
फ़ील्डप्रकारविवरण
@timestampstringअनुरोध टाइमस्टैम्प (ISO 8601)। @ उपसर्ग ध्यान दें — jq में .["@timestamp"] से एक्सेस करें
methodstringHTTP मेथड (GET, POST, आदि)
req_pathstringअनुरोध URI पथ
rsp_codestringHTTP प्रतिक्रिया स्टेटस कोड स्ट्रिंग के रूप में (जैसे, "200", "404")
rsp_code_classstringस्टेटस कोड वर्ग (2xx, 3xx, 4xx, 5xx, या downstream_remote_disconnect)
src_ipstringक्लाइंट स्रोत IP पता
dst_ipstringगंतव्य (VIP) IP पता
domainstringअनुरोध Host हेडर मान
user_agentstringक्लाइंट User-Agent स्ट्रिंग
rsp_sizestringबाइट्स में प्रतिक्रिया बॉडी का आकार (स्ट्रिंग के रूप में लौटाया गया)
req_sizestringबाइट्स में अनुरोध बॉडी का आकार (स्ट्रिंग के रूप में लौटाया गया)
duration_with_data_tx_delaystringसेकंड में कुल अनुरोध अवधि (स्ट्रिंग के रूप में लौटाई गई, जैसे, "0.024219")
csd_js_injectionstring"true" जब CSD JavaScript इंजेक्ट किया गया हो (केवल सक्रिय होने पर मौजूद)

CSD टेलीमेट्री फ़ील्ड संदर्भ

Section titled “CSD टेलीमेट्री फ़ील्ड संदर्भ”
फ़ील्डएंडपॉइंटविवरण
isConfiguredstatusCSD टेनेंट स्तर पर सक्षम
isEnabledstatusइस namespace के लिए CSD सक्रिय
scripts[]scriptsपता लगाई गई स्क्रिप्ट ऑब्जेक्ट की array
.script_namescriptsJavaScript फ़ाइल का पूरा URL
.risk_levelscriptsजोखिम स्तर (No Risk, Low Risk, High Risk)
.statusscriptsAN (Action Needed) या NA (No Action Needed)
.form_fields_readscriptsस्क्रिप्ट द्वारा पढ़े जाने वाले फ़ॉर्म फ़ील्ड की संख्या
.affected_users_countscriptsप्रभावित अद्वितीय उपयोगकर्ताओं/सत्रों की संख्या
domain_summarydetected_domainsस्थिति के अनुसार गिनती: .actionNeededCount.count, .mitigatedDomains.count, .allowedDomains.count, .totalDomains.count (प्रत्येक में .count और .lastUpdated है)
domains_list[]detected_domainsपता लगाए गए डोमेन ऑब्जेक्ट की array, .domain, .status, .category, .firstSeenDate, .latestSeenDate (epoch सेकंड स्ट्रिंग के रूप में) के साथ
form_fields[]formFieldsपता लगाए गए फ़ॉर्म फ़ील्ड ऑब्जेक्ट की array
.analysisformFieldsसंवेदनशीलता वर्गीकरण (Sensitive, Not Sensitive)

शून्य एक्सेस लॉग

Section titled “शून्य एक्सेस लॉग”

यदि TV-1 0 लौटाता है:

  1. DNS रिज़ॉल्यूशन जाँचें — सत्यापित करें कि डोमेन LB VIP पर रिज़ॉल्व होता है:

    Terminal window
    dig +short xF5XC_DOMAINNAMEx A

    यदि खाली है, DNS कॉन्फ़िगर नहीं है। API स्वचालन — चरण 4 देखें।

  2. LB स्थिति जाँचें — लोड बैलेंसर VIRTUAL_HOST_READY होना चाहिए:

    Terminal window
    curl -s \
    -H "Authorization: APIToken xF5XC_API_TOKENx" \
    "xF5XC_API_URLx/api/config/namespaces/xF5XC_NAMESPACEx/http_loadbalancers/xF5XC_LB_NAMEx-http" \
    | jq '.spec.state'
  3. एक परीक्षण अनुरोध भेजें — एंड-टू-एंड कनेक्टिविटी की पुष्टि के लिए ट्रैफ़िक उत्पन्न करें:

    Terminal window
    curl -sv "http://xF5XC_DOMAINNAMEx/" 2>&1 | head -20

    एक सफल HTTP प्रतिक्रिया खोजें। केवल तभी https:// का उपयोग करें जब HTTPS LB प्रमाणपत्र वैध हो।

DNS ज़ोन पर प्रबंधित रिकॉर्ड अक्षम

Section titled “DNS ज़ोन पर प्रबंधित रिकॉर्ड अक्षम”

यदि DNS-4 false लौटाता है, तो स्वचालित रिकॉर्ड निर्माण अक्षम है, भले ही F5 XC आधिकारिक DNS प्रदाता हो। यह एक सामान्य गलत कॉन्फ़िगरेशन है जिससे A रिकॉर्ड और ACME CNAME दोनों गायब हो जाते हैं, जो लोड बैलेंसर को VIRTUAL_HOST_READY तक पहुँचने और प्रमाणपत्र जारी होने से रोकता है।

प्रबंधित रिकॉर्ड सक्षम करने के लिए, allow_http_lb_managed_records: true सेट करने के लिए DNS ज़ोन कॉन्फ़िगरेशन अपडेट करें। API कॉल के लिए API स्वचालन — विकल्प A: F5 XC प्रबंधित DNS देखें।

LB VIRTUAL_HOST_PENDING_A_RECORD में अटका हुआ

Section titled “LB VIRTUAL_HOST_PENDING_A_RECORD में अटका हुआ”

लोड बैलेंसर अपने VIP की ओर इंगित करने वाले DNS A रिकॉर्ड की प्रतीक्षा कर रहा है। विस्तृत समाधान चरणों के लिए LB VIRTUAL_HOST_PENDING_A_RECORD में अटका हुआ देखें।

प्रमाणपत्र PreDomainChallengePending में अटका हुआ

Section titled “प्रमाणपत्र PreDomainChallengePending में अटका हुआ”

स्वचालित TLS प्रमाणपत्र के लिए ACME चैलेंज रिकॉर्ड की आवश्यकता होती है। विधि आपके DNS प्रदाता पर निर्भर करती है:

F5 XC प्रबंधित DNS: DNS ज़ोन पर allow_http_lb_managed_records सक्षम करें (DNS-4)। प्लेटफ़ॉर्म x-ves-io-managed RR सेट समूह में TXT-आधारित ACME चैलेंज रिकॉर्ड स्वतः बनाता है। यदि प्रबंधित रिकॉर्ड सक्षम करने के बाद भी प्रमाणपत्र अटका रहता है, तो एक नए प्रमाणपत्र अनुरोध को ट्रिगर करने के लिए लोड बैलेंसर को हटाएँ और पुनः बनाएँ।

बाहरी DNS: अपने DNS प्रदाता पर एक CNAME रिकॉर्ड बनाएँ:

_acme-challenge.xF5XC_DOMAINNAMEx CNAME *.autocerts.ves.volterra.io

रिकॉर्ड के अस्तित्व की पुष्टि करें:

Terminal window
dig +short _acme-challenge.xF5XC_DOMAINNAMEx CNAME
dig +short _acme-challenge.xF5XC_DOMAINNAMEx TXT

यदि दोनों खाली हैं, तो ACME रिकॉर्ड कॉन्फ़िगर नहीं है। रिकॉर्ड स्थापित होने के बाद प्रमाणपत्र प्रावधान में 5–10 मिनट लगते हैं। विशिष्ट ACME सत्यापन त्रुटियों के लिए LB त्रुटि स्थिति जाँचें:

Terminal window
curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/config/namespaces/xF5XC_NAMESPACEx/http_loadbalancers/xF5XC_LB_NAMEx-http" \
| jq '[.status[]? | select(.virtual_host_status != null) | .virtual_host_status.error_description]'

CSD को F5 XC प्रशासक द्वारा टेनेंट स्तर पर सक्षम किया जाना चाहिए। यह एक टेनेंट-व्यापी सेटिंग है जिसे namespace API के माध्यम से कॉन्फ़िगर नहीं किया जा सकता। क्लाइंट-साइड डिफेंस सक्षम करने के लिए अपने प्रशासक से संपर्क करें।

खाली स्क्रिप्ट array

Section titled “खाली स्क्रिप्ट array”

यदि TEL-1 एक खाली array लौटाता है:

  1. संरक्षित डोमेन जाँचें — CSD केवल पंजीकृत डोमेन पर स्क्रिप्ट की निगरानी करता है:

    Terminal window
    curl -s \
    -H "Authorization: APIToken xF5XC_API_TOKENx" \
    "xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/protected_domains" \
    | jq '.items[] | {name, namespace}'
  2. JS इंजेक्शन सत्यापित करें — पुष्टि करें कि CSD स्क्रिप्ट टैग पृष्ठों में इंजेक्ट हो रहा है:

    Terminal window
    curl -s "http://xF5XC_DOMAINNAMEx/" | grep -oE '(zeronaught|shape)\.com[^"]*' | head -1

    यदि कोई मेल नहीं, तो CSD JavaScript इंजेक्ट नहीं हो रहा। जाँचें कि LB में client_side_defense सक्षम है।

  3. प्रसंस्करण समय दें — पहली बार CSD सक्षम करने या नया संरक्षित डोमेन पंजीकृत करने के बाद, स्क्रिप्ट पहचान में 5–15 मिनट लग सकते हैं। साइट पर ट्रैफ़िक उत्पन्न करें और पुनः जाँचने से पहले प्रतीक्षा करें।

समय सीमा प्रीसेट

Section titled “समय सीमा प्रीसेट”
अवधिEpoch ऑफसेटISO 8601 (Linux)ISO 8601 (macOS)
1 घंटा$(( $(date +%s) - 3600 ))date -u -d '1 hour ago' +%Y-%m-%dT%H:%M:%SZdate -u -v-1H +%Y-%m-%dT%H:%M:%SZ
24 घंटे$(( $(date +%s) - 86400 ))date -u -d '24 hours ago' +%Y-%m-%dT%H:%M:%SZdate -u -v-24H +%Y-%m-%dT%H:%M:%SZ
7 दिन$(( $(date +%s) - 604800 ))date -u -d '7 days ago' +%Y-%m-%dT%H:%M:%SZdate -u -v-7d +%Y-%m-%dT%H:%M:%SZ
30 दिन$(( $(date +%s) - 2592000 ))date -u -d '30 days ago' +%Y-%m-%dT%H:%M:%SZdate -u -v-30d +%Y-%m-%dT%H:%M:%SZ

सत्यापन परत सारांश

Section titled “सत्यापन परत सारांश”
परतपरीक्षणयह क्या कवर करता है
1. DNS रिज़ॉल्यूशनDNS-1 से DNS-4A रिकॉर्ड, ACME CNAME, नेमसर्वर अधिकार, प्रबंधित रिकॉर्ड
2. TLS प्रमाणपत्रTLS-1 से TLS-4प्रमाणपत्र स्थिति, प्रमाणपत्र विवरण, लाइव हैंडशेक, ACME लक्ष्य
3. HTTP लोड बैलेंसरLB-1 से LB-6स्थिति, डोमेन, CSD फ्लैग, रूट पूल, परिनियोजन, सारांश
4. ऑरिजिन पूलOP-1 से OP-4कॉन्फ़िग, TLS मोड, HC संबद्धता, ऑरिजिन कनेक्टिविटी
5. स्वास्थ्य जाँचHC-1 से HC-2HC कॉन्फ़िग, सभी HC सूची
6. CSD कॉन्फ़िगरेशनCSD-1 से CSD-5टेनेंट स्थिति, JS टैग, संरक्षित डोमेन, लाइव इंजेक्शन
7. ट्रैफ़िक सत्यापनTV-1 से TV-5अनुरोध गिनती, स्टेटस कोड, नमूने, लॉग में JS, E2E परीक्षण
8. CSD टेलीमेट्रीTEL-1 से TEL-8स्क्रिप्ट, डोमेन, नीति, फ़ॉर्म फ़ील्ड, विस्तृत विश्लेषण, उपयोगकर्ता, जोखिम, ताजगी

एंडपॉइंट सारांश

Section titled “एंडपॉइंट सारांश”
डायग्नोस्टिकएंडपॉइंटमेथडसमय प्रारूप
अनुरोध गिनती/api/data/namespaces/\{ns\}/access_logs/aggregationPOSTISO 8601
स्टेटस कोड/api/data/namespaces/\{ns\}/access_logsPOSTISO 8601
हालिया अनुरोध/api/data/namespaces/\{ns\}/access_logsPOSTISO 8601
LB स्थिति/api/config/namespaces/\{ns\}/http_loadbalancers/\{name\}GETकोई नहीं
ऑरिजिन पूल/api/config/namespaces/\{ns\}/origin_pools/\{name\}GETकोई नहीं
स्वास्थ्य जाँच/api/config/namespaces/\{ns\}/healthchecks/\{name\}GETकोई नहीं
DNS ज़ोन/api/config/dns/namespaces/system/dns_zones/\{zone\}GETकोई नहीं
CSD स्थिति/api/shape/csd/namespaces/\{ns\}/statusGETकोई नहीं
JS कॉन्फ़िगरेशन/api/shape/csd/namespaces/\{ns\}/js_configurationGETकोई नहीं
संरक्षित डोमेन/api/shape/csd/namespaces/\{ns\}/protected_domainsGETकोई नहीं
स्क्रिप्ट सूची/api/shape/csd/namespaces/\{ns\}/scriptsPOSTEpoch सेकंड
पता लगाए गए डोमेन/api/shape/csd/namespaces/\{ns\}/detected_domainsGETकोई नहीं
फ़ॉर्म फ़ील्ड/api/shape/csd/namespaces/\{ns\}/formFieldsGETEpoch सेकंड (क्वेरी पैरामीटर)
स्क्रिप्ट विवरण/api/shape/csd/namespaces/\{ns\}/scripts/\{id\}/dashboardGETकोई नहीं
स्क्रिप्ट व्यवहार/api/shape/csd/namespaces/\{ns\}/scripts/\{id\}/behaviorsGETकोई नहीं
स्क्रिप्ट नेटवर्क/api/shape/csd/namespaces/\{ns\}/scripts/\{id\}/networkInteractionsGETकोई नहीं
प्रभावित उपयोगकर्ता/api/shape/csd/namespaces/\{ns\}/scripts/\{id\}/affectedUsersPOSTEpoch सेकंड