PeterMosmans.apache2

Rola Ansible: Apache2

Status budowy tej roli: Status budowy

Ta rola instaluje i konfiguruje serwer www Apache 2 na serwerach Debian i Ubuntu. Główny nacisk kładzie na wzmocnienie domyślnej instalacji Apache. Zmienia domyślną konfigurację Apache oraz wyłącza i włącza konkretne moduły. Ponadto może wdrożyć (kilka) plików konfiguracyjnych stron internetowych, certyfikaty SSL oraz odpowiadające im klucze prywatne.

Ustawiając flagę apache2_php na true, PHP zostanie również zainstalowane i skonfigurowane.

Należy pamiętać, że PHP nie zostanie usunięte ani wyłączone po ustawieniu flagi apache2_php na false. Można to zrobić, na przykład, dodając moduł PHP do listy apache2_modules_disabled.

Wymagania

Zainstalowanie ufw (prosty zapora, frontend dla iptables).

Zmienne Roli

Dostępne zmienne są wymienione poniżej, wraz z domyślnymi wartościami.

apache2_default: Jeśli prawda, domyślna strona nie zostanie wyłączona, a /var/www/html nie zostanie usunięta. Jeśli nie jest określona lub fałszywa, domyślna strona zostanie wyłączona, a /var/www/html usunięta.

apache2_default: false

Domyślnie wartość nie jest określona.

apache2_modules_disabled: Lista modułów Apache, które będą wyłączone domyślnie. Domyślne wartości można znaleźć w defaults/main.yml.

apache2_modules_disabled:
  - autoindex
  - authn_anon
  - cgi
  - dav
  - env
  - negotiation
  - setenvif
  - status
  - userdir

apache2_modules_enabled: Lista modułów Apache, które będą włączone domyślnie. Domyślne wartości można znaleźć w defaults/main.yml.

apache2_modules_enabled:
  - alias
  - auth_digest
  - authz_host
  - deflate
  - dir
  - headers
  - reqtimeout
  - rewrite
  - ssl

apache2_php: Jeśli prawda, PHP zostanie również zainstalowane, w tym moduł PHP Apache

apache2_php: false

apache2_php_version: Wersja PHP. Domyślną wartość można znaleźć w defaults/main.yml.

apache2_php_version: 7.0

Jeśli PHP zostanie zainstalowane, php.ini zostanie wdrożone do /etc/php/[apache2_php_version]/apache2/php.ini. To jest szablon, który wykorzystuje wiele zmiennych szablonów, które można dostosować. Domyślne wartości można znaleźć w defaults/main.yml.

apache2_php_allow_url_fopen: "Off"
apache2_php_allow_url_include: "Off"
apache2_php_assert_active: "0"
apache2_php_default_charset: "\"UTF-8\""
apache2_php_disable_functions: "fsockopen,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriorit,stream_socket_client"
apache2_php_display_errors: "Off"
apache2_php_display_startup_errors: "Off"
apache2_php_enable_dl: "Off"
apache2_php_expose_php: "Off"
apache2_php_log_errors: "On"
apache2_php_mail_add_x_header: "Off"
apache2_php_open_basedir: "/dev/urandom:/var/www"

apache2_ports: Lista portów, na których będzie nasłuchiwać Apache. Jeśli ta zmienna nie jest zdefiniowana, użyty zostanie port 80 (i 443). Przykład:

apache2_ports:
  - 80
  - 8000

apache2_security_conf: Lista ustawień security.conf, które będą stosowane domyślnie. Domyślne wartości można znaleźć w defaults/main.yml.

apache2_security_conf:
  - name: "Header set X-Content-Type-Options:"
    value: "\"nosniff\""
  - name: "Header set X-Frame-Options:"
    value: "\"sameorigin\""
  - name: "ServerName"
    value: "{{ ansible_fqdn }}"
  - name: "ServerTokens"
    value: "Prod"
  - name: "ServerSignature"
    value: "Off"
  - name: "TraceEnable"
    value: "Off"

apache2_websites: Opcjonalna lista plików konfiguracyjnych Apache. src wskazuje na plik Jinja2, dest będzie docelowym plikiem konfiguracyjnym strony internetowej. Przykład:

apache2_websites:
  - src: mywebsited.conf.j2
    name: mywebsite.conf

Domyślnie lista jest pusta.

ssl_certificates: Opcjonalna lista zawierająca lokalizację (src) i nazwę (name) certyfikatów SSL w formacie x.509. Należy pamiętać, że lokalizacja jest względna od podfolderu apache2 role/files. Na przykład, jeśli chcesz dołączyć certyfikat z bezpiecznej ścieżki, użyj następującego:

ssl_certificates:
  - src: /secure/storage/path
    name: www.mysite.com.cer

Domyślnie lista jest pusta.

ssl_keys: Opcjonalna lista zawierająca lokalizację (src) i nazwę (name) kluczy prywatnych. Należy pamiętać, że lokalizacja jest względna od podfolderu apache2 role/files. Na przykład, jeśli chcesz dołączyć klucz z bezpiecznej ścieżki, użyj następującego:

ssl_keys:
  - src: /secure/storage/path
    name: www.mysite.com.key

Domyślnie lista jest pusta.

www_folder: Domyślny katalog, w którym przechowywane są katalogi stron internetowych.

www_folder: /var/www

Proszę zauważyć, że ta rola nie tworzy szablonów konfiguracji Apache - kopiuje pliki konfiguracyjne. Tworzy jednak szablony PHP.

Zależności

Brak.

Przykładowy playbook

- hosts: all
  become: yes
  become_method: sudo
  roles:
    - role: PeterMosmans.apache2

Ten przykład zainstaluje i wzmocni Apache.

- hosts: all
  become: yes
  become_method: sudo
  roles:
    - role: PeterMosmans.apache2
      apache2_websites:
      - src: .
        name: mywebsite.conf
  vars:
    apache2_php: true

Ten przykład zainstaluje i wzmocni Apache, zainstaluje i wzmocni PHP, wdroży plik mywebsite.conf z folderu roles/apache2/files i włączy stronę. Domyślna strona zostanie wyłączona, a /var/www/html usunięta.

Licencja

GPLv3

Informacje o autorze

Stworzone przez Petera Mosmansa.

O projekcie

Installs and hardens Apache2 (and PHP5).

Zainstaluj
ansible-galaxy install PeterMosmans.apache2
Licencja
gpl-3.0
Pobrania
280
Właściciel
Lead pentester, security consultant, trainer