Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
aws-key-disabler — एक छोटा lambda स्क्रिप्ट जो दिए गए दिनों की संख्या से अधिक पुरानी एक्सेस कुंजियों को अक्षम करता है। | Kitploit
उपकरण/GitHubGitHub/te-papa/aws-key-disabler
कॉन्फ़िगरेशन ऑडिटिंगक्लाउड सुरक्षापहचान और एक्सेस प्रबंधन (IAM)
GitHubte-papa/aws-key-disabler

aws-key-disabler

एक छोटा lambda स्क्रिप्ट जो दिए गए दिनों की संख्या से अधिक पुरानी एक्सेस कुंजियों को अक्षम करता है।

रिपॉजिटरी देखें
153365 साल पहलेKitploit द्वारा समीक्षित

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

AWS Lambda - IAM एक्सेस कुंजी अक्षमकर्ता

Image of KeyIcon

AWS कुंजी अक्षमकर्ता एक Lambda फ़ंक्शन है जो पुरानी एक्सेस कुंजियों से जुड़े जोखिम को कम करने के लिए एक निर्धारित समय के बाद AWS IAM उपयोगकर्ता एक्सेस कुंजियों को अक्षम करता है।

AWS Lambda आर्किटेक्चर

Image of Arch

SysOps आउटपुट अंतिम उपयोगकर्ता के लिए

Image of iPhoneEmail

डेवलपर टूलचेन

Image of Toolchain

वर्तमान सीमाएँ

  • स्कैन के आउटपुट (json) वाली एक रिपोर्ट एक एकल परिभाषित sysadmin खाते को भेजी जाएगी, कृपया /grunt/package.json बिल्ड कॉन्फ़िगरेशन फ़ाइल में report_to विशेषता देखें।
  • कुंजियाँ केवल अक्षम की जाती हैं, हटाई या बदली नहीं जाती हैं

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

इस स्क्रिप्ट को चलाने के लिए निम्नलिखित घटकों की आवश्यकता है।

  • Node.js जिसमें NPM स्थापित हो https://nodejs.org/en/
  • Gruntjs स्थापित हो http://gruntjs.com/
  • AWSCLI कमांडलाइन टूल स्थापित हो https://aws.amazon.com/cli/

यह यह भी मानता है कि आपके पास AWS खाता है जिसमें SES सक्षम है, अर्थात डोमेन सत्यापित है और सैंडबॉक्स मोड हटा दिया गया है।

स्थापना निर्देश

ये निर्देश OSX के लिए हैं। Windows और अन्य *nix पर आपका अनुभव भिन्न हो सकता है।

  1. इस स्क्रिप्ट की एक प्रति प्राप्त करें
  2. /grunt फ़ोल्डर में जाएँ
  3. Grunt टास्क रनर सेट करें, जैसे इसकी निर्भरताएँ स्थापित करें: npm install
  4. /grunt/package.json में निम्नलिखित जानकारी भरें
    1. aws_account_number मान को अपने AWS खाता आईडी पर सेट करें जो https://portal.aws.amazon.com/gp/aws/manageYourAccount पर मिलता है
    2. first_warning और last_warning को उस आयु (दिनों में) पर सेट करें जिस पर कुंजी को चेतावनी ट्रिगर करनी होती है। ये सीमाएँ report_to को एक ईमेल भेजने को ट्रिगर करती हैं
    3. expiry को उस आयु (दिनों में) पर सेट करें जब कुंजी समाप्त होती है। इस आयु पर कुंजी अक्षम कर दी जाती है और report_to को इस परिवर्तन की सूचना देने वाला एक ईमेल ट्रिगर किया जाता है
    4. serviceaccount को उस खाता उपयोगकर्ता नाम पर सेट करें जिसे स्क्रिप्ट अनदेखा करना चाहती है
    5. exclusiongroup को उस समूह के नाम पर सेट करें जो उन उपयोगकर्ताओं को सौंपा गया है जिन्हें स्क्रिप्ट अनदेखा करना चाहती है।

AWSCLI का उपयोग करके कमांड लाइन से मैन्युअल रूप से Lambda फ़ंक्शन को आह्वान करें

Lambda फ़ंक्शन को नाम से निष्पादित करें, AccessKeyRotation, स्कैन के आउटपुट को scan.report.log नामक फ़ाइल में लॉग करें:

aws lambda invoke --function-name AccessKeyRotation scan.report.log --region us-east-1

root@kitploit:~
{
    "StatusCode": 200
}

scan.report.log की सामग्री को कंसोल पर प्रस्तुत करने के लिए jq का उपयोग करें:

jq '.' scan.report.log

root@kitploit:~
{
  "reportdate": "2016-06-26 10:37:24.071091",
  "users": [
    {
      "username": "TestS3User",
      "userid": "1",
      "keys": [
        {
          "age": 72,
          "changed": false,
          "state": "key is already in an INACTIVE state",
          "accesskeyid": "**************Q3GA1"
        },
        {
          "age": 12,
          "changed": false,
          "state": "key is still young",
          "accesskeyid": "**************F3AA2"
        }
      ]
    },
    {
      "username": "BlahUser22",
      "userid": "2",
      "keys": []
    },
    {
      "username": "LambdaFake1",
      "userid": "3",
       "keys": [
        {
          "age": 23,
          "changed": false,
          "state": "key is due to expire in 1 week (7 days)",
          "accesskeyid": "**************DFG12"
        },
        {
          "age": 296,
          "changed": false,
          "state": "key is already in an INACTIVE state",
          "accesskeyid": "**************4ZASD"
        }
      ]
    },
    {
      "username": "apiuser49",
      "userid": "4",
       "keys": [
        {
          "age": 30,
          "changed": true,
          "state": "key is now EXPIRED! Changing key to INACTIVE state",
          "accesskeyid": "**************ER2E2"
        },
        {
          "age": 107,
          "changed": false,
          "state": "key is already in an INACTIVE state",
          "accesskeyid": "**************AWQ4K"
        }
      ]
    },
    {
      "username": "UserEMRKinesis",
      "userid": "5",
       "keys": [
        {
          "age": 30,
          "changed": false,
          "state": "key is now EXPIRED! Changing key to INACTIVE state",
          "accesskeyid": "**************MGB41A"
        }
      ]
    },
    {
      "username": "CDN-Drupal",
      "userid": "6",
       "keys": [
        {
          "age": 10,
          "changed": false,
          "state": "key is still young",
          "accesskeyid": "**************ZDSQ5A"
        },
        {
          "age": 5,
          "changed": false,
          "state": "key is still young",
          "accesskeyid": "**************E3ODA"
        }
      ]
    },
    {
      "username": "ChocDonutUser1",
      "userid": "7",
       "keys": [
        {
          "age": 59,
          "changed": false,
          "state": "key is already in an INACTIVE state",
          "accesskeyid": "**************CSA123"
        }
      ]
    },
    {
      "username": "ChocDonut2",
      "userid": "8",
       "keys": [
        {
          "age": 60,
          "changed": false,
          "state": "key is already in an INACTIVE state",
          "accesskeyid": "**************FDGD2"
        }
      ]
    },
    {
      "username": "[email protected]",
      "userid": "9",
       "keys": [
        {
          "age": 45,
          "changed": false,
          "state": "key is already in an INACTIVE state",
          "accesskeyid": "**************BLQ5GJ"
        },
        {
          "age": 71,
          "changed": false,
          "state": "key is already in an INACTIVE state",
          "accesskeyid": "**************GJFF53"
        }
      ]
    }
  ]
}

अतिरिक्त कॉन्फ़िगरेशन विकल्प

  • आप प्रत्येक चेतावनी और अंतिम अक्षमीकरण के लिए उपयोग किए जाने वाले संदेश को key_disabler.keystates.<state>.message के अंतर्गत मान बदलकर सेट कर सकते हैं
  • आप key_disabler.mask_accesskey_length के अंतर्गत मास्किंग की लंबाई बदल सकते हैं। एक्सेस कुंजियाँ 20 वर्ण लंबी होती हैं।

समस्या निवारण

यह स्क्रिप्ट जैसी है वैसी प्रदान की गई है। हम समय मिलने पर प्रश्नों का उत्तर देने में प्रसन्न हैं, लेकिन कोई वादा नहीं कर सकते।

यदि चीजें काम नहीं करती हैं, तो सुनिश्चित करें कि:

  • आप AWSCLI कमांडलाइन टूल का उपयोग करके AWS के विरुद्ध सफलतापूर्वक प्रमाणित कर सकते हैं
  • SES सैंडबॉक्स मोड में नहीं है और प्रेषक डोमेन सत्यापित किया गया है
  • चयनित क्षेत्र Lambda और SES दोनों प्रदान करता है https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/

बोनस अंक

एक बार Lambda फ़ंक्शन सफलतापूर्वक तैनात हो जाने के बाद - निम्नलिखित कमांड निष्पादित किए जा सकते हैं:

  1. aws lambda list-functions
  2. openssl dgst -binary -sha256 ..\Releases\AccessKeyRotationPackage.1.0.18.zip | openssl base64
  3. aws lambda invoke --function-name AccessKeyRotation report.log --region us-east-1
  4. jq '.' report.log
  5. jq '.users[] | select(.username=="johndoe")' report.log
  6. jq '.' report.log | grep age | cut -d':' -f2 | sort -n

बोनस बोनस अंक

  1. jq 'def maximal_by(f): (map(f) | max) as $mx | .[] | select(f == $mx); .users | maximal_by(.keys[].age)' report.log
  2. jq 'def minimal_by(f): (map(f) | min) as $mn | .[] | select(f == $mn); .users | minimal_by(.keys[].age)' report.log
टूल डाउनलोड करें
  • send_completion_report मान को True पर सेट करें ताकि SES के माध्यम से ईमेल वितरण सक्षम हो
  • report_to मान को उस ईमेल पते पर सेट करें जिस पर आप विलोपन रिपोर्ट प्राप्त करना चाहते हैं
  • report_from मान को उस ईमेल पते पर सेट करें जिसे आप विलोपन रिपोर्ट के लिए प्रेषक पते के रूप में उपयोग करना चाहते हैं। ध्यान दें कि इसके लिए डोमेन को AWS SES में सत्यापित करने की आवश्यकता है।
  • deployment_region को एक ऐसे क्षेत्र पर सेट करें जो Lambda का समर्थन करता है। 10 email_region को उस क्षेत्र पर सेट करें जो SES का समर्थन करता है। यह भी सुनिश्चित करें कि क्षेत्र में SES सैंडबॉक्स मोड अक्षम है।
    • समर्थन के लिए AWS क्षेत्र तालिका देखें https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/
  • सुनिश्चित करें कि आप CLI से AWS से सफलतापूर्वक कनेक्ट कर सकते हैं, उदा. सफल कनेक्शन सत्यापित करने के लिए aws iam get-user चलाएँ
  • /grunt निर्देशिका से grunt bumpup && grunt deployLambda चलाएँ ताकि आपका संस्करण संख्या बढ़े और चयनित क्षेत्र में Lambda फ़ंक्शन का बिल्ड/डिप्लॉय करें