Debian: SSH: “PermitRootLogin = apenas comandos forçados” parou de funcionar

5

Eu tenho vários servidores rodando o Debian Lenny.

Recentemente, descobri a diretiva PermitRootLogin = forced-commands-only para ssh, que me permite executar um script rsync como root com uma chave ssl, sem permitir acesso root mais generalizado ssh. / p>

No entanto, na semana passada, isso parou de funcionar - aparece em todos os meus servidores - e não consigo entender o motivo.

Tudo continua a funcionar bem com PermitRootLogin = yes , mas eu prefiro bloquear logins de root - especialmente por meio de senhas.

No dia em que parou de funcionar, nós reconfiguramos algumas das portas em um de nossos switches (que posteriormente revertemos), mas não vejo isso afetando isso, pois ainda funciona com PermitRootLogin definido como yes.

Como posso diagnosticar porque a diretiva somente com comandos forçados aparentemente parou de funcionar?

    
por Brent 09.02.2010 / 20:51

2 respostas

8

"PermitRootLogin forced-commands-only" requer que todas as conexões, via SSH como raiz, precisem usar autenticação de chave pública e que um comando seja associado a essa chave (como 'validate-rsync').

Se você quiser fazer login como root, mas apenas com as chaves, use:

PermitRootLogin = without-password

Para restringir o rsync a uma chave ssh definida, você pode especificar em suas authorized_keys:

from="<ip>",command="/usr/local/sbin/validate-rsync" ssh-dss AAAAZ5Hbl......

E salve este wrapper em: / usr / local / sbin / validate-rsync

#!/bin/sh 

case "$SSH_ORIGINAL_COMMAND" in 
*\&*) 
echo "Rejected" 
;; 
*\(*) 
echo "Rejected" 
;; 
*\{*) 
echo "Rejected" 
;; 
*\;*) 
echo "Rejected" 
;; 
*\<*) 
echo "Rejected" 
;; 
*\'*) 
echo "Rejected" 
;; 
*\|*) 
echo "Rejected" 
;; 
rsync\ --server*) 
$SSH_ORIGINAL_COMMAND 
;; 
*) 
echo "Rejected" 
;; 
esac 

Existe um script um pouco mais complicado enviado com o rsync para fazer o mesmo, link

    
por 15.04.2010 / 08:10
0

Se o rsync puder logar como root, então qualquer um pode: não há diferença para o servidor em que está batendo. Eu acredito que foi experimental / hacky, ou eles apenas perceberam que não é mais seguro que 'sim'.

Eu sugeriria que você desabilitasse a senha auth para root (por exemplo, remova a senha e use sudo quando necessário) e confie no método de chave auth.

    
por 09.02.2010 / 21:41