VPN-knappen kræver sudo: afgræns reglen, valider politikken
En knap på skrivebordet er ingen grund til root uden adgangskode. Undersøg, om netværksadministratoren selv kan klare det, afgræns én kommando, og valider derefter hele sudo-politikken.
VPN-knappen virker for administratoren og fejler for alle andre, så nogen tilføjer en linje i sudoers. Den linje lever normalt længere end det problem, den skulle løse, og den giver ofte mere, end knappen har brug for. Før du redigerer politikken, så undersøg, om den understøttede ejer af forbindelsen allerede kan udføre arbejdet. De tre betingelser nedenfor afgør, om sudo overhovedet er involveret.
Betingelse 1: den understøttede ejer kan gøre det uden sudo
På de fleste Linux-skriveborde ejer netværksadministratoren allerede VPN-forbindelser, og dens godkendelse går gennem polkit i stedet for sudo. En bruger, der har lov til at rejse en forbindelse, kan gøre det fra kommandolinjen uden nogen root-regel overhovedet. Undersøg, hvad administratoren tillader, før du antager, at knappen har brug for privilegium. Hvis svaret er ja, løser ændringen i sudoers et problem, der ikke findes.
nmcli connection show
nmcli connection up "Work VPN"
Hvis administratoren afviser, så læs hvorfor: en manglende polkit-regel, en forbindelse ejet af en anden bruger eller en profil gemt et sted, hvor brugeren ikke kan læse den. Hver af dem har en understøttet løsning, der er smallere end en sudo-regel. Privilegieforhøjelse er den sidste udvej, ikke den første.
Betingelse 2: reglen navngiver én eksekverbar fil og dens argumenter
Hvis sudo virkelig er påkrævet, bør reglen navngive den præcise kommando og, hvor muligt, de argumenter den må bruge. En regel, der lader en bruger køre et indpakningsscript, er kun så sikker som scriptets rettigheder, fordi brugeren kan redigere, hvad root skal udføre. En regel med et jokertegn efter kommandoen er det samme problem i kortere form.
sudo -l -U alice
ls -l /usr/local/sbin/vpn-up
Kontroller hver sti i kommandokæden: binæren, scriptet den kalder, konfigurationsfilen den læser og enhver mappe ind imellem. Hvis brugeren kan skrive til nogen af dem, er den afgrænsede regel i praksis ubegrænset root. Argumenter betyder også noget, fordi en kommando, der accepterer en konfigurationssti, kan rettes mod en fil, som brugeren kontrollerer. Skriv reglen for operationen, ikke for knappen.
Stop, hvis kommandoen har brug for en brugerstyret fil for at virke. Så er designet forkert, og ingen sudoers-syntaks gør det sikkert.
Betingelse 3: hele politikken parses, ikke kun din linje
Validér med den editor, der låser filen og kontrollerer syntaks, og validér den samlede politik i stedet for et fragment. En fil, der parses alene, kan stadig bryde inkluderingsrækkefølgen eller duplikere en regel på en måde, der ændrer adfærd.visudo-manualen dokumenterer både den låsende editor og den kontroltilstand, der bruges her.
sudo visudo -c
sudo visudo -cf /etc/sudoers.d/vpn-launcher
Kontrollen rapporterer filen og linjen, når den fejler, og netop den rapport er den nyttige del. Reparér den tilsigtede ændring gennem editoren i stedet for at tvinge en kendt fejl igennem, fordi en brudt politik kan låse alle administratorer ude på én gang. Filer i inkluderingsmappen skal også have den ejerskab og tilstand, som manualen kræver, ellers ignoreres eller afvises de. Syntaks er kun den første port: når den er passeret, så læs reglen igen og spørg, hvad den faktisk tillader.
Stop, hvis den eneste måde at få ændringen til at virke er at slå syntakskontrollen fra. Det er ikke en politik, det er et nedbrud, der venter på en genstart.
Gendannelse: behold en session, der stadig virker
Før du gemmer, så sørg for, at en autoriseret administrativ session allerede er åben, og at der findes en anden vej ind i maskinen. En sudoers-fejl kan fjerne din mulighed for at rette den, og en knap på skrivebordet er ikke den risiko værd. Hvis sudo allerede er brudt, brug systemets dokumenterede gendannelsesvej i stedet for at improvisere en.
sudo -n true
id
Alternativer som pkexec afhænger af deres egen installation og politik, så de er ikke en garanteret anden root-prompt. Hold lokal godkendelse adskilt fra leveringen af VPN-hemmeligheden: en sudo-regel kan ikke låse en fraværende hemmelighedsagent op, og den opfylder ikke gatewayens MFA. Efter rettelsen, test den normale konto, der kun udfører den tilsigtede handling, og brug derefter administratorprogrammets sædvanlige kontrolfunktioner.
Beslutningen slutter, når du kan sige, hvilken betingelse der berettigede sudo, hvad reglen navngiver, at hele politikken parses, og hvordan du ville gendanne, hvis den ikke gjorde. En privilegeret starter, der koster dig administrativ adgang, er en dårlig handel, og den er normalt undgåelig.