بیشتر نفوذها به حسابهای کاربری با رمز عبور لو رفته اتفاق میافتد: رمز تکراری که در نشت اطلاعات یک سایت دیگر منتشر شده، فیشینگ، یا بدافزاری که رمزهای ذخیرهشده مرورگر را میدزدد. احراز هویت دو مرحله ای (Two-Factor Authentication یا 2FA) یک لایه دوم به ورود اضافه میکند تا حتی با داشتن رمز، ورود بدون دستگاه شما ممکن نباشد. در این مقاله روشهای 2FA را مقایسه میکنیم و فعالسازی آن را برای پنل کاربری سرویسها، سیپنل، وردپرس و SSH سرور توضیح میدهیم.
فهرست مطالب
2FA چیست؟
احراز هویت دومرحلهای یعنی ورود به دو عامل از دو دسته متفاوت نیاز داشته باشد:
- چیزی که میدانید: رمز عبور
- چیزی که دارید: گوشی با اپلیکیشن Authenticator یا کلید سختافزاری
- چیزی که هستید: اثر انگشت یا چهره (معمولاً برای باز کردن قفل دستگاه)
مهاجمی که رمز شما را دارد، به دستگاه شما دسترسی ندارد؛ بنابراین بخش بزرگی از حملات خودکار و سرقت رمز بیاثر میشوند.
مقایسه روشها: پیامک، TOTP و کلید امنیتی
| روش | امنیت | مزیت | ضعف |
|---|---|---|---|
| کد پیامکی (SMS) | پایین تا متوسط | بدون نصب برنامه | آسیبپذیر در برابر تعویض سیمکارت (SIM Swap) و تأخیر یا عدم دریافت پیامک |
| کد ایمیلی | پایین | ساده | اگر ایمیل هک شود، عامل دوم هم از دست میرود |
| TOTP (اپلیکیشن Authenticator) | خوب | آفلاین کار میکند، رایگان و همهجا پشتیبانی میشود | کد را میتوان در صفحه فیشینگ وارد کرد |
| Push Notification | خوب | یک لمس برای تأیید | خطر «خستگی تأیید» با درخواستهای مکرر مهاجم |
| کلید امنیتی و Passkey (FIDO2/WebAuthn) | بسیار بالا | در برابر فیشینگ مقاوم؛ فقط روی دامنه واقعی کار میکند | همه سرویسها پشتیبانی نمیکنند؛ کلید سختافزاری هزینه دارد |
توصیه عملی: هر جا Passkey یا کلید امنیتی پشتیبانی میشود از آن، و در بقیه موارد از TOTP استفاده کنید. پیامک را فقط وقتی گزینه دیگری نیست انتخاب کنید؛ پیامک باز هم بسیار بهتر از نداشتن 2FA است.
انتخاب اپلیکیشن Authenticator
TOTP یک استاندارد باز (RFC ۶۲۳۸) است و همه اپلیکیشنها با هم سازگارند. هنگام انتخاب به این موارد توجه کنید:
- پشتیبانگیری رمزنگاریشده: اگر گوشی گم شود، بدون پشتیبان دسترسی به همه حسابها مشکل میشود. برنامههایی مثل Aegis (اندروید، متنباز) و Ente Auth پشتیبان رمزنگاریشده دارند.
- قفل برنامه: برنامه با اثر انگشت یا رمز باز شود.
- Password Managerها: برخی (مثل Bitwarden یا KeePassXC) TOTP را هم تولید میکنند. راحت است، اما رمز و عامل دوم در یک جا جمع میشوند؛ برای حسابهای حیاتی آنها را جدا نگه دارید.
پنل کاربری و حسابهای سرویس
حساب پنل کاربری هاستینگ مهمترین حساب شماست: با آن میتوان سرور را ریاستارت یا سیستمعامل را دوباره نصب کرد، ایمیل حساب را تغییر داد یا سرویس را تمدید و لغو کرد. اگر پنل کاربری سرویسدهنده شما گزینه احراز هویت دومرحلهای در تنظیمات امنیتی حساب دارد، آن را فعال کنید، کد QR را با اپلیکیشن Authenticator اسکن کنید و کد پشتیبان را در جای امن نگه دارید. در هر حال رمز این حساب باید یکتا و طولانی باشد. همین کار را برای این حسابها هم انجام دهید:
- ایمیلی که برای بازیابی رمز پنلها استفاده میکنید (اولویت اول)
- پنل مدیریت دامنه و DNS
- GitHub یا GitLab (اگر کد و کلیدهای Deploy آنجاست)
- CDN و سرویسهای ابری
برای کمک در امنسازی حسابها، صفحه امنیت حساب کاربری را ببینید.
سیپنل
- وارد cPanel شوید و در بخش Security گزینه Two-Factor Authentication را باز کنید.
- روی Set Up Two-Factor Authentication کلیک کنید.
- کد QR را با اپلیکیشن Authenticator اسکن کنید (یا کلید متنی را دستی وارد کنید).
- کد ۶ رقمی نمایشدادهشده را وارد و Configure Two-Factor Authentication را بزنید.
اگر این گزینه را نمیبینید، ممکن است مدیر سرور آن را فعال نکرده باشد؛ از پشتیبانی بخواهید. حسابهای ایمیل و FTP رمز جداگانه دارند؛ برای آنها رمز قوی و یکتا بگذارید. آموزشهای بیشتر در آموزش سیپنل.
وردپرس
وردپرس بهطور پیشفرض 2FA ندارد و صفحه ورود آن یکی از پرحملهترین صفحات وب است. با یک افزونه شناختهشده مثل Two Factor (افزونه رسمی تیم وردپرس) یا WP 2FA، برای همه کاربران با نقش مدیر و ویرایشگر 2FA را اجباری کنید. پس از فعالسازی:
- کدهای بازیابی را دانلود و نگهداری کنید.
- تعداد کاربران مدیر را به حداقل برسانید.
- اگر از XML-RPC استفاده نمیکنید، آن را ببندید؛ این مسیر 2FA را دور میزند.
سایر اقدامات در راهنمای امنیت وردپرس.
SSH سرور لینوکس
برای SSH، ورود با کلید (بهجای رمز) خودش یک عامل قوی است و اولین قدم است؛ راهنمای امنسازی SSH. برای لایه دوم روی Ubuntu میتوانید TOTP را با ماژول PAM گوگل اضافه کنید:
sudo apt install -y libpam-google-authenticator
google-authenticator # با کاربر خودتان اجرا کنید، نه root
به سوالات پاسخ «y» بدهید، QR را اسکن کنید و کدهای اضطراری را ذخیره کنید. سپس در /etc/pam.d/sshd این خط را اضافه کنید:
auth required pam_google_authenticator.so
و در /etc/ssh/sshd_config (یا یک فایل در /etc/ssh/sshd_config.d/):
KbdInteractiveAuthentication yes
AuthenticationMethods publickey,keyboard-interactive
sudo sshd -t && sudo systemctl restart ssh
هشدار مهم: نشست SSH فعلی را نبندید. در یک ترمینال جدید ورود را آزمایش کنید و فقط وقتی موفق شد، نشست قبلی را ببندید. اگر سرور در دسترس نبود، از کنسول پنل کاربری (VNC/کنسول وب) برای اصلاح استفاده کنید. در Ubuntu، خط @include common-auth در فایل PAM ممکن است باعث درخواست رمز اضافه شود؛ اگر فقط کلید و کد میخواهید، آن خط را کامنت کنید.
کدهای بازیابی و گم شدن گوشی
- هنگام فعالسازی هر 2FA، کدهای بازیابی را چاپ کنید یا در Password Manager رمزنگاریشده نگه دارید؛ نه در همان گوشی.
- برای حسابهای حیاتی دو عامل ثبت کنید (مثلاً اپلیکیشن روی گوشی و یک کلید امنیتی یدکی).
- هنگام تعویض گوشی، قبل از پاک کردن گوشی قدیمی، حسابها را به گوشی جدید منتقل کنید.
- زمان گوشی را خودکار نگه دارید؛ TOTP به ساعت دقیق وابسته است و اختلاف زمان باعث «کد نامعتبر» میشود.
2FA چه چیزی را حل نمیکند؟
2FA جلوی سرقت رمز را میگیرد اما همهچیز نیست. فیشینگ پیشرفته میتواند کد TOTP یا کوکی نشست را هم بدزدد (به همین دلیل Passkey بهتر است)، و آسیبپذیری یک افزونه یا نرمافزار سرور اصلاً از مسیر ورود عبور نمیکند. 2FA را در کنار بهروزرسانی منظم، رمزهای یکتا، اصل حداقل دسترسی و بکاپ استفاده کنید. نگاه کلیتر در معماری Zero Trust.
سوالات متداول
اگر گوشیام گم شود و کد بازیابی نداشته باشم چه کنم؟
باید از طریق فرایند بازیابی هر سرویس (معمولاً با احراز هویت مالکیت حساب) اقدام کنید که زمانبر است. به همین دلیل نگهداری کدهای بازیابی خارج از گوشی ضروری است.
Google Authenticator امن است؟
بله، از استاندارد TOTP استفاده میکند. مهم این است که پشتیبانگیری آن را آگاهانه مدیریت کنید و برنامه را با قفل گوشی محافظت کنید.
2FA سرعت کار را کم نمیکند؟
چند ثانیه در هر ورود. بیشتر سرویسها امکان «به خاطر سپردن این دستگاه» را دارند؛ آن را فقط روی دستگاههای شخصی و امن فعال کنید.
امنیت حساب و سرور را جدی بگیرید
با خدمات امنیت حساب کاربری و امنیت شبکه تراست هاست، لایههای حفاظتی بیشتری به زیرساخت خود اضافه کنید. برای امنسازی SSH و سرور، پشتیبانی سرور در کنار شماست.