
मल्टी-थ्रेडेड AWS इन्वेंटरी संग्रह उपकरण जिसमें सुरक्षा-प्रासंगिक संसाधनों और मेटाडेटा पर ध्यान केंद्रित किया गया है।
Ruby में लिखा गया एक बहु-थ्रेडेड AWS सुरक्षा-केंद्रित इन्वेंट्री संग्रह उपकरण।
यह उपकरण बड़ी मात्रा में AWS संसाधन विशेषताओं और मेटाडेटा के कुशल संग्रह की सुविधा के लिए बनाया गया था। इसका उद्देश्य AWS वातावरण के सुरक्षा कॉन्फ़िगरेशन और मुद्रा से संबंधित लगभग सब कुछ एकत्र करना है।
मौजूदा उपकरण (जैसे AWS Config) जो किसी प्रकार का संसाधन संग्रह करते हैं, उनमें सुरक्षा मुद्रा (जैसे विस्तृत संसाधन विशेषता डेटा, पूरी तरह से पार्स की गई नीति दस्तावेज़, और नेस्टेड संसाधन संबंध) को सटीक रूप से मापने के लिए आवश्यक कवरेज और विशिष्टता का अभाव है।
AWS Recon बड़े खातों से संग्रह को स्वचालित पुनर्प्रयास (नेटवर्क विश्वसनीयता या API थ्रॉटलिंग के कारण), बड़े प्रतिक्रियाओं का स्वचालित पेजिंग (> 100 संसाधन प्रति API कॉल), और संग्रह को गति देने के लिए बहु-थ्रेडेड समानांतर अनुरोधों का लाभ उठाकर संभालता है।
** उपयोग का अर्थ समर्थन नहीं है
AWS Recon को ReadOnlyAccess वाली AWS खाता भूमिका या क्रेडेंशियल्स चाहिए। पूर्ण AdministratorAccess अत्यधिक विशेषाधिकार प्राप्त है, लेकिन यह भी काम करेगा। SecurityAudit नीति पर्याप्त नहीं है क्योंकि यह कई सेवाओं तक पहुँच को छोड़ देती है।
बिना कुछ स्थापित किए पूर्व-निर्मित इमेज चलाने के लिए Docker संस्करण 19.x या उससे ऊपर का उपयोग करें।
यदि आपके पास पहले से Ruby स्थापित है (2.6.x या 2.7.x), तो आप Ruby gem स्थापित करना चाह सकते हैं।
AWS Recon को Docker कंटेनर के माध्यम से स्थानीय रूप से या Ruby gem स्थापित करके चलाया जा सकता है।
Docker कंटेनर के माध्यम से चलाने के लिए, आवश्यक AWS क्रेडेंशियल्स को Docker run कमांड में पास करें। उदाहरण के लिए:
$ docker run -t --rm \
-e AWS_REGION \
-e AWS_ACCESS_KEY_ID \
-e AWS_SECRET_ACCESS_KEY \
-e AWS_SESSION_TOKEN \
-v $(pwd)/output.json:/recon/output.json \
darkbitio/aws_recon:latest \
aws_recon -v -s EC2 -r global,us-east-1,us-east-2
स्थानीय रूप से चलाने के लिए, पहले gem स्थापित करें:
$ gem install aws_recon
Fetching aws_recon-0.5.17.gem
Fetching aws-sdk-3.0.1.gem
Fetching parallel-1.20.1.gem
...
Successfully installed aws-sdk-3.0.1
Successfully installed parallel-1.20.1
Successfully installed aws_recon-0.5.17
या इसे bundle का उपयोग करके अपनी Gemfile में जोड़ें:
$ bundle add aws_recon
Fetching gem metadata from https://rubygems.org/
Resolving dependencies...
...
Using aws-sdk 3.0.1
Using parallel-1.20.1
Using aws_recon 0.5.17
AWS Recon किसी भी AWS क्रेडेंशियल्स (आवश्यकताएँ देखें) का लाभ उठाएगा जो वर्तमान में उस वातावरण में उपलब्ध है जिसमें यह चलता है। यदि आप कई खातों से संग्रह कर रहे हैं, तो आप विभिन्न क्रेडेंशियल्स प्रबंधित करने के लिए aws-vault जैसी किसी चीज़ का लाभ उठाना चाह सकते हैं।
$ aws-vault exec profile -- aws_recon
सादे पर्यावरण चर भी ठीक काम करेंगे।
$ AWS_PROFILE=<profile> aws_recon
aws-vault प्रबंधित क्रेडेंशियल्स का उपयोग करके Docker कंटेनर से चलाने के लिए (stdout पर आउटपुट):
$ aws-vault exec <vault_profile> -- docker run -t --rm \
-e AWS_REGION \
-e AWS_ACCESS_KEY_ID \
-e AWS_SECRET_ACCESS_KEY \
-e AWS_SESSION_TOKEN \
darkbitio/aws_recon:latest \
aws_recon -j -s EC2 -r global,us-east-1,us-east-2
aws-vault प्रबंधित क्रेडेंशियल्स का उपयोग करके Docker कंटेनर से चलाने और आउटपुट को फ़ाइल में सहेजने के लिए, आपको कुछ आवश्यकताओं को पूरा करना होगा। पहले, Docker को उस पथ (या उसके ऊपर के पैरेंट) को बाइंड माउंट करने की पहुँच चाहिए जिसे आप निर्दिष्ट करते हैं। दूसरे, आपको आउटपुट सहेजने के लिए एक खाली फ़ाइल बनानी होगी (जैसे output.json)। ऐसा इसलिए है क्योंकि चलने के समय केवल वही एक फ़ाइल Docker कंटेनर में माउंट की जाती है। उदाहरण के लिए:
एक खाली फ़ाइल बनाएँ।
$ touch output.json
aws_recon कंटेनर चलाएँ, आउटपुट फ़ाइल निर्दिष्ट करते हुए।
$ aws-vault exec <vault_profile> -- docker run -t --rm \
-e AWS_REGION \
-e AWS_ACCESS_KEY_ID \
-e AWS_SECRET_ACCESS_KEY \
-e AWS_SESSION_TOKEN \
-v $(pwd)/output.json:/recon/output.json \
darkbitio/aws_recon:latest \
aws_recon -s EC2 -v -r global,us-east-1,us-east-2
आप संग्रह चलने के दौरान स्थिति और गतिविधि देखने के लिए शुरू में -v या --verbose ध्वज का उपयोग करना चाह सकते हैं।
वर्बोज़ मोड में, कंसोल आउटपुट दिखाएगा:
<thread>.<region>.<service>.<operation>
t उपसर्ग इंगित करता है कि कोई विशेष अनुरोध किस थ्रेड के तहत चल रहा है। क्षेत्र, सेवा, और संचालन इंगित करते हैं कि वर्तमान में कौन सा अनुरोध संचालन प्रगति पर है और कहाँ।
$ aws_recon -v
t0.global.EC2.describe_account_attributes
t2.global.S3.list_buckets
t3.global.Support.describe_trusted_advisor_checks
t2.global.S3.list_buckets.acl
t5.ap-southeast-1.WorkSpaces.describe_workspaces
t6.ap-northeast-1.Lightsail.get_instances
...
t2.us-west-2.WorkSpaces.describe_workspaces
t1.us-east-2.Lightsail.get_instances
t4.ap-southeast-1.Firehose.list_delivery_streams
t7.ap-southeast-1.Lightsail.get_instances
t0.ap-south-1.Lightsail.get_instances
t1.us-east-2.Lightsail.get_load_balancers
t7.ap-southeast-2.WorkSpaces.describe_workspaces
t2.eu-west-3.SageMaker.list_notebook_instances
t3.eu-west-2.SageMaker.list_notebook_instances
Finished in 46 seconds. Saving resources to output.json.
# S3 और EC2 वैश्विक संसाधनों के साथ-साथ us-east-1 और us-east-2 एकत्र करें
$ AWS_PROFILE=<profile> aws_recon -s S3,EC2 -r global,us-east-1,us-east-2
# S3 और EC2 वैश्विक संसाधनों के साथ-साथ us-east-1 और us-east-2 एकत्र करें
$ AWS_PROFILE=<profile> aws_recon --services S3,EC2 --regions global,us-east-1,us-east-2
# आउटपुट को S3 बकेट में सहेजें
$ AWS_PROFILE=<profile> aws_recon \
--services S3,EC2 \
--regions global,us-east-1,us-east-2 \
--verbose \
--s3-bucket my-recon-bucket
# us-east-1 के अलावा किसी अन्य होम क्षेत्र के साथ S3 बकेट में आउटपुट सहेजें
$ AWS_PROFILE=<profile> aws_recon \
--services S3,EC2 \
--regions global,us-east-1,us-east-2 \
--verbose \
--s3-bucket my-recon-bucket:us-west-2
उदाहरण OpenCSPM स्वरूपित (NDJSON) आउटपुट।