
このPuppetモジュールは、数多くのセキュリティ関連の設定を提供し、全方位的な基本保護を実現します。
[][1]
[
][1]
[
][1]
[
][2]
この Puppet モジュールは、ベース OS のセキュアな設定をハードニングによって提供し、DevSec Hardening Framework の一部です。
このモジュールを追加した後、以下のクラスを使用できます:
class { 'os_hardening': }
すべてのパラメータはメインの os_hardening クラス内に含まれているため、次のように渡すだけです:
class { 'os_hardening':
enable_ipv4_forwarding => true,
}
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、それ以外は falsesys_uid_min = undef および sys_gid_min = undef
login.defs のデフォルト設定を上書きしますpassword_max_age = 60
パスワードの最大有効期間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
ホームディレクトリのないユーザーのログインを許可する場合は trueallow_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 およびパフォーマンス警告をログに記録しないようにする場合は truerecurselimit = 5
再帰的な権限チェックのディレクトリ深度passwdqc_enabled = true
PAM で passwdqc を使用した強力なパスワードチェックを使用する場合は trueauth_retries = 5
アカウントが一定時間ロックされるまでの最大認証試行回数auth_lockout_time = 600
認証失敗が多すぎてアカウントがロックされた場合に経過する必要がある時間(秒)passwdqc_options = 'min=disabled,disabled,16,12,8'
passwdqc に渡す任意のオプション行(文字列として)に設定しますmanage_pam_unix = false
このモジュールで pam_unix を管理する場合は trueenable_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 用に登録された TTYwhitelist = []
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)を許可する場合は trueload_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 など)の場合は trueenable_ipv4_forwarding = false
このシステムが IPv4 でのパケット転送を必要とする場合(例: ルーター)は true、それ以外は falsemanage_ipv6 = true
ipv6 セットアップをハードニングする場合は true、ipv6 を完全に無視する場合は falseenable_ipv6 = false
このシステムで ipv6 を無効化する場合は false、有効化する場合は trueenable_ipv6_forwarding = false
このシステムが IPv6 でのパケット転送を必要とする場合(例: ルーター)は true、それ以外は falsearp_restricted = true
ARP の通知と応答の動作を制限する場合は true、それ以外は falsearp_ignore_samenet = false
true は同じサブネットからのパケット以外をドロップします(arp_ignore = 2)、false はターゲット IP のみをチェックします(arp_ignore = 1)enable_sysrq = false
マジック sysrq キーを有効化する場合は true、それ以外は falseenable_core_dump = false
コアダンプの作成を防ぐ場合は false、それ以外は trueenable_stack_protection = true
Address Space Layout Randomization(ASLR)用。ASLR は特定の種類のバッファオーバーフロー攻撃を防ぐのに役立ちます。ASLR はベース、ライブラリ、ヒープ、スタックをプロセスのアドレス空間内のランダムな位置に配置できるため、攻撃プログラムが次の命令のメモリアドレスを予測することを困難にします。enable_rpfilter = true
リバースパスフィルタリングを有効化する場合は true(不正なパケットを破棄)、それ以外は falserpfilter_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 のファイル権限を上書きパラメータを Hiera で設定することも可能です: