Como você torna óbvio que está em um sistema de produção?

135

Alguns de nós na minha empresa têm acesso root em servidores de produção. Estamos procurando uma boa maneira de deixar extremamente claro quando tivermos ssh'd em

Algumas ideias que tivemos são:

  • Aviso vermelho brilhante
  • Responda a um enigma antes de obter uma concha
  • Digite uma palavra aleatória antes de obter um shell

Quais são algumas técnicas que vocês usam para diferenciar sistemas de produção?

    
por Sionide21 19.10.2011 / 20:21

23 respostas

137

O prompt vermelho é uma boa ideia, que também uso.

Outro truque é colocar um grande aviso de arte ASCII no arquivo /etc/motd .
Ter algo parecido com isso quando você fizer login deve chamar sua atenção:

 _______ _    _ _____  _____   _____  _____            
|__   __| |  | |_   _|/ ____| |_   _|/ ____|     /\    
   | |  | |__| | | | | (___     | | | (___      /  \   
   | |  |  __  | | |  \___ \    | |  \___ \    / /\ \  
   | |  | |  | |_| |_ ____) |  _| |_ ____) |  / ____ \ 
   |_|  |_|  |_|_____|_____/  |_____|_____/  /_/    \_\


 _____  _____   ____  _____  _    _  _____ _______ _____ ____  _   _ 
|  __ \|  __ \ / __ \|  __ \| |  | |/ ____|__   __|_   _/ __ \| \ | |
| |__) | |__) | |  | | |  | | |  | | |       | |    | || |  | |  \| |
|  ___/|  _  /| |  | | |  | | |  | | |       | |    | || |  | | . ' |
| |    | | \ \| |__| | |__| | |__| | |____   | |   _| || |__| | |\  |
|_|    |_|  \_\____/|_____/ \____/ \_____|  |_|  |_____\____/|_| \_|


 __  __          _____ _    _ _____ _   _ ______ 
|  \/  |   /\   / ____| |  | |_   _| \ | |  ____|
| \  / |  /  \ | |    | |__| | | | |  \| | |__   
| |\/| | / /\ \| |    |  __  | | | | . ' |  __|  
| |  | |/ ____ \ |____| |  | |_| |_| |\  | |____ 
|_|  |_/_/    \_\_____|_|  |_|_____|_| \_|______|

Você pode gerar esse aviso em este site ou pode usar o figlet comando.

ComoNicholasSmithsugeriunoscomentários,vocêpoderiaapimentarcoisascomalgunsdragõesououtrosanimaisusandoocomandocowsay.

Em vez de usar o arquivo / etc / motd, você também pode chamar cowsay ou figlet no arquivo .profile .

    
por 19.10.2011 / 20:36
78

Não é a mesma coisa, mas este site recomenda que seus desenvolvedores usem um sombrero rosa ao fazer alterações nos sistemas de produção. Você provavelmente poderia ter uma regra semelhante para conectar-se a eles.

    
por 20.10.2011 / 06:58
50

O maior que usei é um esquema de nomenclatura discreta, em que os sistemas prod são nomeados obviamente diferentes das instâncias de teste / dev. Isso faz com que o prompt de estilo "Username @ Hostname:" seja visivelmente diferente. E por óbvio quero dizer mais do que apenas palavras diferentes, formatos diferentes também:

exemplo: PRD-WEB001 vs DEVEL-BOB-WEB001

Isso tem várias coisas:

  • O bloco extra-hibernado faz dele um conjunto de três, em vez de um conjunto de dois.
  • O primeiro do conjunto tem um tamanho diferente.
  • O tamanho geral dos nomes é nitidamente diferente, o que torna o espaçamento entre linhas de comando diferente entre si e outro texto na janela.

E o melhor de tudo, não requer configurações de terminal especiais para produção apenas para evitar erros Oops.

Na minha experiência, você quer algo que seja um lembrete constante de onde você está. Métodos de login como enigmas são bons por cerca de 10 segundos, até você esquecer qual janela é qual. Tudo o que é necessário é fazer um ls no diretório errado para rolar a sinistra bandeira de login, enterrar a janela do terminal em uma janela do navegador enquanto pesquisando algo, o alt-tab voltar para a janela errada e o caos acontecer. É melhor ter alguma sugestão visual constante, como um prompt de comando significativamente diferente.

    
por 19.10.2011 / 20:33
38

Uma coisa que você precisa ter em mente é que isso precisa ser um lembrete persistente, não apenas um indicador no momento do login. Muitas vezes, alguém terá vários shells correndo ao mesmo tempo em diferentes abas e se movendo entre eles. Alguns serão dev, alguma produção. Então, quando você está executando um comando, você precisa ter um indicador nesse ponto. Então, ter um prompt especial é o melhor método, na minha experiência, com uma barra de título / guia modificada sendo um bom complemento para encontrar facilmente a janela / guia correta.

Então, eu recomendo ter um prompt colorido (sendo o vermelho a escolha óbvia) e todas em maiúsculas para o nome do host, com comportamento semelhante para o usuário (privilegiado versus não privilegiado) como seu prompt. Alguns exemplos:

Geralmentealgocomo

setprompt="%{3[1;44m%}'whoami'@'hostname -s'#%{3[0m%} "' 

no seu arquivo de inicialização do shell. Este é para o azul. Substitua o 44 por 41 fir vermelho e 42 por verde. Outras cores e padrões selvagens disponíveis também .

    
por 19.10.2011 / 23:26
14

Estas são minhas sugestões:

1) Certifique-se de que a maioria dos comandos (rm, chown, chmod, /etc/init.d/*) no ambiente de produção exijam acesso sudo

2) Use PS1 / PS2 para indicar que o usuário está em um servidor Prod

bash-3.2$  export PS1="[\u@\h \W]\$ "

Isso mostrará o prompt de comando como

[sridhar@prodappserver901 conf]$

3) Se estiver usando clientes Putty / SSH, você sempre poderá configurar um perfil / cor de plano de fundo exclusivo para destacar os servidores de produção.

    
por 19.10.2011 / 20:50
13

Apenas considere que sua segunda e terceira ideias ajudam durante a conexão inicial, mas não têm valor quando você tem vários terminais abertos e se movem de um para outro. A idéia do sysadmin1138 de usar nomes é boa quando pode ser aplicada, mas há muitos casos em que não pode ser.

A única coisa que eu acho valer a pena é um prompt colorido. Eu gosto de verde para dev / testing, vermelho para produção e azul para máquinas na DMZ. Dessa forma, mesmo que eu tenha duas máquinas com o mesmo nome (em redes diferentes), como ao preparar uma máquina de substituição, ainda posso facilmente saber em qual delas estou.

    
por 19.10.2011 / 23:16
11

O prompt de comando vermelho / especial é bom. Outra coisa pode ser um auto-logout mais rápido nessas máquinas usando a variável TMOUT. Se você abriu muitas janelas, as de produção desaparecerão mais rapidamente.

Isso deve levar a um comportamento diferente:

  1. Desenvolver
  2. Teste
  3. Faça as alterações em um servidor de teste
  4. Só então faça um traço rápido na produção e implante lá (exatamente como você fez no servidor de teste)
por 19.10.2011 / 21:06
9

Trabalhar em uma máquina de produção com uma conta root simples nunca é uma boa ideia.

Tenha uma conta com permissões completas de sudo. Não permite salvar sessão sudo. Proibir sudo su. Use uma senha separada para ela (não uma para sua máquina dev). Provavelmente, ajuste o sudo para notificar sobre a identidade de produção do shell antes de executar o comando (via alias).

Isso fará com que erros acidentais sejam muito difíceis. E alerta vermelho nunca dói.

    
por 20.10.2011 / 04:44
8

Eu fui com a idéia de prompt vermelho, e achei bastante tedioso para encontrar o código de trabalho para .bashrc .

Então aqui está minha versão, pronta para ser incluída no .bashrc - link . É completamente controlado pelo nome do host, portanto, desde que você tenha um padrão adequado para nomes de host de produção (digamos xyprod01 , xyprod02 , etc), ele funcionará bem e você poderá usar o mesmo .bashrc em todos os ambientes. p>

Parece assim:

Issocriaumpromptbashmaisagradável,incluindopromptvermelhonoshostsdeprodução-tambémmostraaramificaçãogitatualeosúltimos2diretóriosem$PWD.ElecuidaparaevitaratrapalharaexibiçãodopromptaoexecutarCtrl/R(pesquisainversa)nobash.

Tambémincluiumrecursoopcionalparasincronizarseuhistóricobashemtodasasjanelasdeterminal,aolongodaslinhasde esta resposta . Isso é bom, mas nem todo mundo quer, por isso está desativado por padrão.

    
por 17.02.2013 / 18:33
5
Embora eu não saiba como é sua configuração de TI, uma solução que pode ser eficaz seria ter uma sala especial que você precisa ir para o SSH em servidores de produção como raiz. Se você tem um datacenter, isso pode ser a própria sala do servidor, mas ter uma localização física separada, a partir da qual o trabalho "normal" não é feito, seria um lembrete constante de que você está acessando máquinas de produção.

    
por 20.10.2011 / 05:19
4

Apenas ajuste as sugestões acima. Eu uso o CDE como meu desktop unix e todos os sistemas de produção que eu acesso através de um menu em .dt / dtwmrc. Em todos os sistemas dev e UAT eu mantenho meu esquema de cores normal, mas em sistemas prod eu configuro o terminal para ter um fundo vermelho. Eu não gosto da aparência, mas esse é o ponto.

eta - faltou Karol sugerindo basicamente a mesma coisa

    
por 20.10.2011 / 09:27
4

Quando entro em uma máquina de produção, recebo um parágrafo avisando que é uma máquina de produção, bem como uma pequena lista de diretrizes. Há um número que posso chamar para suporte UNIX se eu não achar que posso realizar minha tarefa sozinho com segurança, um lembrete de que explodir uma máquina de produção pode me custar meu trabalho e um lembrete de que tudo que faço é registrado.

edit: Eu trabalho no setor de transportes.

    
por 20.10.2011 / 18:15
3

No PuTTY, você pode alterar o título da janela para algo diferente do padrão para uma sessão salva específica. Isso sempre permanece na janela, não importa o que você faça dentro da janela. Isso também aparece na barra de tarefas.

Expanda a janela e clique em Comportamento. Digite algo no título da janela como:

  * * * * * * * * * * * * PRODUCTION  * * * * * * * * * * * * PRODUCTION  * * * * * * * * * * * *
    
por 20.10.2011 / 17:00
3

Resposta simples? Mude a cor do seu shell para vermelho na configuração do shell. Será óbvio e simples de configurar. Não apenas isso, mas ao contrário dos cabeçalhos de servidor, ele não desaparece depois que você digita alguns comandos.

    
por 21.10.2011 / 07:07
3

Aqui está o que eu fiz no meu Mac. Para cada servidor, eu adiciono uma entrada para ele no meu arquivo ~ / .ssh / config, por exemplo.

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

Este Applescript é acionado assim que a sessão SSH é estabelecida. Ele define a cor de fundo do terminal para os valores RGB fornecidos (ou de volta ao padrão, se nenhum valor de cor for fornecido). A parte potencialmente complicada é interceptar o final da sessão SSH para definir as cores de volta aos padrões. Para isso, criei o seguinte script de shell como ~ / bin / ssh para substituir o comando ssh padrão. Isso essencialmente intercepta e encapsula todas as chamadas para o comando SSH. Eu tentei usar aliasing e funções, mas essa solução funcionou melhor:

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

Aqui está a fonte do script change_terminal_colours.scpt . Coloque isso no seu diretório ~ / bin também:

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

Eu escrevi esta solução há uma semana e tenho usado desde então. Espero que os outros achem valioso. Acho que funciona melhor do que qualquer uma das soluções que encontrei no Google.

    
por 03.02.2014 / 05:29
3

Meu grupo usa o visionapp Remote Desktop (edição de 2017: parece que o produto recebeu renomeado, mas acho que é o mesmo) para RDP em máquinas Windows e SSH para Linux. Nossas conexões são agrupadas em pastas por camada e atribuídas a uma cor de guia.

Então sempre que abrimos uma conexão de produção - bam! - nós temos um pouco de vermelho brilhante na nossa cara:

É definitivamente um investimento que vale a pena se você for uma grande loja do Windows e confiar muito no RDP. Aposto que existem outras ótimas ferramentas se tudo que você precisa é de SSH.

    
por 20.10.2011 / 22:51
2

Além de um prompt exclusivo (que parece ser a solução mais confiável), se você estiver efetuando login a partir da mesma estação de trabalho, poderá usar perfis diferentes para suas sessões SSH.

Por exemplo, tenho planos de fundo vermelhos para sistemas de produção, verde para desenvolvimento, azul para infraestrutura (roteadores etc.) e branco para estação de trabalho local.

Se você usa o GNOME, existe uma maneira fácil de ativar uma conexão SSH com seu perfil desejado:

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

A principal desvantagem - é do lado do cliente, portanto, uma solicitação especial ainda é sua melhor aposta se você estiver acessando servidores de diferentes locais.

    
por 19.10.2011 / 22:01
2

Outra maneira de deixar claro que você está em um sistema de produção é definir o recurso TMOUT (autologout) no sistema de produção.

    
por 20.10.2011 / 01:48
2

Devido aos vastos requisitos regulamentares, enquanto trabalhamos em uma indústria específica, aqui as atividades de todos são registradas em qualquer disputa futura. Uma vez que, o acesso também é restrito e você tem que passar por alguns "menus" que permitem que você acesse uma máquina como um dos poucos usuários confiáveis. Ao configurar este sistema, a pessoa deve escolher conscientemente o ambiente de PRODUÇÃO ou QA e, em seguida, escolher o host que deseja acessar na lista. Isso também tem um período de tempo limite para que você não entre em uma situação de login em um host de produção e esqueça o ambiente no qual você está no dia seguinte.

    
por 20.10.2011 / 18:20
2

eu uso as mudanças de prompt como outras aqui. É rápido e desagradável, mas funciona bem para os meus propósitos. Ele lhe dará vermelho como usuário normal em um sistema de produção e maiúsculas vermelhas como root em um sistema de produção.

Poderia ser escrito em menos linhas, mas eu faço assim para que eu possa ajustar os outros 2 casos (non-root-non-prod) se eu quiser.

Nós trabalhamos na suposição de que um servidor de produção não usa DHCP, mas você pode usar qualquer outro método para trabalhar se for um sistema de produção. Tudo o que funciona para você.

%pr_e%

    
por 20.10.2011 / 09:27
1

Tenha uma senha de root diferente (talvez maior) nas máquinas de produção.

Você pode criar um sudo especial (ou wrapper sudo), de forma que uma mensagem especial seja enviada para as máquinas de produção.

    
por 19.10.2011 / 20:45
1

Aqui, temos configurações de putty padrão para tornar a cor de primeiro plano de toda a tela como rosa brilhante.

  • Prod: rosa brilhante.
  • Regressão: verde claro
  • Modelo: azul claro
  • Dev: normal

Funciona muito bem, mas eu gosto de algumas das outras ideias aqui.

  • Pro: a menos que algo não use a cor de primeiro plano ..., EVERY prod screen é rosa brilhante.
  • Con: Obviamente, se você ssh através de algo diferente do padrão putty config isso não faz nada embora.
por 20.10.2011 / 17:04
1

no .bashrc / .bash_profile

echo " THIS IS THE PRODUCTION SYSTEM. BE RESPONSIBLE.. " .. 
    
por 20.10.2011 / 21:04

Tags