137 votes

Comment faire pour qu'il soit évident que vous êtes sur un système de production ?

Quelques-uns d'entre nous dans mon entreprise ont un accès root sur les serveurs de production. Nous recherchons un bon moyen de rendre excessivement claire quand on s'est connecté.

Voici quelques idées que nous avons eues :

  • Un prompteur rouge vif
  • Répondez à une énigme avant d'obtenir un Shell.
  • Tapez un mot aléatoire avant d'obtenir un Shell.

Quelles sont les techniques que vous utilisez pour différencier les systèmes de production ?

3voto

TomWardrop Points 131

Voici ce que j'ai fait sur mon Mac. Pour chaque serveur, j'ajoute une entrée pour lui dans mon fichier ~/.ssh/config, par ex.

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

Cet Applescript est déclenché une fois que la session SSH est établie. Il définit la couleur d'arrière-plan du terminal selon les valeurs RVB fournies (ou revient à la valeur par défaut si aucune valeur de couleur n'est fournie). La partie potentiellement délicate est d'intercepter la fin de la session SSH pour remettre les couleurs par défaut. Pour cela, j'ai créé le Shell Shell suivant comme ~/bin/ssh afin de remplacer la commande ssh par défaut. Cela permet essentiellement d'intercepter et d'envelopper tout appel à la commande SSH. J'ai essayé d'utiliser l'aliasing et les fonctions, mais cette solution a fonctionné le mieux :

#!/bin/bash
/usr/bin/ssh $@
osascript ~/bin/change_terminal_colours.scpt

Voici la source de la change_terminal_colours.scpt script. Mettez-le aussi dans votre répertoire ~/bin :

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

J'ai rédigé cette solution il y a une semaine et je l'utilise depuis. J'espère que d'autres la trouveront utile. Je trouve qu'elle fonctionne mieux que toutes les solutions que j'ai trouvées en cherchant sur Google.

2voto

Karol J. Piczak Points 2328

Outre une invite unique (qui semble être la solution la plus fiable), si vous vous connectez à partir du même poste de travail, vous pouvez utiliser différents profils pour vos sessions SSH.

Par exemple, j'ai des fonds rouges pour les systèmes de production, verts pour le développement, bleus pour l'infrastructure (routeurs, etc.) et blancs pour le poste de travail local.

Si vous utilisez GNOME, il existe un moyen simple de lancer une connexion SSH avec le profil souhaité :

gnome-terminal --window-with-profile=production -e 'ssh root@production.example.com'

Le principal inconvénient est qu'il s'agit d'un système côté client, de sorte qu'une invite spéciale reste la meilleure solution si vous accédez à des serveurs depuis différents endroits.

2voto

Egil Points 13196

Une autre façon d'indiquer clairement que vous êtes sur un système de production consiste à activer la fonction TMOUT (autologout) sur le système de production.

2voto

Sirex Points 5377

J'utilise les changements d'invite comme d'autres ici. C'est rapide et désagréable mais cela fonctionne bien pour mes besoins. Cela vous donnera du rouge en tant qu'utilisateur normal sur un système de production, et du rouge en majuscules en tant que root sur un système de production.

Cela pourrait être écrit en moins de lignes mais je le fais comme ça pour pouvoir modifier les 2 autres cas (non root-non prod) si je le veux.

Nous partons du principe qu'un serveur de production n'utilise pas de DHCP, mais vous pouvez utiliser toute autre méthode pour déterminer s'il s'agit d'un système de production. La méthode qui vous convient le mieux.

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

2voto

Alexandra Points 121

En raison des nombreuses exigences réglementaires liées à l'exercice d'une activité dans un secteur particulier, les activités de chacun sont consignées pour éviter tout litige futur. Pour cette raison, l'accès est également restreint et vous devez passer par quelques "menus" qui vous permettent d'accéder à une machine en tant que l'un des quelques utilisateurs de confiance. En mettant en place ce système, la personne doit choisir consciemment l'environnement PRODUCTION ou QA et ensuite choisir l'hôte auquel elle veut accéder dans la liste. Ce système comporte également un délai d'attente afin d'éviter de se connecter à un hôte de production et d'oublier l'environnement dans lequel on se trouve le lendemain.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X