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 su
estão disponíveis, -rwsr-xr-x
nã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 no
e 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 su
diretamente, em vez de precisar sudo su
, mas isso não é um inconveniente.
Estou negligenciando alguma coisa? O mundo executa permissão su
apenas por razões históricas? Existem desvantagens na remoção dessa permissão que ainda não encontrei?
sudo
instalado? Eu diria que é um grande inconveniente por lá;)Respostas:
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 serroot
(e talvez seja o mais frequentemente), massu
pode ser usado para assumir qualquer identidade que o sistema local possa autenticar.Por exemplo, se estou logado como usuário
jim
e quero investigar um problemamike
relatado, mas que não consigo reproduzir, posso tentar fazer login comomike
e executar o comando que está causando problemas.Usar a
-l
opção desu
faz com que simule um login completo (porman
página).O acima exposto requer conhecimento da
mike
senha de, no entanto. Se eu tiversudo
acesso, posso efetuar o loginmike
mesmo sem a senha dele.Em resumo, o motivo pelo qual as permissões no
su
executável são as que você mostra é porquesu
é uma ferramenta de uso geral disponível para todos os usuários no sistema.fonte
sudo
eu esqueci quesu
pode ser usado para mais do que apenassudo -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!sudo
também pode ser usado para assumir a identidade de um usuário que não sejaroot
. 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.su
significa "superusuário", o que ocorre quando nenhum usuário é especificado (ou raiz é especificada explicitamente), mas também significa "alternar usuário". Este segundo uso desu
é, portanto, facilmente esquecido.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 dosu
não reproduziu essa funcionalidade devido à ideologia do RMS sobre controle de acesso na época:Você pode encontrar muito mais sobre o assunto pesquisando no Google "wheel group rms" ou similar.
fonte
Sim. Assumindo o seu sistema Linux habitual, o
pam_unix.so
mó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:
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.
Claro que é útil, permite que você se eleve
root
, se você souber a senha.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 usarsudo -i
ousudo -s
(ousudo /bin/bash
etc.) se você quiser executar o shell.Veja acima. Bem, nem todos os sistemas têm
sudo
como alternativa, não tenho certeza se você considera isso histórico.Na verdade, não, tanto quanto eu sei. Eu acho que alguns sistemas foram
su
configurados para que apenas membros de um grupo específico ("wheel
") possam executá-lo. Você pode fazer o mesmosudo
se 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,
su
venha com ologin
pacote, provavelmente não é uma boa ideia remover o pacote como um todo. (E o emparelhamentologin
esu
juntos dessa maneira parece um pouco histórico.)fonte
wheel
grupo para usarsu
. Existem alguns sistemas BSD (só posso falar pelo OpenBSD) que não são fornecidossudo
(é um pacote de terceiros). O OpenBSD possuidoas
uma reimplementação do básicosudo
, mas é desativado por padrão ao instalar um sistema novo.wheel
se quisersu
fazer o root. Qualquer conta podesu
para qualquer conta não raiz para a qual eles tenham a senha, independentemente de serem membros dowheel
grupo.su
o ambiente então? Parece não fazer isso no Debian ...Você já tem boas respostas, mas há uma parte da sua postagem que elas não abordam.
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).fonte
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ó.
fonte
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.
fonte
sudoers
tertargetpw
ourootpw
definir.su
ser executável por todos.