امن سازی SSH در لینوکس با تأیید هویت ۲ مرحله ای گوگل
سلام .در این پست قصد دارم آموزش قدم به قدم امن سازی لینوکس با تأیید هویت ۲ مرحله گوگل رو براتون توضیح بدم.
پس با من همراه باشید .
من در اینجا از Ubuntu Server به عنوان سیستم سرور و از Google Authenticator هم به عنوان تأیید کنند ۲ مرحله ای استفاده میکنم .
بریم سر اصل مطلب
بزرگترین مشکلی که ما همیشه باهاش سروکار داریم اینه که روی SSH سرور ما از روشهای مختلف مورد حمله قرار میگیره . یکی از راه های محافظت در مقابله حملات استفاده از Fail2ban بود که آموزش نحوه استفاده و راه اندازیش رو کامل توضیح دادم اگر نخوندینش یه سر بهش بزنین .
اما مشکلی که Fail2ban داره اینه که اگر هکر از تعداد زیادی هاست استفاده کنه اون موقع Fail2ban خیلی کار خاصی نمیتونه انجام بده . پس میریم سراغ روش بعدی یعنی امن کردم SSH با استفاده از تأیید هویت ۲ مرحله ای :
مراحل راه اندازی :
- نصب روی لینوکس (سرور )
- راه اندازی و تنظیم PAM
- پیکربندی OpenSSH
۱. نصب روی لینوکس (سرور )
خوب وارد محیط خط فرمان سرور خودتون بشید و منابع یا (repository) های سرور رو به روز کنید :
۱ |
sudo apt-get update |
حالا با دستور زیر Google Authenticator رو روی سرور نصب کنید .
۱ |
sudo apt-get install libpam-google-authenticator -y |
با دستور بالا ۲ ماژول PAM و libqrencode3 روی سرور ما نصب میشه . ماژول PAM برای ساخت کلید TOTP استفاده میشه که الگوریتم ساخت کلید بر مینای زمان هست . کتابخانه libqrencode3 در برای ایجاد QR کد که شما بتونید با استفاده از دوربین موبایل خودتون ارتباط رو با Google Authenticator برقرار کنید .
۲.راه اندازی و تنظیم PAM :
خوب حالا میریم سراغ تنظیم و راه اندازی
این قسمت درباره گزینه های موثر در امن سازی لینوکس با تأیید هویت ۲ مرحله گوگل هست .
دستور زیر رو وارد کنید تا وارد محیط تنظیمات Google Authenticator بشید :
۱ |
google-authenticator |
بعد از اجرا دستور بالا یه سری سوال از شما میپرسه که با همدیگه اونها رو تکمیل میکنیم .
۱ |
Do you want authentication tokens to be time-based (y/n) |
آیا میخواید توکن رو بر مبنای زمان اجرا کنید (یعنی میخواید از Google Authenticator استفاده کنید ؟) که شما y رو به نشانه تأیید وارد کنید .
حالا باید کلیدی که تولید شده رو داخل نرم افزار Google authenticator خودتون وارد کنید ،اگر برنامه رو ندارید از این لینک ها استفاده کنید اندروید آیفون
اکیدا توصیه میکنم emergency scratch codes خودتون رو در یه جای امن ذخیره کنید . این کد برای مواقعی طراحی شده که شما دسترسی به گوشی نداشتید . در این صورت فقط با داشتن این کد به سرور خودتون میتونید دسترسی داشته باشید . من این قسمت رو با خط چین قرمز مشخص کردم پس دقت کنید !
۱ |
Do you want me to update your "~/.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 و برای عدم تأیید n رو تایپ کنید .
۱ ۲ ۳ ۴ ۵ ۶ |
By default, tokens are good for ۳۰ 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 ۱:30min to about 4min. Do you want to do so (y/n) |
این قسمت ۲ حالت داره :
- اگر n رو وارد کنید بعد از ورود ۳ کد اشتباه در ۱ دقیقه و ۳۰ ثانیه دسترسی شما محدود میشه
- اگر y رو وارد کنید بعد از ورود ۸ کد اشتباه در ۴ دقیقه دسترسی شما محدود میشه .
پیشنهاد من 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 ۳ login attempts every 30s. Do you want to enable rate-limiting (y/n) |
این قسمت هم برای محدود کردن تلاش هست که اگر ۳ کد اشتباه وارد کنید دسترسی شما مسدود میشه .
توضیه من به شما تاید (y) هست.
امن سازی ssh در لینوکس با تأیید هویت ۲ مرحله گوگل
خوب قسمت تنظیم PAM تموم شد و الان باید بریم سراغ پیکربندی SSH.
۳. پیکربندی OpenSSH :
در این مرحله اصلا ارتباط خودتون رو با SSH اصلا قطع نکنید و تا انتها پیش برید .
قطع شدن ارتباط در میانه کار باعث میشه شما به سرور دسترسی نداشته باشید !
برای شروع فایل تنظیمات PAM سرور رو با دستور زیر باز کنید :
۱ |
sudo nano /etc/pam.d/sshd |
این کد رو به فایل بالا اضافه کنید :
۱ |
auth required pam_google_authenticator.so |
در مرحله بعد باید SSH رو تنظیم کنیم که تأیید هویت ۲ مرحله ای رو پشتیبانی کنه .
فایل sshd_config رو با ویرایشگر باز کنید
۱ |
sudo nano /etc/ssh/sshd_config |
دنبال عبارت ChallengeResponseAuthentication بگردید و اون رو از no به yes تغییر بدید.
۱ ۲ ۳ |
# Change to yes to enable challenge-response passwords (beware issues with # some PAM modules and threads) ChallengeResponseAuthentication yes |
حالا فقط کافیه سرویس SSH رو یکبار با استفاده از دستور زیر راه اندازی مجدد (restart) کنید .
۱ |
service ssh restart |
حالا بعد از ارتباط مجدد با SSH بعد از وارد کردن نام کاربری و رمز عبور صحیح از شما verification code میخواد که با وارد کردن عدد ۶ رقمی که google authrnticator به شما میده میتونید به لینوکس خودتون دسترسی داشته باشید .
لذت امن سازی لینوکس با تأیید هویت ۲ مرحله گوگل رو ببرید .
لطفا اگه سوال داشتید بپرسید .