Wie können Sie eine Änderung des Root-Passworts unter Linux verhindern?

7

Ich richte einen Server ein, auf den andere Leute über ssh auf sudo zugreifen können. Sie können Dinge installieren und Änderungen vornehmen, wie sie es für richtig halten. Ich muss jedoch noch den Server verwalten, Patches und Software-Updates installieren usw.

Ich frage mich, ob ich das Root-Passwort behalte, damit ich immer das tun kann, was ich brauche. Kann ich Menschen mit sudo irgendwie daran hindern, es mit sudo zu ändern?

bwizzy
quelle
3
Das klingt nach einem Job für (entfernt zivile Kleidung, die ein Superheldenkostüm enthüllt) OpenVZ oder Usermode Linux oder Jails or Zones !!!
Chris
Die Frage ist völlig legal.
drAlberT
Mach einfach 'rm / usr / bin / passwd' so, dass sie es nicht ändern können ...: -O
captcha

Antworten:

15

Man muss so darüber nachdenken. Wenn Sie ihnen das Root-Passwort oder einen Weg dorthin geben, fragen Sie im Wesentlichen: "Wie kann ich ihnen Root geben, außer in all den Fällen, in denen ich nicht möchte, dass sie es haben?" Und die Antwort lautet: "Das können Sie nicht. Computer funktionieren nicht so."

Rob Moir
quelle
Wäre es nicht großartig, wenn sie könnten? Zum einen erwarte ich den Fenstermanager mit einem Focus-Follows-Mind-Modus.
David Pashley
David: Vielleicht irgendwann :-) Das wäre hervorragend.
Matt Simmons
1
Eigentlich, Andriod, denke ich schon. Vielleicht nicht die gewünschte Antwort, aber dennoch eine Antwort.
Rob Moir
1
Sie können mit jedem RBAC-System einen ähnlichen Job ausführen. Wenn man sagt, dass Computer nicht so funktionieren, funktionieren Computer so, wie die Schöpfer klug genug sind, um sie dazu zu bringen!
drAlberT
1
Hmmm .. ist das mit SELinux möglich?
pjc50
13

Sie können bestimmte Befehle mit sudo selektiv zulassen, aber Sie müssen darauf achten, keine Programme zuzulassen, die den Shell-Zugriff, das Schreiben in Sym-Links oder eines von einigen Dutzend anderen Problemen ermöglichen. Hier ist eine Seite über sicheres Sudo-Scripting: http://www.kramse.dk/projects/unix/security-sudo-script_en.html

Man konnte immer hoffen, dass sie nichts über den Befehl chattr wissen ;-)

Matt Simmons
quelle
+1 für chattr oder + i;)
hayalci
5

Ich denke, die Antwort hier hängt davon ab, ob Sie versuchen, sie daran zu hindern, das Passwort böswillig zu ändern, um Sie fernzuhalten, oder ob Sie das Passwort nur unachtsam erhalten, weil sie vergessen haben, dass Sie Zugriff benötigen. Im ersteren Fall werden Sie viel Ärger haben. Ich weiß nicht, unter welchen Umständen Sie Benutzern Root-Zugriff auf die Box gewähren würden, aber Sie sind dennoch besorgt darüber, aber das Beste, was Sie tun können, ist zu versuchen, ihren Zugriff auf Befehle über sudo zu beschränken, was, wie andere bereits erwähnt haben, bestenfalls schwierig ist. Im letzteren Fall scheint die Lösung darin zu bestehen, sich einen Benutzer mit Sudo-Berechtigungen zu erstellen. Niemand wird versehentlich das Passwort in Ihrem Konto ändern, damit Sie sich keine Sorgen machen müssen, dass jemand nur einen Fehler macht.

Catherine MacInnes
quelle
2
In beiden Fällen - Bosheit oder Inkompetenz - möchten Sie ihnen wirklich, wirklich , wirklich überhaupt keinen Root-Zugriff gewähren. +1 für das "Führen eines separaten sudo-fähigen Kontos".
womble
Ein separates Sudoer-Konto zu haben, ist eine großartige Idee.
Akilan
4

SELinux kann tun, wonach Sie suchen, obwohl es so ist, als würde man eine atomgetriebene Kampfaxt mit Atomantrieb verwenden, um eine Fliege zu schlagen, oder was auch immer das Zitat der Anhalterin tatsächlich ist. Wenn Sie auf Linux anstatt auf Solaris (und dessen glänzendem RBAC) eingestellt sind, besteht die am einfachsten zu implementierende Option wahrscheinlich darin, sudo so zu konfigurieren, dass nur die erforderlichen Befehle zulässig sind.

Brad Ackerman
quelle
1
Tatsächlich ist es ein steiler Hügel, wenn die Sudo-Berechtigungen korrekt sind, um absolut jemanden zu enthalten. Sobald ich ein Programm als UID 0 ausgeführt habe, habe ich nur noch eine dünne Papierwand zwischen mir und einer tatsächlichen Root-Shell. Das setzt natürlich kluge und feindliche Benutzer voraus, aber immer noch.
Chris
Nur weil du paranoid bist, heißt das nicht, dass sie nicht darauf aus sind, dich zu kriegen.
Brad Ackerman
3

Es gibt einige Optionen:

  • Sie können PAM (Pluggable Authentication Modules) verwenden, um sich als Root anzumelden, unabhängig davon, auf was sie das Kennwort festgelegt haben. Es sind viele Module verfügbar , daher lasse ich dieses einfach hängen.
  • Sie erstellen einen zweiten Root-Benutzer, indem Sie / etc / passwd öffnen und einen neuen Benutzer mit derselben UID wie root (0) hinzufügen. Fügen Sie dann ein Kennwort in die Datei / etc / shadow für diesen bestimmten Benutzer ein. Auf diese Weise können Sie sich als root anmelden, und selbst wenn das Kennwort für 'root' geändert wird, funktioniert Ihre Anmeldung weiterhin.
  • Erstellen Sie ein Shellscript, das regelmäßig ausgeführt wird, um zu überprüfen, ob der Hash des Root-Benutzers in / etc / shadow für root mit dem gewünschten übereinstimmt. Wenn nicht, wird der Hash zurück geändert.

Wie andere bereits betont haben, können sie durch Root-Zugriff absolut alles tun, was sie möchten, und wenn sie Sie wirklich aussperren möchten. Sie können. Die oben genannten Optionen machen es jedoch schwieriger oder weniger transparent für sie.

Andrioid
quelle
2

Solaris hat dieses Problem gelöst, indem root als "Rolle" festgelegt wurde, sodass niemand ein Root-Passwort hat und sich der Root-Benutzer nicht beim System anmelden kann. Um zu verhindern, dass Sie von jemandem ausgesperrt werden, gibt es viele fein abgestimmte Sicherheitsoptionen. Sie können also die meisten Root-Aufgaben mit "pfexec" (äquivalent zu sudo) erledigen, aber Sie können verhindern, dass sie Ihre sudo-Berechtigungen widerrufen.

[[Ich bin kein Solaris-Fan, aber es gibt einige sehr gute Dinge in Solaris außer ZFS und DTrace. Schade, wenn Orakel die Flamme löscht]]

Hayalci
quelle
2

Anstatt zu verhindern, dass sie das Passwort ändern, machen Sie es einfach zu einer Richtlinie, dass sie dies nicht dürfen. Dann können Sie so etwas wie auditd einrichten , um die Kennwortdatei zu überwachen und Sie über Änderungen zu informieren.

Kamil Kisiel
quelle
1

Was Sie wollen, ist nicht vernünftig. Wenn Sie Menschen in irgendeiner Form Wurzeln schlagen, können sie Ihr System zerstören. Selbst wenn ihr Zugang über stark reguliertes Sudo erfolgt, kann ein kluger oder böswilliger oder wirklich verrückter Idiot Chaos verursachen.

Du vertraust ihnen entweder oder nicht.

Wenn Sie ihre Bedürfnisse unterstützen und die Firma Sie dafür bezahlt, sie zu unterstützen, ist es ihre Maschine, nicht Ihre; Sie sind nur da, um es trotz aller dummen Dinge, die sie tun, am Laufen zu halten. Vielleicht können Sie Ihren Chef fragen, ob Sie den Kunden weniger Zugang gewähren können, nachdem sie es ein paar Mal geröstet haben, oder die Firma muss Sie weiterhin bezahlen, um das Chaos zu beheben. Was auch immer - es ist ihr Cent.

Wenn es Ihr Computer ist und Sie diesen anderen einen Gefallen tun, bitten Sie sie höflich, nett zu sein.

Das heißt - Sie können immer von einer CD (oder einem anderen schreibgeschützten Medium) booten. Sie können weiterhin die anderen Dateisysteme löschen oder über / etc mit ihrem eigenen / etc mounten, aber alles, was Sie tun müssen, um das System wieder auf ein rudimentäres Funktionsniveau zu bringen.

Sie können auch so etwas wie openvz verwenden und jedem Benutzer eine eigene Instanz geben. Sie können nicht das gesamte System auslöschen und ihre eigene Software in ihrem Slice installieren. Viele Orte verwenden dies für Webhosting, wo sie den Kunden "root" im VZ-Slice geben.

chris
quelle
1

Wenn Sie mit RBAC kein System wie Solaris, HP-UX oder AIX verwenden können, können Sie RBAC unter Linux mit dem grsec- Patch implementieren .

Aram Hăvărneanu
quelle
0

Hier wird ein Benutzertyp für den Zugriff auf mittlerer Ebene benötigt. Ich denke, wenn ein Benutzertyp mit anpassbaren Berechtigungen (Standardzugriff plus einige der Root-Zugriffe) existieren würde, wäre es schön. Um zu verhindern, dass dieser Benutzer beispielsweise die Kennwortdatei ändert (da Linux auf Dateien basiert), können wir die Zugriffsberechtigungen für Kennwortdateien einschränken, da diese für diesen Benutzer nicht verfügbar sind. Geben Sie dann ein Kennwort für das BIOS ein, um zu verhindern, dass der Benutzer die Datei / etc / shadow mit einem bootfähigen Flash oder einer bootfähigen CD eines Drittanbieters ändert.

Das Obige ist nur eine Theorie für Linux-Entwickler und nicht sicher, ob es möglich ist ...

Ali
quelle
-4

Verhindern Sie, dass sie ein Passwort ändern:

chattr +i /etc/shadow
ThorstenS
quelle
1
Dann laufen sie chattr -i /etc/shadowmit sudound sind wieder im Geschäft.
Koenigdmj
2
Ganz zu schweigen von der Tatsache, dass dies bedeutet, dass auch kein anderer Benutzer sein Passwort ändern kann, was wirklich schlecht ist.
womble
2
Ich habe bereits geschrieben "Verhindern Sie, dass SIE JEDES Passwort ändern". Nicht viele Admins in der Freizeit kennen Chattr. In der Vergangenheit war es für mich sehr nützlich, chattr zu kennen und zu verwenden.
ThorstenS
Dunkelheit ist nicht dasselbe wie Sicherheit, daher ist chattr keine sichere Lösung.
Sam
-4

Es spielt keine Rolle, warum Benutzer Fragen stellen. Die Antwort "Sie können nicht" ist nicht wahr! Die Antwort ist tatsächlich unten auf der Seite "man sudoers" aufgeführt. Es heißt "Whitelist mit Ausnahme", und ich implementiere dies tatsächlich für das Unternehmen, für das ich arbeite. Folgendes tun Sie:

  1. Fügen Sie die Benutzer, die Sie sperren möchten, einer Gruppe hinzu
  2. Bearbeiten Sie die Datei des Sudoer - visudo
  3. Fügen Sie dies der sudoer-Datei hinzu (Testgruppe ist die Gruppe, zu der Sie die Benutzer hinzugefügt haben).

%testgroup ALL = (ALL) ALL

%testgroup ALL = /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd root

%testgroup ALL = !/usr/sbin/visudo

  1. Erledigt

Dies verhindert, dass die sudo-Benutzer das Root-Passwort ändern, aber alle anderen können geändert werden UND verhindert, dass sie die sudoers-Datei bearbeiten. Es gibt andere Dinge, die Sie wahrscheinlich hinzufügen sollten, z. B. das Verhindern, dass ein Benutzer die Gruppe ändert, in der er sich befindet, aber Sie verstehen hoffentlich das Wesentliche.

Eric
quelle
1
Möglicherweise möchten Sie die Sicherheitserklärungen so lange zurückhalten, bis Sie etwas mehr erfahren. Versuchen Sie sudo vi /tmp/foodann :!/bin/bash, dann , einen LKW durch Ihre oben genannten Regeln zu fahren passwd root.
MadHatter
Ja, dies ist keine ausgefeilte Lösung, aber sie beantwortet seine Frage.
Eric
1
Mein Punkt ist, dass es überhaupt keine Lösung ist. Wenn Sie versuchen würden, es zu polieren, würden Sie herausfinden, dass die Beobachtung " Sie können nicht " tatsächlich richtig ist. Es ist wahr , dass Sie kann ein System mit sichern sudo, aber Sie werden nie es verwalten , indem sie alles-außer-der-aufgeführten-Ausnahmen zu tun. Es ist buchstäblich unmöglich.
MadHatter