Esta é uma continuação da minha perguntaaqui.
Estou configurando o primeiro servidor da Web e estou me atrapalhando com quais contas de usuário criar e permissões para fornecer melhor segurança. Abaixo está o que eu tenho.
Para 2 desenvolvedores, tenho 2 contas (e elas são adicionadas ao grupo suplementar devs
) e somente elas têm permissão para fazer ssh no servidor. Para a aplicação web (baseada em Django), criei 1 usuário normal, app
(não o configurei como --system
usuário e pertence ao grupo app
) com acesso shell. Os 2 desenvolvedores, após o ssh para o servidor, irão solicitar app
quaisquer atualizações e iniciar/parar o aplicativo. O usuário app
não tem permissão para executar su
(bloqueado por não adicionar à configuração do grupo em /etc/pam.d/su
using pam_wheel.so
). Eu também tenho uma terceira conta sem su
recursos para tarefas relacionadas a backup, onde uma tarefa cron fará ssh e buscará arquivos de log, status, etc.
Deixe-me saber se os aspectos de segurança precisam ser melhorados. (PS: sou um novato aqui)
Responder1
su
requer o compartilhamento de uma senha. Eu prefiro sudo. Portanto, os desenvolvedores executariam sudo -u app command
para executar command
como app
, ou executariam sudo -u app -i
para iniciar um shell interativo como app
. Possivelmente sudo -u app -i /bin/bash
se você configurou app
o shell de para algo como /bin/false ou /bin/true.
Se eles não precisarem de um shell completo como aplicativo, mas apenas reiniciarem o aplicativo, você poderá limitar os comandos que eles podem executar como aplicativo. Use uma ACL padrão nos diretórios que eles precisam acessar, o que concede acesso aos desenvolvedores e ao aplicativo para que você não tenha problemas de permissão do sistema de arquivos. O princípio do menor privilégio é o que você precisa seguir, IMHO. Se eles não precisarem fazer isso, não lhes dê acesso para fazer isso.
Normalmente prefiro usar chaves apenas para ssh. Se você puder fazer isso, desative as senhas dos desenvolvedores e defina as regras do sudo para não exigir senha. Então não há necessidade de senhas para ninguém e, portanto, nenhuma senha para divulgar/perder/redefinir.
Tarefa de leitura para esta noite, porque é um pouco demais para este post: "como funcionam as ACLs do sistema de arquivos" e "como faço para configurar o sudo". Talvez seguido pelo gerenciamento de chaves ssh.