
المراقبة الدلالية لأنظمة يونكس - أداة استكشاف أنظمة خفيفة الوزن مبنية بلغة C مع تحليل مدعوم بالذكاء الاصطناعي
المراقبة الدلالية لأنظمة UNIX
أداة فحص خفيفة ومحمولة للنظام مكتوبة بلغة C تلتقط "بصمات النظام" لتحليلها بمساعدة الذكاء الاصطناعي لتحديد المخاطر غير الواضحة. تتضمن تكامل auditd، وتقييم المخاطر القابل للتفسير، ولوحة تحكم ويب حية مع مصادقة متعددة المستخدمين على مستوى المؤسسات.
عرض توضيحي مباشر: sentinel.speytech.com



| الإعداد | تسجيل الدخول |
|---|---|
![]() | ![]() |




الإصدار 0.5.x: ملخص وضع الأمان، رسم اتجاه المخاطر المتغير، مؤشر التعلم، عوامل المخاطرة القابلة للتفسير، تنبيهات البريد الإلكتروني، سجل الأحداث
الإصدار 0.4.0: تكامل auditd، كشف هجمات القوة الغاشمة، تجزئة أسماء المستخدمين مع الحفاظ على الخصوصية، إسناد العمليات، تقييم المخاطر
الإصدار 0.3.0: لوحة تحكم ويب، مجاميع SHA256، خدمة systemd، تعلم الأساسيات، مسبار الشبكة، وضع المراقبة
تتميز أدوات المراقبة الحديثة مثل Dynatrace وDatadog وPrometheus بجمع المقاييس والتنبيهات المبنية على العتبات. لكنها تجيب على سؤال ضيق: "هل هذا المقياس خارج نطاقه المتوقع؟"
فهي تعاني من:
يتبع C-Sentinel نهجًا مختلفًا: التقاط بصمة شاملة للنظام - بما في ذلك الأحداث الأمنية - واستخدام الاستدلال بالذكاء الاصطناعي لتحديد "الأشباح في الآلة."
git clone https://github.com/williamofai/c-sentinel.git cd c-sentinel make
./bin/sentinel --quick --network
sudo ./bin/sentinel --quick --network --audit
./bin/sentinel --learn --network
sudo ./bin/sentinel --watch --interval 300 --network --audit
## ميزات لوحة التحكم
توفر لوحة التحكم عبر الويب مراقبة أمنية في الوقت الفعلي عبر بنيتك التحتية.
### مصادقة متعددة المستخدمين
التحكم في الوصول بمستوى مؤسسي مع ثلاثة أدوار:
| الدور | الصلاحيات |
|------|-------------|
| **Admin** | صلاحية كاملة: إدارة المستخدمين، عرض سجلات التدقيق، جميع العمليات |
| **Operator** | تأكيد الأحداث، إعادة تعيين العدادات، عرض جميع البيانات |
| **Viewer** | وصول للقراءة فقط إلى لوحات التحكم والبيانات |
### المصادقة الثنائية (TOTP)
قم بتأمين حسابك باستخدام TOTP القياسي في الصناعة:
- يعمل مع Google Authenticator وAuthy وMicrosoft Authenticator
- إعداد رمز QR للتكوين السهل
- مطلوب في كل تسجيل دخول عند تفعيله
- إشعارات البريد الإلكتروني عند التمكين/التعطيل
### مفاتيح API الشخصية
يمكن لكل مستخدم إنشاء مفاتيح API الخاصة به لأغراض الأتمتة:
- مفاتيح مسماة (مثال: "خط أنابيب CI/CD"، "نص مراقبة")
- تواريخ انتهاء صلاحية اختيارية
- تمكين/تعطيل دون حذف
- تتبع آخر استخدام
- ترث المفاتيح صلاحيات دور المستخدم```bash
# Use your personal API key
curl -X POST https://sentinel.example.com/api/ingest \
-H "Content-Type: application/json" \
-H "X-API-Key: sk_your_personal_key" \
-d @fingerprint.json
تتبع جميع إجراءات المستخدم لأغراض الامتثال والأمان:
رؤية كاملة للجلسات النشطة:
شرح باللغة الإنجليزية البسيطة لحالة الأمان في نظامك:
"لا يُظهر هذا النظام أي مخاوف أمنية. أنماط المصادقة طبيعية دون اكتشاف أي فشل. لم يتم اكتشاف أي نشاط تصعيد صلاحيات. الوضع العام: صحي."
يتضمن كل تسجيل مخاطر عوامل تشرح لماذا:
| العامل | الوزن |
|---|---|
| 10 حالات فشل في المصادقة (200% أعلى من خط الأساس - عالي) | +30 |
| نمط هجوم القوة الغاشمة مكتشف | +10 |
| 2 ملف(ملفات) حساس تم الوصول إليها | +4 |
| الإجمالي | 44 |
يتعلم النظام ما هو "طبيعي" لبيئتك:
| العينات | الحالة | المعنى |
|---|---|---|
| < 10 | 🧠 تعلم | بناء خط أساس أولي |
| 10-50 | 🧠 معايرة | تحسين الأنماط الطبيعية |
| > 50 | (مخفي) | معايرة كاملة |
رسم بياني مصغر يظهر سجل درجات المخاطر على مدار 24 ساعة - رؤية فورية إذا كانت الأمور تتحسن أو تزداد سوءًا.
إشعارات تلقائية عبر البريد الإلكتروني و/أو Slack عند:
تتضمن تنبيهات Slack تنسيقًا غنيًا مع تصنيف حسب الشدة (ملون)، وروابط قابلة للنقر للوحة التحكم، وتفاصيل عوامل المخاطر المنظمة.
يقوم C-Sentinel بتلخيص سجلات auditd لتحليل الأمان الدلالي.
Hostname: axioma-validator Uptime: 14.5 days Load: 0.02 0.04 0.00 Memory: 49.2% used Processes: 120 total
Potential Issues: Zombie processes: 0 High FD processes: 1 Long-running (>7d): 95 Config permission issues: 0
Network: Listening ports: 26 Established connections: 14 Unusual ports: 12 ⚠
Security (audit): Auth failures: 6 ⚠ BRUTE FORCE PATTERN DETECTED Sudo commands: 81 Sensitive file access: 2 - /etc/passwd by touch - /etc/shadow by touch ⚠
Risk: high (score: 25)
### مخرجات JSON```json
{
"audit_summary": {
"enabled": true,
"period_seconds": 300,
"authentication": {
"failures": 6,
"failure_users_hashed": ["user_c4c5", "user_b91b"],
"brute_force_detected": true
},
"privilege_escalation": {
"sudo_count": 81,
"sudo_baseline_avg": 12.5,
"sudo_deviation_pct": 548.0,
"su_count": 5
},
"file_integrity": {
"sensitive_file_access": [
{
"path": "/etc/shadow",
"access": "write",
"count": 2,
"process": "touch",
"process_chain": ["touch", "bash", "sshd"],
"suspicious": true
}
]
},
"learning": {
"sample_count": 42,
"confidence": "medium"
},
"risk_factors": [
{"reason": "6 auth failures (200% above baseline - high)", "weight": 18},
{"reason": "Brute force attack pattern detected", "weight": 10}
],
"risk_score": 25,
"risk_level": "high"
}
}
للحصول على أفضل النتائج، أضف قواعد تدقيق للملفات الحساسة:```bash
sudo auditctl -w /etc/passwd -p wa -k identity sudo auditctl -w /etc/shadow -p wa -k identity sudo auditctl -w /etc/sudoers -p wa -k priv_esc sudo auditctl -w /var/log/lastlog -p wa -k auth
### ميزات الخصوصية
- **تجزئة أسماء المستخدمين**: يتم تجزئة أسماء المستخدمين الفاشلة في تسجيل الدخول (مثل `user_c4c5`) مع الحفاظ على اكتشاف الأنماط دون كشف الهويات
- **لا كلمات مرور**: لا يتم التقاط وسيطات الأوامر والبيانات الحساسة أبدًا
- **أسماء العمليات فقط**: يتم تعقيم المسارات الكاملة للخصوصية
## لوحة التحكم على الويب
يتضمن C-Sentinel لوحة تحكم ويب لمراقبة مضيفين متعددين في الوقت الفعلي.
### الميزات
- **مصادقة متعددة المستخدمين** - التحكم في الوصول القائم على الأدوار
- **المصادقة الثنائية** - TOTP مع إعداد رمز QR
- **مفاتيح API شخصية** - مفاتيح أتمتة لكل مستخدم
- **سجل تدقيق المسؤول** - سجل كامل للإجراءات
- **إدارة الجلسات** - التحكم في الجلسات النشطة
- **ملخص الوضع الأمني** - حالة النظام باللغة الإنجليزية المبسطة
- **مخطط اتجاه المخاطر** - تاريخ بصري لمدة 24 ساعة
- **عوامل المخاطر القابلة للتفسير** - اعرف *لماذا* النتيجة كما هي
- **مؤشر التعلم** - تقدم معايرة الأساس
- **سجل الأحداث** - جدول زمني مع الإقرار
- **تنبيهات البريد الإلكتروني** - إشعارات استباقية
- **المراقبة في الوقت الفعلي** - جميع المضيفين في لمحة
- **الرسوم البيانية التاريخية** - الذاكرة والحمل لمدة 24 ساعة
- **عرض الشبكة** - جميع المنافذ والاتصالات المستمعة
- **تتبع التكوين** - مجاميع SHA256 للملفات المراقبة
### الإعداد السريع```bash
# Install dashboard
cd dashboard
sudo ./install-dashboard.sh
# Run database migration
sudo -u postgres psql -d sentinel -f migrate.sql
# Install 2FA dependencies (optional)
sudo /opt/sentinel-dashboard/venv/bin/pip install pyotp qrcode pillow
# Configure agent to report (with audit)
*/5 * * * * sudo /usr/local/bin/sentinel --json --network --audit | curl -s -X POST \
-H "Content-Type: application/json" \
-H "X-API-Key: YOUR_KEY" \
-d @- https://your-dashboard.com/api/ingest
أضف إلى systemd service أو environment:```bash ALERT_EMAIL_ENABLED=true ALERT_SMTP_HOST=smtp.gmail.com ALERT_SMTP_PORT=587 ALERT_SMTP_USER=[email protected] ALERT_SMTP_PASS=your-app-password ALERT_FROM=[email protected] ALERT_TO=[email protected] ALERT_COOLDOWN_MINS=60
### تكوين Webhook في Slack```bash
ALERT_SLACK_ENABLED=true
ALERT_SLACK_WEBHOOK=https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX
ALERT_SLACK_CHANNEL=#security-alerts # Optional - override default webhook channel
ALERT_SLACK_USERNAME=C-Sentinel # Optional - bot display name
للحصول على رابط ويب هوك:
راجع dashboard/README.md للحصول على تعليمات الإعداد الكاملة.
فعّل الوصول العام للقراءة فقط لعرض لوحة التحكم الخاصة بك:```bash Environment="DEMO_MODE=true"
في وضع العرض التجريبي:
- لا حاجة لتسجيل الدخول - ينتقل الزوار مباشرة إلى لوحة التحكم
- وصول للقراءة فقط (دور المشاهد)
- ميزات المشرف مخفية
- تم استبدال روابط الملف الشخصي/تسجيل الخروج برابط GitHub
- شريط أصفر يشير إلى وضع العرض التجريبي
رائع لمنشورات LinkedIn، مقالات المدونات، أو للسماح للعملاء المحتملين بالاستكشاف قبل النشر.
## خدمة Systemd
لنشر الإنتاج:```bash
# Install
sudo ./install.sh
# Enable and start
sudo systemctl enable sentinel
sudo systemctl start sentinel
# Check status
sudo journalctl -u sentinel -f
الإخراج الملون يتم اكتشافه تلقائيًا (TTY) ويحترم معيار NO_COLOR.
| الرمز | المعنى |
|---|---|
| 0 | لم يتم اكتشاف أي مشكلات |
| 1 | تحذيرات (مشكلات طفيفة) |
| 2 | حرجة (عمليات زومبي، مشكلات صلاحيات، منافذ غير عادية، أحداث أمنية عالية المخاطر) |
| 3 | خطأ (فشل الاستكشاف) |
┌─────────────────────────────────────────────────────────────────┐ │ Web Dashboard │ │ • Multi-user auth (RBAC) • Two-factor authentication │ │ • Personal API keys • Session management │ │ • Admin audit log • Email & Slack alerts │ │ • Security posture summary • Risk trend sparkline │ │ • Explainable risk factors • Event history timeline │ │ • Multi-host view • Historical charts │ └─────────────────────────────────────────────────────────────────┘ ▲ │ JSON via HTTP POST │ ┌─────────────────────────────────────────────────────────────────┐ │ C Foundation (99KB) │ │ • /proc parsing • SHA256 checksums │ │ • Process analysis • Drift detection │ │ • Network probing • Baseline learning │ │ • Auditd parsing • Risk scoring │ │ • Process chains • Anomaly detection │ └─────────────────────────────────────────────────────────────────┘
### لماذا C؟
| الجانب | Python | C |
|---------|--------|---|
| **الاعتماديات** | يتطلب وقت تشغيل Python (~100MB) | ثنائي ثابت (~99KB) |
| **وقت بدء التشغيل** | بدء تشغيل المفسر ~500ms | ~1ms |
| **الذاكرة** | خط الأساس ~30MB | <2MB |
| **قابلية النقل** | يحتاج إصدار Python متطابق | يعمل على أي نظام POSIX |
## البناء```bash
make # Release build
make DEBUG=1 # Debug build with symbols
make test # Run all tests (unit + integration)
make install # Install to /usr/local/bin
يتضمن C-Sentinel مجموعة اختبار شاملة تضم أكثر من 128 اختبار وحدة باستخدام إطار اختبار cmocka.
دبيان/أوبونتو:```bash sudo apt-get install libcmocka-dev
**Fedora/RHEL/CentOS:**```bash
sudo dnf install libcmocka-devel
macOS (Homebrew):```bash brew install cmocka
**FreeBSD:**```bash
sudo pkg install cmocka
OpenBSD:```bash doas pkg_add cmocka
### تشغيل الاختبارات```bash
make test # Run all tests (unit + integration)
make unit-test # Run unit tests only (requires cmocka)
make integration-test # Run integration/smoke tests only
make coverage # Run tests with gcov coverage report
make check-cmocka # Verify cmocka is installed correctly
تغطي اختبارات الوحدة:
توجد الاختبارات في tests/src/ وتستخدم اصطلاحات cmocka:```c
#include <stdarg.h>
#include <stddef.h>
#include <setjmp.h>
#include <cmocka.h>
#include "test_helpers.h"
static void test_example(void **state) { (void)state; assert_int_equal(1 + 1, 2); }
int main(void) { const struct CMUnitTest tests[] = { cmocka_unit_test(test_example), }; return cmocka_run_group_tests(tests, NULL, NULL); }
أضف ملفات اختبار جديدة إلى متغير `TEST_SOURCES` في ملف Makefile.
## دعم المنصة
| المنصة | بناء | استقصاء العملية | استقصاء الشبكة | تدقيق |
|----------|-------|---------------|---------------|-------|
| Linux | ✅ | ✅ /proc | ✅ /proc/net | ✅ auditd |
| macOS | ✅ | ✅ libproc | ✅ netstat | ❌ N/A |
| FreeBSD | ✅ | ✅ libkvm | ✅ netstat | ❌ N/A |
| OpenBSD | ✅ | ✅ libkvm | ✅ netstat | ❌ N/A |
| NetBSD | ✅ | ✅ libkvm | ✅ netstat | ❌ N/A |
| DragonFlyBSD | ✅ | ✅ libkvm | ✅ netstat | ❌ N/A |
### المتطلبات
- GCC أو Clang مع دعم C99
- GNU Make (gmake على BSD)
- المنصات المدعومة:
- Linux (النواة 3.x+)
- macOS (10.12+)
- FreeBSD (12+)
- OpenBSD (7.x)
- NetBSD (9.x)
- DragonFlyBSD (6.x)
- auditd (اختياري، Linux فقط لعلامة `--audit`)
## هيكل المشروع```
c-sentinel/
├── include/
│ ├── sentinel.h # Core data structures
│ └── audit.h # Audit integration types
├── src/
│ ├── main.c # CLI entry point
│ ├── prober.c # System probing (/proc)
│ ├── net_probe.c # Network probing
│ ├── audit.c # Auditd log parsing
│ ├── audit_json.c # Audit JSON serialisation
│ ├── process_chain.c # Process ancestry walking
│ ├── baseline.c # Baseline learning
│ ├── sha256.c # Pure C SHA256
│ └── ...
├── dashboard/ # Flask web dashboard
├── deploy/ # Systemd service files
└── docs/
├── AUDIT_SPEC.md # Audit integration design
└── DESIGN_DECISIONS.md
رخصة MIT - انظر LICENSE للتفاصيل.
ويليام موراي - 30 عامًا من هندسة أنظمة UNIX
"الهدف ليس استبدال أدوات المراقبة - بل إضافة الحكمة إلى بياناتها."
| الميزة | الأمر | الوصف |
|---|
| تحليل سريع | --quick | ملخص قابل للقراءة البشرية |
| استكشاف الشبكة | --network | المنافذ والاتصالات المستمعة |
| استكشاف التدقيق | --audit | أحداث أمنية (يتطلب صلاحيات الجذر) |
| وضع المراقبة | --watch --interval 60 | مراقبة مستمرة |
| تعلم الأساس | --learn | حفظ الحالة الحالية كـ "طبيعية" |
| أساس التدقيق | --audit-learn | تعلم أنماط الأمان الطبيعية |
| مقارنة الأساس | --baseline | اكتشاف الانحرافات |
| إخراج JSON | --json | بصمة كاملة لـ LLM/لوحة التحكم |
| إخراج ملون | --color | إخراج طرفية ملون |
| الإعدادات | --config | إظهار الإعدادات الحالية |
| الفئة | البيانات | الغرض |
|---|
| النظام | اسم المضيف، النواة، وقت التشغيل، الحمل، الذاكرة | سياق الصحة الأساسي |
| العمليات | العمليات البارزة مع البيانات الوصفية | كشف الزومبي، التسرب، التوقف |
| الإعدادات | بيانات وصفية للملف + مجاميع اختبار SHA256 | كشف الانحراف المشفر |
| الشبكة | المستمعون، الاتصالات، المنافذ | مراقبة الخدمات |
| الأمان | فشل المصادقة، استخدام sudo، الوصول إلى الملفات | كشف التهديدات |
| الوحدة | الاختبارات | التغطية |
|---|
| SHA256 | 10 | متجهات اختبار NIST، حالات الحافة |
| Sanitize | 30 | التحقق من صحة الإدخال، منع الحقن |
| Policy | 36 | قواعد السماح/المنع للأوامر/المسارات |
| JSON Serialize | 11 | تنسيق الإخراج، التهرب |
| Baseline | 11 | وضع التعلم، كشف الانحراف |
| Config | 9 | تحليل التكوين |
| Audit | 21 | تسجيل المخاطر، تحليل الأحداث |