limita o usuário a apenas um único comando: “su -”

1

Eu configurei um servidor da Web que hospeda um Play! Aplicativo de estrutura, o servidor é um Amazon Linux EC2.

Se você não estiver familiarizado com o Amazon Linux, por padrão, há um usuário root e um usuário ec2 com privilégios sudo. Para acessar o servidor em que você está ssh, como o usuário ec2 usando uma chave, as senhas são desativadas.

Eu quero que esse aplicativo seja o mais seguro possível, e essa configuração parecia insegura para mim; se alguém conseguir obter a chave ssh, terá acesso root à máquina.

Para endurecer o servidor, adicionei um novo usuário "Play". Eu armazeno e executo o aplicativo na pasta inicial do Play users. Em seguida, removi o comando sudo do usuário ec2 e adicionei uma senha ao root.

Agora eu faço o login via ssh como o usuário ec2 que não tem privilégios sudo, então mude para o usuário root / Play para fazer qualquer alteração ou trabalhar no servidor.

Isto parece ser uma solução bastante segura, no entanto eu gostaria de dar um passo adiante: Eu quero limitar o usuário que eu uso para logar como (ec2-user) para apenas 1 comando: "su -". Isso é tudo o que eu vou usar este usuário para: mudar para root.

Para referência, estes são os comandos que executei para esta configuração:

sudo su -

Adicionada senha à raiz:

passwd

Adicionado usuário do Google Play:

sudo adduser Play

Remova o usuário ec2 dos sudoers

cd /etc/sudoers.d
nano cloud-init

Remova o ec2-user e atualize o arquivo para:

Play    ALL= NOPASSWD: ALL
# User rules for ec2-user
Play    ALL=(ALL) NOPASSWD:ALL

obrigado antecipadamente pela sua ajuda / conselho!

    
por DominoSugar 09.04.2016 / 18:47

2 respostas

5

Remover o acesso a outros comandos além de su não tornará seu sistema inerentemente mais seguro.

Primeiro, você não será capaz de impedir que comandos internos sejam executados se você atribuir o usuário ao shell conhecido, exceto os gostos de rbash mas o próprio rbash é um pouco mais permissivo e permite que o usuário execute alguns comandos. Se você puder fazer as pazes com isso, você pode usá-lo.

Outra solução não tão segura, mas viável, é definir o shell padrão do usuário como um script e esse script ter os comandos su - e exit nele e nada mais, além de sequências de interrupção de trapping como ctrl-c ou ctrl-z . Isso é chamado de interface cativa. Você também precisa colocar este script com seu caminho completo no final do /etc/shells . Como é um script, ele tem todas as ramificações de segurança que acompanham isso, presente ou futuro.

    
por 09.04.2016 / 19:14
-1

O que você poderia fazer é implementar alguma forma de ACL (Access Control List).

Eu mencionei em meus comentários anteriores que eu acho que a idéia do OP é a mesma que a minha, que é adicionar outra camada de segurança ao ter os usuários do SSH como uma conta restrita. Em seguida, use uma senha para su para outra conta que tenha mais privilégios, mas que tenha sido excluída.

Se você quiser restringir o que o usuário ec2-user faz. Em primeiro lugar, verifique se eles não estão no grupo sudoers .
Por padrão, eles ainda terão permissão de leitura na maioria dos arquivos do sistema, mas não poderão elevar o privilégio de editá-los ou ler arquivos que não sejam legíveis pelo mundo.

Encontrei várias soluções, incluindo a definição de ec2-user em chroot , o que as restringirá a um determinado diretório usando o STFP. Esta solução pode não ser a mais adequada, pois você precisa do ec2-user para poder su e alterar o diretório de /home/ec2-user para /home/play , suponho.

A melhor solução na minha opinião é aplicar o ACL. Esta é uma maneira de restringir os comandos que os usuários podem executar no shell. Ele funciona usando o comando setfacl e removendo as permissões de leitura e execução de um usuário no arquivo /bin .

setfacl -m u:ec2-user:r /bin/more -m: to add read read access to the user. u: user, can be changed to g(group) or o(other). ec2-user: the user r: give the user only read permission.

Este exemplo removerá a permissão de gravação e execução para o arquivo more bash. Este não é o melhor método, pois você teria que remover os comandos que não deseja que eles usem, em vez de apenas permitir que eles usem su . No entanto, é o método mais rápido e fácil que encontrei.

    
por 05.04.2018 / 11:33