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:
- Čita i analizira /etc/sudoers, traži korisnika koji poziva i njegova dopuštenja,
- 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),
- nakon toga, sudo stvara podređeni proces u kojem poziva setuid() za prebacivanje na ciljnog korisnika
- 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:
- Koristi se kada administrator sustava ne vjeruje sudo korisnicima da imaju sigurnu varijablu okruženja PATH
- 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:
- uvijek – uvijek predavanje korisniku.
- jednom – lekcija korisniku kada prvi put izvrši naredbu sudo (ovo se koristi kada nije navedena vrijednost)
- 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.