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 / 1093243
Accepted
cdauth
cdauth
Asked: 2022-02-10 21:18:39 +0800 CST2022-02-10 21:18:39 +0800 CST 2022-02-10 21:18:39 +0800 CST

Como restringir um usuário ao rbash ao fazer login via SSH

  • 772

Eu gostaria de restringir alguns usuários no meu servidor a apenas poderem executar determinados comandos. Para fazer isso, a abordagem mais comum que encontrei é usar rbash.

Embora eu possa encontrar muitos sites falando sobre rbash, estou tendo problemas para encontrar qualquer informação sobre como usá-lo corretamente. A abordagem mais comum que encontrei foi criar um link simbólico de /bin/rbashpara /bin/bash, definir o shell de login dos usuários restritos para /bin/rbashe, em seguida, definir um personalizado PATHno ~/.bash_profilediretório inicial do usuário.

No entanto, fiquei bastante chocado ao descobrir que, com essa configuração, os usuários ainda podem copiar arquivos para o servidor usando scpe podem até abrir um shell irrestrito usando ssh user@host -t bash! O que parece estar acontecendo é que o servidor SSH está passando o comando para o shell de login no servidor usando -c, então ssh user@host -t bashfaz com que o servidor execute /bin/rbash -c bash, o que funciona porque .bash_profileainda não foi executado para restringir o caminho. scpda mesma forma faz com que o servidor seja executado /bin/rbash -c scp.

Agora me deparei com a ForceCommanddiretiva de sshd. Esta diretiva basicamente sempre faz com que o comando configurado seja passado -cpara o shell de login, ignorando qualquer comando que o cliente tenha especificado. Portanto, se ForceCommandestiver definido como rbash, isso sempre executará o comando /bin/rbash -c rbashno servidor, independentemente de o cliente ter sido chamado com -t bashou como scpou qualquer outra coisa. Infelizmente, /bin/rbash -c rbashfaz com que o .bash_profilenão seja executado, então acabamos com um shell restrito, mas um normal PATH, então podemos simplesmente chamar bashlá para escapar dele.

O que eu gostaria de alcançar:

  • Não deve haver como evitar o shell restrito para usuários que se conectam via SSH
  • Idealmente, ainda seria possível executar comandos permitidos no shell restrito usandossh user@server permitted_command
  • A configuração não deve ser somente SSH, portanto, os usuários que efetuam login, por exemplo, no TTY, também devem ser restritos.
ssh
  • 0 0 respostas
  • 244 Views

0 respostas

  • Voted
  1. Best Answer
    cdauth
    2022-02-10T21:18:39+08:002022-02-10T21:18:39+08:00

    Depois de experimentar isso por um tempo, parece-me que a raiz do problema é que a segurança de rbashdepende de PATHser definida, mas na maioria das configurações PATHé definida depois que o SSH especifica seus comandos personalizados, enquanto precisa ser especificado antes de .

    Como solução, em vez de especificar /bin/rbash(link simbólico para /bin/basho shell de login), criei um script de shell /usr/local/bin/rbashe o usei como o shell de login. O script shell tem o seguinte conteúdo:

    #!/bin/bash -l
    export PATH=/usr/local/rbin
    exec /bin/bash -r "$@"
    

    Eu também experimentei com a SetEnvdiretiva do sshd e tentei definir o PATHlá. No entanto, achei essa solução menos prática porque ela define a configuração apenas para SSH, e também causava muitos erros durante a execução /etc/profiledo , pois os comandos usados ​​lá não foram encontrados. Além disso, parece haver o risco de que algumas outras diretivas sshd permitam que o cliente substitua certas variáveis ​​de ambiente novamente.

    • 0

relate perguntas

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