
Während der Einrichtung meiner virtuellen Serverinstanzen benötige ich die Erstellung einiger Anwendungen mit make
. Sind mit der Installation Sicherheitsrisiken verbunden make
? Oder sollte ich vor der Bereitstellung der Instanz eine Bereinigung durchführen?
Ich habe auch den gcc
Compiler auf dem Server, den ich zum Erstellen von Anwendungen vor der Bereitstellung verwende.
Antwort1
Manche Leute argumentieren, dass die Anwesenheit von Entwicklungstools auf einer Produktionsmaschine einem Angreifer das Leben erleichtert. Für einen Angreifer ist dies jedoch ein so kleines Hindernis, dass jedes andere Argument, das Sie für oder gegen die Installation der Entwicklungstools finden, mehr Gewicht hat.
Wenn ein Angreifer so weit in das System eindringen konnte, dass er alle auf dem Server vorhandenen Tools aufrufen konnte, liegt bereits eine ernsthafte Sicherheitslücke vor. Ohne Entwicklungstools gibt es viele andere Möglichkeiten, Binärdaten in eine Datei zu schreiben und dann einen chmod auf dieser Datei auszuführen. Ein Angreifer, der an diesem Punkt eine benutzerdefinierte Build-Ausführbare Datei auf dem System verwenden möchte, könnte diese genauso gut auf seiner eigenen Maschine erstellen und auf den Server übertragen.
Es gibt noch andere, viel relevantere Dinge, auf die Sie achten sollten. Wenn eine installierte Software eine Sicherheitslücke enthält, gibt es mehrere Möglichkeiten, wie sie einem Angreifer ausgesetzt werden könnte:
- Das Paket könnte eine ausführbare Suid- oder SGID-Datei enthalten.
- Das Paket könnte Dienste auf dem System starten.
- Das Paket könnte Skripte installieren, die unter bestimmten Umständen automatisch aufgerufen werden (dazu gehören Cron-Jobs, aber Skripte könnten auch durch andere Ereignisse aufgerufen werden, beispielsweise wenn sich der Status einer Netzwerkschnittstelle ändert oder wenn sich ein Benutzer anmeldet).
- Das Paket könnte Geräte-Inodes installieren.
Ich würde nicht erwarten, dass Entwicklungstools einem der oben genannten entsprechen, und daher handelt es sich nicht um ein Paket mit hohem Risiko.
Wenn Sie über Arbeitsabläufe verfügen, in denen Sie die Entwicklungstools nutzen würden, müssen Sie zunächst entscheiden, ob es sich dabei um sinnvolle Arbeitsabläufe handelt. Wenn ja, sollten Sie die Entwicklungstools installieren.
Wenn Sie feststellen, dass Sie diese Tools auf dem Server nicht wirklich benötigen, sollten Sie aus mehreren Gründen von der Installation absehen:
- Spart Speicherplatz, sowohl auf dem Server als auch bei Backups.
- Wenn weniger Software installiert ist, können Sie Ihre Abhängigkeiten leichter nachverfolgen.
- Wenn Sie das Paket nicht benötigen, ist das zusätzliche Sicherheitsrisiko, das mit der Installation verbunden ist, sinnlos, auch wenn es nur gering ist.
Wenn Sie aus Sicherheitsgründen beschließen, dass Sie nicht privilegierten Benutzern nicht erlauben, ihre eigenen ausführbaren Dateien auf dem Server abzulegen, sollten Sie nicht die Entwicklungstools vermeiden, sondern Verzeichnisse, die für diese Benutzer auf Dateisystemen mit Ausführungsberechtigung beschreibbar sind. Auch unter diesen Umständen können Entwicklungstools noch sinnvoll sein, aber das ist nicht sehr wahrscheinlich.
Antwort2
make
ist eine Shell, die eine andere Syntax als hat bash
.
Ein Compiler wie gcc
ist ein leistungsstarker awk
Compiler, der mit einer Reihe von Ersetzungen konfiguriert ist, die der Standard awk
nicht unterstützt. Er ist nicht POSIX-kompatibel sort
oder cat
fügt Unsinn in die Ausgabe ein. Es handelt sich um einen interaktiven Texteditor (denken Sie an vi
), der so konfiguriert ist, dass er beim Start einige Änderungen vornimmt und dann beendet wird, bevor die Benutzeroberfläche angezeigt wird.
Sie stellen keine grundsätzliche Unsicherheit dar und machen Ihren Rechner nicht unsicherer als einen Rechner, auf dem Sie über Bash + cat
Shell-Umleitung verfügen.
Antwort3
make
selbst ist in Ordnung. make
ist lediglich ein Framework zur Abhängigkeitsverfolgung und Automatisierung. Es wird jedoch normalerweise in Verbindung mit Compilern verwendet, und diese sollten auf einem Produktionssystem vorzugsweise nicht verfügbar sein, da sie völlig unnötig sind. Dasselbe gilt für alle nicht benötigten Pakete, seien es gemeinsam genutzte Bibliotheken, Interpreter usw. Auf Produktionssystemen installierte Software sollte streng kontrolliert werden und es sollten nur die Pakete vorhanden sein, die von der Anwendung benötigt werden.
Sie sollten Ihre Anwendung auf einem Build-Server erstellen, sie verpacken und dann das Binärpaket auf Ihren Produktionssystemen bereitstellen.
Hinweis: Native Verpackungstoolssaugen. Versuchen Sie erst gar nicht, sie zu verstehen. Schauen Sie sich stattdessen Jordan Sisselsfpm
. Es macht das Verpacken zu einem wahren Vergnügen.
Antwort4
Sie fragen, ob make
es auf einem Produktionsserver installiert werden sollte, aber meine eigentliche Frage wäre: Wer hat Zugriff auf diesen Produktionsserver und welche Sicherheitsvorkehrungen haben Sie getroffen, um gegen einen Einbruch vorzugehen? Wenn es make
nicht installiert wurde, aber jemand root
Zugriff erhält, wissen Sie was? Sie können make
alles manuell installieren, was sie wollen.
Die harte Realität in Sachen Computersicherheit ist, dass die Besessenheit, unerwünschten Zugriff zu verhindern, nicht so wichtig ist wie:
- Wer hat Zugriff auf den Server?
- Was können Sie tun, um die Folgen eines Einbruchs zu beseitigen?
Dies hängt alles davon ab, welche Art von Arbeit Sie verrichten. Ich arbeite hauptsächlich in der Webserver-Welt und meine Einstellung ist grundsätzlich, dass jeder, der von mir Zugriff auf Produktionsserver erhält, Fähigkeiten, Wissen und Reife nachweisen muss. Das ist alles. Manchmal dauert es ein paar Tage. Manchmal dauert es Monate. Aber im Grunde genommen ist Ihre beste Sicherheitsmaßnahme für Produktionsserver die Zugriffskontrolle zusätzlich zu den verschiedenen anderen Dingen, die wir tun, um Server abzusichern.