10 korisnih Sudoers konfiguracija za postavljanje 'sudo' u Linuxu


U Linuxu i drugim operativnim sustavima sličnim Unixu, samo root korisnik može pokretati sve naredbe i izvoditi određene kritične operacije na sustavu kao što su instalacija i ažuriranje, uklanjanje paketa, stvaranje korisnika i grupa, izmjena važnog sustava konfiguracijske datoteke i tako dalje.

Međutim, administrator sustava koji preuzima ulogu root korisnika može dopustiti drugim normalnim korisnicima sustava uz pomoć naredbe sudo i nekoliko konfiguracija da izvode neke naredbe, kao i da izvode brojne vitalne sistemske operacije uključujući gore spomenute.

Alternativno, administrator sustava može podijeliti root korisničku lozinku (što nije preporučena metoda) tako da obični korisnici sustava imaju pristup root korisničkom računu putem naredbe su.

sudo dopuštenom korisniku omogućuje izvršavanje naredbe kao root (ili drugi korisnik), kao što je određeno sigurnosnom politikom:

  1. Čita i analizira /etc/sudoers, traži korisnika koji poziva i njegova dopuštenja,
  2. zatim od korisnika koji poziva traži lozinku (obično korisničku lozinku, ali može biti i ciljna korisnička lozinka. Ili se može preskočiti oznakom NOPASSWD),
  3. nakon toga, sudo stvara podređeni proces u kojem poziva setuid() za prebacivanje na ciljnog korisnika
  4. zatim izvršava ljusku ili naredbu danu kao argumente u gornjem procesu dijete.

Ispod je deset konfiguracija datoteka /etc/sudoers za izmjenu ponašanja naredbe sudo pomoću unosa Defaults.

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

Vrste zadanih unosa

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

Za opseg ovog vodiča, smanjit ćemo se na prvu vrstu zadanih vrijednosti u obrascima ispod. Parametri mogu biti zastavice, cjelobrojne vrijednosti, nizovi ili popisi.

Trebate imati na umu da su zastavice implicitno Booleove i da se mogu isključiti pomoću '!' operatora, a popisi imaju dva dodatna operatora dodjele, += (dodaj na popis) i -= (ukloni s popisa).

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

1. Postavite siguran PATH

Ovo je put koji se koristi za svaku naredbu pokrenutu sa sudo, ima dvije važnosti:

  1. Koristi se kada administrator sustava ne vjeruje sudo korisnicima da imaju sigurnu varijablu okruženja PATH
  2. Za odvajanje “korijenske staze” i “korisničke staze”, ova postavka ne utječe samo na korisnike definirane pomoću exempt_group.

Da biste ga postavili, dodajte redak:

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

2. Omogućite sudo na TTY korisničkoj sesiji prijave

Da biste omogućili pozivanje sudo-a iz stvarnog tty-ja, ali ne putem metoda kao što su cron ili cgi-bin skripte, dodajte redak:

Defaults  requiretty   

3. Pokrenite naredbu Sudo koristeći pty

Nekoliko puta napadači mogu pokrenuti zlonamjerni program (kao što je virus ili zlonamjerni softver) koristeći sudo, što bi opet račvalo pozadinski proces koji ostaje na korisnikovom terminalnom uređaju čak i kada je glavni program završio s izvođenjem.

Da biste izbjegli takav scenarij, možete konfigurirati sudo da pokreće druge naredbe samo iz psuedo-pty pomoću parametra use_pty, bez obzira je li I/O bilježenje uključeno ili ne kao slijedi:

Defaults  use_pty

4. Napravite datoteku dnevnika Sudo

Prema zadanim postavkama, sudo se prijavljuje kroz syslog(3). Međutim, da odredite prilagođenu datoteku dnevnika, upotrijebite parametar datoteke dnevnika ovako:

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

Da biste zabilježili ime glavnog računala i četveroznamenkasti godinu u prilagođenu datoteku dnevnika, upotrijebite parametre log_host i log_year kako slijedi:

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

Ispod je primjer prilagođene sudo log datoteke:

5. Zabilježite unos/izlaz naredbe Sudo

Parametri log_input i log_output omogućuju sudo da pokrene naredbu u pseudo-tty i zabilježi sve korisničke unose i sve izlaze poslane na ekran.

Zadani I/O direktorij dnevnika je /var/log/sudo-io, a ako postoji redni broj sesije, on je pohranjen u ovom direktoriju. Možete navesti prilagođeni direktorij putem parametra iolog_dir.

Defaults   log_input, log_output

Podržani su neki izlazni nizovi kao što je %{seq} koji se proširuje na monotono rastući redni broj baze 36, kao što je 000001, gdje se svake dvije znamenke koriste za formiranje novog imenika, npr. 00/00/01 kao u donjem primjeru:

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

Ostatak datoteka u tom direktoriju možete pogledati pomoću naredbe cat.

6. Predavanje Sudo Korisnici

Za podučavanje sudo korisnicima o korištenju lozinki u sustavu, upotrijebite parametar lecture kao u nastavku.

Ima 3 moguće vrijednosti:

  1. uvijek – uvijek predavanje korisniku.
  2. jednom – lekcija korisniku kada prvi put izvrši naredbu sudo (ovo se koristi kada nije navedena vrijednost)
  3. nikad – nikad ne podučavaj korisnika.
 
Defaults  lecture="always"

Osim toga, možete postaviti prilagođenu datoteku predavanja s parametrom lecture_file, upišite odgovarajuću poruku u datoteku:

Defaults  lecture_file="/path/to/file"

7. Prikaži prilagođenu poruku kada unesete pogrešnu sudo lozinku

Kada korisnik unese pogrešnu lozinku, na naredbenom retku se prikazuje određena poruka. Zadana poruka je “oprostite, pokušajte ponovno”, možete izmijeniti poruku pomoću parametra badpass_message na sljedeći način:

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

8. Povećajte sudo ograničenje broja pokušaja lozinke

Parametar passwd_tries koristi se za određivanje koliko puta korisnik može pokušati unijeti lozinku.

Zadana vrijednost je 3:

Defaults   passwd_tries=5 

Za postavljanje vremenskog ograničenja lozinke (zadano je 5 minuta) pomoću parametra passwd_timeout dodajte redak ispod:

Defaults   passwd_timeout=2

9. Neka vas Sudo vrijeđa kada unesete pogrešnu lozinku

U slučaju da korisnik upiše krivu lozinku, sudo će prikazati uvrede na terminalu s parametrom uvrede. Ovo će automatski isključiti parametar badpass_message.

Defaults  insults 

Pročitajte više: Neka vas Sudo vrijeđa kada unesete netočnu lozinku

10. Saznajte više Sudo konfiguracija

Osim toga, možete naučiti više konfiguracija naredbi sudo čitajući: Razlika između su i sudo i Kako konfigurirati sudo u Linuxu.

To je to! Možete podijeliti druge korisne konfiguracije sudo naredbi ili trikove i savjete s korisnicima Linuxa putem odjeljka za komentare u nastavku.