PeterMosmans.apache2

Rol de Ansible: Apache2

Estado de construcción para este rol: Estado de Construcción

Este rol instala y configura el servidor web Apache 2 en servidores Debian y Ubuntu. El enfoque principal está en endurecer una instalación predeterminada de Apache. Modifica la configuración predeterminada de Apache, así como habilita y deshabilita módulos específicos. Además, puede desplegar archivos de configuración de sitios web, certificados SSL y claves privadas correspondientes.

Al establecer el flag apache2_php en verdadero, PHP también será instalado y configurado.

Ten en cuenta que PHP no será eliminado ni deshabilitado al poner el flag apache2_php en falso. Esto se puede hacer, por ejemplo, agregando el módulo php a la lista de apache2_modules_disabled.

Requisitos

La instalación de ufw (el firewall sencillo, un frontend para iptables).

Variables del Rol

Las variables disponibles se enumeran a continuación, junto con los valores predeterminados.

apache2_default: Cuando es verdadero, el sitio predeterminado no será deshabilitado y /var/www/html no será eliminado. Si no se especifica o es falso, el sitio predeterminado será deshabilitado y se eliminará /var/www/html.

apache2_default: false

Por defecto, el valor no se especifica.

apache2_modules_disabled: Una lista de módulos de Apache que se deshabilitarán por defecto. Los valores predeterminados se pueden encontrar en defaults/main.yml.

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

apache2_modules_enabled: Una lista de módulos de Apache que se habilitarán por defecto. Los valores predeterminados se pueden encontrar en defaults/main.yml.

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

apache2_php: Cuando es verdadero, PHP también será instalado, incluyendo el módulo PHP de Apache.

apache2_php: false

apache2_php_version: La versión de PHP. El valor predeterminado se puede encontrar en defaults/main.yml.

apache2_php_version: 7.0

Si PHP va a ser instalado, php.ini se desplegará en /etc/php/[apache2_php_version]/apache2/php.ini. Este es un template que utiliza muchas variables personalizables. Los valores predeterminados se pueden encontrar en 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_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: Una lista de puertos en los que Apache escuchará. Si esta variable no está definida, se usarán los puertos 80 (y 443). Ejemplo:

apache2_ports:
  - 80
  - 8000

apache2_security_conf: Una lista de configuraciones de security.conf que se aplicarán por defecto. Los valores predeterminados se pueden encontrar en 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: Una lista opcional con archivos de configuración de Apache. src apunta al archivo Jinja2, y dest será el archivo de configuración del sitio resultante. Ejemplo:

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

Por defecto, la lista está vacía.

ssl_certificates: Una lista opcional que contiene la ubicación (src) y el nombre (name) de certificados SSL x.509. Ten en cuenta que la ubicación es relativa desde la subcarpeta role/files de apache2. Por ejemplo, si deseas incluir un certificado desde un camino de almacenamiento seguro, deberías usar lo siguiente:

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

Por defecto, la lista está vacía.

ssl_keys: Una lista opcional que contiene la ubicación (src) y el nombre (name) de claves privadas. Ten en cuenta que la ubicación es relativa desde la subcarpeta role/files de apache2. Por ejemplo, si deseas incluir una clave desde un camino de almacenamiento seguro, deberías usar lo siguiente:

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

Por defecto, la lista está vacía.

www_folder: La raíz predeterminada bajo la cual se almacenan los directorios de sitios web.

www_folder: /var/www

Ten en cuenta que este rol no templatea las configuraciones de Apache - copia archivos de configuración. Sin embargo, sí templatea PHP.

Dependencias

Ninguna.

Ejemplo de Playbook

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

Este ejemplo instalará y endurecerá Apache.

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

Este ejemplo instalará y endurecerá Apache, instalará y endurecerá PHP, desplegará el archivo mywebsite.conf desde la carpeta roles/apache2/files y habilitará el sitio web. El sitio web predeterminado será deshabilitado y /var/www/html será eliminado.

Licencia

GPLv3

Información del Autor

Creado por Peter Mosmans.

Acerca del proyecto

Installs and hardens Apache2 (and PHP5).

Instalar
ansible-galaxy install PeterMosmans.apache2
Licencia
gpl-3.0
Descargas
280
Propietario
Lead pentester, security consultant, trainer