
Semantic Observability for UNIX Systems - एक हल्का C-आधारित सिस्टम प्रोबर AI-संचालित विश्लेषण के साथ
यूनिक्स सिस्टम के लिए सेमेंटिक ऑब्जर्वेबिलिटी
एक हल्का, पोर्टेबल सिस्टम प्रोबर जो C में लिखा गया है और AI-सहायता प्राप्त गैर-स्पष्ट जोखिमों के विश्लेषण के लिए "सिस्टम फिंगरप्रिंट" कैप्चर करता है। इसमें auditd इंटीग्रेशन, व्याख्यात्मक जोखिम स्कोरिंग, और एंटरप्राइज़-ग्रेड मल्टी-यूज़र प्रमाणीकरण के साथ एक लाइव वेब डैशबोर्ड शामिल है।
लाइव डेमो: sentinel.speytech.com



| सेटअप | लॉगिन |
|---|---|
![]() | ![]() |




v0.5.x: सुरक्षा स्थिति सारांश, जोखिम प्रवृत्ति स्पार्कलाइन, सीखने का संकेतक, व्याख्यात्मक जोखिम कारक, ईमेल अलर्ट, घटना इतिहास
v0.4.0: Auditd इंटीग्रेशन, ब्रूट फ़ोर्स डिटेक्शन, गोपनीयता-संरक्षण यूज़रनेम हैशिंग, प्रक्रिया विशेषता, जोखिम स्कोरिंग
v0.3.0: वेब डैशबोर्ड, SHA256 चेकसम, systemd सेवा, बेसलाइन लर्निंग, नेटवर्क प्रोब, वॉच मोड
Dynatrace, Datadog, और Prometheus जैसे आधुनिक ऑब्जर्वेबिलिटी उपकरण मीट्रिक संग्रह और थ्रेशोल्ड अलर्टिंग में उत्कृष्ट हैं। लेकिन वे एक संकीर्ण प्रश्न का उत्तर देते हैं: "क्या यह मीट्रिक अपेक्षित सीमा से बाहर है?"
वे निम्नलिखित में संघर्ष करते हैं:
C-Sentinel एक अलग दृष्टिकोण अपनाता है: एक व्यापक सिस्टम फिंगरप्रिंट कैप्चर करें—जिसमें सुरक्षा घटनाएँ शामिल हैं—और "मशीन में भूत" की पहचान करने के लिए LLM तर्क का उपयोग करें।
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
## डैशबोर्ड सुविधाएँ
वेब डैशबोर्ड आपके इन्फ्रास्ट्रक्चर में रियल-टाइम सुरक्षा निगरानी प्रदान करता है।
### मल्टी-यूज़र प्रमाणीकरण
एंटरप्राइज़-ग्रेड एक्सेस नियंत्रण तीन भूमिकाओं के साथ:
| भूमिका | अनुमतियाँ |
|------|-------------|
| **एडमिन** | पूर्ण पहुँच: उपयोगकर्ताओं का प्रबंधन, ऑडिट लॉग देखना, सभी संचालन |
| **ऑपरेटर** | ईवेंट स्वीकार करें, काउंटर रीसेट करें, सभी डेटा देखें |
| **दर्शक** | डैशबोर्ड और डेटा तक केवल-पढ़ने की पहुँच |
### टू-फ़ैक्टर प्रमाणीकरण (TOTP)
अपने खाते को उद्योग-मानक TOTP से सुरक्षित करें:
- Google Authenticator, Authy, Microsoft Authenticator के साथ काम करता है
- आसान कॉन्फ़िगरेशन के लिए QR कोड सेटअप
- सक्षम होने पर प्रत्येक लॉगिन पर आवश्यक
- सक्षम/अक्षम करने पर ईमेल सूचनाएँ
### व्यक्तिगत API कुंजियाँ
प्रत्येक उपयोगकर्ता स्वचालन के लिए अपनी स्वयं की API कुंजियाँ बना सकता है:
- नामित कुंजियाँ (जैसे, "CI/CD Pipeline", "Monitoring Script")
- वैकल्पिक समाप्ति तिथियाँ
- हटाए बिना सक्षम/अक्षम करें
- अंतिम उपयोग ट्रैकिंग
- कुंजियाँ उपयोगकर्ता की भूमिका अनुमतियाँ प्राप्त करती हैं```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 घंटे का जोखिम स्कोर इतिहास दिखाता है - तुरंत देखें कि चीजें बेहतर हो रही हैं या बदतर।
ईमेल और/या स्लैक के माध्यम से स्वचालित सूचनाएँ जब:
स्लैक अलर्ट में रंग-कोडित गंभीरता, क्लिक करने योग्य डैशबोर्ड लिंक और संरचित जोखिम कारक विवरण के साथ समृद्ध स्वरूपण शामिल है।
C-Sentinel शब्दार्थ सुरक्षा विश्लेषण के लिए ऑडिटड लॉग का सारांश प्रस्तुत करता है।
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
### स्लैक वेबहुक कॉन्फ़िगरेशन```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
वेबहुक URL प्राप्त करने के लिए:
पूर्ण सेटअप निर्देशों के लिए dashboard/README.md देखें।
अपने डैशबोर्ड को प्रदर्शित करने के लिए केवल-पढ़ने योग्य सार्वजनिक पहुंच सक्षम करें:```bash Environment="DEMO_MODE=true"
डेमो मोड में:
- लॉगिन आवश्यक नहीं - विज़िटर सीधे डैशबोर्ड पर जाते हैं
- केवल-पढ़ने की पहुंच (दर्शक भूमिका)
- एडमिन सुविधाएँ छिपी होती हैं
- प्रोफ़ाइल/लॉगआउट लिंक GitHub लिंक से बदल दिए जाते हैं
- पीला बैनर डेमो मोड दर्शाता है
LinkedIn पोस्ट, ब्लॉग लेख, या डिप्लॉय करने से पहले संभावित ग्राहकों को खोजने देने के लिए बढ़िया।
## Systemd Service
प्रोडक्शन डिप्लॉयमेंट के लिए:```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 क्यों?
| Concern | 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 में cmocka परीक्षण ढांचे का उपयोग करते हुए 128+ इकाई परीक्षणों वाला एक व्यापक परीक्षण सूट शामिल है।
Debian/Ubuntu:```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); }
Makefile के `TEST_SOURCES` वेरिएबल में नए परीक्षण फ़ाइलें जोड़ें।
## प्लेटफ़ॉर्म समर्थन
| प्लेटफ़ॉर्म | निर्माण | प्रक्रिया जांच | नेटवर्क जांच | ऑडिट |
|----------|-------|---------------|---------------|-------|
| 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 |
### आवश्यकताएँ
- C99 समर्थन के साथ GCC या Clang
- GNU Make (BSD पर gmake)
- समर्थित प्लेटफ़ॉर्म:
- Linux (कर्नेल 3.x+)
- macOS (10.12+)
- FreeBSD (12+)
- OpenBSD (7.x)
- NetBSD (9.x)
- DragonFlyBSD (6.x)
- auditd (वैकल्पिक, `--audit` फ़्लैग के लिए केवल Linux)
## प्रोजेक्ट संरचना```
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 देखें।
William Murray - 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 | जोखिम स्कोरिंग, घटना विश्लेषण |