10 nyttige Sudoers-konfigurasjoner for å sette 'sudo' i Linux


I Linux og andre Unix-lignende operativsystemer kan bare root-brukeren kjøre alle kommandoer og utføre visse kritiske operasjoner på systemet, for eksempel installere og oppdatere, fjerne pakker, opprette brukere og grupper, endre viktig system konfigurasjonsfiler og så videre.

Imidlertid kan en systemadministrator som påtar seg rollen som root-bruker tillate andre normale systembrukere ved hjelp av sudo-kommandoer og noen få konfigurasjoner å kjøre noen kommandoer samt utføre en rekke viktige systemoperasjoner inkludert de som er nevnt ovenfor.

Alternativt kan systemadministratoren dele root-brukerpassordet (som ikke er en anbefalt metode) slik at vanlige systembrukere har tilgang til root-brukerkontoen via kommandoen su.

sudo lar en tillatt bruker utføre en kommando som root (eller en annen bruker), som spesifisert av sikkerhetspolicyen:

  1. Den leser og analyserer /etc/sudoers, slår opp brukeren som påkaller og dens tillatelser,
  2. ber deretter den påkallende brukeren om et passord (normalt brukerens passord, men det kan også være målbrukerens passord. Eller det kan hoppes over med NOPASSWD-taggen),
  3. etter det oppretter sudo en underordnet prosess der den kaller setuid() for å bytte til målbrukeren
  4. deretter utfører den et skall eller kommandoen gitt som argumenter i underordnet prosessen ovenfor.

Nedenfor er ti /etc/sudoers-filkonfigurasjoner for å endre oppførselen til sudo-kommandoen ved å bruke Standard-oppføringer.

sudo cat /etc/sudoers
#
This file MUST be edited with the 'visudo' command as root.
#
Please consider adding local content in /etc/sudoers.d/ instead of
directly modifying this file.
#
See the man page for details on how to write a sudoers file.
#
Defaults	env_reset
Defaults	mail_badpass
Defaults	secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
Defaults	logfile="/var/log/sudo.log"
Defaults	lecture="always"
Defaults	badpass_message="Password is wrong, please try again"
Defaults	passwd_tries=5
Defaults	insults
Defaults	log_input,log_output

Typer standardoppføringer

Defaults                parameter,   parameter_list     #affect all users on any host
Defaults@Host_List      parameter,   parameter_list     #affects all users on a specific host
Defaults:User_List      parameter,   parameter_list     #affects a specific user
Defaults!Cmnd_List      parameter,   parameter_list     #affects  a specific command 
Defaults>Runas_List     parameter,   parameter_list     #affects commands being run as a specific user

For omfanget av denne veiledningen vil vi nullstille til den første typen Standarder i skjemaene nedenfor. Parametere kan være flagg, heltallsverdier, strenger eller lister.

Du bør merke deg at flagg er implisitt boolske og kan slås av ved hjelp av '!'-operatoren, og lister har to ekstra tilordningsoperatorer, += (legg til i liste) og -= (fjern fra listen).

Defaults     parameter
OR
Defaults     parameter=value
OR
Defaults     parameter -=value   
Defaults     parameter +=value  
OR
Defaults     !parameter       

1. Angi en sikker PATH

Dette er banen som brukes for hver kommando som kjøres med sudo, den har to viktigheter:

  1. Brukes når en systemadministrator ikke stoler på at sudo-brukere har en sikker PATH-miljøvariabel
  2. For å skille "rotbane" og "brukerbane ", er det bare brukere definert av exempt_group som ikke påvirkes av denne innstillingen.

For å angi det, legg til linjen:

Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"

2. Aktiver sudo på TTY-brukerpåloggingsøkt

For å aktivere sudo fra en ekte tty, men ikke gjennom metoder som cron eller cgi-bin-skript, legg til linjen:

Defaults  requiretty   

3. Kjør Sudo Command ved å bruke en pty

Noen få ganger kan angripere kjøre et ondsinnet program (som et virus eller skadelig programvare) ved å bruke sudo, som igjen vil dele en bakgrunnsprosess som blir værende på brukerens terminalenhet selv når hovedprogrammet er ferdig kjørt.

For å unngå et slikt scenario kan du konfigurere sudo til å kjøre andre kommandoer bare fra en psuedo-pty ved å bruke parameteren use_pty, enten I/O-logging er slått på eller ikke som følger:

Defaults  use_pty

4. Opprett en Sudo-loggfil

Som standard logger sudo gjennom syslog(3). For å spesifisere en egendefinert loggfil, bruk imidlertid loggfilparameteren slik:

Defaults  logfile="/var/log/sudo.log"

For å logge vertsnavnet og det firesifrede året i den tilpassede loggfilen, bruk parameterne log_host og log_year som følger:

Defaults  log_host, log_year, logfile="/var/log/sudo.log"

Nedenfor er et eksempel på en tilpasset sudo-loggfil:

5. Logg Sudo Command Input/Output

Parameterne log_input og log_output gjør det mulig for sudo å kjøre en kommando i pseudo-tty og logge alle brukerinndata og alle utdata sendt til skjermen mottakelig.

Standard I/O-loggkatalog er /var/log/sudo-io, og hvis det er et sesjonssekvensnummer, lagres det i denne katalogen. Du kan spesifisere en tilpasset katalog gjennom parameteren iolog_dir.

Defaults   log_input, log_output

Det er noen escape-sekvenser som støttes, slik som %{seq} som utvides til et monotont økende base-36-sekvensnummer, for eksempel 000001, hvor hvert andre siffer brukes til å danne en ny katalog, f.eks. 00/00/01 som i eksemplet nedenfor:

cd /var/log/sudo-io/
ls
cd  00/00/01
ls
cat log

Du kan se resten av filene i den katalogen ved å bruke cat-kommandoen.

6. Forelesning Sudo-brukere

For å forelese sudo-brukere om passordbruk på systemet, bruk lecture-parameteren som nedenfor.

Den har 3 mulige verdier:

  1. alltid – alltid foredrag en bruker.
  2. én gang – foreles kun en bruker første gang de utfører sudo-kommando (dette brukes når ingen verdi er spesifisert)
  3. aldri – aldri foredrag brukeren.
 
Defaults  lecture="always"

I tillegg kan du angi en egendefinert forelesningsfil med parameteren lecture_file, skriv inn den aktuelle meldingen i filen:

Defaults  lecture_file="/path/to/file"

7. Vis egendefinert melding når du skriver inn feil sudo-passord

Når en bruker skriver inn feil passord, vises en bestemt melding på kommandolinjen. Standardmeldingen er "beklager, prøv igjen ", du kan endre meldingen ved å bruke parameteren badpass_message som følger:

Defaults  badpass_message="Password is wrong, please try again"

8. Øk grensen for sudo Passordforsøk

Parameteren passwd_tries brukes til å spesifisere antall ganger en bruker kan prøve å skrive inn et passord.

Standardverdien er 3:

Defaults   passwd_tries=5 

For å angi en tidsavbrudd for passord (standard er 5 minutter) ved å bruke parameteren passwd_timeout, legg til linjen nedenfor:

Defaults   passwd_timeout=2

9. La Sudo fornærme deg når du skriver inn feil passord

I tilfelle en bruker skriver inn feil passord, vil sudo vise fornærmelser på terminalen med insults-parameteren. Dette vil automatisk slå av parameteren badpass_message.

Defaults  insults 

Les mer: La Sudo fornærme deg når du skriver inn feil passord

10. Lær mer Sudo-konfigurasjoner

I tillegg kan du lære mer sudo-kommandokonfigurasjoner ved å lese: Forskjellen mellom su og sudo og Hvordan konfigurere sudo i Linux.

Det er det! Du kan dele andre nyttige sudo-kommandokonfigurasjoner eller triks og tips med Linux-brukere der ute via kommentarseksjonen nedenfor.