Restringir com segurança o acesso a um repositório Debian privado

9

Eu estava procurando por um método para restringir o acesso a um repositório Debian privado e ser capaz de autenticá-lo de forma não interativa (ou seja, usando um script)

O artigo mais útil que eu encontrei se realmente um de site de administração do Debian mas o método seguro usa ssh e public / chaves privadas. Ele funciona muito bem, mas a chave pública de cada host precisa estar dentro do arquivo remote_keys remoto para autenticar com êxito. Ele não diz nada sobre o fornecimento de senha para ssh: //, mas suponho que isso seja possível.

Já experimentou outras alternativas (por exemplo, ftps)?

Obrigado antecipadamente

    
por Humber 11.02.2010 / 13:49

5 respostas

5

Se você sempre executar apt-get em seus servidores manualmente (sem comandos apt-get automáticos iniciados pelo crons), poderá considerar o uso do encaminhamento de agente ssh . Isso evita ter que gerenciar um par de chaves público / privado por servidor que você gerencia, e é provavelmente mais seguro do que deixar chaves privadas em todos os servidores.

Configuração inicial - conecte-se aos servidores que você deseja gerenciar e adicione algo assim a /etc/apt/sources.list (este exemplo assume que você deseja que seus servidores se conectem à conta manager ):

    deb ssh://[email protected]/path other stuff
  • crie um par de chaves privadas / públicas no seu próprio computador, com seu login johndoe por exemplo (desde que seu computador seja executado no debian: se não, você pode fazer isso de um servidor debian dedicado ao gerenciamento):

    ssh-keygen
    
  • verifique se ele está protegido por uma frase-chave strong
  • copie sua chave pública para o servidor de repositório em /home/manager/.ssh/authorized_keys :

    ssh-copy-id [email protected]
    

Uma vez por sessão de gerenciamento

  • inicie o agente ssh em sua máquina digitando:

    eval 'ssh-agent'
    
  • adicione sua chave ao agente (isso exigirá sua frase secreta):

    ssh-add
    

Gerenciando um servidor

  • conecte-se ao servidor que você deseja gerenciar usando ssh -A ( -A ativa o encaminhamento de agentes):

    ssh -A some.server.org
    
  • alterne para a raiz (se você quiser usar sudo , precisará configurar /etc/sudoers ou senão sudo interromperá o encaminhamento do agente, leia isto ):

    su
    
  • agora você deve conseguir se conectar à conta de administrador do repositório usando o ssh sem digitar sua senha novamente, graças ao encaminhamento do agente. Portanto, apt-get deve funcionar bem:

    apt-get udate
    

Encerrando sua sessão de gerenciamento

  • Quando terminar de gerenciar seus servidores, remova as chaves do agente:

    ssh-add -D
    

Vantagens

  • Não é necessária muita configuração inicial
  • Apenas uma chave privada é necessária
  • A chave privada é protegida por uma senha strong
  • Se alguém obtiver acesso root a um de seu servidor, ele não terá acesso imediato ao seu servidor de repositório.
    • Observe que, se o hacker for paciente e qualificado, ele poderá esperar até você se conectar ao servidor usando o encaminhamento de agente e poderá seqüestrar o mecanismo de encaminhamento para obter acesso ao seu servidor de repositório.
    • Para ajudar a evitar isso, você pode usar ssh-ask para aceitar / recusar todas as tentativas de usar sua chave.
    • Em qualquer caso, o hacker não obterá acesso à própria chave privada: ele só poderá seqüestrar o mecanismo de encaminhamento para usar a chave, e somente durante o tempo que você está conectado ao servidor.
por 22.02.2010 / 11:34
4

Uma maneira de fazer isso é apenas permitir que um determinado conjunto de IPs acesse o repositório. Isso funciona muito bem para LAN e VPN.

Simples e eficiente.

    
por 11.02.2010 / 14:05
2

A solução de chaves pública / privada ssh + não é ruim:

  • faça o login como root na máquina do cliente
  • digite ssh-keygen e, em seguida, ssh-copy-id [email protected]
  • edite /etc/apt/sources.list e adicione algo como:

    deb ssh://[email protected]/path other stuff
    

É necessário que você coloque a chave pública de cada servidor no arquivo ~/.ssh/authorized_keys no servidor, mas não é tão complicado (veja acima) e dá a você o controle sobre quais servidores você permite ou não a qualquer momento ( você pode remover uma chave a qualquer momento em authorized_keys ).

    
por 21.02.2010 / 23:41
1

Você pode configurar um acesso https ao seu repositório, protegido por login / senha (autenticação básica). O problema é que você precisa colocar o login / senha em texto puro em /etc/apt/sources.list (nota: existe um patch para permitir que o login / senha seja colocado em /root/.netrc ).

    
por 22.02.2010 / 10:42
0

O link na sua pergunta mostra vários métodos. Você quer o número 2, https + autenticação básica.

    
por 22.02.2010 / 00:06