انتقل إلى المحتوى الرئيسي
العودة إلى الفئة

إعداد 2FA لـ SSH: الأمان مع Google Authenticator

أعدّ المصادقة الثنائية (2FA) لوصول SSH. وحدة PAM لـ Google Authenticator، إعداد TOTP لـ SSH، رموز النسخ الاحتياطي، الاختبار ودليل استكشاف الأخطاء.

وقت القراءة: 12 دقيقة الأمان
2faمصادقة ثنائيةgoogle authenticatortotpأمان sshpamlinuxmfa

جدول المحتويات

إعداد 2FA لـ SSH: الأمان مع Google Authenticator

بينما يحسّن استخدام مفاتيح SSH الأمان، توفر المصادقة الثنائية (2FA) طبقة أمان إضافية. حتى لو حصل شخص ما على مفتاح SSH الخاص بك، لا يمكنه الوصول للنظام بدون رمز 2FA.

لماذا 2FA مهمة؟

  • حماية من سرقة المفاتيح: حتى لو سُرق مفتاح SSH، يُطلب رمز 2FA
  • مقاومة Brute-Force: مجموعة كلمة المرور + 2FA أقوى بكثير
  • الامتثال: معايير مثل PCI-DSS و HIPAA تتطلب 2FA
  • إعداد سهل: يمكن تفعيله في دقائق

المتطلبات

  • خادم Linux (Ubuntu/Debian/CentOS)
  • هاتف ذكي (Google Authenticator أو Authy أو تطبيق مماثل)
  • وصول SSH موجود

لا تغلق اتصال SSH الحالي أثناء إعداد 2FA. اختبر من طرفية جديدة بعد كل خطوة. الإعداد الخاطئ قد يحظر الوصول للخادم تمامًا.

تثبيت وحدة PAM لـ Google Authenticator

hljs bash
# Ubuntu/Debian
sudo apt update
sudo apt install libpam-google-authenticator -y

# CentOS/AlmaLinux
sudo dnf install epel-release -y
sudo dnf install google-authenticator -y

إعداد TOTP

hljs bash
# شغّل كمستخدم تريد تفعيل 2FA له
google-authenticator

عند تشغيل الأمر ستُطرح الأسئلة التالية:

Do you want authentication tokens to be time-based (y/n) y

في هذه النقطة سيُعرض رمز QR ومفتاح سري. امسح رمز QR بتطبيق Google Authenticator.

Do you want me to update your "/home/user/.google_authenticator" file? (y/n) y
Do you want to disallow multiple uses of the same authentication token? (y/n) y
Do you want to increase the window size? (y/n) n
Do you want to enable rate-limiting? (y/n) y

حفظ رموز النسخ الاحتياطي

أثناء الإعداد تُعرض 5 رموز احتياطية. احفظها في مكان آمن:

Your emergency scratch codes are:
  12345678
  87654321
  11223344
  44332211
  99887766

احفظ رموز النسخ الاحتياطي في مكان آمن (مدير كلمات المرور، ورقة، إلخ). إذا فقدت هاتفك، ستكون هذه الرموز طريقك الوحيد للدخول.

إعداد PAM

hljs bash
sudo nano /etc/pam.d/sshd
# أضف في بداية /etc/pam.d/sshd:
auth required pam_google_authenticator.so

إعداد SSH

hljs bash
sudo nano /etc/ssh/sshd_config
# تفعيل المصادقة التفاعلية بلوحة المفاتيح
ChallengeResponseAuthentication yes

# ضبط طرق المصادقة
# الخيار 1: 2FA فقط
AuthenticationMethods keyboard-interactive

# الخيار 2: مفتاح SSH أو 2FA
# AuthenticationMethods publickey keyboard-interactive

# الخيار 3: مفتاح SSH و 2FA (الأكثر أمانًا)
AuthenticationMethods publickey,keyboard-interactive

UsePAM yes
hljs bash
# إعادة تشغيل خدمة SSH
sudo systemctl restart sshd

مجموعة مفتاح SSH + 2FA (موصى به)

hljs bash
sudo nano /etc/ssh/sshd_config
AuthenticationMethods publickey,keyboard-interactive
PasswordAuthentication no
ChallengeResponseAuthentication yes
UsePAM yes
hljs bash
sudo nano /etc/pam.d/sshd
# تعليق مصادقة كلمة المرور:
# @include common-auth

# إضافة 2FA
auth required pam_google_authenticator.so

الاختبار

hljs bash
# افتح طرفية جديدة وحاول الاتصال
ssh مستخدم@ip_الخادم

# الإخراج المتوقع:
# Verification code: (أدخل الرمز من Google Authenticator)

استكشاف الأخطاء

رمز 2FA غير مقبول

hljs bash
# فحص وقت الخادم
date
timedatectl

# مزامنة NTP
sudo apt install ntp -y
sudo systemctl restart ntp

الاسترداد عند الإغلاق

hljs bash
# الاتصال عبر وصول الكونسول
# تعطيل 2FA مؤقتًا
sudo nano /etc/pam.d/sshd
# أضف # قبل: auth required pam_google_authenticator.so

sudo systemctl restart sshd

إعفاء مستخدمين محددين من 2FA

hljs bash
sudo nano /etc/pam.d/sshd
# إعفاء مجموعات محددة
auth [success=1 default=ignore] pam_succeed_if.so user ingroup notp
auth required pam_google_authenticator.so
hljs bash
# إنشاء مجموعة notp وإضافة مستخدم
sudo groupadd notp
sudo usermod -aG notp deploy_user

تطبيقات مثل Authy أو 1Password توفر نسخًا احتياطيًا سحابيًا ودعم أجهزة متعددة مقارنةً بـ Google Authenticator. فكّر في هذه البدائل للبيئات المؤسسية.

الخلاصة

إعداد 2FA لـ SSH يحسّن أمان الخادم بشكل كبير. مع وحدة PAM لـ Google Authenticator، يمكنك تفعيل 2FA القائم على TOTP في دقائق. مجموعة مفتاح SSH + 2FA تشكّل أحد أقوى طرق المصادقة المتاحة.