Passei muito tempo tentando descobrir por que o SSH com uma chave pública-privada não estava funcionando para mim entre dois servidores. Descobriu-se que o motivo era que o diretório inicial do usuário era gravável para o grupo no servidor ao qual tentei me conectar.
Qual é o maior risco de segurança para o SSH negar login de chave pública-privada, quando a pasta do usuário pode ser gravada no grupo versus quando não pode ser gravada no grupo? Entendo a justificativa para a limitação restritiva esperada da própria pasta .ssh e, portanto, dos arquivos dentro dela. Mas, por que existe um perigo para o próprio diretório inicial? Que constelação pode fazer isso perigosamente?
Se o diretório inicial for gravável em grupo, qualquer usuário desse grupo poderá modificar o
.ssh
próprio diretório, por exemplo:E obtenha acesso à conta desse usuário.
Se
/home
, ou qualquer outro pai de um.ssh
diretório for gravável, posso tirar os filhos diretos do caminho, causando pelo menos uma negação de serviço:Agora
victim
não é possível fazer login com uma chave ssh. (No entanto, uma senha ainda funcionaria.)Vamos supor que a “vítima” tenha uma senha válida e possa ignorar a falha da
ssh
chave como apenas uma dessas coisas. Principalmente porque (esperamos) não será um problema reproduzível. Neste cenário, podemos criar uma escalada silenciosa de privilégios:Finalmente, coloque sua própria
ssh
chave pública/tmp/.id.pub
e espere que a vítima faça login. Depois que ela fizer isso, você descobrirá que sua própriassh
chave foi adicionada àauthorized_keys
lista e poderá fazer login como ela:Para ganhar pontos extras, você pode estender o ataque para capturar o carimbo de data original no
authorized_keys
arquivo e restaurá-lo após adicionar sua própria chave (vejastat --format '%Y'
etouch --date
).Se o cenário for simplesmente que o próprio diretório inicial de um usuário seja gravável, então, que eu saiba, gere apenas uma negação de serviço contra as
ssh
próprias chaves:Deixe assim, para que
ssh
as chaves não estejam mais disponíveis, ou tente adicionar uma nova chave:Neste segundo caso
ssh
, objeta e o ataque falha:A propriedade e as permissões ainda estão marcadas
.ssh
e.ssh/authorized_keys
, no entanto, você não está realmente em melhor situação.