GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Was Sie wahrscheinlich noch nicht über sudo wussten

Jeder kennt sudo , Rechts? Dieses Tool wird standardmäßig auf den meisten Linux-Systemen installiert und ist für die meisten BSD- und kommerziellen Unix-Varianten verfügbar. Trotzdem, nachdem ich mit Hunderten von sudo gesprochen habe Benutzer war die häufigste Antwort, die ich erhielt, dass sudo ist ein Werkzeug, um das Leben zu erschweren.

Es gibt einen Root-Benutzer und es gibt den su Befehl, warum also noch ein weiteres Tool? Für viele sudo war nur ein Präfix für Verwaltungsbefehle. Nur wenige erwähnten, dass Sie sudo verwenden können, wenn Sie mehrere Administratoren für dasselbe System haben protokolliert, um zu sehen, wer was getan hat.

Also, was ist sudo ? Laut sudo Webseite:

"Sudo ermöglicht es einem Systemadministrator, Befugnisse zu delegieren, indem bestimmten Benutzern die Möglichkeit gegeben wird, einige Befehle als Root oder als anderer Benutzer auszuführen, während ein Audit-Trail der Befehle und ihrer Argumente bereitgestellt wird."

Standardmäßig sudo kommt mit einer einfachen Konfiguration, einer einzigen Regel, die es einem Benutzer oder einer Gruppe von Benutzern erlaubt, praktisch alles zu tun (mehr über die Konfigurationsdatei später in diesem Artikel):

%wheel ALL=(ALL) ALL

In diesem Beispiel bedeuten die Parameter Folgendes:

  • Der erste Parameter definiert die Mitglieder der Gruppe.
  • Der zweite Parameter definiert die Hosts, auf denen die Gruppenmitglieder Befehle ausführen können.
  • Der dritte Parameter definiert die Benutzernamen, unter denen der Befehl ausgeführt werden kann.
  • Der letzte Parameter definiert die Anwendungen, die ausgeführt werden können.

In diesem Beispiel also die Mitglieder des Rades Gruppe kann alle Anwendungen als alle Benutzer auf allen Hosts ausführen. Sogar diese wirklich freizügige Regel ist nützlich, da sie zu Protokollen darüber führt, wer was auf Ihrem Computer getan hat.

Aliase

Mehr über Systemadministratoren

  • Sysadmin-Blog aktivieren
  • Das automatisierte Unternehmen:ein Leitfaden zur IT-Verwaltung mit Automatisierung
  • eBook:Ansible-Automatisierung für SysAdmins
  • Geschichten aus der Praxis:Ein Leitfaden für Systemadministratoren zur IT-Automatisierung
  • eBook:Ein Leitfaden zu Kubernetes für SREs und Systemadministratoren
  • Neueste Sysadmin-Artikel

Sobald nicht nur Sie und Ihr bester Freund eine gemeinsam genutzte Box verwalten, werden Sie natürlich mit der Feinabstimmung der Berechtigungen beginnen. Sie können die Elemente in der obigen Konfiguration durch Listen ersetzen:eine Liste von Benutzern, eine Liste von Befehlen und so weiter. Wahrscheinlich werden Sie einige dieser Listen kopieren und in Ihre Konfiguration einfügen.

In dieser Situation können Aliase nützlich sein. Die Pflege derselben Liste an mehreren Stellen ist fehleranfällig. Sie definieren einen Alias ​​einmal und können ihn dann viele Male verwenden. Wenn Sie also das Vertrauen in einen Ihrer Administratoren verlieren, können Sie ihn aus dem Alias ​​entfernen, und Sie sind fertig. Mit mehreren Listen anstelle von Aliasen kann man leicht vergessen, den Benutzer aus einer der Listen mit erhöhten Rechten zu entfernen.

Funktionen für eine bestimmte Benutzergruppe aktivieren

Das sudo Der Befehl enthält eine große Menge von Standardeinstellungen. Dennoch gibt es Situationen, in denen Sie einige davon überschreiben möchten. In diesem Fall verwenden Sie die Standardeinstellungen Anweisung in der Konfiguration. Normalerweise werden diese Standardwerte für jeden Benutzer erzwungen, aber Sie können die Einstellung basierend auf Host, Benutzername usw. auf eine Teilmenge von Benutzern einschränken. Hier ist ein Beispiel, von dem meine Generation von Systemadministratoren gerne hört:Beleidigungen. Dies sind nur einige lustige Nachrichten für den Fall, dass jemand ein Passwort falsch eingibt:

czanik@linux-mewy:~> sudo ls
[sudo] password for root:
Hold it up to the light --- not a brain in sight!
[sudo] password for root:
My pet ferret can type better than you!
[sudo] password for root:
sudo: 3 incorrect password attempts
czanik@linux-mewy:~>

Da nicht jeder ein Fan von Sysadmin-Humor ist, sind diese Beleidigungen standardmäßig deaktiviert. Das folgende Beispiel zeigt, wie Sie diese Einstellung nur für Ihre erfahrenen Systemadministratoren aktivieren, die Mitglieder des Wheel sind Gruppe:

Defaults !insults
Defaults:%wheel insults

Ich habe nicht genug Finger, um zu zählen, wie viele Leute mir dafür gedankt haben, dass ich diese Nachrichten zurückgebracht habe.

Digest-Überprüfung

Es gibt natürlich ernsthaftere Funktionen in sudo auch. Eine davon ist die Digest-Verifizierung. Sie können den Anwendungsauszug in Ihre Konfiguration aufnehmen: 

peter ALL = sha244:11925141bb22866afdf257ce7790bd6275feda80b3b241c108b79c88 /usr/bin/passwd

In diesem Fall sudo überprüft und vergleicht den Digest der Anwendung mit dem in der Konfiguration gespeicherten, bevor die Anwendung ausgeführt wird. Wenn sie nicht übereinstimmen, sudo weigert sich, die Anwendung auszuführen. Obwohl es schwierig ist, diese Informationen in Ihrer Konfiguration zu verwalten – es gibt keine automatisierten Tools für diesen Zweck – können diese Digests Ihnen eine zusätzliche Schutzebene bieten.

Sitzungsaufzeichnung

Sitzungsaufzeichnung ist auch eine weniger bekannte Funktion von sudo . Nach meiner Demo verlassen viele Leute meinen Vortrag mit Plänen, sie in ihrer Infrastruktur zu implementieren. Wieso den? Denn mit der Sitzungsaufzeichnung sehen Sie nicht nur den Befehlsnamen, sondern auch alles, was im Terminal passiert ist. Sie können sehen, was Ihre Administratoren tun, selbst wenn sie Shell-Zugriff haben, und Protokolle zeigen nur diese bash gestartet.

Derzeit gibt es eine Einschränkung. Aufzeichnungen werden lokal gespeichert, sodass Benutzer mit ausreichenden Berechtigungen ihre Spuren löschen können. Bleiben Sie dran für kommende Funktionen.

Plugins

Ab Version 1.8 sudo auf eine modulare, Plugin-basierte Architektur umgestellt. Da die meisten Funktionen als Plugins implementiert sind, können Sie die Funktionalität von sudo einfach ersetzen oder erweitern indem du selbst schreibst. Für sudo sind bereits sowohl Open-Source- als auch kommerzielle Plugins verfügbar .

In meinem Vortrag habe ich das sudo_pair demonstriert Plugin, das auf GitHub verfügbar ist. Dieses Plugin ist in Rust entwickelt, was bedeutet, dass es nicht so einfach zu kompilieren ist, und es ist noch schwieriger, die Ergebnisse zu verteilen. Andererseits bietet das Plugin interessante Funktionen, die einen zweiten Administrator erfordern, um die Ausführung von Befehlen über sudo zu genehmigen (oder abzulehnen). . Darüber hinaus können Sitzungen auf dem Bildschirm verfolgt und bei verdächtigen Aktivitäten beendet werden.

In einer Demo, die ich kürzlich während eines Vortrags auf der All Things Open-Konferenz gemacht habe, hatte ich das berüchtigte:

czanik@linux-mewy:~> sudo  rm -fr /

Befehl auf dem Bildschirm angezeigt. Alle hielten den Atem an, um zu sehen, ob mein Laptop zerstört wurde, aber er hat überlebt.

Protokolle

Wie ich bereits eingangs erwähnt habe, ist Logging und Alerting ein wichtiger Bestandteil von sudo . Wenn Sie Ihre sudo nicht überprüfen regelmäßig loggt, lohnt es sich nicht viel, sudo zu verwenden . Dieses Tool warnt per E-Mail bei Ereignissen, die in der Konfiguration angegeben sind, und protokolliert alle Ereignisse in syslog . Debug-Protokolle können aktiviert und verwendet werden, um Regeln zu debuggen oder Fehler zu melden.

Warnungen

E-Mail-Benachrichtigungen sind jetzt etwas altmodisch, aber wenn Sie syslog-ng verwenden zum Sammeln Ihrer Protokollmeldungen, Ihr sudo Protokollmeldungen werden automatisch analysiert. Sie können ganz einfach benutzerdefinierte Benachrichtigungen erstellen und diese an eine Vielzahl von Zielen senden, darunter Slack, Telegram, Splunk oder Elasticsearch. Weitere Informationen zu dieser Funktion finden Sie in meinem Blog auf syslong-ng.com.

Konfiguration

Wir haben viel über sudo gesprochen Funktionen und sah sogar ein paar Konfigurationszeilen. Schauen wir uns nun genauer an, wie sudo konfiguriert ist. Die Konfiguration selbst ist in /etc/sudoers verfügbar , die eine einfache Textdatei ist. Es wird jedoch nicht empfohlen, diese Datei direkt zu bearbeiten. Verwenden Sie stattdessen visudo , da dieses Tool auch eine Syntaxprüfung durchführt. Wenn Sie vi nicht mögen , können Sie den zu verwendenden Editor ändern, indem Sie auf EDITOR zeigen Umgebungsvariable bei Ihrer bevorzugten Option.

Bevor Sie mit der Bearbeitung der sudo beginnen stellen Sie sicher, dass Sie das Root-Passwort kennen. (Ja, sogar unter Ubuntu, wo root standardmäßig kein Passwort hat.) Während visudo überprüft die Syntax, ist es einfach, eine syntaktisch korrekte Konfiguration zu erstellen, die Sie aus Ihrem System aussperrt.

Wenn Sie für den Notfall ein Root-Passwort zur Hand haben, können Sie mit der Bearbeitung Ihrer Konfiguration beginnen. Wenn es um die Sudoer geht Datei, gibt es eine wichtige Sache zu beachten:Diese Datei wird von oben nach unten gelesen, und die letzte Einstellung gewinnt. Diese Tatsache bedeutet für Sie, dass Sie mit generischen Einstellungen beginnen und Ausnahmen am Ende platzieren sollten, da sonst Ausnahmen von den generischen Einstellungen überschrieben werden.

Sie können ein einfaches sudoers finden Datei unten, basierend auf der in CentOS, und fügen Sie ein paar Zeilen hinzu, die wir zuvor besprochen haben:

Defaults !visiblepw
Defaults always_set_home
Defaults match_group_by_gid
Defaults always_query_group_plugin
Defaults env_reset
Defaults env_keep = "COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS"
Defaults env_keep += "MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE"
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin
root ALL=(ALL) ALL
%wheel ALL=(ALL) ALL
Defaults:%wheel insults
Defaults !insults
Defaults log_output

Diese Datei beginnt mit der Änderung einer Reihe von Standardeinstellungen. Dann kommen die üblichen Standardregeln:Die root Benutzer und Mitglieder des Rades Gruppe haben volle Berechtigungen für die Maschine. Als Nächstes aktivieren wir Beleidigungen für das Rad Gruppe, aber deaktivieren Sie sie für alle anderen. Die letzte Zeile aktiviert die Sitzungsaufzeichnung.

Die obige Konfiguration ist syntaktisch korrekt, aber können Sie den logischen Fehler erkennen? Ja, es gibt eine:Beleidigungen sind für alle deaktiviert, da die letzte, generische Einstellung die vorherige, spezifischere Einstellung überschreibt. Sobald Sie die beiden Zeilen vertauschen, funktioniert das Setup wie erwartet:Mitglieder des Rades Gruppe erhalten lustige Nachrichten, aber der Rest der Benutzer erhält sie nicht.

Konfigurationsverwaltung

Einmal müssen Sie die sudoers pflegen Datei auf mehreren Computern, möchten Sie Ihre Konfiguration höchstwahrscheinlich zentral verwalten. Hier gibt es zwei große Open-Source-Möglichkeiten. Beide haben ihre Vor- und Nachteile.

Sie können eine der Konfigurationsverwaltungsanwendungen verwenden, mit denen Sie auch den Rest Ihrer Infrastruktur konfigurieren. Red Hat Ansible, Puppet und Chef verfügen alle über Module zum Konfigurieren von sudo . Das Problem bei diesem Ansatz besteht darin, dass die Aktualisierung von Konfigurationen weit von Echtzeit entfernt ist. Außerdem können Benutzer die Sudoer weiterhin bearbeiten Datei lokal speichern und Einstellungen ändern.

Das sudo Tool kann seine Konfiguration auch in LDAP speichern. In diesem Fall erfolgen Konfigurationsänderungen in Echtzeit und Benutzer können nicht mit den Sudoern herumspielen Datei. Andererseits hat dieses Verfahren auch Einschränkungen. Beispielsweise können Sie keine Aliase oder sudo verwenden wenn der LDAP-Server nicht verfügbar ist.

Neue Funktionen

Es gibt eine neue Version von sudo gleich um die Ecke. Version 1.9 wird viele interessante neue Funktionen enthalten. Hier die wichtigsten geplanten Features:

  • Ein Aufzeichnungsdienst zum zentralen Sammeln von Sitzungsaufzeichnungen, der gegenüber der lokalen Speicherung viele Vorteile bietet:
    • Es ist bequemer, an einem Ort zu suchen.
    • Aufzeichnungen sind auch dann verfügbar, wenn das Sendegerät ausgefallen ist.
    • Aufnahmen können nicht von jemandem gelöscht werden, der seine Tracks löschen möchte.
  • Die Prüfung Plugin fügt sudoers keine neuen Funktionen hinzu , sondern stellt stattdessen eine API für Plugins bereit, um einfach auf jede Art von sudo zuzugreifen Protokolle. Dieses Plugin ermöglicht das Erstellen benutzerdefinierter Protokolle von sudo Veranstaltungen mit Plugins.
  • Die Genehmigung Plugin ermöglicht Sitzungsgenehmigungen ohne Verwendung von Plugins von Drittanbietern.
  • Und mein persönlicher Favorit:Python-Unterstützung für Plugins, mit der Sie sudo einfach erweitern können Python-Code verwenden, anstatt nativ in C zu codieren.

Schlussfolgerung

Ich hoffe, dieser Artikel hat Ihnen bewiesen, dass sudo ist viel mehr als nur ein einfaches Präfix. Es gibt unzählige Möglichkeiten, die Berechtigungen auf Ihrem System zu optimieren. Sie können nicht nur Berechtigungen feinabstimmen, sondern auch die Sicherheit verbessern, indem Sie Digests überprüfen. Mit Sitzungsaufzeichnungen können Sie überprüfen, was auf Ihren Systemen passiert. Sie können auch die Funktionalität von sudo erweitern Plugins verwenden, entweder etwas bereits Verfügbares verwenden oder ein eigenes schreiben. Schließlich können Sie angesichts der Liste der kommenden Funktionen sehen, dass auch wenn sudo ist Jahrzehnte alt, es ist ein lebendiges Projekt, das sich ständig weiterentwickelt.

Wenn Sie mehr über sudo erfahren möchten , hier sind einige Ressourcen:

  • Das sudo Webseite

  • Das sudo blog

  • Folgen Sie uns auf Twitter


Linux
  1. 30 Dinge, die Sie nicht über den Linux-Kernel wussten

  2. Was ist VPS-Hosting? Alles, was Sie über Virtual Private Server wissen müssen

  3. Was Systemadministratoren über die Verwendung von Bash wissen müssen

  4. Was ist ein VPN? Alles, was Sie über VPNs wissen müssen

  5. Wissenswertes über Debi a Volume Linux Server

Alles, was Sie über Linux Ubuntu Server wissen müssen

Alles, was Sie über Linux OpenSSH Server wissen müssen

Alles, was Sie über Linux Zorin OS wissen müssen

Alles, was Sie über Peppermint Linux OS wissen müssen

Alles, was Sie über die Linux Mint-Distribution wissen müssen

Alles, was Sie über Inodes in Linux wissen müssen