آموزش روشهای محدود کردن ورود کاربران در اوبونتو
در این مقاله میخوانید
یکی از بخشهای اساسی مدیریت سیستم، پیکربندی و مدیریت کاربرانی است که از آن استفاده میکنند. قسمت مهمی از این وظیفه نیز شامل نظارت بر ورود کاربران است. در این مطلب از آموزش اوبونتو بلاگ پارس پک، روشهای محدود کردن ورود کاربران در اوبونتو را با یکدیگر مرور خواهیم کرد. این آموزش براساس توزیع Ubuntu 22.04 است؛ بااینحال، شما میتوانید از مفاهیم آن برای توزیعهای دیگر نیز استفاده کنید.
خرید سرور لینوکس با سیستم اوبونتو از پارس پک
شما میتوانید از این مقاله برای مدیریت سرورهای لینوکس با سیستم اوبونتو خود استفاده کنید و اگر قصد خرید هر یک از سرویسهای لینوکسی پارس پک را دارید، میتوانید با کارشناسان فروش ما در ارتباط باشید. همچنین، شما میتوانید برای اطلاع از تعرفهها و هزینهها به لینکهای زیر مراجعه کنید.
نحوه محدودسازی دسترسی با استفاده از /etc/passwd
یکی از روشهای متداول محدودسازی کاربران، تنظیم پوسته Login کردن کاربر روی مقداری خاص است. درادامه، نحوه انجام این کار را برای کاربر messagebus نشان دادهایم. توجه کنید که در این مثال، از grep برای جستوجو در فایل /etc/passwd استفاده کردهایم:
less /etc/passwd | grep messagebus
خروجی این دستور مشابه زیر است:
Output messagebus:x:102:105::/nonexistent:/usr/sbin/nologin
مقدار نهایی Shell یا دستوری است که هنگام ورود موفقیتآمیز بازگردانده میشود. در این مثال، این مقدار بهصورت /usr/sbin/nologin تنظیم شده است.
درصورتیکه بخواهید با استفاده از دستور sudo su به کاربر messagebus سوییچ کنید، عملیات Failed خواهد شد:
sudo su messagebus
خروجی استفاده از این دستور بهصورت زیر است:
Output This account is currently not available.
این پیغام به این دلیل برای شما بهنمایش درمیآید که Shell کاربر messagebus بهصورت /usr/sbin/nologin تنظیم شده است.
اگر بخواهید پوسته ورود پیشفرض کاربر را تغییر دهید، از ابزار usermod میتوانید استفاده کنید. بنابراین، استفاده از این ابزار به شما امکان خواهد داد که پوسته کاربر را به 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 شروع میشود. این همان رمزعبور هششده است.
حسابهای کاربری سیستمی نیز بهجای مقدار هششده رمزعبور یک ستاره (*) دارند. درواقع، این حسابها رمزعبور تنظیمشدهای ندارند؛ بههمیندلیل، امکان احراز هویت آنها با استفاده از رمزعبور بدون تغییر آن وجود ندارد.
شما میتوانید با قراردادن علامت تعجب (!) قبل از مقدار هششده رمزعبور، مقدار ستاره (*) را بهعنوان رمزعبور برای حساب کاربری منظور کنید. بدینترتیب، مقدار رمزعبور برای آن حساب کاربری غیرفعال خواهد شد. دو ابزار میتوانند این کار را با Lock کردن حساب کاربری مشخصشده انجام دهند که درادامه نحوه استفاده از آنها را توضیح دادهایم.
دستور passwd را میتوان با استفاده از فلگ -l لاک و با استفاده از -u آنلاک کرد:
sudo passwd -l sammy
sudo less /etc/shadow | grep sammy
خروجی این کار نیز بهصورت زیر خواهد بود:
Output sammy:!$y$j9T$4gyOQ5ieEWdx1ZdggX3Nj1$AbEA9FsG03aTsQhl.ZVMXatwCAvnxFbE/GHUKpjf9u6:19276:0:99999:7::::::
همانطورکه در خروجی دستور نیز میبینید، رمزعبور هششده حفظ میشود؛ اما با قراردادن علامت تعجب (!) درست قبلازآن، بهصورت نامعتبر درخواهد آمد. همانطورکه گفتیم، معتبرکردن حساب نیز با استفاده از فلگ -u امکانپذیر است:
sudo passwd -u sammy
همین کار با استفاده از دستور usermod نیز امکانپذیر است. فلگهای استفادهشده برای لاک و آنلاک کردن حساب کاربری نیز بهترتیب -L و -U است:
sudo usermod -L sammy sudo usermod -U sammy
آموزش بازیابی پسورد روت در اوبونتو از طریق Recovery Mode را در مقاله زیر بخوانید.
نحوه محدودسازی دسترسی با استفاده از /etc/nologin
گاهی اوقات ممکن است نیاز داشته باشید تا دسترسی تمامی کاربران بهغیر از کاربر Root را محدود کنید. این امر معمولاً در مواقع مختلف میتواند کاربرد داشته باشد؛ مثلاً در شرایطی که یک یا چند حساب کاربریتان دچار مشکلات امنیتی شده باشند. برای این منظور میتوانید این کار را با استفاده از ایجاد فایلی در /etc/nologin انجام دهید:
sudo touch /etc/nologin
این دستور باعث میشود تا ورود کاربرانی محدود شود که دسترسی Superuser ندارد. درواقع، اتفاقی که در پسِ این دستور میافتد، این است که محتویات فایل به کاربر برگردانده میشود. بنابراین، میتوانید پیغامی را در این فایل قرار دهید تا به کاربر نشان داده شود:
sudo sh -c 'echo "Planned maintenance. Log in capabilities will be restored at 1545 UTC" > /etc/nologin'
حالا وقتی میخواهید با استفاده از Password وارد شوید، این پیغام را دریافت خواهید کرد:
ssh sammy@host
Output sammy@host's password: Planned maintenance. Log in capabilities will be restored at 1545 UTC Connection closed by host
ناگفته نماند در این شرایط، کاربر Root همچنان امکان ورود را دارد. برای لغو محدودیتهای اِعمالشده، کافی است که فایل /etc/nologin را حذف کنید. این کار با استفاده از دستور زیر امکانپذیر است:
sudo rm /etc/nologin
برای آشنایی با ویژگیهای سیستمعامل اوبونتو و مقایسه آن با سایر توزیعهای لینوکس مقاله زیر را بخوانید.
جمعبندی
گاهی اوقات نیاز دارید تا دسترسی و ورود کاربر به سیستم را محدود کنید. حتی درصورتیکه مشکلی امنیتی برای سیستم ایجاد شده باشد، ممکن است مجبور باشید تا بهصورت مقطعی و تا رفع مشکل، ورود تمامی کاربران را محدود کنید. در این مطلب از آموزش لینوکس بلاگ پارس پک، نحوه محدودسازی کاربران با استفاده از روشهای مختلفی توضیح داده شده است. شایان ذکر است مطلب حاضر براساس توزیع اوبونتو نوشته شده است؛ بااینحال، در توزیعهای متفاوت کلیات تفاوت زیادی با مباحث عنوانشده در این مقاله ندارد.
سؤالات متداول
۱. نحوه محدودسازی ورود کاربر با استفاده از دستور usermod چگونه است؟
فرمت کلی استفاده از این دستور بهصورت sudo usermod -s /usr/sbin/nologin username است؛ البته نام کاربری مدنظر را باید بهجای username قرار دهید.
۲. عبارت nologin در دستور usermod چه کاری انجام میدهد؟
این آپشن بهمنظور ایجاد محدودیت در دسترسی کاربر استفاده میشود.
۳. آیا میتوان دسترسی همه کاربران بهجز کاربر Root را محدود کرد؟
بله، این کار را ازطریق فایل /etc/nologin میتوان انجام داد.
سلام. ممنون از مطلب مفیدتون. ببخشید یه سوال داشتم.
من یه سرور مجازی ابونتو 18 دارم که یه تعداد دسترسی یوزر داره. حالا میخوام هر کدوم از این یوزرها فقط یک دستگاه بتونه بهش کانکت بشه. کد خاصی وجود داره براش؟
سلام وقت شما بخیر
لطفا به پشتیبانی فنی تیکت بزنید.
در حالت کلی میشه دسترسی رو به ip محدود کرد به این صورت که توی فایروال سرور تعریف کنیم که فقط این ip های خاص دسترسی داشته باشند.