Frage Ist es sicher, dass ein Produktionsserver installiert ist?


Während der Einrichtung meiner virtuellen Server-Instanzen müssen einige Anwendungen mit erstellt werden make. Gibt es Sicherheitsrisiken, die damit verbunden sind? make Eingerichtet? Oder sollte ich es aufräumen, bevor die Instanz bereitgestellt wird?

Ich habe auch die gcc Compiler auf dem Server, mit dem ich Anwendungen vor der Bereitstellung erstelle.


39
2018-05-15 17:46


Ursprung


Wenn es dich besser fühlen lässt, irgendein Stück Software installiert irgendwo erstellt eine Sicherheitsanfälligkeit. - MDMoore313
Und einer mit Nicht-Root-Shell-Zugriff auf einen Server könnte ein "Distro-unabhängiges" Compiler-Paket (.tar.gz) herunterladen, das nicht installiert werden muss ... - nwildner
Bin ich es oder ist die Kombination "ist es sicher?" und "root access" eher unbequem? - DNA
Wenn Sie gcc bereits installiert haben, gibt es praktisch keine Möglichkeit, ein potenzielles Sicherheitsproblem zu verschlimmern. - Shadur
@Shadur Welchen Unterschied macht GCC? Wenn der Benutzer bereits Zugriff auf die Maschine hat, kann er jede Kopie von gcc trivial hochladen. Wie auch immer, gcc kann für nicht privilegierte Benutzer nützlich sein und kein Sicherheitsrisiko, solange keine privilegierten Benutzer es ausführen. - Vality


Antworten:


Manche Leute werden argumentieren, dass das Vorhandensein von Entwicklungswerkzeugen auf einer Produktionsmaschine den Angreifern das Leben erleichtern wird. Dies ist jedoch für einen Angreifer ein so kleiner Roadbump, dass jedes andere Argument, das Sie für oder gegen die Installation der Entwicklungswerkzeuge finden können, mehr wiegt.

Wenn ein Angreifer das System so weit durchdringen konnte, dass er alle auf dem Server vorhandenen Tools aufrufen konnte, liegt bereits eine schwerwiegende Sicherheitsverletzung vor. Ohne Entwicklungstools gibt es viele andere Möglichkeiten, binäre Daten in eine Datei zu schreiben und dann einen chmod für diese Datei auszuführen. Ein Angreifer, der zu diesem Zeitpunkt eine benutzerdefinierte Build-Executable auf dem System verwenden möchte, könnte dies genauso gut auf seiner eigenen Maschine erstellen und auf den Server übertragen.

Es gibt noch viel relevantere Dinge, auf die Sie achten sollten. Wenn eine installierte Software einen Sicherheitsfehler enthält, gibt es einige Möglichkeiten, wie sie einem Angreifer zugänglich gemacht werden könnte:

  • Das Paket könnte eine suid- oder sgid-ausführbare Datei enthalten.
  • Das Paket könnte Dienste auf dem System starten.
  • Das Paket könnte Skripts installieren, die unter bestimmten Umständen automatisch aufgerufen werden (dies schließt Cron-Jobs ein, aber Skripts könnten auch von anderen Ereignissen aufgerufen werden, wenn sich beispielsweise der Status einer Netzwerkschnittstelle ändert oder wenn ein Benutzer sich anmeldet).
  • Das Paket könnte Geräte-Inodes installieren.

Ich würde nicht erwarten, dass Entwicklungswerkzeuge mit einem der oben genannten übereinstimmen, und daher kein Hochrisikopaket ist.

Wenn Sie über Workflows verfügen, in denen Sie die Entwicklungstools verwenden, müssen Sie zunächst entscheiden, ob dies sinnvolle Arbeitsabläufe sind. Wenn dies der Fall ist, sollten Sie die Entwicklungstools installieren.

Wenn Sie feststellen, dass Sie diese Tools nicht wirklich auf dem Server benötigen, sollten Sie sie aus verschiedenen Gründen nicht installieren:

  • Spart Speicherplatz auf dem Server und bei Backups.
  • Weniger installierte Software macht es einfacher zu verfolgen, was Ihre Abhängigkeiten sind.
  • Wenn Sie das Paket nicht benötigen, ist es nicht sinnvoll, das zusätzliche Sicherheitsrisiko von der Installation zu nehmen, selbst wenn dieses Sicherheitsrisiko gering ist.

Wenn Sie aus Sicherheitsgründen nicht zulassen, dass nicht privilegierte Benutzer ihre eigenen ausführbaren Dateien auf dem Server ablegen, sollten Sie nicht die Entwicklungstools, sondern Verzeichnisse, die für diese Benutzer schreibbar sind, in Dateisystemen mit ausführbaren Berechtigungen vermeiden. Selbst unter diesen Umständen kann Entwicklungswerkzeuge noch verwendet werden, aber es ist nicht sehr wahrscheinlich.


48
2018-05-15 18:27



Ich würde hinzufügen, dass eine Reihe von Produktionssystem auf interpretierten Code (z. B. PHP, Perl, Python, ...) beruhen. Das Verbot von Entwicklungswerkzeugen in diesem Zusammenhang wäre nicht sinnvoll. Ich würde Compiler wie betrachten gcc kein höheres Risiko als diese darzustellen. Wie Sie sagen, ein Angreifer, der in der Lage ist, die auf einem System installierten Compiler zu verwenden, ist in der Regel in der Lage, ohnehin schon schlechtere Dinge zu tun, wie beispielsweise das Hochladen einer eigenen (möglicherweise statisch verknüpften) ausführbaren Datei. - Bruno
Relevant: Eine kleine Version von wget (51 Bytes?). Ein Beispiel aus dem echten Leben eines Angreifers, der eine binäre Datei über nachfolgende auf den Server verschiebt echo Anweisungen in eine Datei. Der gesamte Prozess wird mit einem Skript automatisiert, das in demselben Link gefunden wird. - Adi
@Adnan, interessant. Soweit ich das beurteilen kann, besteht der Hauptfehler in diesem DVR-Beispiel in der Tatsache, dass der Angreifer als Root mit dem Passwort 123456 telnet. Wget oder andere Werkzeuge (vor dem Angriff) zu haben oder nicht, ist dann tatsächlich kaum relevant. - Bruno


make ist eine Shell, die eine andere Syntax als bash.

Ein Compiler wie gccist ein mächtiger awk konfiguriert mit einer Reihe von Ersetzungen dieser Standard awk unterstützt nicht. Es ist nicht POSIX-konform sort oder cat Das injiziert Müll in die Ausgabe. Es ist ein interaktiver Texteditor (denke vi), die konfiguriert ist, um beim Start einige Änderungen vorzunehmen, und dann vor der Anzeige der Benutzeroberfläche beendet wird.

Es gibt nichts inhärent unsicher in ihnen, sie machen Ihre Maschine nicht unsicherer als eine, in der Sie bash + haben cat + Shell-Umleitung.


15
2018-05-16 16:54



Eine Antwort so zen ich weiß nicht, wie ich es bewerten soll. - kasperd
@ kasperd Diese Antwort soll ernst gemeint sein. Ich dachte, dass die Sichtweise eines Programmierers hilfreich sein könnte. Eine Funktion, die eine Eingabe in eine Ausgabe übersetzt, stellt keine Sicherheitslücke dar, nur weil ihre Ausgabe in einem für die CPU verständlichen Format vorliegt. - ignis
Ich stimme dem Punkt zu, den Sie machen. Ich denke, deine Antwort ist eine großartige Lektüre für jeden, der dem schon zustimmt. Ich mache mir nur Sorgen, dass deine Antwort jemandem, der nicht damit einverstanden ist, als Scherz erscheinen mag. - kasperd
Ich mag diese Antwort viel mehr als die angenommene :) - Ruslan


make es ist in Ordnung. make ist lediglich ein Abhängigkeits-Tracking- und Automatisierungs-Framework. Es wird normalerweise in Verbindung mit Compilern verwendet, und diese sollten vorzugsweise nicht in einem Produktionssystem verfügbar sein, da sie völlig unnötig sind. Dasselbe gilt für alle nicht benötigten Pakete, egal ob es sich um gemeinsam genutzte Bibliotheken, Interpreter usw. handelt. Auf Produktionssystemen installierte Software sollte streng kontrolliert werden, und nur die Pakete, die von der Anwendung benötigt werden, sollten vorhanden sein.

Sie sollten Ihre Anwendung auf einem Build-Server erstellen, sie packen und dann das Binärpaket auf Ihren Produktionssystemen bereitstellen.

Hinweis: native Verpackungswerkzeuge saugen. Versuche nicht einmal, sie zu suchen. Schauen Sie sich stattdessen Jordan Sissel an fpm. Es macht die Verpackung zur absoluten Freude.


15
2018-05-15 17:49



Ich frage aus Neugier und Ignoranz hier: Warum sagen Sie, dass die Anwesenheit von Compilern ein "wichtiges Sicherheitsproblem" ist? Was ist das Sicherheitsproblem bei der Installation eines Compilers? Ist es nur eine Frage von Ihnen, sollten Sie nicht Ihren Code auf einem Produktionsserver überhaupt erstellen und somit ist der Compiler überflüssig, oder gibt es tatsächlich ein signifikantes Sicherheitsproblem mit dem Vorhandensein des Compilers selbst? - reirab
Während es eine gute Idee ist, Ihre Anwendungen auf einem separaten Server zu erstellen, ist die Angabe von Compilern in einem Produktionssystem ein erhebliches Sicherheitsproblem. Was ist mit Skriptsprachen und JIT-kompilierten Systemen (Perl, Python, Java, ...)? - Bruno
Das Vorhandensein von Compilern in einer Produktionsumgebung ist nicht ein "signifikantes Sicherheitsrisiko". Ich selbst habe Binärdateien in kompromittierte Boxen verschoben echo und base64. In der Tat können Sie sogar Mach es mit einer Reihe von echo Aussagen und kein anderes Werkzeug. - Adi
Gute Punkte, alle. Ich habe meine Antwort bearbeitet, um sie zu klären. - EEAA


Im Gegenteil, das potentielle Problem besteht nicht darin, etwas zu haben make Auf dem Produktionsserver besteht das potenzielle Problem darin, die Anwendungen auf dem Produktionsserver zu erstellen, anstatt getestete vordefinierte Images bereitzustellen. Es mag gute Gründe für diese Methode geben, aber ich würde energisch dagegen argumentieren, wenn ich darum gebeten würde.


9
2018-05-15 17:49





Du fragst, ob make sollte auf einem Produktionsserver installiert werden, aber meine eigentliche Frage wäre: Wer hat Zugriff auf diesen Produktionsserver und welche Sicherheitsvorkehrungen haben Sie, um mit einem Überfall fertig zu werden? Ob make wurde nicht installiert, aber jemand gewinnt root Zugang, rate was? Sie können manuell installieren make und alles, was sie wollen.

Die harte Realität der Computersicherheit ist so groß wie Sie wollen, um ungewollten Zugriff zu verhindern. Das Besessensein mit dem Blockieren des Zugriffs ist nicht so wichtig wie:

  1. Wer hat Zugriff auf den Server?
  2. Was können Sie tun, um nach einer Pause zurückzukommen?

Dies hängt alles davon ab, welche Art von Arbeit du tust. Ich arbeite hauptsächlich in der Web-Server-Welt und meine Einstellung ist im Grunde, jeder, der einen Produktions-Server-Zugang von mir bekommt, muss Fähigkeiten, Wissen und Reife beweisen. Das ist es. Manchmal dauert es ein paar Tage. Manchmal dauert es Monate. Aber im Grunde ist Ihre beste Sicherheitslinie auf Produktionsservern die Kontrolle des Zugriffs auf die anderen Dinge, die wir tun, um Server zu härten.


4
2018-05-16 21:50





make selbst ist harmlos. Es werden nur Anwendungen in einer festgelegten Reihenfolge ausgeführt, abhängig von den von Ihnen angegebenen Abhängigkeiten und den bereits vorhandenen Dateien im System. Es kann sogar als Teil des Installationsprozesses nützlich sein: Sie können es verwenden, um vorgefertigte Dateien dorthin zu bringen, wo sie hingehen müssen, oder Komponententests oder andere Dinge auszuführen.

Sie müssen jedoch überlegen, was genau Sie möchten es für verwenden. Es wird oft in Verbindung mit Compilern und anderen Tools zum Erstellen von Anwendungen verwendet jene könnte verwendet werden, um einige Ihrer Verteidigungslinien zu negieren. Aber make kann diese Dinge nicht tun, wenn die Werkzeuge nicht verfügbar sind.


1
2018-05-17 14:56