سوڈ فائلوں سے چھٹکارا حاصل کرنے کے لئے sudo کے بجائے UNIX ساکٹ پر SSH کا استعمال کرنا

Red Hat سے Timothee Ravier، Fedora Silverblue اور Fedora Kinoite پروجیکٹس کے ایک مینٹینر نے، sudo یوٹیلیٹی کے استعمال سے بچنے کا ایک طریقہ تجویز کیا، جو suid بٹ کا استعمال مراعات کو بڑھانے کے لیے کرتا ہے۔ sudo کے بجائے، ایک عام صارف کے لیے روٹ رائٹس کے ساتھ کمانڈز پر عمل درآمد کرنے کے لیے، یہ تجویز ہے کہ ssh یوٹیلیٹی کو اسی سسٹم سے مقامی کنکشن کے ساتھ UNIX ساکٹ کے ذریعے استعمال کیا جائے اور SSH کیز کی بنیاد پر اجازتوں کی تصدیق کی جائے۔

sudo کے بجائے ssh کا استعمال آپ کو سسٹم پر suid پروگراموں سے چھٹکارا حاصل کرنے اور تقسیم کے میزبان ماحول میں مراعات یافتہ کمانڈز کے نفاذ کو فعال کرنے کی اجازت دیتا ہے جو کنٹینر آئسولیشن اجزاء، جیسے Fedora Silverblue، Fedora Kinoite، Fedora Sericea اور Fedora Onyx استعمال کرتے ہیں۔ رسائی کو محدود کرنے کے لیے، یو ایس بی ٹوکن (مثال کے طور پر یوبیکی) کا استعمال کرتے ہوئے اتھارٹی کی تصدیق کا اضافی استعمال کیا جا سکتا ہے۔

مقامی یونکس ساکٹ کے ذریعے رسائی کے لیے OpenSSH سرور کے اجزاء کو ترتیب دینے کی ایک مثال (ایک علیحدہ sshd مثال اس کی اپنی کنفیگریشن فائل کے ساتھ شروع کی جائے گی):

/etc/systemd/system/sshd-unix.socket: [Unit] Description=OpenSSH Server Unix Socket Documentation=man:sshd(8) man:sshd_config(5) [ساکٹ] ListenStream=/run/sshd.sock Accept=yes [انسٹال کریں] WantedBy=sockets.target

/ وغیرہ / سسٹم / نظام /[ای میل محفوظ]: [یونٹ] تفصیل = اوپن ایس ایس ایچ فی کنکشن سرور ڈیمون (یونکس ساکٹ) دستاویزی = آدمی: sshd(8) آدمی: sshd_config(5) Wants=sshd-keygen.target After=sshd-keygen.target [Service] ExecStart=- /usr/sbin/sshd -i -f /etc/ssh/sshd_config_unix StandardInput=socket

/etc/ssh/sshd_config_unix: # صرف کلیدی توثیق چھوڑتا ہے پرمٹ روٹ لاگ ان ممنوعہ پاس ورڈ پاس ورڈ کی توثیق نہیں پرمٹ ایمپٹی پاس ورڈ نہیں GSSAPIA توثیق نہیں # منتخب صارفین تک رسائی کو محدود نہیں کرتا ہے Users root adminusername # کو چھوڑتا ہے صرف استعمال کرنے کی اجازت دیتا ہے 2 AuthorizedKeysFile .ssh /authorized_keys # sftp سب سسٹم sftp /usr/libexec/openssh/sftp-server کو فعال کریں

سسٹمڈ یونٹ کو چالو اور لانچ کریں: sudo systemctl daemon-reload sudo systemctl enable — now sshd-unix.socket

اپنی SSH کلید کو /root/.ssh/authorized_keys میں شامل کریں۔

SSH کلائنٹ کو ترتیب دینا۔

socat یوٹیلیٹی انسٹال کریں: sudo dnf install socat

ہم UNIX ساکٹ کے ذریعے رسائی کے لیے socat کو بطور پراکسی بتا کر /.ssh/config کی تکمیل کرتے ہیں: Host host.local User root # کنٹینرز سے کام کرنے کے لیے /run/host/run کے بجائے استعمال کریں ProxyCommand socat - UNIX-CLIENT: / run/host/run/sshd.sock # SSH کلید IdentityFile کا راستہ ~/.ssh/keys/localroot # انٹرایکٹو شیل کے لیے TTY سپورٹ کو فعال کریں RequestTTY yes # غیر ضروری آؤٹ پٹ ہٹائیں LogLevel QUIET

اس کی موجودہ شکل میں، صارف کا منتظم نام اب پاس ورڈ داخل کیے بغیر روٹ کے طور پر کمانڈز پر عمل درآمد کر سکے گا۔ آپریشن کو چیک کیا جا رہا ہے: $ssh host.local [root ~]#

ہم "ssh host.local" چلانے کے لیے bash میں sudohost عرف بناتے ہیں، جیسا کہ sudo: sudohost() { if [[ ${#} -eq 0 ]]; پھر ssh host.local "cd \"${PWD}\"؛ exec \"${SHELL}\" --login" else ssh host.local "cd \"${PWD}\"؛ exec \"${@}\"» fi }

چیک کریں: $ sudohost id uid=0(root) gid=0(root) group=0(root)

ہم اسناد شامل کرتے ہیں اور دو عنصر کی توثیق کو فعال کرتے ہیں، جڑ تک رسائی کی اجازت صرف اس صورت میں دیتے ہیں جب یوبیکی USB ٹوکن داخل کیا جائے۔

ہم چیک کرتے ہیں کہ موجودہ یوبیکی کے ذریعہ کون سے الگورتھم سپورٹ ہیں: lsusb -v 2>/dev/null | grep -A2 Yubico | grep "bcdDevice" | awk '{print $2}'

اگر آؤٹ پٹ 5.2.3 یا اس سے زیادہ ہے تو، کیز تیار کرتے وقت ed25519-sk استعمال کریں، بصورت دیگر ecdsa-sk استعمال کریں: ssh-keygen -t ed25519-sk یا ssh-keygen -t ecdsa-sk

عوامی کلید کو /root/.ssh/authorized_keys میں شامل کرتا ہے۔

sshd کنفیگریشن میں کلیدی قسم کا بائنڈنگ شامل کریں: /etc/ssh/sshd_config_unix: PubkeyAcceptedKeyTypes [ای میل محفوظ],[ای میل محفوظ]

ہم یونکس ساکٹ تک رسائی کو صرف اس صارف تک محدود کرتے ہیں جن کے مراعات میں اضافہ ہو سکتا ہے (ہماری مثال میں، منتظم کا نام)۔ /etc/systemd/system/sshd-unix.socket میں شامل کریں: [ساکٹ] ... SocketUser=adminusername SocketGroup=adminusername SocketMode=0660

ماخذ: opennet.ru

نیا تبصرہ شامل کریں