
जानबूझकर असुरक्षित क्लाउड इंफ्रास्ट्रक्चर तैयार करने (और हटाने!) के लिए एक टूल
sadcloud Terraform के साथ असुरक्षित AWS इंफ्रास्ट्रक्चर तैयार करने के लिए एक टूल है।
यह 22 AWS सेवाओं में लगभग 84 गलत कॉन्फ़िगरेशन (misconfigurations) का समर्थन करता है। गलत कॉन्फ़िगरेशन का प्रारंभिक सेट ScoutSuite से लिया गया था, जो NCCGroup का मल्टी-क्लाउड ऑडिटिंग टूल है।
sadcloud को सुरक्षा शोधकर्ताओं को प्रशिक्षण उद्देश्यों के लिए AWS को आसानी से गलत कॉन्फ़िगर करने, या AWS सुरक्षा टूल्स - जिनमें बिल्ट-इन और थर्ड-पार्टी शामिल हैं - का आकलन करने के लिए उपयोग करने की अनुमति देने हेतु बनाया गया था।
यह टूल जानबूझकर कमजोर (intentionally vulnerable) AWS कॉन्फ़िगर किए गए संसाधनों को तैयार करता है। कृपया इसे अपने प्रोडक्शन क्लाउड, या किसी भी ऐसी जगह पर न चलाएं जो सुरक्षित होने के लिए है। इस टूल को चलाने के लिए एक नया AWS अकाउंट खड़ा करने पर विचार करें। चूंकि यह टूल क्लाउड संसाधन तैयार करता है, इसलिए आपके AWS अकाउंट पर शुल्क लगेगा। होने वाली लागतों को कम करने के प्रयास किए गए हैं, लेकिन NCC Group और इस टूल के अनुरक्षक (maintainers) इस टूल के उपयोग से होने वाले किसी भी शुल्क या सुरक्षा समस्या के लिए जिम्मेदार नहीं हैं। उपयोग में न होने पर सभी Terraform संसाधनों को हटाना (tear down) सुनिश्चित करें!
sadcloud के 24 घंटे के टेस्ट रन से लगभग $10 का बिल बना। उस लागत का अधिकांश हिस्सा Redshift मॉड्यूल (25c/घंटा = $6/दिन) और EKS मॉड्यूल (10c/घंटा = $2.40/दिन) से है।
हम समय-समय पर विभिन्न AWS और Terraform ऑडिटिंग टूलिंग का प्रदर्शन करने के लिए sadcloud का उपयोग करते हैं। सभी ऑडिट संभावित गलत कॉन्फ़िगरेशन के पूर्ण समूह (corpus) पर किए जाते हैं।
आवश्यक सॉफ़्टवेयर: Terraform
सुनिश्चित करें कि आपकी SSH कुंजियाँ data/ssh_keys/terraform_rsa{,.pub} पर लिखी गई हैं।
ssh-keygen -t rsa -b 4096 -f data/ssh_keys/terraform_rsa
git clone https://github.com/nccgroup/sadcloud.gitcd sadcloud/sadcloudAWS प्रोवाइडर सेट करें (इस चरण से बचने के निर्देशों के लिए नीचे "प्रोवाइडर्स का उपयोग एनवायरनमेंट वेरिएबल्स के बजाय" अनुभाग देखें):
export AWS_ACCESS_KEY_ID="accesskey"
export AWS_SECRET_ACCESS_KEY="secretkey"
export AWS_DEFAULT_REGION="us-east-1"
Terraform को तैयार करें:
terraform init
sadcloud को अपनी इच्छित गलत कॉन्फ़िगरेशन के साथ कॉन्फ़िगर करें:
सभी findings को सक्षम करने के लिए (... उन findings को छोड़कर जो अन्य findings के साथ संघर्ष में हैं):
sadcloud/main.tf में सभी मॉड्यूल को अनकमेंट करेंsadcloud/terraform.tfvars में all_findings फ्लैग को true में एडिट करें, या --var="all_findings=true" फ्लैग के साथ terraform apply कॉल करेंएक या अधिक सेवाओं में सभी findings को सक्षम करने के लिए:
sadcloud/main.tf में संबंधित सेवा(ओं) को अनकमेंट करेंsadcloud/terraform.tfvars में संबंधित all_{service}_findings फ्लैग को true में एडिट करें, या --var="all_{service}_findings=true" फ्लैग के साथ terraform apply कॉल करेंनोट: sadcloud में सभी गलत कॉन्फ़िगरेशन डिफ़ॉल्ट रूप से अक्षम हैं। अनावश्यक संसाधनों को तैयार होने से रोकने के लिए सभी सेवाएँ डिफ़ॉल्ट रूप से अक्षम हैं। किसी गलत कॉन्फ़िगरेशन के लिए वेरिएबल को true पर सेट करने पर हमेशा गलत कॉन्फ़िगरेशन होता है। all_findings चलाने में 10-15 मिनट लग सकते हैं।
इसे जांचें:
terraform plan
इसे डिप्लॉय करें:
terraform apply
इसे हटाएं:
terraform destroy
नोट: terraform apply AWS में सेवाएँ तैयार करेगा। इन पर पैसा खर्च होता है। काम पूरा करने के बाद terraform destroy चलाना न भूलें। all_findings चलाने से पहले terraform plan अवश्य चलाएं ताकि आप समझ सकें कि आप क्या करने जा रहे हैं!
AWS प्रोवाइडर सेट करना संभव है ताकि आपको हर बार एनवायरनमेंट वेरिएबल्स सेट न करने पड़ें।
निम्नलिखित सामग्री के साथ sadcloud/providers.tf नामक एक फ़ाइल बनाएं:
provider "aws" {
access_key = "YOUR_AWS_ACCESS_KEY"
secret_key = "YOUR_AWS_SECRET_KEY"
region = "us-east-1"
}
| टूल | नमूना रिपोर्ट |
|---|
sadcloud/terraform.tfvars में all_findings फ्लैग को true में एडिट करें, या --var="all_findings=true" फ्लैग के साथ terraform apply कॉल करें
नोट: वर्तमान में Cloudformation सेवा के साथ एक Terraform बग है। Cloudformation findings उत्पन्न करने के लिए, आपको Terraform apply दो बार चलाना होगाविशिष्ट findings को अलग-अलग (granularly) सक्षम करने के लिए:
sadcloud/main.tf में संबंधित सेवा को अनकमेंट करेंsadcloud/main.tf में सीधे रुचि के वेरिएबल्स को एडिट करें, जहां चाहें उन्हें true में बदलें।sadcloud/main.tf में needs_network को true पर सेट किया है