Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
puppet-os-hardening — このPuppetモジュールは、数多くのセキュリティ関連の設定を提供し、全方位的な基本保護を実現します。 | Kitploit
ツール/GitHubGitHub/dev-sec/puppet-os-hardening
クラウドインフラストラクチャセキュリティ脆弱性スキャナー構成監査ネットワークセキュリティDevSecOps認証
GitHubdev-sec/puppet-os-hardening

puppet-os-hardening

このPuppetモジュールは、数多くのセキュリティ関連の設定を提供し、全方位的な基本保護を実現します。

リポジトリを見る
291100141ヶ月前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有
ウェブサイト

Puppet OS hardening

Puppet Forge Version Puppet Forge Downloads Puppet Forge Endorsement Build Status

目次

  1. モジュールの説明 - モジュールの機能と有用性
  2. セットアップ - os_hardening の基本
    • セットアップ要件
    • os_hardening の導入
  3. 使用方法 - 設定オプションと追加機能
    • Puppet Enterprise に関する重要事項
    • パラメータ
    • Hiera での使用方法
    • 導入・削除したいパッケージと無効化するサービスに関する注意事項
  4. 制限事項 - OS 互換性など
  5. 開発 - モジュールへの貢献ガイド
  6. テスト - コード変更に対する品質ゲート
    • ローカルテスト
    • PDK テスト
    • 統合テスト(Docker)
    • 統合テスト(DigitalOcean)
    • PR とフォークの CI テスト
  7. 連絡先
  8. 貢献者 + 謝辞
  9. ライセンスと作者

モジュールの説明

この Puppet モジュールは、ベース OS のセキュアな設定をハードニングによって提供し、DevSec Hardening Framework の一部です。

セットアップ

セットアップ要件

  • Puppet OpenSource または Enterprise
  • モジュール stdlib
  • モジュール sysctl

os_hardening の導入

このモジュールを追加した後、以下のクラスを使用できます:

root@kitploit:~
class { 'os_hardening': }

すべてのパラメータはメインの os_hardening クラス内に含まれているため、次のように渡すだけです:

root@kitploit:~
class { 'os_hardening':
  enable_ipv4_forwarding => true,
}

使用方法

Puppet Enterprise に関する重要事項

PE 環境でこのモジュールを使用する場合は、 pe_environment = true を設定する必要があります。 そうしないと、puppet はエラー(重複リソース)を出力します!

パラメータ

  • system_environment = 'default' システムが動作するコンテキストを定義します。一部のオプションは docker/lxc では機能しません。
  • pe_environment = false Puppet Enterprise を使用している場合は true に設定します。重要 - 上記参照
  • extra_user_paths = [] ユーザーの PATH 変数に追加のパスを追加します(デフォルトは空)。
  • umask = undef useradd / newusers による新しいホームディレクトリ作成時に使用される umask(例: '027')
  • maildir = undef maildir のパス(例: '/var/mail')
  • usergroups = true 各ユーザーに個別のグループを作成する場合は true、それ以外は false
  • sys_uid_min = undef および sys_gid_min = undef login.defs のデフォルト設定を上書きします
  • password_max_age = 60 パスワードの最大有効期間

Hiera での使用方法

パラメータを Hiera で設定することも可能です:

root@kitploit:~
os_hardening::password_max_age:  90
os_hardening::password_min_age:  0
os_hardening::password_warn_age: 14
os_hardening::unwanted_packages: ['telnet']
os_hardening::ignore_users:      ['git','githook','ansible','apache','puppetboard']

導入・削除したいパッケージと無効化するサービスに関する注意事項

CIS Distribution Independent Linux Benchmark はシステムのハードニングに関する優れた出発点であるため、モジュール全体を作成したくない一時的な対応を簡単に処理する方法を実装することが適切と判断されました。

例えば、Debian システムで CIS DIL 準拠を高めるには、以下を設定する必要があります:

root@kitploit:~
wanted_packages   => ['ntp'],
unwanted_packages => ['telnet'],
disabled_services => ['rsync'],

NTP のデフォルト設定はほとんどの状況で非常に優れているため、モジュールをすぐに実装する必要はありません。ただし、これらのサービスを制御するためにモジュールを使用する場合は、もちろんそれが推奨されます。

制限事項

このモジュールはテスト済みであり、ほとんどの Linux ディストリビューションで動作するはずです。サポートされているオペレーティングシステムの詳細なリストについては、metadata.json を参照してください。

開発

貢献したい場合は、貢献ガイド に従ってください。

テスト

ローカルテスト

システムに Ruby インタプリタがインストールされている必要があります。その目的には rvm を使用することをお勧めします。さらに、統合テストは Docker コンテナで実行されるため、Puppet Development Kit PDK と Docker Community Edition をインストールする必要があります。

すべての統合テストには test-kitchen を使用します。test-kitchen に慣れていない場合は、ガイド を参照してください。

PDK テスト

root@kitploit:~
# 構文 & Lint テスト
pdk validate

# ユニットテスト
pdk test unit

統合テスト(Docker)

デフォルトでは、統合テストは Docker コンテナで実行されます - 残念ながら、すべてのテストがコンテナ環境で実行できるわけではありません(例: sysctl 設定)。

root@kitploit:~
# 依存関係のインストール
gem install bundler
bundle install

# すべてのテストインスタンスを一覧表示
bundle exec kitchen list

# 1 台のマシンでの高速テスト
bundle exec kitchen test ubuntu-16-04-puppet5

# すべてのマシンでのテスト
bundle exec kitchen test

統合テスト(DigitalOcean)

DigitalOcean での完全な統合テストには、アカウントを取得し、いくつかの環境変数を設定する必要があります:

  • KITCHEN_LOCAL_YAML=kitchen.do.yml
  • DIGITALOCEAN_ACCESS_TOKEN - DigitalOcean のアクセストークン
  • DIGITALOCEAN_SSH_KEY_IDS - DigitalOcean での ssh キーの ID。詳細はこちらを参照

ssh キーは ~/.ssh/do_ci という名前で、DigitalOcean のプロフィールに追加されている必要があります。 その後、統合テスト(Docker) で説明されているようにテストを実行する準備が整います。

フォークで Github Actions を使用して完全な統合テストを実行する場合は、フォークの設定にこれらの環境変数を追加する必要があります:

  • KITCHEN_LOCAL_YAML=kitchen.do.yml
  • DIGITALOCEAN_ACCESS_TOKEN - DigitalOcean のアクセストークン
  • CI_SSH_KEY - DigitalOcean でインスタンスに利用可能な ssh キーの秘密鍵部分。base64 エンコード形式(例: cat id_rsa | base64 -w0 ; echo)
  • DIGITALOCEAN_SSH_KEY_IDS - DigitalOcean での CI_SSH_KEY の ID。詳細はこちらを参照

PR とフォークの CI テスト

パッチは Github Actions を介して自動的にテストされます。テストの概要は Github の PR で確認でき、詳細はリンクされたテストにあります。

連絡先

以下の方法で連絡できます:

  • Twitter で @DevSecIO
  • 質問と一般的な議論のためのメーリングリスト: [email protected] [購読]
  • リリース告知用のメーリングリスト(ここへの投稿はできません): [email protected] [購読]

貢献者 + 謝辞

  • Dominik Richter arlimus
  • Edmund Haselwanter ehaselwanter
  • Christoph Hartmann chris-rock
  • Thomas Dütsch a-tom
  • Patrick Meier atomic111
  • Artem Sidorenko artem-sidorenko
  • Kurt Huwig kurthuwig
  • Matthew Haughton 3flex
  • Reik Keutterling spielkind
  • Daniel Dreier danieldreier
  • Timo Goebel timogoebel
  • Tristan Helmich fadenb
  • Michael Geiger mcgege
  • Timo Bergemann LooOOooM

chef-os-hardening の puppet への最初の移植について:

  • Artem Sidorenko artem-sidorenko
  • Frank Kloeker eumel8

皆さん、ありがとうございます!!

ライセンスと作者

  • Author:: Dominik Richter [email protected]
  • Author:: Deutsche Telekom AG

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

root@kitploit:~
  http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

ツールをダウンロード
  • password_min_age = 7 パスワードの最小有効期間(他のパスワード変更を許可する前)
  • password_warn_age = 7 パスワード変更期限前の警告日数
  • login_retries = 5 パスワードが不正な場合のログイン試行の最大回数(通常は PAM / auth_retries によって上書きされます)
  • login_timeout = 60 認証タイムアウト(秒)。この時間が経過するとログインは終了します
  • chfn_restrict = '' 通常ユーザーが chfn を使用して変更できるフィールド
  • allow_login_without_home = false ホームディレクトリのないユーザーのログインを許可する場合は true
  • allow_change_user = false ユーザーが su を使用してログインを変更できるかどうか
  • ignore_users = [] ハードニング対象外とするシステムユーザーアカウントの配列(パスワード無効化とシェルの /usr/sbin/nologin への設定)
  • folders_to_restrict = ['/usr/local/games','/usr/local/sbin','/usr/local/bin','/usr/bin','/usr/sbin','/sbin','/bin'] グループとその他ユーザーが書き込みアクセス権を持たないようにするフォルダ(およびその内容)
  • ignore_max_files_warnings = false /bin や /usr/bin など 1000 ファイルを超えるフォルダの再帰処理時に、puppet が max_files およびパフォーマンス警告をログに記録しないようにする場合は true
  • recurselimit = 5 再帰的な権限チェックのディレクトリ深度
  • passwdqc_enabled = true PAM で passwdqc を使用した強力なパスワードチェックを使用する場合は true
  • auth_retries = 5 アカウントが一定時間ロックされるまでの最大認証試行回数
  • auth_lockout_time = 600 認証失敗が多すぎてアカウントがロックされた場合に経過する必要がある時間(秒)
  • passwdqc_options = 'min=disabled,disabled,16,12,8' passwdqc に渡す任意のオプション行(文字列として)に設定します
  • manage_pam_unix = false このモジュールで pam_unix を管理する場合は true
  • enable_pw_history = true pam_unix にパスワード履歴を記憶させ、パスワードの再利用を防ぐ場合は true(manage_pam_unix = true が必要)
  • pw_remember_last = 5 記憶する過去のパスワード数(例: 5 はユーザーが直近 5 つのパスワードを再利用できないようにします)
  • only_root_may_su = false root と wheel グループのメンバーのみが su を使用できる場合は true。CIS Benchmark 準拠には true が必要です
  • root_ttys = ['console','tty1','tty2','tty3','tty4','tty5','tty6'] root 用に登録された TTY
  • whitelist = [] SUID/SGID ビットを保持すべきすべてのファイル(事前定義されたホワイトリストと組み合わせられます)
  • blacklist = [] SUID/SGID ビットを削除すべきすべてのファイル(事前定義されたブラックリストと組み合わせられます)
  • remove_from_unknown = false blacklist で明示的に設定されていないファイルから SUID/SGID ビットを削除する場合は true。これにより、すべての Puppet 実行でマウントされたファイルシステムを検索し、デフォルトおよびユーザーのブラックリストに設定されていない SUID/SGID ビットを探します。SUID/SGID ビットが見つかった場合、そのファイルが whitelist にない限り削除されます。
  • dry_run_on_unknown = false 上記の remove_from_unknown と同様ですが、SUID/SGID ビットは削除されません。ファイルシステムを検索して SUID/SGID ビットを探しますが、ログに出力するだけです。このオプションは、remove_from_unknown を SUID/SGID ビット用に最初に設定する場合にのみ推奨されます。変更されるファイルを確認し、whitelist と blacklist を調整できるようにするためです。
  • enable_module_loading = true システム実行中にカーネルモジュールの変更(例: modprobe、rmmod)を許可する場合は true
  • load_modules = [] enable_module_loading が false の場合、initramfs を介してこれらのモジュールをロードします
  • disable_filesystems = ['cramfs','freevxfs','jffs2','hfs','hfsplus','squashfs','udf'] 無効化すべきファイルシステム(カーネルモジュール)の配列
  • cpu_vendor = 'intel' enable_module_loading = false の場合のみ必要: ロードするモジュールの CPU ベンダーを設定します
  • icmp_ratelimit = '100' デフォルト値 '100'、上書きを許可、String が必要
  • desktop_enabled = false デスクトップシステム(Xorg、KDE/GNOME/Unity など)の場合は true
  • enable_ipv4_forwarding = false このシステムが IPv4 でのパケット転送を必要とする場合(例: ルーター)は true、それ以外は false
  • manage_ipv6 = true ipv6 セットアップをハードニングする場合は true、ipv6 を完全に無視する場合は false
  • enable_ipv6 = false このシステムで ipv6 を無効化する場合は false、有効化する場合は true
  • enable_ipv6_forwarding = false このシステムが IPv6 でのパケット転送を必要とする場合(例: ルーター)は true、それ以外は false
  • arp_restricted = true ARP の通知と応答の動作を制限する場合は true、それ以外は false
  • arp_ignore_samenet = false true は同じサブネットからのパケット以外をドロップします(arp_ignore = 2)、false はターゲット IP のみをチェックします(arp_ignore = 1)
  • enable_sysrq = false マジック sysrq キーを有効化する場合は true、それ以外は false
  • enable_core_dump = false コアダンプの作成を防ぐ場合は false、それ以外は true
  • enable_stack_protection = true Address Space Layout Randomization(ASLR)用。ASLR は特定の種類のバッファオーバーフロー攻撃を防ぐのに役立ちます。ASLR はベース、ライブラリ、ヒープ、スタックをプロセスのアドレス空間内のランダムな位置に配置できるため、攻撃プログラムが次の命令のメモリアドレスを予測することを困難にします。
  • enable_rpfilter = true リバースパスフィルタリングを有効化する場合は true(不正なパケットを破棄)、それ以外は false
  • rpfilter_loose = false (enable_rpfilter が true の場合のみ)true の場合は ルーズモード(rp_filter = 2)、それ以外は ストリクトモード
  • enable_log_martians = true 不審な / ルーティング不能なネットワークパケットのログ記録を有効化する場合は true、それ以外は false。警告 - 巨大なログファイルが生成される可能性があります!
  • unwanted_packages = [] システムから削除すべきパッケージ
  • wanted_packages = [] システムに追加すべきパッケージ
  • disabled_services = [] 有効化すべきでないサービス
  • enable_grub_hardening = false 一部の grub ハードニングルールを有効化するには true に設定
  • grub_user = 'root' grub プロンプトで設定変更時に提供する必要がある grub ユーザー名
  • grub_password_hash = '' grub-mkpasswd-pbkdf2 で作成され、grub_user に関連付けられるパスワードハッシュ
  • boot_without_password = true エントリの変更時のみパスワードを要求し、既存エントリの起動時には要求しないように Grub を設定
  • system_umask = undef この変数が設定されている場合、システム内のすべてのユーザーの umask を設定します(例: '027')
  • manage_home_permissions = false ローカルユーザーのファイルとディレクトリの権限を管理するには true に設定(g-w,o-rwx)
  • ignore_home_users = [] manage_home_permissions による制限対象外とするユーザーの配列
  • manage_log_permissions = false ログファイルの権限を管理するには true に設定(g-wx,o-rwx)
  • restrict_log_dir = ['/var/log/'] メインのログディレクトリを設定
  • ignore_restrict_log_dir = [] メインのログディレクトリ配下で除外するログディレクトリの配列
  • ignore_files_in_folder_to_restrict = [] folder_to_restrict 配列のディレクトリ内でハードニング対象外とするファイルの配列
  • manage_cron_permissions = false cron ファイルの権限を管理するには true に設定(og-rwx)
  • enable_sysctl_config = true sysctl 設定を無効化するには false に設定
  • manage_system_users = true システムユーザーの管理(空のパスワードと nologin シェルの設定)を無効化するには false に設定
  • shadow_group = undef /etc/shadow のグループ所有権を上書き
  • shadow_mode = undef /etc/shadow のファイル権限を上書き