トラストチェーンの仕組み
最近の記事「すべての家庭へのVPN」では、多くの愚かさ、つまりVPSに行き、これを入力することが提案されています。
curl -sS https://sockeye.cc/instavpn.sh | sudo bash
その記事の解説で書いたように、これは非常に大きな愚かさです。 あなたは見たこともないインターネットから盲目的にコードを実行しますが、ここではsudoであるかどうかにかかわらず、まったく重要ではありません。
主な理由は次のとおりです。
- あなたはこれができるという事実に慣れています。 これがここでの最大の問題であり、そのようなアクションを、彼に届いたメールから実行可能ファイルを開くユーザーと比較できます。 私たちは皆、Windows上の巨大なボットネットを介したこのようなアクションの結果、およびさまざまなタイプの漏洩した個人データを知っています。
- チェックサムをチェックしないため、実行していると思われるものを起動しているかどうかを判断できません。 スクリプトは、今週のgithubのように、プロバイダーによるDNSレコードの置換、ダウンロード元のサイトのハッキングなど、多数の方法で置き換えることができます。
- UNIXなどの比較的高いセキュリティの主な理由の1つである、実行中のコードを検証するためにチェックサムを使用する長年の慣行を使用しません。
理解するには、まず一般的な方法でプログラムをインストールする正しい方法を検討してください。
- あなたは著者に関する情報を探しており、彼を信頼できるかどうかを理解しようとしています。 このような情報は通常、小規模なプログラムの作成者についても見つかります。
- プログラムをダウンロードします。このパッケージ、アーカイブ、またはISOイメージの形式は関係ありません。
- sha256sum(または少なくともmd5sum)を使用して、ダウンロードしたもののチェックサムを検討します。
- 開発者のサイトにアクセスして、カウントしたものがそこに書かれているものと一致するかどうかを確認します。
- チェックサムをGoogleに送り、別のソースを見つけます。
- ほとんどの場合、プログラムの作成者が提供したかったものをダウンロードしたことを確認してください。
- これで、ソフトウェアパッケージをインストールする十分な理由があり、 あまり心配する必要はありません。
もう一度。 Linus Torvalds、Ubuntu Security Team、小さな便利なユーティリティの作成者など、すべてのセキュリティは特定の人々や企業に対する信頼に基づいて構築されています。 1.作者が信頼できること、そして2.作者が投稿したものを実行することを確認する必要があります。
さて、01年4月14日のUbuntuデスクトップのインストール例を使用して、上記の方法のアプリケーションを見てみましょう 他のすべてをインストールするときもまったく同じ方法が使用されますが、ディスクイメージではなく、たとえばアーカイブをダウンロードします。
- Canonicalは比較的よく知られた会社であり、慎重に信頼することができます。 常に信頼できるのは注意が必要です。
- ミラーからディスクイメージをダウンロードします。wgetwhatwhat/ ubuntu-14.04.1-desktop-amd64.isoミラーがクラックされているか、接続が安全であるかはまったく関係ありません。
- 次に、サイトにないチェックサムsha256を検討します。したがって、md5は「md5sum ubuntu-14.04.1-desktop-amd64.iso」に進みます。
- 彼らのサイトにアクセスし、この「 help.ubuntu.com/community/UbuntuHashes 」を参照してください。 すべてが正常であり、チェックサムは同じです。
- グーグルでこのチェックサムを探しています。 少なくとも、他のミラーと同じであることを確認してください。理想的には、言及されているCanonicalメーリングリストを見つけてください。
- これで、ダウンロードしたイメージは偽物ではないと確信できたので、設定できます。
apt-getの例を使用して、パッケージマネージャーがどのように機能するかを見てみましょう。
- システムをインストールするとき、すでにいくつかのリポジトリが設定されています。
- これらのリポジトリには、すべてのパッケージとそのチェックサムのリストを含むファイルが含まれています。
- これらのファイルは、開発者の秘密鍵によって署名されます。
- インストール後、公開鍵はすでに配布キットに組み込まれています。
- したがって、新しいパッケージをインストールすると、すべてのパッケージの対応するリスト(リポジトリに更新があった場合)、次にパッケージ自体がダウンロードされ、信頼チェーンがトレースされることが確実になります: {checksum of the package}-{list with packagesチェックサム}-{パッケージリストの秘密キーを使用した署名}-{配布キットに縫い付けられた公開キー}
ご覧のとおり、検証はすべてのレベルで行われます。 署名されていない実行可能コードはシステムにクロールしません。 最近の記事で説明したものと同様の場合、これらのすべてのチェックは実行されません。 このようなコードを信頼する理由はありません。 したがって、ルール:
インターネットから不明瞭なコードを実行しないでください! 自分で安全であることを確認するか、作成者が信頼できることを確認してください。これが彼のコードです。 自分でコードをチェックするのに十分な知識がない場合、公式リポジトリのみを使用してください。専門家の特別なチームがあなたのためにそれを試みます(そして通常彼女のためにうまくいきます)。
追加。 インターネットから自己記述コントロールパネルへのアクセスを開く唯一の正しい方法
Webアプリケーションでは、多くの要素が脆弱である可能性があります。最も脆弱なのは、もちろんアプリケーション自体のコードです。 リスクを最小限に抑えるには、 https経由のhttp基本認証を使用します 。 したがって、脆弱性のケアをWebサーバーの強力な肩に転送します。
もちろん、これは内部サイトの場合にのみ機能します。エンドユーザーはより便利なログイン方法が必要です。 ただし、自作のコントロールパネルやその他のツールは、通常、内部使用専用に設計されています。
オフトップ。 挑戦。
注意! 作業中のマシンまたはサーバーでこれを行わないでください。破損します。
タスクは単純に定式化されており、64ビットシステムがあると仮定します。
chmod -x /lib64/ld-linux-x86-64.so.2
いくつかの解決策がありますが、最も難しい場合には抜け穴はありません。 決定に役立たないように明確にしません。
UPD:ログインkayを持っている人がコメントで問題を解決しました。自分で脳を破壊したい場合のための解決策は持っていません。
UPD2:amaraoが正しく指摘したように、自分が何をしているかを正確に理解していない場合は、公式リポジトリのみを使用してください。