
Die Frage ist möglicherweise unklar oder zu allgemein, aber wir sind für jede Antwort, egal wie kurz oder allgemein, sehr dankbar.
Vor einiger Zeit habe ich darum gebeten, zsh auf unserem Produktionsserver zu installieren. Die Unternehmen meiner Administratoren antworteten, dass dies nicht möglich sei, da es sich um einen Produktions- und nicht um einen Entwicklungsserver handele.
Ich habe zsh und oh-my-zsh in den letzten 5 Jahren verwendet und bin sehr daran interessiert, zsh macht meine Arbeit einfacher und schneller. Aber es war kein ausreichendes Argument.
Ich kenne mich nicht so gut mit Sicherheit oder anderen Themen aus, die hier eine Rolle spielen könnten, deshalb lauten meine Fragen:
- Ist die Installation von zsh auf einem Produktionsserver für das System unschädlich?
- Würden Sie in diesem Fall die Installation von zsh zulassen und warum?
- Ist es sinnvoll, Benutzer mit Bash auf dem Produktionsserver einzuschränken?
Antwort1
zsh
ist nur eine Shell, sie startet keinen Dienst und kommt mit keinem Setuid-Befehl. Die bloße Installation des Pakets bewirkt also nichts, bis jemand oder etwas es tatsächlich verwendet. Da es keine Berechtigungen benötigt, kann es jeder Benutzer selbst in seinem Home-Verzeichnis oder wo auch immer er Zugriff hat installieren.
Wenn nichtProduktionsqualität, könnte man argumentieren, dass es ein gewisses Risiko brächte, es als Login-Shell für den Benutzer „und Administrator“ zu verwenden, aber angesichts der viel vernünftigeren Syntax als bei anderen Shells wie bash
oder tcsh
würde ich behaupten, dass es die Sache erheblich verbessern würde.
Obwohl es in erster Linie als interaktive Shell verwendet wird, würde ich behaupten, dass das Schreiben von Skripten in zsh
wahrscheinlich sicherere und zuverlässigere Skripte als bash
Skripte führt (sehen Sie sich an, wie viele Leute unwissentlich bash
Skripte in zsh
Syntax schreiben, wenn sie vergessen, ihre Variablen in Anführungszeichen zu setzen, und wie das Ändern des Shebang von #! /bin/bash
in #! /bin/zsh -
viele der Fehler in ihren Skripten beheben würde).
Auf jeden Fall zsh
gehörte die Installation zu den ersten Dingen, die ich bei allen Serverbereitstellungen an allen Orten, an denen ich gearbeitet habe, durchgeführt habe.
Ich mache es jedoch im Allgemeinen nicht standardmäßig zur Anmelde-Shell eines Benutzers, da es bei manchen Softwareprogrammen nicht ungewöhnlich ist, eine Bash-zentrierte Umgebung zu erwarten.
Antwort2
Wie die anderen ist dies meine Meinung:
- Ist die Installation von zsh auf einem Produktionsserver für das System unschädlich?
Definieren Sie „harmlos“. Streng genommen verursacht es keinen direkten Schaden. Jeder Code auf Ihrem Produktionssystem ist jedoch ein potenzieller Angriffsvektor. In diesem Sinne ist es nicht wirklich „harmlos“, da eskönntefür einen Angriff auf das System verwendet werden. Es gibt auch einige andere Möglichkeiten, wie es indirekt Probleme verursachen könnte. ZSH ist etwas ressourcenhungriger als beispielsweise Bash, was bei einem System, das an der Kapazitätsgrenze läuft, von Bedeutung sein könnte.
- Würden Sie in diesem Fall die Installation von zsh zulassen und warum?
Abhängig von den genauen Umständen habe ich es möglicherweise bereits installiert.
Auf allen meinen persönlichen Systemen ist ZSH installiert und als Standard-Shell für alle, einschließlich Root, festgelegt. Das liegt einfach daran, dass ich auf diesen Systemen ziemlich regelmäßig von einer lokalen Shell aus arbeite und ZSH in vielen Fällen aktiv verwende.
Allerdings ist es auf allen Systemen, die ich bei der Arbeit verwalte, nicht installiert. Bei etwa 95 % der Verwaltungsarbeit, die ich für sie erledige, berühre ich nicht einmal eine Shell auf diesen Systemen (ich mache einevielüber Ansible bei der Arbeit), also macht es keinen Sinn, dass ich es zu einer vertrauten Umgebung mache. Es wäre auch sehr unwahrscheinlich, dass ich es auf etwas anderem als unseren eigentlichen Entwicklungssystemen installieren würde, und ich würde es auf gar keinen Fall auf etwas installieren, das außerhalb des Standorts direkt zugänglich ist.
- Ist es sinnvoll, Benutzer mit Bash auf dem Produktionsserver einzuschränken?
Ich stelle die Praktikabilität in Frage, normalen Benutzern überhaupt den Zugriff auf Produktionssysteme zu gestatten, abgesehen von bestimmten sehr restriktiven Fällen, in denen kein tatsächlicher Shell-Zugriff erforderlich ist.
Bei mir beispielsweise haben nur die IT-Abteilung und die Leute, die direkt für die Pflege unserer Website verantwortlich sind, einen anderen als den normalen HTTPS-Zugriff auf unsere Webserver. Die IT-Leute (ich eingeschlossen) müssen sich mit einem speziellen Konto anmelden, das nur für die Verwaltung der Webserver verwendet wird, und selbst dann haben sie nur begrenzten Zugriff auf die Systeme, es sei denn, sie sitzen an der physischen Konsole im Serverraum. Die Webdesigner haben nur SFTP-Zugriff auf das Stammverzeichnis der Website, undNichtssonst. Vor diesem Hintergrund ist keine Shell außer Bash erforderlich (die unser interner Standard für die administrative Nutzung ist).
Ähnlich verhält es sich mit unseren internen Dateiservern: Nur die IT-Abteilung hat tatsächlichen Shell-Zugriff. Andere Benutzer haben speziell eingeschränkten Zugriff auf bestimmte Verzeichnisse, was normalerweise reguläre Dateiserverprotokolle (SMB, NFS usw.) sowie SFTP und in einigen Fällen rsync zulässt, aber keiner von ihnen hat echten Shell-Zugriff, weil sie ihn nicht wirklich benötigen.
Antwort3
Meiner Erfahrung nach ist es unüblich, zsh auf einem Produktionsserver zu installieren. Allerdings arbeite ich hauptsächlich mit eher „konservativen“ Kunden (Banken, Verwaltungen usw.), daher kann es bei Ihnen anders sein.
Zsh selbst istharmlos. Es ist "nur eine weitere Shell", wie Bash, Ksh, ... In vielen Unternehmen besteht die Sicherheitsrichtlinie jedoch darin,Begrenzen Sie die Angriffsfläche so weit wie möglich, d. h. installieren Sie nichts, es sei denn, es ist erforderlich. Obwohl zsh harmlos ist,Die Codebasis könnte Fehler enthalten. Lesen überNeurosefalls Sie es noch nicht kennen. :)
Allerdings gibt es eine gewisse Nachsicht bei „Commodities“, wie z. B. vim statt nur vi. Zsh könnte in diese Kategorie fallen.Nicht in Produktion, das passiert nicht. Abgesehen davon, dass Sie die Angriffsfläche verringern, müssen Sie Ihre Skripte auch zweimal testen – einmal mit zsh, einmal mit bash. Das kostet Zeit und Geld.
Ich würde es nicht als Einschränkung gegenüber Bashing bezeichnen:gibt es etwas, was Sie mit zsh tun können, was mit bash nicht geht?
Schlussbemerkung:Bash ist so ziemlich der Industriestandard. Es ist die Standard-Shell für die meisten Enterprise-Distributionen (RHEL, SUSE, ...) sowie für viele sehr beliebte Distributionen wie Debia, Ubuntun ...
Ich habe im Laufe der Jahre „neue“ Shells ausprobiert: zsh und fish sind zwei, die mir wirklich gefallen haben. Für den Heimgebrauch vielleicht, aber bei der Arbeit ist es immer Bash (und Ksh, wenn ich mit AIX usw. arbeite). Ich verwende Bash auch zu Hause, alte Gewohnheiten lassen sich nur schwer ablegen.
Antwort4
Es gibt auch andere Meinungen, aber hier ist meine.
- Ist die Installation von zsh auf einem Produktionsserver für das System unschädlich?
Die Einführung neuer Software ist selten harmlos. So muss beispielsweise sichergestellt werden, dass alle damit verbundenen Schwachstellen identifiziert und behoben werden.
- Würden Sie in diesem Fall die Installation von zsh zulassen und warum?
Nein. Ich möchte, dass ein konkreter Nutzen identifiziert wird.
- Ist es sinnvoll, Benutzer mit Bash auf dem Produktionsserver einzuschränken?
Ja, bash
ist großartig :-) Und wenn eine Nischengruppe von Benutzern im Unternehmen anfängt, zsh
Skripte zu schreiben, ohne dass die erweiterten Supportteams davon Kenntnis haben, sind sie aufgeschmissen.