Frage:
Warum kann der Root-Benutzer die Protokolle löschen?
Ulkoma
2015-11-11 00:15:18 UTC
view on stackexchange narkive permalink

Ich dachte immer, der größte Vorteil der Protokolle besteht darin, Ihnen zu bestätigen, dass Ihr Computer gehackt wurde. Ich sehe jedoch Hacker, die damit prahlen, Server im gesamten Internet zu "rooten". Was hindert einen Hacker mit Root-Zugriff daran, die Protokolle zu löschen, um ihre Spuren zu verwischen?

Wenn Sie sich um Protokolle sorgen, kann root alles löschen. Einige Konten müssen zu einem bestimmten Zeitpunkt die volle Kontrolle haben, um das System verwalten zu können. Aus diesem Grund ist das Syslog-to-Remote-System wichtig, wenn Sie root nicht vertrauen können.
@FiascoLabs Ein kluger Angreifer wird mehr an Spionage als an Sabotage interessiert sein
* Warum kann der Root-Benutzer die Protokolle löschen? * - Wie schlagen Sie vor, das Löschen von Protokollen durch den Root * unmöglich * zu machen?
@TessellatingHeckler Ich bin nicht sicher, es ist so schwer zu implementieren? vielleicht so etwas wie [this] (http://security.stackexchange.com/a/65425/31356)?
Root-Typen `setenforce 0`, um SELinux zu deaktivieren und dann die Protokolle zu löschen. Was jetzt? Es ist sehr schwer zu implementieren - wenn Sie einen anderen Benutzer zum Löschen von Protokollen veranlassen, kann root diesem Benutzer "su". Wenn Sie einen Teil des Systems haben, auf den root nicht zugreifen kann, wie kann er verwaltet oder konfiguriert werden? Dann bewegen Sie den Hacker einfach von dem Versuch, "Root-Zugriff zu erhalten" zu "dem Versuch, Zugriff auf" sichere Bereiche "zu erhalten".
Wenn Sie logrotate ausführen, benötigt ein Prozess die Berechtigung zum Löschen von Protokollen
@TessellatingHeckler schreiben Sie Ihre Protokolle auf eine Art einmal beschreibbares Medium?
@schroeder: Wenn Protokolle in einer Box außerhalb des Computers mit ausreichend Speicherplatz gespeichert werden, kann "Hardware" (oder Firmware in einer anderen Box, die ohne physischen Zugriff nicht geändert werden kann) so konzipiert sein, dass neuere Protokolleinträge möglicherweise alte überschreiben, aber Das würde einige Zeit in Anspruch nehmen. Auf die Gefahr hin, einige Denial-of-Service-Angriffe zu ermöglichen, könnte das Remote-System einen Alarm auslösen, wenn bestimmte Arten von Protokollen zu schnell hinzugefügt werden, und die Aktionen drosseln, die eine solche Protokollierung erfordern würden.
@supercat Sobald Sie die Protokolle exportiert haben, können Sie die eingehenden Protokolle so behandeln, wie Sie möchten - aber es befindet sich auf einem ** anderen System **. Der lokale Root-Benutzer muss in der Lage sein, lokale Protokolle zu löschen, da einige Prozesse dies können müssen.
@Michael Ja, das würde es tun - aber ich schlage vor, dass sich das nicht wesentlich von den Antworten unterscheidet, die besagen, dass man sich bei einem Remote-Syslog-Server anmelden soll. Durch das Versenden der Protokolldaten über eine Einwegschnittstelle werden diese gespeichert.
Dies ist möglich, da Server nicht als Einweghardware betrachtet werden. Ich habe einen Server, der seit 11 Jahren läuft, und in dieser Zeit werden Protokolldateien generiert, die um ein Vielfaches größer sind als die Festplatte. Wenn es unmöglich wäre, Protokolle zu löschen, hätte ich den Server nach weniger als einem Jahr außer Betrieb setzen müssen.
Weil Skynet noch keine sich selbst tragende Einheit ist ...
@TessellatingHeckler Ich finde das unaufrichtig. Sie können den Root- / Superuser-Zugriff in SELinux auf jeden Fall sperren. Sie können es nicht kugelsicher machen, da jeder Benutzer mit physischem Zugriff auf den Computer SELinux beim Booten deaktivieren kann, aber Sie können es zu 100% so machen, dass root keine "setenforce" -Befehle ausgeben kann. Die meisten "echten" SELinux-Setups, die ich gesehen habe, haben zwei Administratoren - den SELinux-Benutzer "SELinux Admin" (Zugriff mit geringem Ermessensspielraum) und "root" (Zugriff mit hohem Ermessensspielraum, aber kein Zugriff auf das Ändern von SELinux). Es ist möglicherweise nicht kugelsicher gegen Ihre Systemadministratoren, aber es hilft gegen Hacker, die Wurzeln schlagen. Eigentlich...
Ich würde argumentieren, dass jede SELinux-Implementierung, bei der root die Möglichkeit hat, SELinux zu ändern, eine falsche Implementierung ist. Weil jeder Hacker, der Wurzeln schlägt, automatisch alles gewinnt.
@Ryan: Kann `root` Kernelmodule laden? Zugriff auf `/ dev / mem` oder` / dev / kmem`? Auf Blockgeräte zugreifen, auf denen die Protokolldateien gespeichert sind? Es ist sehr schwierig, Regeln einzurichten, die "root" erfolgreich einschränken
@BenVoigt `root` wäre das gleiche wie immer auf der Seite des diskretionären Zugriffs, aber der von SELinux zugewiesene obligatorische Zugriff würde root davon abhalten, so ziemlich alles zu tun, bis SELinux deaktiviert wird, und in diesem Fall könnte es nur von einem anderen deaktiviert werden Person, die ein eindeutiges 'SELinux Admin'-Konto verwendet. * Ich sollte hinzufügen, ich habe Implementierungen gesehen, bei denen es unmöglich ist, sich als root anzumelden, während SELinux aktiviert ist.
@Ryan Dann lautet diese Frage * "Warum kann ___ Protokolldateien löschen?" * Wobei ___ ein leistungsfähiges Konto oder eine Kombination von Konten ist, nein? Es ist, als würde eine Bank das Schild "Toiletten" am Tresor und das Schild "Tresor" an den Toiletten anbringen und sagen: "Jetzt können Kriminelle, die Zugang zum" Tresor "erhalten, keine Wertsachen mehr mitnehmen." "Toiletten" stattdessen. Wenn ein Teil der Software Strom hat, wird dies der Teil, auf den Hacker abzielen, unabhängig davon, ob er "root" heißt. SELinux macht es schwieriger zu knacken - großartig - aber ein Angreifer, der dies tut, könnte trotzdem Protokolle löschen.
@TessellatingHeckler Letztendlich ja - wenn ein Hacker Zugriff auf Ihr System X erhält, kann er schlechte Dinge tun. Es gibt keine Möglichkeit, dies zu widerlegen, denn es gibt keine perfekte, unfehlbare Sicherheit. Aber das ist nicht mein Punkt. Mein Punkt ist - wenn die Dinge richtig funktionieren - root muss nicht auf alles oder irgendetwas zugreifen. Ich gehe nur auf Ihre Frage zurück: "Wie schlagen Sie vor, dass root keine Protokolle löschen kann?" Die Lösung: Beschränken Sie den Superuser in SELinux und stellen Sie ihn so ein, dass der Superuser SELinux nicht ändern kann. Das ist alles, was ich sage.
Fragen wie diese lassen mich wünschen, dass es ein Moderator-Screening gibt, bevor Fragen zu "heiß" befördert werden. Die Benutzer hier ziehen den Köder an und erläutern verschiedene Themen, ohne darauf hinzuweisen, dass hier zwei Fragen gestellt werden. Ich denke, @Mark hat die beste Antwort, die die Frage wörtlich nimmt. Die Tatsache, dass ein Protokoll eine Datei ist, scheint zu wenig im Fokus zu stehen. Welche Frage bedeutet OP also: "Ist es möglich, Dateien zu erstellen, die root nicht löschen / ändern kann?" oder etwas anderes? Ich muss mich daran erinnern, dass "heiß" keine Frage und die damit verbundene Diskussion "informativ" macht.
Die @user1445967,-Beförderung zu "heiß" erfolgt vollständig automatisiert, basierend auf einer Computeranalyse des Aktivitätsniveaus der Frage.
@Mark danke, vollständige Offenlegung und Ehrlichkeit Ich erkannte, dass mein Kommentar effektiver formuliert und bearbeitet werden konnte.
Die meisten Systemprotokolldämons können die Protokolldateien an das Netz an einen zentralen Protokollspeicher senden. Es ist genau für ähnliche Gefahren wie Ihre sehr nützlich.
@Ryan Sie können also SELinux verwenden, um zu verhindern, dass Root-Aktionen ausgeführt werden. Was ist dann, wenn Root SELinux deaktiviert? Oder Sie verhindern, dass root SELinux deaktivieren kann. In diesem Fall kann * niemand * SELinux deaktivieren. Wenn Sie SELinux nicht mehr verwenden möchten, müssen Sie den Server neu formatieren. Warten Sie eine Minute - durch Neuformatierung werden die Protokolle gelöscht! Deshalb machen Sie es so, dass niemand den Server neu formatieren kann, und Sie müssen ihn wegwerfen und stattdessen einen neuen kaufen.
GRsecurity für Linux könnte für Sie von Interesse sein. Grundsätzlich wird eine Berechtigungsstufe über der von root erstellt, mit der Sie unter anderem dieses spezielle Szenario abmildern können.
Aus diesem Grund ist es auch so wichtig, root auf öffentlich zugänglichen Servern zu schützen. Unsere sind so eingerichtet, dass die Remote-Root-Anmeldung verweigert wird. Dann müssen alle SSH-Benutzer mit Sudo-Zugriff CRAZY lange Passwörter (mehr als 40 zufällige Zeichen) haben und den Schlüsselaustausch für die Anmeldung verwenden.
Acht antworten:
Mark Buffalo
2015-11-11 00:31:07 UTC
view on stackexchange narkive permalink

Warum kann der Root-Benutzer die Protokolle löschen?

Weil Sie den Server verwalten müssen müssen.

Was hindert einen Hacker mit Root-Zugriff daran, die Protokolle zu löschen, um ihre Spuren zu verwischen?

In Bezug auf die lokale Protokollierung nur seine eigene Dummheit. In Bezug auf die externe Protokollierung, ihre und Ihre Fähigkeiten.

Es gibt viele, viele verschiedene Möglichkeiten zum "Protokollieren". Tatsächlich könnte das verwurzelte Computerprotokoll auf einem separaten, versteckten Gerät gespeichert werden, das nicht einfach überschrieben werden kann, z. B. einem Himbeer-Pi / Arduino-Logger, von dem ich einige habe.

Unter Linux root soll so ziemlich alles können. In Windows gilt das gleiche Konzept. Wenn Sie Root-Zugriff auf einen Computer haben, können Sie fast alles tun, was Sie möchten, einschließlich des Löschens von Protokollen.

Sie können auch alle Verbindungen zu einem bestimmten Computer protokollieren, insbesondere wenn dies nicht der Fall ist Es soll überhaupt nicht "zugegriffen" werden.

Wie würden Sie herausfinden, was los ist, und wie würden Sie es umgehen?

So finden Sie alle Änderungen in den letzten 120 Minuten:

  find / -mmin -120 -printf '% p \ t% a \ n'  

Schön, oder? Gotcha, Hacker! Mwahahaha ... aber Sie können diese Attribute ändern, wenn Sie wissen, was Sie tun, wie folgt:

  touch -d "vor 24 Stunden" <file>  

Schlimmer noch, automatisieren Sie es:

  find / -print | beim Lesen der Datei; Berühren Sie -d "$ (Datum -r" $ Datei ") - 24 Stunden" "$ Datei" erledigt  

Aber warten Sie, Mark Hulkalo! Wenn alle Dateien vor 24 Stunden zuletzt bearbeitet wurden, zeigt dies deutlich, dass wir einen Haxor haben! Richtig, aber Sie können auch $ RANDOM anwenden, wenn 24 vorhanden ist. Hier ist ein Beispiel für eine Zahl von 1-24: $ ((RANDOM% 10) + 1) . Jetzt sieht es nicht so einfach aus, es zu entdecken, oder?

Aber was ist, wenn alle Dateien so aussehen, insbesondere Dateien, die nicht geändert werden sollen? Beschränken Sie den Bereich auf ein bestimmtes Verzeichnis, z. B. / root . Es gibt viele Möglichkeiten, Ihre Anwesenheit lokal zu maskieren.

Wenn der Angreifer nicht vergessen hat, ~ / .bash_history zu bereinigen, fliegen Sie blind. Wirklich, wenn die einzige "Protokollierung", die Sie haben, ~ / .bash_history ist, dann sind Sie in Schwierigkeiten, wenn Ihr Angreifer zumindest mäßig intelligent ist. Dies kann auf jedem Benutzerkonto mit erstaunlicher Leichtigkeit gelöscht werden, solange Sie über die entsprechenden Berechtigungen verfügen.

Es ist viel einfacher, Einträge an einem Ort zu protokollieren, an dem sie nicht leicht erkannt oder geändert werden können, z. B. an einem externen Gerät. Während es möglich ist, mithilfe der Forensik die Fußabdrücke Ihres Angreifers wiederherzustellen, ist es sehr, sehr einfach zu umgehen, wenn Sie wissen, was Sie tun. Aus diesem Grund ist die externe Protokollierung eine viel bessere Lösung.

Und das ist die Geschichte, warum die externe Protokollierung im Allgemeinen die Antwort ist. Beachten Sie, dass es auch Möglichkeiten gibt, die externe Protokollierung zu umgehen. Nichts ist jemals 100% sicher; Sie können es Ihrem Angreifer nur schwerer machen, nicht unmöglich.

Aber wie löscht man den Befehl, den Sie zum Löschen von bash_history verwendet haben, aus der base_history?
@njzk2 history -c verlässt sich nicht. oder löschen Sie einfach .bash_history. oder kopiere es und mache dein Ding, dann ersetze es durch das Original. oder einfach nicht löschen; Ihre anderen Spuren sind noch abgedeckt.
`cat / dev / null> ~ / .bash_history && history -c && exit`
Oder Sie können `export HISTFILE = / dev / null` verwenden, bevor Sie mit der Eingabe Ihrer Befehle beginnen.
@MarcoLeogrande, Netter Vorschlag. Oder fügen Sie `HISTCONTROL = ignorespace` zu` ~ / .bash_rc` hinzu und führen Sie dann alle Befehle mit einem Leerzeichenpräfix aus. Dies könnte jedoch erkannt werden, indem 1) insbesondere Dateiänderungen an diesen Dateien erkannt werden und 2) diese bestimmte Eigenschaft in der bashrc-Datei gefunden wird.
(zumindest in Bash) Wenn Sie ein Leerzeichen vor einem Befehl setzen, wird es aus der Bash-Historie ausgeblendet. Der Bash-Verlauf ist nicht als Sicherheitsmerkmal gedacht.
@AMADANONInc., Aber gilt dieses Leerzeichenpräfix nicht nur, wenn Sie "HISTCONTROL = ignorespace" setzen?
Der Standardwert für Debian ist HISTCONTROL = ignoreboth. Es gibt andere Möglichkeiten, Dinge aus dem Bash-Verlauf auszublenden - z. B. den Befehl ssh target-to-run. Egal was Sie tun, es ist immer noch kein Sicherheitsmerkmal und sollte nicht abhängig sein.
Die @njzk2-Bash-Geschichte (und die Shell-Geschichte im Allgemeinen) ist trivial zu schlagen. Die meisten Shells schreiben den Verlauf erst beim Beenden in eine Datei zurück. Wenn Sie die Shell 'ard kill' ausführen, z. B. kill -9, wird sie beendet, ohne die Verlaufsdatei zu schreiben. Für einen sichereren Verlauf benötigen Sie eine Prozessabrechnung auf Kernel-Ebene, die jedoch zu Leistungskosten führen kann
Steffen Ullrich
2015-11-11 00:50:59 UTC
view on stackexchange narkive permalink

Warum kann der Root-Benutzer die Protokolle löschen?

Da jemand in der Lage sein muss, Änderungen am System vorzunehmen, dh Protokolldateien zu drehen, Protokolldateien zu entfernen usw. In UNIX root ist traditionell dieser voll privilegierte Benutzer. Tatsächlich gibt es keinen großen Unterschied zwischen dem Ändern eines Protokolls und dem Ersetzen einer Binärdatei, um die Protokollierung zu unterlassen - und root kann standardmäßig beides.

Was verhindert, dass ein Hacker mit Root-Zugriff die Anmeldungen löscht?

Die Standardkonfiguration stoppt den Angreifer normalerweise überhaupt nicht. Eine naheliegende Möglichkeit, dies zu verbessern, besteht darin, sich bei einem Remote-Protokollserver anzumelden, der so geschützt ist, dass der Angreifer ihn hat Kein Zugriff (im einfachsten Fall: keine Remote-Anmeldung möglich).

Abgesehen von FreeBSD haben OpenBSD und wahrscheinlich auch andere die Idee, unveränderliche oder nur anhängbare Dateien zu erstellen. Mit chflags können Sie Protokolldateien auf diese Weise markieren. Dann sind nur Anhänge möglich und die Datei kann nicht gelöscht werden. Wenn Sie diese Funktion mit Sicherheitsstufe kombinieren, können Sie Protokolldateien erstellen, die nur im Einzelbenutzermodus geändert (entfernt, gedreht) werden können.

Sie können auch alternative oder erweiterte Sicherheitsmechanismen wie SELinux verwenden, um sicherzustellen, dass die "normaler" Root-Benutzer kann Dateien nicht ändern.

Es ist schon eine Weile her, seit ich FreeBSD / OpenBSD verwendet habe, aber was passiert, wenn Sie dies tun? `chflags nouchg file`. Und ich bin fast ziemlich zuversichtlich, dass die Sicherheitsebene umgangen werden kann.
Linux hat auch unveränderliche Dateien, und Sie können das Recht, das unveränderliche Flag für jede Datei bis zum Neustart zu ändern, dauerhaft widerrufen. Dies macht es zumindest schwierig, bestimmte Mechanismen zu manipulieren. Sie müssen jedoch weitere Rechte widerrufen, um dies wirklich kugelsicher zu machen - wenn root den Speicher ändern oder den Geräteinhalt direkt blockieren kann. Band, das nicht zum Zurückspulen vom Host hergestellt werden kann) ist die einzig wirklich sichere Sache dort ...
@MarkHulkalo: Ich habe keine Ahnung von uchg, aber schg kann nur vom Superuser gelöscht werden und nur, wenn es in Sicherheitsstufe 0 oder -1 ausgeführt wird (siehe [Dokumentation] (https://www.freebsd.org/cgi/man.cgi?query=) chflags & sektion = 1). Und ich bezweifle, dass Sie den Sicherheitspegel verringern können, wenn er ohne Neustart eingestellt ist.
@rackandboneman: Linux hat ein unveränderliches Flag, aber Linux hat nicht das einfache Konzept der Sicherheitsstufe. Stattdessen verwenden sie Funktionen und standardmäßig verfügt root über alle Funktionen. Dies bedeutet, dass root das unveränderliche Flag wieder entfernen kann.
@Steffen Ullrich root kann die Fähigkeit zum Setzen oder Deaktivieren des Flags dauerhaft deaktivieren
@rackandboneman: das ist was ich meine - die Idee der Sicherheitsstufe von * BSD ist einfacher und Sie können sogar root die Sicherheitsstufe nicht ohne einen Neustart verringern.
Weder kann root auf einem Linux-System das Löschen von CAP_SYS_IMMUTABLE rückgängig machen, es sei denn, Sie haben Funktionen aktiviert, die das Erzwingen des Kernels (CAP_SYS_RAWIO) ermöglichen würden.
Wenn alles andere fehlschlägt, laden Sie einfach Ihren eigenen verdammten Treiber und tun Sie dies im Kernel-Modus.
@Deduplicator: Ich empfehle Ihnen, zu lesen, was [Sicherheitsstufe] (https://www.freebsd.org/doc/faq/security.html#idp60199632) tut. Securelevel schränkt auch die Fähigkeit zum Laden von Kernelmodulen ein. Dieselbe Einschränkung kann mit Linux-Funktionen vorgenommen werden. Bei richtiger Anwendung kann diese Einschränkung die Fähigkeiten von root stark einschränken, zumindest bis zum nächsten Neustart. Wenn Sie also sicherstellen, dass diese Einschränkungen festgelegt sind, bevor Sie die Netzwerkschnittstelle starten, können Sie die Funktionen eines Remotebenutzers erheblich einschränken.
Herringbone Cat
2015-11-11 00:30:42 UTC
view on stackexchange narkive permalink

Wenn auf dem Server der Root-Benutzer kompromittiert wurde, kann dieser Benutzer auf jeden Fall alle Dateien (einschließlich Protokolle) auf den Systemen löschen. In den meisten Unternehmen werden Protokolle jedoch nicht lokal gespeichert.

Wenn Protokolle lokal gespeichert und gelöscht werden, kann zur Ermittlung des Ausmaßes des Verstoßes eine forensische Analyse durchgeführt werden, um die Dateien wiederherzustellen.

Die meisten Unternehmenswebserver und Unternehmensumgebungen verwenden jedoch eine Art Protokollverwaltung. Dies kann von Standardtools wie Syslog und SNMP bis hin zu proprietärer Protokollverwaltungssoftware wie Splunk reichen.

Wann Wenn diese Systeme verwendet werden, müsste der Angreifer das Protokollverwaltungssystem und alle Sicherungen davon gefährden, um die Protokolle zu löschen und ihre Spuren zu verwischen.

So sicher, man kann als Root Dateien löschen; Dies ist jedoch keine bestimmte Art, die eigenen Spuren zu verwischen.

l0b0
2015-11-11 14:43:36 UTC
view on stackexchange narkive permalink

Da WORM-Geräte (einmal schreiben, viele lesen) immer noch selten sind. In Systemen, in denen Sicherheit und Forensik sehr wichtig sind, werden diese Geräte zum Aufzeichnen von Protokollen in Echtzeit verwendet, jedoch nicht gelöscht, auch von root. Um dies sicher implementieren zu können, muss es sich um eine Hardwarebeschränkung handeln. Weniger sicher könnte es sein, dass eine API einem Softwaredienst ausgesetzt wird, der nur Operationen zum Schreiben neuer und Lesen alter Dateien ausführt. Wenn der Server auch über ein Hardwaregerät oder einen Hypervisor verfügt, der grundsätzlich jede Änderung am System protokolliert, ist es sehr schwierig, Ihre Spuren zu verbergen.

Verwenden diese WORM-Geräte wahrscheinlich nur DVD + -R oder etwas Exotischeres / Teureres?
Einige magnetooptische Laufwerke waren WORM, aber ich habe seit Jahren keinen mehr gesehen.
@Xen2050 Eine DVD-R-Brennsitzung dauert Minuten, was für den Angreifer möglicherweise ausreicht, um die Spuren zu entfernen, sodass die nächste DVD sie nicht enthält.
@DmitryGrigoryev Ich würde davon ausgehen, dass sie ein benutzerdefiniertes Schreibformat verwenden würden, also kein Warten auf das Schließen einer ganzen "Sitzung" oder ähnliches. Ich erinnere mich an eine alte CD-R-Software, die die gesamte Disc wie eine große Diskette behandelte und, glaube ich, in wenigen Sekunden mit dem Schreiben von Dateien begann. Es dauerte nur ein paar Minuten, bis die gesamte Disc "fertig" war. Paketschreiben heißt es. (Und ersetzen Sie DVD-R durch BD-R XL oder was auch immer die aktuellen Big-Disc-Buchstaben in der Zukunft sind)
@Xen2050 Ich glaube, dass das Schreiben von Paketen aufgrund des Cachings nur innerhalb von Sekunden erfolgt und das Auswerfen der Festplatte vor dem Schließen der Sitzung zu Datenverlust führen würde.
@Xen2050 Zu Beginn meiner Karriere hat ein Mainframe-Administrator versehentlich ein Nur-Schreib-Laufwerk in den allgemeinen Laufwerkspool des Systems aufgenommen. Beim Abrufen aus einer temporären Datei, die ich erstellt und der Support-Gruppe der Site gemeldet hatte, sind sehr bizarre Fehler aufgetreten. Es war ein Diagnoselaufwerk, das für den IBM Support vor Ort vorgesehen war. Vor mehr als 40 Jahren gab es das Konzept also schon eine Weile.
user91677
2015-11-11 21:49:32 UTC
view on stackexchange narkive permalink

Für die wirklich Paranoiden etwas in der Art von:

  tail -f /var/log/auth.log > / dev / lp0  

... würde wahrscheinlich alle außer denen aufhalten, die sich zur Brandstiftung beugen würden.

Peitsche die Oki-Bänder aus!

Z.B. http: //en.wikipedia.org/wiki/The_Cutzko%27s_Eg
Jay
2015-11-12 01:46:11 UTC
view on stackexchange narkive permalink

Weil JEMAND in der Lage sein muss, Protokolldateien zu verwalten, und wenn nicht root, wer dann? Möchten Sie wirklich ein System, bei dem eine Protokolldatei, die beispielsweise 90% Ihres Speicherplatzes einnimmt, absolut nicht gelöscht werden kann?

Sicher, dies ist eine Sicherheitslücke. In dem gleichen Sinne, dass ein System, mit dem jeder Benutzer etwas tun kann, eine Sicherheitslücke schafft. Die meisten Türschlösser sind so konzipiert, dass das Schloss nur von jemandem entfernt werden kann, der sich im Haus befindet. Dies bedeutet jedoch, dass jeder, der in Ihr Haus gelangen kann, z. B. ein Gast oder ein Klempner, Ihr Türschloss durch ein Schloss ersetzen kann, für das nur er den Schlüssel hat. Ist das eine Sicherheitslücke? Sicher. Aber was ist die Alternative? Machen Sie es so, dass niemand das Schloss ersetzen kann? Was ist, wenn die Sperre aufbricht?

Im wirklichen Leben ist es kein einfaches Entweder / Oder: "Unsichere Systeme", in die jeder einsteigen und etwas tun kann, im Gegensatz zu "sicheren Systemen", bei denen wir uns zu 100% sicher sind Nur autorisierte Benutzer können autorisierte Dinge tun. Es gibt eine Reihe von "Sicherheit". Je sicherer Sie ein System erstellen, desto unpraktischer wird es für autorisierte Benutzer häufig, ihre Arbeit zu erledigen. Irgendwann ist die Sicherheit so hoch, dass das System praktisch unbrauchbar wird.

Ja aber warum der Superuser? Warum nicht diesen Aspekt von einem anderen Benutzer verwalten lassen, um es dem Hacker zu erschweren, seine Spuren zu löschen?
Angenommen, anstatt root die Protokolle zu bearbeiten, erstellen Sie einen anderen Benutzer, "log_manager", der die Protokolle bearbeiten kann. Wie hilft das? Wenn sich ein Hacker dann als log_manager anmelden kann, kann er seine Spuren verwischen. Wie ist das besser, als dass er sich dazu als root anmelden muss? Wenn root berechtigt ist, das Kennwort von log_manager zu ändern, kann der Hacker als log_manager einsteigen, wenn er als root einsteigen kann. Ich nehme an, Sie könnten viele Benutzer erstellen, von denen jeder nur einen kleinen Satz von "Admin" -Dingen ausführen kann und bei denen kein Benutzer alle seine IDs und Passwörter verwalten kann, aber wie nur Al Bob aktualisieren kann, ...
... nur Bob kann Cathy aktualisieren, nur Cathy kann David aktualisieren usw. Wenn der Hacker jedoch an einem beliebigen Punkt in der Kette einsteigen kann, kann er ihn verfolgen. Es wäre schwieriger, und wenn die Sicherheitsbedürfnisse groß genug wären - wenn wir über Pläne für Atomwaffen oder meine Kreditkartennummer sprechen -, lohnt es sich vielleicht. Aber es ist immer noch nicht 100% sicher, es ist nur mehr Arbeit zum Hacken.
Warum können wir nicht so etwas wie die SAM-Dateien in MSWindoes haben, selbst der Administrator kann sie nicht ändern, nur der Systembenutzer kann. Dies bedeutet, dass Sie den Server von einem externen Gerät starten müssen, wenn Sie sich mit ihnen anlegen möchten. Wie schwierig ist es, so etwas umzusetzen?
Shaz
2015-11-12 20:40:28 UTC
view on stackexchange narkive permalink

Ich habe dies in Kommentaren gesagt, aber es scheint, dass es eine vollständige Antwort verdient.

Wenn Sie SELinux verwenden, können Sie es so konfigurieren, dass root keine Protokolldateien löschen kann. SELinux verwendet die obligatorische Zugriffssteuerung (Steuerung basierend auf Rollen), um zu bestimmen, welche Rollen jede Datei lesen / schreiben / ausführen können, zusätzlich zur diskretionären Zugriffssteuerung von Linux, die angibt, was Jeder Benutzer / jede Gruppe / jeder kann eine Datei bearbeiten - die typischen rwxrwxrwx-Berechtigungen.

Es scheint Verwirrung darüber zu geben, wie SELinux verwendet werden könnte, um dies zu erreichen, aber es ist ziemlich einfach. Ein möglicher Punkt der Verwirrung ist die Idee eines Linux-Benutzers und einer SELinux-Rolle . Für Linux-Benutzer ändert sich nichts. SELinux fügt nur das hinzu, was Linux bereits hat. Sie würden Ihre Benutzer also wie gewohnt einrichten. root wäre wie immer dasselbe.

Dann müssen Sie SELinux-Rollen einführen. Linux-Benutzern können viele SELinux-Rollen zugewiesen werden, und die Rollen eines Benutzers bestimmen, was er auf dem System tun kann. Jetzt hat die Standard-SELinux-Richtlinie - meiner Meinung nach "gezielt" - einen uneingeschränkten Benutzer, der einem Superuser entspricht. Standardmäßig wird root als unbeschränkt zugewiesen, sodass root alles ohne SELinux ausführen kann. Ich kann mir vorstellen, dass die meisten Leute die Standardrichtlinie oder die Standardrollen in SELinux nicht ändern, sodass der Eindruck entsteht, dass root alles tun kann, was es will.

Dies ist jedoch nicht notwendig . Wenn Sie die SELinux-Rolle von root entfernen, kann sie nichts tun (Sie können sich nicht einmal anmelden). Zuvor möchten Sie jedoch einen Benutzer mit der Rolle der Verwaltung von SELinux einrichten. Sowohl "gezielte" als auch "mls" -Richtlinien sind mit solchen Verwaltungsrollen ausgestattet, aber ich vergesse, wie es genau heißt. Normalerweise geben Sie dies einem Ihrer Systemadministratoren, damit dieser bei Bedarf die SELinux-Richtlinien, -Rollen usw. ändern kann.

Ihre Frage betrifft den gesamten Punkt von SELinux und seinem obligatorischen Zugangssystem. Die Leute erkannten, dass das Erhalten von Wurzeln Hackern viel zu viel gibt. Sie können Ihr SSH, Ihr HTTP und alles andere vermasseln, was sie wollen. Mit SELinux können Sie jedoch den Root-Zugriff einschränken oder entfernen. Selbst wenn sich jemand bei root anmeldet, kann er Ihr System nicht einfach zerstören. Hinweis: Dies gilt nicht nur für Protokolldateien. Dies gilt für alles im System. Das Erhalten von root wird sehr schnell bedeutungslos, wenn Sie SELinux richtig konfigurieren.

Und um klar zu sein, muss ein Benutzer irgendwann in der Lage sein, die Protokolldateien zu löschen. Das Ziel ist nicht, das Löschen von Protokolldateien unmöglich zu machen, sondern es ist für root unmöglich, alle Protokolldateien zu löschen. Wenn jemand / etwas im System eine Protokolldatei erstellen kann, kann er diese Protokolldatei auch löschen , es sei denn, Sie verwenden eine Art einmaligen Schreibspeicher wie andere haben erwähnt.

Dann verschiebt sich die Frage ein wenig: Ein Hacker kompromittiert Ihren Webdienst und kann anschließend die damit verbundenen Protokolle löschen, oder? Und genau darum geht es uns wirklich, denn das ist das Protokoll, das ihre Aktionen verfolgt. Wenn sie das noch ändern können, worum geht es dann bei diesem ganzen Zirkusakt? Nun, die Antwort ist, dass sie möglicherweise in der Lage sind, die Protokolldateien zu löschen / zu ändern, je nachdem, in welchem ​​Kontext sie ausgeführt werden, nachdem sie das System ausgenutzt haben, und ob dieser Kontext die Berechtigung hat, die zu ändern relevante Protokolldateien. Aber das ist ein Kaninchenbau an sich und diese Antwort ist so wie sie ist lang genug. Trotzdem zeichnet SELinux sowieso Systemanrufe auf, und der Hacker, der Ihren Webdienst kompromittiert hat, kann SELinux-Protokolle nicht ändern (es handelt sich um zwei separate Kontexte / Rollen im System), sodass Sie zumindest über diese verfügen.

Eloy Roldán Paredes
2015-11-11 00:33:23 UTC
view on stackexchange narkive permalink

Standardmäßig hindert nichts einen Angreifer daran, die Protokolle zu löschen, um ihre Spuren zu verwischen. Wenn jedoch ein Angreifer die Protokolle löscht, ist es offensichtlich, dass etwas passiert ist. Aus Sicht eines Angreifers ist es intelligenter, die Protokolle so zu ändern, dass nur seine Spuren gelöscht werden.

Andererseits können Sie einige Maßnahmen zum Schutz der Protokolle implementieren, z. B. sie in Echtzeit senden Zeit zu einem externen Server.



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...