Existe alguma maneira de tornar produtivo um administrador de sistemas Linux experiente sem fornecer a ele acesso root completo?
Esta questão vem de uma perspectiva de proteção à propriedade intelectual (IP), que no meu caso, é inteiramente código e / ou arquivos de configuração (ou seja, pequenos arquivos digitais que são facilmente copiados). Nosso molho secreto nos tornou mais bem-sucedidos do que o tamanho pequeno sugere. Da mesma forma, somos uma vez mordidos, duas vezes tímidos de alguns ex-funcionários inescrupulosos (não administradores de sistemas) que tentaram roubar IP. A posição da alta gerência é basicamente "Confiamos nas pessoas, mas por interesse próprio, não podemos arcar com o risco de conceder a qualquer pessoa mais acesso do que o necessário para realizar seu trabalho".
No lado do desenvolvedor , é relativamente fácil particionar fluxos de trabalho e níveis de acesso para que as pessoas possam ser produtivas, mas apenas ver o que precisam. Somente as principais pessoas (proprietários reais da empresa) têm a capacidade de combinar todos os ingredientes e criar o molho especial.
Mas não consegui encontrar uma boa maneira de manter esse sigilo de IP no lado do administrador do Linux. Fazemos uso extensivo do GPG para código e arquivos de texto confidenciais ... mas o que impede um administrador de (por exemplo) processar um usuário e saltar na sessão tmux ou GNU Screen e ver o que está fazendo?
(Também temos o acesso à Internet desabilitado em qualquer lugar que possa entrar em contato com informações confidenciais. Mas nada é perfeito e pode haver buracos abertos para administradores de sistema ou erros inteligentes no lado do administrador da rede. Ou até para o bom e velho USB. várias outras medidas em vigor, mas essas estão além do escopo desta questão.)
O melhor que posso apresentar é basicamente usando contas personalizadas com sudo , semelhante ao descrito em Vários administradores de sistemas Linux que trabalham como raiz . Especificamente: ninguém, exceto os proprietários da empresa, teria acesso root direto. Outros administradores teriam uma conta personalizada e a capacidade de fazer o sudo na raiz. Além disso, o log remoto seria instituído e os logs iriam para um servidor que somente os proprietários da empresa poderiam acessar. Ver o log desativado provocaria algum tipo de alerta.
Um administrador de sistema inteligente provavelmente ainda pode encontrar alguns buracos nesse esquema. E, além disso, ainda é reativo, e não proativo . O problema com nosso IP é tal que os concorrentes podem utilizá-lo muito rapidamente e causar muitos danos em pouco tempo.
Ainda melhor seria um mecanismo que limita o que o administrador pode fazer. Mas reconheço que esse é um equilíbrio delicado (principalmente à luz da solução de problemas e da correção de problemas de produção que precisam ser resolvidos no momento ).
Não posso deixar de me perguntar como outras organizações com dados muito sensíveis gerenciam esse problema? Por exemplo, administradores de sistemas militares: como eles gerenciam servidores e dados sem poder ver informações confidenciais?
Editar: Na postagem inicial, pretendia abordar preventivamente os comentários sobre "práticas de contratação" que estão começando a aparecer. Primeiro, essa deveria ser uma questão técnica , e as práticas de contratação da OMI tendem mais a questões sociais . Mas, segundo, direi o seguinte: acredito que fazemos tudo o que é razoável para contratar pessoas: entrevista com váriospessoas na empresa; verificação de antecedentes e de referência; todos os funcionários assinam vários documentos legais, incluindo um que diz que leu e entendeu nosso manual, que detalha detalhadamente as preocupações com PI. Agora, está fora do escopo desta pergunta / site, mas se alguém puder propor práticas de contratação "perfeitas" que filtrem 100% dos maus atores, sou todo ouvidos. Os fatos são: (1) não acredito que exista um processo de contratação tão perfeito; (2) as pessoas mudam - o anjo de hoje pode ser o diabo de amanhã; (3) tentativa de roubo de código parece ser algo rotineiro neste setor.
Respostas:
O que você está falando é conhecido como risco "Evil Sysadmin". O longo e curto disso é:
A combinação dessas coisas torna praticamente impossível interromper ações maliciosas. Até a auditoria se torna difícil, porque você não tem 'normal' para comparar. (E, francamente - um sistema quebrado também pode ter uma auditoria interrompida).
Existem várias etapas atenuantes:
syslog
e auditoria em nível de evento, para um sistema relativamente resistente a violações ao qual eles não têm acesso privilegiado. Mas coletar não é suficiente, é preciso monitorá-lo - e, francamente, existem várias maneiras de "roubar" informações que podem não aparecer no radar de auditoria. (Caçador contra guardiões do jogo)Mas, basicamente, você precisa aceitar que isso é uma coisa de confiança, não uma coisa técnica. Seus administradores de sistema sempre serão potencialmente muito perigosos para você, como resultado dessa tempestade perfeita.
fonte
Tudo o que foi dito até aqui aqui é bom, mas existe uma maneira não técnica 'fácil' que ajuda a negar um administrador de sistema desonesto - o princípio dos quatro olhos que basicamente exige que dois administradores de sistema estejam presentes para qualquer acesso elevado.
Edição: Os dois maiores itens que eu já vi nos comentários estão discutindo o custo e a possibilidade de conluio. Uma das maiores maneiras que considerei evitar esses dois problemas é com o uso de uma empresa de serviços gerenciados usada apenas para verificar as ações tomadas. Feito corretamente, os técnicos não se conheceriam. Assumindo as proezas técnicas que um MSP deveria ter, seria fácil o suficiente para concluir as ações executadas .. talvez até tão simples quanto um sim / não para algo nefasto.
fonte
Se as pessoas realmente precisam de acesso de administrador a um sistema, há pouco que você pode fazer para restringir suas atividades nessa caixa.
O que a maioria das organizações faz é confiar, mas verifique - você pode dar às pessoas acesso a partes do sistema, mas usa contas de administrador nomeadas (por exemplo, você não lhes dá acesso direto ao root ) e depois audita suas atividades em um log que elas não pode interferir.
Há um ato de equilíbrio aqui; pode ser necessário proteger seus sistemas, mas você também precisa confiar nas pessoas para fazerem o trabalho delas. Se a empresa foi anteriormente "mordida" por um funcionário inescrupuloso, isso pode sugerir que as práticas de contratação das empresas são ruins de alguma forma, e essas práticas foram presumivelmente criadas pelos "principais gerentes". A confiança começa em casa; o que eles estão fazendo para corrigir suas escolhas de contratação?
fonte
Sem se colocar em uma loucura mental mental insana para tentar encontrar uma maneira de fornecer um poder de administrador de sistema sem dar a ele poder (é provável que seja possível, mas acabaria sendo defeituoso de alguma forma).
Do ponto de vista da prática de negócios, há um conjunto de soluções simples. Solução não barata, mas simples.
Você mencionou que as partes do IP que você está preocupado estão divididas e apenas as pessoas no topo têm o poder de vê-las. Esta é essencialmente a sua resposta. Você deve ter vários administradores e NENHUM deles deve ser um administrador em sistemas suficientes para reunir a imagem completa. É claro que você precisaria de pelo menos 2 ou 3 administradores para cada peça, caso um administrador esteja doente ou em um acidente de carro ou algo assim. Talvez até os cambaleie. digamos que você tenha 4 administradores e 8 informações. o administrador 1 pode acessar sistemas com as partes 1 e 2, o administrador 2 pode acessar as partes 2 e 3, o administrador 3 pode acessar os 3 e 4 e o administrador 4 pode acessar os 4 e 1. Cada sistema possui um administrador de backup, mas não admin é capaz de comprometer a imagem completa.
Uma técnica que os militares também usam é a limitação da movimentação de dados. Em uma área sensível, pode haver apenas um sistema capaz de gravar um disco ou usar uma unidade flash USB, todos os outros sistemas são restritos. E a capacidade de usar esse sistema é extremamente limitada e requer aprovação documentada específica de altos executivos antes que alguém possa colocar dados sobre qualquer coisa que possa levar ao derramamento de informações. Da mesma forma, você garante que o tráfego de rede entre sistemas diferentes seja limitado por firewalls de hardware. Seus administradores de rede que controlam as paredes de incêndio não têm acesso aos sistemas para os quais estão roteando; portanto, eles não podem ter acesso específico às informações e os administradores de servidor / estação de trabalho garantem que todos os dados de e para um sistema estejam configurados para serem criptografados,
Todos os laptops / estações de trabalho devem ter discos rígidos criptografados e cada funcionário deve ter um cacifo pessoal, necessário para bloquear as unidades / laptops no final da noite para garantir que ninguém chegue cedo / saia tarde e tenha acesso a algo eles não deveriam.
Cada servidor deve, no mínimo, estar em seu próprio rack bloqueado, se não em sua própria sala bloqueada, para que apenas os administradores responsáveis por cada servidor tenham acesso a ele, pois no final do dia o acesso físico supera tudo.
Em seguida, há uma prática que pode prejudicar / ajudar. Contratos limitados. Se você acha que pode pagar o suficiente para continuar atraindo novos talentos, a opção de manter apenas um administrador por um período de tempo predeterminado (IE 6 meses, 1 ano, 2 anos) permitiria limitar o tempo que alguém teria para tentar reunir todas as partes do seu IP.
Meu design pessoal seria algo como ... Divida seus dados em várias partes, digamos, para ter um número 8, você tem 8 servidores git, cada um com seu próprio conjunto de hardware redundante, cada um administrado por um conjunto diferente de administradores.
Unidades de disco rígido criptografadas para todas as estações de trabalho que tocam no IP. com um diretório "projeto" específico na unidade, que é o único diretório que os usuários podem colocar em seus projetos. No final de cada noite, eles são obrigados a sanar seus diretórios de projeto com uma ferramenta de exclusão segura, e os discos rígidos são removidos e trancado (apenas por segurança).
Cada bit do projeto tem um administrador diferente atribuído a ele, para que um usuário interaja apenas com o administrador da estação de trabalho ao qual está designado; se a atribuição do projeto for alterada, os dados forem limpos, eles receberão um novo administrador. Seus sistemas não devem ter recursos de gravação e devem usar um programa de segurança para impedir o uso de unidades flash USB para transferir dados sem autorização.
tire disso o que quiser.
fonte
How do we find the top-tier talent we want, but only give them a teeny-tiny workload?
Até certo ponto, você pode atenuar isso, oferecendo a eles um amplo ambiente de teste / pesquisa e desenvolvimento, acesso a novos brinquedos legais e incentivando-os a gastar partes significativas de sua jornada de trabalho no desenvolvimento de suas habilidades técnicas. Uma carga de trabalho efetiva de 25% provavelmente está levando isso muito longe, mas eu ficaria exagerado sobre um trabalho que é 50% trabalho real e 50% desenvolvimento técnico / P&D (supondo que o salário esteja no mesmo nível que ~ 100% normal " trabalho real "trabalho).Seria semelhante ao desafio de contratar um zelador para um edifício. O zelador tem todas as chaves, pode abrir qualquer porta, mas a razão é que o zelador precisa delas para fazer o trabalho. O mesmo acontece com os administradores do sistema. Simetricamente, pode-se pensar neste problema antigo e ver como a confiança é concedida historicamente.
Embora não exista uma solução técnica limpa, o fato de não haver uma razão para não tentarmos, uma agregação de soluções imperfeitas pode gerar ótimos resultados.
Um modelo em que a confiança é conquistada :
Implementar vários níveis de poderes administrativos :
Sempre crie um ambiente em que o acesso total de uma pessoa não seja possível :
Use a regra de dois homens ao fazer alterações principais de alto nível :
Confie e verifique :
Papelada :
fonte
É muito, muito difícil proteger hosts contra aqueles com acesso administrativo. Enquanto ferramentas como o PowerBroker tentam fazer isso, o custo está adicionando algo mais que pode quebrar E adicionando barreiras às tentativas de corrigi-lo. Sua disponibilidade do sistema vai cair quando você implementar algo parecido com isso para definir essa expectativa cedo quanto o custo de proteger as coisas.
Outra possibilidade é verificar se o aplicativo pode ser executado em hosts descartáveis por meio de um provedor de nuvem ou em uma nuvem privada hospedada localmente. Quando um quebra, em vez de enviar um administrador para corrigi-lo, você o joga fora e cria automaticamente uma substituição. Isso exigirá muito trabalho do lado do aplicativo para executá-los neste modelo, mas pode resolver muitos problemas operacionais e de segurança. Se mal realizado, pode criar alguns problemas significativos de segurança, portanto, obtenha ajuda experiente se você seguir esse caminho.
fonte
Esta é sua discussão de linha de base: https://security.stackexchange.com/questions/7801/keeping-secrets-from-root-on-linux
Você divide sua responsabilidade com engenheiros de segurança cujo trabalho é fazer configurações e instalações do sistema, mas eles não obtêm credenciais ou acessam máquinas em produção. Eles também executam sua infraestrutura de auditoria.
Você tem administradores de produção que recebem os sistemas, mas não têm as chaves para inicializar a máquina sem que as políticas do SELinux estejam ativas. A segurança não obtém as chaves para descriptografar dados confidenciais armazenados em repouso no disco para quando eles recebem uma máquina quebrada de serviço.
Faça uso de um sistema de autenticação centralizado com auditoria forte como o Vault e faça uso de suas operações de criptografia. Distribua dispositivos Yubikey para tornar as chaves absolutamente privadas e ilegíveis.
As máquinas são limpas na quebra ou são manuseadas por operações e segurança juntas, e se você sentir a necessidade de supervisão executiva.
fonte
Os administradores pela natureza do trabalho têm acesso a tudo. Eles podem ver todos os arquivos no sistema de arquivos com suas credenciais de administrador. Portanto, você precisará de uma maneira de criptografar os arquivos para que os administradores não possam vê-lo, mas os arquivos ainda poderão ser utilizados pelas equipes que o verão. Veja a criptografia transparente Vormetric ( http://www.vormetric.com/products/transparent-encryption )
A maneira como funcionaria é que fica entre o sistema de arquivos e os aplicativos que acessam. O gerenciamento pode criar a política que diz "Somente o usuário httpd, executando o daemon do servidor da web, pode ver os arquivos não criptografados". Em seguida, um administrador com suas credenciais raiz pode tentar ler os arquivos e obter apenas a versão criptografada. Mas o servidor da web e as ferramentas necessárias precisa vê-los não criptografados. Pode até somar o binário para dificultar a administração do administrador.
Obviamente, você deve habilitar a auditoria para que, no caso de um administrador tentar acessar os arquivos, uma mensagem seja sinalizada e as pessoas saibam disso.
fonte
A única maneira prática é restringir quem pode fazer o que com o sudo. Você também pode fazer o que quiser com o selinux, mas provavelmente levaria uma eternidade para descobrir a configuração correta, o que pode torná-lo impraticável.
Acordos de não divulgação. Contrate um administrador de sistemas, eles precisam assinar um NDA; se quebrar sua promessa, levá-lo ao tribunal. Isso pode não impedi- los de roubar segredos, mas qualquer dano que eles causem ao fazê-lo é recuperável em tribunal.
Os administradores do sistema militar e do governo precisam obter autorizações de segurança de diferentes graus, dependendo da sensibilidade do material. A idéia é que alguém que pode obter uma autorização tem menos probabilidade de roubar ou trapacear.
fonte
Outra maneira de diminuir o risco (use ao lado dos mencionados anteriormente, e não em vez de) é pagar um bom dinheiro aos administradores do sistema. Pague-os tão bem que eles não querem roubar seu IP e deixar você.
fonte
Eu estou pensando que esta pergunta pode não ser possível responder completamente sem mais alguns detalhes, como:
Quantos administradores de sistema você espera manter "restrito"?
Para que as pessoas precisam de acesso "sysadmin"?
Antes de tudo, esteja ciente do que você pode fazer com o sudo. Com o sudo, você pode permitir permissões elevadas para executar apenas um único comando (ou variações, como comandos que começam com "mount -r", mas outros comandos não são permitidos). Com chaves SSH, você pode atribuir credenciais que permitem a uma pessoa executar apenas um determinado comando (como "sudo mount -r / dev / sdd0 / media / backup"). Portanto, existe uma maneira relativamente fácil de permitir que praticamente qualquer pessoa (que possua uma chave SSH) possa executar algumas operações específicas sem permitir que façam absolutamente tudo o resto.
As coisas ficam um pouco mais desafiadoras se você quiser que os técnicos executem correções do que está quebrado. Isso normalmente pode exigir uma quantidade maior de permissões e, talvez, acesso para executar uma ampla variedade de comandos e / ou gravar em uma variedade de arquivos.
Sugiro considerar a abordagem de sistemas baseados na Web, como o CPanel (que é usado por vários ISPs) ou sistemas baseados na nuvem. Geralmente, eles podem fazer com que os problemas de uma máquina desapareçam, fazendo com que a máquina inteira desapareça. Portanto, uma pessoa pode executar um comando que substitui a máquina (ou restaura a máquina para uma imagem em bom estado), sem necessariamente dar à pessoa acesso para ler muitos dados ou fazer pequenas alterações (como combinar uma correção menor) com a introdução de uma porta traseira não autorizada). Então, você precisa confiar nas pessoas que fazem as imagens, mas está reduzindo quantas pessoas você precisa para fazer coisas menores.
Por fim, porém, é necessário fornecer uma certa quantidade de confiança a um número diferente de zero de pessoas que ajudam a projetar o sistema e que operam no nível mais alto.
Uma coisa que as grandes empresas fazem é confiar em coisas como servidores SQL, que armazenam dados que podem ser acessados remotamente por um número maior de máquinas. Em seguida, um número maior de técnicos pode ter acesso root completo em algumas máquinas, embora não tenha acesso root aos servidores SQL.
Outra abordagem é ser grande demais para falir. Não pense que grandes forças armadas ou corporações gigantescas nunca têm incidentes de segurança. No entanto, eles sabem como:
A suposição básica é que os danos que ocorrem são simplesmente um risco e um custo para os negócios. Eles esperam continuar operando, e os desenvolvimentos e melhorias em andamento ao longo dos anos limitarão a quantidade de danos que um único incidente provavelmente afetará seu valor de longo prazo por um período de tempo.
fonte
Fazer uma verificação proativa é muito difícil.
Soluções como http://software.dell.com/solutions/privileged-management/ (não trabalho para a Dell e outras soluções semelhantes estão disponíveis) são muito eficazes para impor a responsabilidade do administrador de sistemas.
fonte
Coloque a máquina de administração raiz na sala bloqueada com duas chaves e dê apenas uma para cada um dos dois administradores. Os administradores sempre trabalharão juntos, observando as atividades um do outro. Deve ser a única máquina que contém a chave privada para efetuar login como root.
Algumas atividades podem não precisar de direitos de root; portanto, apenas parte do trabalho exigiria ir para essa sala para "programação em pares"
Você também pode gravar atividades de vídeo nessa sala principalmente para garantir que ninguém trabalhe sozinho (isso é facilmente visível). Além disso, verifique se o local de trabalho é tal que a tela seja facilmente visível para as duas pessoas (talvez uma tela de TV grande com fontes grandes).
fonte