In Linux en andere op Unix lijkende 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 systeemconfiguratiebestanden wijzigen enzovoort.
De systeembeheerder die de rol van de rootgebruiker aanneemt, kan echter andere normale systeemgebruikers toestaan met behulp van het sudo-commando en enkele configuraties om ook enkele opdrachten uit te voeren en een aantal vitale systeembewerkingen uit te voeren, inclusief de hierboven genoemde.
Als alternatief kan de systeembeheerder het wachtwoord van de rootgebruiker delen (wat geen aanbevolen methode is) zodat normale systeemgebruikers toegang hebben tot het rootgebruikersaccount via het su-commando.
sudo staat een toegestane gebruiker toe om een opdracht uit te voeren als root (of een andere gebruiker), zoals gespecificeerd door het beveiligingsbeleid:
- Het leest en analyseert /etc/sudoers, zoekt de aanroepende gebruiker en zijn machtigingen op,
- daarna vraagt sudo de aanroepende gebruiker om een wachtwoord (normaal gesproken het wachtwoord van de gebruiker, maar het kan ook het wachtwoord van de doelgebruiker zijn. Of het kan worden overgeslagen met de NOPASSWD-tag),
- daarna maakt sudo een kindproces aan waarin het setuid() aanroept om over te schakelen naar de doelgebruiker
- vervolgens voert het een shell uit of de opgegeven opdracht als argumenten in het bovenstaande kindproces.
Hieronder volgen tien configuraties voor het bestand /etc/sudoers om het gedrag van het sudo-commando te wijzigen met behulp van Defaults-vermeldingen.
$ 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 Default-vermeldingen
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 het bereik van deze handleiding zullen we ons beperken tot het eerste type Defaults in de onderstaande vormen. Parameters kunnen vlaggen, gehele getallen, tekenreeksen of lijsten zijn.
U moet opmerken dat vlaggen impliciet boolean zijn en uitgeschakeld kunnen worden met de '!'
-operator, en lijsten hebben twee extra toekenningsoperatoren, +=
(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 beveiligde PATH in
Dit is het pad dat wordt gebruikt voor elk commando dat wordt uitgevoerd met sudo, het heeft twee belangrijke functies:
- Wordt gebruikt wanneer een systeembeheerder sudo-gebruikers niet vertrouwt om een veilige PATH-omgevingsvariabele te hebben
- Om “rootpad” en “gebruikerspad” te scheiden, worden alleen gebruikers gedefinieerd door exempt_group niet beïnvloed door deze instelling.
Om het in te stellen, voeg de regel toe:
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"
2. Schakel sudo in op de inlogsessie van de TTY-gebruiker
Om sudo in te schakelen om te worden aangeroepen vanuit een echte tty maar niet via methoden zoals cron-taken of cgi-bin-scripts, voeg de regel toe:
Defaults requiretty
3. Voer Sudo-commando uit met behulp van een pty
A few times, attackers can run a malicious program (such as a virus or malware) using sudo, which would again fork a background process that remains on the user’s terminal device even when the main program has finished executing.
Om een dergelijk scenario te vermijden, kunt u sudo configureren om andere commando’s alleen uit te voeren vanuit een schijn-pty met behulp van de parameter use_pty
, of I/O-logging nu is ingeschakeld of niet, als volgt:
Defaults use_pty
4. Maak een sudo-logbestand aan
Standaard logt sudo via syslog(3). Om echter een aangepast logbestand op te geven, gebruik de logfile parameter als volgt:
Defaults logfile="/var/log/sudo.log"
Om de hostnaam en het viercijferige jaartal in het aangepaste logbestand te loggen, gebruik respectievelijk de log_host en log_year parameters als volgt:
Defaults log_host, log_year, logfile="/var/log/sudo.log"
Hieronder volgt een voorbeeld van een aangepast sudo-logbestand:

5. Log Sudo Commando Invoer/Uitvoer
De log_input en log_output parameters stellen sudo in staat een commando in pseudo-tty uit te voeren en alle gebruikersinvoer en alle output die naar het scherm wordt verzonden respectievelijk te 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 iolog_dir parameter.
Defaults log_input, log_output
Er zijn enkele escape-sequenties ondersteund zoals % {seq} die zich uitbreidt tot een monotoon toenemend basis-36 volgnummer, zoals 000001, waarbij elke twee cijfers worden gebruikt om een nieuwe map te vormen, bijv. 00/00/01 zoals in het volgende voorbeeld:
$ cd /var/log/sudo-io/ $ ls $ cd 00/00/01 $ ls $ cat log

U kunt de rest van de bestanden in die map bekijken met behulp van het cat commando.
6. Sudo Gebruikers Lezing
Om sudo-gebruikers te informeren over het gebruik van wachtwoorden op het systeem, gebruik de lecture parameter als volgt.
Het heeft 3 mogelijke waarden:
- always – altijd een gebruiker toespreken.
- Eenmalig – geef alleen een lezing aan de gebruiker de eerste keer dat ze het sudo-commando uitvoeren (dit wordt gebruikt wanneer er geen waarde is gespecificeerd)
- Nooit – geef de gebruiker nooit een lezing.
Defaults lecture="always"
Bovendien kunt u een aangepast lezingbestand instellen met de lecture_file-parameter, typ de juiste boodschap in het bestand:
Defaults lecture_file="/path/to/file"

7. Toon aangepaste 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 wijzigen met de badpass_message-parameter als volgt:
Defaults badpass_message="Password is wrong, please try again"
8. Verhoog het aantal sudo-wachtwoordpogingenlimiet
De parameter passwd_tries wordt gebruikt om het aantal keren te specificeren 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 5 minuten) met behulp van de passwd_timeout-parameter, voegt u de volgende regel toe:
Defaults passwd_timeout=2
9. Laat sudo je beledigen wanneer je het verkeerde wachtwoord invoert
Als een gebruiker een verkeerd wachtwoord typt, zal sudo beledigingen weergeven op de terminal met de beledigingenparameter. Hierdoor wordt de badpass_message-parameter automatisch uitgeschakeld.
Defaults insults

Lees Meer: Laat Sudo Je Beledigen Wanneer Je Het Verkeerde Wachtwoord Invoert
10. Leer meer over Sudo-configuraties
Daarnaast kun je meer sudo-opdrachtconfiguraties leren door te lezen: Verschil tussen su en sudo en Hoe sudo configureren in Linux.
Dat is het! Je kunt andere handige sudo-opdrachtconfiguraties of trucs en tips met Linux-gebruikers daar delen via de opmerkingen hieronder.
Source:
https://www.tecmint.com/sudoers-configurations-for-setting-sudo-in-linux/