Frage:
Wie sicher ist NOPASSWD im passwortlosen Sudo-Modus?
Jurian Sluiman
2013-11-19 19:29:44 UTC
view on stackexchange narkive permalink

Auf allen unseren Boxen haben wir SSH-Zugriff über Schlüssel. Alle Schlüssel sind passwortgeschützt. In diesem Moment ist der Sudo-Modus nicht passwortlos. Da die Anzahl der VMs in unserem Setup zunimmt, untersuchen wir die Verwendung von Ansible.

Ansible selbst sagt in den Dokumenten:

Die Verwendung von passwortlosem sudo erleichtert die Automatisierung, ist jedoch nicht erforderlich.

Dies brachte mich zum Nachdenken über passwortloses sudo und ich fand hier einige Fragen / Antworten. Ich konnte jedoch nichts über die Sicherheitsbedenken von passwortlosem Sudo per se herausfinden.

Es könnte in Zukunft passieren, dass Benutzer Bob auf Maschine X ein anderes Passwort hat als Y. Wenn Bob ein Sudoer ist, Dies führt zu Problemen mit Ansible bei der Eingabe eines Sudo-Passworts für alle Felder. Angesichts der Tatsachen, dass ssh über Schlüssel erfolgt, sind Schlüssel passwortgeschützt und alle Benutzerkonten haben Passwörter (daher ist su bob ohne Passwort nicht möglich): Wie wird die Sicherheit beeinflusst, wenn NOPASSWD ist in der sudo-Datei festgelegt?

Sechs antworten:
Gilles 'SO- stop being evil'
2013-11-19 22:22:31 UTC
view on stackexchange narkive permalink

NOPASSWD hat keinen großen Einfluss auf die Sicherheit. Der offensichtlichste Effekt besteht darin, Schutz zu bieten, wenn der Benutzer seine Workstation unbeaufsichtigt gelassen hat: Ein Angreifer mit physischem Zugriff auf seine Workstation kann dann mit den Berechtigungen des Benutzers Daten extrahieren, Aktionen ausführen und Malware installieren, ohne jedoch den Zugriff auf root zu erhöhen. Dieser Schutz ist von begrenztem Nutzen, da der Angreifer ein Programm vom Typ Keylogger erstellen kann, das das Kennwort des Benutzers bei der nächsten Eingabe an einer Sudo-Eingabeaufforderung oder in einem Bildschirmschoner aufzeichnet.

Das Erfordernis des Kennworts wird jedoch ausgelöst die Bar für den Angreifer. In vielen Fällen ist der Schutz vor nicht anspruchsvollen Angreifern nützlich, insbesondere in unbeaufsichtigten Workstation-Szenarien, in denen der Angriff häufig eine Gelegenheit darstellt und der Angreifer möglicherweise nicht in der Lage ist, diskrete Malware kurzfristig zu finden und zu konfigurieren. Darüber hinaus ist es schwieriger, Malware zu verbergen, wenn Sie keine Root-Berechtigungen haben. Sie können sich nicht vor Root verstecken, wenn Sie nicht über Root verfügen.

Es gibt einige realistische Szenarien, in denen das Fehlen eines Kennworts der Fall ist Schützen Sie sich auch vor hoch entwickelten Angreifern. Beispiel: Ein gestohlener Laptop: Der Laptop des Benutzers wird gestohlen, einschließlich privater SSH-Schlüssel. Entweder schafft es der Dieb, das Passwort für die Schlüsseldatei zu erraten (möglicherweise mit brutaler Gewalt), oder er erhält Zugriff auf sie von einem Speicherauszug eines Schlüsselagenten. Wenn der Diebstahl erkannt wird, ist dies ein Signal zur Untersuchung der letzten Aktivitäten auf dem Konto dieses Benutzers. Dies bedeutet, dass eine eingepflanzte Malware erkannt werden sollte. Wenn der Angreifer nur Zugriff auf Benutzerebene hatte, hinterlässt alles, was er getan hat, Spuren in Protokollen. Wenn der Angreifer das Kennwort des Benutzers erhalten und sudo ausgeführt hat, sind jetzt alle Protokolle gefährdet.

Ich weiß nicht, ob die Nachteile von NOPASSWD die Vorteile für Ihren Anwendungsfall ausgleichen. Sie müssen dies gegen alle anderen Faktoren Ihrer Situation abwägen. Zum Beispiel scheint es, dass Sie unterschiedliche Passwörter zulassen, aber nicht erzwingen. Können Sie stattdessen eine zentralisierte Kontodatenbank verwenden? Wie viel Sicherheit benötigen Sie zwischen Ihren Systemen? Erwägen Sie Alternativen zu Ansible, die unterschiedliche Sudo-Passwörter unterstützen? Haben Sie andere Authentifizierungsmechanismen in Betracht gezogen?

Wir untersuchen derzeit auch die Verwendung von 2FA für SSH-Anmeldungen. Das bedeutet, dass der gestohlene Laptop kein großes Risiko mehr darstellt, wenn der Token nicht mitgenommen wird. Vielen Dank für die Antwort, da sie am ehesten dem entspricht, was ich für eine Antwort erwartet hatte :)
Ein weiterer Aspekt, der bei der Verwendung von NOPASSWORD berücksichtigt werden muss, ist, dass ein sehr nützliches Steuerelement entfernt wird. Wenn für den Zugriff ein Kennwort erforderlich ist, können Sie den Zugriff auf alle Benutzer zentral einschränken, indem Sie das Kennwort ändern. Dies ist nicht so nützlich, wenn Skripte alle sudo zu root. Bei einer guten Aufteilung der Autorisierung in verschiedene Konten kann dies jedoch sehr nützlich sein.
Ich denke, die Antwort deckt keinen wichtigen Punkt ab: Ist NOPASSWD nicht so, dass alles als Root ausgeführt wird, da es jedem Programm die Möglichkeit gibt, Berechtigungen ohne Beteiligung des Benutzers zu eskalieren?Durch die Trennung verschiedener Benutzer wird ein gewisses Maß an Schutz geboten, wodurch potenzielle Schäden, entweder versehentlich oder böswillig, begrenzt werden.
@raindev `NOPASSWD` erhöht den potenziellen Unfallschaden, bietet jedoch keinen Schutz vor böswilligem Schaden.Ein Schadprogramm kann nur warten, bis der Benutzer das nächste Mal sein Kennwort eingibt.
@Gilles Ich glaube, so funktioniert sudo nicht ganz: Wenn Sie einen Befehl mit Root-Rechten mit sudo ausführen, erhalten keine anderen Prozesse, die demselben Benutzer gehören, zusätzliche Rechte.Oder vielleicht habe ich dein Argument falsch verstanden.Ich werde eine neue Frage stellen, um die Kommentare nicht zu sehr zu entgleisen.
@raindev Für einen böswilligen Prozess ist es trivial, die Eingabe zu erfassen, wenn der Benutzer ein Kennwort eingibt, oder die an sudo übergebenen Argumente zu ändern.
Lucas Kauffman
2013-11-19 19:51:11 UTC
view on stackexchange narkive permalink

Es gibt zwei spezielle Fälle, in denen Sie kein passwortloses Sudo möchten:

  1. Dies ist ein Schutzmechanismus gegen böswillige Benutzer, die Zugriff auf ein Administratorkonto erhalten. Dies kann entweder durch Ausnutzung oder dadurch geschehen, dass ein Administrator seine Workstation unbeaufsichtigt lässt, ohne seine Sitzung zu sperren.
  2. Wenn Sie das Kennwort bei Verwendung von sudo erneut ausgeben müssen, haben impulsive Benutzer die Zeit, zweimal nachzudenken, bevor sie die Aktion tatsächlich ausführen .
  3. ol>

    Informationen zur Automatisierung:

    Ich bin damit einverstanden, dass Sie dies ohne Passwort tun können. Wenn Sie jedoch nicht das Sudo-Passwort benötigen, gewähren Sie ALLEN Zugriff auf Ihr Automatisierungstool. Überlegen Sie nun, was das Tool tatsächlich tun muss? Braucht es wirklich all diese Zugriffe? Wahrscheinlich nicht.

    Sudo verfügt über eine nette Funktion, mit der Sie bestimmte Befehle mit dem Flag NOPASSWD in der sudoers-Datei konfigurieren können:

      Benutzername myhost = (root) NOPASSWD: / sbin / shutdownusername myhost = (root) NOPASSWD: / sbin / reboot  
Für die ansible Bereitstellung des Servers ist es erforderlich, dass ansible vim verwenden kann, über Lese- / Schreibberechtigungen für Dateien in / etc und / var verfügt, apt verwenden und Dienste starten / stoppen / neu laden kann. Ist der Schutz für bestimmte Befehle dann noch eine praktikable Option?
sicher warum nicht? Vim ist nur ein weiterer Befehl nein?
Leider kann ich zwei Antworten nicht akzeptieren, daher musste ich mich zwischen Ihrer und @Gilles entscheiden. Beides sind gute Antworten, aber Gilles kam dem tatsächlichen Risiko von NOPASSWD näher. Ich habe dich gerade + 1'd :)
Keine Sorge, ich denke, seine Antwort deckt Ihre Frage besser ab als ich ^^
Wenn Sie für Ansible das sudo-Passwort nicht benötigen, erhalten Sie nicht sofort Zugriff auf Ihren Computer. Sie müssen Aufgaben / Playbooks weiterhin als sudo-zugänglich markieren, wenn Sie sie unter einem Nicht-Root-Konto ausführen. Scheint kein triftiger Grund zu sein, ein Sudo-Passwort zu benötigen.
Es ist ein wenig (viel) spät, aber es ist erwähnenswert, dass das Zulassen der Verwendung von "vim" mit "NOPASSWD" genauso gut ist wie das Zulassen von Befehlen: Ein Gegner kann einfach "vim + \! Sh" ausführen, um vollen Root-Zugriff zu erhalten.Der einzige wirkliche Vorteil ist hier gegen automatisierte oder sehr unkomplizierte Bedrohungen.
flarn2006
2019-02-01 03:30:12 UTC
view on stackexchange narkive permalink

Eine Sache, auf die aus irgendeinem Grund nicht hingewiesen wurde (korrigieren Sie mich, wenn ich falsch liege), ist, dass jedes von Ihnen ausgeführte Programm ohne Ihr Wissen zum Root-Zugriff erhoben werden kann. Wenn Sie versehentlich ein schädliches Programm oder Skript als Nicht-Root-Benutzer ohne sudo ausführen, hat es normalerweise (abgesehen von einem separaten Exploit) keine Root-Rechte, obwohl es möglicherweise noch viel Schaden anrichten kann. Sie müssen sich also zumindest keine Sorgen um ein Rootkit oder ähnliches machen. Aber im NOPASSWD-Modus haben Sie diesen Schutz nicht. Jedes Programm, das unter Ihrem Benutzer ausgeführt wird, kann zu root eskalieren, indem es sich mit sudo erneut aufruft. Die Malware muss noch speziell dafür programmiert werden und hat sonst keinen Root-Zugriff. Aber was ist dann mit bösartigem Code, der das tut?

Möglicherweise möchten Sie darauf hinweisen, dass dies nur dann zutrifft, wenn die Protokolle automatisch remote an einen Protokollserver gesendet werden. Andernfalls kann der böswillige Prozess die Protokolle manipulieren.
@forest: Haben Sie auf den falschen Kommentar geantwortet?Was ist nur in diesem Fall wahr?
user10211
2013-11-19 19:52:56 UTC
view on stackexchange narkive permalink

Angesichts der Tatsache, dass ssh über Schlüssel erfolgt, sind die Schlüssel passwortgeschützt und alle Benutzerkonten haben Passwörter (daher ist su bob ohne Passwort nicht möglich).

Lassen Sie uns hier klar sein . Die zum Schutz der SSH-Schlüssel verwendeten Kennwörter und die Kennwörter der Benutzerkonten SIND NICHT DIE GLEICHEN .

NOPASSWD ermöglicht dem Benutzer lediglich die Ausführung von Befehlen als ein anderer Benutzer ohne Eingabe seines Passworts. Dies hat keinen Einfluss auf die Tatsache, dass der Benutzer sein Kennwort eingeben muss, wenn er SSH in das System eingibt.

Danke für die Antwort. Ich weiß, dass NOPASSWD keine Auswirkungen auf SSH-Anmeldungen hat. Und natürlich gibt es zumindest unterschiedliche Passwörter: Das fragen wir diejenigen, die das Privileg haben. Aber am Ende kann ich ihre Passwörter nicht überprüfen, daher weiß ich es nicht genau.
@JurianSluiman Es ist gut, dass Sie das wissen, war nicht sehr klar aus der Frage. `NOPASSWD` ist wirklich eher eine bequeme Option und beeinträchtigt die Sicherheit nicht wirklich * so * imo. Es ist wichtiger sicherzustellen, dass Benutzer nur so viele Sudo-Berechtigungen erhalten, wie für die Erledigung der Aufgabe erforderlich sind.
bbaassssiiee
2018-04-11 20:56:47 UTC
view on stackexchange narkive permalink

Ansible kann verschiedene Dinge für die Automatisierung verwenden: wie sudo mit einem sudo-Passwort oder NOPASSWD. Oder verwenden Sie su, suexec, doas oder was auch immer.

Heutzutage sprechen wir von:

  werden: yesbecome_user: rootbecome_method: sudo  

Denken Sie daran, dass idealerweise ansible für die Automatisierung (siehe unten als Code) und nicht für die interaktive Verwendung verwendet werden sollte. Menschliche Benutzer können weiterhin Kennwörter verwenden und im Übrigen auf Ablaufrichtlinien stoßen.

Ansible Tower und AWX können alle Arten von Anmeldeinformationen verschlüsselt speichern und ihre Verwendung für bestimmte Jobs delegieren, ohne dass die Schlüssel oder Kennwörter verloren gehen.

Eine Alternative ist die Verwendung temporärer (signierter) SSH-Schlüssel. Hashicorp Vault kann diese

verwalten
mc0e
2013-11-19 20:49:24 UTC
view on stackexchange narkive permalink

Es gibt Vor- und Nachteile, wenn der Benutzer ein Kennwort für den Zugriff auf sudo eingibt.

Pro: Besserer Schutz, wenn jemand Zugriff auf ein Administratorkonto erhält. zB über ein entsperrtes Terminal oder eine Art Exploit.

Con: Der Benutzer gibt ein Nur-Text-Passwort ein, das während der Übertragung verschlüsselt, dann aber entschlüsselt wird, bevor es die Shell des Benutzers erreicht. Jemand könnte beispielsweise das bashrc-Skript manipulieren, um einen Schlüsselprotokollierer auszuführen. Abhängig von Ihrem Setup und den Gewohnheiten der Benutzer, die möglicherweise die Verwendung des Kennworts für die direkte Anmeldung beim Benutzerkonto auf diesem Computer und möglicherweise auch auf anderen Computern ermöglichen. Die Benutzer verwenden Passwörter nur allzu oft.

Wenn sie Ihr bashrc-Skript manipulieren können, haben sie sowieso schon so ziemlich gewonnen.
@atk nein, es ist schlimmer, weil sie jetzt ein Passwort haben, das wahrscheinlich jemand auf anderen Computern oder Diensten wiederverwendet hat.Passwörter sind von Natur aus nur eine schwache Form der Sicherheit (im Vergleich zu Schlüsseln), aber sie sind besonders schlecht, weil sie an anderen Orten wiederverwendet werden.


Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 3.0-Lizenz, unter der er vertrieben wird.
Loading...