kmonticolo.ansible_os_hardening

os-hardening (Ansibleロール)

ビルドステータス Gitterチャット Ansible Galaxy

説明

このロールは、多くのセキュリティ関連の設定を提供し、基本的な保護を強化します。これは、DevSec Linux Baselineに準拠することを目的としています。

以下の設定を行います:

  • 署名されたパッケージのみを許可するなど、パッケージ管理を設定
  • 既知の問題を持つパッケージを削除
  • pamおよびpam_limitsモジュールを設定
  • シャドーパスワードスイートの設定
  • システムパスの権限を設定
  • ソフトリミットによってコアダンプを無効化
  • rootログインをシステムコンソールに制限
  • SUIDを設定
  • sysctlを介してカーネルパラメーターを設定
  • auditdをインストールし設定

実施しないこと:

  • システムパッケージの更新
  • セキュリティパッチのインストール

必要条件

  • Ansible 2.5.0

警告

このロールを適用した後、inspecを使用してマシンをテストする場合は、接続ユーザーをos_ignore_users変数に追加してください。 さもなければ、inspecは失敗します。詳細についてはissue #124を参照してください。

Docker / Kubernetes + Dockerを使用している場合は、ipv4のIPフォワードのsysctl設定をオーバーライドする必要があります。

- hosts: localhost
  roles:
    - dev-sec.os-hardening
  vars:
    sysctl_overwrite:
      # IPv4トラフィックフォワーディングを有効にする。
      net.ipv4.ip_forward: 1

変数

名前 デフォルト値 説明
os_desktop_enable false デスクトップシステム(Xorg、KDE/GNOME/Unityなど)の場合はtrue
os_env_extra_user_paths [] ユーザーのPATH変数に追加のパスを追加(デフォルトは空)
os_env_umask 027 新しいファイルのデフォルト権限を750に設定
os_auth_pw_max_age 60 最大パスワード年齢(99999に設定すると実質無効化)
os_auth_pw_min_age 7 最低パスワード年齢(他のパスワード変更を許可する前)
os_auth_retries 5 アカウントが一定期間ロックされる前の最大認証試行回数
os_auth_lockout_time 600 あまりに多くの認証試行によりアカウントがロックされた場合に経過する必要がある秒数
os_auth_timeout 60 認証にかかるタイムアウト(この時間を超えるとログインが終了)
os_auth_allow_homeless false ホームディレクトリがないユーザーのログインを許可する場合はtrue
os_auth_pam_passwdqc_enable true PAMでpasswdqcによる強力なパスワードチェックを使用する場合はtrue
os_auth_pam_passwdqc_options "min=disabled,disabled,16,12,8" passwdqcに渡す任意のオプション行(文字列として)
os_security_users_allow [] ユーザーが行うことを許可されている項目のリスト。change_userを含む場合があります。
os_security_kernel_enable_module_loading true システムが稼働中にカーネルモジュールを変更することを許可する場合はtrue(例:modprobermmod
os_security_kernel_enable_core_dump false カーネルがクラッシュまたは不具合を起こし、カーネルコアダンプが作成される際
os_security_suid_sgid_enforce true SUID/SGIDビットを減少させることを希望する場合はtrue
os_security_suid_sgid_blacklist [] SUID/SGIDビットを削除すべきパスのリスト
os_security_suid_sgid_whitelist [] SUID/SGIDビットを変更すべきでないパスのリスト
os_security_suid_sgid_remove_from_unknown false blacklistに明示的に設定されていないファイルのSUID/SGIDビットを削除したい場合はtrue
os_security_packages_clean true 既知の問題を持つパッケージを削除します。パッケージセクションを参照。
ufw_manage_defaults true すべての設定にufw_プレフィックスを適用する場合はtrue
ufw_ipt_sysctl '' デフォルトでは/etc/default/ufwでIPT_SYSCTLを無効にします。ufwを使用して/etc/sysctl.confの値を上書きする場合は、そのsysctl辞書を設定します。
ufw_default_input_policy DROP ufwのデフォルト入力ポリシーをDROPに設定
ufw_default_output_policy ACCEPT ufwのデフォルト出力ポリシーをACCEPTに設定
ufw_default_forward_policy DROP ufwのデフォルトフォワードポリシーをDROPに設定
os_auditd_enabled true auditdのインストールと設定を無効にするにはfalseに設定。

パッケージ

以下のパッケージを削除します:

  • xinetd (NSA, 第3.2.1章)
  • inetd (NSA, 第3.2.1章)
  • tftp-server (NSA, 第3.2.5章)
  • ypserv (NSA, 第3.2.4章)
  • telnet-server (NSA, 第3.2.2章)
  • rsh-server (NSA, 第3.2.3章)
  • prelink (open-scap)

無効化したファイルシステム

以下のファイルシステムを無効にします。これらはほとんど使用されないと考えられるためです:

  • "cramfs"
  • "freevxfs"
  • "jffs2"
  • "hfs"
  • "hfsplus"
  • "squashfs"
  • "udf"
  • "vfat" # uefiが使用されていない場合のみ

無効化を防ぎたいファイルシステムは、os_filesystem_whitelist変数に追加してください。

インストール

ansible-galaxyでロールをインストールします:

ansible-galaxy install dev-sec.os-hardening

サンプルプレイブック

- hosts: localhost
  roles:
    - dev-sec.os-hardening

sysctl変数の変更

sysctl変数をオーバーライドしたい場合は、sysctl_overwrite変数を使用できます(古いバージョンでは、sysctl_dict全体をオーバーライドする必要がありました)。 たとえば、IPv4トラフィックフォワーディング変数を1に変更したい場合は、次のようにします:

- hosts: localhost
  roles:
    - dev-sec.os-hardening
  vars:
    sysctl_overwrite:
      # IPv4トラフィックフォワーディングを有効にする。
      net.ipv4.ip_forward: 1

または、Ansibleのhash-behaviourmergeに変更すると、必要な単一のハッシュだけを上書きすることができます。ただし、hash-behaviourを変更すると、すべてのプレイブックに影響を与えるため、Ansibleでは推奨されていません。

ローカルテスト

ローカルでロールをテストするための推奨方法はDockerを使用することです。システムにDockerをインストールする必要があります。自分のシステムに適したDockerパッケージについては、始めるを参照してください。

また、VagrantとVirtualboxまたはVMWareを使用してローカルテストを実行することもできます。システムにVirtualboxとVagrantをインストールする必要があります。自分のシステムに適したVagrantパッケージについては、Vagrantダウンロードを参照してください。すべてのテストにはtest-kitchenを使用しています。test-kitchenについて知らない場合は、彼らのガイドを参照してください。

次に、test-kitchenをインストールします:

# 依存関係をインストール
gem install bundler
bundle install

Dockerでのテスト

# 一台の機械での迅速なテスト
bundle exec kitchen test default-ubuntu-1404

# すべての機械でのテスト
bundle exec kitchen test

# 開発のために
bundle exec kitchen create default-ubuntu-1404
bundle exec kitchen converge default-ubuntu-1404

Virtualboxでのテスト

# 一台の機械での迅速なテスト
KITCHEN_YAML=".kitchen.vagrant.yml" bundle exec kitchen test default-ubuntu-1404

# すべての機械でのテスト
KITCHEN_YAML=".kitchen.vagrant.yml" bundle exec kitchen test

# 開発のために
KITCHEN_YAML=".kitchen.vagrant.yml" bundle exec kitchen create default-ubuntu-1404
KITCHEN_YAML=".kitchen.vagrant.yml" bundle exec kitchen converge default-ubuntu-1404

詳細についてはtest-kitchenを参照してください。

貢献者 + 感謝

...

このロールは主に以下のガイドに基づいています:

皆様に感謝します!

貢献

貢献者ガイドラインを参照してください。

ライセンスと著者

  • 著者:: セバスチャン・ガンプリッヒ

Apache License, Version 2.0(「ライセンス」という)に基づいてライセンスされています; ライセンスに従わない限り、このファイルを使用することはできません。 ライセンスのコピーは、以下のURLで入手可能です。

http://www.apache.org/licenses/LICENSE-2.0

適用される法律で要求されている場合、または文書で合意している場合を除き、ライセンスに基づいて配布されたソフトウェアは「現状のまま」の状態で配布され、明示または暗黙の保証や条件は一切ありません。 ライセンスに従って権利や制限事項を確認してください。

プロジェクトについて

This role provides numerous security-related configurations, providing all-round base protection.

インストール
ansible-galaxy install kmonticolo.ansible_os_hardening
ライセンス
Unknown
ダウンロード
72
所有者
DevSecOps Engineer