PeterMosmans.apache2

Ansible Rolle: Apache2

Build-Status für diese Rolle: Build Status

Diese Rolle installiert und konfiguriert den Apache 2 Webserver auf Debian- und Ubuntu-Servern. Der Hauptfokus liegt auf der Absicherung einer Standard-Apache-Installation. Sie ändert die Standardkonfiguration von Apache und schaltet bestimmte Module ein oder aus. Außerdem kann sie eine Anzahl von Webseitenkonfigurationsdateien, SSL-Zertifikaten und den entsprechenden privaten Schlüsseln bereitstellen.

Durch das Setzen der apache2_php-Option auf true wird auch PHP installiert und konfiguriert.

Beachte, dass PHP nicht entfernt oder deaktiviert wird, wenn die apache2_php-Option auf false gesetzt wird. Dies kann beispielsweise durch das Hinzufügen des PHP-Moduls zur Liste apache2_modules_disabled erfolgen.

Anforderungen

Die Installation von ufw (der unkomplizierte Firewall, ein Frontend für iptables).

Rollenvariablen

Verfügbare Variablen sind unten aufgelistet, zusammen mit Standardwerten.

apache2_default: Wenn true, wird die Standardseite nicht deaktiviert, und /var/www/html wird nicht entfernt. Wenn nicht angegeben oder false, wird die Standardseite deaktiviert und /var/www/html entfernt.

apache2_default: false

Standardmäßig ist der Wert nicht angegeben.

apache2_modules_disabled: Eine Liste von Apache-Modulen, die standardmäßig deaktiviert werden. Die Standardwerte finden sich in defaults/main.yml.

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

apache2_modules_enabled: Eine Liste von Apache-Modulen, die standardmäßig aktiviert werden. Die Standardwerte finden sich in defaults/main.yml.

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

apache2_php: Wenn true, wird auch PHP installiert, einschließlich des Apache PHP-Moduls.

apache2_php: false

apache2_php_version: Die PHP-Version. Der Standardwert ist in defaults/main.yml zu finden.

apache2_php_version: 7.0

Wenn PHP installiert wird, wird php.ini nach /etc/php/[apache2_php_version]/apache2/php.ini bereitgestellt. Dies ist eine Vorlage, die viele anpassbare Vorlagenvariablen verwendet. Die Standardwerte sind in defaults/main.yml zu finden.

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: Eine Liste, auf denen Apache lauschen wird. Wenn diese Variable nicht definiert ist, werden die Ports 80 (und 443) verwendet. Beispiel:

apache2_ports:
  - 80
  - 8000

apache2_security_conf: Eine Liste von security.conf-Einstellungen, die standardmäßig angewendet werden. Die Standardwerte sind in defaults/main.yml zu finden.

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: Eine optionale Liste mit Apache-Konfigurationsdateien. Der src verweist auf die Jinja2-Datei, der dest wird die resultierende Webseitenkonfigurationsdatei sein. Beispiel:

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

Standardmäßig ist die Liste leer.

ssl_certificates: Eine optionale Liste, die den Ort (src) und den Namen (name) der x.509 SSL-Zertifikate enthält. Beachte, dass der Ort relativ zum Apache2 role/files Unterordner ist. Wenn du beispielsweise ein Zertifikat aus einem sicheren Speicherort einfügen möchtest, solltest du Folgendes verwenden:

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

Standardmäßig ist die Liste leer.

ssl_keys: Eine optionale Liste, die den Ort (src) und den Namen (name) der privaten Schlüssel enthält. Beachte, dass der Ort relativ zum Apache2 role/files Unterordner ist. Wenn du beispielsweise einen Schlüssel aus einem sicheren Speicherort einfügen möchtest, solltest du Folgendes verwenden:

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

Standardmäßig ist die Liste leer.

www_folder: Der Standardordner, unter dem die Webverzeichnisse gespeichert werden.

www_folder: /var/www

Bitte beachte, dass diese Rolle keine Apache-Konfigurationen templated - sie kopiert Konfigurationsdateien. Sie templated jedoch PHP.

Abhängigkeiten

Keine.

Beispiel-Playbook

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

Dieses Beispiel installiert und sichert Apache.

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

Dieses Beispiel installiert und sichert Apache, installiert und sichert PHP, stellt die Datei mywebsite.conf aus dem Ordner roles/apache2/files bereit und aktiviert die Webseite. Die Standardwebseite wird deaktiviert und /var/www/html entfernt.

Lizenz

GPLv3

Autoreninformationen

Erstellt von Peter Mosmans.

Über das Projekt

Installs and hardens Apache2 (and PHP5).

Installieren
ansible-galaxy install PeterMosmans.apache2
GitHub Repository
Lizenz
gpl-3.0
Downloads
280
Besitzer
Lead pentester, security consultant, trainer