
実行中のDockerコンテナとDockerネットワークの脆弱性や設定の問題を分析する唯一のオープンソースツール。
DockerENTは、アクティブなランタイムアプリケーションセキュリティスキャニングツール(RASTツール)です。Pythonで記述されたプラグイン可能なフレームワークであり、CLIアプリケーションとStreamLitで構築されたクリーンなWebインターフェースを備えています。
DockerENTは、本番環境デプロイメントにおける脆弱なセキュリティ設定ミスを検出するように設計されており、深刻な結果を引き起こす可能性があります。このアプリケーションはシステム上の実行中のコンテナに接続し、脆弱で安全でないランタイム設定のリストを取得し、レポートを生成します。 Webインターフェースを介して呼び出すと、スキャンおよび監査レポートをUI自体に表示できます。
すぐにテストしたいですか?PyPiから最新の安定版RELをダウンロードしてWebアプリを実行してください。あとは直感的に操作できます。
pip install DockerENT
次に、次のようにアプリケーションを実行します。
DockerENT -w
これだけです。
DockerENTは、シンプルさと使いやすさを念頭に設計されています。現時点では、リポジトリをクローンして依存関係をダウンロードするか、Dockerfileをビルドするだけです。依存関係がローカルシステムにインストールされたら、ツールを実行して実行中のコンテナのランタイム設定を分析できます。
# ダウンロードとセットアップ
git clone https://github.com/r0hi7/DockerENT.git
cd DockerENT
make venv
source venv/bin/activate
# 実行
python -m DockerENT --help
usage: Find the vulnerabilities hidden in your running container(s).
[-h] [-d [DOCKER_CONTAINER]] [-p [DOCKER_PLUGINS]]
[-d-nw [DOCKER_NETWORK]] [-p-nw [DOCKER_NW_PLUGINS]] [-w]
[-n [PROCESS_COUNT]] [-a] [-o [OUTPUT]]
optional arguments:
-h, --help show this help message and exit
-w, --web-app Run DockerENT in WebApp mode. If this parameter is
enabled, other command line flags will be ignored.
-n [PROCESS_COUNT], --process [PROCESS_COUNT]
Run scans in parallel (Process pool count).
-a, --audit Flag to check weather to audit results or not.
-d [DOCKER_CONTAINER], --docker [DOCKER_CONTAINER]
Run scan against the running container.
-p [DOCKER_PLUGINS], --plugins [DOCKER_PLUGINS]
Run scan with only specified plugins.
-p-nw [DOCKER_NW_PLUGINS], --nw-plugins [DOCKER_NW_PLUGINS]
Run scan with only specified plugins.
-d-nw [DOCKER_NETWORK], --docker-network [DOCKER_NETWORK]
Run scan against running docker-network.
-o [OUTPUT], --output [OUTPUT]
Output plugin to write data to.
# またはコンテナ経由
docker build . -t dockerent
docker run -d -v /var/run/docker.sock:/var/run/docker.sock -p 8501:8501 --name dockerent dockerent
# その後、ブラウザで http://localhost:8051 を開いてください。
簡単に始めるためのクイックビデオをご覧ください。
fileおよびhtmlシンクに書き込むことができます。demoプラグインを作成します。cp DockerENT/docker_plugins/docker_sample_plugin.py DockerENT/docker_plugins/docker_demo_plugin.py
_plugin_name = 'demo_plugin'
def scan(container, output_queue, audit=False, audit_queue=None):
_log.info('Staring {} Plugin ...'.format(_plugin_name_))
res = {}
result = {
'test_class': {
'TEST_NAME': ['good']
}
}
res[container.short_id] = {
_plugin_name_: result
}
# Do something magical.
_log.info('Completed execution of {} Plugin.'.format(_plugin_name_))
'''Make Sure you put dict of following structure in Q.
{
'contiainer_id': {
'plugin_name': {
'test_name_demo1': {
resultss:[]
},
'test_name_demo2': {
results: []
}
}
}
}
'''
output_queue.put(res)
if audit:
_audit(container, res, audit_queue)
def _audit(container, results, audit_queue):
'''Make Sure to add dict of following structure to Audit Q
res = {
"container_id": [
"_plugin_name_, WARN/INFO/ERROR, details"
]
}
'''
# Magical logic to perform Audit.
audit_queue.put(res)
-n <count>を渡してプロセッサ数を指定します。JSONおよびHTMLファイルにダンプできます。JSONレポートが大きくなりがち。| プラグイン名 | プラグインファイル | 機能 | 監査 |
|---|
| CMD_HISTORY | ファイル | シェル履歴を特定 | ルート履歴とユーザーシェル履歴 |
| FILESYSTEM | ファイル | RWファイルシステムの特定 | RWファイルシステムが存在する場合 |
| NETWORK | ファイル | ネットワーク状態の特定 | すべてのマップされたポートを特定 |
| PLAINTEST_PASSWORD | ファイル | 様々なファイル内のパスワード特定 | |
| SECURITY_PROFILES | ファイル | 脆弱なセキュリティプロファイルの特定 | 脆弱なセキュリティプロファイルを一覧表示 |
| USER_INFO | ファイル | ユーザー情報の特定 | passwdやその他の機密ファイルの権限を一覧表示 |
| SYSTEM_INFO | ファイル | Dockerシステム情報の特定 | 監査なし |
| FILES_INFO | ファイル | ワールド書き込み可能なディレクトリとファイルの特定 | すべての該当ファイルを一覧表示 |
| PROC_INFO | ファイル | Dockerシステム内のプロセス一覧の特定 |