
أداة مسح أمني لـ AWS تعمل من خلال الطرفية، وتحتوي على أكثر من 102 فحصًا أمنيًا عبر VPC و IAM و S3 و CloudTrail والحاويات (ECS/EKS) وكشف الهجمات بالذكاء الاصطناعي. تكتشف أذونات IAM الخطيرة، الأسرار المكشوفة، دلاء S3 غير المهيأة بشكل آمن، ثغرات الحاويات، والتهديدات الناشئة من هجمات LLMjacking.
ماسح أمان AWS يعمل في الطرفية مع أكثر من 100 فحص أمني عبر VPC وIAM وS3 وCloudTrail والحاويات (ECS/EKS) واكتشاف هجمات الذكاء الاصطناعي. يكتشف أذونات IAM الخطيرة، الأسرار المكشوفة، حاويات S3 غير المهيأة بشكل صحيح، ثغرات الحاويات، وتهديدات LLMjacking الناشئة.
نظرة عامة على المنتج: docs/CAPABILITIES_OVERVIEW.md
*:*).env، .git، بيانات الاعتماد)بناءً على معلومات تهديدات فبراير 2025: خرق AWS في 8 دقائق
| الفئة | العدد |
|---|---|
| الأساسية (IAM, VPC, S3, CloudTrail, أسرار) |
# macOS
brew install awscli
# Linux
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip && sudo ./aws/install
aws configure
# أو استخدام ملفات تعريف مسماة
aws configure --profile myprofile
يجب أن تحتوي بيانات اعتماد AWS الخاصة بك على وصول للقراءة فقط إلى الخدمات التي يتم فحصها. تعمل السياسة المدارة ReadOnlyAccess من AWS، أو راجع الأذونات المطلوبة أدناه.
ملاحظة: يقوم aws-perimeter فقط بعمليات قراءة ولا يقوم أبداً بتعديل موارد AWS الخاصة بك.
curl -sSfL https://raw.githubusercontent.com/thirukguru/aws-perimeter/main/install.sh | sh
go install github.com/thirukguru/aws-perimeter@latest
aws-perimeter # تشغيل فحص أمني كامل
aws-perimeter --output json # إخراج بصيغة JSON
aws-perimeter --profile prod # ملف تعريف AWS محدد
aws-perimeter --region us-west-2 # منطقة محددة
aws-perimeter --regions us-east-1,us-west-2 # فحص متعدد المناطق
aws-perimeter --regions us-east-1,us-west-2 --max-parallel 4 # فحص متعدد المناطق مع تحكم في التزامن
aws-perimeter --regions us-east-1,us-west-2 --max-parallel 4 --best-effort # خروج بنجاح إذا نجحت منطقة واحدة على الأقل
aws-perimeter --rules # طباعة RULES.md إلى stdout (Markdown)
aws-perimeter --capabilities # طباعة نظرة عامة على الإمكانيات إلى stdout (Markdown)
aws-perimeter --all-regions # فحص جميع المناطق المفعلة
aws-perimeter --org-scan --org-role-name OrganizationAccountAccessRole # فحص مؤسسة متعدد الحسابات
aws-perimeter --org-scan --max-parallel 5 # تزامن المناطق والحسابات
aws-perimeter --output html --output-file report.html # إنشاء تقرير HTML
aws-perimeter --store --profile prod --region us-west-2 # تشغيل + حفظ الفحص
aws-perimeter --trends --trend-days 30 --account-id 123456789012 # عرض جدول الاتجاهات التاريخي
aws-perimeter history list --db-path ~/.aws-perimeter/history.db
aws-perimeter dashboard --port 8080
بالنسبة لأوضاع التوزيع (--regions، --all-regions، --org-scan) مع --output html --output-file ...، يكتب aws-perimeter تقريراً واحداً لكل وحدة فحص مع لاحقات المنطقة/الحساب والطابع الزمني (مثل security-report-us-east-1-20260210-213045.html أو security-report-123456789012-us-east-1-20260210-213045.html).
في وضع HTML، يتم إخفاء إخراج الجدول في الطرفية وطباعة أسطر ملخص موجزة فقط.
عند استخدام --output json، يصدر aws-perimeter مستند JSON واحداً صحيحاً بدون ضوضاء لافتة/رسوم متحركة، لذا فهو آمن لخطوط الأنابيب.
aws-perimeter --profile prod --region us-west-2 --output json | jq .
# JSON متعدد المناطق يصدر مستند JSON واحد مجمع على المستوى الأعلى:
aws-perimeter --profile prod --regions us-east-1,us-west-2 --output json | jq .
# تصدير الوثائق عبر إعادة توجيه stdout
aws-perimeter --rules > rules.md
aws-perimeter --capabilities > capabilities.md
يتضمن حمولة JSON متعدد المناطق:
summary (total_regions, success, failed, skipped)results (حمولات فحص مجمعة لكل منطقة)failures (تفاصيل المنطقة والخطأ عند فشل فحص المنطقة)بالنسبة للمسح متعدد المناطق ومسح المؤسسة في أوضاع الإخراج غير JSON، يطبع aws-perimeter ملخصاً مجمعاً في نهاية التنفيذ:
account_id، account_name، region، status، duration، و error.TOTAL, SUCCESS, FAILED, SKIPPED).--max-parallel و --best-effort--max-parallel في عدد وحدات فحص المنطقة/الحساب التي تعمل بالتزامن في أوضاع التوزيع (--regions، --all-regions، --org-scan).--max-parallel 3 أو --max-parallel 4.--best-effort على عمليات الفحص متعددة المناطق: يخرج الأمر بنجاح (0) عندما تنجح منطقة واحدة على الأقل، حتى لو فشلت بعض المناطق.--best-effort، أي منطقة فاشلة ترجع رمز خروج غير صفري.failures مع الخطأ الدقيق.الأذونات التالية مطلوبة لتغطية الميزات الكاملة (بما في ذلك الفحص متعدد المناطق وفحص المؤسسة):
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"sts:GetCallerIdentity",
"sts:AssumeRole",
"organizations:DescribeOrganization",
"organizations:ListAccounts",
"ec2:Describe*",
"ec2:GetEbsEncryptionByDefault",
"iam:List*",
"iam:Get*",
"iam:GenerateCredentialReport",
"s3:ListAllMyBuckets",
"s3:GetBucket*",
"s3:GetEncryptionConfiguration",
"cloudtrail:DescribeTrails",
"cloudtrail:GetTrailStatus",
"cloudtrail:LookupEvents",
"lambda:ListFunctions",
"lambda:GetFunctionConfiguration",
"lambda:GetFunction",
"ecr:DescribeRepositories",
"ecr:DescribeImages",
"ecr:BatchGetImage",
"ecr:GetDownloadUrlForLayer",
"ecs:ListClusters",
"ecs:DescribeClusters",
"ecs:ListServices",
"ecs:DescribeServices",
"ecs:DescribeTaskDefinition",
"eks:ListClusters",
"eks:DescribeCluster",
"eks:ListNodegroups",
"eks:DescribeNodegroup",
"bedrock:ListProvisionedModelThroughputs",
"bedrock:ListCustomModels",
"bedrock:GetModelInvocationLoggingConfiguration",
"guardduty:ListDetectors",
"guardduty:GetDetector",
"guardduty:ListFindings",
"guardduty:GetFindings",
"securityhub:DescribeHub",
"securityhub:GetFindings",
"config:Describe*",
"kms:ListKeys",
"kms:DescribeKey",
"kms:GetKeyRotationStatus",
"kms:Decrypt",
"rds:DescribeDB*",
"dynamodb:ListTables",
"dynamodb:DescribeTable",
"dynamodb:DescribeContinuousBackups",
"secretsmanager:ListSecrets",
"elasticloadbalancing:Describe*",
"backup:List*",
"apigateway:GET",
"cloudfront:List*",
"cloudfront:Get*",
"cloudwatch:GetMetricStatistics",
"sns:ListTopics",
"sqs:ListQueues"
],
"Resource": "*"
}
]
}
kms:Decrypt مطلوب فقط عند فحص الكائنات/الحزم المشفرة (مثل قراءة كائنات S3 بتشفير SSE-KMS). قم بتحديد نطاقه لمفاتيح KMS المطلوبة في الإنتاج.
بالنسبة لـ --org-scan، يجب السماح للمدير الأساسي بافتراض دور حساب عضو (الافتراضي: OrganizationAccountAccessRole)، على سبيل المثال:
{
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Resource": "arn:aws:iam::*:role/OrganizationAccountAccessRole"
}
يجب أن تسمح سياسة الثقة لدور حساب العضو أيضاً للمستخدم/الدور الماسح الخاص بك بافتراضه (ويجب تضمين شرط sts:ExternalId إذا كنت تستخدم --external-id).
نصيحة: للبدء السريع، قم بإرفاق السياسة المدارة
arn:aws:iam::aws:policy/ReadOnlyAccessمن AWS لمستخدم/دور IAM الخاص بك.
Apache License 2.0
| 38 |
| الموسعة (Lambda, ELB, Route53, Inspector، إلخ) | 35 |
| أمان الحاويات (ECS + EKS) | 22 |
| كشف هجمات الذكاء الاصطناعي | 7 |
| المجموع | 102 |
| الفحص | الخطورة | الوصف |
|---|
| تصعيد الامتيازات | 🔴 حرج | يمكن للمستخدم التصعيد إلى مسؤول |
| وصول إداري (:) | 🔴 حرج | وصول كامل إلى AWS |
| أسرار مكشوفة | 🔴 حرج | مفاتيح API/رموز في Lambda/EC2 |
| حاوية S3 عامة | 🔴 حرج | الحاوية متاحة للعموم |
| لا يوجد CloudTrail | 🔴 حرج | لا يوجد تسجيل تدقيق |
| SSH/RDP مفتوح | 🔴 حرج | المنفذ 22/3389 مفتوح للإنترنت |
| حاوية ذات صلاحيات مرتفعة | 🔴 حرج | حاوية ECS مع وصول جذر |
| GPU IMDSv1 | 🔴 حرج | بيانات اعتماد مثيل GPU معرضة للخطر |
| ثقة عبر الحسابات | 🟠 عالٍ | يمكن لحساب خارجي افتراض الدور |
| نقطة نهاية EKS عامة | 🟠 عالٍ | واجهة Kubernetes API متاحة للعموم |
| Bedrock بدون تسجيل | 🟠 عالٍ | استخدام نموذج AI غير مدقق |
| العلامة | الاختصار | الوصف |
|---|
--profile | -p | ملف تعريف AWS لاستخدامه |
--region | -r | منطقة AWS |
--regions | مناطق مفصولة بفواصل | |
--all-regions | فحص جميع المناطق المفعلة | |
--org-scan | فحص جميع حسابات مؤسسة AWS النشطة | |
--org-role-name | اسم دور IAM لافتراضه في حسابات الأعضاء | |
--external-id | المعرف الخارجي لدور افتراض عبر الحسابات | |
--output | -o | تنسيق الإخراج: table أو json أو html |
--rules | طباعة كتالوج القواعد بصيغة Markdown والخروج | |
--capabilities | طباعة الإمكانيات بصيغة Markdown والخروج | |
--output-file | -f | ملف الإخراج (مطلوب لـ html) |
--store | حفظ نتائج الفحص في SQLite | |
--db-path | مسار قاعدة بيانات SQLite مخصص | |
--trends | عرض الاتجاهات التاريخية | |
--trend-days | نافذة الاتجاه بالأيام (الافتراضي 30) | |
--compare | مقارنة فحصين حديثين | |
--export-json | تصدير ملف JSON للاتجاهات | |
--export-csv | تصدير ملف CSV للاتجاهات | |
--account-id | مرشح الحساب للاتجاهات/السجل | |
--max-parallel | الحد الأقصى لوحدات فحص المنطقة/الحساب المتزامنة | |
--best-effort | لعمليات الفحص متعددة المناطق، إرجاع النجاح إذا نجحت منطقة واحدة على الأقل | |
--dry-run | وضع معاينة المعالجة | |
--remediate | تطبيق المعالجات المدعومة | |
--dashboard-port | منفذ لوحة القيادة (علامة جذرية؛ الأمر الفرعي للوحة القيادة يستخدم --port) | |
--version | -v | معلومات الإصدار |
| المرحلة | الحالة | القواعد |
|---|
| المرحلة 1 | ✅ مكتملة | 73 |
| المرحلة 2 | 🔲 قيد التنفيذ | +20 |
| المرحلة 2.5 | 🆕 كشف هجمات الذكاء الاصطناعي | +13 |
| المرحلة 3 | 🔲 مخطط | +15 |
| المرحلة 4 | 🔲 مخطط | ميزات |