apt-getでhttpsを使用する方法は?


51

apt-getHTTPSまたは暗号化のいずれかの種類を使用できますか?それを使用するように設定する方法はありますか?


3
ためのような脆弱性の注意bugs.launchpad.net/ubuntu/+source/apt/+bug/1647467 ...回避するには署名をInRelease、それはとにかくのconfigure HTTPSに、おそらく良いアイデアです。
ロイスウィリアムズ

whydoesaptnotusehttps.comは、この質問に正確かつ広範囲に答えるWebページです。
m.raynal

1
これが役立つ理由はもっとありふれた理由があります。私は、特定のdebダウンロードをブロックする傾向がある壊れた「透明な」プロキシを使用してインターネットに接続していることがよくあります(それらはおそらくいくつかの愚かなマルウェアブロッカーをトリガーします)。しかし、httpsを介して、プロキシは私がダウンロードしているものを知らないため、干渉しません。
ネイト・エルドリッジ

回答:


53

apt-get(および同じAPTライブラリへのフロントエンドである他のパッケージ操作コマンド)は、HTTP、HTTPS、およびFTP(およびマウントされたファイルシステム)を使用できます。およびでhttps://URL を指定する/etc/apt/sources.list/etc/apt/sources.list.d/*、APTはHTTPSを使用します。

APTはパッケージの署名を検証します。そのため、データ認証を提供する交通手段を用意する必要はありません。攻撃者がダウンロードしているファイルを変更すると、これに気づくでしょう。署名検証を使用すると、HTTPS接続を使用するよりも優れています。転送中の攻撃だけでなく、ダウンロード元のサーバーに対する攻撃を検出できるためです。

より正確には、パッケージの(簡略化された)データフローは次のとおりです。

  1. パッケージはビルドマシンで作成されます。
  2. パッケージはビルドマシンで署名されます。
  3. 署名されたパッケージがダウンロードミラーにコピーされます。
  4. パッケージをダウンロードします。

HTTPSにより、ステップ4が正しく実行されます。パッケージの署名により、手順2〜4が正しく実行されるようになります。

実際、ステップ4のHTTPSには1つの小さな利点があります。パッケージの署名は、パッケージが本物であることを保証するだけです。ステップ4の攻撃者は、正当なサーバーになりすまして、古いバージョンのパッケージを提供する可能性があります。たとえば、攻撃者がセキュリティ更新プログラムをダウンロードできないようにすることで、攻撃のためではない場合に修正プログラムを適用するマシンの脆弱性を悪用する可能性があります。アクティブな攻撃者を必要とするため(これはインターネット接続を制御する誰かである必要があります)、これはあまり現実的なシナリオではありませんが、原則として発生する可能性があります。

HTTPSのもう1つの利点は、ネットワーク接続で索している誰かからUbuntuパッケージをダウンロードしているという事実を隠そうとしている場合です。その場合でも、盗聴者は接続しているホストを確認できます。Ubuntuミラーに接続して数百メガバイトをダウンロードした場合、Ubuntuパッケージをダウンロードしていることは明らかです。盗聴者は、ファイルのサイズからダウンロードしているパッケージをほとんど把握することもできます。したがって、HTTPSは、同様のサイズの他のファイルも提供するサーバーからダウンロードする場合にのみ役立ちます。サードパーティのパッケージを除いて、非常に珍しい状況でのみポイントが表示されません。

繰り返しになりますが、HTTPSの通常の利点は、実際のサーバーに接続していることを知っていることですが、Ubuntuパッケージをダウンロードしているときには役に立ちません。パッケージの署名検証は、HTTPSが提供できるものよりも強力な保証を提供します。


11
安全ではないということではなく、保護しようとしているものとの関連性が低いということです。APTでは、トランザクションのコンテンツを暗号化することはそれほど重要ではありません。なぜなら、ダウンロードするものは非常に議論の余地がないからです。多くの人がダウンロードするUbuntuパッケージと同じだからです。しかし重要なことは、受け取ったファイルが改ざんされていないことを確認することです。
-thomasrutter

3
数週間前、ソースをhttpsに変更apt-get updateしようとしましたが、リンクがアクセスしようとしたときにエラーが報告されるだけで機能しませんでした。PPAの場合:同じ。誰か試してみましたか?
ストラパコフスキー

8
これが機能するには、リポジトリ(更新サーバー)がhttps / SSLサポートする必要があります。メインarchive.ubuntu.com はしません。あなたはディレクトリのリストを取得する場合など、// URLにして見て:サーバーがサポートする場合は、それが接頭辞httpsをして、ブラウザで確認することができます
っぽい

7
「ステップ4の攻撃者は、正当なサーバーになりすまして、古いバージョンのパッケージを提供する可能性があります。」実際に、パッケージ情報に有効期限を与えることでこれを防ぎます。この日付以降、APTはミラーが古いことを警告します。
タンブルウィード

4
ここでは、リストを生成するスクリプトと一緒にHTTPSをサポートするすべての15枚のミラーのリストです:pastebin.com/QY2TQ1dq
Shnatsel

13

APTを使用する場合、通常、より重要なのは、接続が暗号化されていることではなく、受信しているファイルが改ざんされていないことです。

APTには、これを保証するための組み込みの署名検証があります。

暗号化は盗聴者があなたがダウンロードしているものを見ることができないようにしますが、実際にダウンロードしている(そして要求している)ことはかなり議論の余地がありません:それは他の何千人ものUbuntuユーザーがダウンロードしているものと同じであり、ファイルには何も含まれていません」多くのサーバーで自由に利用できます。それでも、特にダウンロードするパッケージについてプライバシーが必要な場合は、HTTPSを使用できます(sources.listで指定します)。

APTに組み込まれている署名検証により、受け取ったファイルが改ざんされていないことが確認されます。ファイルがどこから来たのかは問題ではなく、サーバーとサーバーの間にプロキシーまたはリバースプロキシーを配置して、サーバーの負荷を軽減したりスピードアップしたりすることも可能です。署名の検証により、元のファイルとUbuntuの秘密キーのコピーでのみ暗号的に生成される署名と一致する、変更されていないファイルを取得していることが保証されます。

HTTPSに切り替えると、プロキシサーバーを利用してアクセスを高速化したり、負荷を軽減したりできなくなります。そして、APTの署名検証がまだ提供していないことを改ざんしないという保証を追加することはありません。ただし、盗聴者(ISPなど)は、ダウンロードしているパッケージを見ることができません(これは機密ではない可能性が高く、Gillesが指摘したように、ファイルサイズから推測できます)。


3
HTTPSは、ファイルのサイズが見えるため、プライバシーをあまり与えません。実際、HTTPSには小さな利点があります。つまり、ネットワーク接続を制御している攻撃者が古いデータを静かにすり抜けることができないということです。それは少し大げさです。
ジル 'SO-悪であるのをやめる

6
良い点。「古いデータ」とは、中間者が、少し前のバージョンで構成されたUbuntuミラーのバージョンをセットアップすることを意味すると思いますが、Ubuntuがその時点で署名したものから変更されていません。
-thomasrutter

5
はい、それだけです。私が少しおかしなことを指摘することをheしないでください。これは、Ubuntuであり、情報セキュリティではないことを覚えておく必要があります。
ジル 'SO-悪であるのをやめる

aptには大きな穴があるように見えます- apt update真ん中に男性が偽のインデックスをフィードしている場合、aptは真ん中の男性があなたに与えたものは何でも喜んで受け取り、/ var / lib / apt / listsに書き込みます。これは真ん中に悪人がいるだけではありませんが、ホテルのWiFiにいてログインページにリダイレクトされる場合、ログインするapt update前に実行すると/ var / lib / apt / listsはゴミ箱に入れられますホテルのホームページのHTMLで。ボーガス!とにかく基本的なTLS証明書のチェックはこれをすぐに除外します。
マリウス

@Mariusこれは、リストとパッケージをカバーする検証のために可能になるとは考えられていません。これを標準のAptインストールで再現した場合は、メンテナーに報告する必要があります。
thomasrutter

1

最近のAPTリリースにはTLSサポートが組み込まれているため、パッケージリポジトリミラーURLをhttps-prefixed に置き換えるだけです。Debianの場合、次のようになります。

deb https://deb.debian.org/debian/ stretch main
deb https://deb.debian.org/debian-security stretch/updates main
deb https://deb.debian.org/debian/ stretch-updates main

APTにはバグがある可能性があるため(これまでにCVE-2016-1252CVE-2019-3462)、APTにはパッケージが改ざんされないようにする独自の署名プロトコルが含まれていますが、これは便利です。HTTP / TLSプロトコルとその暗号は厳重な調査の対象となるため、このセキュリティレイヤーを追加した場合、深刻なゼロデイ脆弱性はほとんど発生しません。


おっと、このサイトがAsk Ubuntuであることがわかりました。:) Ubuntu用の同様のCDNソリューションが見つかりませんでした。
レイフアルネストーセット

0

この質問は、素人向けの指示を含む回答を使用できると思うので…

APTは、Ubuntu 19.10(Eoan)の毎日のビルド(まだ開発中)で、デフォルトでHTTPSをまだ使用していません。これは、/ etc / apt / sources.listファイルを調べて、すべてのソースURLが「http:」URLスキームを使用していることを確認することで確認できます。

HTTPSを使用するように設定するには、次の手順に従います。

まず、HTTPSをサポートする信頼できる公式のUbuntuアーカイブミラーを見つけます。

  1. 移動Ubuntuの公式アーカイブミラーのウェブページ。
  2. そのWebページの表で、(A)信頼できると考えられるWebサイトでホストされているミラーを特定します。(B)「http:」ミラーを持ち、オプションで(C)地理的近接性、サーバー速度、および更新を満たします。鮮度の好み。
  3. そのWebページの表で、手順(2)で特定されたミラーの「http」リンクをクリックして、ミラーの「http:」バージョンにアクセスします。
  4. ブラウザのアドレスバーで、WebページのURLの「http:」を「https:」に手動で変更します。
  5. 「https:」URLを介してミラーに再度移動し、解決するかどうかを確認します。

たとえば、私はウィキメディア財団を信頼できると考えているため、http://mirrors.wikimedia.org/ubuntu/ミラーURLにアクセスし、その後https://mirrors.wikimedia.org/ubuntu/に変更しました。これで問題は解決しました。

Firefox(67.0.4)を使用し、HTTPS Everywhere(2019.6.27)拡張機能をインストールし、「すべてのサイトを暗号化する」機能を有効にした場合(ツールバーボタンパネルを使用)、手順(4)および(5)を省略できます。拡張機能はHTTPSを使用するようにURLを自動的に変更するため、URLの「https:」バージョンが解決されるかどうかをより迅速に判断できます。

2つ、APTソースリストを更新します。

  1. コマンドsudo cp /etc/apt/sources.list /etc/apt/sources.list.backupを実行して、更新ソースリストをバックアップします。
  2. コマンド内のミラーベースURL(ここではhttps://mirrors.wikimedia.orgとして表示)を優先ミラーのミラーベースURLに置き換えてから、コマンドsudo sed --in-place --regexp-extended 's http://(us\.archive\.ubuntu\.com|security\.ubuntu\.com) https://mirrors.wikimedia.org g' /etc/apt/sources.listを実行します。

3番目に、Ubuntuアーカイブの外部からソフトウェアをインストールした後に「https:」に変更される可能性のある「http:」ソースの/etc/apt/sources.list.d/ディレクトリの内容を調べる必要があります。

たとえば、MicrosoftのVisual Studio Codeパッケージは、「http:」URLを指定するvscode.listファイルをこのディレクトリに追加します。URLスキームを「http:」から「https:」に変更するだけで、HTTPSを介した更新が可能になります。

変更する前に、そのようなソースファイルをバックアップすることを検討してください。

最後に、アップデートを実行して、アップデートが正しく機能することを確認します。

  1. sudo apt-get updateコマンドを実行します。
  2. 期待どおりに動作しない場合は、sudo cp /etc/apt/sources.list.backup /etc/apt/sources.listコマンドを実行して作成したバックアップソースリストファイルを復元します。

また、APTにHTTPSサポートを追加するapt-transport-httpsパッケージがあることにも注意してください。ただし、このパッケージはWebページhttps://launchpad.net/ubuntu/eoan/+package/apt-transport-httpsによれば明らかに不要であり、コマンドの実行後に表示される情報によると、APT 1.5以降は必要ありませんapt-cache show apt-transport-https

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