
Apache NiFi CVE-2023-34468 用のエクスプロイトで、バージョン 1.21.0 以前の脆弱性を標的とし、データアクセスとシステム侵害を実証します。
[][nifi]
Apache NiFi は、データの処理と配布を簡単かつ強力かつ信頼性高く行うためのシステムです。
Apache NiFi はデータフローのために作られました。データのルーティング、変換、システム仲介ロジックの高度に設定可能な有向グラフをサポートします。主な機能は以下のとおりです。
開発のためのクイックスタートガイドをお読みください。 ソースのローカルコピーを入手する方法、課題追跡に関する情報、開発環境でよくある問題についての注意事項などが含まれています。
開発に関するより包括的なガイドとプロジェクトへの貢献については、 NiFi 開発者ガイドをお読みください。
mvn clean install を実行するか、並列ビルドの場合は mvn -T 2.0C clean install を実行します。
並列ビルドは、最新のハードウェアで約15分かかります。
laptop:nifi myuser$ mvn -T 2.0C clean install
[INFO] Scanning for projects...
[INFO] Inspecting build with total of 115 modules...
...tens of thousands of lines elided...
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 09:24 min (Wall Clock)
[INFO] Finished at: 2015-04-30T00:30:36-05:00
[INFO] Final Memory: 173M/1359M
[INFO] ------------------------------------------------------------------------
単体テストの実行をスキップするには mvn clean install -DskipTests を実行します。
nifi-assembly ディレクトリに移動します。target ディレクトリにバイナリアーカイブがあります。
laptop:nifi myuser$ cd nifi-assembly
laptop:nifi-assembly myuser$ ls -lhd target/nifi*
drwxr-xr-x 3 myuser mygroup 102B Apr 30 00:29 target/nifi-1.0.0-SNAPSHOT-bin
-rw-r--r-- 1 myuser mygroup 144M Apr 30 00:30 target/nifi-1.0.0-SNAPSHOT-bin.tar.gz
-rw-r--r-- 1 myuser mygroup 144M Apr 30 00:30 target/nifi-1.0.0-SNAPSHOT-bin.zip
nifi-VERSION-bin.tar.gz または nifi-VERSION-bin.zip を別のデプロイディレクトリにコピーします。
展開すると、バージョン名の新しいディレクトリが作成されます。
laptop:nifi-assembly myuser$ mkdir ~/example-nifi-deploy
laptop:nifi-assembly myuser$ tar xzf target/nifi-*-bin.tar.gz -C ~/example-nifi-deploy
laptop:nifi-assembly myuser$ ls -lh ~/example-nifi-deploy/
total 0
drwxr-xr-x 10 myuser mygroup 340B Apr 30 01:06 nifi-1.0.0-SNAPSHOT
デプロイ先のディレクトリに移動し、次のコマンドを実行して NiFi を起動します。
laptop:~ myuser$ cd ~/example-nifi-deploy/nifi-*
laptop:nifi-1.0.0-SNAPSHOT myuser$ ./bin/nifi.sh start
bin/nifi.sh start を実行すると、NiFi がバックグラウンドで起動し、終了します。--wait-for-init を使用すると、起動が完了するまで待機できます(オプションでタイムアウト秒数を指定)。
laptop:nifi-1.0.0-SNAPSHOT myuser$ ./bin/nifi.sh start --wait-for-init 120
デフォルト設定では、起動時にランダムなユーザー名とパスワードが生成されます。NiFi は生成された認証情報をアプリケーションログ (logs/nifi-app.log) に書き込みます。NiFi インストールディレクトリ下にあります。
以下のコマンドで、grep がインストールされた OS で生成された認証情報を検索できます。
laptop:nifi-1.0.0-SNAPSHOT myuser$ grep Generated logs/nifi-app*log
NiFi は生成された認証情報を次のようにログに記録します。
Generated Username [USERNAME]
Generated Password [PASSWORD]
USERNAME は36文字のランダムな UUID です。PASSWORD は32文字のランダムな文字列です。生成された認証情報は conf/login-identity-providers.xml に保存され、パスワードは bcrypt ハッシュで保存されます。これらの認証情報を安全な場所に記録して、NiFi にアクセスしてください。
ランダムなユーザー名とパスワードは、次のコマンドでカスタム認証情報に置き換えることができます。
./bin/nifi.sh set-single-user-credentials <username> <password>
Web ブラウザで次のリンクを開いて NiFi にアクセスします: https://localhost:8443/nifi
Web ブラウザは、初期化中に NiFi が生成した自己署名証明書による潜在的なセキュリティリスクを示す警告メッセージを表示します。初期の開発インストールでは、潜在的なセキュリティリスクを受け入れてインターフェースのロードを続行するオプションがあります。本番環境では、信頼できる認証局から証明書をプロビジョニングし、NiFi のキーストアとトラストストアの設定を更新する必要があります。
自己署名証明書を受け入れて NiFi にアクセスすると、ログイン画面が表示されます。

生成された認証情報を使用して、生成されたユーザー名を User フィールドに、生成されたパスワードを Password フィールドに入力し、LOG IN を選択してシステムにアクセスします。

NiFi ユーザーガイド にデータフローの構築方法が記載されています。
次のコマンドを実行して NiFi を停止します。
laptop:~ myuser$ cd ~/example-nifi-deploy/nifi-*
laptop:nifi-1.0.0-SNAPSHOT myuser$ ./bin/nifi.sh stop
MiNiFi は Apache NiFi の子プロジェクトです。データフロー管理における NiFi の核となる信条を補完するデータ収集アプローチであり、データの生成源での収集に焦点を当てています。
MiNiFi の具体的な目標は次のとおりです。
MiNiFi の役割は、ソースセンサー、システム、またはサーバーのすぐ隣で動作するエージェントの観点から考えるべきです。
実行方法:
'minifi-assembly' ディレクトリに移動します。target ディレクトリに minifi のビルドがあります。
$ cd minifi-assembly
$ ls -lhd target/minifi*
drwxr-xr-x 3 user staff 102B Jul 6 13:07 minifi-1.14.0-SNAPSHOT-bin
-rw-r--r-- 1 user staff 39M Jul 6 13:07 minifi-1.14.0-SNAPSHOT-bin.tar.gz
-rw-r--r-- 1 user staff 39M Jul 6 13:07 minifi-1.14.0-SNAPSHOT-bin.zip
開発中のテストでは、すでに展開された "minifi-version-bin" という名前のディレクトリを使用できます(version は現在のプロジェクトバージョン)。別の場所にデプロイするには、tarball または zipfile を使用して、任意の場所に展開します。配布物はバージョン名の共通の親ディレクトリに配置されます。
$ mkdir ~/example-minifi-deploy
$ tar xzf target/minifi-*-bin.tar.gz -C ~/example-minifi-deploy
$ ls -lh ~/example-minifi-deploy/
total 0
drwxr-xr-x 10 user staff 340B Jul 6 01:06 minifi-1.14.0-SNAPSHOT
MiNiFi の実行:
MiNiFi をインストールしたディレクトリに移動し、実行します。
$ cd ~/example-minifi-deploy/minifi-*
$ ./bin/minifi.sh start
logs フォルダにあるログを表示します $ tail -F ~/example-minifi-deploy/logs/minifi-app.log
初めてのデータフローの構築と NiFi インスタンスへのデータ送信に関するヘルプについては、docs フォルダにある System Admin Guide を参照するか、minifi-toolkit を使用してください。minifi-toolkit は NiFi テンプレートを MiNiFi YAML 設定ファイル形式に適応させるのに役立ちます。
開発中のテストを行う場合、インスタンスを停止したいことがよくあるでしょう。
$ cd ~/example-minifi-deploy/minifi-*
$ ./bin/minifi.sh stop