Segurança SVN + SSH

9

Eu uso o snv + ssh com autenticação baseada em chave. Agora, para que qualquer um dos meus usuários svn acesse o repositório através do Subversion, devo configurar os arquivos de repositório para serem legíveis e graváveis ​​no sistema de arquivos para esses usuários.

Desejo impedir que os usuários possam excluir o banco de dados repo quando estiverem conectados ao servidor via ssh, mas ainda assim poderão fazer check-out e confirmar o código.

Pensamentos sobre como posso fazer isso?

Brad Smith
fonte

Respostas:

4

Para acessar uma URL svn + ssh, o cliente svn inicia uma instância svnserve usando "ssh -q usuário @ host svnserve -t" e conversa com essa instância por meio de stdin / stdout.

Se seus usuários precisam de acesso ssh normal, você ainda pode impedi-los de acessar o repositório limitando o acesso a um usuário (chown -R svnserve: svnserve repo; chmod -R g-rwx, o-rwx repo) e substituindo o comando svnserve por este programa wrapper setuid / setgid svnserve .

Alex Jasmin
fonte
10

Em um ambiente de usuário compartilhado, eu recomendaria configurar um servidor Subversion real ( svnserveou através do Apache). Nesse ambiente, usuários individuais não precisam acessar os arquivos do repositório, porque todo o acesso aos arquivos é feito sob a conta do usuário do processo do servidor.

O livro do Subversion possui uma seção sobre Escolhendo uma configuração do servidor que pode ajudar. A partir dessa seção (ênfase minha):

Se você possui uma infraestrutura existente fortemente baseada em contas SSH e se seus usuários já possuem contas de sistema na máquina do servidor, faz sentido implantar uma solução svnserve-over-SSH. Caso contrário, não recomendamos amplamente esta opção ao público. Geralmente é considerado mais seguro permitir que seus usuários acessem o repositório por meio de contas (imaginárias) gerenciadas pelo svnserve ou Apache, em vez de por contas de sistema completas.

Greg Hewgill
fonte
4

Este site tem alguns truques interessantes: http://svn.apache.org/repos/asf/subversion/trunk/notes/ssh-tricks

Se nada disso funcionar para você, talvez uma solução alternativa possa fazer o truque? Você pode fazer um backup do repositório sempre que alguém confirmar algo adicionando algo assim aos ganchos de confirmação: sudo rsync -a / meu / repo / caminho / meu / fechado / caminho /

Comandante Keen
fonte
2

Vejo duas direções possíveis para atacar esse problema:

  • forneça acesso limitado ao shell, por exemplo, os usuários só podem usar svn com suas contas (pode precisar de outra conta se o acesso ao shell também for necessário para outros fins) - Encontrei algumas referências interessantes pesquisando no svnonly no Google . Nota: não tentei eu mesmo.
  • migrar para o subversion por https, adicionando certificados de cliente. Eu já vi pessoas discutindo isso, mas nunca fiz isso sozinho. Desvantagem: requer distribuição de certificados de cliente, além das chaves ssh.
Olaf
fonte
1

Concordo com Greg e Olaf - vá para acesso https. Estou usando essa configuração há algum tempo e não vejo realmente nenhuma desvantagem.

você obterá benefícios adicionais do controle de acesso refinado no repositório - para tornar algumas partes somente leitura e outras completamente inacessíveis para usuários selecionados.

pQd
fonte