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:
Altere o shell do usuário para bash restrito:
chsh -s /bin/rbash <username>
Crie um diretório bin no diretório inicial do usuário:
sudo mkdir /home/<username>/bin sudo chmod 755 /home/<username>/bin
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
Crie links simbólicos para os comandos que o usuário requer:
sudo ln -s /bin/<command> /home/<username>/bin/
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
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 /bin
usando setfacl -m u:user1:r /bin/su
for su
e 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 usariptables
para 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/