debian aptツールにhttpsトランスポートがないのはなぜですか?


45

NSAの啓示とすべてに付随するすべての妄想で、なぜdebianパッケージのインストールメカニズムがそのトランスポートでHTTPSをサポートしていないのか、デフォルトでそれを使用しているのか疑問に思います。

debianパッケージにはGPGを使用した何らかの署名検証がありますが、HTTPの代わりにHTTPSトランスポートを使用することは、これがセキュリティ上どれほど重要であるかを考えると難しいとは思いません。

編集:私は主に、Debianミラー管理者ではなく、MitM攻撃(トラフィックスニッフィングのみを含む)から身を守りたいです。HTTPリポジトリは、誰かがdebianミラーに行く私のトラフィックを覗き見する場合、システム全体のセットアップをテーブルに置きます。



不要...パブリックコンテンツ...パッケージがチェックサムに署名しています
スカペレン

わかりましたので、インストール/アップグレードするパッケージをネットワーク管理者に知らせないでください。
スカペレン

管理者、または他の盗聴者。
zaadeh

回答:


49

がある。パッケージをインストールする必要がありますapt-transport-https。次に、次のような行を使用できます

 deb https://some.server.com/debian stable main

あなたのsources.listファイルに。ただし、通常はコンテンツ全体が公開されており、暗号化のオーバーヘッドと待機時間が追加されるため、通常は必要ありません。攻撃者の公開キーを信頼しないため、httpトラフィックでさえMitM攻撃から安全です。apt攻撃者が操作されたパッケージを挿入すると、警告が表示され、パッケージのインストールに失敗します。

編集:コメントで述べたように、TLSリポジトリを使用する方が確かに安全です。HTTPトランスポートはリプレイ攻撃に対して脆弱であるため、暗号化されていないリポジトリでaptを使用すると、実際にセキュリティリスクが生じる可能性があることが調査により示されています。


7
いいえ、ほとんどのミラーはhttpsをサポートしていません。単に、この種のトラフィックを暗号化するのはあまり意味がないからです。パッケージはとにかく検証されており、情報は公開されています。
マルコ

4
私はまだTLS経由でダウンロードすることを好むかもしれないいくつかの理由を考えることができます:1)パッケージをインストールするとき、私はプライバシーを気にするかもしれません、2)MITMが悪用できるパッケージ署名チェックコードにバグがあるかもしれません。
ジャックオコナー

2
@ JackO'Connor、プライバシーに関する最初の異論は理解できるが、2番目は、TLSコードにバグがある可能性があるため、PGPキーでコンテンツに署名するウェブサイトが好きだと言っているようなものです。PGPとTLSの両方が信頼を確立します。そのために両方は必要ありません。
ポールドレイパー

7
@Marcoあなたの答えは間違っています。多くの研究論文は、APTとYUMの両方のリポジトリが、GPG署名を使用しても、HTTP経由でリポジトリにアクセスするとリプレイ攻撃に対して脆弱であることを示しています。リポジトリには、常に100%のTLSを介してのみアクセスする必要があります。
ジョー・ダマート

6
ここで @Joe Damatoが参照する用紙がある-また、彼の答えを参照してくださいここに
SauceCode

17

あなたの仮定は間違っています:HTTPSダウンロードを使用できます。それをサポートするミラーを見つけ、そのURLをソースのリストに入れるだけです。apt-transport-httpsパッケージをインストールする必要があります。

Debianは、メリットがほとんどないため、HTTPSのダウンロードを簡単にしません。Debianパッケージ配布には、パッケージを検証するメカニズムがすでに含まれています。すべてのパッケージはGpgで署名されています。アクティブな中間者が破損したパッケージを使用してサーバーにトラフィックをリダイレクトする場合、GPG署名が有効ではないため、破損が検出されます。HTTPSの代わりにGPGを使用すると、エンドユーザー接続でのアクティブな中間者だけでなく、不正または感染したミラー、またはパッケージ配布チェーン内のその他の問題に対しても、より多くの脅威から保護するという利点があります。 。

HTTPSは、ダウンロードするパッケージを不明瞭にするという点で、わずかなプライバシー上の利点を提供します。ただし、パッシブオブザーバーはコンピューターとパッケージサーバー間のトラフィックを検出できるため、Debianパッケージをダウンロードしていることがわかります。また、ダウンロードしているパッケージをファイルサイズから把握することもできます。

HTTPSが役立つ1つの場所は、既知の有効なインストールイメージを取得するための信頼のブートストラップです。Debianはそれを提供していないようです:インストールメディアのチェックサムがありますが、HTTP経由のみです。


インストールメディアのHTTPSバージョンがあります:cdimage.debian.org/debian-cd
Fedir RYKHTIK

2
メリットはほとんどありませんか?何についてjusti.cz/security/2019/01/22/apt-rce.html
アーロンフランケ

@AaronFranke HTTPSを使用するよりもHTTPを使用する方が簡単な特定のバグはほとんどありません。HTTPがHTTPSよりも攻撃面が大きいようではありません。実際、HTTPS自体はより多くのコードを必要とするため、攻撃面が大きくなります。したがって、それはまったくの純益でさえありません。それは、2つの限界リスク間のトレードオフです。
ジル「SO-悪であるのをやめる」

9

つい最近、会社のaptリポジトリに関する問題を見つけました。問題は、標準のhttpトランスポートを使用すると、だれでも簡単にパッケージを取得できることです。会社は独自のプロプライエタリなソフトウェアをパッケージ化しており、それを全員と共有したくないため、httpトランスポートが問題になります。悲劇ではなく問題です。パッケージへのアクセスを制限する方法はいくつかあります-ファイアウォール、Webサーバーレベルでのアクセス制限、sshをトランスポートとして使用。このトピックに関する非常に読みやすい記事は、ここにあります: プライベートDebianリポジトリへのアクセスを制限する

この場合、httpsトランスポート+クライアント証明書認証を使用することにしました。簡単に言うと、必要なことは次のとおりです。

  1. 自己署名証明書、クライアント、およびサーバーを準備します(easy-rsaを使用)。
  2. httpsのみを受け入れるようにリポジトリの前にあるWebサーバーを構成します。nginxの場合、次のようになります。

    server {
    
      listen 443;
    
      root /path/to/public;
      server_name secure_repo;
    
      ssl on;
      ssl_certificate /etc/nginx/ssl/server.crt;
      ssl_certificate_key /etc/nginx/ssl/server.key;
    
      ssl_session_timeout 5m;
    
      ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
      ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv3:;
    
      ssl_prefer_server_ciphers on;
      ssl_client_certificate /etc/nginx/ssl/ca.crt;
      ssl_verify_client on;
    
      location / {
         autoindex on;
      }
    }
    
  3. クライアント証明書、クライアントキー、およびCA証明書を/ etc / apt / sslに配置し、Ubuntuの場合、00httpsファイルを/etc/apt/apt.conf.dに追加します。

    Debug::Acquire::https "true"; Acquire::https::example.com { Verify-Peer "true"; Verify-Host "false"; CaInfo "/etc/apt/ssl/ca.crt"; SslCert "/etc/apt/ssl/client.crt"; SslKey "/etc/apt/ssl/client.key"; };

自己署名証明書を使用している場合、ホスト検証をオフにすることが重要であることに注意してVerify-Host "false";ください。これを行わないと、エラーをキャッチします。 SSL: certificate subject name (blah-blah-blah) does not match target host name 'example.com'

これで、リポジトリへの不正アクセスはなくなりました。したがって、これは非常に便利で強力なものです。


3
すばらしい回答をありがとう。しかし、主な問題はまだそこにあると思います。HTTPSは、特にWebおよびdebianパッケージを介した転送のデフォルトのプロトコルになるはずです。引数はなぜHTTPSではなく、なぜHTTPSではないのですか?
-zaadeh

1
@aalizadeh、私はあなたに同意します、httpsを使用するとオーバーヘッドがありますが、大きなオーバーヘッドはありません。httpsがデフォルトのトランスポートではない主な理由は、一部の組織が暗号化されたトラフィックを明示的に禁止しているためです(従業員がインターネット上で行っていることに鼻を突っ込みたいため)、つまりリポジトリがサポートする必要があることを意味しますhttpとhttpsの両方のトランスポート。他の考慮事項がありますすることができる
at0S

1
自己署名証明書の場合でも、»Verify-Host "false";«の使用は間違っています。代わりに、クライアントに(正しい)サーバー証明書を認識させる必要があります。
アクセルベッカート

1
確かに、しかしここでは私のクライアントは内部システムのみでした。したがって、すべての適切なpkiインフラストラクチャを作成する代わりに、私は角を切りました。そして、はい、後でpkiは適切に解決され、Verify-Hostはfalseです。削除されました。はい、ポイントは有効です。
at0S

1
ubuntu xenialでは、aptパッケージが非特権ユーザー_aptとして取得されます。ファイル許可の問題を管理または解決した方法の詳細でこのスレッドを更新してください。
デビッド

7

のような脆弱性のために注意してください

https://bugs.launchpad.net/ubuntu/+source/apt/+bug/1647467

... InRelease署名を回避するため、おそらくHTTPSを構成することをお勧めします。


1
そして今も、この1:mirror.fail AKA usn.ubuntu.com/3746-1 AKA CVE-2018から0501まで。InRelease署名では不十分です。「しかし、すべてのミラーをHTTPSに移動するには、時間と調整が必要です!」はい。今すぐ始めましょう。これは最後のInReleaseの失敗ではありません。
ロイスウィリアムズ

1
別のエコシステムからの別の例があります-アルパイン。そのパッケージ管理システムはデフォルトでHTTPSを使用せず、パッケージの整合性を検証するために署名のみに依存しています...そしてその検証には2018年9月にリモートで悪用可能なバグがありました:justi.cz/security/2018/09/13/alpine- apk-rce.html Alpineは、デフォルトでHTTPSを使用するようになりました。
ロイスウィリアムズ

4

「匿名」のユースケースには、sources.listファイルのapt-transport-torようtor+http://にURIを入れることもできます。これは、単にミラーへの接続を暗号化するよりもはるかに優れた匿名保護です。

たとえば、ローカルオブザーバーは、HTTPSを使用してもソフトウェアを更新またはインストールしていることを認識しており、おそらく実行している(および場合によってはサイズに基づいて)パッケージについてある程度の推測を行うことができます。

Debianは、Tor "Onion services"を介してAPTリポジトリを提供するため、ドメイン名システムを信頼する必要なく、エンドツーエンドの暗号化(TLSに類似)を取得できます。この方法で利用可能なすべてのDebianサービスについては、onion.debian.orgを参照してください。メインのDebian FTPリポジトリはvwakviie2ienjx6t.onion

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.