it-swarm.com.de

Wie machen Sie deutlich, dass Sie sich in einem Produktionssystem befinden?

Einige von uns in meinem Unternehmen haben Root-Zugriff auf Produktionsserver. Wir suchen nach einem guten Weg, um es überaus klar zu machen, wenn wir ssh'd haben.

Einige Ideen, die wir hatten, sind:

  • Leuchtend rote Eingabeaufforderung
  • Beantworten Sie ein Rätsel, bevor Sie eine Shell erhalten
  • Geben Sie ein zufälliges Wort ein, bevor Sie eine Shell erhalten

Mit welchen Techniken unterscheidet ihr Produktionssysteme?

136
Sionide21

Die rote Eingabeaufforderung ist eine gute Idee, die ich auch benutze.

Ein weiterer Trick besteht darin, eine große ASCII-Warnung in das /etc/motd Datei.
Wenn Sie sich beim Anmelden mit so etwas begrüßen, sollten Sie Ihre Aufmerksamkeit auf sich ziehen:

 _______ _ _ _____ _____ _____ _____ 
 | __ __ | | | | _ _ |/____ | | _ _ |/____ |/\ 
 | | | | __ | | | | | (___ | | | (___/\ 
 | | | __ | |\___\| |\___ \//\\ 
 | | | | | _ | | _ ____) | _ | | _ ____) |/____\
 | _ | | _ | | _ | _____ | _____/| _____ | _____// _/\ _\
 
 
 _____ _____ ____ _____ _ _____ _______ _____ _____ _. | __\| __ \/__\| __\| | | |/____ | __ __ | _ _/__\|\| | 
 | | __) | | __) | | | | | | | | | | | | | | || | | |\| | 
 | ___/| _/| | | | | | | | | | | | | | || | | | . `| 
 | | | |\\ | | __ | | | __ | | | __ | | | ____ | | _ | || | __ | | |\| 
 | _ | | _ |\_ \\ ____/| _____/\ ____/\ _____ | | _ | | _____\____/| _ |\_ | 
 
 
 __ __ _____ _ _ _____ _ _ ______ 
 | \/|/\/____ | | | | _ _ |\| | ____ | 
 | \/|/\ | | | | __ | | | | |\| | | __ 
 | | \/| | //\\ | | | __ | | | | . `| __ | 
 | | | |/____\| ____ | | | | _ | | _ | |\| | ____ 
 | _ | | _/_/\ _\_____ | _ | | _ | _____ | _ |\_ | ______ | 

Sie können eine solche Warnung auf dieser Website generieren oder den Befehl figlet verwenden.

figlet

Wie Nicholas Smith in den Kommentaren vorgeschlagen hat, können Sie mit dem Befehl cowsay einige Drachen oder andere Tiere aufpeppen.

dragon cowsay

Anstatt die Datei/etc/motd zu verwenden, können Sie auch cowsay oder figlet im .profile Datei.

137

Nicht ganz dasselbe, aber diese Website empfiehlt, dass Ihre Entwickler einen rosa Sombrero tragen, wenn Sie Änderungen an Produktionssystemen vornehmen. Sie könnten wahrscheinlich eine ähnliche Regel haben, um in sie hineinzugehen.

developer wearing a pink sombrero

80
Aric TenEyck

Das größte, das ich verwendet habe, ist ein diskretes Namensschema, bei dem Produktsysteme offensichtlich anders benannt sind als Test-/Entwicklungsinstanzen. Dadurch unterscheidet sich die Eingabeaufforderung im Stil "Benutzername @ Hostname:" sichtbar. Und mit offensichtlich meine ich mehr als nur verschiedene Wörter, auch verschiedene Formate:

beispiel: PRD-WEB001 vs DEVEL-BOB-WEB001

Dies hat mehrere Gründe:

  • Der zusätzliche hypenierte Block macht es zu einem Dreiersatz anstelle eines Zweiersatzes.
  • Der erste Teil des Sets hat eine andere Länge.
  • Die Gesamtlänge der Namen ist deutlich unterschiedlich, wodurch sich der Befehlszeilenabstand relativ zueinander und zu anderem Text im Fenster unterscheidet.

Und das Beste ist, dass für die Produktion keine speziellen Terminal-Konfigurationen erforderlich sind, um Oops Fehler) zu vermeiden.

Nach meiner Erfahrung möchten Sie etwas, das Sie ständig daran erinnert, wo Sie sich befinden. Anmeldemethoden wie Rätsel sind ca. 10 Sekunden lang gültig, bis Sie vergessen, welches Fenster welches ist. Alles was es braucht ist ein ls im falschen Verzeichnis zu machen, um das ominöse Login-Banner aus dem Blickfeld zu scrollen, das Terminalfenster unter einem Browserfenster zu vergraben, während Sie etwas googeln, Alt-Tab zurück zum falschen Fenster und Chaos folgt. Am besten haben Sie einen konstanten visuellen Hinweis wie eine deutlich andere Eingabeaufforderung.

50
sysadmin1138

Eine Sache, die Sie beachten müssen, ist, dass dies eine dauerhafte Erinnerung sein muss, nicht nur ein Indikator zum Zeitpunkt der Anmeldung. Sehr oft hat jemand mehrere Shells gleichzeitig in verschiedenen Registerkarten und bewegt sich zwischen ihnen. Einige werden Entwickler sein, andere produzieren. Wenn Sie also einen Befehl ausführen, müssen Sie an diesem Punkt einen Indikator haben. Eine spezielle Eingabeaufforderung ist meiner Erfahrung nach die beste Methode, da eine modifizierte Titel-/Registerkartenleiste eine schöne Ergänzung dazu ist, um das richtige Fenster/die richtige Registerkarte leicht zu finden.

Daher würde ich empfehlen, eine farbige Eingabeaufforderung (Rot ist die offensichtliche Wahl) und alle Großbuchstaben für den Hostnamen zu verwenden, mit einem ähnlichen Verhalten für den Benutzer (privilegiert oder nicht privilegiert) wie für Ihre Eingabeaufforderung. Einige Beispiele:

colored prompts example

Normalerweise so etwas wie

set Prompt =  "%{\033[1;44m%}`whoami`@`hostname -s`#%{\033[0m%} "` 

in Ihrer Shell-Startdatei. Dieser ist für das Blau. Ersetze das 44 mit 41 fir red und 42 für grün. Andere Farben und wilde Muster sind ebenfalls verfügbar .

41
Tim

Das sind meine Vorschläge:

1) Stellen Sie sicher, dass die meisten Befehle (rm, chown, chmod, /etc/init.d/*) in der Produktionsumgebung Sudo-Zugriff erfordern

2) Verwenden Sie PS1/PS2, um anzuzeigen, dass sich der Benutzer auf einem Prod-Server befindet

bash-3.2$  export PS1="[\[email protected]\h \W]\$ "

Dies zeigt den Befehl Eingabeaufforderung als

[[email protected] conf]$

3) Wenn Sie PuTTY/SSH-Clients verwenden, können Sie jederzeit eine eindeutige Hintergrundfarbe/ein eindeutiges Hintergrundprofil einrichten, um die Produktionsserver hervorzuheben.

14

Denken Sie nur daran, dass Ihre zweite und dritte Idee bei der ersten Verbindung hilfreich sind, aber keinen Wert haben, wenn Sie mehrere Terminals geöffnet haben und von einem zum anderen wechseln. Die Idee von sysadmin1138, Namen zu verwenden, ist gut, wenn sie angewendet werden können, aber es gibt viele Fälle, in denen dies nicht möglich ist.

Das einzige, was sich wirklich gelohnt hat, ist eine farbige Eingabeaufforderung. Ich mag Grün für Entwickler/Tests, Rot für die Produktion und Blau für Maschinen in der DMZ. Auf diese Weise kann ich auch dann leicht erkennen, auf welchem ​​Computer ich bin, wenn ich zwei Computer mit demselben Namen (in unterschiedlichen Netzwerken) habe, z. B. bei der Vorbereitung eines Ersatzcomputers.

13
John Gardeniers

Die Eingabeaufforderung Rot/Sonderbefehl ist gut. Eine andere Möglichkeit könnte eine schnellere automatische Abmeldung auf diesen Computern mithilfe der TMOUT-Variablen sein. Wenn Sie viele Fenster geöffnet haben, verschwinden die Produktionsfenster schneller.

Dies sollte zu einem anderen Verhalten führen:

  1. Sich entwickeln
  2. Prüfung
  3. Nehmen Sie Ihre Änderungen an einem Staging-Server vor
  4. Erst dann schnell zur Produktion und Bereitstellung dort (genau wie auf dem Staging-Server)
11
Nils

Die Arbeit an einer Produktionsmaschine mit einem einfachen Root-Konto ist niemals eine gute Idee.

Haben Sie ein Konto mit vollständigen Sudo-Berechtigungen. Ermöglicht nicht das Speichern der Sudo-Sitzung. Verbieten Sie Sudo su. Verwenden Sie dafür ein separates Passwort (keines, das Sie für Ihre Entwicklungsmaschine haben). Wahrscheinlich Tweak Sudo, um die Produktionsidentität der Shell zu benachrichtigen, bevor der Befehl ausgeführt wird (über Alias).

Es wird versehentliche Fehler ziemlich schwer machen. Und rote Eingabeaufforderung tut nie weh.

9

Ich habe mich für die rote Prompt-Idee entschieden und fand es ziemlich mühsam, Arbeitscode für .bashrc Zu finden.

Hier ist meine Version, die bereit ist, in .bashrc - https://github.com/RichVel/nicer-bash-Prompt aufgenommen zu werden. Es wird vollständig vom Hostnamen gesteuert. Solange Sie ein geeignetes Muster für Produktionshostnamen haben (z. B. xyprod01, xyprod02 Usw.), funktioniert es gut und Sie können dasselbe .bashrc In allen Umgebungen.

Es sieht aus wie das:

screenshot of red Prompt

Dadurch wird eine schönere Bash-Eingabeaufforderung erstellt, einschließlich einer roten Eingabeaufforderung auf Produktionshosts. Außerdem werden der aktuelle Git-Zweig und die letzten beiden Verzeichnisse in $ PWD angezeigt. Es wird darauf geachtet, die Eingabeaufforderungsanzeige nicht zu beschädigen, wenn Sie in Bash Strg/R (Rückwärtssuche) ausführen.

Enthält auch eine optionale Funktion zum Synchronisieren Ihres Bash-Verlaufs über alle Terminalfenster hinweg in Anlehnung an diese Antwort . Das ist schön, aber nicht jeder will es, also ist es standardmäßig deaktiviert.

8
RichVel

Obwohl ich nicht weiß, wie Ihr IT-Setup aussieht, besteht eine Lösung, die möglicherweise effektiv ist, darin, einen speziellen Raum zu haben, in den Sie als Root zu SSH auf Produktionsservern wechseln müssen. Wenn Sie über ein Rechenzentrum verfügen, kann dies der Serverraum selbst sein. Ein separater physischer Standort, von dem aus keine „normale“ Arbeit ausgeführt wird, dient jedoch als ständige Erinnerung daran, dass Sie auf Produktionsmaschinen zugreifen.

5
Kyle Cronin

Wenn ich mich bei einer Produktionsmaschine anmelde, wird in einem Absatz darauf hingewiesen, dass es sich um eine Produktionsmaschine handelt, sowie eine kurze Liste mit Richtlinien. Es gibt eine Nummer, die ich für UNIX-Support anrufen kann, wenn ich nicht glaube, dass ich meine Aufgabe alleine sicher ausführen kann, eine Erinnerung, dass das Sprengen einer Produktionsmaschine mich meinen Job kosten kann, und eine Erinnerung, dass alles, was ich tue, protokolliert wird.

edit: Ich arbeite in der Transportbranche.

4
Basil

Nur eine Optimierung der obigen Vorschläge. Ich verwende CDE als Unix-Desktop und alle Produktionssysteme, auf die ich über ein Menü in .dt/dtwmrc zugreife. Auf allen Entwicklungs- und UAT-Systemen behalte ich mein normales Farbschema bei, aber auf Produktsystemen stelle ich das Terminal auf einen roten Hintergrund ein. Ich mag den Look nicht, aber genau darum geht es.

eta - vermisste Karols Vorschlag, im Grunde dasselbe zu tun

4
Wudang

Folgendes habe ich auf meinem Mac getan: Für jeden Server füge ich einen Eintrag in meiner ~/.ssh/config-Datei hinzu, z.

Host app13
    HostName server.example.com
    User tom
    PermitLocalCommand yes
    LocalCommand osascript %d/bin/change_terminal_colours.scpt 12 35 35

Dieses Applescript wird ausgelöst, sobald die SSH-Sitzung eingerichtet ist. Die Hintergrundfarbe des Terminals wird auf die angegebenen RGB-Werte gesetzt (oder auf die Standardeinstellungen zurückgesetzt, wenn keine Farbwerte angegeben sind). Der möglicherweise schwierige Teil besteht darin, das Ende der SSH-Sitzung abzufangen, um die Farben auf die Standardeinstellungen zurückzusetzen. Zu diesem Zweck habe ich das folgende Shell-Skript als ~/bin/ssh erstellt, um den Standardbefehl ssh zu überschreiben. Dies fängt im Wesentlichen alle Aufrufe des SSH-Befehls ab und umschließt sie. Ich habe versucht, Aliasing und Funktionen zu verwenden, aber diese Lösung hat am besten funktioniert:

#!/bin/bash
/usr/bin/ssh [email protected]
osascript ~/bin/change_terminal_colours.scpt

Hier ist die Quelle für das Skript change_terminal_colours.scpt. Legen Sie dies auch in Ihr ~/bin-Verzeichnis:

on run argv
    tell application "Terminal"
        # NOTE: Color values range from 0 to 65535.
        if (count of argv) > 0 then
            set backgroundColor to {(item 1 of argv) * 256, (item 2 of argv) * 256, (item 3 of argv) * 256}
        else
            set backgroundColor to background color of default settings
        end if

        try
            set background color of (selected tab of front window) to backgroundColor
        end try
    end tell
end run

Ich habe diese Lösung vor einer Woche geschrieben und benutze sie seitdem. Ich hoffe, andere finden es wertvoll. Ich finde, es funktioniert besser als jede der Lösungen, die ich von Googling gefunden habe.

3
TomWardrop

Meine Gruppe verwendet visionapp Remote Desktop (2017 bearbeiten: Es sieht so aus, als ob das Produkt umbenannt wurde, aber ich denke, es ist dasselbe) sowohl für RDP auf Windows-Computern als auch für SSH auf Linux-Computern. Unsere Verbindungen sind nach Ebenen in Ordnern gruppiert und mit einer Registerkartenfarbe versehen.

Also wann immer wir eine Produktionsverbindung eröffnen - bam! - Wir bekommen ein leuchtendes Rot im Gesicht:

enter image description here

Es ist definitiv eine lohnende Investition, wenn Sie ein großer Windows-Shop sind und sich stark auf RDP verlassen. Ich wette, es gibt andere großartige Tools, wenn Sie nur SSH benötigen.

3
Nick Chammas

Einfache Antwort? Ändern Sie die Farbe Ihrer Shell in der Shell-Konfiguration in Rot. Es wird absolut offensichtlich und einfach einzurichten sein. Darüber hinaus verschwindet es im Gegensatz zu Server-Headern nicht, nachdem Sie einige Befehle eingegeben haben.

3
donatJ

In PuTTY können Sie den Titel des Fensters für eine bestimmte gespeicherte Sitzung in einen anderen als den Standardtitel ändern. Dies bleibt immer im Fenster, egal was Sie im Fenster tun. Dies wird auch in der Taskleiste angezeigt.

Erweitern Sie Fenster und klicken Sie auf Verhalten. Geben Sie etwas in den Fenstertitel ein wie:

  * * * * * * * * * * * * PRODUCTION  * * * * * * * * * * * * PRODUCTION  * * * * * * * * * * * *
3
sjbotha

Eine andere Möglichkeit, um zu verdeutlichen, dass Sie sich in einem Produktionssystem befinden, besteht darin, die TMOUT-Funktion (Autologout) im Produktionssystem festzulegen.

2
Peter K.

Aufgrund der enormen regulatorischen Anforderungen während der Arbeit in einer bestimmten Branche werden hier alle Aktivitäten für zukünftige Streitigkeiten protokolliert. Aus diesem Grund ist der Zugriff ebenfalls eingeschränkt und Sie müssen einige "Menüs" durchgehen, mit denen Sie als einer von wenigen vertrauenswürdigen Benutzern auf einen Computer zugreifen können. Bei der Einrichtung dieses Systems muss die Person bewusst die PRODUKTION oder die QS-Umgebung auswählen und dann den Host, auf den sie zugreifen möchte, aus der Liste auswählen. Dies hat auch eine Zeitüberschreitung, sodass Sie nicht in die Situation geraten, sich bei einem Produkt-Host anzumelden und zu vergessen, in welcher Umgebung Sie sich am nächsten Tag befinden.

2
Alexandra

ich benutze die Prompt-Änderungen wie andere hier. Es ist schnell und böse, funktioniert aber gut für meine Zwecke. Es gibt Ihnen Rot als normaler Benutzer auf einem Produktionssystem und rotes Großbuchstaben als Wurzel auf einem Produktsystem.

Es könnte in weniger Zeilen geschrieben werden, aber ich mache es so, damit ich die anderen 2 Fälle (nicht root-non prod) optimieren kann, wenn ich möchte.

Wir gehen davon aus, dass ein Produktionsserver kein DHCP verwendet, aber Sie können jede andere Methode verwenden, um herauszufinden, ob es sich um ein Produktsystem handelt. Was auch immer für dich funktioniert.


productionSrv=1
grep -qi bootproto=dhcp /etc/sysconfig/network-scripts/ifcfg-*
if [ "$?" -eq 0 ]; then
    productionSrv=0
fi
hostName=`hostname`
userName=`whoami`
if [ $userName == "root" ]
then
    if [ "$productionSrv" == 1 ]
    then
        hostName=`echo $hostName | tr [:lower:] [:upper:]`
        PS1='[\e[0;31m]\u[\e[0m]@[\e[0;31m]$hostName[\e[0m][$?][\e[0;31m][\W][\e[0m][\e[0;31m]\$[\e[0m]: '
    else
        PS1='[\e[0;31m]\u[\e[0m]@[\e[0;35m]$hostName[\e[0m][$?][\e[0;31m][\W][\e[0m][\e[0;31m]\$[\e[0m]: '
    fi
    PATH=$PATH:/sbin/
else
    if [ "$productionSrv" == 1 ]
    then
        PS1='[\e[0;32m]\u[\e[0m]@[\e[0;31m]$hostName[\e[0m][$?][\e[0;31m][\W][\e[0m][\e[0;32m]\$[\e[0m]: '
    else
        PS1='[\e[0;32m]\u[\e[0m]@[\e[0;35m]$hostName[\e[0m][$?][\e[0;31m][\W][\e[0m][\e[0;32m]\$[\e[0m]: '
    fi
fi
2
Sirex

Abgesehen von einer eindeutigen Eingabeaufforderung (die anscheinend die zuverlässigste Lösung ist) können Sie für Ihre SSH-Sitzungen unterschiedliche Profile verwenden, wenn Sie sich von derselben Workstation aus anmelden.

Zum Beispiel habe ich rote Hintergründe für Produktionssysteme, grüne für die Entwicklung, blaue für die Infrastruktur (Router usw.) und weiße für die lokale Workstation.

Wenn Sie GNOME verwenden, können Sie auf einfache Weise eine SSH-Verbindung mit Ihrem gewünschten Profil herstellen:

gnome-terminal --window-with-profile=production -e 'ssh [email protected]'

Der Hauptnachteil - es ist clientseitig, daher ist eine spezielle Eingabeaufforderung immer noch die beste Wahl, wenn Sie von verschiedenen Standorten aus auf Server zugreifen.

2
Karol J. Piczak

im .bashrc/.bash_profile

echo " THIS IS THE PRODUCTION SYSTEM. BE RESPONSIBLE.. " .. 
1
Jay D

Haben Sie ein anderes (möglicherweise längeres) Root-Passwort auf den Produktionsmaschinen.

Sie können einen speziellen Sudo (oder Sudo-Wrapper) erstellen, sodass eine spezielle Nachricht für die Produktionsmaschinen ausgegeben wird.

1
mdpc

Hier haben wir Standard-PuTTY-Konfigurationen, um die Vordergrundfarbe des gesamten Bildschirms hellrosa zu machen.

  • Produkt: leuchtend rosa.
  • Regression: hellgrün
  • Modell: hellblau
  • Dev: normal

Es funktioniert ziemlich gut, aber ich mag einige der anderen Ideen hier.

  • Pro: Es sei denn, etwas verwendet nicht die Vordergrundfarbe. JEDER Produktbildschirm ist hellrosa.
  • Con: Wenn Sie etwas anderes als die Standard-PuTTY-Konfiguration durchlaufen, hat dies natürlich nichts zu tun.
1
user606723