ssh با احراز هویت دو مرحله ای
شهریور 23, 1403
ارسال شده توسط یاشار انصاری
خوش اومدید به مقاله آموزش راه اندازی ssh با احراز هویت دو مرحله ای
شاید برای شما هم پیش اومده باشه که اطلاعات دسترسی به سرورتون دست افراد دیگه افتاده و تونستن به سرور شما دسترسی پیدا کنن، توی این مقاله قرار با کمک گوگل و احراز هویت دو مرحله ای جلوی اینجور مشکلات رو هر چه سریغ تر بگیریم. احراز هویت دو مرحله ای یا 2FA، هویت کاربر رو از طریق دو عامل مختلف تأیید می کند: “چیزی که کاربر می داند و چیزی که دارد”. احراز هویت دو مرحله ای همچنین با نام های: احراز هویت چند عاملی، تایید دو مرحله ای هم شناخته می شود. در این مقاله آموزشی از مجموعه ابرآس قراره که با نحوه استفاده از ماژول Google Authenticator برای احراز هویت SSH و sudo آشنا بشیم. اپلیکیشن مبایل Google Authenticator می تونه برای سایتها و اپلییکشن هایی که نیاز به احراز هویت دو مرحله ای دارن مفید باشه، به این صورت که با ورود به اپلیکیشن گوگل یک کد که شامل اعداد هستش رو برای مدت زمان مشخصی در اختیارتون قرار میده و بعد از سپری شدن زمان مشخص شده اون کد دیگه اعتباری ندارد و کد جدید ایجاد می شود.راهنمای مقاله
Toggleنصب ماژول Google Authenticator
در ابتدا به عنوان یک کاربر عادی (کاربری غیر از Root) با سطح دسترسی sudo وارد سرور لینوکس خود شوید. بر اساس لینوکس مدنظر خودتون از دستورالعمل های توزیع لینوکس برای نصب ماژول Google Authenticator دنبال کنید.نصب ماژول گوگل برای Ubuntu
برای نصب ماژول گوگل روی سیستم عامل های Debian Base می توان از دستور زیر کمک گرفت:sudo apt-get install libpam-google-authenticator
نصب ماژول گوگل برای بقیه سیستم عامل ها
برای سیستم عامل Fedora می تونید از دستور زیر کمک بگیرید:sudo yum install google-authenticatorبرای سیستم عامل های CentOS, Rocky Linux, Alma Linux می تونید از دستور زیر کمک بگیرید:
sudo yum install epel-release sudo yum install google-authenticator
ایجاد کد احراز هویت گوگل
برای ایجاد QR Code مربوطه می تونیم از دستور زیر کمک بگیریم:google-authenticator -t -f -d -w 3 -e 10 -r 3 -R 30
بررسی آرگومان ها
دستور بالا شامل یکسری آرگومان یا آپشن هستش که میخواییم به بررسی این آپشن ها بپردازیم:- -t: از استفاده TOTP
- -f: ذخیره اطلاعات پیکربندی در google_authenticator./~
- -d: اجازه استفاده مجدد از توکنهای استفاده شده قبلی را ندهید.
- -w 3: اندازه پنجره توکن های مجاز. به طور پیش فرض، توکن ها هر 30 ثانیه یکبار منقضی می شوند.
- -e 10: ایجاد 10 کد پشتیبان اضطراری ایجاد کنید
- -r 3 -R 30- : اعمال محدودیت، هر 30 ثانیه به 3 ورود اجازه دهید.
نکته خیلی خیلی مهم
بعد از اجرای دستور بالا یکسری کد به نمایش در میاد که این هارو یک جای امن نگهداری کنید. (این کد های برای مواقعی هستند که اپلیکیشن گوگل برای احراز هویت دو مرحله ای دسترسی ندارید)اتصال گوگل به SSH
توی این مرحله می خواییم تنظیمات مربوط به احراز هویت دو مرحله ای رو در سیستم عامل خودمون انجام بدیم. این مراحل احراز هویت رمز عبور را غیرفعال می کند. کلیدهای عمومی/خصوصی SSH برای ورود به سیستم مورد نیاز است و 2FA فعال خواهد شد. برای اینکار در ابتدا فایل SSHd رو باید کانفیگ کنیم:sudo vim /etc/pam.d/sshdخط زیر رو به پایین فایل اضافه کنید به این ترتیب گزینه nullok به کاربرانی که هنوز کد 2FA تولید نکردهاند اجازه میدهد وارد شوند، در حالی که اگر کاربر مراحل بالا رو دنبال کرده باشد، کد احراز هویت مورد نیاز است. این گزینه برای وقتی مناسب که کاربر هنوز از احراز هویت 2 مرحله ای استفاده نمیکند. بعد از اینکه همه کاربران کد تولید کردند، می توانید گزینه nullok را حذف کنید تا برای همه نیاز به 2FA باشد.
auth required pam_google_authenticator.so nullokغیرفعال کردن احراز هویت رمز عبور کاربر خط زیر را با اضافه کردن # به ابتدا قسمت مربوطه.
# @include common-auth
کانفیگ سرویس SSH
فایل کانفیگ بمربوط به سرویس SSH رو به روز رسانی می کنیم:sudo vim /etc/ssh/sshd_configمتغییر زیر رو پیدا می کنیم و مقدارش رو به چیزی که می خواییم تغییر میدیم:
ChallengeResponseAuthentication yesهمچنین یکسری متغییر های دیگه هم هست که باید کانفیگ شده باشند، مثل:
PasswordAuthentication no PubkeyAuthentication yes KbdInteractiveAuthentication yes AuthenticationMethods publickey,keyboard-interactive
اعمال تغییرات
برای اعمال تغییرات نیاز که سرویس SSH مجدد راه اندازی بشه که برای اینکار میتونیم از دستور:sudo systemctl restart ssh
احراز هویت دو مرحله ای برای دستورات sudo
برای اینکه موقع اجرای دستورات با sudo از احراز هویت دو مرحله ای استفاده کنیم می تونیم از تنظیمات زیر کمک بگیریم:sudo vim /etc/pam.d/common-authاضافه کردن دستورات زیر به فایل مدنظر:
auth required pam_google_authenticator.so nullok auth required pam_permit.so