ryezone_labs.ansible_cis_ubuntu_2004

Ansible CIS Ubuntu 20.04 LTS ハードニング 
CIS ハードニング Ubuntu: 重要なシステムのサイバー攻撃とマルウェア対策
CIS ベンチマークは、以下の項目を排除することにより、システムをロックダウンします:
- 非安全なプログラム
- 使用されていないファイルシステムの無効化
- 不要なポートやサービスの無効化
- 特権操作の監査
- 管理権限の制限
CIS ベンチマークの推奨事項は、パブリックおよびプライベートのクラウド内の仮想マシンで採用されており、オンプレミスの展開を保護するためにも使用されます。一部の業界では、公開されている標準に対してシステムをハードニングすることが、監査人が探す基準となっています。CIS ベンチマークは、PCI-DSSやHIPAAに準拠が求められる業界(銀行、通信、医療など)で記載されたシステムハードニングの選択肢として、監査人から推奨されることが多いです。業界標準のセキュリティ基準(例: PCI DSS、APRA、ISO 27001)に対するコンプライアンスを取得しようとする場合、評価の範囲内のすべてのシステムに焦点を当てた文書化されたハードニング基準を適用したことを示す必要があります。
Ubuntu の CIS ベンチマークは、サーバー環境とワークステーション環境用にそれぞれ 「レベル 1」 と 「レベル 2」 という異なるプロファイルに整理されています。
レベル 1 プロファイルは、システムのパフォーマンスに過度な影響を与えずにセキュリティを確保する実用的かつ慎重な方法を目的としています。
- 不要なファイルシステムの無効化
- ファイルとディレクトリへのユーザー権限の制限
- 不要なサービスの無効化
- ネットワークファイアウォールの設定
レベル 2 プロファイルは、セキュリティが非常に重要と見なされ、システムのパフォーマンスに悪影響を及ぼす可能性があります。
- 別のパーティションの作成
- 特権操作の監査
Ubuntu CIS ハードニングツールを使うことで、システムに対してプロファイル(レベル 1 またはレベル 2)および作業環境(サーバーまたはワークステーション)に基づき、希望するハードニングのレベルを選択できます。
例:
ansible-playbook -i inventory cis-ubuntu-20.yaml --tags="level_1_server"
すべてのタグをリストするには、次のコマンドを実行します:
ansible-playbook -i host run.yaml --list-tags
私は次のに基づいてすべての役割を作成しました。
CIS Ubuntu Linux 20.04 LTS ベンチマーク
v1.0.0 - 2020年7月21日
チェック例のディレクトリ
要件
このプレイブックを実行する前に、システムが壊れないことを確認するために、タスクを注意深く読み通してください。
このURLから無料のCISベンチマークブックをダウンロードできます
無料ベンチマーク
この役割で作業を開始するには、Ansibleをインストールするだけで済みます。
Ansibleのインストール
役割の変数
プレイブックを実行する前に、すべてのデフォルト設定を確認する必要があります。デフォルトのmain.ymlに多くの役割変数が定義されています。
- この役割をサーバーに適用することを検討している場合、CISベンチマークに基本的な理解を持ち、それがシステムに与える影響を認識している必要があります。
- 変更可能なデフォルト値を読み、変更してください。
直ちに除外を検討すべき設定の例:
5.1.8 cronが承認されたユーザーに制限されていることを確認する と 5.2.17 SSHアクセスが制限されていることを確認する は、デフォルトでホストへのアクセス(ssh経由を含む)を制限します。
例:
- CIS-Ubuntu-20.04-Ansible/defaults/main.yml
# 5セクション
# 5.1.8 cronが承認されたユーザーに制限されていることを確認する
allowd_hosts: "ALL: 0.0.0.0/0.0.0.0, 192.168.2.0/255.255.255.0"
# 5.2.17 SSHアクセスが制限されていることを確認する
allowed_users: ali saleh baker root #Noneまたはユーザーのリストをユーザーの間にスペースを入れて追加
ファイルテンプレートを変更する必要がある場合は、files/templates/*
の中にあります。
依存関係
- Ansible バージョン > 2.9
サンプルプレイブック
以下はプレイブックのサンプルです
---
- hosts: host1
become: yes
remote_user: root
gather_facts: no
roles:
- { role: "CIS-Ubuntu-20.04-Ansible",}
すべて実行
すべてのタグを実行するには、以下のコマンドを使用します:
ansible-playbook -i [inventoryfile] [playbook].yaml
特定のセクションを実行
ansible-playbook -i host run.yaml -t section2
複数のセクションを実行
ansible-playbook -i host run.yaml -t section2 -t 6.1.1
注:
個々のタスクを実行する際は、タスク間の依存関係に注意してください。たとえば、4.1.1.2 auditdサービスが有効であることを確認するを4.1.1.1 auditdがインストールされていることを確認するより先に実行すると、実行時にエラーが発生します。チルダ付きのポイントはまだ実装されておらず、現在、取り組んでいます。一度のみサービスを選択するようにしてください。私の場合はntpを使用していますが、他のサービス([
systemd-timesyncd
,ntp
,chrony
])を使用することもできます。設定のdefaults/main.yaml
にて。テスト
2020年11月1日 AWS EC2 ubuntu 20.04 LTS でテスト済み [合格]
2020年11月1日 ローカル Ubuntu 20.04 LTS サーバーでテスト済み [合格]実行前に、
defaults/main.yaml
のlist_of_os_users
+allowed_users
の下のユーザーリストを更新してください。defaults/main.yaml
のallowd_hosts
で正しいサブネットを設定してください。
役割の表:
1 初期設定
- 1.1 ファイルシステムの設定
- 1.1.1 使用されていないファイルシステムを無効化
- 1.1.1.1 cramfsファイルシステムのマウントを無効化していることを確認する(自動化)
- 1.1.1.2 freevxfsファイルシステムのマウントを無効化していることを確認する(自動化)
- 1.1.1.3 jffs2ファイルシステムのマウントを無効化していることを確認する(自動化)
- 1.1.1.4 hfsファイルシステムのマウントを無効化していることを確認する(自動化)
- 1.1.1.5 hfsplusファイルシステムのマウントを無効化していることを確認する(自動化)
- 1.1.1.6 udfファイルシステムのマウントを無効化していることを確認する(自動化)
- 1.1.1.7 FATファイルシステムのマウントを制限する(手動)
- 1.1.2 /tmpが設定されていることを確認する(自動化)
- 1.1.3 /tmpパーティションにnodevオプションが設定されていることを確認する(自動化)
- 1.1.4 /tmpパーティションにnosuidオプションが設定されていることを確認する(自動化)
- 1.1.5 /tmpパーティションにnoexecオプションが設定されていることを確認する(自動化)
- 1.1.6 /dev/shmが設定されていることを確認する(自動化)
- 1.1.7 /dev/shmパーティションにnodevオプションが設定されていることを確認する(自動化)
- 1.1.8 /dev/shmパーティションにnosuidオプションが設定されていることを確認する(自動化)
- 1.1.9 /dev/shmパーティションにnoexecオプションが設定されていることを確認する(自動化)
1.1.10 /varのための別のパーティションが存在することを確認する(自動化)1.1.11 /var/tmpのための別のパーティションが存在することを確認する(自動化)1.1.12 /var/tmpパーティションにnodevオプションが設定されていることを確認する(自動化)1.1.13 /var/tmpパーティションにnosuidオプションが設定されていることを確認する(自動化)1.1.14 /var/tmpパーティションにnoexecオプションが設定されていることを確認する(自動化)1.1.15 /var/logのための別のパーティションが存在することを確認する(自動化)1.1.16 /var/log/auditのための別のパーティションが存在することを確認する(自動化)1.1.17 /homeのための別のパーティションが存在することを確認する(自動化)1.1.18 /homeパーティションにnodevオプションが設定されていることを確認する(自動化)1.1.19 removable media パーティションにnodevオプションが設定されていることを確認する(手動)1.1.20 removable media パーティションにnosuidオプションが設定されていることを確認する(手動)1.1.21 removable media パーティションにnoexecオプションが設定されていることを確認する(手動)- 1.1.22 すべてのワールド書き込み可能なディレクトリにsticky bitが設定されていることを確認する(自動化)
- 1.1.23 自動マウントを無効化する(自動化)
- 1.1.24 USBストレージを無効化する(自動化)
1.2 ソフトウェア更新の設定
1.2.1 パッケージマネージャーリポジトリが設定されていることを確認する(手動)1.2.2 GPG鍵が設定されていることを確認する(手動)
1.3 sudoの設定
- 1.3.1 sudoがインストールされていることを確認する(自動化)
- 1.3.2 sudoコマンドがptyを使用することを確認する(自動化)
- 1.3.3 sudoログファイルが存在することを確認する(自動化)
1.4 ファイルシステムの整合性チェック
- 1.4.1 AIDEがインストールされていることを確認する(自動化)
- 1.4.2 ファイルシステムの整合性が定期的にチェックされていることを確認する(自動化)
1.5 セキュアブート設定
- 1.5.1 ブートローダーパスワードが設定されていることを確認する(自動化)
- 1.5.2 ブートローダー設定の権限が設定されていることを確認する(自動化)
- 1.5.3 単一ユーザーモードに認証が必要であることを確認する(自動化)
1.6 追加のプロセスハードニング
- 1.6.1 XD/NXサポートが有効になっていることを確認する(自動化)
- 1.6.2 アドレス空間配置のランダム化(ASLR)が有効になっていることを確認する(自動化)
- 1.6.3 プリリンクが無効化されていることを確認する(自動化)
- 1.6.4 コアダンプが制限されていることを確認する(自動化)
1.7 強制アクセス制御
- 1.7.1 AppArmorを設定する
- 1.7.1.1 AppArmorがインストールされていることを確認する(自動化)
- 1.7.1.2 ブートローダー設定でAppArmorが有効になっていることを確認する(自動化)
- 1.7.1.3 すべてのAppArmorプロファイルが強制または苦情モードにあることを確認する(自動化)
- 1.7.1.4 すべてのAppArmorプロファイルが強制されていることを確認する(自動化)
1.8 警告バナー
- 1.8.1 コマンドライン警告バナー
- 1.8.1.1 毎日のメッセージが適切に設定されていることを確認する(自動化)
- 1.8.1.2 ローカルログイン警告バナーが適切に設定されていることを確認する(自動化)
- 1.8.1.3 リモートログイン警告バナーが適切に設定されていることを確認する(自動化)
- 1.8.1.4 /etc/motdの権限が適切に設定されていることを確認する(自動化)
- 1.8.1.5 /etc/issueの権限が適切に設定されていることを確認する(自動化)
- 1.8.1.6 /etc/issue.netの権限が適切に設定されていることを確認する(自動化)
- 1.9 更新、パッチ、および追加のセキュリティソフトウェアがインストールされていることを確認する(手動)
- 1.10 GDMが削除されるか、ログインが設定されていることを確認する(自動化)
2 サービス
- 2.1 inetdサービス
- 2.1.1 xinetdがインストールされていないことを確認する(自動化)
- 2.1.2 openbsd-inetdがインストールされていないことを確認する(自動化)
- 2.2 特殊目的サービス
- 2.2.1 時間同期
- 2.2.1.1 時間同期が使用されていることを確認する(自動化)
- 2.2.1.2 systemd-timesyncdが設定されていることを確認する(手動)
- 2.2.1.3 chronyが設定されていることを確認する(自動化)
- 2.2.1.4 ntpが設定されていることを確認する(自動化)
- 2.2.2 X Windowシステムがインストールされていないことを確認する(自動化)
- 2.2.3 Avahiサーバーがインストールされていないことを確認する(自動化)
- 2.2.4 CUPSがインストールされていないことを確認する(自動化)
- 2.2.5 DHCPサーバーがインストールされていないことを確認する(自動化)
- 2.2.6 LDAPサーバーがインストールされていないことを確認する(自動化)
- 2.2.7 NFSがインストールされていないことを確認する(自動化)
- 2.2.8 DNSサーバーがインストールされていないことを確認する(自動化)
- 2.2.9 FTPサーバーがインストールされていないことを確認する(自動化)
- 2.2.10 HTTPサーバーがインストールされていないことを確認する(自動化)
- 2.2.11 IMAPとPOP3サーバーがインストールされていないことを確認する(自動化)
- 2.2.12 Sambaがインストールされていないことを確認する(自動化)
- 2.2.13 HTTPプロキシサーバーがインストールされていないことを確認する(自動化)
- 2.2.14 SNMPサーバーがインストールされていないことを確認する(自動化)
- 2.2.15 メール転送エージェントがローカル専用モードに設定されていることを確認する(自動化)
- 2.2.16 rsyncサービスがインストールされていないことを確認する(自動化)
- 2.2.17 NISサーバーがインストールされていないことを確認する(自動化)
2.3 サービスクライアント
- 2.3.1 NISクライアントがインストールされていないことを確認する(自動化)
- 2.3.2 rshクライアントがインストールされていないことを確認する(自動化)
- 2.3.3 talkクライアントがインストールされていないことを確認する(自動化)
- 2.3.4 telnetクライアントがインストールされていないことを確認する(自動化)
- 2.3.5 LDAPクライアントがインストールされていないことを確認する(自動化)
- 2.3.6 RPCがインストールされていないことを確認する(自動化)
2.4 不要なサービスが削除またはマスクされていることを確認する(手動)
3 ネットワーク設定
- 3.1 使用されていないネットワークプロトコルとデバイスを無効化する
- 3.1.1 IPv6を無効化する(手動)
- 3.1.2 ワイヤレスインターフェースが無効化されていることを確認する(自動化)
3.2 ネットワークパラメータ(ホストのみ)
- 3.2.1 パケットリダイレクト送信が無効化されていることを確認する(自動化)
- 3.2.2 IPフォワーディングが無効化されていることを確認する(自動化)
3.3 ネットワークパラメータ(ホストとルーター)
- 3.3.1 ソースルーティングされたパケットが受け付けられないことを確認する(自動化)
- 3.3.2 ICMPリダイレクトが受け付けられないことを確認する(自動化)
- 3.3.3 セキュアなICMPリダイレクトが受け付けられないことを確認する(自動化)
- 3.3.4 疑わしいパケットがログに記録されることを確認する(自動化)
- 3.3.5 ブロードキャストICMP要求が無視されることを確認する(自動化)
- 3.3.6 虚偽のICMP応答が無視されることを確認する(自動化)
- 3.3.7 リバースパスフィルタリングが有効になっていることを確認する(自動化)
- 3.3.8 TCP SYN クッキーが有効になっていることを確認する(自動化)
- 3.3.9 IPv6 ルーター広告が受け付けられないことを確認する(自動化)
3.4 珍しいネットワークプロトコル
- 3.4.1 DCCPが無効化されていることを確認する(自動化)
- 3.4.2 SCTPが無効化されていることを確認する(自動化)
- 3.4.3 RDSが無効化されていることを確認する(自動化)
- 3.4.4 TIPCが無効化されていることを確認する(自動化)
3.5 ファイアウォール設定
- 3.5.1 UncomplicatedFirewallを設定する
- 3.5.1.1 Uncomplicated Firewallがインストールされていることを確認する(自動化)
- 3.5.1.2 iptables-persistentがインストールされていないことを確認する(自動化)
- 3.5.1.3 ufwサービスが有効になっていることを確認する(自動化)
- 3.5.1.4 ループバックトラフィックが設定されていることを確認する(自動化)
- 3.5.1.5 アウトバウンド接続が設定されていることを確認する(手動)
- 3.5.1.6 開いているすべてのポートに対してファイアウォールルールが存在することを確認する(手動)
- 3.5.1.7 デフォルトの拒否ファイアウォールポリシーを確認する(自動化)
3.5.2 nftablesを設定する3.5.2.1 nftablesがインストールされていることを確認する(自動化)3.5.2.2 Uncomplicated Firewallがインストールされていないか無効になっていることを確認する(自動化)3.5.2.3 iptablesがフラッシュされていることを確認する(手動)3.5.2.4 テーブルが存在することを確認する(自動化)3.5.2.5 基本チェーンが存在することを確認する(自動化)3.5.2.6 ループバックトラフィックが設定されていることを確認する(自動化)3.5.2.7 アウトバウンドおよび確立された接続が構成されていることを確認する(手動)3.5.2.8 デフォルトの拒否ファイアウォールポリシーを確認する(自動化)3.5.3 iptablesを設定する3.5.3.1.1 iptablesパッケージがインストールされていることを確認する(自動化)3.5.3.1.2 nftablesがインストールされていないことを確認する(自動化)3.5.3.1.3 Uncomplicated Firewallがインストールされていないか無効になっていることを確認する(自動化)3.5.3.2.1 デフォルトの拒否ファイアウォールポリシーを確認する(自動化)3.5.3.2.2 ループバックトラフィックが設定されていることを確認する(自動化)3.5.3.2.3 アウトバウンド及び確立された接続が構成されていることを確認する(手動)3.5.3.2.4 開いているすべてのポートに対してファイアウォールルールが存在することを確認する(自動化)3.5.3.3.1 IPv6のデフォルトの拒否ファイアウォールポリシーを確認する(自動化)3.5.3.3.2 IPv6のループバックトラフィックが設定されていることを確認する(自動化)3.5.3.3.3 IPv6のアウトバウンド及び確立された接続が構成されていることを確認する(手動)
4 ログ記録と監査
- 4.1 システム会計(auditd)の設定
- 4.1.1 監査が有効であることを確認する
- 4.1.1.1 auditdがインストールされていることを確認する(自動化)
- 4.1.1.2 auditdサービスが有効になっていることを確認する(自動化)
- 4.1.1.3 auditd以前に開始されたプロセスの監査が有効であることを確認する(自動化)
- 4.1.1.4 audit_backlog_limitが十分であることを確認する(自動化)
- 4.1.2 データ保持の設定
- 4.1.2.1 監査ログストレージサイズが設定されていることを確認する(自動化)
- 4.1.2.2 監査ログが自動的に削除されないことを確認する(自動化)
- 4.1.2.3 監査ログが満杯の際にシステムが無効にされていることを確認する(自動化)
- 4.1.3 日付と時刻情報を修正するイベントが収集されていることを確認する(自動化)
- 4.1.4 ユーザー/グループ情報を修正するイベントが収集されていることを確認する(自動化)
- 4.1.5 システムのネットワーク環境を修正するイベントが収集されていることを確認する(自動化)
- 4.1.6 システムの強制アクセス制御を修正するイベントが収集されていることを確認する(自動化)
- 4.1.7 ログインおよびログアウトイベントが収集されていることを確認する(自動化)
- 4.1.8 セッション開始情報が収集されていることを確認する(自動化)
- 4.1.9 任意のアクセス制御許可の変更イベントが収集されていることを確認する(自動化)
- 4.1.10 無許可のファイルアクセス試行が収集されていることを確認する(自動化)
- 4.1.11 特権コマンドの使用が収集されていることを確認する(自動化)
- 4.1.12 成功したファイルシステムのマウントが収集されていることを確認する(自動化)
- 4.1.13 ユーザーによるファイル削除イベントが収集されていることを確認する(自動化)
- 4.1.14 システム管理範囲(sudoers)の変更が収集されていることを確認する(自動化)
- 4.1.15 システム管理者のコマンド実行(sudo)が収集されていることを確認する(自動化)
- 4.1.16 カーネルモジュールの読み込みと読み出しが収集されていることを確認する(自動化)
- 4.1.17 監査設定が不変であることを確認する(自動化)
4.2 ロギングの設定
- 4.2.1 rsyslogの設定
- 4.2.1.1 rsyslogがインストールされていることを確認する(自動化)
- 4.2.1.2 rsyslogサービスが有効になっていることを確認する(自動化)
- 4.2.1.3 ロギングが設定されていることを確認する(手動)
- 4.2.1.4 rsyslogのデフォルトファイル権限が設定されていることを確認する(自動化)
- 4.2.1.5 rsyslogがリモートログホストにログを送信するように設定されていることを確認する(自動化)
- 4.2.1.6 リモートrsyslogメッセージが指定されたログホストでのみ受け付けられることを確認する(手動)
- 4.2.2 journaldの設定
- 4.2.2.1 journaldがrsyslogにログを送信するように設定されていることを確認する(自動化)
- 4.2.2.2 journaldが大きなログファイルを圧縮するように設定されていることを確認する(自動化)
- 4.2.2.3 journaldが永続ディスクにログファイルを書くように設定されていることを確認する(自動化)
- 4.2.3 すべてのログファイルの権限が設定されていることを確認する(自動化)
- 4.3 logrotateが設定されていることを確認する(手動)
- 4.4 logrotateが適切な権限を割り当てていることを確認する(自動化)
5 アクセス、認証、認可
- 5.1 時間ベースのジョブスケジューラを設定する
- 5.1.1 cronデーモンが有効で稼働していることを確認する(自動化)
- 5.1.2 /etc/crontab の権限が設定されていることを確認する(自動化)
- 5.1.3 /etc/cron.hourly の権限が設定されていることを確認する(自動化)
- 5.1.4 /etc/cron.daily の権限が設定されていることを確認する(自動化)
- 5.1.5 /etc/cron.weekly の権限が設定されていることを確認する(自動化)
- 5.1.6 /etc/cron.monthly の権限が設定されていることを確認する(自動化)
- 5.1.7 /etc/cron.d の権限が設定されていることを確認する(自動化)
- 5.1.8 cronが承認されたユーザーに制限されていることを確認する(自動化)
- 5.1.9 atが承認されたユーザーに制限されていることを確認する(自動化)
5.2 SSHサーバーの設定
- 5.2.1 /etc/ssh/sshd_configの権限が設定されていることを確認する(自動化)
- 5.2.2 SSHプライベートホストキーの権限が設定されていることを確認する(自動化)
- 5.2.3 SSHパブリックホストキーの権限が設定されていることを確認する(自動化)
- 5.2.4 SSHのLogLevelが適切であることを確認する(自動化)
- 5.2.5 SSHのX11転送が無効化されていることを確認する(自動化)
- 5.2.6 SSHのMaxAuthTriesが4以下に設定されていることを確認する(自動化)
- 5.2.7 SSHでIgnoreRhostsが有効になっていることを確認する(自動化)
- 5.2.8 SSHのHostbasedAuthenticationが無効化されていることを確認する(自動化)
- 5.2.9 SSHでrootログインが無効化されていることを確認する(自動化)
- 5.2.10 SSHのPermitEmptyPasswordsが無効化されていることを確認する(自動化)
- 5.2.11 SSHのPermitUserEnvironmentが無効化されていることを確認する(自動化)
- 5.2.12 強力な暗号のみが使用されることを確認する(自動化)
- 5.2.13 強力なMACアルゴリズムのみが使用されることを確認する(自動化)
- 5.2.14 強力な鍵交換アルゴリズムのみが使用されることを確認する(自動化)
- 5.2.15 SSHのIdle Timeout Intervalが設定されていることを確認する(自動化)
- 5.2.16 SSHのLoginGraceTimeが1分以下に設定されていることを確認する(自動化)
- 5.2.17 SSHアクセスが制限されていることを確認する(自動化)
- 5.2.18 SSH警告バナーが設定されていることを確認する(自動化)
- 5.2.19 SSH PAMが有効になっていることを確認する(自動化)
- 5.2.20 SSHのAllowTcpForwardingが無効化されていることを確認する(自動化)
- 5.2.21 SSHのMaxStartupsが設定されていることを確認する(自動化)
- 5.2.22 SSHのMaxSessionsが制限されていることを確認する(自動化)
5.3 PAMの設定
- 5.3.1 パスワード作成要件が設定されていることを確認する(自動化)
- 5.3.2 失敗したパスワード試行に対するロックアウトが設定されていることを確認する(自動化)
- 5.3.3 パスワードの再利用が制限されていることを確認する(自動化)
- 5.3.4 パスワードハッシングアルゴリズムがSHA-512であることを確認する(自動化)
5.4 ユーザーアカウントと環境
- 5.4.1 シャドウパスワードスイートパラメータを設定する
- 5.4.1.1 パスワードの有効期限が365日未満であることを確認する(自動化)
- 5.4.1.2 パスワード変更の最小日数が設定されていることを確認する(自動化)
- 5.4.1.3 パスワード有効期限警告日数が7日以上であることを確認する(自動化)
- 5.4.1.4 非アクティブなパスワードロックが30日未満であることを確認する(自動化)
- 5.4.1.5 すべてのユーザーの最終パスワード変更日が過去であることを確認する(自動化)
- 5.4.2 システムアカウントが保護されていることを確認する(自動化)
- 5.4.3 rootアカウントのデフォルトグループがGID 0であることを確認する(自動化)
- 5.4.4 デフォルトユーザーumaskが027以上であることを確認する(自動化)
- 5.4.5 デフォルトユーザーシェルのタイムアウトが900秒以下であることを確認する(自動化)
- 5.5 rootログインがシステムコンソールに制限されていることを確認する(手動)
- 5.6 suコマンドへのアクセスが制限されていることを確認する(自動化)
6 システム保守
- 6.1 システムファイルの権限
6.1.1 システムファイルの権限を監査する(手動)- 6.1.2 /etc/passwd の権限が設定されていることを確認する(自動化)
- 6.1.3 /etc/gshadow- の権限が設定されていることを確認する(自動化)
- 6.1.4 /etc/shadow の権限が設定されていることを確認する(自動化)
- 6.1.5 /etc/group の権限が設定されていることを確認する(自動化)
- 6.1.6 /etc/passwd- の権限が設定されていることを確認する(自動化)
- 6.1.7 /etc/shadow- の権限が設定されていることを確認する(自動化)
- 6.1.8 /etc/group- の権限が設定されていることを確認する(自動化)
- 6.1.9 /etc/gshadow の権限が設定されていることを確認する(自動化)
- 6.1.10 ワールド書き込み可能なファイルが存在しないことを確認する(自動化)
- 6.1.11 無所有のファイルまたはディレクトリが存在しないことを確認する(自動化)
- 6.1.12 グループに属さないファイルまたはディレクトリが存在しないことを確認する(自動化)
6.1.13 SUID実行可能ファイルを監査する(手動)6.1.14 SGID実行可能ファイルを監査する(手動)
6.2 ユーザーとグループの設定
- 6.2.1 パスワードフィールドが空でないことを確認する(自動化)
6.2.2 rootが唯一のUID 0アカウントであることを確認する(自動化)6.2.3 rootのPATHの整合性を確認する(自動化)- 6.2.4 すべてのユーザーのホームディレクトリが存在することを確認する(自動化)
- 6.2.5 ユーザーのホームディレクトリの権限が750以上(制限的)であることを確認する(自動化)
- 6.2.6 ユーザーがそのホームディレクトリを所有していることを確認する(自動化)
- 6.2.7 ユーザーのドットファイルがグループやワールド書き込み可能でないことを確認する(自動化)
6.2.8 ユーザーに .forward ファイルがないことを確認する(自動化)6.2.9 ユーザーに .netrc ファイルがないことを確認する(自動化)6.2.10 ユーザーの .netrc ファイルがグループまたはワールドアクセス可能でないことを確認する(自動化)6.2.11 ユーザーに .rhosts ファイルがないことを確認する(自動化)6.2.12 /etc/passwd にあるすべてのグループが /etc/group に存在することを確認する(自動化)6.2.13 重複UIDが存在しないことを確認する(自動化)6.2.14 重複GIDが存在しないことを確認する(自動化)6.2.15 重複ユーザー名が存在しないことを確認する(自動化)6.2.16 重複グループ名が存在しないことを確認する(自動化)6.2.17 shadowグループが空であることを確認する(自動化)
トラブルシューティング
- 同じマシンでプレイブックを実行したい場合は、このタスクを追加してください:
- hosts: 127.0.0.1
connection: local
- 実行時に問題に直面した場合は、プレイブックを別のパス(例えば
/srv/
)で実行してみてください。 stderr: chage: user 'ubuntu' does not exist in /etc/passwd
というエラーのような場合は、CIS-Ubuntu-20.04-Ansible/defaults/main.yml
の設定を更新してください。
ライセンス
GNU 一般公開ライセンス
著者情報
この役割は最初に Ali Saleh Baker によって開発されました。
このリポジトリに貢献する場合は、変更したい内容を最初にGitHubの問題、メール、または他のチャンネルを通じて私に相談してください :)
ansible-galaxy install ryezone_labs.ansible_cis_ubuntu_2004