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