مقدمه
تمامی ماشینهای مبتنی بر لینوکس با یک کاربر روت پیشفرض که تمامی امتیازات را روی سیستم دارد، به صورت پیشفرض نصب میشوند؛ به طور پیشفرض، شما همیشه به عنوان کاربر روت (سوپرکاربر) عمل میکنید. بهترین شیوههای امنیتی توصیه میکنند که ورود روت را از طریق SSH غیرفعال کنید تا از دسترسی غیرمجاز به ماشین مبتنی بر لینوکس خود جلوگیری کنید. غیرفعال کردن ورود روت، دسترسی روت را از طریق SSH به ماشین لینوکس شما مسدود میکند، که به این معنی است که هیچکس نمیتواند از امتیازات نامحدود بهره ببرد. با پیروی از شیوههای امنیتی توصیهشده، شما باید یک کاربر اضافی با تقریباً تمامی امتیازات سوپرکاربر ایجاد کنید تا به حساب وارد شوید.
در این آموزش، شما ورود روت را در اوبونتو غیرفعال خواهید کرد تا از دسترسی غیرمجاز روت از طریق SSH جلوگیری کرده و امنیت سیستم مبتنی بر لینوکس خود را بهبود بخشید.
پیش نیازها
برای انجام این آموزش، شما به موارد زیر نیاز دارید:
- یک سرور اوبونتو 20.04 با یک کاربر غیر روت که دارای امتیازات sudo باشد، فایروال و حداقل 1 گیگابایت RAM، که میتوانید آن را با دنبال کردن راهنمای راهاندازی سرور اولیه اوبونتو 20.04 تنظیم کنید.
مرحله 1 — ورود به سیستم و بررسی auth.log
در این مرحله، شما از طریق کاربر غیر روت خود که دارای امتیازات sudo است به سرور وارد میشوید تا تلاشهای احراز هویت را بررسی کنید. با بررسی لاگ احراز هویت، شما ممکن است هم تلاشهای ورود مجاز و هم غیرمجاز را مشاهده کنید.
در طول مراحل پیشنیاز، یک کاربر جدید ایجاد کردهاید و آن کاربر را به گروه sudo اضافه کردهاید تا امتیازات مدیریتی دریافت کند. شما از این کاربر sudo برای دسترسی به سیستم خود استفاده خواهید کرد، زیرا پس از غیرفعال کردن ورود روت نمیتوانید به عنوان کاربر روت وارد شوید.
بسته به روش ورود انتخابی خود، از SSH برای ورود به سرور استفاده کنید. اگر در طول راهاندازی اولیه سرور از کلید SSH برای ورود به حساب روت استفاده کردهاید، باید از مکانیزم مبتنی بر کلید استفاده کنید، زیرا احراز هویت با رمز عبور در زمان استفاده از ورود مبتنی بر کلید غیرفعال است. در غیر این صورت، از ورود مبتنی بر رمز عبور با رمز عبور کاربر sudo استفاده کنید.
ssh sammy@your_server_ip
اگر از روش ورود مبتنی بر کلید استفاده میکنید، از دستور زیر برای ورود به سرور به عنوان کاربر sudo استفاده کنید:
ssh -i your_private_key sammy@your_server_ip
پرچم -i
به فایل هویتی اشاره میکند که از آن کلید خصوصی شما برای احراز هویت خوانده میشود.
سپس، فایل auth.log را با استفاده از دستور زیر بررسی کنید:
cd /var/log/
sudo cat auth.log
در صورت درخواست رمز عبور خود را وارد کنید.
خروجی مشابه این را دریافت خواهید کرد:
Output
May 29 18:46:32 ubuntu sshd[3886]: Disconnected from invalid user cally 43.155.90.144 port 47454 [preauth]
May 29 18:51:56 ubuntu sshd[3890]: Received disconnect from 195.38.129.16 port 10017:11: Bye Bye [preauth]
May 29 18:51:56 ubuntu sshd[3890]: Disconnected from authenticating user root 195.38.129.16 port 10017 [preauth]
May 29 18:52:24 ubuntu sshd[3892]: Received disconnect from 178.128.234.248 port 58660:11: Bye Bye [preauth]
May 29 18:52:24 ubuntu sshd[3892]: Disconnected from authenticating user root 178.128.234.248 port 58660 [preauth]
May 29 18:52:34 ubuntu sshd[3894]: Received disconnect from 43.134.106.128 port 33854:11: Bye Bye [preauth]
May 29 18:52:34 ubuntu sshd[3894]: Disconnected from authenticating user root 43.134.106.128 port 33854 [preauth]
May 29 18:53:07 ubuntu sshd[3896]: Invalid user projects from 176.183.60.72 port 42070
May 29 18:53:07 ubuntu sshd[3896]: Received disconnect from 176.183.60.72 port 42070:11: Bye Bye [preauth]
May 29 18:53:07 ubuntu sshd[3896]: Disconnected from invalid user projects 176.183.60.72 port 42070 [preauth]
May 29 18:57:27 ubuntu sshd[3900]: Received disconnect from 92.255.85.135 port 20436:11: Bye Bye [preauth]
May 29 18:57:27 ubuntu sshd[3900]: Disconnected from authenticating user root 92.255.85.135 port 20436 [preauth]
May 29 19:06:40 ubuntu sshd[3903]: Invalid user default from 27.71.207.190 port 57513
May 29 19:06:41 ubuntu sshd[3903]: Connection closed by invalid user default 27.71.207.190 port 57513 [preauth]
...
پس از ورود به سیستم و بررسی لاگ احراز هویت، شما ممکن است درخواستهای غیرمجاز زیادی را مشاهده کنید که سرور شما دریافت کرده است. این میتواند نشان دهد که باید ورود روت را غیرفعال کرده و کلیدها و رمزهای عبور خود را به طور منظم تغییر دهید.
مرحله 2 — غیرفعال کردن ورود روت
در این مرحله، شما فایل sshd_config را برای غیرفعال کردن ورود روت و سپس راهاندازی مجدد سرویس sshd برای خواندن پیکربندی پس از اصلاحات باز خواهید کرد.
فایل sshd_config شامل تنظیمات SSH است که پارامترهای استفادهشده توسط سرویس sshd را ذخیره میکند. سرویس sshd مسئول مدیریت اتصالات SSH است. برای اعمال تغییرات پیکربندی، باید سرویس sshd را مجدداً راهاندازی کنید.
sudo nano /etc/ssh/sshd_config
فایل را مرور کنید و به دنبال خط PermitRootLogin بگردید:
Output
...
#LoginGraceTime 2m
PermitRootLogin yes
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10
...
سپس، مقدار PermitRootLogin
را از yes
به no
تغییر دهید:
Output
...
#LoginGraceTime 2m
PermitRootLogin no
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10
...
فایل را ذخیره کرده و ببندید، سپس سرویس sshd را برای اعمال تغییرات پیکربندی مجدداً راهاندازی کنید:
sudo systemctl restart sshd
مرحله 3 — آزمایش ورود روت
پس از غیرفعال کردن ورود روت، سعی کنید با استفاده از SSH به عنوان کاربر روت وارد شوید. برای ورود با استفاده از رمز عبور یا کلید SSH از دستورات زیر استفاده کنید:
ssh root@your_server_ip
ورود به سیستم به عنوان روت با پیام خطا مانند این مواجه خواهد شد:
root@your_server_ip: Permission denied (publickey).
برای دسترسی مجدد به سرور، از اعتبارنامههای کاربر غیر روت که دارای امتیازات sudo است برای ورود استفاده کنید:
ssh sammy@your_server_ip
نتیجه
در این مقاله، شما پیکربندی sshd را برای غیرفعال کردن ورود روت در اوبونتو انجام دادید. اکنون میدانید چگونه ورود روت را به ماشینهای مبتنی بر لینوکس خود غیرفعال کنید و بدین ترتیب امنیت بیشتری برای سیستمهای خود فراهم کنید.