Wie wichtig ist das sudo Passwort?


25

Ich weiß, dass das sudo-Passwort meinen Computer davor schützt, lokal von jemandem gehackt zu werden, der physischen Zugriff darauf hat ( Bearbeiten: Tatsächlich ist dies nicht der Fall ). Mein Passwort ist für diesen Zweck stark genug, aber ich weiß, dass es nicht stark genug ist, wenn jemand es aus der Ferne erzwingen kann.

Kann jemand im Root-Modus mit meinem Sudo-Passwort auf meinen Computer zugreifen, ohne physischen Zugriff auf den Computer bei einer Standard-Ubuntu-Desktop-Installation?

  1. Wenn Sie einen Netzwerkzugang haben, definitiv ja (kurze Antwort)
  2. Wenn Sie der Sicherheit nicht genügend Aufmerksamkeit schenken, ja (lange Antwort)
  3. Wenn Sie "ssh" ausgeführt haben und keine 2FA , ja ( Kommentare und Antworten)
  4. Man kann als root ohne sudo / user Passwort auf den Computer zugreifen

buchstäblich "irgendjemand", einschließlich mir oder zum Beispiel einem ppa-Betreuer, dem ich vertraue, irgendjemand anderem.
mxdsp

1
Sie können über SSH und sudo auf root zugreifen.
Aizuddin Zali

1
genau. Zum Aushärten können Sie 2FA verwenden. Folgen Sie dieser Anleitung
Aizuddin Zali

1
Dann sind Sie vor einem SSH-Angriff gerettet. Es gibt viele mögliche Hacking-Techniken, die Menschen anwenden.
Aizuddin Zali

1
Es gibt einfach kein "Sudo-Passwort".
Hobbs

Antworten:


34

Ich weiß, dass das sudo-Passwort meinen Computer davor schützt, lokal von jemandem gehackt zu werden, der physischen Zugriff darauf hat.

Ich möchte Sie nicht zu sehr erschrecken, aber wenn jemand physischen Zugriff hat, haben Sie ihm den Zugriff übergeben, unabhängig davon, wie stark Ihr Passwort ist. Es dauert einen Neustart durch jemanden, damit dieser Ihr Root-Passwort ändern kann (dies kann über "grub rescue" erfolgen, ohne dass Sie Ihr aktuelles Passwort eingeben müssen). Übrigens: Diese Methode wird als gültig und als Feature sowie als akzeptiertes Sicherheitsrisiko angesehen (andernfalls könnten Sie Ihr System niemals reparieren, wenn das Kennwort kompromittiert würde).

aber ich weiß, dass es nicht stark genug ist, wenn jemand es aus der Ferne brachial erzwingen kann.

Hier kommt noch etwas ins Spiel: Ein ROUTER sollte intelligent genug sein, um den Zugriff von außen zu sperren, wenn er wiederholt nach denselben Informationen fragt, und dies über einen kurzen Zeitraum. Grundsätzlich haben Sie hier einen DOS-Angriff (oder ein DDOS, wenn 2+ Computer Sie angreifen). Ein Router sollte diese Verbindung beenden und eine Wartezeit erzwingen, bevor er neue Anforderungen von dieser Verbindung akzeptiert.

Kann jemand im Root-Modus mit meinem Sudo-Passwort auf meinen Computer zugreifen, ohne physischen Zugriff auf den Computer bei einer Ubuntu-Desktop-Standardinstallation?

Sie müssen zuerst eine Verbindung herstellen und dann das sudo-Passwort eingeben. "root" -Modus ist deaktiviert und Sie können sich nicht direkt an einer "#" Eingabeaufforderung anmelden.

Beachten Sie, dass es möglich ist, einen Dienst zu missbrauchen. Wenn auf diesem Computer "ssh" ausgeführt wird und sie auf Ihr System "ssh" können und Ihren Benutzernamen und Ihr Kennwort für diesen Benutzer (und als Administrator auch Ihr Sudo-Kennwort) zur Hand haben, können sie auf Ihren Computer zugreifen und versaut es. Übrigens: Wenn sie es so machen, müssen sie zuerst Ihr System kennen (wie Ihr Passwort).

Aber dann gibt es ein Problem damit (und mit einer anderen Methode): Wie haben sie Ihr Passwort erhalten? Sie können es NICHT von Ihrem System selbst beziehen. Und im Allgemeinen lohnt es sich nicht, zu raten. Wenn es sozial entwickelt wurde ... dann ist Ihr Problem da, nicht das Sicherheitsmodell Ihres Systems, Ubuntu oder Linux im Allgemeinen.

Solange Sie Ihr sudo-Passwort haben, sollten Sie in Ordnung sein. Und es wird Ihnen noch besser gehen, wenn es sich um ein sicheres Passwort handelt (das für Sie vielleicht leicht zu merken ist, von anderen jedoch nicht erraten werden kann). Ein Beispiel, das ich zuvor verwendet habe, als ich darüber gesprochen habe: Wenn Ihr Hund "Abwegwfkwefkwe" heißt und "Abwegwfkwefkwe" als Passwort verwendet, ist das SCHLECHT, obwohl es gut aussieht (da Sie jemand fragen könnte: "Wie heißt Ihr Hund?" eine freie Vermutung). Wenn Sie keine Beziehung zu "Abwegwfkwefkwe" haben, ist es ein gutes Passwort.

Bester Rat, den ich geben kann:

  • Geben Sie Ihr Administratorkennwort nicht ein, wenn Sie danach gefragt werden, es sei denn, Sie wissen, dass erwartet wurde, dass Sie danach gefragt werden. Wenn Sie einen Browser öffnen und ein Popup erhalten, das aussieht wie "nach dem Passwort für das Administratorkonto fragen" ... hören Sie auf ... und überlegen Sie zuerst.

  • Lassen Sie Ihr System nicht unbeaufsichtigt, wenn die Nachfrist "sudo" aktiv ist. sudo --reset-timestampEntfernt die aktuelle Kulanzfrist und fordert Sie bei der nächsten Verwendung von "sudo" erneut zur Eingabe des Kennworts auf. Sperren Sie Ihren Bildschirm, wenn Sie AFK gehen.

  • Installieren Sie keine Dienste oder Software zum Spaß. Wenn Sie nicht brauchen ssh, installieren sshSie nicht , wenn Sie keinen Webserver verwenden, installieren Sie keinen Webserver. Und werfen Sie einen Blick auf die aktuell laufenden Dienste. Wenn Sie BT auf einem Notebook nicht verwenden, deaktivieren Sie es. Wenn Sie keine Webcam verwenden, deaktivieren Sie diese (falls aktiv). Löschen Sie nicht mehr verwendete Software.

  • und für die wirklich paranoiden (und ja, ich sehe dich als paranoiden Panda an): ändere das Passwort von Zeit zu Zeit. Sie können sogar Rootkit-Jäger installieren, um nach unangemessenem Zugriff zu suchen.

  • Sichern Sie Ihre wichtigen Daten auf etwas, das Sie offline halten. Selbst wenn Sie jemanden auf Ihrem System finden, können Sie es formatieren und mit einer neuen Installation beginnen und Ihre Daten wiederherstellen.


2
Sie können sudo --reset-timestampmit sudo -koder sudo -Kfür das wirklich Paranoide abkürzen (nur erforderlich, wenn der Angreifer die Systemzeit auf beliebige Werte setzen kann, zu welchem ​​Zeitpunkt Sie wahrscheinlich bereits verloren haben).
Kevin

Jups. Ich habe die lange Version benutzt, damit klar ist, was sie macht. "-k" macht dasselbe.
Rinzwind

1
@mxdsp: Durch die Verschlüsselung kann verhindert werden, dass Benutzer den Inhalt der verschlüsselten Partitionen lesen, wenn die Passphrase stark genug ist. Möglicherweise kann der Verschlüsselungsschlüssel jedoch von einem laufenden oder kürzlich heruntergefahrenen Computer abgerufen werden. Crypto ist auch ein sehr schnelles Feld, und Sie müssen mit neuen Entwicklungen Schritt halten, damit Ihre Verschlüsselung nicht veraltet und leicht kaputt geht.
Kevin

1
@mxdsp ja. Zum einen: Sie können eine Festplatte formatieren und wenn die Daten verschwunden sind ... sind Sie derjenige mit den Problemen.
Rinzwind

1
Der erste Teil setzt implizit keine vollständige Festplattenverschlüsselung voraus.
Otus

6

Ja, sie können.

Es gibt jedoch mehrere Möglichkeiten, das sudoPasswort zu erzwingen. Dies ist wahrscheinlich nicht die erste.

Zunächst ist das sudoPasswort das Passwort Ihres Benutzers. Also wirklich, was sie brauchen würden, ist Ihr Passwort.

Zweitens ist es wahrscheinlich der letzte Ausweg, das Kennwort eines Benutzers mit Brute-Force-Methoden zu knacken, um auf ein System zuzugreifen.

Es gibt viel elegantere (aber meist effektivere) Möglichkeiten, in ein anderes System einzudringen.

In der Regel versucht ein Angreifer entweder nur, die am häufigsten auftretenden Sicherheitslücken auszunutzen (die bekannteste ist wahrscheinlich, dass er auf irgendeine Weise eine Benutzer-Shell abruft und einen ShellShock ausnutzt, um eine Root-Shell zu erhalten) oder er leistet eine hervorragende Arbeit im Sinne von:

  • Scannen der offenen Ports im System, um Informationen zu erhalten, z. B .:
    • Betriebssystemversion
    • Ausführen der Dienstversion
  • Ausnutzen eines bekannten Betriebssystems oder Ausführen von Dienstfehlern (Pufferüberläufe, ...), um mindestens eine Benutzer-Shell abzurufen, und dann versuchen, eine Root-Shell abzurufen (auch hier kann ein ShellShock ausgenutzt werden)

Das brachiale Erzwingen des sudoKennworts des Benutzers kann ein Versuch sein, wenn eine Root-Shell nicht anderweitig abgerufen werden kann. Wenn Sie jedoch beispielsweise einen als Root ausgeführten Dienst ausnutzen, muss der Angreifer sudodas Kennwort des Benutzers brutal erzwingen .


1
Vielen Dank. Kurz gesagt bedeutet dies, dass ein Angreifer das sudo-Kennwort nicht benötigt, um root-Zugriff zu erhalten.
mxdsp

2
@mxdsp Genau. Um es so auszudrücken: Wenn ein Angreifer es schafft, auf irgendeine Weise eine sudoer-Benutzer-Shell abzurufen (zum Beispiel das laufende Programm eines sudoer-Benutzers), kann er bekannte Exploits verwenden (in meiner Antwort habe ich die berüchtigtste erwähnt), um eine Root-Shell zu erhalten und diese zu umgehen die Notwendigkeit des Benutzers / sudoPasswort. Noch besser, wenn er einen als root ausgeführten Dienst ausnutzt, ist er direkt root.
Kos

1
@mxdsp Nun verallgemeinern wir das, aber sehen Sie sich dieses Video an, um beispielsweise zu verstehen, wie ein Benutzer ohne sudoRechte (= ~ ein Benutzer, als der ein Angreifer angemeldet ist, dessen Kennwort der Angreifer jedoch nicht kennt) möglicherweise einen Root erhält Shell nur durch Ausnutzen bekannter Fehler (in diesem Fall des berüchtigten ShellShock).
Kos

1
@mxdsp Auf einer Seite nicht, ich meinte nicht sudoers Benutzer, nur Benutzer. Das ist nicht nötig, ich habe nur zu viele Dinge gleichzeitig gedacht.
Kos

3
  1. Wenn ich in den letzten Jahren etwas über Sicherheit gelernt habe, dann eins: Nichts ist unmöglich .

  2. Solange Sie Zugang zu einem Netzwerk haben, auf jeden Fall. Jeder auf Ihrem System ausgeführte Dienst, auf den über das Netzwerk zugegriffen werden kann, ist theoretisch anfällig und daher eine potenzielle Schwachstelle.

Und deshalb ist es für einen Angreifer mit genügend Ideen möglich. Sie können Ihr System so sicher wie möglich machen, aber nie zu 100% sicher sein.

Es ist daher wichtig zu beurteilen, was mit vertretbarem technischen Aufwand möglich ist und was Sie so gut schützt, dass Sie selbst nicht mehr arbeiten können.


Ich habe einen Netzwerkzugang. Können Sie genauer sagen, wie wahrscheinlich ein solcher Angriff sein könnte?
mxdsp

1
Verwenden Sie die Zwei-Faktor-Authentifizierung. Sie müssen PAM.D und so weiter bearbeiten.
Aizuddin Zali

@Arronical der Link ist auch aus diesem Forum und auch sehr nette Anleitung.
Aizuddin Zali

@Arronical Ich habe es in die Frage Kommentar gesetzt. Dieser Leitfaden
Aizuddin Zali

Sorry @AizuddinZali Ich hatte die Seite nicht aktualisiert!
Arronical

2

Ich weiß, dass das sudo-Passwort meinen Computer davor schützt, lokal von jemandem gehackt zu werden, der physischen Zugriff darauf hat (Bearbeiten: Tatsächlich ist dies nicht der Fall). Mein Passwort ist für diesen Zweck stark genug, aber ich weiß, dass es nicht stark genug ist, wenn jemand es aus der Ferne erzwingen kann. Kann jemand im Root-Modus mit meinem Sudo-Passwort auf meinen Computer zugreifen, ohne physischen Zugriff auf den Computer bei einer Ubuntu-Desktop-Standardinstallation?

Das sudo-Passwort dient nicht nur dem lokalen Schutz, sondern soll der Verwendung von Root-Rechten eine zusätzliche Sicherheitsebene hinzufügen. Eine gute Diskussion finden Sie hier https://superuser.com/a/771523/467316

Ihr Passwort ist möglicherweise nicht so sicher wie Sie denken. Im Moment knacke ich 20-40% der Active Directory-Hashes meines Kunden für diejenigen, die ich zuvor gesehen habe, und diejenigen, die schlechte Passwortregeln haben, werden zu 70% geknackt. Ich empfehle 16 Zeichen, komplexe Passwörter. oclHashcat- und Radeon-Grafikkarten können großen Schaden anrichten. Fügen Sie bei jedem Verstoß in den letzten 5 Jahren alle Kennwortspeicherauszüge hinzu, und Sie erhalten in der Regel ein gutes Wörterbuch, aus dem Sie arbeiten können.

Wenn Sie überhaupt SSH verwenden, nehmen Sie einige Anpassungen in der sshd_config vor

sudo nano /etc/ssh/sshd_config

Die MUSTS direkt aus dem Tor (der letzte, der den FTP-Server deaktiviert, wenn Sie ihn nicht verwenden).

Protocol 2
X11Forwarding no
PermitEmptyPasswords no
MaxAuthTries 5
#Subsystem sftp /usr/lib/openssh/sftp-server

Speichern Sie es, starten Sie ssh neu

sudo service ssh restart

Verwenden der Verschlüsselung mit öffentlichen Schlüsseln Erstellen Sie zunächst auf Ihrem Remote-Computer einen Schlüssel (mit puttygen oder einem anderen Betriebssystem). Kopieren Sie den öffentlichen Schlüssel auf Ihren Ubuntu-Rechner unter dem Benutzer, den Sie als authorized_keys-Datei anmelden möchten (wahrscheinlich müssen Sie ihn erstellen).

sudo nano /home/yourdumbusername/.ssh/authorized_keys

Kopieren Sie den öffentlichen Schlüssel in diesem Format

ssh-rsa 23r0jfjlawjf342rffjfa89pwfj8ewfew98pfrfj8428pfwa9fupfwfcajwfpawf8rfapfj9pf892jpfjpwafj8a where-ever-you-have-your-private-key-for-your-own-notes

Speichern Sie es und richten Sie Ihre sshd_config ein, um die Anmeldung mit öffentlichen Schlüsseln zu ermöglichen

sudo nano /etc/ssh/sshd_config

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile      %h/.ssh/authorized_keys

speichere und starte ssh neu

sudo service ssh restart

Versuchen Sie SSHing von Ihrem privaten, verschlüsselten Computer mit öffentlicher Schlüsselverschlüsselung zu Ihrem Ubuntu-Host. Wenn alles geklappt hat, kehren Sie zum Ubuntu-Host zurück und deaktivieren Sie die Kennwortauthentifizierung.

sudo nano /etc/ssh/sshd_config

PasswordAuthentication no

Speichere und starte ssh neu

sudo service ssh restart

Versuchen Sie erneut, von einem Computer mit privatem Schlüssel zu sshing, um dies zu bestätigen.

Möchten Sie weitere hinzufügen? Richten Sie ein nicht privilegiertes Konto ein, aktivieren Sie PermitRootLogin no, starten Sie ssh neu, fügen Sie Ihren öffentlichen Schlüssel zu den authorized_keys des neuen Kontos hinzu, melden Sie sich als nicht privilegiertes Konto an, oder wechseln Sie zu Ihrem Root- oder privilegierten Konto, wenn Sie sich als Root anmelden oder sich durch die Dinge bewegen müssen.


2

Der Zweck von sudo ist nicht kennwortbezogen, sondern besteht darin, bestimmten Benutzern Root-Funktionen zu geben und andere Benutzer auf einem Computer einzuschränken, ohne dass sie den Root-Benutzernamen (Kennwort / Schlüssel / Sicherheitstoken / usw.) angeben müssen. Beispielsweise können Tag-zu-Tag-Mitarbeiter bei meiner Arbeit ihre Stationen (aus einem Veto-Repository eines Unternehmens) nur über sudo starten, herunterfahren, installieren und aktualisieren. Sie erhalten keine anderen Root-Freiheiten wie das absichtliche Entfernen / Formatieren von Geräten, das Hinzufügen und Entfernen von Benutzern, die Entscheidung, welche Kernelmodule auf die Blacklist gesetzt werden sollen oder was in crontab (etc, etc, etc) ausgeführt wird. Während bei Ihnen zu Hause Ihr sudo den vollen Zugriff auf die Maschine ermöglicht. In Bezug auf das Passwort benötigt sudo in Wirklichkeit das Passwort Ihres Benutzerkontos (dasselbe, das Sie zum Anmelden verwenden würden, wenn die automatische Anmeldung nicht aktiviert ist.

Schlechter Tipp : Wenn Sie als root ein reguläres Konto auf einem sudo-fähigen Unix (Linux / Apple OSX) einrichten möchten, führen Sie Folgendes aus

sudo -s
passwd
Enter your unix password:

Zu diesem Zeitpunkt hat root ein reguläres Passwort und Sie können sich mit dem genannten Passwort auf "alte Art und Weise" ausloggen und als root einloggen.

In Bezug auf die Sicherheit benötigen Angreifer möglicherweise keine Sicherheitsanmeldeinformationen, wenn ein Programm (z. B. Webserver, MySQL, PHP-Daemon, SSHD) als Konto mit erhöhten Rechten ausgeführt wird. Sie können die Sicherheitslücke des Programms ausnutzen und aus diesem Programm, das als root ausgeführt wird, einfach eine neue Shell erzeugen. Dies ist jedoch ziemlich selten, da sich Distributionsmanager ähnlicher Probleme bewusst sind und hervorragende Arbeit beim Aufbau einer durchdachten und normalerweise sicheren Standardumgebung leisten.

In dem anderen Betriebssystem wäre ein ähnlicher Vorgang wie sudo Rechtsklick und Ausführen als Systemadministrator (oder das Nörgeln von UAC-Berechtigungen).

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.