OpenVPN ته CAP_NET_ADMIN ورکول پرته له دې چې ورته root ورکړل شي
هغه واحد چې د غیر امتیازی کارونکي په توګه پیل کیږي لا هم سم د وړتیاوو سیټ ته اړتیا لري. واحد، ژوندی بهیر او د exec حد په همدې ترتیب وګورئ.
خدمت پیل کیږي، لاګ شکایت کوي چې د tun وسیله نه شي خلاصولی، او لارې هیڅکله نه ښکاري. په خپل شیل کې capsh --print چل کړئ او cap_net_admin هماغلته دی، چې ناکامي ناشونې ښکاري. هغه څه چې ستاسو د شیل او واحد ترمنځ توپیر لري د امتیازاتو لېږد دی، نه د کرنل هڅه چې وړتیا ورکړي. لاندې څلور ګوتې په ترتیب سره وګورئ او په لومړي هغه ودریږئ چې توپیر تشریح کوي.
ورکه شوې وړتیا له پټې وسیلې څخه جلا کړئ
له لاګ کرښې دوه ناکامۍ ورته ښکاري. د CAP_NET_ADMIN پرته بهیر د تونل انټرفیس نه شي جوړولی یا تنظیمولی، او هغه بهیر چې د هغې سینډباکس /dev/net/tun پټوي له سره نه شي خلاصولی. د وړتیاوو زیاتول دوهم حالت نه سمېږي.
د هر څه د سمولو دمخه وګورئ چې وسیله د خدمت د نوم تشیال دننه شته که نه. PrivateDevices=yes یوه عامه کلکتیا کرښه ده چې د tun غوټه په بشپړه توګه لرې کوي، او محدودوونکی ProtectSystem کولای شي د تنظیم لاره یوازې-لوستلو وګرځوي په داسې ډول چې د اجازې غلطۍ په توګه لوستل کیږي. دواړه د تونل یادوونکي لاګ کرښې جوړوي، نو ځکه تور وړتیاوو ته ورکول کیږي. لومړی تایید کړئ چې غوټه شته او خلاصېدلای شي، بیا مخکې لاړ شئ.
پوه شئ چې کوم د وړتیاوو سیټ ته ګورئ
Linux اجازه شوي، اغیزمن، میراثي، محدودوونکي او چاپیریالي سیټونه ساتي، او چاپیریالي سیټ هغه دی چې د غیر root کارونکي exec نه وروسته پاتې کیږي. په باینري کې د فایل وړتیاوې کولای شي د exec پر مهال اجازه شوي او اغیزمن حقونه وسپاري، مګر یوازې تر هغه چې په زنځیر کې هیڅ شی هغه لېږد نه بندوي.
دلته sudo خلک ګمراه کوي. هغه امر چې د sudo -u له لارې چلیږي نوی د امتیازاتو لېږد پیلوي او چاپیریالي سیټ ورک کیږي، نو هغه ګوته چې د root په توګه بریالۍ کیږي هلته ناکامه کیږي. د خدمت مدیر بل لېږد دی، او هغه هیڅ چاپیریالي نه ورکوي پرته له دې چې واحد یې ووایي.
وړتیا په واحد کې ورکړئ، نه په رپور کې
د هغه تونل لپاره لږترلږه د خدمت برخه چې باید وسیله جوړه او لارې نصب کړي داسې ښکاري.
[Unit]
Description=OpenVPN client, office profile
After=network-online.target
[Service]
Type=notify
User=openvpn
Group=openvpn
NoNewPrivileges=yes
AmbientCapabilities=CAP_NET_ADMIN
CapabilityBoundingSet=CAP_NET_ADMIN
ExecStart=/usr/sbin/openvpn --config /etc/openvpn/office.confAmbientCapabilities د بهیر له پیل دمخه حق چاپیریالي سیټ ته اړوي، او CapabilityBoundingSet بهیر له دې منع کوي چې له هغې لیستې بهر څه وساتي. NoNewPrivileges=yes د setuid یا د فایل وړتیاوو له لارې د امتیاز ترلاسه کول بندوي، په داسې حال کې چې واحد په ښکاره توګه ورکړل شوې وړتیا لا هم تطبیق کیږي. CAP_NET_BIND_SERVICE یوازې هغه وخت اضافه کړئ چې خدمت باید ټیټ پورټ وتړي، او هیڅکله CAP_SYS_ADMIN یوازې ځکه مه اضافه کوئ چې یوې فورمې تار کړی و.
که واحد باینري په sudo کې نغاړي، نو رپور لرې کړئ. systemd لا دمخه User= تطبیقوي، او هغه اضافي پرت ښایي د چاپیریالي سیټ خالي پاتې کېدو ترټولو ښکاره لامل وي.
د واحد فایل سره نه، ژوندي بهیر سره تایید کړئ
هغه څه ولولئ چې مدیر واقعاً تطبیق کړي، بیا هغه بهیر ولولئ چې هغه زېږولی دی.
unit=openvpn-client@office
systemctl show -p User -p AmbientCapabilities "$unit"
systemctl show -p MainPID --value "$unit" | xargs -r getpcaps
grep -E '^Cap(Eff|Amb)' /proc/$(systemctl show -p MainPID --value "$unit")/statusکه واحد وړتیا لیست کوي او CapEff لا هم نه لري، نو یو drop-in ترتیب ته غلبه کوي یا ExecStartPre ګام چاپیریال بدلوي. د اصلي فایل د باوري اوسیدو دمخه په drop-in لارښوونو کې د واحد نوم وپلټئ، ځکه وروسته فایل په خاموشۍ بریالي کیږي. که واحد او بهیر دواړه وړتیا ښیي او تونل بیا هم ناکام کیږي، پرځای د دې چې محدود سیټ پراخ کړئ بیرته د وسیلې او لارې ګوتو ته وګرځئ. د هغې پراخول ریښتینی لامل پټوي او خدمت له مخکې زیات امتیازي پریږدي.
غوره ده چې د پیل وروسته له امتیازاتو تېر شئ
OpenVPN کولای شي د امتیاز سره پیل شي او بیا د خپلو user او group اختیارونو له لارې غیر امتیازی حساب ته راښکته شي، او persist-key او persist-tun تونل وروسته هم د کارولو وړ ساتي. دغه ترتیبهغه کړکۍ تنګوي چې بهیر پکې حقونه لري، او ډیری وختونه له دې غوره ده چې ټول ډیمون پرته له امتیاز او د تلپاتې وړتیاوو سره پیل شي.
هر ماډل چې غوره کړئ، واحد بیا پیل کړئ او د بیا پیل وروسته ګوتې تکرار کړئ، ځکه هغه خدمت چې د متقابل root شیل نه کار کوي او په بوټ کې ناکام کیږي معمولاً د وړتیا، وسیلې یا د فایل اجازې توپیر وي. د واحد تنظیمات د بهیر د وړتیا پایلو ترڅنګ ولیکئ، ترڅو بل کتونکی وویني چې آیا د بنډل تازه کول یا drop-in حد خوځولی دی.