چگونه قابلیت های ورود کاربران را در اوبونتو محدود کنیم؟
امنیت در سیستمهای کامپیوتری امری بسیار مهم و حیاتی است. یکی از مواردی که باید در این زمینه به آن توجه کرد، محدود کردن دسترسی کاربران به سیستم است. این کار سبب می شود که ورود غیرمجاز کاربران به اوبونتو ممنوع شود و امنیت شما افزایش می یابد.
با توجه به اهمیت امنیت سیستم، توصیه میشود قابلیت های ورود کاربران را در اوبونتو محدود کنیم. برای این کار، میتوان از ابزارهای مختلفی مانند کنترل دسترسی و تنظیمات کاربری استفاده کرد. همچنین، برای حفاظت از اطلاعات حساس و جلوگیری از تهدیدات امنیتی، توصیه میشود که تنها به کاربرانی که نیاز به دسترسی دارند، دسترسی به سیستم داده شود.
در سیستم عامل اوبونتو، با استفاده از دستور usermod، میتوان قابلیت های ورود کاربران را محدود کرد و بدینطریق از احتمال ورود نامجاز و بدون مجوز به سیستم جلوگیری کرد. در ادامه شما را با روش های مختلف محدود کردن ورود کاربران در اوبونتو را بیان می کنیم.
در صورتی که می خواهید از یک سرور مجازی با سیستم عامل اوبونتو استفاده کنید، می توانید به صفحه خرید سرور مجازی لینوکس سر بزنید و پلن مورد نظرتان و سیستم عاملی که می خواهید را سفارش دهید.
چطور با استفاده از etc/passwd/ دسترسی را محدود کنیم؟
یکی از روشهای محدود کردن قابلیت ورود، تنظیم shell ورود به حساب کاربری با مقدار خاص است.
یک مثال از این کاربر messagebus است که میتوانید با استفاده از دستور grep درون پرونده etc/passwd/ جستجو کنید.
less /etc/passwd | grep messagebus
خروجی
messagebus:x:102:105::/nonexistent:/usr/sbin/nologin
مقدار نهایی به معنای پوسته یا دستوری است که هنگام موفقیت در ورود به سیستم اجرا میشود. در این مورد، مقدار به/usr/sbin/nologin
تنظیم شده است.
اگر سعی کنید با استفاده از «sudo su» به کاربر «messagebus» سوئیچ کنید، این عملیات ناموفق خواهد بود:
sudo su messagebus
خروجی
This account is currently not available.
شما این پیام را دریافت کردهاید چون پوسته (shell) برای messagebus بر روی usr/sbin/nologin/ تنظیم شده است.
وقتی میخواهید از ورود به سیستم کاربری جلوگیری کنید، میتوانید از ابزار usermod استفاده کنید تا پوسته ورود به سیستم پیشفرض کاربر (معمولاً /bin/bash) را به پوستهای ناموجود مانند nologin تغییر دهید.
sudo usermod -s /usr/sbin/nologin username
چگونه با استفاده از etc/shadow/ دسترسی را محدود کنیم؟
روش مشابه دیگری برای محدود کردن دسترسی، استفاده از فایل etc/shadow/ است. این فایل حاوی مقادیر رمزنگاری شده رمز عبور هر کاربر در سیستم است.
شما میتوانید از دستور less برای مشاهده کامل فایل استفاده کنید:
sudo less /etc/shadow
خروجی
Output
. . .
uuidd:*:19105:0:99999:7:::
tcpdump:*:19105:0:99999:7:::
sshd:*:19105:0:99999:7:::
pollinate:*:19105:0:99999:7:::
landscape:*:19105:0:99999:7:::
lxd:!:19180::::::
sammy:$y$j9T$4gyOQ5ieEWdx1ZdggX3Nj1$AbEA9FsG03aTsQhl.ZVMXatwCAvnxFbE/GHUKpjf9u6:19276:0:99999:7:::
در خط آخر، فیلد دوم (که با $y$j9T$4gyO… شروع میشود) شامل مقدار رمزعبور در فرم هش شده است.
حسابهای سیستم با علامت ستاره (*) به جای یک مقدار هش پیچیده قرار دارند. حسابهایی با ستاره در فیلد دوم، هنوز رمزعبور تعیین نشده و بدون تغییر آن، نمیتوان با رمزعبور وارد آنها شد.
با قراردادن علامت تعجب (!) قبل از مقدار هش میتوانید مقدار رمزعبور را غیرفعال کنید (با این کار، حساب با مقدار رمزعبور معادل علامت ستاره محسوب میشود).
دو ابزار میتوانند با «قفل کردن» حساب مشخص شده، این کار را انجام دهند.
دستور passwd با پرچم l- قابل قفل کردن و با پرچم u- قابل باز کردن است.
sudo passwd -l Sammy
sudo less /etc/shadow | grep Sammy
خروجی
sammy:!$y$j9T$4gyOQ5ieEWdx1ZdggX3Nj1$AbEA9FsG03aTsQhl.ZVMXatwCAvnxFbE/GHUKpjf9u6:19276:0:99999:7::::::
همانطور که میبینید، رمزعبور هش شده حفظ شده است، اما با قرار دادن یک ! در ابتدای آن، نامعتبر شده است.
میتوان با وارد کردن دستور مناسب، حساب کاربری را دوباره باز کرد.
sudo passwd -u sammy
با استفاده از دستور usermod، عملیات معادلی در دسترس است. پرچمهای مربوطه به ترتیب L- برای قفل کردن و U- برای باز کردن حساب هستند.
sudo usermod -L sammy
sudo usermod -U sammy
توجه: اگرچه این روش محدود کردن دسترسی به تمام ورودهای مبتنی بر رمزعبور به درستی عمل خواهد کرد، اما روشهای ورود بدون رمزعبور (مانند با کلیدهای ssh) همچنان می توانید دسترسی داشته باشید.
راهنمای محدود کردن دسترسی با etc/nologin/
در برخی موارد، ممکن است نیاز به غیرفعال کردن تمام ورودهای حساب کاربری، به جز روت، وجود داشته باشد.
این مسئله ممکن است به دلیل نگهداری عمیق یا به دلیل هک شدن یک یا چند حساب کاربری شما باشد.
در هر صورت، این کار با ایجاد یک فایل در etc/nologin/ انجام میشود:
sudo touch /etc/nologin
این کار باعث میشود که هیچ حسابی که دسترسی سوپریوزر ندارد، نتواند وارد سیستم شود.
اگر فایل etc/nologin/ خالی باشد، کاربر فقط به پوسته محلی خود باز میگردد بدون توضیحی.
آنچه واقعاً اتفاق میافتد این است که محتویات فایل به کاربر بازگردانده میشود. اگر پیامی را اضافه کنید، کاربران توضیحی برای شکست ورود دریافت خواهند کرد.
sudo sh -c 'echo "Planned maintenance. Log in capabilities will be restored at 1545 UTC" > /etc/nologin'
حالا وقتی می خواهید با رمز ورود وارد شوید، این پیام را دریافت می کنید:
ssh sammy@host
خروجی
sammy@host's password:
Planned maintenance. Log in capabilities will be restored at 1545 UTC
Connection closed by host
کاربران روت هنوز هم می توانند به طور معمول وارد شوند (نحوه دادن دسترسی روت به یوزر در اوبونتو را می توانید در مقاله مطالعه کنید.). فایل etc/nologin/ را برای معکوس کردن محدودیت ورود حذف کنید:
sudo rm /etc/nologin
فرمان false
فرمان false یک فرمان ساده است که برای بازگشت یک کد وضعیت غیرصفر برای نشان دادن شکست استفاده میشود. بیایید این فرمان را اجرا کنیم و کد وضعیت آن را بررسی کنیم.
$ false
$ echo $?
1
false برعکس دستور true است که همیشه یک کد وضعیت صفر را برمی گرداند که نشان دهنده موفقیت است:
$ true
$ echo $?
0
می توانیم از آنها در دستور Bash while برای اجرای مکرر کد استفاده کنیم:
while false; do
echo "This code will never run!"
done
while true; do
echo "This code will run forever!"
done
اولین بلوک کد هرگز اجرا نمی شود زیرا false همیشه نشان دهنده شکست است، در حالی که true همیشه نشان دهنده موفقیت است:
$ ./script
This code will run forever!
This code will run forever!
This code will run forever!
...
با اینکه دستور false هدف اصلی خودش نیست، میتوانیم همچنان از آن برای جلوگیری از ورود کاربران استفاده کنیم، به همان شکلی که با دستور nologin انجام دادیم. با این حال، false پیغام خطا را چاپ نمیکند و بلافاصله خروج از پوسته را ایجاد میکند که ممکن است باعث ایجاد ابهام شود.
$ sudo usermod baeldung -s /bin/false
$ sudo su - baeldung
$ echo $?
1
این بدان معنی است که ما نمی توانیم پیام های خطا را مانند nologin در بخش قبلی سفارشی کنیم.
دستور کاربری usermod
به طریقی شبیه به دستور پسورد، میتوانیم از دستور کاربری usermod با پرچمهای L- یا U- برای قفل کردن یا بازکردن یک حساب کاربری استفاده کنیم.
$ sudo usermod -L baeldung
$ su - baeldung
Password:
su: Authentication failure
$ sudo usermod -U baeldung
$ su - baeldung
Password:
$ echo $? # Success
0
با استفاده از پوستهی nologin، ورود برخی کاربران خاص را مسدود کنید.
پوستهی nologin در مسیر/usr/sbin/nologin
قرار دارد.
این دستور مکان پوستهی nologin را به شما نشان میدهد.
$ which nologin/usr/sbin/nologin
حالا برای تنظیم پوسته کاربر به nologin، میتوانید از دستور usermod استفاده کنید. در اینجا میخواهیم پوسته کاربر “priyanshu” را به nologin تغییر دهیم.
usermod -s /usr/sbin/nologin priyanshu
در نهایت شما می توانید یوزرهای لینوکس را لیست و مشاهده کنید که می توانید از طریق مقاله نحوه لیست و مشاهده یوزرهای لینوکس این کار را انجام دهید.
سخن آخر
محدود کردن قابلیت ورود کاربران در اوبونتو میتواند به امنیت سیستم کمک کند. اگر یک حمله کننده به یک حساب کاربری دسترسی پیدا کند، ممکن است بتواند به اطلاعات حساب دسترسی پیدا کند و به صورت نادرست از آن استفاده کند. با محدود کردن قابلیت ورود، کاربران فقط به سطح دسترسی لازم برای انجام کارهای خود دسترسی خواهند داشت و نمیتوانند به سطح دیگری دسترسی پیدا کنند. همچنین، محدود کردن قابلیت ورود به سیستم، میتواند در جلوگیری از اشتباهات انسانی مانند استفاده از رمزعبور ضعیف کمک کند. ما در این مقاله روش های مختلفی را برای محدود کردن ورود کاربران در اوبونتو بیان کردیم. در صورتی که راهکار دیگری می دانید با ما به اشتراک بگذارید و اگر سوالی دارید در قسمت نظرات مطرح کنید تا در سریع ترین زمان ممکن پاسخ دهیم.
سوالات متداول:
چگونه میتوان با استفاده از دستور usermod، ورود کاربران را در اوبونتو محدود کرد؟
برای محدود کردن دسترسی کاربر با استفاده از دستور usermod، باید دستور زیر را بهصورت sudo usermod -s /usr/sbin/nologin username وارد کنید. در این دستور، باید جایگزین username نام کاربری موردنظر خود را کنید.
نقش عبارت nologin در دستور usermod چیست؟
استفاده از آپشن nologin در دستور usermod، بهمنظور ایجاد محدودیت در دسترسی کاربر به سیستم است.
آیا میتوان دسترسی تمامی کاربران به جز کاربر root را محدود کرد؟
بله، با ایجاد فایل /etc/nologin میتوان دسترسی تمامی کاربران به جز کاربر root را محدود کرد.