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:
- Das Paket könnte eine suid- oder sgid-ausführbare Datei enthalten.
- Das Paket könnte Dienste auf dem System starten.
- Das Paket kann Skripts installieren, die unter bestimmten Umständen automatisch aufgerufen werden (dies schließt Cron-Jobs ein, Skripts können jedoch auch von anderen Ereignissen aufgerufen werden, z. B. 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 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:
- Spart Speicherplatz, sowohl auf dem Server als auch bei Sicherungen.
- Weniger installierte Software erleichtert das Verfolgen der Abhängigkeiten.
- Wenn Sie das Paket nicht benötigen, ist es sinnlos, das zusätzliche Sicherheitsrisiko aus der Installation zu ziehen, auch wenn dieses Sicherheitsrisiko gering ist.
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.