Servidor Bastion: crie usuários com capacidade apenas para servidor de destino ssh

Servidor Bastion: crie usuários com capacidade apenas para servidor de destino ssh

Temos servidor bastião. Devemos ter alguns usuários que precisam fazer SSH do local através do bastion para C, usando proxyCammand e chave privada.

Quero criar usuários e grupos que devam ter acesso SOMENTE ao ssh do host Bastion (isso acontece via proxyCommand). Eles também não precisam ler arquivos.

Como eu posso fazer isso? Há algum caminho?

A outra alternativa, se o acima não for possível, é ter acesso apenas de leitura para arquivos permitidos, exceto arquivos restritos (padrão pelo sistema operacional) que possuem acesso de leitura apenas para seus grupos.

Responder1

Veja como permitir que um determinado usuário use apenas alguns comandos especificados:

  1. Altere o shell do usuário para bash restrito:

    chsh -s /bin/rbash <username>
    
  2. Crie um diretório bin no diretório inicial do usuário:

    sudo mkdir /home/<username>/bin
    sudo chmod 755 /home/<username>/bin
    
  3. Altere o PATH padrão do usuário para este diretório bin:

    echo "PATH=$HOME/bin" >> /home/<username>/.bashrc
    echo "export PATH >> /home/<username>/.bashrc
    
  4. Crie links simbólicos para os comandos que o usuário requer:

    sudo ln -s /bin/<command> /home/<username>/bin/
    
  5. Restrinja a alteração do usuário ~/.bashrc, tornando-o imutável:

    chattr +i /home/<username>/.bashrc
    

Dessa forma, você cria apenas links simbólicos para os comandos que deseja permitir.

Para fazer o mesmo para mais de um usuário, você pode criar um script bash contendo esses comandos e tendo o nome do usuário como parâmetro.

EDIT: No CentOS, o rbash pode não ser implementado diretamente e pode precisar de um link simbólico para ser criado, e da mesma forma em algumas outras versões do GNU/Linux, como o Red Hat:

# cd /bin
# ln -s bash rbash

fonte

Editar2:

Se o rbash for muito restritivo, então o bash normal também pode funcionar, mas isso é mais trabalhoso: você precisará proibir a execução de quase todos os comandos /binusando setfacl -m u:user1:r /bin/sufor sue outros comandos que você não deseja que sejam usados, para que eles se tornem lidos. apenas para o usuário e especialmente não são executáveis.

Veresta resposta para mais detalhes.

Responder2

Tráfego de rede

Você pode usariptablespara limitar o tráfego de rede:

# Allow port 22 traffic to a specific IP/hostname for a specific user
iptables -A OUTPUT -p tcp --dport 22 -d allowed_host -m owner --uid-owner username -j ACCEPT 
# Block all other outgoing port 22 (SSH) traffic
iptables -A OUTPUT -p tcp --dport 22 -d 0.0.0.0/0 -j REJECT

Acesso ao sistema de arquivos

Para restringir o acesso ao sistema de arquivos você pode usarPermissões do sistema de arquivos

Eles também não precisam ler arquivos.

para poder fazer login, eles precisam ler alguns arquivos:

  • O diretório inicial dos usuários
  • O executável e todas as bibliotecas do shell do usuário

Para proibir o acesso de leitura para um usuário normal, você pode remover o sinalizador legível por todos de um arquivo de propriedade do root ou remover o sinalizador executável e legível por todos de um diretório de propriedade do root:

# chmod o-r secret-file
# ls -l secret-file
-rw-r-----  1 root  root  0 Mar 27 13:23 secret-file

# chmod o-rx secret-dir/
# ls -ld secret-dir/
drwxr-x---  2 root  root  64 Mar 27 13:24 secret-dir/

informação relacionada