AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / server / Perguntas / 805333
Accepted
HBruijn
HBruijn
Asked: 2016-09-27 03:54:41 +0800 CST2016-09-27 03:54:41 +0800 CST 2016-09-27 03:54:41 +0800 CST

Linux: configurado para administrador de sistema remoto

  • 772

De vez em quando, recebo uma solicitação estranha para fornecer suporte remoto, solução de problemas e/ou ajuste de desempenho em sistemas Linux.

Muitas vezes, empresas maiores já possuem procedimentos bem estabelecidos para fornecer acesso remoto a vendedores/fornecedores e eu só preciso cumpri-los. (Por bem ou por mal.)

Por outro lado, pequenas empresas e indivíduos invariavelmente recorrem a mim para instruí-los sobre o que precisam fazer para me estabelecer. Normalmente, seus servidores estão conectados diretamente à Internet e as medidas de segurança existentes consistem nos padrões de qualquer distribuição Linux.

Quase sempre vou precisar de acesso de nível raiz e quem irá configurar o acesso para mim não é um administrador de sistema especialista. Não quero a senha de root e também tenho certeza de que minhas ações não serão maliciosas, mas que instruções razoavelmente simples devo dar para:

  • configurar uma conta e trocar credenciais com segurança
  • configurar acesso root (sudo)
  • restringir o acesso à minha conta
  • fornecer trilha de auditoria

(E sim, estou ciente e sempre aviso os clientes que, assim que tiver acesso de administrador, ocultar qualquer ação maliciosa é trivial, mas vamos supor que não tenho nada a esconder e participo ativamente da criação de uma trilha de auditoria.)

O que pode ser melhorado nas etapas abaixo?


Meu conjunto de instruções atual:

configurar uma conta e trocar credenciais com segurança

Forneço um hash de senha e peço que minha conta seja configurada com essa senha criptografada, para que não precisemos transmitir uma senha de texto não criptografado, serei o único que sabe a senha e não começaremos com uma senha fraca previsível.

sudo useradd -p '$1$********' hbruijn

Forneço uma chave pública SSH (par de chaves específico por cliente) e peço que configurem minha conta com essa chave:

sudo su - hbruijn
mkdir -p ~/.ssh
chmod 0700 ~/.ssh
echo 'from="10.80.0.0/14,192.168.1.2" ssh-rsa AAAAB3NzaC1y***...***== hbruijn@serverfault' >> ~/.ssh/authorized_keys
chmod 0600 ~/.ssh/authorized_keys 

configurar acesso root (sudo)

Peço ao cliente para configurar o sudo para mim com sudo sudoeditou usando seu editor favorito e anexar a /etc/sudoers:

hbruijn ALL=(ALL) ALL

restringir o acesso à minha conta

Normalmente, o cliente ainda permite logins baseados em senha e peço que adicionem as duas linhas a seguir /etc/ssh/sshd_configpara, pelo menos, restringir minha conta apenas a chaves SSH:

Match user hbruijn
PasswordAuthentication no

Dependendo do cliente, rotearei todo o meu acesso SSH por meio de um único bastion host para sempre fornecer um único endereço IP estático (por exemplo, 192.168.1.2) e/ou fornecer o intervalo de endereços IP que meu ISP usa (por exemplo, 10.80.1.2). 0,0/14). O cliente pode precisar adicioná-los a uma lista de permissões de firewall se o acesso SSH for restrito (na maioria das vezes, o ssh não é filtrado).

Você já viu esses endereços IP como a from=restrição no ~.ssh/authorized_keysarquivo que limita os hosts dos quais minha chave pode ser usada para acessar seus sistemas.

fornecer trilha de auditoria

Até agora nenhum cliente me pediu isso, e eu não fiz nada específico além do seguinte para cobrir minha bunda:

Eu tento usar consistentemente sudocom comandos individuais e tento evitar o uso de sudo -iou sudo su -. Eu tento não usar, sudo vim /path/to/file mas usar sudoeditem vez disso.

Por padrão, todas as ações privilegiadas serão registradas no syslog (e /var/log/secure):

Sep 26 11:00:03 hostname sudo:  hbruijn : TTY=pts/0 ; PWD=/home/hbruijn ; USER=jboss ; COMMAND=sudoedit /usr/share/jbossas/domain/configuration/domain.xml  
Sep 26 11:00:34 hostname sudo:  hbruijn : TTY=pts/0 ; PWD=/home/hbruijn ; USER=root ; COMMAND=/usr/bin/tail -n 5 /var/log/messages

Quase desisti de personalizar meus ambientes de trabalho, a única coisa que realmente faço é definir o seguinte em meu ~/.bash_profilehistórico bash crescente e incluir carimbos de data/hora:

export HISTSIZE=99999999999
export HISTFILESIZE=99999999999
export HISTIGNORE="w:ls:ls -lart:dmesg:history:fg"
export HISTTIMEFORMAT='%F %H:%M:%S  '
shopt -s histappend
linux security root sudo audit
  • 4 4 respostas
  • 2621 Views

4 respostas

  • Voted
  1. Best Answer
    faker
    2016-09-27T04:34:53+08:002016-09-27T04:34:53+08:00

    A única coisa que vem à mente seria adicionar --expiredateà adduserchamada.
    Com isso o cliente fica sabendo que seu acesso expirará automaticamente em uma data fixa.

    Ele ainda precisa confiar em você, pois você tem acesso root e ainda pode remover o sinalizador de expiração.

    • 24
  2. user9517
    2016-09-27T08:29:40+08:002016-09-27T08:29:40+08:00

    Você pode gravar suas sessões com o utilitário script(1) .

    $ script session.log
    Script started, file is session.log
    $ ls
    file1  session.log
    exit
    Script done, file is session.log
    

    então tudo está em session.log.

    • 15
  3. zwol
    2016-09-27T07:51:17+08:002016-09-27T07:51:17+08:00

    Como você já está efetuando login com uma chave pública SSH, seria um pouco complicado se você não fornecesse um hash de senha; em vez disso, diga a eles para usar adduser --disabled-password(equivalentemente, useradd -p '!', eu acho), o que é efetivamente equivalente a PasswordAuthentication noessa conta, além de não haver chance de alguém bisbilhotar seu e-mail forçar o hash da senha e fazer login como você.

    • 7
  4. Jens Timmerman
    2016-10-01T01:12:15+08:002016-10-01T01:12:15+08:00

    Por que fornecer uma senha, quando você vai usar chaves públicas/privadas.

    As chaves públicas devem ser compartilhadas, então é isso que você deve usar para trocar credenciais com segurança, não senhas com hash.

    sudo useradd --disabled-password hbruijn

    Ao enviar sua chave pública, verifique a impressão digital em um segundo canal, como um telefonema, para que você saiba que ninguém a alterou no caminho.

    Como você não terá uma senha agora para usar o sudo, também precisará alterar sua linha no arquivo sudoers para

    hbruijn ALL=(ALL) NOPASSWD:ALL

    Se você não se sente confortável em não ter senha para o sudo e realmente deseja uma senha, ainda não há necessidade de enviar sua senha com hash, deixe a conta ser criada sem senha, defina sua chave pública e, assim que sua conta for configurado, você pode fazer login por ssh e executar passwdpara definir sua própria senha.

    • 2

relate perguntas

  • Protegendo um novo servidor Ubuntu [fechado]

  • (Soft) RAID 6 no Ubuntu 7.10, devo migrar para 8.10?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Você pode passar usuário/passar para autenticação básica HTTP em parâmetros de URL?

    • 5 respostas
  • Marko Smith

    Ping uma porta específica

    • 18 respostas
  • Marko Smith

    Verifique se a porta está aberta ou fechada em um servidor Linux?

    • 7 respostas
  • Marko Smith

    Como automatizar o login SSH com senha?

    • 10 respostas
  • Marko Smith

    Como posso dizer ao Git para Windows onde encontrar minha chave RSA privada?

    • 30 respostas
  • Marko Smith

    Qual é o nome de usuário/senha de superusuário padrão para postgres após uma nova instalação?

    • 5 respostas
  • Marko Smith

    Qual porta o SFTP usa?

    • 6 respostas
  • Marko Smith

    Linha de comando para listar usuários em um grupo do Windows Active Directory?

    • 9 respostas
  • Marko Smith

    O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL?

    • 3 respostas
  • Marko Smith

    Como determinar se uma variável bash está vazia?

    • 15 respostas
  • Martin Hope
    Davie Ping uma porta específica 2009-10-09 01:57:50 +0800 CST
  • Martin Hope
    kernel O scp pode copiar diretórios recursivamente? 2011-04-29 20:24:45 +0800 CST
  • Martin Hope
    Robert ssh retorna "Proprietário incorreto ou permissões em ~/.ssh/config" 2011-03-30 10:15:48 +0800 CST
  • Martin Hope
    Eonil Como automatizar o login SSH com senha? 2011-03-02 03:07:12 +0800 CST
  • Martin Hope
    gunwin Como lidar com um servidor comprometido? 2011-01-03 13:31:27 +0800 CST
  • Martin Hope
    Tom Feiner Como posso classificar a saída du -h por tamanho 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent Como determinar se uma variável bash está vazia? 2009-05-13 09:54:48 +0800 CST

Hot tag

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve