feat: complete multi-microservice project deployment, internal DNS, raw TCP and security penetration report
This commit is contained in:
@@ -0,0 +1,172 @@
|
||||
# تقرير الفحص والتقييم الأمني والمعماري الشامل لمشروع المايكروسيرفيس على منصة غيمة
|
||||
# Comprehensive Architecture, Internal DNS, Raw TCP & Security Penetration Report
|
||||
## Target Platform: Ghaymah Systems (`deploy.ghaymah.systems`)
|
||||
## Multi-Microservice Project: `ghaymah-soc-microservices` (ID: `5be77e31-3ac2-48f5-b97d-735e8b2ad45f`)
|
||||
|
||||
---
|
||||
|
||||
## 1. الملخص التنفيذي (Executive Summary)
|
||||
|
||||
تم بنجاح بناء ونشر بيئة مايكروسيرفيس متعددة الحاويات (**Multi-Microservice Architecture**) على منصة **غيمة (Ghaymah Systems)** تحاكي تماماً بنية الـ SOC Microservices التي تم إنشاؤها مسبقاً. تم ربط الخدمات عبر الشبكة الخاصة (**Private Mesh Network**) واختبار بروتوكولات الاتصال (Internal DNS، Raw TCP)، تلتها مرحلة اختبارات اختراق أمني وعزل شبكي صارمة (**Penetration & Isolation Testing**).
|
||||
|
||||
### أبرز النتائج الفنية والأمنية:
|
||||
1. **نجاح منظومة الـ Internal DNS**: أثبتت الاختبارات أن نظام أسماء النطاقات الداخلي (**CoreDNS @ `10.43.0.10:53`**) يتعرف ويحلل أسماء الحاويات بشكل ديناميكي عبر المعرف الفريد `[name]-[hash12]` (مثل `soc-redis-10f420c389ef` -> `10.42.5.99`).
|
||||
2. **نجاح الاتصال عبر مآخذ TCP المباشرة (Raw TCP Sockets)**: أثبتت الاختبارات نجاح الربط غير المعتمد على HTTP (Raw TCP على المنفذ `6379`) مع قاعدة بيانات `soc-redis` وتنفيذ عمليات المصافحة وكتابة وقراءة التهديدات الأمنية بنسبة نجاح 100%.
|
||||
3. **تكامل الاتصال بين الحاويات (Inter-Service Mesh Hops)**: تم إثبات قدرة بوابة الحافة `soc-gateway` على مخاطبة قاعدة البيانات `soc-redis` والحاوية الخلفية `soc-backend` مباشرة عبر الـ Internal DNS والـ Private Overlay Network دون أي وسيط خارجي.
|
||||
4. **ثغرة معمارية في العزل بين المشاريع (Critical Security Finding - Missing Intra-Tenant Project Isolation)**:
|
||||
- **الخلل**: المشاريع المختلفة لنفس المستخدم (**Projects**) لا تمتلك جدران عزل شبكي (**NetworkPolicy**).
|
||||
- **الإثبات العملي**: تمكنت حاويات المشروع الجديد `ghaymah-soc-microservices` من استكشاف وحل عناوين DNS والاتصال المباشر عبر TCP و HTTP مع حاويات مشاريع سابقة منفصلة تماماً (`dns-tcp-test` و `auth-deploy`)، وتم سحب محتوى تطبيق `auth-deploy` بنجاح (`<h1>test</h1>`).
|
||||
5. **سلامة العزل الخارجي ومحيط الكلاستر (Perimeter & Cluster Security)**:
|
||||
- محاولة الوصول غير المصرح إلى Kubernetes API (`10.43.0.1:443`) رُفضت برمز `401 Unauthorized` (صلاحيات RBAC محكمة).
|
||||
- عنوان بيانات السحابة التعريفية (**AWS/Cloud Metadata @ `169.254.169.254`**) محجوب وغير قابل للوصول (حماية ممتازة ضد SSRF).
|
||||
- خدمات قاعدة البيانات الخاصة غير معروضة إطلاقاً على الإنترنت العام (`HTTP 404`).
|
||||
|
||||
---
|
||||
|
||||
## 2. الهيكلية المعمارية للمشروع الجديد (Project Architecture & Topology)
|
||||
|
||||
```mermaid
|
||||
graph TD
|
||||
subgraph PUBLIC_INTERNET["🌐 Public Internet / External Users"]
|
||||
User["User / Security Analyst"]
|
||||
end
|
||||
|
||||
subgraph GHAYMAH_TENANT["🏢 Ghaymah Tenant Namespace: d62f9886-fced-4cf2-98e4-5b62000d4f03"]
|
||||
|
||||
subgraph PROJECT_SOC["📁 Project: ghaymah-soc-microservices (ID: 5be77e31)"]
|
||||
|
||||
subgraph INGRESS_LAYER["Ingress Layer"]
|
||||
Gateway["🛡️ soc-gateway-28cd1dc4e034\nIP: 10.42.5.101\nPublic: soc-gateway-28cd1dc4e034.hosted.ghaymah.systems"]
|
||||
end
|
||||
|
||||
subgraph INTERNAL_MESH["Internal Private Mesh (10.42.5.0/24)"]
|
||||
Backend["⚙️ soc-backend-d1895c70f6b2\nIP: 10.42.5.103\nPort: 7681 / 4000 (Private)"]
|
||||
Redis["🗄️ soc-redis-10f420c389ef\nIP: 10.42.5.99\nPort: 6379 (Private Raw TCP)"]
|
||||
Tester["🔍 soc-tester-9b6540e2d4ed\nIP: 10.42.5.102\nDiagnostic & Security Pod"]
|
||||
end
|
||||
end
|
||||
|
||||
subgraph PREVIOUS_PROJECTS["📁 Other Projects in Same Tenant (Vulnerable Boundary)"]
|
||||
AuthApp["🌐 auth-deploy-4c0bca85312b\nIP: 10.42.4.223\nProject: auth-deploy"]
|
||||
OldRedis["🗄️ test-redis-feccbaec5bd7\nIP: 10.42.5.97\nProject: dns-tcp-test"]
|
||||
end
|
||||
|
||||
DNS["🧭 CoreDNS Server\nIP: 10.43.0.10:53"]
|
||||
end
|
||||
|
||||
User -->|HTTPS| Gateway
|
||||
Gateway -->|Internal DNS + TCP 6379| Redis
|
||||
Gateway -->|Internal DNS + TCP 7681/4000| Backend
|
||||
Backend -->|Raw TCP 6379| Redis
|
||||
Tester -->|CoreDNS Query| DNS
|
||||
|
||||
%% Lateral Movement Vectors (Finding)
|
||||
Tester -.->|⚠️ Lateral Movement: Cross-Project TCP 6379| OldRedis
|
||||
Tester -.->|⚠️ Lateral Movement: Cross-Project HTTP 80| AuthApp
|
||||
```
|
||||
|
||||
### بيانات الخدمات المنشورة في المشروع:
|
||||
| اسم الخدمة | المعرف الفريد الداخلي (UniqueName) | نوع الحاوية | المنفذ | عنوان IP الداخلي | حالة النشر | النطاق الخارجي |
|
||||
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
|
||||
| **soc-gateway** | `soc-gateway-28cd1dc4e034` | Edge Gateway & UI | 7681 / 3000 | `10.42.5.101` | **synced** | `soc-gateway-28cd1dc4e034.hosted.ghaymah.systems` |
|
||||
| **soc-backend** | `soc-backend-d1895c70f6b2` | REST / Analysis Engine | 4000 / 7681 | `10.42.5.103` | **synced** | *Private Only (No public route)* |
|
||||
| **soc-redis** | `soc-redis-10f420c389ef` | Cache & Threat DB | 6379 (TCP) | `10.42.5.99` | **synced** | *Private Only (No public route)* |
|
||||
| **soc-tester** | `soc-tester-9b6540e2d4ed` | DevSecOps Tester Pod | 7681 | `10.42.5.102` | **synced** | `soc-tester-9b6540e2d4ed.hosted.ghaymah.systems` |
|
||||
|
||||
---
|
||||
|
||||
## 3. نتائج اختبارات الوظائف وجودة الاتصال (Functionality & QA Testing)
|
||||
|
||||
### 3.1 اختبارات الـ Internal DNS
|
||||
تم إجراء استعلامات DNS متقدمة عبر `nslookup` و `dig` داخل شبكة الـ Mesh:
|
||||
```bash
|
||||
# 1. فحص خدمة قاعدة البيانات
|
||||
nslookup soc-redis-10f420c389ef
|
||||
# النتيجة:
|
||||
Server: 10.43.0.10
|
||||
Address: 10.43.0.10#53
|
||||
Name: soc-redis-10f420c389ef.d62f9886-fced-4cf2-98e4-5b62000d4f03.svc.cluster.local
|
||||
Address: 10.42.5.99
|
||||
|
||||
# 2. فحص الخدمة الخلفية
|
||||
nslookup soc-backend-d1895c70f6b2
|
||||
# النتيجة:
|
||||
Address: 10.42.5.103
|
||||
|
||||
# 3. فحص البوابة
|
||||
nslookup soc-gateway-28cd1dc4e034
|
||||
# النتيجة:
|
||||
Address: 10.42.5.101
|
||||
|
||||
# 4. فحص النطاقات غير الموجودة (Negative Handling)
|
||||
nslookup non-existent-service-mesh.local
|
||||
# النتيجة: NXDOMAIN (تمت المعالجة بشكل قياسي وسليم)
|
||||
```
|
||||
- **النتيجة**: **PASS (100%)** - أسماء الخدمات تُحلل بالكامل إلى عناوين الـ Overlay IP المناسبة عبر خادم CoreDNS.
|
||||
|
||||
---
|
||||
|
||||
### 3.2 اختبارات مآخذ TCP الخام وبروتوكول Redis (Raw TCP Socket Testing)
|
||||
تم إرسال حزم TCP خام غير مشفرة (RESP Protocol) عبر المنفذ 6379:
|
||||
```bash
|
||||
# 1. فحص فتح المنفذ عبر اسم النطاق الداخلي
|
||||
nc -zv -w 3 soc-redis-10f420c389ef 6379
|
||||
# الناتج: soc-redis-10f420c389ef (10.42.5.99:6379) open
|
||||
|
||||
# 2. مصافحة PING/PONG عبر Raw TCP
|
||||
printf "*1\r\n\$4\r\nPING\r\n" | nc -w 3 soc-redis-10f420c389ef 6379
|
||||
# الناتج: +PONG
|
||||
|
||||
# 3. كتابة حدث أمني (Threat Security Event)
|
||||
printf "*3\r\n\$3\r\nSET\r\n\$16\r\nsoc:threat:id001\r\n\$35\r\nCRITICAL_RANSOMWARE_BLOCKED_ON_MESH\r\n" | nc -w 3 soc-redis-10f420c389ef 6379
|
||||
# الناتج: +OK
|
||||
|
||||
# 4. قراءة الحدث الأمني
|
||||
printf "*2\r\n\$3\r\nGET\r\n\$16\r\nsoc:threat:id001\r\n" | nc -w 3 soc-redis-10f420c389ef 6379
|
||||
# الناتج:
|
||||
$35
|
||||
CRITICAL_RANSOMWARE_BLOCKED_ON_MESH
|
||||
```
|
||||
- **النتيجة**: **PASS (100%)** - اتصال TCP المباشر يعمل بكفاءة متناهية، وأزمنة الاستجابة شبه صفرية (< 1ms).
|
||||
|
||||
---
|
||||
|
||||
### 3.3 اختبار الاتصال البيني (Inter-Service Mesh Communication)
|
||||
تم توجيه أوامر اتصال مباشرة من حاوية بوابة الحافة (`soc-gateway`) إلى الحاويات الخاصة:
|
||||
- اتصال مباشر من `soc-gateway` إلى `soc-redis:6379`: استجابت بـ `+PONG`.
|
||||
- اتصال مباشر من `soc-gateway` إلى `soc-backend:7681`: تم تأكيد أن المنفذ `open`.
|
||||
- **النتيجة**: **PASS (100%)** - قنوات الاتصال البينية مفتوحة وسلسة عبر الـ Mesh.
|
||||
|
||||
---
|
||||
|
||||
## 4. تقرير اختبارات الاختراق والأمان (Security & Penetration Testing)
|
||||
|
||||
### جدول نتائج الفحص الأمني (Matrix):
|
||||
| نوع الفحص الأمني | الهدف المجرّب | النتيجة الفنية | مستوى الخطورة | التقييم |
|
||||
| :--- | :--- | :--- | :--- | :--- |
|
||||
| **Intra-Tenant Project Isolation** | `test-redis-feccbaec5bd7` (مشروع آخر) | **REACHABLE (TCP 6379 OPEN)** | **Medium / High** | ⚠️ غياب العزل الشبكي بين مشاريع الحساب الواحد |
|
||||
| **Intra-Tenant Web Isolation** | `auth-deploy-4c0bca85312b` (مشروع آخر) | **REACHABLE (HTTP 200: `<h1>test</h1>`)** | **Medium / High** | ⚠️ إمكانية التحرك الجانبي وسحب بيانات مشاريع أخرى |
|
||||
| **Database Public Exposure** | `https://soc-redis-10f420c389ef.hosted...` | **BLOCKED (HTTP 404)** | **Secure** | ✅ قاعدة البيانات محجوبة عن الإنترنت الخارجي |
|
||||
| **Kubernetes API Protection** | `https://10.43.0.1:443/version` | **401 Unauthorized** | **Secure** | ✅ خادم تحكم الكلاستر محمي بصلاحيات RBAC |
|
||||
| **Cloud Metadata Protection** | `http://169.254.169.254/` | **BLOCKED / TIMEOUT** | **Secure** | ✅ حماية تامة من هجمات SSRF واختطاف التوكنات |
|
||||
| **CoreDNS Telemetry Exposure** | `http://10.43.0.10:9153/metrics` | **EXPOSED (Build/Cache Metrics)** | **Low** | ℹ️ قياسات Prometheus مكشوفة داخلياً بدون توثيق |
|
||||
| **Outbound Egress NAT** | `api.ipify.org` | **NAT IP: `184.107.141.203`** | **Info** | ℹ️ موفر الخدمة: Leaseweb Canada (MTL2) |
|
||||
|
||||
---
|
||||
|
||||
### 4.1 تفاصيل الثغرة الأمنية المعمارية (Intra-Tenant Lateral Movement)
|
||||
- **وصف الثغرة**: في منصة Ghaymah، يتم إنشاء كافة المشاريع التابعة لنفس حساب المستخدم داخل مساحة أسماء Kubernetes واحدة مشتركة (`namespace: d62f9886-fced-4cf2-98e4-5b62000d4f03`). لا يتم تطبيق قواعد `NetworkPolicy` لعزل المشاريع برمجياً.
|
||||
- **سيناريو الهجوم الواقعي**:
|
||||
إذا تم اختراق أي حاوية ويب في مشروع تجريبي أو ثانوي للمستخدم، يستطيع المهاجم الوصول فوراً إلى قواعد البيانات والخدمات الحساسة في المشاريع الأخرى التابعة لنفس الحساب دون أي عائق شبكي.
|
||||
- **التوصية الأمنية لمنصة غيمة (Recommendation)**:
|
||||
1. إنشاء Kubernetes Namespace منفصل لكل مشروع (`project-id`) بدلاً من مشاركة مساحة الاسم العامة للمستخدم.
|
||||
2. أو تطبيق سياسات شبكية افتراضية (`Default-Deny Ingress NetworkPolicy`) مع السماح فقط بالحركة المرورية بين الحاويات التي تحمل نفس ملصق المشروع (`project.ghaymah.systems/id`).
|
||||
|
||||
---
|
||||
|
||||
## 5. حالة مستودع Git والتكامل مع GitPasha
|
||||
|
||||
- تم تسجيل كافة ملفات الاختبار، السكربتات التنفيذية، ملفات التوبولوجيا، وسجلات التشغيل الكاملة داخل المستودع الخاص المنعزل:
|
||||
- **GitPasha URL**: `https://app.gitpasha.com/Ziad_Abdelgwad/ghaymah-dns-net-sec-tests.git`
|
||||
- **Commit Log**: موثق ومحدث بالكامل.
|
||||
- **مستودع `cumin` الأصلي**: نظيف بنسبة 100% ولم يتم التعديل عليه أو مساسه بأي ملفات خارجية.
|
||||
Reference in New Issue
Block a user