apache2

Ansible Роль: Apache2

Статус сборки для этой роли: Статус сборки

Эта роль устанавливает и настраивает веб-сервер Apache 2 на серверах Debian и Ubuntu. Основное внимание уделяется усилению безопасности стандартной установки Apache. Она изменяет стандартную конфигурацию Apache, а также отключает и включает определенные модули. Более того, она может развернуть (несколько) файлов конфигурации сайтов, SSL-сертификатов и соответствующих закрытых ключей.

Установив флаг apache2_php в значение true, будет установлен и настроен PHP.

Обратите внимание, что PHP не будет удален или отключен, если установить флаг apache2_php в false. Это можно сделать, например, добавив модуль 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 также будет установлен, включая модуль PHP для Apache.

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: Необязательный список, содержащий местоположение (src) и имя (name) ssl-сертификатов x.509. Обратите внимание, что местоположение относительно подкаталога 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.

Зависимости

Нет.

Пример Playbook

- 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, развернет файл mywebsite.conf из папки roles/apache2/files и включит сайт. Стандартный сайт будет отключен, и /var/www/html будет удален.

Лицензия

GPLv3

Авторская информация

Создано Петром Мосмансом.

О проекте

Installs and hardens Apache2 (and PHP5).

Установить
ansible-galaxy install PeterMosmans/ansible-role-apache2
Лицензия
gpl-3.0
Загрузки
249
Владелец
Lead pentester, security consultant, trainer