Por que o su world é executável?

20

Eu tenho um servidor sem cabeça conectado remotamente por vários usuários. Nenhum dos outros usuários está no arquivo sudoers, portanto, eles não podem obter o root via sudo. No entanto, como as permissões suestão disponíveis, -rwsr-xr-xnão há nada que as impeça de tentar fazer força bruta na senha de root.

Alguém poderia argumentar que, se um usuário souber a senha root, poderá comprometer o sistema de qualquer maneira, mas não acho que seja esse o caso. O OpenSSH está configurado com PermitRootLogin noe PasswordAuthentication no, e nenhum dos outros usuários tem acesso físico ao servidor. Até onde eu sei, o mundo executar permissão /usr/bin/sué a única avenida para os usuários que tentam obter root no meu servidor.

O que é mais intrigante para mim é que nem parece útil. Ele me permite executar sudiretamente, em vez de precisar sudo su, mas isso não é um inconveniente.

Estou negligenciando alguma coisa? O mundo executa permissão suapenas por razões históricas? Existem desvantagens na remoção dessa permissão que ainda não encontrei?

Altay_H
fonte
9
"Isso me permite executar su diretamente, em vez de precisar fazer sudo su, mas isso dificilmente é um inconveniente." - E os sistemas sem o opcional sudoinstalado? Eu diria que é um grande inconveniente por lá;)
marcelm
11
Você sempre pode restringir o acesso para / bin / su, mas lembre-se de fazer o mesmo para / usr / bin / pkexec também.
jpa
6
Não consigo entender a motivação por trás dessa pergunta. Parece que você estava se perguntando por que su precisa ser executável mundialmente, mas qual seria o objetivo da alternativa? Ou seja, se su era apenas executável por root (?), Para o que você estava pensando que poderia ser usado?
David Z
11
@ DavidD De fato, é realmente útil para o root! Você pode alternar rapidamente os usuários com ele.
val diz Reintegrar Monica
11
@val Sim, é verdade. O fato de o root poder usar su não está em questão aqui. (Ao reler, posso ver como meu comentário anterior sugeriria o contrário, mas não foi isso que eu quis dizer.) Estou curioso para saber o que Altay_H pensou sobre isso antes de fazerem essa pergunta.
David Z

Respostas:

39

Um ponto que está faltando na resposta de ilkkachu é que elevar para a raiz é apenas um uso específico su. O objetivo geral do su é abrir um novo shell na conta de login de outro usuário. Esse outro usuário pode ser root(e talvez seja o mais frequentemente), mas supode ser usado para assumir qualquer identidade que o sistema local possa autenticar.

Por exemplo, se estou logado como usuário jime quero investigar um problema mikerelatado, mas que não consigo reproduzir, posso tentar fazer login como mikee executar o comando que está causando problemas.

13:27:20 /home/jim> su -l mike
Password:(I type mike's password (or have him type it) and press Enter)
13:27:22 /home/mike> id
uid=1004(mike) gid=1004(mike) groups=1004(mike)
13:27:25 /home/mike> exit  # this leaves mike's login shell and returns to jim's
13:27:29 /home/jim> id
uid=1001(jim) gid=1001(jim) groups=1001(jim),0(wheel),5(operator),14(ftp),920(vboxusers)

Usar a -lopção de sufaz com que simule um login completo (por manpágina).

O acima exposto requer conhecimento da mikesenha de, no entanto. Se eu tiver sudoacesso, posso efetuar o login mikemesmo sem a senha dele.

13:27:37 /home/jim> sudo su -l mike
Password:(I type my own password, because this is sudo asking)
13:27:41 /home/mike>

Em resumo, o motivo pelo qual as permissões no suexecutável são as que você mostra é porque sué uma ferramenta de uso geral disponível para todos os usuários no sistema.

Jim L.
fonte
11
Isso faz muito sentido. Desde que eu tenho o hábito de usar, sudoeu esqueci que supode ser usado para mais do que apenas sudo -s. E sem ser um sudoer, essa seria a única maneira de alternar usuários sem alterar as teclas ssh. Para o meu caso de uso, esse é outro motivo para remover a permissão, mas agora entendo por que o mundo executa a permissão por padrão. Obrigado!
Altay_H
11
Outro ponto é que sudotambém pode ser usado para assumir a identidade de um usuário que não seja root. Ele simplesmente permite um controle mais refinado sobre quem pode fazer o que como quem, incluindo assumir outra identidade sem a necessidade da senha dessa identidade.
chepner 17/08
Parte da confusão é que as pessoas pensam que susignifica "superusuário", o que ocorre quando nenhum usuário é especificado (ou raiz é especificada explicitamente), mas também significa "alternar usuário". Este segundo uso de sué, portanto, facilmente esquecido.
Monty Harder
20

Historicamente (em unidades não GNU), não era, ou pelo menos verificava manualmente se você estava em um grupo chamado "roda" com permissão su. A versão GNU do sunão reproduziu essa funcionalidade devido à ideologia do RMS sobre controle de acesso na época:

Why GNU `su' does not support the `wheel' group
===============================================

   (This section is by Richard Stallman.)

   Sometimes a few of the users try to hold total power over all the
rest.  For example, in 1984, a few users at the MIT AI lab decided to
seize power by changing the operator password on the Twenex system and
keeping it secret from everyone else.  (I was able to thwart this coup
and give power back to the users by patching the kernel, but I wouldn't
know how to do that in Unix.)

   However, occasionally the rulers do tell someone.  Under the usual
`su' mechanism, once someone learns the root password who sympathizes
with the ordinary users, he or she can tell the rest.  The "wheel
group" feature would make this impossible, and thus cement the power of
the rulers.

   I'm on the side of the masses, not that of the rulers.  If you are
used to supporting the bosses and sysadmins in whatever they do, you
might find this idea strange at first.

Você pode encontrar muito mais sobre o assunto pesquisando no Google "wheel group rms" ou similar.

R ..
fonte
3
Esta é a única resposta correta. A configuração é intencional, histórica, e é exatamente esse o motivo. Toda a blabla técnica é exatamente isso - blabla. Você pode reintroduzir absolutamente o grupo "wheel" em um Unix moderno.
Tom
10

No entanto, como as permissões suestão disponíveis, -rwsr-xr-xnão há nada que as impeça de tentar fazer força bruta na senha de root.

Sim. Assumindo o seu sistema Linux habitual, o pam_unix.somódulo atrasa uma tentativa de autenticação com falha em ~ dois segundos, mas acho que não há nada para interromper as tentativas simultâneas.

As tentativas com falha são registradas, é claro:

Aug 16 22:52:33 somehost su[17387]: FAILED su for root by ilkkachu

Forçar brutalmente uma senha deve aparecer com destaque nos logs, se você tiver algum tipo de sistema para monitorá-las. E se você tem usuários locais não confiáveis, talvez deva. Usuários locais não confiáveis ​​também podem tentar usar quaisquer explorações de escalonamento de privilégios somente locais e são muito mais comuns que escalonamento de privilégios remotos.

O que é mais intrigante para mim é que nem parece útil.

Claro que é útil, permite que você se eleve root, se você souber a senha.

Ele me permite executar sudiretamente, em vez de precisar sudo su, mas isso não é um inconveniente.

sudo sué um pouco redundante. Não há necessidade de usar dois programas que permitem executar programas como outro usuário, um é o suficiente. Basta usar sudo -iou sudo -s(ou sudo /bin/bashetc.) se você quiser executar o shell.

Estou negligenciando alguma coisa? O mundo executa permissão para o su apenas por razões históricas?

Veja acima. Bem, nem todos os sistemas têm sudocomo alternativa, não tenho certeza se você considera isso histórico.

Existem desvantagens na remoção dessa permissão que ainda não encontrei?

Na verdade, não, tanto quanto eu sei. Eu acho que alguns sistemas foram suconfigurados para que apenas membros de um grupo específico (" wheel") possam executá-lo. Você pode fazer o mesmo sudose quiser ( chown root.sudousers /usr/bin/sudo && chmod 4710 /usr/bin/sudo).

Ou você pode simplesmente remover um ou ambos os programas, se não precisar deles. Embora no Debian, suvenha com o loginpacote, provavelmente não é uma boa ideia remover o pacote como um todo. (E o emparelhamento logine sujuntos dessa maneira parece um pouco histórico.)

ilkkachu
fonte
11
Os sistemas BSD exigem que os usuários estejam no wheelgrupo para usar su. Existem alguns sistemas BSD (só posso falar pelo OpenBSD) que não são fornecidos sudo(é um pacote de terceiros). O OpenBSD possui doasuma reimplementação do básico sudo, mas é desativado por padrão ao instalar um sistema novo.
Kusalananda
@ Kusalananda Você só precisa estar wheelse quiser sufazer o root. Qualquer conta pode supara qualquer conta não raiz para a qual eles tenham a senha, independentemente de serem membros do wheelgrupo.
Jim L.
Eu corro 'sudo su -' para garantir que o shell raiz que recebo seja um login root completo, sem um ambiente poluído da minha conta de usuário. Os sudoers padrão no RHEL incluem várias variáveis ​​de ambiente que são executáveis ​​(como PS1).
jsbillings
@jsbillings, hmm, ok. Limpa suo ambiente então? Parece não fazer isso no Debian ...
ilkkachu
"Su -" faz em todos os Linux que eu conheço. Cuidado com o traço.
jsbillings 17/08
7

Você já tem boas respostas, mas há uma parte da sua postagem que elas não abordam.

Até onde eu sei, o mundo executar permissões em / usr / bin / su é a única avenida para usuários que tentam obter root no meu servidor.

Essa é uma suposição perigosa. Se você definiu uma boa senha para root, na maioria dos casos é muito mais provável que uma escalação de privilégios seja bem-sucedida devido à exploração de um bug no kernel ou em um binário setuid (é claro, você também pode remover o setuid pouco disso, mas passwdé setuid, e se você deseja alta segurança, também deve oferecer isso aos seus usuários, e negar a eles a opção de alterar a senha deles não é compatível com isso).

Henrik - pare de machucar Monica
fonte
1

su precisa ser executável mundialmente para que todos possam executá-lo. Em muitos sistemas, ele pode ser usado para mudar para outro usuário, fornecendo sua senha.

Se você está preocupado com alguém que força a senha de root, basta desabilitá-la. (invalide o hash para que nenhuma senha possa corresponder a ele)

Eu não sei sobre o consenso, mas consideraria a possibilidade de efetuar login como root diretamente, um problema de segurança por si só.

bobsburner
fonte
-2

As outras respostas estão corretas, dizendo "su" permite que você faça login em contas que não sejam root.

Uma observação sobre "sudo su" embora. Na verdade, isso permite que você faça login na conta root sem saber a senha root. Você precisa saber a senha da conta com a qual você executa o sudo, além de ter essa conta no arquivo sudoers.

WindowsNT
fonte
3
Isso depende inteiramente de sudoerster targetpwou rootpwdefinir.
muru 19/08
11
Isso não tem nada a ver com suser executável por todos.
Kusalananda