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 / 1144199
Accepted
wecx
wecx
Asked: 2023-09-22 01:11:35 +0800 CST2023-09-22 01:11:35 +0800 CST 2023-09-22 01:11:35 +0800 CST

Como evito que os usuários mexam em sua própria pasta .ssh?

  • 772

Estou administrando um servidor RedHat onde os usuários fazem login através de SSH com autenticação baseada em chave privada/pub.

Eu gostaria de evitar que eles alterem/excluam/chmoding acidentalmente o conteúdo de suas pastas ~/.ssh . Alguns deles já modificaram recursivamente 777-chmode toda a sua própria pasta pessoal porque “era mais fácil compartilhar arquivos com colegas dessa maneira” e se esfaquearam no pé.

Alguma ideia de como posso conseguir isso? De preferência com sistema de permissão Linux padrão.

permissions
  • 4 4 respostas
  • 2665 Views

4 respostas

  • Voted
  1. Best Answer
    symcbean
    2023-09-22T01:21:54+08:002023-09-22T01:21:54+08:00

    A resposta curta é que você não pode.

    O SSH é muito exigente quanto às permissões e não brinca com arquivos que não lhe agradam. Além disso, os usuários ssh_configsão analisados ​​antes da configuração de todo o sistema.

    Dito isto, pode ser possível colocar os arquivos em outro lugar e montar o diretório como um sistema de arquivos somente leitura $HOME/.sshpara cada usuário. (É possível - mas não sei como o ssh e as ferramentas associadas tratariam isso).

    Alguns deles já modificaram recursivamente 777-chmoded toda a sua própria pasta pessoal

    Então você tem problemas muito maiores de SEGURANÇA e treinamento.

    • 21
  2. HBruijn
    2023-09-22T02:01:07+08:002023-09-22T02:01:07+08:00

    É difícil proteger os usuários de sua própria ignorância e incompetência.

    Mas dependendo de quanto você precisa permitir que seus usuários gerenciem a si mesmos e quanto você gerencia para eles: você pode configurar o sshd para procurar chaves em um local alternativo fora de seu diretório inicial e em outro lugar que não seja ~/.ssh/authorized_keys.

    Comando de Chaves Autorizadas

    Uma solução relativamente complexa é a diretiva que, em vez de depender de arquivos autorizados_keys, especifica um programa a ser usado para pesquisar as chaves públicas do usuário, por exemplo:/etc/ssh/sshd_config AuthorizedKeysCommand

    • um diretório LDAP

    • um banco de dados

    • um serviço web (trivial)

    • ou quando seus nomes de usuário são idênticos aos nomes de usuário do Github, você pode permitir que os usuários se autentiquem com os pares de chaves que eles carregaram lá:

      AuthorizedKeysCommand /usr/bin/curl https://github.com/%u.keys
      

    Conforme mencionado nesta resposta ; você precisará criar uma política SELinux adequada para AuthorizedKeysCommand, pois ela será bloqueada pelas políticas padrão.

    Adoro essa abordagem, pois ela pode resolver muitos problemas relacionados ao gerenciamento de chaves autorizadas: adiciona gerenciamento centralizado, elimina o problema do ovo e da galinha de obter chaves autorizadas para servidores quando você deseja desabilitar a autenticação de senha no ssh e muito mais.
    Ele aproveita o fato de que as chaves públicas não são particularmente sensíveis (ao contrário das chaves privadas associadas), portanto centralizar seu gerenciamento não adiciona risco IMHO e provavelmente até melhora seus recursos de controle e relatórios.

    Arquivo de chaves autorizadas

    Um pouco menos complexo é armazenar chaves em um diretório fora de seu diretório inicial. Por exemplo, use /etc/ssh/<username>(substituindo <username>pelo nome de usuário real). Este diretório deve ter 755 permissões e pertencer ao usuário. Mova o authorized_keysarquivo para ele. O arquivoauthorized_keys ainda deve ter permissões 644 e pertencer ao usuário.

    Em /etc/ssh/sshd_configajustar a AuthorizedKeysFileconfiguração

    AuthorizedKeysFile    /etc/ssh/%u/authorized_keys
    

    E reinicie o daemon ssh

    • 15
  3. marcelm
    2023-09-22T18:41:31+08:002023-09-22T18:41:31+08:00

    A melhor solução que consigo pensar é criar .sshe ser authorized_keysde propriedade do root.

    .ssh/authorized_keys de propriedade da raiz

    O SSH é exigente com permissões, mas não sem razão. Primeiro, requer que o próprio usuário tenha acesso de leitura authorized_keys(o que requer acesso de leitura a todos os diretórios pai). Em segundo lugar, ele nega acesso se qualquer usuário que não seja o próprio usuário ou root tiver acesso de gravação a /home, .sshou authorized_keys. Isso não permite o+we g+wpara um grupo que contém outros usuários.

    Esta configuração funciona para mim, o usuário pode fazer login:

    drwxr-xr-x 19 root root 4096 Sep 22 11:24 /
    drwxr-xr-x  3 root root 4096 Sep 22 11:19 /home/
    drwx------ 14 test test 4096 Sep 22 11:44 /home/test/
    drwxr-x---  2 root test 4096 Sep 22 11:42 /home/test/.ssh/
    -rw-r--r--  1 root test   98 Sep 22 11:36 /home/test/.ssh/authorized_keys
    

    Como .sshe authorized_keyssão de propriedade do root, o usuário não pode alterar as permissões deles ou removê-los. Eles também não podem editar seu próprio authorized_keysarquivo.

    Se quiser permitir que o usuário edite seus arquivos authorized_keys, você pode adicionar permissões de gravação em grupo. Isso requer que o testgrupo não tenha outros membros além testdele mesmo:

    -rw-rw-r--  1 root test   99 Sep 22 12:04 /home/test/.ssh/authorized_keys
    

    Com qualquer abordagem, o usuário não poderá mais criar seus próprios arquivos em .ssh, portanto, você também pode fornecer alguns arquivos extras para eles. Alguns que vêm à mente são: known_hosts, confige/ id_rsa{.pub,}ou outros tipos de chave.

    Alternativa: chattr

    Alguns sistemas de arquivos Linux suportam atributos de arquivo , notadamente um sinalizador imutável . Arquivos/diretórios com o sinalizador imutável definido não podem ser excluídos, modificados ou ter suas permissões alteradas. Somente o root pode definir/desmarcar este sinalizador.

    Este comando resolveria o problema, mesmo com a propriedade/permissões padrão:

    # chattr +i ~test/.ssh/{authorized_keys,}
    

    Agora .sshe authorized_keysnão pode ser modificado de forma alguma, nem mesmo por root. Se o root precisar atualizar esses arquivos, você precisará deles chattr -iprimeiro. Use lsattrpara verificar atributos.

    Essa abordagem é mais simples, mas menos flexível. Também precisa de suporte ao sistema de arquivos; Acredito que seja compatível com pelo menos ext2/3/4, XFS e btrfs.

    ACLs Posix?

    Há também Posix ACLs (listas de controle de acesso), que permitem um controle um pouco mais refinado. Não estou muito familiarizado com eles e não tenho certeza se eles ajudam aqui.

    Modos Estritos

    Nota: altamente desencorajado, mas previsto para ser completo.

    O servidor OpenSSH possui uma diretiva de configuração chamada StrictModes, que determina o quão exigente é o SSH com permissões:

    Especifica se o sshd deve verificar os modos de arquivo e a propriedade dos arquivos e do diretório inicial do usuário antes de aceitar o login. Isso normalmente é desejável porque os novatos às vezes deixam acidentalmente seus diretórios ou arquivos graváveis. O padrão é yes.

    Se você desabilitar essa opção, terá mais liberdade para configurar propriedade e permissões. No entanto, o SSH é rigoroso por padrão por boas razões. Um usuário 777-chmodding em seus arquivos SSH é um risco à segurança.

    • 7
  4. Gringo Suave
    2023-09-24T04:27:36+08:002023-09-24T04:27:36+08:00

    Execute um cron job para corrigir permissões todas as noites.

    Excluir arquivos é um pouco mais difícil. Você também pode restaurar arquivos ausentes do backup do cron. Mas parece que você pode entrar em casos estranhos com isso ... pode precisar de mais inteligência do que um script pode fornecer. Eu começaria aos poucos e adicionaria recursos com cautela a uma função de restauração.

    • 2

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