Evita o acesso do usuário ao console, mas ainda permite que o svn + ssh: // acesse os repositórios do SVN

3

Eu crio um usuário john no meu servidor e o adiciono ao grupo SVN para que possamos compartilhar nosso código e tudo parece bem. Agora eu quero impedir que esse usuário se conecte ao console ou shell via SSH. No arquivo /etc/ssh/sshd_confing , adiciono estas linhas:

Match User john
  ForceCommand svnserve -t

Gostaria de perguntar se minha configuração é segura o suficiente? Comandos SVN sobre SSH funcionam bem. Quando ele tenta se conectar, ele fica:

blueprint:~ john$ ssh john@91.***.***.96 -p **5
john@91.***.***.96's password:
( success ( 2 2 ( ) ( edit-pipeline svndiff1 absent-entries commit-revprops depth log-revprops partial-replay ) ) )

^CConnection to 91.***.***.96 closed.
blueprint:~ john$

Eu tenho duas perguntas:

  • É isso? Existe uma maneira de um john se logar em meu servidor de uma maneira que possa ser hackeada de alguma forma?
  • Existe uma opção no servidor para lhe devolver uma mensagem legal You do not have permission to login! ?
por Marek 14.09.2013 / 13:31

1 resposta

4

Esta é uma maneira correta de como fazer isso. Eu tenho apenas dois pontos como você também pode melhorar a segurança do seu servidor SVN.

Primeiramente, você pode permitir somente a autenticação de chave pública SSH. Em caso afirmativo, você pode bloquear a senha do usuário com

passwd -l USERNAME

Em segundo lugar, você pode criar um script wrapper simples (o shell spawned é substituído pelo comando svnserve ) e usá-lo com a opção ForceCommand , que inclui a mensagem de aviso

cat > /usr/local/bin/svn_cmd_wrapper.sh <<EOF
#!/bin/sh -f

echo "You do not have permission to login!"
echo
exec svnserve -t
EOF

Em seguida, torne-o executável

chmod u+x /usr/local/bin/svn_cmd_wrapper.sh

e use-o no arquivo sshd_config :

ForceCommand /usr/local/bin/svn_cmd_wrapper.sh
    
por 14.09.2013 / 18:03