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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
metahub — AWS के लिए स्वचालित सुरक्षा निष्कर्ष संवर्धन और प्रभाव मूल्यांकन उपकरण। संसाधन संदर्भ, संबद्धताओं और टैग्स के साथ भेद्यता डेटा को समृद्ध करके प्राथमिकता वाले सुधार के लिए प्रासंगिक प्रभाव स्कोर की गणना करता है। | Kitploit
उपकरण/GitHubGitHub/gabrielsoltz/metahub
भेद्यता स्कैनरभेद्यता विश्लेषणकॉन्फ़िगरेशन ऑडिटिंगक्लाउड सुरक्षाखतरा खुफियाघटना प्रतिक्रिया
GitHubgabrielsoltz/metahub

metahub

AWS के लिए स्वचालित सुरक्षा निष्कर्ष संवर्धन और प्रभाव मूल्यांकन उपकरण। संसाधन संदर्भ, संबद्धताओं और टैग्स के साथ भेद्यता डेटा को समृद्ध करके प्राथमिकता वाले सुधार के लिए प्रासंगिक प्रभाव स्कोर की गणना करता है।

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

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

सभी देखें →

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

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

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

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

MetaHub

MetaHub सुरक्षा निष्कर्षों (security findings) के स्वचालित संदर्भ-आधारित समृद्धि और प्रभाव मूल्यांकन के लिए एक उपकरण है, जो कमज़ोरी प्रबंधन (vulnerability management) के लिए है। आप इसका उपयोग AWS Security Hub या किसी भी ASFF-संगत सुरक्षा स्कैनर के साथ कर सकते हैं। बेकार की गंभीरता (severities) पर भरोसा करना बंद करें और अपने संदर्भ (CONTEXT) के आधार पर प्रभाव स्कोरिंग परिभाषाओं पर स्विच करें।

AWS ECR Gallery

विषय-सूची

  • विवरण
  • त्वरित चलाएं
  • संदर्भ
  • प्रभाव
  • उच्च-स्तरीय आर्किटेक्चर
  • उपयोग के मामले
  • कॉन्फ़िगरेशन
  • Python के साथ चलाएं
  • Docker के साथ चलाएं
  • Lambda के साथ चलाएं
  • Security Hub कस्टम एक्शन के साथ चलाएं
  • AWS प्रमाणीकरण
  • Security Hub कॉन्फ़िगर करना
  • संदर्भ कॉन्फ़िगर करना
  • इनपुट
  • आउटपुट
  • फ़िल्टर
  • Security Hub क्रियाएँ
  • योगदान

विवरण

MetaHub एक ओपन-सोर्स सुरक्षा उपकरण है जो प्रभाव-संदर्भित कमज़ोरी प्रबंधन (impact-contextual vulnerability management) के लिए है। यह आपके वातावरण और आपकी आवश्यकताओं, आपके संदर्भ (context) के आधार पर सुरक्षा निष्कर्षों को संदर्भीकृत (contextualizing) करने, स्वामित्व (ownership) की पहचान करने और उसके आधार पर एक प्रभाव स्कोर (impact scoring) की गणना करने की प्रक्रिया को स्वचालित कर सकता है, जिसका उपयोग आप प्राथमिकता निर्धारित करने (आपको कहाँ से शुरू करना चाहिए?) और उपचार, अलर्ट या टिकट जैसे स्वचालन के लिए कर सकते हैं। यह उपकरण AWS वातावरण के लिए है और आप इसे AWS Security Hub या किसी भी ASFF संगत स्कैनर (जैसे Prowler) के साथ उपयोग कर सकते हैं।

ℹ️ नए MetaHub डैशबोर्ड का Powerpipe के साथ उपयोग करें और इसे विस्तारित करें!

MetaHub आपके प्रभावित खातों में प्रभावित संसाधनों से जुड़कर आपके संदर्भ का वर्णन करता है। यह आपके AWS खाते और संगठन, प्रभावित संसाधनों के टैग, संबंधित CloudTrail घटनाओं, आपके प्रभावित संसाधन कॉन्फ़िगरेशन और उनके सभी संबंधों के बारे में जानकारी प्राप्त कर सकता है: यदि आप एक EC2 इंस्टेंस को प्रभावित करने वाले सुरक्षा निष्कर्ष को संदर्भीकृत कर रहे हैं, तो MetaHub न केवल उस इंस्टेंस से जुड़ेगा, बल्कि इसके IAM भूमिकाओं से भी जुड़ेगा; वहाँ से, यह उन भूमिकाओं से जुड़ी IAM नीतियों से जुड़ेगा। यह सुरक्षा समूहों से जुड़ेगा और उनके सभी नियमों का विश्लेषण करेगा, VPC और सबनेट जहाँ इंस्टेंस चल रहा है, वॉल्यूम, ऑटो स्केलिंग समूह, और भी बहुत कुछ। आप समान गुणों वाले अन्य संसाधनों का स्वचालित रूप से पता लगाने और गहन जाँच करने के लिए फ़िल्टर लागू कर सकते हैं।

अपने संदर्भ से सारी जानकारी प्राप्त करने के बाद, MetaHub आपके सभी संसाधनों के लिए प्रभाव की शर्तों का मूल्यांकन करेगा: एक्सपोज़र, पहुँच, एन्क्रिप्शन, स्थिति, पर्यावरण, एप्लिकेशन, और स्वामी और उन गणनाओं के आधार पर और संसाधन को प्रभावित करने वाले सुरक्षा निष्कर्षों की जानकारी के साथ, MetaHub प्रत्येक निष्कर्ष और प्रभावित संसाधन के लिए एक स्कोर उत्पन्न करेगा।

MetaHub द्वारा उत्पन्न निम्नलिखित डैशबोर्ड देखें। आपके पास प्रभावित संसाधन हैं, जो उन्हें प्रभावित करने वाले सभी सुरक्षा निष्कर्षों को एक साथ समूहित करते हैं और प्रत्येक निष्कर्ष की मूल गंभीरता को दिखाते हैं। उसके बाद, आपके पास स्कोर और वे सभी मानदंड हैं जिनका MetaHub ने उस स्कोर को उत्पन्न करने के लिए मूल्यांकन किया है। यह सारी जानकारी फ़िल्टरेबल, सॉर्टेबल, ग्रुप करने योग्य, डाउनलोड करने योग्य और अनुकूलन योग्य है।

निम्नलिखित EC2 इंस्टेंस के लिए JSON आउटपुट है; देखें कि कैसे MetaHub अपने संदर्भ के बारे में सारी जानकारी को associations, config, tags, account और cloudtrail के अंतर्गत एक साथ व्यवस्थित करता है, और अंत में impact कुंजी में स्कोर और उस स्कोर को उत्पन्न करने के लिए मूल्यांकन किए गए सभी मानदंड शामिल हैं।

Diagram

MetaHub आपके सुरक्षा निष्कर्षों को जाँच, दमन, अद्यतन और अन्य उपकरणों के साथ एकीकरण के लिए सूचीबद्ध, प्रबंधित और आउटपुट करने के कई तरीके प्रदान करता है। इसे CLI उपकरण के रूप में या स्वचालित वर्कफ़्लो में, जैसे AWS Lambda फ़ंक्शंस में उपयोग करने के लिए डिज़ाइन किया गया है। यह विभिन्न आउटपुट का समर्थन करता है, जिनमें से कुछ प्रोग्रामेटिक json हैं, लेकिन शक्तिशाली html, xlsx और csv भी हैं जिन्हें आप अनुकूलित कर सकते हैं।

यदि आप AWS Security Hub का उपयोग करते हैं, तो MetaHub सहजता से एकीकृत होता है और इसकी कार्यक्षमताओं का विस्तार करता है। इसे Security Hub कस्टम एक्शन के रूप में उपयोग किया जा सकता है, यह AWS Security Hub फ़िल्टर का समर्थन करता है, आप अपने निष्कर्षों की वर्कफ़्लो स्थिति प्रबंधित कर सकते हैं, और आप सीधे AWS Security Hub में अपने निष्कर्षों को समृद्ध भी कर सकते हैं।

MetaHub को AWS के साथ उपयोग करने के लिए डिज़ाइन किया गया है और यह मल्टी-खाता सेटअप का समर्थन करता है। आप अपने AWS Security Hub master और अपने child/service खातों में भूमिकाएँ ग्रहण करके किसी भी वातावरण से उपकरण चला सकते हैं। यह आपको अपने AWS Security Hub मल्टी-खाता कार्यान्वयन का उपयोग करके कई खातों से एकत्रित डेटा प्राप्त करने की अनुमति देता है, साथ ही उन निष्कर्षों को आपके प्रभावित संसाधनों वाले खातों के डेटा से प्राप्त और समृद्ध करता है। अधिक जानकारी के लिए Security Hub कॉन्फ़िगर करना देखें।

त्वरित चलाएं

अपने सुरक्षा निष्कर्षों को AWS Security Hub से डिफ़ॉल्ट फ़िल्टर के साथ पढ़ें और डिफ़ॉल्ट संदर्भ विकल्पों को निष्पादित करता है:```bash ./metahub

root@kitploit:~
AWS Security Hub से एक विशिष्ट (Id द्वारा फ़िल्टर किया गया) सुरक्षा निष्कर्ष पढ़ें और डिफ़ॉल्ट संदर्भ विकल्प निष्पादित करें:```bash
./metahub --sh-filters Id=arn:aws:securityhub:us-east-1:123456789012:security-control/CloudFront.1/finding/8bd4d049-dcbc-445b-a5d1-595d8274b4c1

एक संसाधन को प्रभावित करने वाले सभी सुरक्षा निष्कर्षों को पढ़ें जो ACTIVE हैं (ResourceId और RecordState द्वारा फ़िल्टर किए गए) AWS Security Hub से और डिफ़ॉल्ट संदर्भ विकल्पों को निष्पादित करता है:```bash ./metahub --sh-filters RecordState=ACTIVE ResourceId=arn:aws:ec2:eu-west-1:123456789012:subnet/subnet-0b7d243ff90ebc03e

root@kitploit:~
AWS खाते को प्रभावित करने वाली सभी सुरक्षा खोजों को पढ़ें जो सक्रिय हैं (AwsAccountId और RecordState द्वारा फ़िल्टर की गई) उन संसाधनों के लिए जिनमें टैग `Environment` और मान `stg` है और संदर्भ विकल्प `config` और `tags` को निष्पादित करता है:```bash
./metahub --sh-filters RecordState=ACTIVE AwsAccountId=123456789012 --mh-filters-tags Environment=stg --context config tags

त्वरित रन (इनपुट ASFF फ़ाइल से निष्कर्ष पढ़ना)

अपने सुरक्षा निष्कर्षों को Prowler से इनपुट फ़ाइल के रूप में पढ़ें और डिफ़ॉल्ट context options निष्पादित करें:```bash python3 prowler.py aws -M json-asff -q ./metahub --inputs file-asff --input-asff /path/to/prowler-findings.json.asff

root@kitploit:~
अपने सुरक्षा निष्कर्षों को Powerpipe से इनपुट फ़ाइल के रूप में पढ़ता है और डिफ़ॉल्ट संदर्भ विकल्पों को निष्पादित करता है:```bash
powerpipe benchmark run aws_compliance.benchmark.all_controls --export asff
./metahub --inputs file-asff --input-asff /path/to/powerpipe-findings.json.asff

अपने सुरक्षा निष्कर्षों को Trivy से एक इनपुट फ़ाइल के रूप में पढ़ता है और डिफ़ॉल्ट संदर्भ विकल्प निष्पादित करता है:```bash export AWS_REGION=us-west-1 export AWS_ACCOUNT_ID=012345678901 trivy image --format template --template "@contrib/asff.tpl" -o trivy-findings.json.asff public.ecr.aws/n2p8q5p4/metahub:stable ./metahub --inputs file-asff --input-asff /path/to/trivy-findings.json.asff

root@kitploit:~
# संदर्भ

**MetaHub** में, **संदर्भ** से तात्पर्य प्रभावित संसाधनों के बारे में जानकारी से है जैसे उनका **कॉन्फ़िगरेशन**, **संबंध**, **लॉग्स**, **टैग्स** और **खाता**।

MetaHub केवल प्रभावित संसाधन पर नहीं रुकता, बल्कि किसी भी संबद्ध या जुड़े संसाधनों का भी विश्लेषण करता है। उदाहरण के लिए, यदि किसी सुरक्षा समूह पर कोई सुरक्षा खोज मौजूद है, तो **MetaHub** उस सुरक्षा समूह और उससे जुड़ी हर चीज़ का विश्लेषण करेगा, जैसे कि इसका उपयोग करने वाले EC2 इंस्टेंस। प्रत्येक संबद्ध संसाधन के लिए, **MetaHub** उसका संदर्भ प्राप्त करेगा। यदि सुरक्षा समूह किसी EC2 इंस्टेंस से जुड़ा है, तो **MetaHub** इंस्टेंस और उसके सभी संबंधों, जैसे IAM भूमिकाओं और नीतियों का विश्लेषण करेगा। एक सुरक्षा समूह पर एक सुरक्षा खोज से, **MetaHub** सुरक्षा समूह, EC2 इंस्टेंस, IAM भूमिकाओं और IAM नीतियों का संदर्भ प्राप्त करेगा। आपकी सुरक्षा खोजों के प्रभाव को समझने के लिए यह महत्वपूर्ण है।

**संदर्भ** मॉड्यूल के पाँच मुख्य भाग हैं: [**config**](#config) (जिसमें [**associations**](#associations) शामिल है), [**tags**](#tags), [**cloudtrail**](#cloudtrail), और [**account**](#account)। डिफ़ॉल्ट रूप से केवल **config**, **tags** और **account** सक्षम हैं, लेकिन आप `--context` विकल्प का उपयोग करके इस व्यवहार को बदल सकते हैं (जैसे सभी संदर्भ कुंजियों को सक्षम करने के लिए `--context config tags cloudtrail account` का उपयोग करें, या केवल config और associations कुंजी को सक्षम करने के लिए `--context config` का उपयोग करें।):

## Config

`config` कुंजी के अंतर्गत, आप प्रभावित संसाधन से महत्वपूर्ण कॉन्फ़िगरेशन पा सकते हैं। उदाहरण के लिए, यदि प्रभावित संसाधन S3 बकेट है, तो आपको इसकी बकेट नीति, इसके ACLs, इसकी एन्क्रिप्शन कॉन्फ़िगरेशन, और अधिक के बारे में जानकारी मिलेगी। यदि प्रभावित संसाधन EC2 इंस्टेंस है, तो आपको इसकी कुंजी, इसके सार्वजनिक और निजी IP, इसके मेटाडेटा, और अधिक के बारे में जानकारी मिलेगी। **MetaHub** द्वारा प्राप्त की जाने वाली कॉन्फ़िगरेशन जानकारी संसाधन प्रकार द्वारा परिभाषित होती है। यदि आप और अधिक कॉन्फ़िगरेशन जानकारी जोड़ना चाहते हैं, तो [contributing](#contributing) देखें।

आप `--mh-filters-config <key> {True/False}` विकल्प का उपयोग करके कॉन्फ़िग आउटपुट के आधार पर अपने निष्कर्षों को फ़िल्टर कर सकते हैं ([config filters](#config-filters) देखें)।

<details>
  <summary>एक S3 बकेट config कुंजी के लिए उदाहरण</summary>```json
"config": {
  "resource_policy": {
    "Version": "2012-10-17",
    "Statement": [
      {
        "Sid": "Test",
        "Effect": "Allow",
        "Principal": {
          "Service": "config.amazonaws.com"
        },
        "Action": "s3:GetBucketAcl",
        "Resource": "arn:aws:s3:::metahub-bucket",
        "Condition": {
          "StringEquals": {
            "AWS:SourceAccount": "123456789012"
          }
        }
      },
    ]
  },
  "website_enabled": false,
  "bucket_acl": [
    {
      "Grantee": {
        "DisplayName": "gabriel.soltz",
        "ID": "1234564bd76c6c64080717b68eafaa588b41706daaf22d3d0705b398bd7cbd57",
        "Type": "CanonicalUser"
      },
      "Permission": "FULL_CONTROL"
    }
  ],
  "cannonical_user_id": "1234564bd76c6c64080717b68eafaa588b41706daaf22d3d0705b398bd7cbd57",
  "public_access_block_enabled": {
    "BlockPublicAcls": true,
    "IgnorePublicAcls": true,
    "BlockPublicPolicy": true,
    "RestrictPublicBuckets": true
  },
  "account_public_access_block_enabled": false,
  "public": false,
  "bucket_encryption": [
    {
      "ApplyServerSideEncryptionByDefault": {
        "SSEAlgorithm": "AES256"
      },
      "BucketKeyEnabled": false
    }
  ]
},

संबंध

associations कुंजी के अंतर्गत, आप प्रभावित संसाधन से जुड़े सभी संबद्ध संसाधन पाएंगे। उदाहरण के लिए, यदि प्रभावित संसाधन एक EC2 Instance है, तो आपको Security Groups, IAM Roles, Volumes, VPC, Subnets, Auto Scaling Groups जैसे संसाधन मिलेंगे। यदि प्रभावित संसाधन एक IAM Role है, तो आपको IAM Policies, IAM Users, IAM Groups, और अन्य जैसे संसाधन मिलेंगे। हर बार जब MetaHub को कोई संबंध मिलता है, यह संबंधित संसाधन से फिर से जुड़ता है और अपना स्वयं का संदर्भ (context) प्राप्त करता है। आपके सुरक्षा निष्कर्षों के संदर्भ और प्रभाव को समझने के लिए संबंध महत्वपूर्ण हैं।

आप --mh-filters-config <key> {True/False} विकल्प का उपयोग करके संबंध आउटपुट के आधार पर अपने निष्कर्षों को फ़िल्टर कर सकते हैं (देखें कॉन्फ़िग फ़िल्टर )।

EC2 इंस्टेंस assocations key का उदाहरण```json "associations": { "security_groups": { "arn:aws:ec2:eu-west-1:123456789012:security-group/sg-020cc749a58678e05": { "associations": { "vpcs": { "arn:aws:ec2:eu-west-1:123456789012:vpc/vpc-03cc56a1c2afb5760": { "associations": { "subnets": { "arn:aws:ec2:eu-west-1:123456789012:subnet/subnet-03d86f1ccd7729d85": {}, "arn:aws:ec2:eu-west-1:123456789012:subnet/subnet-0ccfb8dea658f49ec": {}, "arn:aws:ec2:eu-west-1:123456789012:subnet/subnet-05e85a7b0ec9e404c": {}, "arn:aws:ec2:eu-west-1:123456789012:subnet/subnet-0e177ea95bcc76256": {} } }, "config": { "cidr": "172.10.0.0/16", "default": false, "public": null } } }, "network_interfaces": { "arn:aws:ec2:eu-west-1:123456789012:network-interface/eni-041a6e5bb59c336ee": {} }, "instances": { "arn:aws:ec2:eu-west-1:123456789012:instance/i-018daeedcf06398c0": {} } }, "config": { "public_ips": [ "100.100.100.100" ], "managed_services": [], "its_referenced_by_a_security_group": false, "security_group_rules": [ { "SecurityGroupRuleId": "sgr-08cdc9fdac8fd1a5b", "GroupId": "sg-020cc749a58678e05", "GroupOwnerId": "123456789012", "IsEgress": true, "IpProtocol": "-1", "FromPort": -1, "ToPort": -1, "CidrIpv4": "0.0.0.0/0", "Tags": [] }, { "SecurityGroupRuleId": "sgr-0e6cd39169dc137ab", "GroupId": "sg-020cc749a58678e05", "GroupOwnerId": "123456789012", "IsEgress": false, "IpProtocol": "tcp", "FromPort": 22, "ToPort": 22, "CidrIpv4": "0.0.0.0/0", "Tags": [] } ], "public": true, "default": false, "attached": true, "resource_policy": null } }, }, "iam_roles": { "arn:aws:iam::123456789012:role/eu-west-1-stg-backend-iam-role": { "associations": { "iam_policies": { "arn:aws:iam::123456789012:policy/eu-west-1-stg-backend-iam-policy-cw": { "associations": { "iam_roles": { "arn:aws:iam::123456789012:role/eu-west-1-stg-backend-iam-role": {} }, "iam_groups": {}, "iam_users": {} }, "config": { "name": "eu-west-1-stg-backend-iam-policy-cw", "description": false, "customer_managed": true, "attached": true, "public": null, "resource_policy": { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", "logs:DescribeLogStreams" ], "Resource": [ "arn:aws:logs:*:*:*" ] } ] } } }, } }, "config": { "iam_inline_policies": {}, "instance_profile": "arn:aws:iam::123456789012:instance-profile/eu-west-1-stg-backend-iam-profile", "trust_policy": { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }, "permissions_boundary": false, "public": null, "resource_policy": null } } }, "volumes": { "arn:aws:ec2:eu-west-1:123456789012:volume/vol-0371a09e338f582da": { "associations": { "instances": { "arn:aws:ec2:eu-west-1:123456789012:instance/i-018daeedcf06398c0": {} } }, "config": { "encrypted": true, "attached": true, "public": null, "resource_policy": null } } }, "autoscaling_groups": { "arn:aws:autoscaling:eu-west-1:123456789012:autoScalingGroup/stg-backend-20201205160228428400000002": { "associations": { "instances": { "arn:aws:ec2:eu-west-1:123456789012:instance/i-018daeedcf06398c0": {} }, "launch_templates": { "arn:aws:ec2:eu-west-1:123456789012:launch-template/lt-06b73d2e77f10446f": {} }, "launch_configurations": {} }, "config": { "name": "stg-backend-20201205160228428400000002", "public": null, "resource_policy": null } } }, "vpcs": { "arn:aws:ec2:eu-west-1:123456789012:vpc/vpc-03cc56a1c2afb5760": { "associations": { "subnets": { "arn:aws:ec2:eu-west-1:123456789012:subnet/subnet-03d86f1ccd7729d85": {}, "arn:aws:ec2:eu-west-1:123456789012:subnet/subnet-0ccfb8dea658f49ec": {}, "arn:aws:ec2:eu-west-1:123456789012:subnet/subnet-05e85a7b0ec9e404c": {}, "arn:aws:ec2:eu-west-1:123456789012:subnet/subnet-0e177ea95bcc76256": {} } }, "config": { "cidr": "172.10.0.0/16", "default": false, "public": null } } }, "subnets": { "arn:aws:ec2:eu-west-1:123456789012:subnet/subnet-03d86f1ccd7729d85": { "associations": { "route_tables": { "arn:aws:ec2:eu-west-1:123456789012:route-table/rtb-0ebae6462f919943d": { "associations": {}, "config": { "default": false, "route_to_internet_gateway": [ { "DestinationCidrBlock": "0.0.0.0/0", "GatewayId": "igw-0790540d8d726f9d4", "Origin": "CreateRoute", "State": "active" } ], "route_to_nat_gateway": [], "route_to_transit_gateway": [], "route_to_vpc_peering": [], "public": null } } }, "network_interfaces": { "arn:aws:ec2:eu-west-1:123456789012:network-interface/eni-0e8918fa31d2acd55": {}, "arn:aws:ec2:eu-west-1:123456789012:network-interface/eni-0f6c936934fd9d6a6": {}, "arn:aws:ec2:eu-west-1:123456789012:network-interface/eni-041a6e5bb59c336ee": {}, "arn:aws:ec2:eu-west-1:123456789012:network-interface/eni-0e5f6cfdc7c286224": {} }, "instances": { "arn:aws:ec2:eu-west-1:123456789012:instance/i-018daeedcf06398c0": {} } }, "config": { "cidr": "172.11.11.0/24", "map_public_ip_on_launch_enabled": true, "default": false, "public": true, "resource_policy": null, "public_ips": [ "100.100.100.100", ], "managed_services": [ "ELB app/stg-alb-backend/3567d780bd062d75", "Interface for NAT Gateway nat-0805d9808347bba69" ], "attached": true } } }, } ```

टैग्स

tags कुंजी के अंतर्गत, आपको प्रभावित संसाधन से जुड़े सभी टैग मिलेंगे। MetaHub आपके संसाधनों से जुड़े टैग्स को क्वेरी करने के लिए AWS Resource Groups Tagging API पर निर्भर करता है। ध्यान दें कि सभी AWS संसाधन प्रकार इस API का समर्थन नहीं करते हैं। आप समर्थित सेवाओं की जाँच कर सकते हैं।

टैग आपके संदर्भ को समझने का एक महत्वपूर्ण हिस्सा हैं। टैगिंग रणनीतियों में अक्सर शामिल होते हैं:

  • पर्यावरण (जैसे उत्पादन, स्टेजिंग, विकास, आदि)
  • डेटा वर्गीकरण (जैसे गोपनीय, प्रतिबंधित, आदि)
  • स्वामी (जैसे एक टीम, एक दस्ता, एक व्यावसायिक इकाई, आदि)
  • अनुपालन (जैसे PCI, SOX, आदि)

यदि आप एक उचित टैगिंग रणनीति का पालन करते हैं, तो आप फ़िल्टर कर सकते हैं और दिलचस्प आउटपुट उत्पन्न कर सकते हैं। उदाहरण के लिए, आप किसी विशिष्ट टीम से संबंधित सभी निष्कर्षों को सूचीबद्ध कर सकते हैं और उस डेटा को सीधे उस टीम को प्रदान कर सकते हैं।

आप विकल्प का उपयोग करके टैग आउटपुट के आधार पर अपने निष्कर्षों को फ़िल्टर कर सकते हैं: --mh-filters-tags TAG=VALUE (देखें टैग फ़िल्टर).

EC2 इंस्टेंस टैग कुंजी का उदाहरण```json "tags": { "aws:autoscaling:groupName": "stg-backend-20201205160228428400000002", "environment": "stg", "terraform": "true", "aws:ec2launchtemplate:version": "8", "aws:ec2launchtemplate:id": "lt-06b73d2e77f10446f", "Name": "stg-backend" } ```

CloudTrail

कुंजी cloudtrail के अंतर्गत, आप प्रभावित संसाधन से संबंधित महत्वपूर्ण CloudTrail घटनाएँ पाएंगे, जैसे निर्माण घटनाएँ। हम जिन CloudTrail घटनाओं की तलाश करते हैं वे संसाधन प्रकार द्वारा परिभाषित हैं, और आप कॉन्फ़िगरेशन फ़ाइल resources.py को संपादित करके उन्हें जोड़, हटा या बदल सकते हैं। उदाहरण के लिए, प्रकार Security Group के प्रभावित संसाधन के लिए, MetaHub निम्नलिखित घटनाओं की तलाश करेगा: CreateSecurityGroup (Security Group निर्माण घटना) और AuthorizeSecurityGroupIngress (Security Group नियम प्राधिकरण घटना)।

EC2 इंस्टेंस cloudtrail कुंजी के लिए उदाहरण```json "cloudtrail": { "RunInstances": { "Username": "root", "EventTime": "2023-11-15 06:10:07+01:00", "EventId": "4f122d76-812d-4438-bc33-3585a9e863cf" } } ```
DynamoDB तालिका cloudtrail कुंजी के लिए उदाहरण```json "cloudtrail": { "CreateTable": { "Username": "gabriel.soltz", "EventTime": "2023-12-05 14:34:25+01:00", "EventId": "7110e3ae-09a3-44b9-929a-1775e0fbedcf" } } ```

खाता

account कुंजी के अंतर्गत, आपको उस खाते के बारे में जानकारी मिलेगी जहाँ प्रभावित संसाधन चल रहा है, जैसे कि यह AWS Organizations का हिस्सा है या नहीं, उनके संपर्कों के बारे में जानकारी, और अधिक।

खाता कुंजी के लिए उदाहरण```json "account": { "Alias": "metahub-demo", "AlternateContact": { "AlternateContactType": "SECURITY", "EmailAddress": "[email protected]", "Name": "Gabriel", "PhoneNumber": "+1234567890", "Title": "Security" }, "Organizations": { "Arn": "arn:aws:organizations::123456789012:organization/o-12349772jb", "Id": "o-12349772jb", "MasterAccountId": "123456789012", "MasterAccountEmail": "[email protected]", "FeatureSet": "ALL", "DelegatedAdministrators": {}, "Details": { "ParentId": "r-k123", "ParentType": "ROOT", "OU": "ROOT", "Policies": { "p-FullAWSAccess": { "Name": "FullAWSAccess", "Arn": "arn:aws:organizations::aws:policy/service_control_policy/p-FullAWSAccess", "Type": "SERVICE_CONTROL_POLICY", "Description": "Allows access to every operation", "AwsManaged": true, "Targets": [] } } } } }, ```

प्रभाव

MetaHub में प्रभाव मॉड्यूल प्रभावित संसाधन के 7 प्रमुख गुणों को समझने पर केंद्रित है: एक्सपोज़र, पहुंच, एन्क्रिप्शन, स्थिति, पर्यावरण, एप्लिकेशन, और मालिक और उनके मानों को समान संसाधन को प्रभावित करने वाले सभी सुरक्षा निष्कर्षों और उनकी गंभीरता के मानों के साथ जोड़कर एक स्कोर उत्पन्न करना। प्रभाव स्कोर 0 से 100 के बीच की संख्या है, जहाँ 100 सबसे अधिक प्रभाव है।


एक्सपोज़र

एक्सपोज़र यह मूल्यांकन करता है कि प्रभावित संसाधन अन्य नेटवर्कों के लिए कैसे उजागर है। उदाहरण के लिए, यदि प्रभावित संसाधन प्रभावी रूप से सार्वजनिक या केवल सार्वजनिक है, यदि यह VPC का हिस्सा है, यदि इसका कोई सार्वजनिक IP है या यदि यह फ़ायरवॉल या सुरक्षा समूह द्वारा सुरक्षित है।

एक effectively-public संसाधन का उदाहरण```json "exposure": { --> The exposure key "effectively-public": { --> The exposure value, effectively-public "entrypoint": "66.66.66.66", --> The entrypoint to the resource from the Internet (Ip, Domain, etc.) "unrestricted_ingress_rules": [ --> The unrestricted ingress rules, if any { "SecurityGroupRuleId": "sgr-0553206714e321b87", "GroupId": "sg-0a15a46e47f07d139", "GroupOwnerId": "123456789012", "IsEgress": false, "IpProtocol": "tcp", "FromPort": 22, "ToPort": 22, "CidrIpv4": "0.0.0.0/0", "Tags": [] } ], "unrestricted_egress_rules": [ --> The unrestricted egress rules, if any { "SecurityGroupRuleId": "sgr-007b509667896ebe3", "GroupId": "sg-0a15a46e47f07d139", "GroupOwnerId": "123456789012", "IsEgress": true, "IpProtocol": "-1", "FromPort": -1, "ToPort": -1, "CidrIpv4": "0.0.0.0/0", "Tags": [] }, ], "resource_public_config": true --> The public configuration of the resource } } ```

पहुँच

पहुँच संसाधन नीति स्तर का मूल्यांकन करती है। MetaHub सभी उपलब्ध नीतियों की जाँच करता है, जिनमें शामिल हैं: IAM प्रबंधित नीतियाँ, IAM इनलाइन नीतियाँ, संसाधन नीतियाँ, बकेट ACL, और IAM भूमिकाओं जैसे अन्य संसाधनों से कोई भी संबंध, जिनकी नीतियों का भी विश्लेषण किया जाता है। एक अप्रतिबंधित नीति केवल उस नीति की अपनी समस्या नहीं है, यह उसका उपयोग करने वाले किसी भी अन्य संसाधन को प्रभावित करती है।

एक अप्रतिबंधित-क्रियाएँ संसाधन का उदाहरण```json "access": { --> The access key "unrestricted-actions": { --> The access value, unrestricted-actions "wildcard_actions": { --> The wildcard policies, if any "arn:aws:iam::123456789012:policy/eu-west-1-stg-iam-policy-dynamodb-cache": [ { "Action": [ "dynamodb:*" --> The wildcard action ], "Effect": "Allow", "Resource": [ "arn:aws:dynamodb:eu-west-1:123456789012:table/table", ] } ], } } ```

एन्क्रिप्शन

एन्क्रिप्शन प्रत्येक संसाधन प्रकार के आधार पर विभिन्न एन्क्रिप्शन परतों का मूल्यांकन करता है। उदाहरण के लिए, कुछ संसाधनों के लिए यह मूल्यांकन करता है कि at_rest और in_transit एन्क्रिप्शन कॉन्फ़िगरेशन दोनों सक्षम हैं या नहीं।

संभावित स्थितियाँमान
एक अनएन्क्रिप्टेड संसाधन का उदाहरण```json "encryption": { --> The encryption key "unencrypted": { --> The encryption value, unencrypted "unencrypted_resources": [ --> the unencrypted resources associated with the affected resource, if any "arn:aws:ec2:eu-west-1:012345678901:volume/vol-0ac713ec808a8d8bd" ], "resource_encryption_config": null --> The encryption configuration of the resource, if it has any } } ```

स्थिति

स्थिति प्रभावित संसाधन की स्थिति का मूल्यांकन अनुलग्नक या कार्यप्रणाली के संदर्भ में करता है। उदाहरण के लिए, EC2 इंस्टेंस के लिए हम मूल्यांकन करते हैं कि संसाधन चल रहा है, रोका गया है, या समाप्त कर दिया गया है, लेकिन EBS वॉल्यूम और सुरक्षा समूह जैसे संसाधनों के लिए, हम मूल्यांकन करते हैं कि वे संसाधन किसी अन्य संसाधन से जुड़े हैं या नहीं।

चल रहे संसाधन का उदाहरण```json "status": { --> The status key "running": { --> The status value, running "status": "running", --> The status configuration of the resource, if it has any "attached": null --> The attachment configuration of the resource, if it has any } } ```

पर्यावरण

पर्यावरण प्रभावित संसाधन के चलने वाले वातावरण का मूल्यांकन करता है। डिफ़ॉल्ट रूप से, MetaHub 3 वातावरणों को परिभाषित करता है: production, staging, और development, लेकिन आप अपनी आवश्यकताओं के आधार पर इन वातावरणों को जोड़, हटा या संशोधित कर सकते हैं। MetaHub प्रभावित संसाधन के टैग, खाता आईडी या खाता उपनाम के आधार पर वातावरण का मूल्यांकन करता है। आप कॉन्फ़िगरेशन फ़ाइल में अपनी स्वयं की वातावरण परिभाषाएँ और रणनीति परिभाषित कर सकते हैं (देखें कॉन्फ़िगरेशन को अनुकूलित करना).

टैग द्वारा मिलान किए गए उत्पादन संसाधन का उदाहरण```json "environment": { --> The environment key "production": { --> The environment value, production "tags": { --> The parameters used for evaluating the environment, in this case tags "Env": "prod" --> The tag and key found used for evaluating the environment } } } ```

अनुप्रयोग

अनुप्रयोग उस अनुप्रयोग का मूल्यांकन करता है जिसका प्रभावित संसाधन हिस्सा है। MetaHub AWS myApplications सुविधा पर निर्भर करता है, जो awsApplication टैग पर आधारित है, लेकिन आप इस कार्यक्षमता को अपने संदर्भ के आधार पर विस्तारित कर सकते हैं, उदाहरण के लिए अन्य टैग परिभाषित करके जिनका उपयोग आप अनुप्रयोगों या सेवाओं को परिभाषित करने के लिए करते हैं (जैसे Service या कोई अन्य), या खाता आईडी या उपनाम पर निर्भर करके। आप अपनी अनुप्रयोग परिभाषाएँ और रणनीति कॉन्फ़िगरेशन फ़ाइल में परिभाषित कर सकते हैं (देखें कॉन्फ़िगरेशन अनुकूलित करना)।

संभावित स्थितियाँमानविवरण
🔵 अज्ञात-संसाधन के लिए अनुप्रयोग की जाँच नहीं की जा सकी।
myApplication टैग से मेल खाने वाले संसाधन का उदाहरण```json "application": { --> The application key "payments-app": { --> The application value, payments-app "tags": { --> The parameters used for evaluating the environment, in this case the tag awsApplication "awsApplication": "arn:aws:resource-groups:eu-west-1:123456789012:group/app1/0c8vpbjkzeeffsz2cqgxpae7b2" --> The tag and key found used for evaluating the environment } } } ```

स्वामी

स्वामी स्वामित्व पहचान पर ध्यान केंद्रित करता है। यह विभिन्न तरीकों से प्रभावित संसाधन के स्वामी का निर्धारण कर सकता है। इस जानकारी का उपयोग सुरक्षा निष्कर्ष को सही स्वामी को स्वचालित रूप से निर्दिष्ट करने, उसे बढ़ाने, या इस जानकारी के आधार पर निर्णय लेने के लिए किया जा सकता है। किसी संसाधन के स्वामी को निर्धारित करने का एक स्वचालित तरीका सुरक्षा टीमों के लिए महत्वपूर्ण है। यह उन्हें सबसे महत्वपूर्ण मुद्दों पर ध्यान केंद्रित करने और उन्हें स्वचालित वर्कफ़्लो में जितनी जल्दी हो सके सही लोगों को निर्दिष्ट करने की अनुमति देता है। आप अपनी स्वामी परिभाषाएँ और रणनीति कॉन्फ़िगरेशन फ़ाइल में परिभाषित कर सकते हैं (देखें कॉन्फ़िगरेशन को अनुकूलित करना).

संभावित स्थितियाँमानविवरण
🔵 unknown-संसाधन की स्वामी के लिए जाँच नहीं की जा सकी।
खाता आईडी द्वारा मिलान किए गए संसाधन का उदाहरण```json "owner": { --> The owner key "payments-team": { --> The owner value, payments-app "account": { --> The parameters used for evaluating the environment, in this case the account "account_ids": ["123456789012"], --> The account ids found used for evaluating the environment "account_aliases": [], }, } } ```

निष्कर्ष

प्रभाव स्कोर गणना के भाग के रूप में, हम संसाधन को प्रभावित करने वाले सुरक्षा निष्कर्षों की कुल मात्रा और उनकी गंभीरता का भी मूल्यांकन करते हैं। हम इस मीट्रिक की गणना करने के लिए निम्नलिखित सूत्र का उपयोग करते हैं:```sh (SUM of all (Finding Severity / Highest Severity) with a maximum of 1)

root@kitploit:~
उदाहरण के लिए, यदि प्रभावित संसाधन पर दो निष्कर्ष हैं, एक `HIGH` और दूसरा `LOW` गंभीरता के साथ, तो **प्रभाव निष्कर्ष स्कोर** होगा:```sh
SUM(HIGH (3) / CRITICAL (4) + LOW (0.5) / CRITICAL (4)) = 0.875

उच्च स्तरीय आर्किटेक्चर

MetaHub AWS Security Hub या किसी भी ASFF-संगत सुरक्षा स्कैनर से आपकी सुरक्षा निष्कर्षों को पढ़ता है। फिर यह प्रभावित संसाधनों को सीधे प्रभावित खाते में क्वेरी करके अतिरिक्त संदर्भ प्रदान करता है। उस संदर्भ के आधार पर, यह अपना प्रभाव गणना करता है। अंत में, यह आपकी आवश्यकताओं के आधार पर विभिन्न आउटपुट उत्पन्न करता है।

Diagram

उपयोग के मामले

MetaHub के कुछ उपयोग के मामलों में शामिल हैं:

  • संदर्भ संवर्धन के लिए स्थानीय स्कैनर के रूप में Prowler के साथ MetaHub एकीकरण
  • टैगिंग के आधार पर Security Hub निष्कर्षों के दमन को स्वचालित करना
  • MetaHub को सीधे Security Hub कस्टम क्रिया के रूप में एकीकृत करें ताकि इसे AWS कंसोल से सीधे उपयोग किया जा सके
  • अपने निष्कर्षों के लिए समृद्ध HTML रिपोर्ट बनाएं जिन्हें आप फ़िल्टर, सॉर्ट, ग्रुप और डाउनलोड कर सकते हैं
  • MetaHub संदर्भ के आधार पर Security Hub Insights बनाएं

कॉन्फ़िगरेशन को अनुकूलित करना

MetaHub कॉन्फ़िगरेशन फ़ाइलों का उपयोग करता है जो आपको कुछ जांचों के व्यवहार, डिफ़ॉल्ट फ़िल्टर और अधिक को अनुकूलित करने देती हैं। कॉन्फ़िगरेशन फ़ाइलें lib/config/ में स्थित हैं।

आप जिन चीज़ों को अनुकूलित कर सकते हैं:

  • lib/config/configuration.py: इस फ़ाइल में MetaHub के लिए डिफ़ॉल्ट कॉन्फ़िगरेशन है। आप डिफ़ॉल्ट फ़िल्टर, डिफ़ॉल्ट आउटपुट मोड, पर्यावरण परिभाषाएँ और अधिक बदल सकते हैं।
  • lib/config/impact.py: इस फ़ाइल में प्रभाव फॉर्मूला मानदंड के लिए मान और उनके भार हैं। आप अपनी आवश्यकताओं के आधार पर मान और भार को संशोधित कर सकते हैं।
  • lib/config/reources.py: इस फ़ाइल में प्रत्येक संसाधन प्रकार के लिए परिभाषाएँ हैं, जैसे कि कौन से CloudTrail इवेंट देखने हैं।

Python के साथ चलाएँ

MetaHub एक Python3 प्रोग्राम है। आपके सिस्टम में Python3 स्थापित होना चाहिए और requirements.txt फ़ाइल में वर्णित आवश्यक Python मॉड्यूल होने चाहिए।

आवश्यकताओं को आपके सिस्टम में मैन्युअल रूप से (pip3 का उपयोग करके) या Python वर्चुअल वातावरण (सुझाई गई विधि) का उपयोग करके स्थापित किया जा सकता है।

Python वर्चुअल वातावरण का उपयोग करके चलाएँ

  1. रिपॉजिटरी क्लोन करें: git clone [email protected]:gabrielsoltz/metahub.git
  2. रिपॉजिटरी डायरेक्टरी में बदलें: cd metahub
  3. इस प्रोजेक्ट के लिए एक वर्चुअल वातावरण बनाएं: python3 -m venv venv/metahub
  4. अपने द्वारा बनाए गए वर्चुअल वातावरण को सक्रिय करें: source venv/metahub/bin/activate
  5. Metahub आवश्यकताएँ स्थापित करें: pip3 install -r requirements.txt
  6. चलाएँ: ./metahub -h
  7. समाप्त होने के बाद अपने वर्चुअल वातावरण को निष्क्रिय करें: deactivate

अगली बार, प्रोग्राम का उपयोग करने के लिए आपको केवल चरण 4 और 6 की आवश्यकता है।

वैकल्पिक रूप से, आप इस टूल को Docker का उपयोग करके चला सकते हैं।

Docker के साथ चलाएँ

MetaHub Docker इमेज के रूप में भी उपलब्ध है। आप इसे सार्वजनिक Docker इमेज से सीधे चला सकते हैं या स्थानीय रूप से बना सकते हैं।

MetaHub कंटेनरों के लिए उपलब्ध टैगिंग निम्नलिखित हैं:

  • latest: मास्टर ब्रांच के साथ सिंक में
  • <x.y.z>: आप रिलीज़ यहाँ पा सकते हैं
  • stable: यह टैग हमेशा नवीनतम रिलीज़ को इंगित करता है।

सार्वजनिक रजिस्ट्री से चलाने के लिए, आप निम्न कमांड चला सकते हैं:```sh docker run -ti public.ecr.aws/n2p8q5p4/metahub:latest ./metahub -h

root@kitploit:~
## AWS क्रेडेंशियल्स और Docker

यदि आप पहले से ही AWS होस्ट मशीन में लॉग इन हैं, तो आप Docker कंटेनर के अंदर उन्हीं क्रेडेंशियल्स का निर्बाध रूप से उपयोग कर सकते हैं। आप इसे कंटेनर में आवश्यक पर्यावरण चर पास करके या क्रेडेंशियल्स फ़ाइल को माउंट करके प्राप्त कर सकते हैं।

उदाहरण के लिए, आप निम्न आदेश चला सकते हैं:

docker run -e AWS_ACCESS_KEY_ID -e AWS_SECRET_ACCESS_KEY -e AWS_SESSION_TOKEN --rm -it amazon/aws-cli s3 ls

root@kitploit:~
docker run -e AWS_DEFAULT_REGION -e AWS_ACCESS_KEY_ID -e AWS_SECRET_ACCESS_KEY -e AWS_SESSION_TOKEN -ti public.ecr.aws/n2p8q5p4/metahub:latest ./metahub -h
```
दूसरी ओर, यदि आप होस्ट मशीन पर लॉग इन नहीं हैं, तो आपको कंटेनर के अंदर से फिर से लॉग इन करना होगा।

## डॉकर को स्थानीय रूप से बनाएं और चलाएं

या आप इसे स्थानीय रूप से भी बना सकते हैं:```sh
git clone [email protected]:gabrielsoltz/metahub.git
cd metahub
docker build -t metahub .
docker run -ti metahub ./metahub -h
```
# Lambda के साथ चलाएँ

**MetaHub** Lambda/सर्वरलेस के लिए तैयार है! आप MetaHub को सीधे AWS Lambda फ़ंक्शन पर चला सकते हैं बिना किसी अतिरिक्त बुनियादी ढाँचे की आवश्यकता के।

Lambda फ़ंक्शन में MetaHub चलाने से आप अपने परिभाषित ट्रिगर्स के आधार पर इसके निष्पादन को स्वचालित कर सकते हैं। उदाहरण के लिए, आप यह कर सकते हैं:

- हर बार जब कोई नई सुरक्षा खोज हो, तो MetaHub Lambda फ़ंक्शन को ट्रिगर करें ताकि उस खोज को AWS Security Hub में समृद्ध किया जा सके।
- हर बार जब संदर्भ के आधार पर दमन के लिए कोई नई सुरक्षा खोज हो, तो MetaHub Lambda फ़ंक्शन को ट्रिगर करें।
- संदर्भ के आधार पर सुरक्षा खोज के प्रभावित मालिक की पहचान करने और इसे अपने आंतरिक सिस्टम का उपयोग करके असाइन करने के लिए MetaHub Lambda फ़ंक्शन को ट्रिगर करें।
- समृद्ध संदर्भ के साथ एक टिकट बनाने के लिए MetaHub Lambda फ़ंक्शन को ट्रिगर करें।

## Lambda तैनात करना

Lambda फ़ंक्शन को तैनात करने के लिए टेराफ़ॉर्म कोड `terraform/` फ़ोल्डर के अंतर्गत प्रदान किया गया है।

बस निम्नलिखित कमांड चलाएँ:```sh
cd terraform
terraform init
terraform apply
```
कोड Lambda कोड के लिए एक zip फ़ाइल और Python निर्भरताओं के लिए एक zip फ़ाइल बनाएगा जिसे हम Lambda layer के रूप में उपयोग करेंगे। यह Lambda फ़ंक्शन और सभी आवश्यक संसाधन भी बनाएगा।

Terraform कोड एक Security Hub कस्टम कार्रवाई और एक EventBridge नियम भी बनाएगा जो कस्टम कार्रवाई निष्पादित होने पर Lambda फ़ंक्शन को ट्रिगर करेगा। नीचे देखें।

## Customize Lambda behaviour

आप फ़ाइल [lib/lambda.py](https://github.com/gabrielsoltz/metahub/blob/HEAD/lib/lambda.py) को संपादित करके अपने lambda के लिए MetaHub विकल्पों को अनुकूलित कर सकते हैं। आप MetaHub के डिफ़ॉल्ट विकल्प बदल सकते हैं, जैसे फ़िल्टर, Meta\* विकल्प, और अधिक।

## Lambda Permissions

Terraform Lambda फ़ंक्शन को स्थानीय रूप से (उसी खाते में) चलाने के लिए न्यूनतम आवश्यक अनुमतियाँ बनाएगा। यदि आप चाहते हैं कि आपका Lambda अन्य खातों में एक भूमिका ग्रहण करे (उदाहरण के लिए, यदि आप Security Hub मास्टर खाते में Lambda निष्पादित कर रहे हैं जो अन्य खातों से निष्कर्ष एकत्र कर रहा है), तो आपको Lambda फ़ंक्शन कॉन्फ़िगरेशन में विकल्प `--mh-assume-role` जोड़कर ग्रहण करने के लिए भूमिका निर्दिष्ट करनी होगी (पिछला चरण देखें) और lambda भूमिका में Lambda को वह भूमिका ग्रहण करने की अनुमति देने के लिए संबंधित नीति जोड़नी होगी।

# Run with Security Hub Custom Action

**MetaHub** को [Security Hub कस्टम कार्रवाई](https://docs.aws.amazon.com/securityhub/latest/userguide/securityhub-cwe-custom-actions.html) के रूप में चलाया जा सकता है। यह आपको चयनित निष्कर्ष या चयनित निष्कर्षों के सेट के लिए सीधे Security Hub कंसोल से MetaHub चलाने की अनुमति देता है।

<p align="center">
  <img src="https://assets.kitploit.com/production/public/readmes/6190/111335c3952ebe6d8b12c94400171bc5a360518e35ef7ae5889cba55a5be7197.png" alt="custom_action" width="850"/>
</p>

कस्टम कार्रवाई तब एक Lambda फ़ंक्शन को ट्रिगर करेगी जो चयनित निष्कर्षों के लिए MetaHub चलाएगा।

जब आप Security Hub कस्टम कार्रवाई का उपयोग करके Lambda को ट्रिगर करते हैं, तो lambda अपने संदर्भ के लिए चयनित निष्कर्षों को पढ़ेगा और प्रत्येक निष्कर्ष के लिए एक बार निष्पादित होगा। डिफ़ॉल्ट रूप से, निष्कर्षों पर कोई कार्रवाई नहीं की जाएगी, लेकिन आप इस व्यवहार को बदल सकते हैं। [Customize Lambda behavior](#customize-lambda-behaviour) देखें।

Security Hub कस्टम कार्रवाई Terraform कोड के भाग के रूप में तैनात की गई है। अधिक जानकारी के लिए [Deploying Lambda](#deploying-lambda) देखें।

<details>
  <summary>यदि आप इसे मैन्युअल रूप से तैनात करना चाहते हैं, तो आप नीचे दिए गए चरणों का पालन कर सकते हैं:</summary>

1. Security Hub में, Settings चुनें और फिर Custom Actions चुनें।
2. Create custom action चुनें।
3. कार्रवाई के लिए एक Name, Description, और Custom action ID प्रदान करें।
4. Create custom action चुनें। (Custom action ARN पर ध्यान दें। आपको EventBridge में इस कार्रवाई से संबद्ध करने के लिए एक नियम बनाते समय ARN का उपयोग करना होगा।)
5. EventBridge में, Rules चुनें और फिर Create rule चुनें।
6. नियम के लिए नाम और विवरण दर्ज करें।
7. Event bus के लिए, वह event bus चुनें जिसे आप इस नियम से संबद्ध करना चाहते हैं। यदि आप चाहते हैं कि यह नियम आपके खाते से आने वाली घटनाओं से मेल खाए, तो default चुनें। जब आपके खाते में कोई AWS सेवा कोई घटना उत्पन्न करती है, तो वह हमेशा आपके खाते के डिफ़ॉल्ट event bus पर जाती है।
8. Rule type के लिए, एक event pattern वाला नियम चुनें और फिर Next दबाएँ।
9. Event source के लिए, AWS events चुनें।
10. Creation method के लिए, Use pattern form चुनें।
11. Event source के लिए, AWS services चुनें।
12. AWS service के लिए, Security Hub चुनें।
13. Event type के लिए, Security Hub Findings - Custom Action चुनें।
14. Specific custom action ARNs चुनें और एक कस्टम कार्रवाई ARN जोड़ें।
15. Next चुनें।
16. Select targets के अंतर्गत, Lambda function चुनें।
17. वह Lambda फ़ंक्शन चुनें जो आपने MetaHub के लिए बनाया है।
</details>

# AWS Authentication

सुनिश्चित करें कि आपके पास आपकी स्थानीय मशीन (या जहाँ से आप MetaHub चलाएंगे) पर AWS क्रेडेंशियल्स सेट हैं।

उदाहरण के लिए, आप `aws configure` विकल्प का उपयोग कर सकते हैं।```sh
aws configure
```
या आप अपने क्रेडेंशियल्स को एनवायरनमेंट में निर्यात कर सकते हैं।```sh
export AWS_DEFAULT_REGION="us-east-1"
export AWS_ACCESS_KEY_ID= "ASXXXXXXX"
export AWS_SECRET_ACCESS_KEY= "XXXXXXXXX"
export AWS_SESSION_TOKEN= "XXXXXXXXX"
```
# सिक्योरिटी हब को कॉन्फ़िगर करना

- यदि आप एकल AWS खाता सेटअप के लिए MetaHub चला रहे हैं (AWS Security Hub विभिन्न खातों से निष्कर्षों को एकत्रित नहीं कर रहा है), तो आपको किसी अतिरिक्त विकल्प का उपयोग करने की आवश्यकता नहीं है; MetaHub आपके वातावरण में क्रेडेंशियल्स का उपयोग करेगा। फिर भी, यदि आपके IAM डिज़ाइन में इसकी आवश्यकता है, तो उसी खाते में लॉग इन करके भूमिका ग्रहण करना संभव है जिसमें आप लॉग इन हैं। बस `--sh-assume-role` विकल्प का उपयोग भूमिका निर्दिष्ट करने के लिए और `--sh-account` का उपयोग उसी AWS खाता ID के साथ करें जिसमें आप लॉग इन हैं।

- `--sh-region`: वह AWS क्षेत्र जहाँ Security Hub चल रहा है। यदि आप कोई क्षेत्र निर्दिष्ट नहीं करते हैं, तो यह आपके वातावरण में कॉन्फ़िगर किए गए क्षेत्र का उपयोग करेगा। यदि आप AWS Security Hub क्रॉस-रीजन एग्रीगेशन का उपयोग कर रहे हैं, तो आपको उस क्षेत्र का उपयोग `--sh-region` विकल्प के रूप में करना चाहिए ताकि आप सभी निष्कर्षों को एक साथ ला सकें।

- `--sh-account` और `--sh-assume-role`: वह AWS खाता ID जहाँ Security Hub चल रहा है और उस खाते में ग्रहण करने के लिए AWS IAM भूमिका। ये विकल्प तब सहायक होते हैं जब आप उस AWS खाते से भिन्न खाते में लॉग इन हैं जहाँ AWS Security Hub चल रहा है, या जब AWS Security Hub को एकाधिक AWS खाता सेटअप में चला रहे हैं। दोनों विकल्पों का एक साथ उपयोग किया जाना चाहिए। प्रदान की गई भूमिका के पास AWS Security Hub में निष्कर्ष प्राप्त करने और अपडेट करने के लिए पर्याप्त नीतियाँ होनी चाहिए (यदि आवश्यक हो)। यदि आप `--sh-account` निर्दिष्ट नहीं करते हैं, तो MetaHub वही मान लेगा जिसमें आप लॉग इन हैं।

- `--sh-profile`: आप AWS Security Hub के लिए अपने AWS प्रोफ़ाइल नाम का भी उपयोग कर सकते हैं। इस विकल्प का उपयोग करते समय, आपको `--sh-account` या `--sh-assume-role` निर्दिष्ट करने की आवश्यकता नहीं है क्योंकि MetaHub प्रोफ़ाइल से क्रेडेंशियल्स का उपयोग करेगा। यदि आप `--sh-account` और `--sh-assume-role` का उपयोग कर रहे हैं, तो ये विकल्प `--sh-profile` पर प्राथमिकता लेंगे।

## सिक्योरिटी हब के लिए IAM नीति

AWS Security Hub से पढ़ने और लिखने के लिए आपको न्यूनतम IAM नीति यह है। यदि आप MetaHub के साथ अपने निष्कर्षों को अपडेट नहीं करना चाहते हैं, तो आप `securityhub:BatchUpdateFindings` क्रिया को हटा सकते हैं।```sh
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "security hub:GetFindings",
                "security hub:ListFindingAggregators",
                "security hub:BatchUpdateFindings",
                "iam:ListAccountAliases"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}
```
# संदर्भ कॉन्फ़िगर करना

यदि आप एकाधिक AWS खाता सेटअप (AWS Security Hub एकाधिक AWS खातों से निष्कर्ष एकत्रित कर रहा है) के लिए MetaHub चला रहे हैं, तो आपको संदर्भ क्वेरी के लिए भूमिका प्रदान करनी होगी क्योंकि प्रभावित संसाधन उसी AWS खाते में नहीं हैं जिसमें AWS Security Hub के निष्कर्ष हैं। `--mh-assume-role` का उपयोग प्रभावित खाते में सीधे प्रभावित संसाधनों से जुड़ने के लिए किया जाएगा। इस भूमिका में संसाधनों का वर्णन करने में सक्षम होने के लिए पर्याप्त नीतियां होनी चाहिए।

## संदर्भ के लिए IAM नीति

संदर्भ के लिए आवश्यक न्यूनतम नीति में प्रबंधित नीति `arn:aws:iam::aws:policy/SecurityAudit` और निम्नलिखित क्रियाएं शामिल हैं:

- `tag:GetResources`
- `lambda:GetFunction`
- `lambda:GetFunctionUrlConfig`
- `cloudtrail:LookupEvents`
- `account:GetAlternateContact`
- `organizations:DescribeAccount`
- `iam:ListAccountAliases`

# इनपुट

MetaHub AWS Security Hub के API का उपयोग करके सीधे सुरक्षा निष्कर्ष पढ़ सकता है। यदि आप Security Hub का उपयोग नहीं करते हैं, तो आप किसी भी ASFF-संगत स्कैनर का उपयोग कर सकते हैं। अधिकांश क्लाउड सुरक्षा स्कैनर Prolwer, Steampipe, Trivy और अन्य जैसे ASFF प्रारूप का समर्थन करते हैं।

यदि आप किसी इनपुट ASFF फ़ाइल से पढ़ना चाहते हैं, तो आपको विकल्प (`--inputs file-asff`) का उपयोग करना होगा और फ़ाइल का पथ प्रदान करना होगा। आप स्पेस से अलग किए गए एकाधिक फ़ाइलें प्रदान कर सकते हैं।:```sh
./metahub.py --inputs file-asff --input-asff path/to/the/file.json.asff path/to/the/file2.json.asff
```
आप AWS Security Hub के निष्कर्षों को इनपुट ASFF फ़ाइलों के साथ दोनों इनपुट निर्दिष्ट करते हुए (`--inputs file-asff securityhub`) जोड़ सकते हैं। MetaHub सभी निष्कर्षों को एक साथ संसाधित करेगा और एकल आउटपुट देगा।```sh
./metahub.py --inputs file-asff securityhub --input-asff path/to/the/file.json.asff
```
जब फ़ाइल को इनपुट के रूप में उपयोग करते हैं, तो आप findings को फ़िल्टर करने के लिए `--sh-filters` विकल्प का उपयोग नहीं कर सकते, क्योंकि यह विकल्प फ़िल्टरिंग के लिए AWS API पर निर्भर करता है। आप `--update-findings` या `--enrich-findings` विकल्पों का उपयोग नहीं कर सकते क्योंकि वे findings AWS Security Hub में नहीं हैं। यदि आप एक ही समय में दोनों स्रोतों से पढ़ रहे हैं, तो केवल AWS Security Hub की findings अपडेट की जाएंगी।

MetaHub ASFF प्रारूप के लिए कुछ **फिक्सिंग तंत्र** भी लागू करता है, जब वे सही ढंग से स्वरूपित नहीं होते हैं। यह ASFF को यथासंभव उपयोगी बनाने के लिए एक बेस्ट-एफ़र्ट दृष्टिकोण है, लेकिन यह पूर्ण नहीं है और इसे स्रोत स्कैनर में ठीक करने की आवश्यकता है।

- यदि Resources और Root Level से `Region` कुंजी गायब है, तो MetaHub प्रभावित संसाधन के ARN के आधार पर क्षेत्र की गणना करेगा।
- यदि ASFF फ़ाइल ASFF संसाधन प्रकार को सही ढंग से सेट नहीं कर रही है, तो MetaHub [aws-arn](https://github.com/gabrielsoltz/aws-arn) लाइब्रेरी का उपयोग करके प्रभावित संसाधन के ARN के आधार पर इसकी गणना करेगा।
- यदि `SeverityLabel`, `Workflow`, `RecordState`, `Compliance`, `Id`, `ProductArn` या `StandardsControlArn` जैसा कोई अन्य फ़ील्ड गायब है, तो MetaHub उन्हें `Unknown` पर सेट कर देगा।

# आउटपुट

**MetaHub** विभिन्न प्रोग्रामेटिक और दृश्य आउटपुट उत्पन्न कर सकता है। डिफ़ॉल्ट रूप से, सभी आउटपुट मोड सक्षम हैं: `json-short`, `json-full`, `json-statistics`, `json-inventory`, `html`, `csv`, और `xlsx`। यदि आप केवल एक विशिष्ट आउटपुट मोड उत्पन्न करना चाहते हैं, तो आप वांछित आउटपुट मोड के साथ `--output-modes` विकल्प का उपयोग कर सकते हैं। आउटपुट निष्पादन तिथि के साथ `outputs/` फ़ोल्डर में सहेजे जाएंगे।

उदाहरण के लिए, यदि आप केवल `json-short` आउटपुट उत्पन्न करना चाहते हैं, तो आप उपयोग कर सकते हैं:```sh
./metahub.py --output-modes json-short
```
यदि आप `json-short`, `json-full` और `html` आउटपुट उत्पन्न करना चाहते हैं, तो आप इसका उपयोग कर सकते हैं:```sh
./metahub.py --output-modes json-short json-full html
```
**MetaHub** समान संसाधन को प्रभावित करने वाली सुरक्षा खोजों को `findings` कुंजी के अंतर्गत एक साथ व्यवस्थित करता है, ताकि Shadowing (जब दो जाँचें एक ही समस्या को संदर्भित करती हैं, लेकिन एक दूसरे की तुलना में अधिक सामान्य तरीके से) और Duplication (जब आप एक से अधिक स्कैनर का उपयोग करते हैं और एक से अधिक स्रोतों से एक ही समस्या प्राप्त करते हैं) से बचा जा सके। आप इस व्यवहार को `json-short`, `json-full` और `html` आउटपुट में स्पष्ट रूप से देख सकते हैं।

- [JSON](#json)
- [HTML](#html)
- [CSV](#csv)
- [XLSX](#xlsx)
- [SQLite](#sqlite)

## JSON

> :info: किसी JSON आउटपुट को इंटरैक्टिव रूप से एक्सप्लोर करने के लिए, आप [fx](https://github.com/antonmedv/fx) टूल का उपयोग कर सकते हैं।

### JSON-Full

यह प्रभावित संसाधन को उसके ARN का उपयोग करके कुंजी के रूप में दिखाता है और इसे प्रभावित करने वाली खोजों को `findings` कुंजी के अंतर्गत एक सूची के रूप में दिखाता है। खोजों के अतिरिक्त, आपको निम्नलिखित कुंजियाँ भी मिलेंगी: `ResourceType`, `Region`, `AwsAccountId`, `associations`, `config`, `tags`, `account`, `cloudtrail`, और `impact`।```json
"arn:aws:ec2:eu-west-1:1234567890:instance/i-0a40b2be25dbac0ac": {           --> The affected resource ARN
  "findings": [                                                              --> The findings affecting the resource
    {
      "EC2 instances should use Instance Metadata Service Version 2 (IMDSv2)": {   --> The finding title
        "SeverityLabel": "HIGH",                                                   --> The finding severity label
        "Workflow":{                                                               --> The finding workflow
          "Status": "NEW",
        },
        "RecordState": "ACTIVE",                                                   --> The finding record state
        "Compliance":{                                                             --> The finding compliance
          "Status": "FAILED",
        },
        "Id": "arn:aws:securityhub:eu-west-1:123456789012:security-control/EC2.8/finding/a1d4f19f-453e-4c3c-b486-8443c73e84f1",
        "ProductArn": "arn:aws:securityhub:eu-west-1::product/aws/securityhub",
      }
    },
    {"EC2 instances should be managed by AWS Systems Manager": {...}},        --> Another finding title
    {"EC2 instances should not have a public IPv4 address": {...}}          --> Another finding title
  ],
  "ResourceType": "AwsEc2Instance",                                         --> The affected resource type
  "Region": "eu-west-1",                                                    --> The affected resource region
  "AwsAccountId": "1234567890",                                             --> The affected resource account id
  "associations": {                                                         --> The associations of the affected resource
    "security_groups": {},                                                  --> The security groups associated with the affected resource
    "iam_roles": {},                                                        --> The IAM roles associated with the affected resource
    "volumes": {},                                                          --> The volumes associated with the affected resource
    "autoscaling_groups": {},                                               --> The autoscaling groups associated with the affected resource
    "vpcs": {},                                                             --> The VPCs associated with the affected resource
    "subnets": {},                                                          --> The subnets associated with the affected resource
  },
  "config": {                                                              --> The configuration of the affected resource (based on it's type)
    "public_ip": "200.200.200.200",                                       --> The public IP of the affected resource, if any
    "private_ip": "10.10.10.10",                                        --> The private IP of the affected resource, if any
    "key": "ssh-key",                                                  --> The key used for the affected resource, if any
    "metadata_options": {                                             --> The metadata options of the affected resource, if any
      "State": "applied",
      "HttpTokens": "required",
      "HttpPutResponseHopLimit": 1,
      "HttpEndpoint": "enabled",
      "HttpProtocolIpv6": "disabled",
      "InstanceMetadataTags": "disabled"
    },
  },
  "tags": {                                                            --> The tags of the affected resource
    "Name": "test",                                                  --> The tag key and value
    "Env": "prod",
    "awsApplication": "arn:aws:resource-groups:eu-west-1:1234567890:group/app1/0c8vpbjkzeeffsz2cqgxpae7b2"
  },
  "account": {                                                            --> The account of the affected resource
    "Alias": "prod",                                                --> The account alias
    "AlternateContact": {},                                        --> The alternate contact of the account, if any
    "Organizations": {                                            --> The organization of the account, if any
      "Id": "o-1234567890",
      "Arn": "arn:aws:organizations::1234567890:organization/o-1234567890/o-1234567890",
      "MasterAccountId": "1234567890",
      "MasterAccountArn": "arn:aws:organizations::1234567890:account/o-1234567890/1234567890",
      "MasterAccountEmail": "",
      "Details": {
        "ParentId": "p-k1234567890",
        "ParentType": "ROOT",
        "OU": "ROOT",
        "Policies": {                                           --> The policies of the account, if any
          "p-FullAWSAccess": {...}                              --> The policy name and policy
        }
      }
    },
  },
  "cloudtrail": {                                                     --> The CloudTrail events affecting the affected resource
    "RunInstances": {                                                --> The CloudTrail event name
      "Username": "test",                                            --> The username of the event, if any
      "EventTime": "2021-01-01T00:00:00Z",
      "EventId": "12345678-1234-1234-1234-123456789012",
    }
  },
  "impact": {                                                        --> The impact of the affected resource
    "exposure": {...},                                             --> The exposure impact
    "access": {...},                                              --> The access impact
    "encryption": {...},                                         --> The encryption impact
    "status": {...},                                            --> The status impact
    "environment": {...},                                      --> The environment impact
    "application": {...},                                     --> The application impact
    "owner": {...},                                          --> The owner impact
    "findings": {...},                                      --> The findings impact
    "score": {...}                                         --> The total impact score
  }
}
```
### JSON-Short

प्रभावित संसाधन को इसके ARN को कुंजी के रूप में उपयोग करते हुए और इसे प्रभावित करने वाले निष्कर्षों को `findings` कुंजी के अंतर्गत एक सूची के रूप में दिखाता है। निष्कर्षों के अतिरिक्त, आपको निम्नलिखित कुंजियाँ भी प्राप्त होंगी: `ResourceType`, `Region`, `AwsAccountId`, `associations`, `config`, `tags`, `account`, `cloudtrail`, और `impact`।```json
"arn:aws:ec2:eu-west-1:1234567890:instance/i-0a40b2be25dbac0ac": {           --> The affected resource ARN
  "findings": [                                                              --> The findings affecting the resource
    "EC2 instances should use Instance Metadata Service Version 2 (IMDSv2)", --> The finding title
    "EC2 instances should be managed by AWS Systems Manager",                --> The finding title
    "EC2 instances should not have a public IPv4 address"                    --> The finding title
  ],
  "ResourceType": "AwsEc2Instance",                                         --> The affected resource type
  "Region": "eu-west-1",                                                    --> The affected resource region
  "AwsAccountId": "1234567890",                                             --> The affected resource account id
  "associations": {                                                         --> The associations of the affected resource
    "security_groups": {},                                                  --> The security groups associated with the affected resource
    "iam_roles": {},                                                        --> The IAM roles associated with the affected resource
    "volumes": {},                                                          --> The volumes associated with the affected resource
    "autoscaling_groups": {},                                               --> The autoscaling groups associated with the affected resource
    "vpcs": {},                                                             --> The VPCs associated with the affected resource
    "subnets": {},                                                          --> The subnets associated with the affected resource
  },
  "config": {                                                              --> The configuration of the affected resource (based on it's type)
    "public_ip": "200.200.200.200",                                       --> The public IP of the affected resource, if any
    "private_ip": "10.10.10.10",                                        --> The private IP of the affected resource, if any
    "key": "ssh-key",                                                  --> The key used for the affected resource, if any
    "metadata_options": {                                             --> The metadata options of the affected resource, if any
      "State": "applied",
      "HttpTokens": "required",
      "HttpPutResponseHopLimit": 1,
      "HttpEndpoint": "enabled",
      "HttpProtocolIpv6": "disabled",
      "InstanceMetadataTags": "disabled"
    },
  },
  "tags": {                                                            --> The tags of the affected resource
    "Name": "test",                                                  --> The tag key and value
    "Env": "prod",
    "awsApplication": "arn:aws:resource-groups:eu-west-1:1234567890:group/app1/0c8vpbjkzeeffsz2cqgxpae7b2"
  },
  "account": {                                                            --> The account of the affected resource
    "Alias": "prod",                                                --> The account alias
    "AlternateContact": {},                                        --> The alternate contact of the account, if any
    "Organizations": {                                            --> The organization of the account, if any
      "Id": "o-1234567890",
      "Arn": "arn:aws:organizations::1234567890:organization/o-1234567890/o-1234567890",
      "MasterAccountId": "1234567890",
      "MasterAccountArn": "arn:aws:organizations::1234567890:account/o-1234567890/1234567890",
      "MasterAccountEmail": "",
      "Details": {
        "ParentId": "p-k1234567890",
        "ParentType": "ROOT",
        "OU": "ROOT",
        "Policies": {                                           --> The policies of the account, if any
          "p-FullAWSAccess": {...}                              --> The policy name and policy
        }
      }
    },
  },
  "cloudtrail": {                                                     --> The CloudTrail events affecting the affected resource
    "RunInstances": {                                                --> The CloudTrail event name
      "Username": "test",                                            --> The username of the event, if any
      "EventTime": "2021-01-01T00:00:00Z",
      "EventId": "12345678-1234-1234-1234-123456789012",
    }
  },
  "impact": {                                                        --> The impact of the affected resource
    "exposure": {...},                                             --> The exposure impact
    "access": {...},                                              --> The access impact
    "encryption": {...},                                         --> The encryption impact
    "status": {...},                                            --> The status impact
    "environment": {...},                                      --> The environment impact
    "application": {...},                                     --> The application impact
    "owner": {...},                                          --> The owner impact
    "findings": {...},                                      --> The findings impact
    "score": {...}                                         --> The total impact score
  }
}
```
### JSON-Inventory

सभी संसाधनों की उनके ARN के साथ एक सूची दिखाएं।```json
[
  "arn:aws:sagemaker:us-east-1:ofuscated:notebook-instance/obfuscated",
  "arn:aws:sagemaker:eu-west-1:ofuscated:notebook-instance/obfuscated"
]
```
### JSON-Statistics

प्रत्येक फ़ील्ड/मान के लिए सांख्यिकी दिखाएँ। आउटपुट में, आप प्रत्येक फ़ील्ड/मान और उसकी घटनाओं की संख्या देखेंगे; उदाहरण के लिए, निम्नलिखित आउटपुट छह निष्कर्षों के लिए सांख्यिकी दिखाता है।```json
{
  "Title": {
    "SageMaker.1 Amazon SageMaker notebook instances should not have direct internet access": 2,
    "SageMaker.2 SageMaker notebook instances should be launched in a custom VPC": 2,
    "SageMaker.3 Users should not have root access to SageMaker notebook instances": 2
  },
  "SeverityLabel": {
    "HIGH": 6
  },
  "Workflow": {
    "NEW": 6
  },
  "RecordState": {
    "ACTIVE": 6
  },
  "Compliance": {
    "FAILED": 6
  },
  "ProductArn": {
    "arn:aws:security hub:eu-west-1::product/aws/security hub": 3,
    "arn:aws:security hub:us-east-1::product/aws/security hub": 3
  },
  "ResourceType": {
    "AwsSageMakerNotebookInstance": 6
  },
  "AwsAccountId": {
    "obfuscated": 6
  },
  "Region": {
    "eu-west-1": 3,
    "us-east-1": 3
  },
  "ResourceId": {
    "arn:aws:sagemaker:eu-west-1:ofuscated:notebook-instance/obfuscated": 3,
    "arn:aws:sagemaker:us-east-1:ofuscated:notebook-instance/obfuscated": 3
  }
}
```
## HTML

आप अपने निष्कर्षों के समृद्ध HTML रिपोर्ट बना सकते हैं, उनमें अपने संदर्भ को शामिल करते हुए।

HTML रिपोर्ट कई तरीकों से इंटरैक्टिव होती हैं:

- आप कॉलम जोड़/हटा सकते हैं।
- आप किसी भी कॉलम द्वारा सॉर्ट और फ़िल्टर कर सकते हैं।
- आप किसी भी कॉलम द्वारा ऑटो-फ़िल्टर कर सकते हैं
- आप निष्कर्षों को समूहित/असमूहित कर सकते हैं
- आप उस डेटा को xlsx, CSV, HTML और JSON में डाउनलोड भी कर सकते हैं।

<p align="center">
  <img src="https://assets.kitploit.com/production/public/readmes/6190/21d785d2413698ed7cb3e9dc7e9b51dc6550395a598d777abc9fc358f8a23573.png" alt="html-example"/>
</p>

## CSV

आप अपने निष्कर्षों के CSV रिपोर्ट बना सकते हैं, उनमें अपने संदर्भ को शामिल करते हुए।

<p align="center">
  <img src="https://assets.kitploit.com/production/public/readmes/6190/66f15350123702e1cc317e47938401853bdcb1d86dad0ad4e48e73f15e00dd76.png" alt="csv-example"/>
</p>

## XLSX

CSV के समान लेकिन अधिक फ़ॉर्मेटिंग विकल्पों के साथ।

<p align="center">
  <img src="https://assets.kitploit.com/production/public/readmes/6190/953a77917dc5b06e5185e6cb882ba7e711d785861e184599f10cd472efc42db9.png" alt="xlsx-example"/>
</p>

## Customize HTML, CSV or XLSX outputs

आप अपने HTML, CSV और XLSX आउटपुट के लिए कॉलम के रूप में अनरोल करने के लिए कौन से Context कुंजी का चयन कर सकते हैं `--output-tag-columns` और `--output-config-columns` (कॉलम की सूची के रूप में) विकल्पों का उपयोग करके। यदि आपके द्वारा निर्दिष्ट कुंजियाँ प्रभावित संसाधन के लिए मौजूद नहीं हैं, तो वे खाली होंगी। आप कॉन्फ़िगरेशन फ़ाइल में डिफ़ॉल्ट रूप से इन कॉलम को भी कॉन्फ़िगर कर सकते हैं (देखें [Customizing Configuration](#customizing-configuration))।

उदाहरण के लिए, आप टैग के साथ एक HTML आउटपुट उत्पन्न कर सकते हैं और अपनी रिपोर्ट में "Owner" और "Environment" को कॉलम के रूप में जोड़ सकते हैं, का उपयोग करके:```sh
./metahub --output-modes html --output-tag-columns Owner Environment
```
## SQLite

**MetaHub** findings और context को SQLite डेटाबेस में सहेज सकता है। इस डेटाबेस का उपयोग आगे के विश्लेषण, रिपोर्टिंग और [Powerpipe](https://powerpipe.io/) जैसे अन्य टूल्स के साथ एकीकरण के लिए किया जा सकता है। डेटाबेस को `outputs/` फ़ोल्डर में निष्पादन तिथि और `.db` एक्सटेंशन के साथ सहेजा जाएगा।

### Powerpipe के साथ इसका उपयोग करें

आप MetaHub द्वारा उत्पन्न SQLite डेटाबेस का उपयोग [Powerpipe](https://powerpipe.io/) के साथ कर सकते हैं। आप MetaHub PowerPipe mod को `powerpipe/` फ़ोल्डर के अंतर्गत पा सकते हैं।

<img src="https://assets.kitploit.com/production/public/readmes/6190/9ee9c6f08948a38bac235975a455496d180a5cb3394381cd8fa99e175a4e69f5.png"/>
<img src="https://assets.kitploit.com/production/public/readmes/6190/598d869e69ec7bd4d1536ffec7e75ddd1936149ece8392802847480b6f48ed9b.png"/>

इसका उपयोग करने के लिए, आपके सिस्टम में Powerpipe [स्थापित](https://powerpipe.io/downloads) होना चाहिए।

एक बार स्थापित होने के बाद, आप निम्नलिखित कमांड चला सकते हैं:

``````sh
powerpipe server --database sqlite:../outputs/metahub-20240331-182942.db
```
### अपने स्वयं के डैशबोर्ड बनाएं

Powerpipe के साथ डैशबोर्ड बनाना बहुत आसान और शक्तिशाली है। अधिक जानकारी के लिए आप [Powerpipe दस्तावेज़ीकरण](https://powerpipe.io/docs) देख सकते हैं।

नीचे आपको SQLite डेटाबेस में उपलब्ध तालिकाएँ मिलेंगी।

#### Resources

| Column Name                     | Data Type | Description                                                                                    |
| ------------------------------- | --------- | ---------------------------------------------------------------------------------------------- |
| resource_arn                    | VARCHAR   | संसाधन का Amazon Resource Name (ARN), जो प्राथमिक कुंजी के रूप में कार्य करता है।                    |
| resource_type                   | VARCHAR   | संसाधन का प्रकार।                                                                      |
| resource_region                 | VARCHAR   | वह क्षेत्र जिसमें संसाधन स्थित है।                                                         |
| resource_account_id             | VARCHAR   | संसाधन से जुड़ा खाता ID। विदेशी कुंजी जो accounts(account_id) को संदर्भित करती है। |
| resource_account_alias          | VARCHAR   | संसाधन से जुड़े खाते का उपनाम।                                         |
| resource_tags                   | TEXT      | संसाधन से जुड़े टैग।                                                             |
| resource_exposure               | VARCHAR   | संसाधन का एक्सपोज़र स्तर।                                                            |
| resource_access                 | VARCHAR   | संसाधन का एक्सेस स्तर।                                                              |
| resource_encryption             | VARCHAR   | संसाधन की एन्क्रिप्शन स्थिति।                                                         |
| resource_status                 | VARCHAR   | संसाधन की वर्तमान स्थिति।                                                            |
| resource_application            | VARCHAR   | संसाधन से जुड़ा एप्लिकेशन।                                                  |
| resource_environment            | VARCHAR   | वह वातावरण (जैसे, उत्पादन, स्टेजिंग) जिसमें संसाधन है।                                |
| resource_owner                  | VARCHAR   | संसाधन का स्वामी।                                                                     |
| resource_score                  | INTEGER   | संसाधन से जुड़ा एक स्कोर।                                                          |
| resource_findings_score         | INTEGER   | संसाधन से जुड़े निष्कर्षों पर आधारित एक स्कोर।                                        |
| resource_findings_critical      | INTEGER   | महत्वपूर्ण निष्कर्षों की संख्या।                                                               |
| resource_findings_high          | INTEGER   | उच्च गंभीरता वाले निष्कर्षों की संख्या।                                                          |
| resource_findings_medium        | INTEGER   | मध्यम गंभीरता वाले निष्कर्षों की संख्या।                                                        |
| resource_findings_low           | INTEGER   | निम्न गंभीरता वाले निष्कर्षों की संख्या।                                                           |
| resource_findings_informational | INTEGER   | सूचनात्मक निष्कर्षों की संख्या।                                                          |

#### Findings

| Column Name              | Data Type | Description                                                        |
| ------------------------ | --------- | ------------------------------------------------------------------ |
| finding_id               | VARCHAR   | निष्कर्ष के लिए अद्वितीय पहचानकर्ता, जो प्राथमिक कुंजी के रूप में कार्य करता है। |
| finding_title            | VARCHAR   | निष्कर्ष का शीर्षक।                                          |
| finding_severity         | VARCHAR   | निष्कर्ष की गंभीरता।                                       |
| finding_workflowstatus   | VARCHAR   | निष्कर्ष की कार्यप्रवाह स्थिति।                                |
| finding_recordstate      | VARCHAR   | निष्कर्ष की रिकॉर्ड स्थिति।                                  |
| finding_compliancestatus | VARCHAR   | निष्कर्ष की अनुपालन स्थिति।                              |
| finding_productarn       | VARCHAR   | निष्कर्ष उत्पन्न करने वाले उत्पाद का ARN।                     |
| finding_resource_arn     | VARCHAR   | संबद्ध संसाधन का ARN।                                |

#### Accounts

| Column Name                     | Data Type | Description                                                                   |
| ------------------------------- | --------- | ----------------------------------------------------------------------------- |
| account_id                      | INTEGER   | खाते के लिए अद्वितीय पहचानकर्ता, जो प्राथमिक कुंजी के रूप में कार्य करता है।            |
| account_alias                   | VARCHAR   | खाते का उपनाम।                                                     |
| account_organizations_id        | VARCHAR   | वह संगठन का ID जिससे खाता संबंधित है।                            |
| account_organizations_arn       | VARCHAR   | वह संगठन का ARN जिससे खाता संबंधित है।                           |
| account_master_account_id       | VARCHAR   | मास्टर खाते का ID, यदि यह खाता AWS Organization का हिस्सा है। |
| account_master_account_email    | VARCHAR   | मास्टर खाते से जुड़ा ईमेल पता।                         |
| account_alternate_contact_type  | VARCHAR   | वैकल्पिक संपर्क का प्रकार (जैसे, बिलिंग, सुरक्षा)।                      |
| account_alternate_contact_name  | VARCHAR   | वैकल्पिक संपर्क का नाम।                                            |
| account_alternate_contact_email | VARCHAR   | वैकल्पिक संपर्क का ईमेल पता।                                   |
| account_alternate_contact_phone | VARCHAR   | वैकल्पिक संपर्क का फ़ोन नंबर।                                    |
| account_alternate_contact_title | VARCHAR   | वैकल्पिक संपर्क का पदनाम।                                    |

# फ़िल्टर

आप अपने स्रोत से प्राप्त सुरक्षा निष्कर्षों और संसाधनों को विभिन्न तरीकों से फ़िल्टर कर सकते हैं और ठीक वही पाने के लिए सभी को जोड़ सकते हैं जो आप खोज रहे हैं, फिर उन फ़िल्टर का पुन: उपयोग करके ऑटोमेशन, अलर्ट, रिपोर्ट और अधिक बना सकते हैं।

- [Security Hub फ़िल्टरिंग](#security-hub-filtering)
- [YAML टेम्पलेट का उपयोग करके Security Hub फ़िल्टरिंग](#security-hub-filtering-using-yaml-templates)
- [Config फ़िल्टर](#config-filters)
- [Tags फ़िल्टर](#tags-filters)
- [Impact फ़िल्टर](#impact-filters)

## Security Hub फ़िल्टरिंग

MetaHub, AWS Security Hub निष्कर्षों को `KEY=VALUE` फ़िल्टरिंग के रूप में फ़िल्टर करने का समर्थन करता है, जिसका उपयोग `--sh-filters` विकल्प के साथ किया जाता है, उसी तरह जैसे आप AWS CLI का उपयोग करके फ़िल्टर करेंगे लेकिन `EQUALS` तुलना तक सीमित। यदि आप कोई अन्य तुलना चाहते हैं, तो विकल्प `--sh-template` [YAML टेम्पलेट का उपयोग करके Security Hub फ़िल्टरिंग](#security-hub-filtering-using-yaml-templates) का उपयोग करें।

आप [AWS दस्तावेज़ीकरण](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/securityhub.html#SecurityHub.Client.get_findings) में उपलब्ध फ़िल्टर देख सकते हैं।```sh
./metahub --sh-filters <KEY=VALUE>
```
यदि आप कोई फ़िल्टर निर्दिष्ट नहीं करते हैं, तो डिफ़ॉल्ट फ़िल्टर लागू होते हैं: `RecordState=ACTIVE WorkflowStatus=NEW`

इस विकल्प का उपयोग करके फ़िल्टर पास करने से डिफ़ॉल्ट फ़िल्टर रीसेट हो जाते हैं। यदि आप डिफ़ॉल्ट में फ़िल्टर जोड़ना चाहते हैं, तो आपको उन्हें डिफ़ॉल्ट फ़िल्टर के अतिरिक्त निर्दिष्ट करना होगा। उदाहरण के लिए, डिफ़ॉल्ट फ़िल्टर में SeverityLabel जोड़ना:```sh
./metahub --sh-filters RecordState=ACTIVE WorkflowStatus=NEW
```
यदि किसी मान में स्पेस हैं, तो आपको इसे डबल कोट्स का उपयोग करके निर्दिष्ट करना चाहिए: `"ProductName="Security Hub"`

आप अपनी क्वेरी में आवश्यकतानुसार कितने भी अलग-अलग फ़िल्टर जोड़ सकते हैं और विभिन्न मानों के साथ एक ही फ़िल्टर कुंजी भी जोड़ सकते हैं:

उदाहरण:

- गंभीरता के अनुसार फ़िल्टर करें (CRITICAL):```sh
./metaHub --sh-filters RecordState=ACTIVE WorkflowStatus=NEW SeverityLabel=CRITICAL
```
- गंभीरता के अनुसार फ़िल्टर करें (CRITICAL और HIGH):```sh
./metaHub --sh-filters RecordState=ACTIVE WorkflowStatus=NEW SeverityLabel=CRITICAL SeverityLabel=HIGH
```
- गंभीरता और AWS Account के अनुसार फ़िल्टर करें:```sh
./metaHub --sh-filters RecordState=ACTIVE WorkflowStatus=NEW SeverityLabel=CRITICAL AwsAccountId=1234567890
```
- जांच शीर्षक द्वारा फ़िल्टर करें```sh
./metahub --sh-filters RecordState=ACTIVE WorkflowStatus=NEW Title="EC2.22 Unused EC2 security groups should be removed"
```
- AWS संसाधन प्रकार द्वारा फ़िल्टर करें:```sh
./metahub --sh-filters RecordState=ACTIVE WorkflowStatus=NEW ResourceType=AwsEc2SecurityGroup
```
- संसाधन आईडी द्वारा फ़िल्टर करें:```sh
./metahub --sh-filters RecordState=ACTIVE WorkflowStatus=NEW ResourceId="arn:aws:ec2:eu-west-1:01234567890:security-group/sg-01234567890"
```
- Finding Id के अनुसार फ़िल्टर करें:```sh
./metahub --sh-filters Id="arn:aws:security hub:eu-west-1:01234567890:subscription/aws-foundational-security-best-practices/v/1.0.0/EC2.19/finding/01234567890-1234-1234-1234-01234567890"
```
- अनुपालन स्थिति के अनुसार फ़िल्टर करें:```sh
./metahub --sh-filters ComplianceStatus=FAILED
```
## YAML टेम्पलेट्स का उपयोग करके सुरक्षा हब फ़िल्टरिंग

**MetaHub** आपको YAML फ़ाइलों (टेम्पलेट्स) का उपयोग करके जटिल फ़िल्टर बनाने की सुविधा देता है, जिन्हें आप आवश्यकता पड़ने पर पुनः उपयोग कर सकते हैं। YAML टेम्पलेट्स आपको AWS Security Hub द्वारा समर्थित किसी भी तुलना का उपयोग करके फ़िल्टर लिखने देते हैं, जैसे "EQUALS' | 'PREFIX' | 'NOT_EQUALS' | 'PREFIX_NOT_EQUALS"। आप अपनी YAML फ़ाइल को `--sh-template <<FILE>>` विकल्प का उपयोग करके कॉल कर सकते हैं।

आप फ़ोल्डर [templates](https://github.com/gabrielsoltz/metahub/blob/HEAD/templates) के अंतर्गत उदाहरण पा सकते हैं।

- YAML टेम्पलेट default.yml का उपयोग करके फ़िल्टर:```sh
./metaHub --sh-template templates/default.yml
```
## कॉन्फिग फ़िल्टर

**MetaHub** `KEY=VALUE` का उपयोग करके **कॉन्फिग फ़िल्टर** (और संबद्धताएं) का समर्थन करता है, जहां मान केवल `True` या `False` हो सकता है, विकल्प `--mh-filters-config` का उपयोग करके। आप जितने चाहें उतने फ़िल्टर का उपयोग कर सकते हैं और उन्हें रिक्त स्थान से अलग कर सकते हैं। यदि आप एक से अधिक फ़िल्टर निर्दिष्ट करते हैं, तो आपको वे सभी संसाधन मिलेंगे जो **सभी** फ़िल्टर से मेल खाते हैं।

कॉन्फिग फ़िल्टर केवल `True` या `False` मानों का समर्थन करते हैं:

- **True** पर सेट कॉन्फिग फ़िल्टर का अर्थ है `True` या डेटा के साथ।
- **False** पर सेट कॉन्फिग फ़िल्टर का अर्थ है `False` या बिना डेटा के।

कॉन्फिग फ़िल्टर AWS सुरक्षा हब फ़िल्टर के बाद चलते हैं:

1. MetaHub आपके द्वारा `--sh-filters` (या डिफ़ॉल्ट वाले) का उपयोग करके निर्दिष्ट फ़िल्टर के आधार पर AWS सुरक्षा निष्कर्षों को प्राप्त करता है।
2. MetaHub पिछले निष्कर्षों की सूची के आधार पर AWS-प्रभावित संसाधनों के लिए संदर्भ निष्पादित करता है।
3. MetaHub केवल उन संसाधनों को दिखाता है जो आपके `--mh-filters-config` से मेल खाते हैं, इसलिए यह बिंदु 1 के संसाधनों का एक उपसमूह है।

उदाहरण:

---

[Read more](https://github.com/gabrielsoltz/metahub)
टूल डाउनलोड करें
संभावित स्थितियाँमानविवरण
🔴 effectively-public100%संसाधन इंटरनेट से प्रभावी रूप से सार्वजनिक है।
🟠 restricted-public40%संसाधन सार्वजनिक है, लेकिन सुरक्षा समूह जैसी कोई प्रतिबंध है।
🟠 unrestricted-private30%संसाधन निजी लेकिन अप्रतिबंधित है, जैसे खुला सुरक्षा समूह।
🟠 launch-public10%ये ऐसे संसाधन हैं जो अन्य संसाधनों को सार्वजनिक रूप से लॉन्च कर सकते हैं। उदाहरण के लिए, एक ऑटो स्केलिंग समूह या एक सबनेट।
🟢 restricted0%संसाधन प्रतिबंधित है।
🔵 unknown-संसाधन की जाँच नहीं की जा सकी
संभावित स्थितियाँमानविवरण
🔴 अप्रतिबंधित100%प्रिंसिपल बिना किसी शर्त या प्रतिबंध के, अप्रतिबंधित है।
🔴 अविश्वसनीय-प्रिंसिपल70%प्रिंसिपल एक AWS खाता है, जो आपके विश्वसनीय खातों का हिस्सा नहीं है।
🟠 अप्रतिबंधित-प्रिंसिपल40%प्रिंसिपल प्रतिबंधित नहीं है, वाइल्डकार्ड के साथ परिभाषित है। इसे प्रतिबंधित करने वाली शर्तें या s3 सार्वजनिक ब्लॉक जैसी अन्य प्रतिबंध हो सकते हैं।
🟠 क्रॉस-खाता-प्रिंसिपल30%प्रिंसिपल किसी अन्य AWS खाते से है।
🟠 अप्रतिबंधित-क्रियाएँ30%क्रियाएँ वाइल्डकार्ड का उपयोग करके परिभाषित की गई हैं।
🟠 खतरनाक-क्रियाएँ30%इस नीति के भाग के रूप में कुछ खतरनाक क्रियाएँ परिभाषित की गई हैं।
🟠 अप्रतिबंधित-सेवा10%नीति बिना प्रतिबंध के एक AWS सेवा को प्रिंसिपल के रूप में अनुमति देती है।
🟢 प्रतिबंधित0%नीति प्रतिबंधित है।
🔵 अज्ञात-नीति की जाँच नहीं की जा सकी।
विवरण
🔴 अनएन्क्रिप्टेड100%संसाधन पूरी तरह से एन्क्रिप्टेड नहीं है।
🟢 एन्क्रिप्टेड0%संसाधन अपने सभी संबंधों सहित पूरी तरह से एन्क्रिप्टेड है।
🔵 अज्ञात-संसाधन के एन्क्रिप्शन की जाँच नहीं की जा सकी।
संभावित स्थितियाँमानविवरण
🟠 संलग्न100%संसाधन अनुलग्नक का समर्थन करता है और संलग्न है।
🟠 चल रहा है100%संसाधन चलने का समर्थन करता है और चल रहा है।
🟠 सक्षम100%संसाधन सक्षम होने का समर्थन करता है और सक्षम है।
🟢 संलग्न नहीं0%संसाधन अनुलग्नक का समर्थन करता है और संलग्न नहीं है।
🟢 चल नहीं रहा है0%संसाधन चलने का समर्थन करता है और चल नहीं रहा है।
🟢 सक्षम नहीं0%संसाधन सक्षम होने का समर्थन करता है और सक्षम नहीं है।
🔵 अज्ञात-संसाधन की स्थिति की जाँच नहीं की जा सकी।
संभावित स्थितियाँमूल्यविवरण
🟠 उत्पादन100%यह एक उत्पादन संसाधन है।
🟢 स्टेजिंग30%यह एक स्टेजिंग संसाधन है।
🟢 विकास0%यह एक विकास संसाधन है।
🔵 अज्ञात-संसाधन के लिए वातावरण की जाँच नहीं की जा सकी।