De VPN-knop werkt voor de beheerder en faalt voor alle anderen, dus iemand voegt een regel toe aan sudoers. Die regel leeft meestal langer dan het probleem dat hij moest oplossen, en hij verleent vaak meer dan de knop nodig heeft. Controleer voordat u het beleid bewerkt of de ondersteunde eigenaar van de verbinding het werk al kan doen. De drie voorwaarden hieronder bepalen of sudo er überhaupt aan te pas komt.

Voorwaarde 1: de ondersteunde eigenaar kan het zonder sudo

Op de meeste Linux-bureaubladen bezit de netwerkbeheerder al de VPN-verbindingen, en de autorisatie loopt via polkit in plaats van sudo. Een gebruiker die een verbinding mag opzetten, kan dat vanaf de opdrachtregel doen zonder enige root-regel. Controleer wat de beheerder toestaat voordat u aanneemt dat de knop een privilege nodig heeft. Als het antwoord ja is, lost de wijziging in sudoers een probleem op dat niet bestaat.

nmcli connection show
nmcli connection up "Work VPN"

Als de beheerder weigert, lees waarom: een ontbrekende polkit-regel, een verbinding van een andere gebruiker of een profiel dat is opgeslagen waar de gebruiker het niet kan lezen. Elk daarvan heeft een ondersteunde oplossing die smaller is dan een sudo-regel. Privilegeverhoging is het laatste redmiddel, niet het eerste.

Voorwaarde 2: de regel noemt één uitvoerbaar bestand en zijn argumenten

Als sudo echt nodig is, moet de regel de exacte opdracht noemen en, waar mogelijk, de argumenten die hij mag gebruiken. Een regel die een gebruiker een wrapper-script laat uitvoeren is alleen zo veilig als de rechten van dat script, omdat de gebruiker kan bewerken wat root uitvoert. Een regel met een jokerteken na de opdracht is hetzelfde probleem in kortere vorm.

sudo -l -U alice
ls -l /usr/local/sbin/vpn-up

Controleer elk pad in de opdrachtketen: het binaire bestand, het script dat het aanroept, het configuratiebestand dat het leest en elke map daartussen. Als de gebruiker in een daarvan kan schrijven, is de beperkte regel in de praktijk onbeperkte root. Argumenten tellen ook mee, want een opdracht die een configuratiepad accepteert, kan op een bestand worden gericht dat de gebruiker beheert. Schrijf de regel voor de handeling, niet voor de knop.

Stop als de opdracht een door de gebruiker beheerd bestand nodig heeft om te werken. Dan is het ontwerp verkeerd, en geen enkele sudoers-syntaxis maakt het veilig.

Voorwaarde 3: het hele beleid wordt geparsed, niet alleen uw regel

Valideer met de editor die het bestand vergrendelt en de syntaxis controleert, en valideer het samengestelde beleid in plaats van een fragment. Een bestand dat op zichzelf parset, kan nog steeds de inclusievolgorde breken of een regel dupliceren op een manier die gedrag verandert.visudo-handleiding documenteert zowel de vergrendelende editor als de modus alleen controleren die hier wordt gebruikt.

sudo visudo -c
sudo visudo -cf /etc/sudoers.d/vpn-launcher

De controle meldt het bestand en de regel wanneer het mislukt, en juist dat rapport is het nuttige deel. Repareer de bedoelde wijziging via de editor in plaats van een bekende fout geforceerd op te slaan, want een kapot beleid kan alle beheerders tegelijk buitensluiten. Bestanden in de inclusiemap hebben ook het eigendom en de modus nodig die de handleiding vereist, anders worden ze genegeerd of geweigerd. Syntaxis is alleen de eerste poort: na het passeren leest u de regel opnieuw en vraagt u wat hij werkelijk toestaat.

Stop als de enige manier om de wijziging te laten werken is de syntaxiscontrole uit te schakelen. Dat is geen beleid, dat is een storing die op een herstart wacht.

Herstel: houd een sessie die nog werkt

Voordat u opslaat, zorg dat een geautoriseerde administratieve sessie al open is en dat er een tweede weg naar de machine bestaat. Een fout in sudoers kan u het vermogen ontnemen om hem te herstellen, en een knop op het bureaublad is dat risico niet waard. Als sudo al kapot is, gebruik dan het gedocumenteerde herstelpad van het systeem in plaats van er zelf een te improviseren.

sudo -n true
id

Alternatieven zoals pkexec hangen af van hun eigen installatie en beleid, dus ze zijn geen gegarandeerde tweede root-prompt. Houd lokale autorisatie ook gescheiden van het leveren van het VPN-geheim: een sudo-regel kan een ontbrekende geheime agent niet ontgrendelen, en hij voldoet niet aan de MFA van de gateway. Test na de correctie het normale account dat alleen de bedoelde handeling uitvoert, en gebruik daarna de gewone bedieningselementen van de beheerder.

De beslissing eindigt wanneer u kunt zeggen welke voorwaarde sudo rechtvaardigde, wat de regel noemt, dat het hele beleid wordt geparsed en hoe u zou herstellen als dat niet zo was. Een bevoorrechte starter die u de administratieve toegang kost is een slechte ruil, en meestal is hij te vermijden.

Gerelateerde artikelen