security

Ansible Роль: Безопасность (Основы)

Прежде всего, главное, ГЛАВНОЕ замечание: безопасность ваших серверов — это ВАША ответственность. Если вы думаете, что просто добавление этой роли и настройка фаервола делают сервер безопасным, то вы ошибаетесь. Узнайте больше о безопасности Linux, сетевой безопасности и безопасности приложений, и знайте, что независимо от того, сколько вы знаете, вы всегда можете сделать каждую часть своей системы более безопасной.

Тем не менее, эта роль выполняет некоторые основные настройки безопасности на системах Linux на основе RedHat и Debian. Она пытается:

  • Установить программное обеспечение для мониторинга нежелательного доступа по SSH (fail2ban)
  • Настроить SSH для большей безопасности (отключение входа под root, требование аутентификации по ключам и возможность настроить нестандартный порт SSH)
  • Настроить автоматические обновления (если это предусмотрено)

Есть еще несколько вещей, которые вы можете или не можете захотеть сделать (которые не включены в эту роль), чтобы убедиться, что ваши серверы более безопасны, такие как:

  • Использовать logwatch или централизованный сервер для анализа и мониторинга лог-файлов
  • Надежно настраивать учетные записи пользователей и SSH-ключи (данная роль предполагает, что вы не используете аутентификацию по паролю или не входите как root)
  • Иметь хорошо настроенный фаервол (посмотрите роль geerlingguy.firewall на Ansible Galaxy для гибкого примера)

Снова: безопасность ваших серверов — это ваша ответственность.

Требования

По очевидным причинам, sudo должен быть установлен, если вы хотите управлять файлом sudoers с помощью этой роли.

На системах RedHat/CentOS убедитесь, что у вас установлен репозиторий EPEL (вы можете включить роль geerlingguy.repo-epel, чтобы установить его).

Специальные требования для систем Debian/Ubuntu отсутствуют.

Переменные роли

Доступные переменные перечислены ниже, вместе с значениями по умолчанию (см. defaults/main.yml):

security_ssh_port: 22

Порт, через который вы хотите, чтобы SSH был доступен. По умолчанию используется порт 22, но если вы работаете на сервере в открытом интернете и у вас нет фаервола, блокирующего доступ к порту 22, вы быстро обнаружите, что тысячи попыток входа в день — это не редкость. Вы можете изменить порт на нестандартный (например, 2849), если хотите избежать этих тысяч автоматических попыток взлома.

security_ssh_password_authentication: "no"
security_ssh_permit_root_login: "no"
security_ssh_usedns: "no"
security_ssh_permit_empty_password: "no"
security_ssh_challenge_response_auth: "no"
security_ssh_gss_api_authentication: "no"
security_ssh_x11_forwarding: "no"

Настройки безопасности для аутентификации SSH. Лучше оставить эти значения на "no", но иногда (особенно во время первоначальной настройки сервера или если у вас нет аутентификации по ключам) одно или все из них можно безопасно установить на 'yes'. ПРИМЕЧАНИЕ: Очень важно заключать значения 'yes' или 'no' в кавычки. Неправильное указание может заблокировать вас на сервере.

security_ssh_allowed_users: []
# - alice
# - bob
# - charlie

Список пользователей, которым разрешено подключаться к хосту по SSH. Если в списке не определен ни один пользователь, задача будет пропущена.

security_ssh_allowed_groups: []
# - admins
# - devs

Список групп, которым разрешено подключаться к хосту по SSH. Если в списке не определена ни одна группа, задача будет пропущена.

security_sshd_state: started

Состояние демона SSH. Обычно это значение должно оставаться started.

security_ssh_restart_handler_state: restarted

Состояние обработчика перезапустите ssh. Обычно это значение должно оставаться restarted.

security_sudoers_passwordless: []
security_sudoers_passworded: []

Список пользователей, которые должны быть добавлены в файл sudoers, чтобы они могли выполнять любые команды от имени root (через sudo) либо без пароля, либо требуя пароль для каждой команды соответственно.

security_autoupdate_enabled: true

Необходимо установить/включить yum-cron (для систем на основе RedHat) или unattended-upgrades (для систем на основе Debian). Перезагрузки системы не будут происходить автоматически в любом случае, и автоматические обновления не являются оправданием для небрежного управления патчами и пакетами, но автоматические обновления могут быть полезным дополнением к другим мерам безопасности.

security_autoupdate_blacklist: []

(Только для Debian/Ubuntu) Список пакетов, которые не должны обновляться автоматически.

security_autoupdate_additional_origins: []
# - "${distro_id}ESM:${distro_codename}-infra-security"
# - "Docker:${distro_codename}"

(Только для Debian/Ubuntu) Список источников для референции.

security_autoupdate_reboot: false

(Только для Debian/Ubuntu) Необходимо ли перезагружать систему при необходимости во время автоматических обновлений.

security_autoupdate_reboot_time: "03:00"

(Только для Debian/Ubuntu) Время для перезагрузки, если это необходимо, если security_autoupdate_reboot установлено в true. В формате 24-часового "чч:мм".

security_autoupdate_mail_to: ""
security_autoupdate_mail_on_error: true

(Только для Debian/Ubuntu) Если security_autoupdate_mail_to установлено на непустое значение, автоматические обновления отправят электронное письмо на этот адрес при возникновении ошибки. Вы можете установить это на полный адрес электронной почты: [email protected] или на что-то вроде root, что будет использовать /etc/aliases для перенаправления сообщения. Если вы установите security_autoupdate_mail_on_error в false, вы получите электронное письмо после каждой установки пакета.

security_fail2ban_enabled: true

Следует ли устанавливать/включать fail2ban. Возможно, вы не захотите использовать fail2ban, если у вас уже есть другая служба для обнаружения входа и вторжений (например, ConfigServer).

security_fail2ban_custom_configuration_template: "jail.local.j2"

Имя шаблонного файла, используемого для генерации конфигурации fail2ban.

Зависимости

Отсутствуют.

Пример плэйбука

- hosts: servers
  vars_files:
    - vars/main.yml
  roles:
    - geerlingguy.security

В vars/main.yml:

security_sudoers_passworded:
  - johndoe
  - deployacct

Лицензия

MIT (Expat) / BSD

Информация об авторе

Эта роль была создана в 2014 году Джеффом Гирлингом, автором Ansible for DevOps.

О проекте

Security software installation and configuration.

Установить
ansible-galaxy install geerlingguy/ansible-role-security
Лицензия
mit
Загрузки
1281649
Владелец
Father, author, developer, maker. Sometimes called "an inflammatory enigma". #stl #drupal #ansible #k8s #raspberrypi #crohns