dev-sec.nginx-hardening

nginxハードニング(Ansibleロール)

注意: このロールは、私たちのハードニングコレクションに移行されました:

要件

  • Ansible >= 2.5

ロール変数

  • nginx_client_body_buffer_size
    • デフォルト: 1k
    • 説明: クライアントリクエストボディを読み取るためのバッファサイズを設定します。リクエストボディがバッファより大きい場合、全体または一部が一時ファイルに書き込まれます。
  • nginx_remove_default_site
    • デフォルト: true
    • 説明: デフォルトのサイトを無効にします。デフォルトのサイトを有効にするにはfalseに設定します。
  • nginx_client_max_body_size
    • デフォルト: 1k
    • 説明: クライアントリクエストボディの最大許可サイズを設定します。リクエストのサイズが設定値を超えると、413(リクエストエンティティが大きすぎる)エラーがクライアントに返されます。
  • nginx_keepalive_timeout
    • デフォルト: 5 5
    • 説明: 最初のパラメータは、キープアライブクライアント接続がサーバー上でオープンのままでいる時間を設定します。0の場合はキープアライブ接続が無効になります。オプションの2番目のパラメータは、「Keep-Alive: timeout=time」レスポンスヘッダーの値を設定します。
  • nginx_server_tokens
    • デフォルト: off
    • 説明: エラーメッセージや「Server」レスポンスヘッダーにnginxのバージョンを表示しません。エラーメッセージや「Server」レスポンスヘッダーにnginxのバージョンを表示するにはonに設定します。
  • nginx_client_header_buffer_size
    • デフォルト: 1k
    • 説明: クライアントリクエストヘッダーを読み取るためのバッファサイズを設定します。ほとんどのリクエストには1Kバイトのバッファで十分です。
  • nginx_large_client_header_buffers
    • デフォルト: 2 1k
    • 説明: 大きなクライアントリクエストヘッダーを読み取るためのバッファの最大数とサイズを設定します。
  • nginx_client_body_timeout
    • デフォルト: 10
    • 説明: クライアントリクエストボディを読み取るためのタイムアウトを定義します。
  • nginx_client_header_timeout
    • デフォルト: 10
    • 説明: クライアントリクエストヘッダーを読み取るためのタイムアウトを定義します。
  • nginx_send_timeout
    • デフォルト: 10
    • 説明: クライアントへのレスポンス送信のタイムアウトを設定します。
  • nginx_limit_conn_zone
    • デフォルト: $binary_remote_addr zone=default:10m
    • 説明: さまざまなキーの状態を保持するための共有メモリゾーンのパラメータを設定します。
  • nginx_limit_conn
    • デフォルト: default 5
    • 説明: 共有メモリゾーンと特定のキー値に対する最大接続数を設定します。
  • nginx_add_header
    • デフォルト: [ "X-Frame-Options SAMEORIGIN", "X-Content-Type-Options nosniff", "X-XSS-Protection \"1; mode=block\"" ]
    • 説明: レスポンスコードが200、201、204、206、301、302、303、304、または307の場合に、指定されたフィールドをレスポンスヘッダーに追加します。
  • nginx_ssl_protocols
    • デフォルト: TLSv1.2
    • 説明: 使用するSSLプロトコルを指定します。
  • nginx_ssl_ciphers
    • デフォルト: defaults.ymlを参照
    • 説明: 使用すべきTLS暗号を指定します。
  • nginx_ssl_prefer_server_ciphers
    • デフォルト: on
    • 説明: TLSプロトコルを使用する場合、サーバー暗号をクライアント暗号より優先させることを指定します。無効にするにはfalseに設定します。
  • nginx_dh_size
    • デフォルト: 2048
    • 説明: EDH暗号のためのDHパラメータの長さを指定します。

インストール

ansible-galaxyを使用してロールをインストールします:

ansible-galaxy install dev-sec.nginx-hardening

例プレイブック

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

ローカルテスト

ロールのローカルテストには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-1204

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

# 開発用
bundle exec kitchen create default-ubuntu-1204
bundle exec kitchen converge default-ubuntu-1204

Virtualboxでのテスト

# 一台のマシンでの高速テスト
KITCHEN_YAML=".kitchen.vagrant.yml" bundle exec kitchen test nginx-ansible-19-ubuntu-1404

# すべてのマシンでのテスト
KITCHEN_YAML=".kitchen.vagrant.yml" bundle exec kitchen test

# 開発用
KITCHEN_YAML=".kitchen.vagrant.yml" bundle exec kitchen create nginx-ansible-19-ubuntu-1404
KITCHEN_YAML=".kitchen.vagrant.yml" bundle exec kitchen converge nginx-ansible-19-ubuntu-1404

さらに詳しい情報はテストキッチンを参照してください。

貢献

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

ライセンスと著者

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

Apache License, Version 2.0(「ライセンス」といいます)に基づきライセンスされています。 このファイルはライセンスに従って利用することができます。 ライセンスのコピーは以下から入手できます。

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

適用法により要求されない限り、または書面による合意がない限り、ライセンスに基づくソフトウェアは「現状のまま」提供され、いかなる種類の保証や条件もありません。 ライセンスの下での権限や制限については、ライセンスを参照してください。

プロジェクトについて

This Ansible role provides secure nginx configurations. http://dev-sec.io/

インストール
ansible-galaxy install dev-sec.nginx-hardening
ライセンス
Unknown
ダウンロード
40.8k
所有者
Security + DevOps: Automatic Server Hardening