PeterMosmans.apache2

Ansible 角色:Apache2

此角色的构建状态:构建状态

该角色在 Debian 和 Ubuntu 服务器上安装和配置 Apache 2 网页服务器。主要目的是 加强默认的 Apache 安装。它会修改默认的 Apache 配置,并禁用和启用特定模块。此外,它还可以部署网站配置文件、SSL 证书及相应的私钥。

通过将 apache2_php 标志设置为 true,可以安装和配置 PHP。

请注意,将 apache2_php 标志设置为 false 并不会删除或禁用 PHP。可以通过将 PHP 模块添加到 apache2_modules_disabled 列表中来完成此操作。

要求

安装 ufw(简单防火墙,iptables 的前端)。

角色变量

可用的变量如下,带有默认值。

apache2_default:当为 true 时,默认站点将 不会 被禁用,并且 /var/www/html 不会 被删除。如果未指定或为 false,则默认站点将被禁用,并且 /var/www/html 将被删除。

apache2_default: false

默认情况下,此值未指定。

apache2_modules_disabled:一个包含将默认禁用的 Apache 模块的列表。默认值可以在 defaults/main.yml 中找到。

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

apache2_modules_enabled:一个包含将默认启用的 Apache 模块的列表。默认值可以在 defaults/main.yml 中找到。

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

apache2_php:当为 true 时,还会安装 PHP,包括 Apache 的 PHP 模块。

apache2_php: false

apache2_php_version:PHP 版本。默认值可以在 defaults/main.yml 中找到。

apache2_php_version: 7.0

如果安装 PHP,将会将 php.ini 部署到 /etc/php/[apache2_php_version]/apache2/php.ini。这是一个使用大量可自定义模板变量的模板。默认值可以在 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:Apache 将监听的端口列表。如果未定义此变量,将使用 80 端口(和 443 端口)。示例:

apache2_ports:
  - 80
  - 8000

apache2_security_conf:将默认应用的 security.conf 设置列表。默认值可以在 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:一个可选的 Apache 配置文件列表。src 指向 Jinja2 文件,dest 将是生成的网页配置文件。示例:

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

默认情况下,此列表为空。

ssl_certificates:一个可选列表,包含 x.509 SSL 证书的位置(src)和名称(name)。请注意,位置是相对于 apache2 role/files 子文件夹的。例如,如果要包含来自安全存储路径的证书,请使用以下:

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

默认情况下,此列表为空。

ssl_keys:一个可选列表,包含私钥的位置(src)和名称(name)。请注意,位置是相对于 apache2 role/files 子文件夹的。例如,如果要包含来自安全存储路径的密钥,请使用以下:

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

默认情况下,此列表为空。

www_folder:默认根目录,用于存储网站目录。

www_folder: /var/www

请注意,此角色不模板化 Apache 配置,它复制配置文件。但它确实模板化 PHP。

依赖关系

无。

示例剧本

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

该示例将安装并加强 Apache。

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

该示例将安装和加强 Apache,安装和加强 PHP,从文件夹 roles/apache2/files 部署文件 mywebsite.conf 并启用该网站。默认网站将被禁用,并且 /var/www/html 将被删除。

许可证

GPLv3

作者信息

创建者:彼得·莫斯曼。

关于项目

Installs and hardens Apache2 (and PHP5).

安装
ansible-galaxy install PeterMosmans.apache2
许可证
gpl-3.0
下载
280
拥有者
Lead pentester, security consultant, trainer