نظام المصادقة
يوفر SirrMesh طرق مصادقة مرنة متعددة، تدعم كل شيء من كلمات المرور التقليدية إلى توقيعات البلوكتشين الحديثة.
طرق المصادقة
مصادقة البلوكتشين
مصادقة بدون كلمة مرور باستخدام محافظ البلوكتشين.
كيف تعمل
- يوقع العميل رسالة عشوائية باستخدام المفتاح الخاص
- يتحقق الخادم من التوقيع ويستعيد عنوان المحفظة
- يتم التحقق من تطابق العنوان مع حساب المستخدم
مثال التكوين
toml
[auth.blockchain]
enabled = true
networks = ["ethereum", "bsc", "polygon"]
[auth.blockchain.rpc]
ethereum = "https://mainnet.infura.io/v3/YOUR-PROJECT-ID"
bsc = "https://bsc-dataseed.binance.org"
polygon = "https://polygon-rpc.com"الشبكات المدعومة
- Ethereum (ETH)
- BNB Smart Chain (BSC)
- Polygon (MATIC)
- جميع السلاسل المتوافقة مع EVM
استخدام العميل
javascript
// إنشاء التوقيع
const message = `Login to SirrMesh: ${timestamp}`;
const signature = await web3.eth.personal.sign(message, address);
// SMTP AUTH
AUTH BLOCKCHAIN
<address>
<signature>
<message>مصادقة LDAP
التكامل مع خدمات دليل LDAP للمؤسسات.
التكوين
toml
[auth.ldap]
enabled = true
server = "ldap://ldap.example.com:389"
bind_dn = "cn=admin,dc=example,dc=com"
bind_password = "password"
user_base = "ou=users,dc=example,dc=com"
user_filter = "(uid={username})"Active Directory
toml
[auth.ldap]
server = "ldap://dc.example.com:389"
bind_dn = "cn=Administrator,cn=Users,dc=example,dc=com"
bind_password = "password"
user_base = "cn=Users,dc=example,dc=com"
user_filter = "(sAMAccountName={username})"مصادقة PAM
استخدام حسابات نظام Linux للمصادقة.
التكوين
toml
[auth.pam]
enabled = true
service = "sirrchat"ملف تكوين PAM
إنشاء /etc/pam.d/sirrchat:
auth required pam_unix.so
account required pam_unix.soمصادقة قاعدة البيانات
المصادقة التقليدية باسم المستخدم وكلمة المرور.
التكوين
toml
[auth.database]
enabled = true
password_hash = "bcrypt" # bcrypt، argon2، scryptإنشاء مستخدم
bash
sirrmeshd user create \
--username [email protected] \
--password secretpasswordالمصادقة متعددة العوامل (MFA)
TOTP
كلمة مرور لمرة واحدة مبنية على الوقت.
toml
[auth.mfa]
enabled = true
issuer = "SirrMesh"تمكين MFA
bash
sirrmeshd mfa enable --user [email protected]مفاتيح الأجهزة
دعم مفاتيح الأجهزة FIDO2/WebAuthn.
toml
[auth.mfa.webauthn]
enabled = true
rp_name = "SirrMesh Mail Server"بروتوكولات المصادقة
آليات SASL
آليات مصادقة SASL المدعومة:
- PLAIN: كلمة مرور نص عادي (يتطلب TLS)
- LOGIN: مصادقة تسجيل الدخول
- CRAM-MD5: مصادقة التحدي والاستجابة
- SCRAM-SHA-256: مصادقة آمنة
- BLOCKCHAIN: مصادقة بلوكتشين مخصصة
مثال التكوين
toml
[auth.sasl]
mechanisms = ["PLAIN", "LOGIN", "BLOCKCHAIN"]
require_tls = trueالتحكم في الوصول
القائمة البيضاء لـ IP
toml
[auth.access_control]
allowed_ips = ["192.168.1.0/24", "10.0.0.0/8"]القائمة السوداء لـ IP
toml
[auth.access_control]
blocked_ips = ["203.0.113.0/24"]القيود الجغرافية
toml
[auth.geo]
enabled = true
allowed_countries = ["US", "GB", "CA"]إدارة الجلسات
تكوين الجلسة
toml
[auth.session]
# مهلة الجلسة (بالثواني)
timeout = 3600
# الحد الأقصى للجلسات المتزامنة
max_sessions = 10
# طول رمز الجلسة
token_length = 32تخزين الجلسة
- الذاكرة: سريع ولكن غير دائم
- Redis: إدارة جلسات موزعة
- قاعدة البيانات: تخزين دائم
toml
[auth.session.storage]
type = "redis"
redis_url = "redis://localhost:6379/0"سياسة كلمة المرور
متطلبات كلمة المرور
toml
[auth.password_policy]
min_length = 12
require_uppercase = true
require_lowercase = true
require_digits = true
require_special = trueسجل كلمات المرور
toml
[auth.password_policy]
remember_count = 5 # تذكر آخر 5 كلمات مرور
expiry_days = 90 # انتهاء الصلاحية بعد 90 يومًاميزات الأمان
الحماية من القوة الغاشمة
toml
[auth.security]
max_attempts = 5
lockout_duration = 300 # 5 دقائقكشف الشذوذ
toml
[auth.anomaly_detection]
enabled = true
alert_on_new_ip = true
alert_on_new_device = trueسجلات التدقيق
الأحداث المسجلة
- محاولات تسجيل الدخول (نجاح/فشل)
- تغييرات كلمة المرور
- تغييرات حالة MFA
- إنشاء/تدمير الجلسة
صيغة السجل
json
{
"timestamp": "2025-01-15T10:30:00Z",
"event": "login_success",
"user": "[email protected]",
"ip": "192.168.1.100",
"method": "blockchain"
}مصادقة API
مفاتيح API
bash
sirrmeshd api-key create --user [email protected]OAuth 2.0
toml
[auth.oauth]
enabled = true
provider = "custom"
client_id = "sirrchat"
client_secret = "secret"أفضل الممارسات
- استخدم TLS دائمًا: تشفير بيانات اعتماد المصادقة أثناء النقل
- تمكين MFA: تحسين أمان الحساب
- تدوير المفاتيح بانتظام: تحديث مفاتيح API وكلمات المرور
- مراقبة الشذوذ: إعداد إشعارات التنبيه
- مبدأ أقل امتياز: منح الأذونات الضرورية فقط
الوثائق ذات الصلة: