Skip to content

نظام المصادقة

يوفر SirrMesh طرق مصادقة مرنة متعددة، تدعم كل شيء من كلمات المرور التقليدية إلى توقيعات البلوكتشين الحديثة.

طرق المصادقة

مصادقة البلوكتشين

مصادقة بدون كلمة مرور باستخدام محافظ البلوكتشين.

كيف تعمل

  1. يوقع العميل رسالة عشوائية باستخدام المفتاح الخاص
  2. يتحقق الخادم من التوقيع ويستعيد عنوان المحفظة
  3. يتم التحقق من تطابق العنوان مع حساب المستخدم

مثال التكوين

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 user@example.com \
  --password secretpassword

المصادقة متعددة العوامل (MFA)

TOTP

كلمة مرور لمرة واحدة مبنية على الوقت.

toml
[auth.mfa]
enabled = true
issuer = "SirrMesh"

تمكين MFA

bash
sirrmeshd mfa enable --user user@example.com

مفاتيح الأجهزة

دعم مفاتيح الأجهزة 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": "user@example.com",
  "ip": "192.168.1.100",
  "method": "blockchain"
}

مصادقة API

مفاتيح API

bash
sirrmeshd api-key create --user user@example.com

OAuth 2.0

toml
[auth.oauth]
enabled = true
provider = "custom"
client_id = "sirrchat"
client_secret = "secret"

أفضل الممارسات

  1. استخدم TLS دائمًا: تشفير بيانات اعتماد المصادقة أثناء النقل
  2. تمكين MFA: تحسين أمان الحساب
  3. تدوير المفاتيح بانتظام: تحديث مفاتيح API وكلمات المرور
  4. مراقبة الشذوذ: إعداد إشعارات التنبيه
  5. مبدأ أقل امتياز: منح الأذونات الضرورية فقط

الوثائق ذات الصلة:

Released under the GPL 3.0 License.