https://arsalanse.ir
یوزر No Login در لینوکس ? (دسترسی امن پورتفروارد)
سناریویی در نظر بگیرید که دولوپر ما میخواد به دیتابیس دسترسی داشته باشه چه راه حلی پیشنهاد میدین؟
1. پورت دیتابیس رو روی هاست باز کنیم
(که این راه حل اصلا منطقی نیست و بسیار از نظر امنیتی پر ریسکه حتی اگه پسورد براش ست کنید یا پورت دیفالت رو عوض کنید)
2. کلید پابلیک از دولوپر بگیریم و روی روت سرور قرار بدیم
(از روش اول خیلی بهتره ولی بازم با دسترسی ssh ممکنه به اشتباه دستوری روی سرور اجرا بشه و سیستمی از کار بیوفته)
3. تعریف یوزر No Login
ما تو لینوکس فایلی داریم به مسیر:
/etc/passwd
که داخلش خط هایی با ساختار زیر نوشته شده
username:password:UID:GID:GECOS:home_directory:login_shell
یه مورد تاریخی که شاید جالب باشه پسورد ها داخل همین فایل قرار میگرفته ولی بعدا به فایل
/etc/shadow
منتقل شد و جای خالی اون با x پر میشه!
قسمت مهم برای ما login_shell هست که دیفالت شل اون یوزر رو تعیین میکنه مرسوم ترین هاش:
/bin/bash
/bin/sh
اما یه دیفالت شل که خیلی هم تکرار شده هست با مسیر:
/usr/sbin/nologin
اگه manual شو چک کنیم نوشته:
$man nologin
The nologin command displays a message that an account is not available and exits non-zero.
https://github.com/util-linux/util-linux/blob/master/login-utils/nologin.c
پس تا اینجای کار اطلاعات خوبی در مورد نحوه منیج کردن یوزها و چند ساختار داخل لینوکس آشنا به دست آوردیم
حالا ببینیم چطور میشه یه یوزر no login تعریف کرد
sudo useradd -d /home/nologin -s /usr/sbin/nologin -m nologin
echo "key" >> /home/nologin/.ssh/authorized_keys
با دستور useradd (در مورد adduser تحقیق کنید) خیلی راحت بدون اضافه کاری میتونید یه یوزر جدید تعریف کنید با فلگ s بهش شل دیفالت رو پاس بدین حواستون باشه مقدار username رو تغییر بدین
با اینکار شما یوزری ساختین که دولوپر میتونه به راحتی از پورت فروارد ssh استفاده کنه ولی دسترسی به شل سرور هم نداشته باشه
ssh -NL LOCAL_PORT:LOCAL_IP:DESTINATION_PORT USER@SSH_SERVER
شما چه راه حلی برای این مسئله داشتین؟
تامام./
مطلبی دیگر از این انتشارات
مدیریت تعداد بالای ریموت سرور
مطلبی دیگر از این انتشارات
آپدیت اتوماتیک توکن در postman
مطلبی دیگر از این انتشارات
ارسال نوتیفیکیشن به تلگرام با پایپلاین گیت لب?