alivx.ansible_cis_nginx_hardening

Ansible CIS Nginx Hardening
(テストフェーズ中)
CIS NGINX ベンチマーク v1.0.0 に基づく - 2019年2月28日
Nginxは、トラフィックの多いウェブサイトをホスティングするために使われる、最も広く使用されている無料かつオープンソースのウェブサーバーの1つと考えられています。安定性、優れたパフォーマンス、低リソース消費、シンプルな設定で知られています。 デフォルトの設定は安全ではなく、攻撃や侵害を防ぐために、ウェブサーバーを強化する追加の調整が必要です。したがって、この役割は、Ubuntu上で実行されるNGINXのための安全な設定ポスチャーを確立します。
スコア情報
- スコアの状態は、与えられた推奨事項への準拠が評価対象のベンチマークスコアにどのように影響するかを示します。以下のスコアの状態がこのベンチマークで使用されます:
スコアあり(この役割で実装済み)
- "スコアあり" の推奨事項に従わない場合、最終ベンチマークスコアが減少します。 "スコアあり" の推奨事項に従うと、最終ベンチマークスコアが増加します。
スコアなし(この役割で未実装)
- "スコアなし" の推奨事項に従わない場合、最終ベンチマークスコアは減少しません。"スコアなし" の推奨事項に従っても、最終ベンチマークスコアは増加しません。
NGINXのベンダーパッケージを使用する主な利点:
- インストールの容易さ
- 依存関係の解決
- メンテナンスとセキュリティパッチの効果的な実施
- ベンダーによるQ&A手続き
要件
この役割は、OSリポジトリから最新のNginxパッケージをインストールしますので、新しいNginxサーバーでこの役割を実行してください。これにより、インストールプロセスが処理されます。
既にNginxをサーバーにインストールしている場合も動作する可能性があります。
役割変数
以下のように設定します
large_client_header_buffers: "2 1k"
client_max_body_size: "100K"
client_body_timeout: 10
client_header_timeout: 10
strict_transport_security_max_age: 15768000 #max-ageディレクティブの15768000秒(6ヶ月)以上
nginx_site_config_dir: /etc/nginx/sites-available/
#または ALL:!EXP:!NULL:!ADH:!LOW:!SSLv2:!SSLv3:!MD5:!RC4;
ssl_ciphers: ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384
nginx_key: /etc/ssl/private/nginx-selfsigned.key
nginx_cert: /etc/ssl/certs/nginx-selfsigned.crt
backendserver: http://localhost:3000
backendserver_ssl: True
access_log: /var/log/nginx/alivx.com.access.log
error_log: /var/log/nginx/alivx.com.error.log warn
domainName: 172.16.186.129
依存関係
例のプレイブック
役割の使用方法の例を含めること(たとえば、パラメータとして渡された変数で)ユーザーにとっても良いでしょう:
---
- hosts: host1
become: yes
remote_user: root
gather_facts: no
roles:
- { role: "ansible-cis-nginx-hardening" }
ベンチマーク
- 1 初期設定
- 1.1 インストール
- 1.1.1 NGINXがインストールされていることを確認(スコアあり)
- 1.2 ソフトウェアアップデートの設定
- 2 基本設定
- 2.1 NGINXモジュールの最小化
- 2.1.2 HTTP WebDAVモジュールがインストールされていないことを確認(スコアあり)
- 2.1.3 gzip機能のあるモジュールが無効になっていることを確認(スコアあり)
- 2.1.4 autoindexモジュールが無効になっていることを確認(スコアあり)
- 2.2 アカウントのセキュリティ
- 2.2.2 NGINXサービスアカウントがロックされていることを確認(スコアあり)
- 2.2.3 NGINXサービスアカウントに無効なシェルが設定されていることを確認(スコアあり)
- 2.3 権限と所有権
- 2.3.1 NGINXディレクトリとファイルがrootによって所有されていることを確認(スコアあり)
- 2.3.2 NGINXディレクトリとファイルへのアクセスが制限されていることを確認(スコアあり)
- 2.3.3 NGINXプロセスID(PID)ファイルが保護されていることを確認(スコアあり)
- 2.4 ネットワーク設定
- 2.4.1 NGINXが認可されたポートでのみネットワーク接続をリッスンすることを確認(スコアなし)
- 2.4.3 keepalive_timeoutが10秒以下であることを確認(スコアあり)
- 2.4.4 send_timeoutが10秒以下であることを確認(スコアあり)
- 2.5 情報漏洩
- 2.5.1 server_tokensディレクティブが
off
に設定されていることを確認(スコアあり) - 2.5.2 デフォルトのエラーページやindex.htmlページがNGINXを参照していないことを確認(スコアあり)
- 2.5.4 NGINXリバースプロキシが情報漏洩を許可しないことを確認(スコアあり)
- 3 ロギング
- 3.2 アクセスログが有効になっていることを確認(スコアあり)
- 3.3 エラーログが有効で、情報レベルに設定されていることを確認(スコアあり)
- 3.4 ログファイルがローテーションされていることを確認(スコアあり)
- 3.7 プロキシが元のIP情報を送信することを確認(スコアあり)
- 4 暗号化
- 4.1 TLS / SSL設定
- 4.1.1 HTTPがHTTPSにリダイレクトされることを確認(スコアあり)
- 4.1.3 プライベートキーの権限が制限されていることを確認(スコアあり)
- 4.1.4 最新のTLSプロトコルのみが使用されていることを確認(スコアあり)
- 4.1.5 弱い暗号が無効にされていることを確認(スコアあり)
- 4.1.6 カスタムDiffie-Hellmanパラメータが使用されていることを確認(スコアあり)
- 4.1.7 オンライン証明書ステータスプロトコル(OCSP)スタップリングが有効であることを確認(スコアあり)
- 4.1.8 HTTP厳格トランスポートセキュリティ(HSTS)が有効であることを確認(スコアあり)
- 4.1.10 上流サーバーのトラフィックがクライアント証明書で認証されていることを確認(スコアあり)
- 4.1.13 セッションの再開が無効にされており、完全な前方セキュリティが有効になっていることを確認(スコアあり)
- 5 リクエストフィルタリングと制限
- 5.1 アクセス制御
- 5.2 リクエスト制限
- 5.2.1 クライアントヘッダーとボディの読み取りのタイムアウト値が正しく設定されていることを確認(スコアあり)
- 5.2.2 最大リクエストボディサイズが正しく設定されていることを確認(スコアあり)
- 5.2.3 URIの最大バッファサイズが定義されていることを確認(スコアあり)
- 5.3 ブラウザーセキュリティ
- 5.3.1 X-Frame-Optionsヘッダーが設定され、有効になっていることを確認(スコアあり)
- 5.3.2 X-Content-Type-Optionsヘッダーが設定され、有効になっていることを確認(スコアあり)
- 5.3.3 X-XSS-Protectionヘッダーが有効になり、適切に設定されていることを確認(スコアあり)
ライセンス
GNU一般公衆ライセンス
著者情報
この役割は、Ali Saleh Bakerによって最初に開発されました。
このリポジトリに貢献する際は、変更したい内容をGitHubのイシュー、メール、または他のチャネルを通じて最初に私に相談してください :)