امنیت سرور لینوکس: امن سازی لاگین روت

در سیستم عامل لینوکس اکانت روت (root) به کل سیستم دسترسی دارد. بنابرین باید دسترسی به روت تا حد امکان محدود و دشوار باشد تا هکرها نتوانند به راحتی دسترسی روت پیدا کنند.

 

بستن اتصال ssh برای root

اولین مرحله در امن سازی اکانت root در لینوکس، بستن دسترسی ssh برای این اکانت است. برای این کار فایل /etc/ssh/sshd_config را ویرایش کرده و خط زیر را به آن اضافه کنید:

PermitRootLogin no

در صورتی که می‌خواهید اکانت روت همچنان قابلیت اتصال ssh با کلید خصوصی شما را داشته باشد، می‌توانید به جای no از آپشن prohibit-password استفاده کنید:

PermitRootLogin prohibit-password

 

افزایش دفعات هش کردن رمز عبور روت

با افزایش دفعاتی که رمز عبور شما هش (hash) می‌شود، امنیت لاگین به سرور لینوکسی شما نیز افزایش پیدا می‌کند؛‌ زیرا هکر باید برای کرک کردن رمز عبور روت، هش‌های بیشتری را پردازش کند. بصورت پیشفرض در سیستم‌های لینوکسی، shadow پنج هزار بار رمز عبور شما را هش می‌کند. با ویرایش آپشن زیر در فایل /etc/pam.d/passwd می‌توانید دفعات هش رمز عبور را افزایش دهید، اما به خاطر داشته باشید که با افزایش این عدد، لاگین شما به سرور لینوکس هم کندتر خواهد شد.

password required pam_unix.so sha512 shadow nullok rounds=65536

 

رمز عبور شما بعد از انجام این تنظیمات به صورت خودکار هش مجدد نمی‌شود، بنابرین باید بعد از انجام تغییرات،‌ یک بار رمز عبور خود را تنظیم کنید:

passwd $username

 

لاگین امن با اکانت روت

روش‌های زیاد و بدافزارهای فراوانی وجود دارند که یک هکر می‌تواند با استفاده از آن‌ها رمز عبور اکانت روت (root) را شنود یا اصطلاحا اسنیف کند. به همین جهت بهتر است از روش‌های سنتی برای ورود به اکانت روت استفاده نشود. البته بهتر است کلا از اکانت روت برای لاگین به سرور لینوکس استفاده نشود، اما این راهکار همیشه قابل اجرا نیست.

هیچ وقت به صورت مستقیم به اکانت روت سرور لینوکس لاگین نکنید؛ ترجیحا از اکانت شخصی خود هم برای ارتقای دسترسی به روت استفاده نکنید. برای این کار یک حساب کاربری مجزا که فقط برای دسترسی روت استفاده می‌شود ایجاد کنید (بهتر است این راهکار در اولین فرصت بعد از نصب سرور لینوکس انجام شود):

useradd admin

یک رمز عبور پیچیده هم برای آن انتخاب کنید:

passwd admin

سپس با ویرایش فایل /etc/sudoers.d/admin-account و اضافه کردن خط زیر، دسترسی سودو (sudo) یا سوپر یوزر را برای این اکانت فعال کنید:

admin ALL=(ALL) ALL

 

 استفاده از کیبورد امن لاگین ترمینال لینوکس

کلید امن لاگین (Secure Attention Key)، ترکیبی از کلیدهای کیبورد است که پروسه‌های اضافه در بک گراند صفحه لاگین ترمینال را می‌بندد تا از عدم وجود پروسه بدافزارها (تروجان و نرم افزارهای جاسوسی که برای گرفتن یا شنود رمز عبور استفاده می‌شوند) اطمینان حاصل کند. بنابراین قبل از وارد کردن کلمه عبور اکانت سرور حتما این کلیدهای لاگین امن را وارد کنید.

 

فعال سازی کیبورد امن لاگین سرور

توالی کلیدهای امن (SAK) در سرورهای لینوکسی فعال است. این توالی به صورت پیشفرض ALT+SYSRQ+K است. اما این کلیدها فقط زمانی کار می‌کنند که کرنل لینوکس با پشتیبانی از sysrq کامپایل شده باشد. بنابرین پیشنهاد می‌شود برای استفاده از SAK دنباله کلیدهای خود را در loadkeys تعریف کنید. با توجه به اینکه ctrl+alt+del از قبل برای ریبوت سرور رزرو شده است، ما در این مقاله از ctrl-alt-pause استفاده می‌کنیم. برای تعریف این دنباله دستور زیر را در فایل rc.sysinit (یا rc.local) اضافه کنید:

echo "control alt keycode 101 = SAK" | /bin/loadkeys

 

حالا می‌توانید با خیال راحت قبل از وارد کردن رمز اکانت روت، دنباله مذکور را وارد کنید تا تمام برنامه‌هایی که /dev/console را باز کرده‌اند، بسته شوند. ممکن است پراسس‌ها یا برنامه‌هایی هم به صورت ناخواسته بسته شوند، به خصوص برنامه‌هایی که به اشتباه /dev/console را باز کرده‌اند. در این صورت به جای لینوکس، توزیع و پکیج‌هایی که از آن استفاده می‌کنید را سرزنش کنید. می‌توانید از دستور زیر برای مشاهده پراسس‌هایی که با زدن کلید امن لاگین بسته می‌شوند، استفاده کنید.

# ls -l /proc/[0-9]*/fd/* | grep console

l-wx------    1 root     root           64 Mar 18 00:46 /proc/579/fd/0 -> /dev/console