web-dev-qa-db-ja.com

プライベートDebianリポジトリへのアクセスを安全に制限する

プライベートDebianリポジトリへのアクセスを制限し、非対話的に(つまりスクリプトを使用して)認証できる方法を探していました

私が見つけた最も有用な記事は、実際には Debian管理サイト からのものですが、安全な方法ではsshと公開/秘密鍵を使用します。正常に動作しますが、認証を成功させるには、各ホストの公開鍵がリモートのauthorized_keysファイル内にある必要があります。 ssh://にパスワードを提供することについては何も述べられていませんが、それは可能であるはずです。

他の方法(ftpsなど)を試しましたか?

前もって感謝します

9
Humber

サーバーで常に手動でapt-getを実行する場合(cronによって起動される自動apt-getコマンドはありません)、 sshエージェント転送の使用を検討してください。これにより、管理するサーバーごとに1つの公開/秘密キーペアを管理する必要がなくなり、すべてのサーバーに秘密キーを残すよりもおそらく安全です。

初期設定-管理するサーバーに接続し、次のようなものを/etc/apt/sources.listに追加します(この例では、サーバーをmanagerアカウント):

    deb ssh://[email protected]/path other stuff
  • たとえば、ログインjohndoeを使用して、秘密鍵/公開鍵のペアを自分のコンピューターに作成します(コンピューターがdebianで実行されている場合:それ以外の場合は、管理専用のdebianサーバーから実行できます)。

    ssh-keygen
    
  • 強力なキーフレーズで保護されていることを確認してください
  • 公開鍵を/home/manager/.ssh/authorized_keysのリポジトリサーバーにコピーします。

    ssh-copy-id [email protected]
    

管理セッションごとに1回

  • 次のように入力して、マシンでsshエージェントを起動します。

    eval `ssh-agent`
    
  • キーをエージェントに追加します(これにはパスフレーズが必要です):

    ssh-add
    

サーバーの管理

  • ssh -Aを使用して管理するサーバーに接続します(-Aはエージェント転送をアクティブにします):

    ssh -A some.server.org
    
  • ルートに切り替えます(Sudoを使用する場合は、/etc/sudoersを構成する必要があります。そうでない場合、Sudoはエージェントの転送を中断します これを読む ):

    su
    
  • これで、エージェント転送により、sshを使用してリポジトリのマネージャーアカウントに接続できるようになりました。パスワードを再度入力する必要はありません。したがって、apt-getは問題なく機能するはずです。

    apt-get udate
    

管理セッションを終了します

  • サーバーの管理が終了したら、エージェントからキーを削除します。

    ssh-add -D
    

利点

  • 初期構成はそれほど必要ありません
  • 必要な秘密鍵は1つだけです
  • 秘密鍵は強力なパスフレーズで保護されています
  • 誰かがあなたのサーバーの1つにルートアクセスを取得した場合、その人はあなたのリポジトリサーバーにすぐにアクセスできなくなります。
    • ハッカーが忍耐強く、資格がある場合は、エージェント転送を使用してサーバーに接続するまで待機し、転送メカニズムをハイジャックしてリポジトリサーバーにアクセスできることに注意してください。
    • これを防ぐために、ssh-askを使用して、キーの使用を試みるたびに承認/拒否することができます。
    • いずれにせよ、ハッカーはnot秘密鍵自体にアクセスできます。se鍵を取得するために、転送メカニズムを乗っ取ることができます。サーバーに接続している時間。
5
MiniQuark

これを行う1つの方法は、特定のIPセットがリポジトリにアクセスできるようにすることです。これは、LANとVPNで非常にうまく機能します。

シンプルで効率的。

4

Ssh + public/private keysソリューションはthat badではありません:

  • クライアントマシンにrootとしてログインします
  • ssh-keygenと入力し、次にssh-copy-id [email protected]と入力します
  • /etc/apt/sources.listを編集して、次のように追加します。

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

確かに、各サーバーの公開鍵をサーバーの~/.ssh/authorized_keysファイルに配置する必要がありますが、それほど複雑ではなく(上記を参照)、いつでも許可するサーバーと許可しないサーバーを制御できます( authorized_keys)でいつでもキーを削除できます。

2
MiniQuark

ログイン/パスワード(基本認証)で保護された、リポジトリへのhttpsアクセスを設定できます。問題は、クリアテキストのログイン/パスワードを/etc/apt/sources.listに入れる必要があることです(注: パッチがあります ログイン/パスワードを代わりに/root/.netrcに入れることができます) 。

1
MiniQuark

あなたの質問のリンクは複数の方法を示しています。 2番のhttps +基本認証が必要です。

0
Justin