
DockerイメージをGitHub Actionsを通じて自動生成し、最新に保つためのリポジトリ。
RAUDI (Regularly and Automatically Updated Docker Images) は、開発者から提供されていないツールに対して、Dockerイメージ を GitHub Actions を通じて自動的に生成し、最新の状態に保ちます。
RAUDI は、多数のDockerイメージを手動で作成・管理する手間からあなたを救います。ソフトウェアが更新されるたびに、最新機能を使用したい場合や依存関係が動作しなくなった場合にDockerイメージを更新する必要があります。
これは面倒で時間のかかる作業です。
もう心配する必要はありません。私たちがカバーします。
このリポジトリをフォークして自分でGitHub Workflowを使用するか、ローカルで使用して好きなように実行管理することができます。
このリポジトリをフォークする場合は、個人のDocker Hubアカウントにイメージをプッシュできるように、いくつかのシークレットを設定する必要があります。必須のGitHubシークレットは次の2つです:
これらのシークレットを設定した後、tools/main.py ファイル内の organization 変数を編集する必要があります。これは SecSI のDocker Hubにプッシュするように設定されているためです。
これですべてです。「Action」に移動し、フォークしたリポジトリで有効化し、深夜まで待てば、Workflowが重い作業を代行してくれます!
このリポジトリはローカルでも実行できます。必要な要件は以下のとおりです:
BuildXの使用に関するドキュメントはこちら: https://docs.docker.com/buildx/working-with-buildx/
セットアップは非常に簡単で、以下のコマンドを実行するだけです:
git clone https://github.com/cybersecsi/RAUDI
cd RAUDI
pip install -r requirements.txt
準備完了です!
テストを実行するには、pytest をインストールする必要があります。コマンドは pip install pytest です (requirements.txt には含まれていません。テスト目的のみに必要です)。その後、次のコマンドを実行してください:
pytest -s
または
python -m pytest -s
テストを実行します。
RAUDI は、tools ディレクトリに配置されたすべてのツールをビルドしプッシュできます。実行時に使用できるオプションがいくつかあります。ローカルで使用する前に、.env ファイルを作成し(.env.sample ファイルをコピーするだけです)、レート制限を避けるために GitHub Personal Access Token を追加することをお勧めします。認証されていないユーザーは1時間あたり最大60リクエスト、認証されたユーザーは1時間あたり最大15,000リクエストが許可されます。そのため、追加することを推奨します! また、スコープなしの個人アクセストークンを作成することもできます。行うことはすべてのGitHubリポジトリの情報を読み取るだけだからです。
このモードでは、RAUDIは必要に応じてすべてのツールをビルドしようとします。実行コマンドは単純です:
python3 ./raudi.py --all
このモードでは、RAUDIは指定されたツールのみをビルドしようとします。この場合のコマンドは次のとおりです:
python3 ./raudi.py --single <tool_name>
tool_name は tools フォルダ内のディレクトリ名と同じである必要があります。
ツールの設定構造に tests パラメータが追加されたので、挿入されたコマンドがステータスコード0を返すかどうかをテストするのに役立ちます。特定のツールをテストするコマンドは次のとおりです:
python3 ./raudi.py --test <tool_name>
tool_name は tools フォルダ内のディレクトリ名と同じである必要があります。
利用可能なツールを知りたい場合は、次のコマンドを実行します:
python3 ./raudi.py --list
利用可能なテンプレートの1つから新しいツールフォルダをすばやく追加したい場合は、次のコマンドを実行します:
python3 ./raudi.py --bootstrap <new_tool_name>
| オプション | 説明 | デフォルト値 |
|---|---|---|
| --push | Docker Hubに自動的にプッシュするかどうか | False |
| --remote | ビルド前にローカルのDockerではなくDocker Hubと比較するかどうか | False |
| --force | 同じタグ名のイメージが見つかった場合でもビルドするかどうか | False |
以下は追加されたツールの現在のリストです。これらはすべて、開発者によって公式のDockerイメージが提供されていないツールです:
tools ディレクトリ内の各ツールには、少なくとも 2つのファイルが含まれています:
新しいツールを追加するには、tools ディレクトリ内にそのツール専用のフォルダを作成するだけです。このフォルダには、ビルドをカスタマイズおよび自動化するための build args が定義された Dockerfile を配置します。Dockerfile を作成したら、同じディレクトリに config.py を作成し、get_config(organization, common_args) という関数を定義する必要があります。注意:関数は必ずこの名前で、これら2つのパラメータを持たなければなりません(使用しなくても構いません)。戻り値は、そのツールの config であり、以下の構造を持ちます:
config = {
'name': organization+'/<name_of_the_image>',
'version': '', # Should be an helper function
'buildargs': {
},
'tests': []
}
4つのキーは次のとおりです:
これで準備完了です!注意点として、ツールの 名前 は、Dockerfile を配置したディレクトリと同じでなければなりません。
バージョンには命名規則があります: ドットと数字のみを使用してください。そのため、各 config.py 内のバージョンから先頭の 'v' を削除してください(動作例については tools/dirsearch/config.py を確認してください)。
ツール と ベースイメージ の最新バージョンや情報を取得するために、一連のヘルパーが実装されています。新しいツールを追加する場合は、これらのヘルパーを使用して、RAUDIによって自動更新されるDockerイメージを作成することをお勧めします。
get_latest_pip_versionこのヘルパーは、pip パッケージの最新バージョンを取得するために使用されます。パッケージ名を受け取り、バージョン番号 を返します。例:
VERSION = helper.get_latest_pip_version(package_name)
get_latest_npm_registry_versionこのヘルパーは、npm パッケージの最新バージョンを取得するために使用されます。パッケージ名を受け取り、バージョン番号 を返します。例:
VERSION = helper.get_latest_npm_registry_version(package_name)
get_latest_github_releaseこのヘルパーは、Releases を使用し、複数の種類のアセット(例: 異なるOS用の実行ファイル)を持つGitHubリポジトリの情報を取得するために使用されます。このヘルパーは、リポジトリ(user/repo 形式)と、正しいアセットを識別するためのターゲット文字列を受け取ります。2つのキー(url と version)を持つ辞書を返します。例:
VERSION = helper.get_latest_github_release("user/repo", "linux_amd64")
get_latest_github_release_no_browser_downloadこのヘルパーは、Releases を使用し、ソースコードのみ(つまり zipball と tarball がある)のGitHubリポジトリの情報を取得するために使用されます。このヘルパーは、リポジトリ(user/repo 形式)を受け取り、2つのキー(url と version)を持つ辞書を返します。例:
VERSION = helper.get_latest_github_release_no_browser_download("user/repo")
get_latest_github_tag_no_browser_downloadこのヘルパーは、Tags を使用し、ソースコードのみ(つまり zipball と tarball がある)のGitHubリポジトリの情報を取得するために使用されます。このヘルパーは、リポジトリ(user/repo 形式)を受け取り、2つのキー(url と version)を持つ辞書を返します。例:
VERSION = helper.get_latest_github_tag_no_browser_download("user/repo")
get_latest_github_commitこのヘルパーは、Tags や Releases を使用しないGitHubリポジトリの情報を取得するために使用されます。この場合、最新のコミット を取得することが目的です。このヘルパーは、リポジトリ(user/repo 形式)を受け取り、最後のコミットの 日付 を YYYYMMDD 形式の文字列で返します。
VERSION = helper.get_latest_github_commit("user/repo")
このセクションでは、現在追加されているネットワークセキュリティツールの例を示します。イメージはツールのみを提供するため、ワードリスト を使用する必要がある場合は、マウントする必要があります。
docker run -it --rm secsi/<tool> <command>
docker run -it --rm -v <wordlist_src_dir>:<wordlist_container_dir> secsi/dirb <url> <wordlist_container_dir>/<wordlist_file>
私たちは イタリア人 なので、おそらくあなたとは異なる発音をします。正しい発音(音声表記 を使用)は次のとおりです:
/ˈraʊdi/
そうでなければ、有名なテレビ番組 Scrubs に登場するぬいぐるみの犬のことを考えてください: Rowdy
どなたでも貢献を歓迎します! RAUDIへの貢献方法 を説明した非常に詳細なドキュメントを作成しました。
RAUDIは @SecSI によって誇りを持って開発されています:
その他の貢献者:
RAUDI はオープンソースのフリーソフトウェアであり、GNU GPL v3 のもとでリリースされています。
| 名前 | Dockerイメージ | ソース |
|---|