Como posso garantir a capacidade de auditoria e o menor privilégio com base nos usuários da AWS dentro de uma imagem do EC2?

1

Estou fazendo estágio em uma empresa que é executada em um ambiente da AWS e está começando a investigar o bloqueio de privilégios de usuário. Por isso, estou procurando maneiras de proteger instâncias do EC2. Especificamente, quero encontrar uma maneira de evitar a distribuição de um par de chaves que conceda acesso incondicional a ec2-user , que, com a política sudo padrão do Amazon Linux, é essencialmente raiz e tem a desvantagem adicional de não haver log de auditoria (por isso, se alguém executar algo malicioso enquanto estiver em SSH em uma instância do EC2, não há como saber quem, porque o usuário Linux que executa os comandos é sempre ec2-user ).

Meu primeiro pensamento foi fazer isso via PAM, semelhante a como o LDAP é integrado ao PAM via pam_ldap ou algo assim, mas não consigo encontrar nada que me permita usar o IAM como um back-end de autenticação. Eu poderia adicionar usuários manualmente, já que há uma quantidade muito pequena de pessoas que realmente precisam acessar, mas isso parece propenso a erros humanos, além de ser o tipo de coisa que inevitavelmente se tornará cada vez mais inconsistente com o tempo.

Eu também pesquisei na web sem sorte.

Qual é a melhor prática aqui?

    
por strugee 05.05.2016 / 20:41

1 resposta

0

My first thought was to do this via PAM, similar to how LDAP is integrated into PAM via pam_ldap or somesuch, but I can't find anything that will let me use IAM as an auth backend

Acho que você está pensando o contrário, tente estender seu domínio para o IAM, para que os usuários façam login na AWS com suas credenciais de domínio, em vez de credenciais separadas do IAM. O aspecto mais útil do IAM é o acesso baseado em função e políticas para usuários da AWS - isso não se estende a instâncias de nuvem, portanto é necessário configurar mais domínios tradicionais, como criar uma nuvem privada virtual (VPC - ler VPN) e bootstrapping instâncias para que eles sejam configurados especificamente para o seu domínio.

Specifically, I want to find a way to avoid handing out a keypair that grants unconditional access to ec2-user, which with the default Amazon Linux sudo policy, is essentially root and has the additional downside that there's no audit log (so if someone runs something malicious while SSH'd into an EC2 instance, there's no way to tell who because the Linux user executing commands is always ec2-user).

bootstrapping cloud instances

como você sabe quando inicializa uma instância na nuvem, associa a instância a uma imagem, uma rede, um grupo de segurança, uma chave pública e assim por diante, e você pode ssh ou rdp na instância com o privado chave ou senha, geralmente como o usuário ec2-user ou admin for windows - mas você também pode inicializar a instância usando um serviço chamado cloud-init, ao iniciar uma instância, escolha 'opções avançadas'

Dentrodacaixadetextovocêpodecolaremseuscriptcloud-init,cloud-initéoseubootstrapperbásico,vocêpodeusá-loparainstalarpacotes,executarscripts,modificarosistema,adicionarusuáriosegrupos,etc.AsinstânciasdenuvemdoUserdata'procuramporqualquerdadofornecidopelousuáriofazendoumasolicitaçãohttpnoendereçodeloopbackdasinstâncias(queéredirecionado)

GEThttp://169.254.169.254/2009-04-04/user-data

entãoaquiestáumexemplodeumscriptqueadicionaráalgunsusuárioseoutraschavesautorizadas

#cloud-configusers:-name:demogroups:sudoshell:/bin/bashsudo:['ALL=(ALL)NOPASSWD:ALL']ssh-authorized-keys:-ssh-rsaAAAAB3NzaC1yc2EAAAADAQABAAABAQDf0q4PyG0doiBQYV7OlOxbRjle026hJPBWD+eKHWuVXIpAiQlSElEBqQn0pOqNJZ3IBCvSLnrdZTUph4czNC4885AArS9NkyM7lK27Oo8RV888jWc8hsx4CD2uNfkuHL+NI5xPB/QT3Um2Zi7GRkIwIgNPN5uqUtXvjgA+i1CS0Ku4ld8vndXvr504jV9BMQoZrXEST3YlriOb8Wf7hYqphVMpF3b+8df96Pxsj0+iZqayS9wFcL8ITPApHi0yVwS8TjxEtI3FDpCbf7Y/DmTGOv49+AWBkFhS2ZwwGTX65L61PDlTSAzL+rPFmHaQBHnsli8U9N6E4XHDEOjbSMRXuser@example.com-ssh-rsaAAAAB3NzaC1yc2EAAAADAQABAAABAQDcthLR0qW6y1eWtlmgUE/DveL4XCaqK6PQlWzi445v6vgh7emU4R5DmAsz+plWooJL40dDLCwBt9kEcO/vYzKY9DdHnX8dveMTJNU/OJAaoB1fV6ePvTOdQ6F3SlF2uq77xYTOqBiWjqF+KMDeB+dQ+eGyhuI/z/aROFP6pdkRyEikO9YkVMPyomHKFob+ZKPI4t7TwUi7x1rZB1GsKgRoFkkYu7gvGak3jEWazsZEeRxCgHgAV7TDm05VAWCrnX/+RzsQ/1DecwSzsP06DGFWZYjxzthhGTvH/W5+KFyMvyA+tZV4i1XM+CIv/Ma/xahwqzQkIaKUwsldPPu00jRNuser@desktopruncmd:-touch/test.txt

essetipodeabordagempermitiráquevocêdesenvolvaumamaneiradeinicializarascontasdeusuáriosepermissões(istoéomesmoqueousuárioec2estáconfigurado).Ouvocêpoderiausarocloud-initouaformaçãodenuvensparaodomíniounirasinstânciasnainicialização.

link

espero que ajude.

    
por 05.05.2016 / 22:42