Sicherheitsproblem des Linux-Befehls sudo?

7
  1. Ich verwende eine Red Hat Enterprise 5 Linux-Box. Ich finde, wenn sich ein Benutzer in der Datei / etc / sudoers befindet. Wenn der Benutzer den Befehl mit sudo ausführt, führt der Benutzer diesen Befehl mit Root-Rechten aus (ohne das Root-Passwort zu kennen, muss der Benutzer sudo nur das eigene Passwort des Benutzers eingeben um einen Befehl mit sudo auszuführen). Ist das richtiges Verständnis?

    1. Wenn ja, ist es dann eine Sicherheitslücke? Da andere Benutzer als root mit Root-Rechten laufen könnten?

Danke im Voraus, George

George2
quelle
1
Achtung: Wenn Sie einem Benutzer erlauben, einen Befehl, der andere Befehle (dh bash) ausführen kann, als root auszuführen , ist er nur root. Wenn Sie zulassen, dass Root-Befehle ausgeführt werden, die beliebige Dateien schreiben, ist er ohnehin root.
o0 '.
1
Es gibt mehrere Probleme bei der Verwendung von "sudo" auf einem System - eines davon ist, dass die Verwendung von sudo gegen die Prinzipien der IT-Sicherheit verstößt - Sie sollten nicht in der Lage sein, Berechtigungen zu eskalieren. Ich schrieb einen Artikel über die Probleme mit sudo, wenn jemand interessiert ist: dmitry.khlebnikov.net/2015/07/…
Galaxie

Antworten:

19

Es ist keine Sicherheitslücke, zumindest nicht mehr als es suist.

sudo Dies ist nur eine Möglichkeit für einen Administrator, einen schnellen Root-Zugriff ohne Verwendung einer Root-Shell zu erhalten (was gefährlich sein kann).

sudoDer Benutzer muss lediglich sein eigenes Passwort eingeben und gewährt ihm tatsächlich Root-Zugriff (Versuch $ sudo whoami). Es sollte jedoch nicht jeder in der /etc/sudoersDatei sein.

Wenn Sie sich die sudoManpage ansehen , erfahren Sie, wie Sie sich sudoauf einige einfache Befehle beschränken können.

Sie können beispielsweise nur zulassen, dass der Benutzer bobausgeführt wird, $ sudo poweroffohne dass er dies zulässt $ sudo cat /etc/shadow.

Nein, es ist keine Sicherheitslücke, wenn Sie es richtig konfigurieren und verwenden. Wenn Sie nicht möchten, dass Ihre Benutzer eine Root-Shell haben, denken Sie daran, Befehle wie zu verbieten $ sudo su.

ereOn
quelle
Sie meinen, alle Benutzer in der sudoers-Datei sind admin?
George2
6
@ George2: Ja und nein. Alle Benutzer, die in sudoers(oder zu Gruppen, die in aufgeführt sind sudoers) erscheinen, können verwenden sudo. Wie gesagt, Sie können die Befehle einschränken, die sie möglicherweise sudo. Kurz gesagt: Alle Benutzer, die mindestens einen Befehl mit erhöhten Berechtigungen ausführen müssen, sollten sich in befinden /etc/sudoers. Ob diese Leute nennen sind Admins oder nicht , ist bis zu Ihnen;)
Ereon
@ George2: Gern geschehen :)
Uhr
11

Wenn es eine Sicherheitslücke wäre, wäre sudo bereits abgeschafft worden. Es ist beabsichtigt, Sie können es so konfigurieren, dass das Kennwort des Benutzers, das Kennwort des Roots oder überhaupt kein Kennwort erforderlich ist.

Da es sowieso nur vom Root konfiguriert werden kann, gibt es keine Sicherheitslücke. Der Stamm konfiguriert, wer Zugriff darauf hat, wer für jeden Benutzer und für jede Gruppe welches Kennwort eingeben muss.

Zum letzten Teil: "Da andere Benutzer als root mit Root-Rechten ausgeführt werden könnten": Das ist der springende Punkt des sudo-Programms.

Trauriges Gesicht
quelle
Hacker-Benutzer (vorausgesetzt, der Benutzer hat bereits die Berechtigung, sudo auszuführen) könnten dieser Datei andere Hacker-Benutzer hinzufügen. Ist dies eine Sicherheitslücke?
George2
15
@ George2: Wenn ein Hacker einen Root-Zugriff auf Ihren Server hat (mit sudooder irgendetwas anderem spielt es keine Rolle), ist das Spiel sowieso schon vorbei .
Am
5
Wenn ein Hacker das Kennwort eines Benutzers erhält, der über die vollständigen Sudo-Berechtigungen verfügt, kann er root werden. Geben Sie daher nur Benutzern, denen Sie vertrauen, Sudo-Berechtigungen, um ihr Konto sicher zu verwalten. Beispielsweise erlauben wir sudo nur für Administratoren, die Zertifikate zum Anmelden verwenden.
Martijn Heemels
3

sudo ist sicher - sicher genug, dass einige Distributionen (Ubuntu) es verwenden und standardmäßig empfehlen können.

Wenn Sie einem Benutzer jedoch pauschale Sudo-Rechte erteilen, wird die Trennung zwischen diesem Konto und einem Root-Konto weitgehend aufgehoben. Wenn Sie dem Benutzer timmy beispielsweise pauschale Sudo-Rechte erteilen , wird das Timmy- Konto genauso privilegiert wie das Root- Konto. Jeder, der in das Konto von timmy einbricht, kann alles als root tun (in den meisten Fällen wird das Passwort von timmy benötigt).

Pro-Sudo-Argumente

  • Normalerweise so eingerichtet, dass sich niemand als Benutzer mit dem Namen "root" anmelden kann. Kann es schwieriger machen, ein Superuser-Login brutal zu erzwingen.
  • Sie können genau steuern, welche Befehle ein Benutzer als Superuser ausführen kann (obwohl Sie normalerweise einem Konto alle Berechtigungen erteilen, das praktisch dieselbe Rolle wie "root" mit einem anderen Namen spielt).
  • Entfernt die Versuchung, einfach als root angemeldet zu bleiben, wenn nicht alle von Ihnen ausgeführten Befehle Superuser-Berechtigungen benötigen.

Anti-Sudo-Argumente

  • sudo könnte die Praxis fördern, Benutzern Berechtigungen auf Superuser-Ebene zu erteilen, was wahrscheinlich keine gute Idee ist.
  • sudo ist etwas komplizierter einzurichten, weil es so flexibel ist. Auf diese Weise können Sie es zwar schön und sicher gestalten, aber es kann auch einfacher sein, versehentlich Sicherheitslücken zu öffnen, wenn Sie nicht vorsichtig sind oder nicht verstehen, was Sie tun.
  • Es kann im Allgemeinen als schlechte Idee angesehen werden, ein Konto mit Superuser-Berechtigungen für den täglichen Gebrauch zu verwenden, und Sudo-Berechtigungen sind das nächstbeste. Ein Gegenargument dazu ist, dass das Kennwort Ihres Benutzers (in den meisten Fällen) immer noch erforderlich ist, um in den Superuser-Status zu gelangen, und dass Eindringlingen / fehlerhaften Prozessen, die wie Sie ausgeführt werden, dies wahrscheinlich nicht bekannt ist.

Im Wesentlichen handelt es sich nur um zwei verschiedene Denkrichtungen, die beide gültig genug sind, um ganze Verteilungen zu haben, die ihren eigenen Ansatz unterstützen.

Ich bin mit dem Nicht-Sudo-Ansatz besser vertraut, vor allem, weil ich als Debian-Benutzer damit besser vertraut bin. Ich finde die Einfachheit, ein Root-Konto zu haben, über die Flexibilität von Sudo-Gewinnen für mich. Ich erlaube keine Root-Anmeldung per Fernzugriff (dh über SSH) und empfehle, dass dies auch niemand anderes tun sollte.

thomasrutter
quelle
2

sudo ist sicher, weil:

  1. Ein Root-Benutzer oder ein anderer sudo-fähiger Benutzer (der 'visudo' oder '$ EDITOR / etc / sudoers' ausführen kann) muss / etc / sudoers ändern, um die Berechtigungen zu erteilen.

  2. Sie können genau einschränken und angeben, was eine Person mit Root-Rechten ausführen kann, wodurch es möglich ist, unterschiedliche Ebenen von Administratorbenutzern auf einem Server zu haben.

  3. Als privilegierter Benutzer können Sie die vorhandene Datei / etc / sudoers anzeigen, um festzustellen, welche Benutzer über Berechtigungen verfügen.

  4. Sie müssen das Root-Passwort nicht für ein Team von Administratoren freigeben.

  5. Es wird vollständig erfasst, was mit dem Befehl sudo gemacht wird, und es wird ein klarer Prüfpfad bereitgestellt

cpbills
quelle
1

Ich denke, es ist aus Sicherheitsgründen besser, als als root angemeldet zu sein, da es nicht bequem ist, Dinge als root zu tun. Es ist sicherlich besser für die Rechenschaftspflicht, die Teil der Sicherheit ist.

Sie müssen einschränken, wer es verwenden würde. Normalerweise beschränken Sie sich auf Personen, die das Root-Passwort sowieso kennen, obwohl es möglich ist, schicker zu werden und die Möglichkeiten bestimmter Personen einzuschränken.

Das Sicherheitsproblem, das mich stört, ist, dass ich nicht für jeden sudo-Befehl mein Passwort eingeben muss. Wenn ich ein paar weitere vom selben Terminal aus betrete, ohne dass viel Zeit vergeht, akzeptiert es den Sudo ohne das Passwort. Dies soll vermutlich verhindern, dass ich ständig mein Passwort eingebe, aber es ist denkbar, dass eine Bösewicht-Userland-Software dies ausnutzt. Ich weiß nicht genug, um das Risiko persönlich einzuschätzen.

David Thornley
quelle
Sudo ist sehr konfigurierbar, so dass das Zeitlimit für das Speichern des Kennworts leicht verkürzt werden kann. Bearbeiten Sie einfach die Datei / etc / sudoers und ändern Sie die Zeile Defaults so, dass sie beispielsweise für eine Zeitüberschreitung von 2 Minuten so aussieht: Standardeinstellungen env_reset, timestamp_timeout = 2
Martijn Heemels
0

Sudoer haben nicht automatisch Zugriff als Root. Sie haben als konfigurierter Benutzer Zugriff. Es ist möglich und korrekt, Benutzern Zugriff auf ausgeführte Tools als andere Nicht-Root-Benutzer zu gewähren.

Alle Benutzer, die Zugriff auf die Ausführung einer Shell oder eines Befehls haben, der Shell-Zugriff gewähren kann, sollten die Benutzer sein, denen Sie das Root-Kennwort anvertrauen würden. Mit sudo ist es möglich, ein System ohne Root-Passwort auszuführen. Alle Verwendungen von sudo werden protokolliert, was bei Befehlen, die als root ausgeführt werden, nicht der Fall ist.

Wie bereits erwähnt, ist es möglich, den Zugriff auf bestimmte Befehle zu beschränken. Das Beispiel sudoers verfügt über eine Reihe von Befehlssätzen, die Sie möglicherweise bestimmten Benutzern gewähren möchten, die Aufgaben ausführen müssen, für die Root-Berechtigungen erforderlich sind. Mit sudo ist es möglich, dies zuzulassen, ohne ihnen das Root-Passwort zu geben.

Jeder, der ein Skript oder einen Befehl mit Root-Rechten ausführen kann, die er ändern kann, hat effektiv Root-Zugriff erhalten. Sie müssen diesen Personen vertrauen oder ihnen keinen Zugriff gewähren.

Es gibt eine große Anzahl von Aufgaben, die Root-Zugriff erfordern. Mit sudo können Sie diese Aufgabe sicher an Sicherungsoperatoren, Webmaster usw. delegieren.

Sudo ist weitaus sicherer als die Alternativen. Wenn falsch konfiguriert oder nicht vertrauenswürdigen Benutzern ein falscher Zugriff gewährt wird, besteht ein Sicherheitsrisiko (Lücke).

BillThor
quelle
0

Mit dem sudoBefehl kann ein Benutzer Befehle mit den Berechtigungen eines anderen Benutzers ausführen. Der andere Benutzer kann rootoder es kann jemand anderes sein, aber die Standardeinstellung ist root. Es wurde für diesen Zweck entwickelt, verfügt über viele Konfigurationsoptionen, mit denen sich die Dinge auf verschiedene Weise blockieren lassen, und wurde über viele Jahre von vielen Menschen überprüft. Es ist nicht für alle Sicherheitsprobleme geeignet, kann aber bei richtiger Anwendung ein äußerst nützliches Werkzeug sein. Wenn es jedoch nicht richtig verwendet wird, kann es mehr Probleme verursachen als es löst.

Tekhne
quelle
-3

Sudo ist nicht gut für die Sicherheit. Eine Software zur Delegierung von Berechtigungen soll dabei helfen, zu unterscheiden, wer was getan hat, und Aktivitäten zuverlässig zu protokollieren. Bei den meisten Sudo-Einstellungen kann das Aktivitätsprotokoll jedoch leicht gefälscht werden. Und die Verwendung des Systemkennworts des Benutzers bedeutet, dass jemand, der das Anmeldekennwort eines Benutzers stiehlt, auch sudo als dieser Benutzer ausführen kann, um schlechte Dinge zu tun. Auf UNIX / Linux-Plattformen ist es für jeden Systemadministrator sehr einfach, ein Skript im Hintergrund auszuführen, um das Kennwort eines anderen zu stehlen. Sysadmin kann auch einen Passwortwechsel durchführen, um das Konto des Opfers zu verwenden, um schlechte Dinge zu tun. Außerdem kann das Konto des Opfers verwendet werden, um sudo auszuführen, um durch die Aktualisierung der sudo-Zeitstempeldatei schlechte Dinge zu tun. Wenn das Protokoll besagt, dass A zu welchem ​​Zeitpunkt etwas getan hat, ist dies möglicherweise nicht A. Es sind zusätzliche Untersuchungen erforderlich, um herauszufinden, was passiert ist, aber das kann der Fall sein nicht immer möglich sein.

wzis
quelle