Während der Einrichtung meiner virtuellen Serverinstanzen müssen einige Anwendungen mit erstellt werden make
. Sind mit der make
Installation Sicherheitsrisiken verbunden ? Oder sollte ich es bereinigen, bevor die Instanz bereitgestellt wird?
Ich habe auch den gcc
Compiler auf dem Server, mit dem ich Anwendungen vor dem Deployment erstelle.
Antworten:
Einige Leute werden argumentieren, dass das Vorhandensein von Entwicklungswerkzeugen auf einer Produktionsmaschine einem Angreifer das Leben erleichtern wird. Dies ist jedoch für einen Angreifer ein so kleines Hindernis, dass jedes andere Argument, das Sie für oder gegen die Installation der Entwicklungstools finden, mehr wiegt.
Wenn ein Angreifer so weit in das System eindringen 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ärdaten in eine Datei zu schreiben und anschließend ein chmod für diese Datei auszuführen. Ein Angreifer, der zu diesem Zeitpunkt eine benutzerdefinierte ausführbare Datei auf dem System verwenden möchte, kann diese ebenso gut auf seinem eigenen Computer erstellen und auf den Server übertragen.
Es gibt andere, viel relevantere Dinge, auf die man achten muss. Wenn eine installierte Software eine Sicherheitslücke enthält, kann sie auf verschiedene Arten einem Angreifer ausgesetzt sein:
Ich würde nicht erwarten, dass die Entwicklungstools mit einem der oben genannten Tools übereinstimmen, und als solches handelt es sich nicht um ein Paket mit hohem Risiko.
Wenn Sie über Workflows verfügen, in denen Sie die Entwicklungstools verwenden würden, müssen Sie zunächst entscheiden, ob dies sinnvolle Workflows sind, und wenn ja, sollten Sie die Entwicklungstools installieren.
Wenn Sie feststellen, dass Sie diese Tools nicht wirklich auf dem Server benötigen, sollten Sie sie aus mehreren Gründen nicht installieren:
Wenn Sie aus Sicherheitsgründen nicht zulassen, dass nicht privilegierte Benutzer ihre eigenen Executabels auf den Server stellen, sollten Sie nicht die Entwicklungstools, sondern Verzeichnisse vermeiden, die für diese Benutzer auf Dateisystemen mit Ausführungsberechtigungen geschrieben werden können. Auch unter diesen Umständen können möglicherweise noch Entwicklungstools zum Einsatz kommen, dies ist jedoch nicht sehr wahrscheinlich.
quelle
gcc
kein höheres Risiko als diese darstellen. Wie Sie sagen, kann ein Angreifer, der die auf einem System installierten Compiler verwenden kann, in der Regel ohnehin schlimmere Dinge tun, z. B. das Hochladen seiner eigenen (möglicherweise statisch verknüpften) ausführbaren Datei.echo
Anweisungen in eine Datei auf den Server verschiebt . Der gesamte Prozess wird mit einem Skript automatisiert, das sich unter demselben Link befindet.make
ist eine Shell mit einer anderen Syntax alsbash
.Ein Compiler wie dieser
gcc
ist ein leistungsfähiger Compilerawk
mit einer Reihe von Substitutionen, die der Standardawk
nicht unterstützt. Es ist nicht POSIX-konformsort
odercat
speist Müll in die Ausgabe ein. Es ist ein interaktiver Texteditor (thinkvi
), der so konfiguriert ist, dass er beim Start bearbeitet und dann beendet wird, bevor die Benutzeroberfläche angezeigt wird.Es gibt nichts, was von Natur aus unsicher ist. Sie machen Ihren Computer nicht unsicherer als einen Computer, auf dem Sie die Bash +
cat
+ - Shell-Umleitung verwenden.quelle
make
selbst ist in Ordnung.make
ist lediglich ein Framework für die Verfolgung und Automatisierung von Abhängigkeiten. Es wird jedoch normalerweise in Verbindung mit Compilern verwendet, und diese sollten vorzugsweise nicht auf einem Produktionssystem verfügbar sein, da sie völlig unnötig sind. Gleiches gilt für alle nicht benötigten Pakete, unabhängig davon, ob es sich um gemeinsam genutzte Bibliotheken, Interpreter usw. handelt. 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, verpacken und dann das Binärpaket auf Ihren Produktionssystemen bereitstellen.
Hinweis: native Verpackungswerkzeuge saugen . Mach dir nicht einmal die Mühe, sie zu verprügeln. Schauen Sie sich stattdessen Jordan Sissel's an
fpm
. Es macht die Verpackung zur absoluten Freude.quelle
echo
und auf gefährdete Boxen verschobenbase64
. Tatsächlich können Sie dies sogar mit einer Reihe vonecho
Anweisungen und keinem anderen Tool tun .Im Gegenteil, das potenzielle Problem besteht nicht darin, dass
make
auf dem Produktionsserver Anwendungen erstellt werden, anstatt getestete vorgefertigte Abbilder bereitzustellen. Es mag triftige Gründe für diese Methodik geben, aber ich würde sie mit Nachdruck ablehnen, wenn ich darum gebeten würde.quelle
Sie fragen sich, ob
make
die Installation auf einem Produktionsserver erfolgen soll, aber meine eigentliche Frage lautet: Wer hat Zugriff auf diesen Produktionsserver und welche Sicherheitsvorkehrungen haben Sie, um mit einem Einbruch umzugehen? Wennmake
nicht installiert, aber jemandroot
Zugang hat, raten Sie mal was? Sie können manuell installierenmake
und alles, was sie wollen.Die harte Realität in Bezug auf die Computersicherheit besteht darin, dass Sie unerwünschten Zugriff verhindern möchten. Es ist nicht so wichtig, von der Blockierung des Zugriffs besessen zu sein, wie:
Dies hängt alles davon ab, welche Art von Arbeit Sie ausführen. Ich arbeite hauptsächlich in der Webserver-Welt und meine Einstellung ist grundsätzlich, dass jeder, der von mir Zugang zu Produktionsservern erhält, Fähigkeiten, Kenntnisse und Reife nachweisen muss. Das ist es. Manchmal dauert es ein paar Tage. Manchmal dauert es Monate. Grundsätzlich besteht Ihre beste Sicherheitsmaßnahme auf Produktionsservern darin, den Zugriff zusätzlich zu den anderen Maßnahmen zu steuern, die wir zur Absicherung von Servern ergreifen.
quelle
make
selbst ist harmlos. Es werden lediglich Anwendungen in einer festgelegten Reihenfolge ausgeführt, je nachdem, welche Abhängigkeiten Sie angeben und welche Dateien bereits im System vorhanden sind. Es kann sogar als Teil des Installationsprozesses nützlich sein: Sie können es verwenden, um vorgefertigte Dateien dort abzulegen, wo sie benötigt werden, oder um Komponententests oder andere Dinge auszuführen.Sie müssen jedoch überlegen, wofür Sie es genau verwenden möchten. Es wird oft in Verbindung mit Compiler und andere Tools für die Erstellung von Anwendungen verwendet, und diejenigen verwendet werden könnten einige Ihrer Verteidigungslinien zu negieren. Aber
make
ich kann diese Dinge nicht tun, wenn die Werkzeuge nicht verfügbar sind.quelle