فعال سازی احراز هویت دو مرحلهای SSH در لینوکس
در این مقاله میخوانید
سرور اختصاصی و مجازی لینوکس از فضاهای میزبانی محبوب بهشمار میروند. مدیریت و پشتیبانی این سرورها ازطریق ارتباط SSH صورت میگیرد؛ ازاینرو، امنیت SSH و حفاظت از آن دربرابر حملههای سایبری و هکرها بسیار اهمیت دارد.
احراز هویت چندمرحلهای یا دومرحلهای (2FA) که تأیید دومرحلهای نیز نامیده میشود، فرایندی امنیتی است که در آن کاربر برای دسترسی به حساب کاربری یا سیستم، باید از دو روش احراز هویت مختلف استفاده کند.
فاکتور اول چیزی است که شما میدانید، یعنی نام کاربری و رمزعبور و فاکتور دوم احراز هویت چیزی است که ممکن است بهعنوان موردی منحصربهفرد داشته باشید (مانند تلفن هوشمند و رمز امنیتی و بیومتریک) تا درخواستهای احراز هویت را تأیید کنید.
درواقع با فعالکردن 2FA، لایه امنیتی دیگری برای احراز هویت در بالای رمزعبور اضافه میکنید که دسترسی مهاجمان به دادهها ازطریق دستگاه شخص یا حساب آنلاین را دشوارتر میکند. احراز هویت دومرحلهای یا تأیید هویت چندعاملی (امنیت 2FA) به شما و کاربرانتان کمک میکند تا خود را دربرابر حملههای فیشینگ و هکرها محفوظ نگه دارید و ورودتان را ایمن کنید.
حال سؤالی که ایجاد میشود، این است که چگونه میتوانیم احراز هویت دومرحلهای را برای SSH در لینوکس فعال کنیم؟ در این مقاله از آموزش لینوکس، نحوه تنظیم و پیکربندی SSH را برای احراز هویت دومرحلهای تحت توزیعهای لینوکس مبتنیبر RedHat و Debian مانند Fedora ،CentOS Stream ،Rocky Linux ،AlmaLinux، اوبونتو ،Debian و Mint به شما آموزش میدهیم. پس تا پایان با ما همراه باشید تا نحوه فعالکردن احراز هویت دومرحلهای برای SSH در لینوکس را فرابگیرید.
خرید سروریسهای لینوکسی با قابلیت پیکربندی SSH از پارس پک
شما میتوانید از این مقاله برای مدیریت سرورهای لینوکس خود استفاده کنید و اگر قصد خرید هر یک از سرویسهای لینوکسی پارس پک را دارید، میتوانید با کارشناسان فروش ما در ارتباط باشید. همچنین، شما میتوانید برای اطلاع از تعرفهها و هزینهها به لینکهای زیر مراجعه کنید.
مراحل ایجاد احراز هویت دومرحلهای برای SSH در لینوکس
بهطورپیشفرض، SSH از ارتباط داده ایمن بین دستگاههای راه دور استفاده میکند؛ اما اگر میخواهید لایه امنیتی دیگری به اتصالات SSH خود بیفزایید، از ماژول Google Authenticator (احراز هویت دومرحلهای) را میتوانید استفاده کنید که به شما امکان میدهد رمز تأیید تصادفی یکبارمصرف (TOTP) را حین اتصال به سرورهای SSH وارد کنید. ناگفته نماند هنگام اتصال باید کد تأیید را با استفاده از گوشی هوشمند یا کامپیوتر شخصی خود وارد کنید.
درحقیقت، Google Authenticator ماژولی منبعباز بهحساب میآید و پیادهسازی رمزهای عبور یکبارمصرفی (TOTP) را شامل میشود که Google توسعه داده است. این برنامه از چندین پلتفرم تلفنهمراه و PAM (ماژول تأیید هویت متصل) پشتیبانی میکند. رمزهای عبور یکبارمصرف یادشده با استفاده از استانداردهای بازِ ایجادشده با OATH Initiative for Open Authentication بهوجود میآیند.
درادامه، مراحل نصب Google Authenticator در لینوکس و ایجاد احراز هویت دومرحلهای را بهتفصیل توضیح میدهیم.
مرحله اول: نصب Google Authenticator در لینوکس
برای ایجاد احراز هویت دومرحلهای، ابتدا باید ماژول گوگل PAM را نصب کنید. در سیستمهای مبتنیبر RedHat، باید پکیج pam-devel را با استفاده از دستور yum نصب کنید:
# yum install google-authenticator -y
در سیستمهای مبتنیبر دبیان نیز، پکیج libpam0g-dev را با استفاده از دستور apt نصب کنید:
$ sudo apt install libpam-google-authenticator -y
برای شناخت کامل کلیدهای SSH و OpenSSH مقاله زیر را بخوانید.
مرحله دوم: توکنهای احراز هویت گوگل را ایجاد کنید
هنگامیکه دستور google-authenticator را اجرا میکنید، سؤالهایی به شما نمایش داده میشوند:
# google-authenticator
کافی است عبارت «Y» (بله) را بهعنوان پاسخ در اکثر موقعیتها تایپ کنید. اگر مشکلی رخ داد، میتوانید دستور google-authenticator را دوباره تایپ و تنظیمات را بازنشانی کنید:
Do you want authentication tokens to be time-based (y/n) y
بعد از این سؤال، Secret Key و Emergency Codes خود را دریافت خواهید کرد. این جزئیات را در جایی یادداشت کنید؛ زیرا بعداً برای راهاندازی برنامه Google Authenticator به Secret Key نیاز پیدا خواهید کرد:
# google-authenticator Do you want authentication tokens to be time-based (y/n) y Warning: pasting the following URL into your browser exposes the OTP secret to Google: https://www.google.com/chart?chs=200x200&chld=M|0&cht=qr&chl=otpauth://totp/root@tecmint%3Fsecret%3DCYZF2YF7HFGX55ZEPQYLHOO5JM%26issuer%3Dtecmint Failed to use libqrencode to show QR code visually for scanning. Consider typing the OTP secret into your app manually. Your new secret key is: CYZF2YF7HFGX55ZEPQYLHOM Enter code from app (-1 to skip): -1 Code confirmation skipped Your emergency scratch codes are: 83714291 53083200 80975623 57217008 77496339
در مرحله بعد، Setup Wizard را دنبال و در بیشتر مواقع، پاسخ را بهصورت «Y» (بله) مطابق شکل زیر تایپ کنید:
Do you want me to update your "/root/.google_authenticator" file (y/n) y Do you want to disallow multiple uses of the same authentication token? This restricts you to one login about every 30s, but it increases your chances to notice or even prevent man-in-the-middle attacks (y/n) y By default, tokens are good for 30 seconds and in order to compensate for possible time-skew between the client and the server, we allow an extra token before and after the current time. If you experience problems with poor time synchronization, you can increase the window from its default size of 1:30min to about 4min. Do you want to do so (y/n) y If the computer that you are logging into isn't hardened against brute-force login attempts, you can enable rate-limiting for the authentication module. By default, this limits attackers to no more than 3 login attempts every 30s. Do you want to enable rate-limiting (y/n) y
مرحله سوم: نحوه پیکربندی SSH برای استفاده از Google Authenticator در لینوکس
فایل پیکربندی PAM «/etc/pam.d/sshd» را باز و خط زیر را به پایین فایل اضافه کنید:
auth required pam_google_authenticator.so nullok auth required pam_permit.so
در مرحله بعد، فایل پیکربندی SSH «/etc/ssh/sshd_config» را باز کنید و به پایین بروید تا خط زیر را پیدا کنید:
ChallengeResponseAuthentication no
آن را به «Yes» تغییر دهید:
ChallengeResponseAuthentication yes
درنهایت، سرویس SSH را مجدداً راهاندازی کنید تا تغییرات جدید اعمال شوند:
# systemctl restart sshd Or $ sudo systemctl restart sshd
مرحله چهارم: پیکربندی برنامه Google Authenticator
برنامه Google Authenticator را در تلفن هوشمند خود راهاندازی کنید. روی علامت + کلیک و Enter a Setup Key را انتخاب کنید. اگر این برنامه را ندارید، میتوانید برنامه Google Authenticator را در دستگاههای Android یا iPhone یا Blackberry خود دانلود و نصب کنید. پسازآن، نام کاربری (Account Name) و Secret Key تولیدشده قبلی را وارد کنید.
درادامه، رمزعبور یکبارمصرفی (کد تأیید) ایجاد میشود که بهطورمداوم هر ۳۰ ثانیه در تلفنهمراه شما تغییر میکند.
اکنون هرزمان که بخواهید ازطریق SSH به سیستم وارد شوید، یک کد Google Authenticator (کد تأیید) و رمزعبور از شما خواسته میشود. ناگفته نماند شما فقط ۳۰ ثانیه فرصت دارید تا این کد تأیید را وارد کنید. دقت کنید اگر این زمان را از دست دهید، کد تأیید جدیدی دوباره ایجاد میشود که باید آن را وارد کنید:
login as: tecmint Access denied Using keyboard-interactive authentication. Verification code: Using keyboard-interactive authentication. Password: Last login: Tue Apr 23 13:58:29 2022 from 172.16.25.125 [root@tecmint ~]#
اگر گوشی هوشمند ندارید، میتوانید از افزونه فایرفاکس به نام Authenticator نیز برای احراز هویت دومرحلهای استفاده کنید.
نکته: احراز هویت دومرحلهای با ورود SSH مبتنیبر رمزعبور کار میکند. این یعنی اگر هربار از کلید خصوصی/عمومی SSH استفاده میکنید، دیگر به احراز هویت دومرحلهای نیازی نیست و مستقیماً وارد میشود.
جمعبندی
سرورهای اختصاصی و مجازی لینوکس بهدلیل قابلیتهایشان از محبوبیت بسیاری برخوردارند. امنیت و حفظ دادهها دربرابر حملههای هکرها از دغدغه بسیاری از کاربران بهشمار میرود. همانطورکه میدانید، مدیریت و پشتیبانی این سرورها ازطریق ارتباط SSH صورت میگیرد؛ بههمیندلیل، ایمنسازی SSH بسیار مهم است.
از روشهای برتر ایمنسازی و حفظ SSH درمقابل حملات مخرب و هکرها، احراز هویت دومرحلهای است. درواقع، احراز هویت دومرحلهای به تقویت فرایند اعتبارسنجی سرویسی خاص بسیار کمک میکند. در این مقاله از آموزش سیستم عامل، نحوه ایجاد احراز هویت دومرحلهای برای SSH در لینوکس را با استفاده از Google Authenticator گامبهگام آموزش دادیم. با استفاده از این آموزش، میتوانید بهراحتی این فرایند را برای سیستم خود ایجاد کنید.
سؤالات متداول
۱. چگونه میتوانیم احراز هویت دومرحلهای را در لینوکس فعال کنیم؟
SSH را در سیستم خود راهاندازی و نام کاربری خود را وارد کنید. بعد از واردکردن نام کاربری، SSH از شما احراز هویت دو یا چندعاملی (2FA / MFA) را درخواست میکند. اگر روش OTP را روی SMS 2FA تنظیم کردهاید، کد OTP را درج کنید که ازطریق تلفنهمراهتان دریافت میکنید.
۲. چگونه Google Authenticator را روی لینوکس نصب کنیم؟
- EPEL repo را اضافه کنید.
- Google Authenticator را نصب کنید.
- برنامه Initialization را اجرا کنید.
- پس از اجرای دستور، چند سؤال از شما میشود.
- openssh (SSHD) را پیکربندی کنید.
- فایل پیکربندی SSH را ویرایش کنید
- سرویس SSHD را مجدداً راهاندازی کنید.