Wo ich arbeite, meldet sich jeder als root an

7

Wo ich jetzt arbeite, bin ich gezwungen, das Root-Konto zu verwenden, genau wie alle anderen dort. Es gibt keine anderen Benutzer. Nicht einmal in den DBs. Meine Senioren erklärten mir, dass dies der Einfachheit halber getan wird.

Ich weiß wirklich, dass dies falsch ist, aber ich hätte gerne ein reales Beispiel oder ein sehr überzeugendes theoretisches Beispiel, damit ich ihnen beweisen kann, wie falsch das ist. Nicht für Vergeltungsmaßnahmen oder ähnliches, aber vielleicht helfen Sie ihnen, das Risiko besser zu verstehen und unsere Sicherheit zu verbessern.

Eigentlich ist es sehr stressig, als Wurzel zu arbeiten. In meinem Heimnetzwerk (und Junge ist es ein großes Heim-VM-Netzwerk) traue ich mich nicht einmal, mich als Root anzumelden.

Sie sind sich der Gefahr eines versehentlichen Löschens oder Änderns wichtiger Dateien und Ordner bewusst. Von der Gefahr versehentlicher Erlaubnisänderungen.

Sie bestehen darauf, dass wir unsere Programme und unser Verhalten überprüfen müssen, bevor wir die "Enter" -Taste drücken.

Was könnte sonst noch schief gehen?

Ich vermute einen externen Angriff (apache weise). Auch ein Schurkenprogramm. Kann ein Schurkenprogramm die Kontrolle über die falschen Berechtigungen von Apache übernehmen?

Was ist sonst noch möglich? Vielen Dank!

ioctl
quelle
6
Aktualisieren Sie Ihren Lebenslauf und rennen Sie so schnell wie möglich weg!
Michael Hampton
1
Neuen Job finden? rm -rf /Vom nächstgelegenen Executive-Terminal laufen, wenn er / sie beim Mittagessen ist? Neuen Job finden?
HopelessN00b
Omg aktualisiere meinen Lebenslauf Ich bin sprachlos ... Ich weinte lachend!
Ioctl
erkläre dich selbst zum neuen Vizepräsidenten. der Cybersicherheit ändern Sie dann das Root-Passwort.
Red Cricket
Im Ernst, erwägen Sie, einen besseren Arbeitsplatz zu finden. Eine organisationsweite Haltung wie diese zu bereinigen, ist eine große, große Aufgabe. Ich möchte nicht, dass das Unternehmen meine persönlichen Daten in den Mitarbeiterdateien hat (und bald in der Piratenbucht gesichert wird).
Sirex

Antworten:

6

Löschen wir einfach einige alte Protokolle vom Webserver. Sie müssen sich nicht als Webkonto anmelden, wir haben root.

rm -rf / var/www/logs/2010.log

Woops! Sollte nicht root gewesen sein.

David Houde
quelle
OK, aber dies kann von einem Insider durchgeführt werden, der das Root-Passwort kennt. Kann es extern gemacht werden? (Ich möchte nicht genau wissen, wie es scheint, als ob ich wissen möchte, wie es geht. Ich möchte nur wissen, ob es möglich sein könnte.) Alles unter / var / www ist root: root 777
ioctl
2
Nein, nicht 777. Ich verstehe, was Sie zu beweisen versuchen, aber in Wirklichkeit ist es überhaupt kein großes Risiko. Das größte Risiko, standardmäßig root zu verwenden, ist menschliches Versagen oder die soziale Entwicklung zur Ausführung eines benutzergenerierten Skripts.
David Houde
Das heißt: Ein Pufferüberlauf in Apache gewährt keinen Root-Zugriff, nur weil die von ihm bereitgestellten Dateien Root gehören. Dies setzt voraus, dass Apache nicht als Root ausgeführt wird.
David Houde
Es wird nicht besser, wenn "sudo" vorangestellt wird. Und Sie müssten sudo, weil ein nicht privilegierter Benutzer sicherlich keinen Schreibzugriff auf sicherheitsrelevante Protokolle haben würde, oder?
The-Wabbit
0

Hm .. Ich habe viele schlechte Dinge als Wurzel getan. Ich habe einmal ein Skript geschrieben, das (unter anderem) ein Verzeichnis namens regelmäßig bereinigen sollte /foo. Das Skript wurde also als root ausgeführt und hat ungefähr Folgendes ausgeführt:

cd /foo
rm -rf *

Eines Tages existierte das /fooVerzeichnis aufgrund einiger Probleme mit unserem SAN nicht. Ergebnis: Katastrophe.

Dies ist natürlich nur ein schlecht geschriebenes Skript. Es hätte sein sollen:

cd /foo  &&  rm -rf *

Aber es zeigt Ihnen, wie einfach es ist, etwas ernsthaft Schlechtes zu tun, wenn Sie zu viele Privilegien haben.

Das andere Problem, das Sie haben, wenn sich jeder als Root anmeldet, ist, dass Sie die gesamte Sache mit der Rückverfolgbarkeit / Überprüfbarkeit verlieren. Wer weiß, wer was getan hat? Ist das wirklich akzeptabel?

Die Frage, die Sie sich (und Ihrem Arbeitgeber) stellen müssen, lautet: Was müssen Sie tun, damit Sie verwurzelt sind?

In diesem speziellen Thema bevorzuge ich Solaris gegenüber Linux. (Bitte nicht flammen, ich spreche nur über das Thema des Root-Benutzers). Auch wenn Sie nicht mit Solaris arbeiten, gibt es meines Erachtens einige Erkenntnisse darüber, wie Solaris dies tut. Möglicherweise können Sie einige davon unter Linux nachahmen.

In Solaris (spätere Versionen) können Sie sich standardmäßig überhaupt nicht als Root von außen anmelden. In der Tat ist root eher eine Rolle als ein normaler Benutzer geworden. Wenn Sie über die erforderlichen Berechtigungen verfügen und das Root-Passwort kennen, können Sie sich natürlich bei root anmelden, jedoch erst, nachdem Sie sich zuerst als Sie selbst beim Host und dann bei root angemeldet haben. Auf diese Weise können Sie immer sehen, wer das Root-Konto verwendet hat.

Darüber hinaus haben Sie das gesamte feinkörnige Privileg-Setup unter Solaris eingerichtet. Sie können beispielsweise die Berechtigung zum Binden an einen Socket <1024 an einen bestimmten Dienst zuweisen. Unter Linux ein solcher Prozess muss von root gestartet werden. Zweitens haben Sie RBAC und die Delegierung von SMF-Berechtigungen (das Recht, einen bestimmten Dienst zu starten, zu stoppen oder zu verwalten). Damit muss selten etwas wirklich als root gemacht werden.

Solaris hält Sie aufgrund der sofort einsatzbereiten Konfiguration sowie der darin enthaltenen Funktionen von der Verwendung von root ab und macht es einfach, kein Root-Konto zu verwenden. Ich hoffe, eines Tages die gleichen Fortschritte in Linux zu sehen.

Das Gegenargument Ihres Chefs zu all dem ist, dass die Definition und Konfiguration einige Zeit in Anspruch nehmen wird. Dies ist wahr, aber Ihre Website scheint ziemlich groß. Das Schlüsselwort ist also Standardisierung . Definieren Sie diese Rollen ein für alle Mal, indem Sie die Funktionen Ihres Betriebssystems nutzen. Dann standardisieren Sie auf allen Ihren Servern. Das andere Schlüsselwort, das ich an den Tisch bringen möchte, ist das Prinzip der geringsten Privilegien . Sie sollten niemals mehr Privilegien haben, als Ihr Job erfordert. Leider sind Sie der Gnade des Privilegierungs- und Delegierungsmodells Ihres Betriebssystems ausgeliefert, aber lesen Sie es durch, und Sie werden wahrscheinlich feststellen, dass Ihr Betriebssystem in den letzten 10 bis 15 Jahren in diesem Bereich große Fortschritte erzielt hat, sodass es möglicherweise keine mehr gibt Müssen Sie sich als root anmelden?

Apache httpd sollte nicht als root ausgeführt werden. Zeitraum! Wenn Ihr Webserver gehackt wird, hat der Eindringling plötzlich Root-Rechte. Ihr Betriebssystem kann Sie zwingen, es als root zu starten, aber Apache httpd verfügt über eine Funktion, mit der Sie sofort zu einem anderen Benutzer wechseln können. Suchen Userund GroupEinstellungen in der Konfigurationsdatei für Apache httpd.

unixhacker2010
quelle
@MDMarra nein, er meint das Solaris-Berechtigungsmodell, das tatsächlich nur für Solaris gilt (per Definition und nicht als Funktionsumfang). Rollen sind ebenfalls keine Gruppen, sondern Teil des Solaris RBAC-Modells . Obwohl unixhacker2010 einige gültige Punkte hat, ist der bereitgestellte Beitrag leider immer noch keine Antwort auf die Frage.
The-Wabbit
1
Noch besser wärerm -rf /foo/*
Michael Hampton
Stimmen Sie den Abstimmungen tatsächlich zu. Mein ursprünglicher Beitrag war eher ein Scherz als eine Antwort auf die Frage. Also habe ich es geändert. Ich finde die Frage eigentlich etwas schwierig zu beantworten. Was kann schon schief gehen? Antwort: Fast alles!. Ich habe versucht, eine relevantere Frage zu stellen: Warum überhaupt als Root anmelden?
unixhacker2010
0

Völlige Dummheit! das bittet nur um Ärger. Ich denke, die Senioren müssen aus Bequemlichkeitsgründen entlassen werden.

Abgesehen davon, dass Sie versehentlich etwas falsch gemacht haben ( rm -rf /was nur begrenzte Auswirkungen hätte, wenn Sie nicht root wären), wenn jemand wegen eines dummen Fehlers gefeuert wird, der einen kritischen Server tötet. Sie werden möglicherweise alle wütend und melden sich remote an und entfernen das Netzwerk oder ändern das Root-Passwort, damit sich niemand anmelden und die Root-Partition verschlüsseln oder sich auf andere Weise wirklich mit Ihrem Netzwerk anlegen kann! Erraten Sie, was? Niemand hätte eine Ahnung, wer es getan hat, weil er das Root-Konto verwendet hat, für das jeder das Passwort kennt, einschließlich aller ehemaligen Mitarbeiter.

Ich empfehle dringend, dass Sie eine Art Benutzerkonto einrichten und nur für diejenigen, die einen solchen Zugriff benötigen. Wenn Root-Zugriff erforderlich ist, verwenden Sie sudo. Sie können auch pro Benutzer oder pro Gruppe einschränken, was sie mit sudo tun können, welche Programme ausgeführt werden können usw.

Wenn ein Mitarbeiter das Unternehmen verlässt, können Sie den Benutzer einfach durch Löschen des Kontos entfernen.

Matt
quelle
0

Das ist so idiotisch, dass es schwer zu erklären ist, warum das so schlimm ist.

Sie haben nach Beispielen gefragt, was schief gehen könnte. Hier ist eine:

  • Wenn sich alle Anwendungen, die den Datenbankserver verwenden, mit einem Konto anmelden, das Lese- / Schreibzugriff auf ALLE Datenbanken hat, kann eine einzelne Webanwendung (wie eine WordPress-Site mit einem fehlerhaften oder veralteten Plugin) Zugriff auf alle Datenbanken gewähren. Daten können gestohlen oder einfach gelöscht werden.

Und, nur gesagt, vielleicht sind das Betriebssystem-Root-Passwort und das Datenbank-Root-Passwort gleich?

Tsumi
quelle