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:
- Den leser og analyserer /etc/sudoers, slår opp brukeren som påkaller og dens tillatelser,
- 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),
- etter det oppretter sudo en underordnet prosess der den kaller setuid() for å bytte til målbrukeren
- 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:
- Brukes når en systemadministrator ikke stoler på at sudo-brukere har en sikker PATH-miljøvariabel
- 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:
- alltid – alltid foredrag en bruker.
- én gang – foreles kun en bruker første gang de utfører sudo-kommando (dette brukes når ingen verdi er spesifisert)
- 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.