Zoeken op website

10 Handige Sudoers-configuraties voor het instellen van 'sudo' in Linux


In Linux en andere Unix-achtige besturingssystemen kan alleen de root-gebruiker alle opdrachten uitvoeren en bepaalde kritieke bewerkingen op het systeem uitvoeren, zoals installeren en bijwerken, pakketten verwijderen, gebruikers en groepen aanmaken, belangrijke systemen wijzigen configuratiebestanden enzovoort.

Een systeembeheerder die de rol van rootgebruiker op zich neemt, kan echter andere normale systeemgebruikers toestaan met behulp van de sudo-opdracht en een paar configuraties om enkele opdrachten uit te voeren en een aantal essentiële systeembewerkingen uit te voeren, waaronder de hierboven genoemde.

Als alternatief kan de systeembeheerder het rootgebruikerswachtwoord delen (wat geen aanbevolen methode is), zodat normale systeemgebruikers toegang hebben tot het rootgebruikersaccount via de opdracht su.

Met sudo kan een toegestane gebruiker een opdracht uitvoeren als root (of een andere gebruiker), zoals gespecificeerd door het beveiligingsbeleid:

  1. Het leest en ontleedt /etc/sudoers, zoekt de aanroepende gebruiker en zijn rechten op,
  2. vraagt vervolgens de oproepende gebruiker om een wachtwoord (normaal gesproken het wachtwoord van de gebruiker, maar het kan net zo goed het wachtwoord van de doelgebruiker zijn. Of het kan worden overgeslagen met de NOPASSWD-tag),
  3. daarna maakt sudo een onderliggend proces waarin het setuid() aanroept om naar de doelgebruiker te schakelen
  4. vervolgens voert het een shell uit of het commando dat als argumenten is opgegeven in het onderliggende proces hierboven.

Hieronder vindt u tien /etc/sudoers bestandsconfiguraties waarmee u het gedrag van de sudo-opdracht kunt wijzigen met behulp van Defaults-items.

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

Soorten standaardinvoer

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

Voor de reikwijdte van deze handleiding beperken we ons tot het eerste type Standaardwaarden in de onderstaande formulieren. Parameters kunnen vlaggen, gehele waarden, tekenreeksen of lijsten zijn.

Houd er rekening mee dat vlaggen impliciet Booleaans zijn en kunnen worden uitgeschakeld met de operator '!', en dat lijsten twee extra toewijzingsoperatoren hebben, += (toevoegen aan lijst) en -= (verwijderen uit lijst).

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

1. Stel een beveiligd pad in

Dit is het pad dat wordt gebruikt voor elke opdracht die wordt uitgevoerd met sudo. Het heeft twee belangrijke punten:

  1. Wordt gebruikt wanneer een systeembeheerder er niet op vertrouwt dat sudo-gebruikers een veilige PATH-omgevingsvariabele hebben
  2. Om “root path” en “user path” te scheiden, worden alleen gebruikers gedefinieerd door exempt_group niet beïnvloed door deze instelling.

Om het in te stellen, voegt u de regel toe:

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

2. Schakel sudo in tijdens de TTY-gebruikersinlogsessie

Om ervoor te zorgen dat sudo kan worden aangeroepen vanuit een echte tty, maar niet via methoden zoals cron of cgi-bin scripts, voegt u de regel toe:

Defaults  requiretty   

3. Voer Sudo Command uit met een pty

Een paar keer kunnen aanvallers een kwaadaardig programma (zoals een virus of malware) uitvoeren met behulp van sudo, wat opnieuw een achtergrondproces zou afsplitsen dat op het eindapparaat van de gebruiker blijft staan, zelfs als het hoofdprogramma klaar is met uitvoeren.

Om een dergelijk scenario te voorkomen, kunt u sudo configureren om andere opdrachten alleen uit te voeren vanaf een psuedo-pty met behulp van de parameter use_pty, ongeacht of I/O-logboekregistratie is ingeschakeld of niet. volgt:

Defaults  use_pty

4. Maak een Sudo-logbestand

Standaard logt sudo via syslog(3). Als u echter een aangepast logbestand wilt opgeven, gebruikt u de parameter logfile als volgt:

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

Om de hostnaam en het viercijferige jaartal in het aangepaste logbestand vast te leggen, gebruikt u respectievelijk de parameters log_host en log_year als volgt:

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

Hieronder ziet u een voorbeeld van een aangepast sudo-logbestand:

5. Log Sudo-opdrachtinvoer/uitvoer

De parameters log_input en log_output zorgen ervoor dat sudo een commando in pseudo-tty kan uitvoeren en alle gebruikersinvoer en alle uitvoer die naar het scherm wordt verzonden, kan loggen.

De standaard I/O-logmap is /var/log/sudo-io en als er een sessievolgnummer is, wordt dit in deze map opgeslagen. U kunt een aangepaste map opgeven via de parameter iolog_dir.

Defaults   log_input, log_output

Er worden enkele ontsnappingsreeksen ondersteund, zoals %{seq} dat zich uitbreidt naar een monotoon stijgend grondtal-36-volgnummer, zoals 000001, waarbij elke twee cijfers worden gebruikt om een nieuwe map te vormen, b.v. 00/00/01 zoals in het onderstaande voorbeeld:

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

Je kunt de rest van de bestanden in die map bekijken met de opdracht cat.

6. Lezing Sudo-gebruikers

Om sudo-gebruikers les te geven over wachtwoordgebruik op het systeem, gebruikt u de parameter lecture, zoals hieronder.

Het heeft 3 mogelijke waarden:

  1. altijd – altijd een gebruiker lesgeven.
  2. één keer – geef een gebruiker alleen les de eerste keer dat hij de sudo-opdracht uitvoert (dit wordt gebruikt als er geen waarde is opgegeven)
  3. nooit – geef de gebruiker nooit de les.
 
Defaults  lecture="always"

Bovendien kunt u een aangepast lezingsbestand instellen met de parameter lecture_file. Typ het juiste bericht in het bestand:

Defaults  lecture_file="/path/to/file"

7. Toon aangepast bericht wanneer u het verkeerde sudo-wachtwoord invoert

Wanneer een gebruiker een verkeerd wachtwoord invoert, wordt er een bepaald bericht weergegeven op de opdrachtregel. Het standaardbericht is “sorry, probeer het opnieuw”. U kunt het bericht als volgt aanpassen met de parameter badpass_message:

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

8. Verhoog de limiet voor sudo-wachtwoordpogingen

De parameter passwd_tries wordt gebruikt om het aantal keren aan te geven dat een gebruiker kan proberen een wachtwoord in te voeren.

De standaardwaarde is 3:

Defaults   passwd_tries=5 

Om een wachtwoordtime-out in te stellen (standaard is dit 5 minuten) met de parameter passwd_timeout, voegt u de onderstaande regel toe:

Defaults   passwd_timeout=2

9. Laat Sudo u beledigen als u een verkeerd wachtwoord invoert

Als een gebruiker een verkeerd wachtwoord typt, geeft sudo beledigingen op de terminal weer met de parameter beledigingen. Hierdoor wordt de parameter badpass_message automatisch uitgeschakeld.

Defaults  insults 

Lees meer: laat Sudo u beledigen als u een onjuist wachtwoord invoert

10. Meer informatie over Sudo-configuraties

Bovendien kun je meer sudo-opdrachtconfiguraties leren door te lezen: Verschil tussen su en sudo en Hoe sudo in Linux te configureren.

Dat is het! Je kunt andere nuttige sudo-opdrachtconfiguraties of trucs en tips delen met Linux-gebruikers via het commentaargedeelte hieronder.