Adeeggu wuu bilaabmaa, loggu wuxuu ka cabanayaa in uusan furi karin aaladda tun, oo dariiqyadu marnaba ma soo baxaan. Ku socodsii capsh --print shell-kaaga oo cap_net_admin halkaasuu joogaa, taas oo guuldarada ka dhigaysa mid aan macquul ahayn. Waxa ka duwan shell-kaaga iyo unugga waa wareejinta mudnaanta, ma aha diyaargarowga kernel-ka ee ah inuu bixiyo awoodda. Mar ku soco afarta hubin ee hoose si kala horreysan oo ku joogso tan ugu horreysa ee sharraxaysa farqiga.

Kala sooc awoodda maqan iyo aaladda qarsoon

Laba guuldarro ayaa isku mid ka muuqda safka logga. Geeddi-socod aan lahayn CAP_NET_ADMIN ma abuuri karo ama ma habayn karo interface-ka tunnel-ka, geeddi-socodka uu sandbox-kiisu qariyo /dev/net/tun ma furi karo bilowga. Ku darista awoodaha ma hagaajinayso kiiska labaad.

Hubi in aaladdu ku jirto magac-bannaanada adeegga ka hor inta aadan wax beddelin. PrivateDevices=yes waa saf adkayn caadi ah oo gebi ahaan uga saara noodka tun, iyo ProtectSystem xaddidan wuxuu dariiqa habaynta ka dhigi karaa mid akhris-kaliya si loo akhriyo sida khalad ogolaansho. Labaduba waxay soo saaraan safaf log oo xusaya tunnel-ka, taas ayaa sababta awoodaha lagu eedeeyo. Marka hore xaqiiji in noodku jiro oo la furi karo, ka dib horay u soco.

Ogow qaybta awoodaha aad eegayso

Linux waxay haysataa qaybaha la ogolaaday, waxtarka leh, la dhaxlo, xaddidan iyo deegaanka, qaybta deegaankuna waa tan ka badbaadda exec-ka isticmaale aan root ahayn. Awoodaha faylka ee binary-ga waxay exec-ka ku wareejin karaan xuquuq la ogolaaday iyo mid waxtar leh, laakiin kaliya inta aan wax silsiladda ka mid ah xannibin wareejintaas.

Halkan sudo ayaa dadka marin-haboonaya. Amarka lagu socodsiiyo sudo -u wuxuu bilaabaa wareejin mudnaan cusub oo qaybta deegaanku way libdhataa, sidaas darteed isla hubintaas oo root ahaan guulaysta ayaa halkaas ku guuldarraysata. Maareeyaha adeeggu waa wareejin kale, oo wax deegaan ah ma bixiyo haddii unuggu aanu sidaas odhan.

Awoodda ku bixi unugga, ma aha duubista

Qaybta adeegga ugu yar ee tunnel u baahan inuu abuuro aalad oo rakibo dariiqyo waxay u eg tahay sidan.

[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.conf

AmbientCapabilities xuquuqda geliyaa qaybta deegaanka ka hor inta uusan geeddi-socodku bilaaban, CapabilityBoundingSet waxay ka horjoogsataa geeddi-socodka inuu hayo wax ka baxsan liiskaas. NoNewPrivileges=yes wuxuu xannibaa helista mudnaanta iyada oo loo marayo setuid ama awoodaha faylka, halka awoodda unuggu si cad u bixiyo ay wali khuseeyso. Ku dar CAP_NET_BIND_SERVICE kaliya marka adeeggu ay tahay inuu xiro deked hoose, oo marnaba ha ku darin CAP_SYS_ADMIN kaliya sababtoo ah dun forum ayaa sidaas sameeyay.

Haddii unuggu binary-ga ku duubo sudo, ka saar duubista. systemd horey ayuu u codsadaa User=, oo lakabkaas dheeraadka ah ayaa ah sababta ugu badan ee qaybta deegaanku madhan tahay.

Ku xaqiiji geeddi-socodka nool, ma aha faylka unugga

Akhri waxa maareeyuhu dhab ahaan codsaday, ka dib akhri geeddi-socodka uu abuuray.

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

Haddii unuggu liis garaynayo awoodda oo CapEff wali aanay haysan, drop-in ayaa ka sarreeya habaynta ama tallaabo ExecStartPre ayaa beddelaysa deegaanka. Ka hor inta aadan u qaadan in faylka ugu weyni yahay kan awoodda leh, ka raadi magaca unugga galka drop-in, sababtoo ah fayl dambe ayaa si aamusan guulaysta. Haddii unugga iyo geeddi-socodkuba ay muujiyaan awoodda oo tunnel-ku wali guuldarraysto, ku noqo hubinta aaladda iyo dariiqa halkii aad ballaarin lahayd qaybta xaddidan. Ballaarinteeda waxay qarinaysaa sababta dhabta ah oo adeegga ka tagaysaa mid ka mudnaan badan sidii hore.

Dooro inaad mudnaanta ka tagto bilowga ka dib

OpenVPN wuxuu ku bilaaban karaa mudnaan oo ka dib ugu soo degi karaa akoon aan mudnaan lahayn isagoo adeegsanaya doorashooyinkiisa user iyo group, iyadoo persist-key iyo persist-tun tunnel-ka ka dhigayaan mid la isticmaali karo ka dib. Habayntaas waxay yareysaa daaqadda uu geeddi-socodku xuquuq ku hayo, oo inta badan way ku habboon tahay in ka badan bilowga daemon-ka oo dhan mid aan mudnaan lahayn oo leh awoodo joogto ah.

Qaab kasta oo aad dooratid, dib u bilow unugga oo ku celi hubinta dib u bilaabista ka dib, sababtoo ah adeeg ka shaqeeya shell root is-dhexgal ah oo ku guuldarraysta boot-ka badanaa waa farqi awood, aalad ama ogolaansho fayl. Qor dejinta unugga agteeda soo-saarka awoodaha geeddi-socodka si uu dib-u-eegaha xiga u arko haddii cusboonaysiinta xidhmada ama drop-in ay dhaqaajisay xadka.

Maqaallo la xiriira