Li ou ouvi em algum lugar (talvez no curso SELinux do LinuxCBT ; mas não tenho certeza) que existem servidores Linux online, para os quais também é fornecida a senha do usuário root. O servidor Linux é reforçado usando as regras do SELinux, de modo que todos possam fazer login com o usuário root, mas não causar danos ao sistema operacional.
Parece um mito para mim, mas eu queria ter certeza: É possível proteger uma caixa do Linux (possivelmente com o SELinux), de modo que nem o usuário root possa realizar atividades maliciosas específicas? (Exemplos: exclusão de arquivos do sistema, limpeza de arquivos de log, interrupção de serviços críticos etc.)
Uma caixa desse tipo Linux será um excelente ponto de partida para a construção de um honeypot .
Edit: Com base em uma resposta (agora excluída) e em um pouco de pesquisa no Google, obtive pelo menos dois links que apontavam para servidores Linux tão robustos. Infelizmente, os dois servidores estão inoperantes. Para o registro, copio e colo as descrições aqui:
1) Em http://www.coker.com.au/selinux/play.html :
Acesso root gratuito em uma máquina SE Linux!
Para acessar minha máquina de jogo Debian ssh para play.coker.com.au como root, a senha é ...
Observe que essas máquinas requerem muita habilidade para executá-las com sucesso. Se você precisar perguntar se deve executar um, a resposta é "não".
O objetivo disso é demonstrar que toda a segurança necessária pode ser fornecida pelo SE Linux sem nenhuma permissão Unix (no entanto, ainda é recomendável que você use permissões Unix também para servidores reais). Além disso, você tem a chance de fazer login em uma máquina SE e ver como é.
Ao fazer login em uma máquina de reprodução SE Linux, certifique-se de usar a opção -x para desativar o encaminhamento do X11 ou definir o ForwardX11 no no seu arquivo / etc / ssh / ssh_config antes de efetuar o login. Além disso, certifique-se de usar a opção -a para desativar o encaminhamento do agente ssh ou definir o ForwardAgent no no seu arquivo / etc / ssh / ssh_config antes de efetuar o login. Se você não desabilitar corretamente essas configurações, o login na máquina de jogo colocará o risco de ser atacado pelo seu cliente SSH.
Existe um canal de IRC para discutir isso, é #selinux em irc.freenode.net .
Aqui está uma rápida FAQ
2) Em http://www.osnews.com/comments/3731
O objetivo reforçado do Gentoo é tornar o Gentoo viável para ambientes de servidores de produção de alta segurança e alta estabilidade. Este projeto não é um projeto independente, separado do Gentoo; Ele pretende ser uma equipe de desenvolvedores do Gentoo, focada em fornecer soluções ao Gentoo que forneçam segurança e estabilidade fortes. Esta máquina é a máquina de demonstração SELinux do Hardened Gentoo . O principal uso é testar e auditar a integração e a política do SELinux.
fonte
Respostas:
Realidade: sim, o SELinux pode limitar o usuário root.
Isso é possível porque o SELinux não se importa realmente com o usuário atual do Unix: tudo o que vê são metadados suplementares chamados de contexto (que inclui, entre outros campos, um campo de domínio ) e permite que o SELinux decida se a ação solicitada pode ser autorizada ou executada. não.
O que geralmente se concebe como usuário raiz seria mapeado no SELinux como um usuário Unix raiz executando o domínio
unconfined_t
ou osysadm_t
SELinux. É o usuário root onipotente clássico com potência total.No entanto, pode-se configurar perfeitamente seu sistema para gerar um shell raiz (refiro-me ao shell do usuário root do Unix) executando o
user_t
domínio SELinux do usuário restrito . De acordo com as políticas do SELinux, esse shell não seria diferente de quaisquer outros shells de usuário restrito e não teria privilégios especiais no sistema, confinando efetivamente o usuário root.Além de um ponto de vista experimental, fazer algo literalmente é inútil, por mais práticas similares que sejam encontradas no mundo real. Um exemplo clássico seria um administrador de banco de dados que deveria ser capaz de parar / iniciar os daemons do banco de dados, editar arquivos de configuração etc. Sem o SELinux, todas essas ações exigiriam que o usuário escalasse em direção a privilégios de root (mesmo que seja normalmente para um único linha de comando através da
sudo
ferramenta, por exemplo, no entanto, mesmo que isso possa estar sujeito a vazamentos).Graças ao SELinux, podemos fornecer a esse usuário um shell raiz genuíno, mas em vez de executar
unconfined_t
ousysadm_t
domínios, ele executará odbadm_t
domínio. Isso significa que ele terá mais privilégios do que um usuário restrito, mas esses novos privilégios serão limitados ao necessário para administrar o servidor de banco de dados: esse usuário não poderá violar outros serviços, arquivos ou executar outros comandos administrativos além daqueles estritamente necessário para fazer o seu trabalho.Da mesma forma, o servidor da web e outros administradores de serviços também podem ter outros shells raiz rodando em paralelo no mesmo sistema, todos verão o usuário atual do Unix sendo root , mas, graças ao SELinux, cada um terá privilégios efetivamente diferentes, limitados ao que é necessário para seus próprios propósitos .
fonte
Sim é possivel. Mas não é muito útil.
Teoricamente, você poderia impedir o usuário root de executar binários que poderiam ser usados para fins maliciosos, impondo políticas por meio de algo como o SELinux. No entanto, isso apresenta um problema, que é o fato de, mesmo que o usuário root tenha sido inicialmente impedido de fazer algo, ele ou ela poderia usar outros métodos para alterar ou remover as políticas do SELinux. Devido a esse problema, você precisaria efetivamente impedir o usuário root de executar qualquer ação, tornando-a pouco útil.
fonte
Isso pode parecer barato, mas é fácil: altere o uid da raiz do usuário para diferente de zero. Simplesmente entre em / etc / passwd e / etc / shadow, modifique as entradas uid = 0 existentes de "root" para outra coisa e adicione uma conta chamada "root" cujo uid não é zero e não é usado.
Atinge o objetivo sem. É também uma maneira de afirmar que qualquer pessoa pode ter "acesso root" sem realmente fornecer privilégios escalados.
fonte
root
usuário simplesmente não é realmente o usuário root. A questão é perguntar se o superusuário real pode ser limitado dessa maneira.root
pode ser limitado de tal maneira.