10 korisnih Sudoers konfiguracija za postavljanje 'sudo' u Linuxu


U Linuxu i drugim operativnim sistemima sličnim Unixu, samo root korisnik može pokrenuti sve naredbe i izvršiti određene kritične operacije na sistemu kao što su instaliranje i ažuriranje, uklanjanje paketa, kreiranje korisnika i grupa, modifikacija važnih sistema konfiguracijske datoteke i tako dalje.

Međutim, sistemski administrator koji preuzima ulogu root korisnika može dozvoliti drugim normalnim korisnicima sistema uz pomoć sudo komande i nekoliko konfiguracija da pokreću neke komande, kao i da izvode niz vitalnih sistemskih operacija uključujući i one gore navedene.

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

sudo dozvoljava dozvoljenom korisniku da izvrši naredbu kao root (ili drugi korisnik), kako je navedeno u sigurnosnoj politici:

  1. Čita i analizira /etc/sudoers, traži korisnika koji poziva i njegove dozvole,
  2. zatim traži od korisnika koji poziva lozinku (obično korisnička lozinka, ali može biti i lozinka ciljnog korisnika. Ili se može preskočiti pomoću oznake NOPASSWD),
  3. nakon toga, sudo kreira podređeni proces u kojem poziva setuid() da se prebaci na ciljnog korisnika
  4. zatim, izvršava ljusku ili naredbu datu kao argument u gornjem procesu.

Ispod je deset /etc/sudoers konfiguracija datoteka za izmjenu ponašanja naredbe sudo koristeći unose 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

Tipovi 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, spustićemo se na prvu vrstu Zadanih postavki u obrascima ispod. Parametri mogu biti zastavice, cjelobrojne vrijednosti, nizovi ili liste.

Treba imati na umu da su zastavice implicitno booleove i da se mogu isključiti pomoću '!' operatora, a liste imaju dva dodatna operatora dodjeljivanja, += (dodaj na listu) i -= (ukloni sa liste).

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

1. Postavite siguran put

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

  1. Koristi se kada administrator sistema ne vjeruje sudo korisnicima da imaju sigurnu PATH varijablu okruženja
  2. Da biste odvojili “korijensku stazu” i “korisničku stazu”, ova postavka ne utječe samo na korisnike definirane sa 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 sesiji za prijavu korisnika

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

Defaults  requiretty   

3. Pokrenite Sudo komandu koristeći pty

Nekoliko puta napadači mogu pokrenuti zlonamjerni program (poput virusa ili zlonamjernog softvera) koristeći sudo, što bi opet razvejalo pozadinski proces koji ostaje na korisnikovom terminalnom uređaju čak i kada se glavni program završi.

Da biste izbjegli takav scenario, možete konfigurirati sudo da pokreće druge komande samo iz psuedo-pty koristeći parametar use_pty, bez obzira da li je I/O evidentiranje uključeno ili ne kao slijedi:

Defaults  use_pty

4. Kreirajte Sudo log datoteku

Podrazumevano, sudo se evidentira kroz syslog(3). Međutim, da navedete prilagođenu datoteku dnevnika, koristite parametar logfile na sljedeći način:

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

Za evidentiranje imena hosta i četverocifrene godine u prilagođenoj log datoteci, koristite parametre log_host i log_year kako slijedi:

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

Ispod je primjer prilagođenog sudo log fajla:

5. Zabilježite ulaz/izlaz sudo komande

Parametri log_input i log_output omogućavaju sudo da pokrene komandu u pseudo-tty i evidentira sav korisnički unos i sav izlaz koji se prima na ekran.

Podrazumevani I/O direktorijum dnevnika je /var/log/sudo-io, i ako postoji redni broj sesije, on je pohranjen u ovom direktoriju. Možete odrediti prilagođeni direktorij kroz parametar iolog_dir.

Defaults   log_input, log_output

Postoje neke escape sekvence koje su podržane kao što je %{seq} koji se proširuje na monotono rastući redni broj baze-36, kao što je 000001, gdje se svake dvije cifre koriste za formiranje novog direktorija, npr. 00/00/01 kao u primjeru ispod:

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

Ostale datoteke u tom direktoriju možete vidjeti pomoću naredbe cat.

6. Predavanje Sudo korisnici

Za predavanje sudo korisnicima o korištenju lozinke na sistemu, koristite parametar lekcija kao u nastavku.

Ima 3 moguće vrijednosti:

  1. uvijek – uvijek predavati korisniku.
  2. jednom – lečite korisniku samo kada prvi put izvrši sudo naredbu (ovo se koristi kada nije navedena vrijednost)
  3. nikada – nikada ne držite lekcije korisniku.
 
Defaults  lecture="always"

Dodatno, možete postaviti prilagođenu datoteku predavanja sa 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 komandnoj liniji se prikazuje određena poruka. Zadana poruka je “izvinite, pokušajte ponovo”, možete izmijeniti poruku koristeći badpass_message parametar na sljedeći način:

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

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

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

Zadana vrijednost je 3:

Defaults   passwd_tries=5 

Da postavite vremensko ograničenje lozinke (podrazumevano je 5 minuta) koristeći parametar passwd_timeout, dodajte red ispod:

Defaults   passwd_timeout=2

9. Neka vas Sudo uvrijedi kada unesete pogrešnu lozinku

U slučaju da korisnik unese pogrešnu lozinku, sudo će prikazati uvrede na terminalu sa parametrom insults. Ovo će automatski isključiti parametar badpass_message.

Defaults  insults 

Pročitajte više: Neka vas Sudo uvrijedi kada unesete pogrešnu lozinku

10. Saznajte više Sudo konfiguracija

Osim toga, možete saznati više o konfiguracijama 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 komandi ili trikove i savjete s korisnicima Linuxa putem odjeljka za komentare ispod.