

Lockdown UNix Auditing and Reporting
現在のバージョン 16.6.1
最新のバージョン情報については lunar.sh および CHANGELOG.md を参照してください
CC BY-NC-SA: https://creativecommons.org/licenses/by-nc-sa/4.0/
こちらで支援できます: https://ko-fi.com/richardatlateralblast
このコードは監査モードのみで実行してください。例えば -a または --audit スイッチを使用します。 ロックダウンは自己責任で実行してください。他のシステム変更と同様、バックアップを取ってください。 リカバリモードの改善に取り組んでいますが、まだバグが残っている可能性があります。
shellcheck を使用してこのスクリプトを可能な限りクリーンアップし、 エラーから保護するために -e (errexit) および -u (nounset) シェルフラグを 使用するオプションを有効にしました。-x (xtrace) シェルフラグは、 スクリプトを -Q または --debug フラグ付きで実行することで有効にできます。
進行中:
このスクリプトは、Unix ホストのセキュリティに関するスコア付き監査レポートを生成します。 CIS やその他のフレームワークに基づいています。可能な限り、コードのドキュメントに CIS やその他のベンチマークへの参照を記載しています。
なぜシェルスクリプトなのか? 他のツールが利用できない可能性があるロックダウンされた システムでも実行できるツールが欲しかったからです。また、すべてのバージョンの UNIX で 動作するツールも欲しかったのです。とはいえ、sh と bash にはいくつかの違いがあるため、 sh の関数のみを使用しています。
このスクリプトには明示的または暗黙的な保証はありません。私の推奨は、 このスクリプトを監査モードのみで使用し、各警告にポリシー、ドキュメント、 構成管理を通じて個別に対処することです。
私は決してコーダーではないので、このスクリプトにはバグやより良いアプローチ方法が 必ず存在します。フィードバック、更新、コードのバグ/機能を修正するパッチを 提供してくださった方々に心から感謝します。
また、ロックダウンを実行することもできます。他のいくつかのスクリプトとは異なり、 変更を元に戻す機能を追加しました。ファイルは日付に基づいたディレクトリに cpio を使用してバックアップされます。
ロックダウンを実行できますが、前述のとおり、警告にはポリシー、ドキュメント、 構成管理を通じて対処することをお勧めします。これが私のツールの使用方法です。 AWS サービス監査はレポートのみをサポートしており、ロックダウン機能は提供していません。
以下のオペレーティングシステムがサポートされています:
Windows のサポートには追加ソフトウェアのインストールが必要となるため、検討していません。 とはいえ、将来的に bash 経由で Windows サポートが提供される可能性があります。
以下のサービスがサポートされています:
AWS サービス監査は AWS CLI を使用するため、適切な権限を持つユーザーが必要です。 現在、ロックダウン機能はサポートしておらず、CIS ベンチマークに対する監査レポートの 生成のみをサポートしています。
GUI 経由でのみ実行または解決できるチェックがいくつかあります。 その一例が請求の有効化です。詳細については CIS Benchmark を参照してください。
可能な限り、詳細な監査出力に推奨される修正コマンドを記載しています。 繰り返しますが、場合によっては CLI でのみ実行できるものもあります。詳細については CIS Benchmark を参照してください。
さらに、Cloud Conformity などの企業が公開しているベストプラクティスに対して AWS をチェックする推奨事項モードも追加しました。
以下の構成管理出力がサポートされています:
このオプションは、推奨事項を実装するためのAnsible構成管理コード/スタンザの例を出力します。
UNIXの場合:
AWSの場合:
Azureの場合:
Usage: ./lunar.sh -switch|--switch
switch(es):
-----------
-1|--list)
List changes/backups
-2|--tests)
Print tests
-3|--printfunct)
Print function
-4|--dryrun)
Run in dryrun mode
-6|--format)
Outpt format/type
-7|--file)
Output file
-8|--usesudo)
Use sudo
-9|--checkenv)
Run a selected environment check (for example, shellcheck)
-0|--force)
Force action
-a|--audit)
Run in audit mode (for Operating Systems - no changes made to system)
-A|--fullaudit)
Run in audit mode and include filesystems (for Operating Systems - no changes made to system)
-b|--backups|--listbackups)
List backups
-B|--basedir)
Set base directory
-c|--codename|--distro)
Docker image name, or Multipass release codename
-C|--shell)
Run docker-compose testing suite (drops to shell in order to do more testing)
-d|--dockeraudit)
Run in audit mode (for Docker - no changes made to system)
-D|--dockertests)
List all Docker functions available to selective mode
-e|--host)
Run in audit mode on external host (for Operating Systems - no changes made to system)
-E|--hash|--passwordhash)
Password hash
-f|--action)
Action (e.g delete - used with multipass)
-F|--tempfile)
Temporary file to use for operations
-g|--giturl)
Git URL for code to copy to container
-G|--wheelgroup)
Set wheel group
-h|--help)
Display help
-H|--usage)
Display usage
-i|--anacron)
Enable/Disable anacron
-I|--type)
Audit type
-k|--kubeaudit)
Run in audit mode (for Kubernetes - no changes made to system)
-K|--function|--test)
Do a specific function
-l|--lockdown)
Run in lockdown mode (for Operating Systems - changes made to system)
-L|--fulllockdown|fulllock)
Run in lockdown mode (for Operating Systems - changes made to system)
-m|--machine|--vm)
Set virtualisation type
-M|--workdir)
Set work directory
-n|--ansible)
Output ansible
-N|--nocat)
Do output cat in score
-o|--os|--osver)
Set OS version
-O|--osinfo|--systeminfo)
Print OS/System information
-p|--previous)
Print previous audit information
-P|--sshsandbox|--sandbox)
Enable/Disabe SSH sandbox
-q|--quiet|--nostrict)
Run in quiet mode
-Q|--debug)
Run in debug mode
-r|--awsregion|--region)
Set AWS region
-R|--moduleinfo|--testinfo)
Print information about a module
-s|--select|--check)
Run in selective mode (only run tests you want to)
-S|--unixtests|--unix)
List UNIX tests
-t|--tag|--name)
Set docker tag
-T|--tempdir)
Set temp directoru
-u|--undo)
Undo lockdown (for Operating Systems - changes made to system)
-U|--dofiles)
Include filesystems
-v|--verbose)
Run in verbose mode
-V|--version)
Print version
-w|--awsaudit)
Run in audit mode (for AWS - no changes made to system)
-W|--awstests|--aws)
List all AWS functions available to selective mode
-x|--awsrec)
Run in recommendations mode (for AWS - no changes made to system)
-X|--strict|--shellcheck)
Run shellcheck against script
-z)
Run specified audit function in lockdown mode
-Z|--changes|--listchanges)
List changes
完全な監査を実行する(再帰的なファイルシステムチェックなし):
./lunar.sh --audit
テストを一覧表示:
./lunar.sh --tests
AWSテストを一覧表示する:
./lunar.sh --tests aws
特定のテストを実行します:
./lunar.sh --audit --select remote_shell
テスト用にUbuntu 24.04のmultipass VMを作成します:
./lunar.sh --action create --machine multipass --osver 24.04
詳細についてはwikiを参照してください:
lunarスクリプト自体をデバッグするためのシンプルなテストフレームワークを追加しました。 これはdocker composeを使用してコンテナを起動し、lunarディレクトリをマウントしてlunarを実行します。