過去 18 か月間、断続的に Kaboxer に取り組んできました 、そして Kali 2021.1 の直前に、「Hello World」と言う準備が整います (その後、アプリケーションの出荷が開始されます) .
TL;DR - これは何ですか?
カボクサー、名前は何ですか? Kali アプリケーション ボクサー
どういう意味ですか? パッケージ用のコンテナー内のアプリ (適切にパッケージ化するのが難しいアプリケーションを前進させる方法)。ただし、スタンドアロンのコンテナーではなく、標準の Kali パッケージ管理システムに統合されており、標準の apt コマンドを使用してインストール/削除できます。
わかりました。しかし、カボクサーは何をしますか? すべてのツールが簡単にパッケージ化できるわけではありません。満たさなければならないさまざまな基準があり、時にはクレイジーな依存関係ツリーや独特のシステム変更があります。レガシー ライブラリを使用する必要がある場合や、別のアプリケーションを壊すような構成を変更する必要がある場合があります。職業はなんですか?私たちはツールの作成者と協力してツールを簡単にしようとします。または、ツールを適合させるために多くの深夜を費やすか、単にパッケージ化できないだけです。
カボクサーに入る。コンテナーを使用すると、複雑な非標準パッケージをコンテナーに入れ、オペレーティング システムの残りの部分と統合して、パッケージング エコシステムにバンドルできます。これは、Kaboxer プログラムを適切にインストールして、特別な手順を実行する必要なく使用できることを意味します。
Kaboxer はどのような利点がありますか? Kaboxer には、使用者に応じていくつかの使用例があります:
- Kali Linux を使用している人にとっては、透過的であるため、使用していることに気付かない (そのため、「大したこと」とは見なされない場合があります) .より多くのツールを手に入れることができます!
- 私たち Kali 開発者にとって、これはゲーム チェンジャーです。
- 他の Debian パッケージャにとって、これはあなたの注意を引くかもしれません。
- ツール作成者向け (Kali でソフトウェアを使用したい) 、あなたにはまだ希望があります;-)
Kaboxer のマイナス面は何ですか? コンテナーを使用する必要があるという通常のオーバーヘッドが発生するため、アプリケーションのサイズは大きくなります。インストールされるパッケージは小さいですが、そのインストールでは必要なコンテナーがダウンロードされ、単純なアプリケーションでも最大数百メガバイトを消費します。
Kaboxer のおかげで何が起こるでしょうか? 以前はパッケージ化できなかったより多くのツールを Kali Linux に組み込み、Kaboxer 経由でそれらを使用していることに気付かないようにしたいと考えています。残念ながら、ISO イメージのサイズが大きくなりすぎるため、このようなツールはデフォルトのインストールには含まれません。
概要
Kali ユーザーにとって有益なさまざまなツールがありますが、*.deb
として適切に出荷するのが難しいという問題があります。 パッケージ。これは、ツールが原因である可能性があります:
- パッケージ化とシステム統合を念頭に置いて開発されていません。特定のバージョンのライブラリをインストールしたり、ライブラリにパッチを適用したり、インストール時ではなく実行時にソフトウェアの一部をダウンロードしたりできると想定しています。これはパッケージングの基準に反するものであり、ソフトウェア エンジニアリングの悪い慣習でもあります。
- オペレーティング システムやその他のアプリケーションで好きなことを何でもする権利があると感じるかもしれません。これらのアクションは許可されるべきではなく、ソフトウェアを分離する必要があります。次のようなアクションが確認されています:
- 特定の UID/GID を持つユーザーを作成する
- Filesystem Hierarchy Standard (FHS) に反するパスを使用する。
- 通常は他のサービスに影響を与える TCP または UDP ポートを使用する
- 既存のサービスの再構成
- (安全でない方法で) 外部サーバーとやり取りするため、ソフトウェア自体を完全に信頼することはできません。そのため、そのようなソフトウェアを、システム上に存在する可能性のある貴重なデータや機密データから分離することをお勧めします。
上記から必要な分離を提供する方法は、コンテナー化を使用することです。コンテナーを使用すると、分離された環境でアプリケーションを実行できるため、システムの残りの部分 (ユーザー、サービス、他のアプリケーション、既存のファイル、特定のバージョンのライブラリなど) との予期しない相互作用のリスクが大幅に軽減されます。
デザインの選択
他のコンテナ化ソリューションのサポートを除外するわけではありませんが、Docker から始めることにしました。それはよく知られており、広く使用されており、画像の大規模なエコシステムの恩恵を受けているため、長期的な実行可能性が保証されています. Docker コンテナは、ホスト システムとの、または複数のコンテナ間で必要なさまざまな統合を実現するために、さまざまな方法で構成できます。
Kaboxer の価値は、マウント ポイントやポート リダイレクトなどの通常の Docker 機能だけでなく、デスクトップ メニュー エントリとの統合を通じて、Docker コンテナーをホスト システムと簡単に結び付ける方法にあります。これらの統合はすべて、docker イメージをビルドまたは取得するための指示と同様に、単一の YAML ファイルで指定されています。
.deb
で出荷されるのは、その単一の YAML ファイルです。 Kali で提供するファイルとそれらのパッケージのインストール後スクリプトは、イメージを透過的にダウンロードするため、後でアプリケーションを実行する準備が整います。
Docker イメージのビルド
docker イメージのビルドも Kaboxer によって仲介されますが、魔法のようなものは何もありません。つまり、docker build
を呼び出すだけです。 特定の Dockerfile
で
その Dockerfile を作成するのはパッケージャー次第ですが、アップストリーム プロジェクトに既に Dockerfile がある場合、またはすぐに使用できる Docker イメージが提供されている場合、その手順は簡単です。
Docker イメージの公開
このステップは非常に退屈なので、GitLab CI で自動化しました。 covenant などの「kaboxed」アプリケーション専用のリポジトリに変更を加えるたびに、GitLab CI は関連する Docker イメージを再構築し、イメージ レジストリに保存します。
システムへのイメージの統合
アプリがコンテナ化されたら、理想的には目立たない方法でシームレスな方法でユーザーが利用できるようにする必要があります。ユーザーは、アプリがコンテナーで実行されていることを知る必要さえありません。
これらのパッケージは、さまざまなメンテナ スクリプトで Kaboxer コマンドを実行するほとんどが空のシェルであるにもかかわらず、ユーザーはコンテナ化されたアプリケーションをインストールおよび削除するために Kali パッケージと対話し続けることを既に説明しました。 .desktop
も提供しています 通常のデスクトップ メニューからアプリケーションを起動できるようにするファイルと、Kaboxer について知らなくても端末からアプリケーションを起動できるようにするコマンド ライン ヘルパーです。
Docker コンテナーを実行できるようにするには、ユーザーに昇格されたアクセス許可が必要です。Kali インストーラーを変更して、初期インストール プロセス中に作成されたユーザーにデフォルトでこれらのアクセス許可を付与しました。他のユーザーについては、Kaboxer グループ (adduser $USER kaboxer
) に追加する必要があります。 ).
ユーザーは明らかにアプリケーション データを保持することを望んでいるため、Kaboxer にはホストとコンテナー間で共有されるボリュームを構成する機能があり、コンテナーの存続期間が短い場合でも持続性を提供します。そして、アプリケーションの種類によっては、より具体的な統合が必要になる可能性があります:
- GUI アプリケーションの場合、ホスト X11 ソケットにアクセスできる必要があります。
- ウェブ アプリケーションの場合、HTTP ポートを公開し、適切な URL でウェブ ブラウザを起動します。
これらの基本的なニーズは、現在の Kaboxer 機能でカバーされていますが、将来的には他の種類の統合が必要になる可能性があります.
Kaboxer についてさらに詳しく知りたい場合は、そのホームページ (およびソース コード) とドキュメント (「Hello World」の例を含む) を参照してください。
「実際の」アプリケーションの例として、最初の「Kaboxed アプリ」をご覧ください:
- .NET の攻撃面を際立たせるフレームワークである Covenant。 Covenant は、バックグラウンドで起動されるサーバーと、ブラウザーで実行される Web アプリとして提供されます。
- Firefox Developer Edition は Web ブラウザであり、複雑で大規模な GUI アプリケーションであるため、これを選択しました。
- 公式の NMAP GUI である Zenmap。 Zenmap は、Kali Linux では利用できない非推奨の Python 2 ライブラリに依存しています。
手を汚して試してみませんか?
[email protected]:~$ sudo apt update && sudo apt -y install covenant-kbx
...
[email protected]:~$
[email protected]:~$ covenant-kbx
Usage: covenant-kbx start|stop
[email protected]:~$
[email protected]:~$ covenant-kbx start
>>> Initializing user data in ~/.local/covenant/data
>>> Starting covenant
Please wait during the start, it can take a long time...
>>> Opening https://127.0.0.1:7443 with a web browser
covenant/default started
Press ENTER to exit
[email protected]:~$
[email protected]:~$ ss -at | grep 7443
LISTEN 0 4096 0.0.0.0:7443 0.0.0.0:*
[email protected]:~$
https://localhost:7443
を開くことを忘れないでください ウェブブラウザで!
Kaboxer 自体の探索を開始し、内部で何が起こっているかを確認したい場合:
[email protected]:~$ kaboxer
usage: kaboxer [-h] [-v] {run,start,stop,get-meta-file,get-upstream-version,prepare,upgrade,list,ls,build,install,clean,push,save,load,purge} ...
kaboxer: error: the following arguments are required: action
[email protected]:~$
[email protected]:~$ kaboxer ls
App Installed version Available version Packaging revision from YAML Packaging revision from image
-------- ------------------- ------------------- ------------------------------ -------------------------------
covenant 0.6 - 1 1
[email protected]:~$
最後に、-kbx
で終わるパッケージを検索することで、Kali で Kaboxer を使用しているプログラムを追跡できます。 :
[email protected]:~$ apt-cache search --names-only '\-kbx$'
covenant-kbx - .NET command and control framework
firefox-developer-edition-en-us-kbx - Mozilla Firefox web browser - Developer Edition - en-US
zenmap-kbx - The Network Mapper Front End
[email protected]:~$