121 أسطر
4.3 KiB
Markdown
121 أسطر
4.3 KiB
Markdown
# قائمة تدقيق أمني لتطبيق على منصة غيمة (ghaymah.systems)
|
|
|
|
## قائمة من 15 بنداً للتدقيق الأمني
|
|
|
|
| # | البند | الفئة | الأولوية |
|
|
|---|-------|-------|----------|
|
|
| 1 | التحقق من تفعيل شهادة SSL التلقائية من غيمة | Data | عالية |
|
|
| 2 | تشفير البيانات في PostgreSQL المُدارة (Encryption at Rest) | Data | عالية |
|
|
| 3 | تشفير اتصالات Redis/Valkey | Data | متوسطة |
|
|
| 4 | مراجعة صلاحيات الوصول للـ Git Repository المرتبط بالنشر | IAM | عالية |
|
|
| 5 | تفعيل MFA على حساب غيمة (deploy.ghaymah.systems) | IAM | عالية |
|
|
| 6 | فحص Docker Images المستخدمة من الثغرات (Trivy/Snyk) | Container Security | عالية |
|
|
| 7 | عدم تشغيل الحاويات بصلاحيات root | Container Security | عالية |
|
|
| 8 | تقييد المنافذ المفتوحة (فقط 80/443) | Network | عالية |
|
|
| 9 | تكوين Network Policies بين الخدمات | Network | متوسطة |
|
|
| 10 | الحماية من SQL Injection | OWASP | عالية |
|
|
| 11 | الحماية من XSS وتفعيل CSP Headers | OWASP | عالية |
|
|
| 12 | تفعيل Rate Limiting على APIs | OWASP | عالية |
|
|
| 13 | إخفاء Server Headers (X-Powered-By) | OWASP | متوسطة |
|
|
| 14 | التحقق من تفعيل النسخ الاحتياطي التلقائي | Data | عالية |
|
|
| 15 | مراجعة سجلات المراقبة والتنبيهات | Data | متوسطة |
|
|
|
|
---
|
|
|
|
## شرح تطبيق كل بند على منصة غيمة تحديداً
|
|
|
|
### 1. SSL التلقائية
|
|
غيمة توفر شهادة SSL تلقائية لجميع الخطط. للتحقق:
|
|
- تأكد من أن الدومين يعمل على HTTPS فقط
|
|
- أضف redirect من HTTP إلى HTTPS
|
|
- تحقق من صلاحية الشهادة عبر المتصفح
|
|
|
|
### 2. PostgreSQL المُدارة
|
|
- تفعيل خيار "اتصالات مشفّرة" في إعدادات قاعدة البيانات
|
|
- استخدام SSL mode في connection string:
|
|
```
|
|
postgresql://user:pass@host:5432/db?sslmode=require
|
|
```
|
|
|
|
### 3. Redis/Valkey
|
|
- استخدام الاتصال المشفر الافتراضي من غيمة
|
|
- التأكد من أن Redis غير مكشوف للإنترنت
|
|
|
|
### 4. Git Repository
|
|
- مراجعة من لديه صلاحية push على الـ repo
|
|
- تفعيل branch protection على main/master
|
|
- استخدام deploy keys بدلاً من personal tokens
|
|
|
|
### 5. MFA
|
|
- تفعيله من إعدادات حساب غيمة
|
|
- استخدام تطبيق authenticator (Google/Microsoft)
|
|
|
|
### 6. Container Scanning
|
|
إضافة في CI/CD pipeline:
|
|
```yaml
|
|
- name: Scan image
|
|
run: trivy image myapp:latest --severity HIGH,CRITICAL
|
|
```
|
|
|
|
### 7. Non-root Containers
|
|
في Dockerfile:
|
|
```dockerfile
|
|
USER nonroot:nonroot
|
|
# أو
|
|
USER 1000:1000
|
|
```
|
|
|
|
### 8. المنافذ
|
|
- غيمة تدير هذا تلقائياً
|
|
- تأكد من عدم expose منافذ إضافية في Dockerfile
|
|
- لا تستخدم `EXPOSE` لمنافذ حساسة
|
|
|
|
### 9. Network Policies
|
|
- فصل PostgreSQL عن الإنترنت العام (internal only)
|
|
- السماح فقط للـ backend بالوصول لقاعدة البيانات
|
|
|
|
### 10. SQL Injection
|
|
- استخدام ORM (Prisma, Sequelize, SQLAlchemy)
|
|
- أو Prepared Statements:
|
|
```javascript
|
|
db.query('SELECT * FROM users WHERE id = $1', [userId])
|
|
```
|
|
|
|
### 11. XSS/CSP
|
|
إضافة headers في التطبيق:
|
|
```javascript
|
|
app.use(helmet({
|
|
contentSecurityPolicy: {
|
|
directives: {
|
|
defaultSrc: ["'self'"],
|
|
scriptSrc: ["'self'"]
|
|
}
|
|
}
|
|
}));
|
|
```
|
|
|
|
### 12. Rate Limiting
|
|
```javascript
|
|
const rateLimit = require('express-rate-limit');
|
|
app.use('/api/login', rateLimit({
|
|
windowMs: 15 * 60 * 1000,
|
|
max: 5
|
|
}));
|
|
```
|
|
|
|
### 13. Server Headers
|
|
```javascript
|
|
app.disable('x-powered-by');
|
|
// أو استخدام helmet
|
|
app.use(helmet.hidePoweredBy());
|
|
```
|
|
|
|
### 14. النسخ الاحتياطي
|
|
- خطة g4.medium: نسخ يومي
|
|
- خطة g5.large: نسخ كل ساعة
|
|
- تحقق من إعدادات النسخ في لوحة التحكم
|
|
|
|
### 15. المراقبة
|
|
- استخدام أدوات الذكاء الاصطناعي والمراقبة المتوفرة في غيمة
|
|
- إعداد تنبيهات للأحداث المشبوهة
|