sshd
Ansible Роль: sshd
Описание
Эта роль предоставляет безопасные конфигурации для ssh-клиента и ssh-сервера. Она предназначена для соответствия DevSec SSH Baseline.
Роль является форком arillso.sshd.
Установка
ansible-galaxy collection install community.crypto
ansible-galaxy install skriptfabrik.sshd
Требования
Нет
Переменные роли
ssh_ipv6_enable
true, если нужен IPv6
ssh_ipv6_enable: '{{ network_ipv6_enable | default(false) }}' # sshd + ssh
ssh_server_enabled
true, если sshd должен быть запущен и включен
ssh_server_enabled: true # sshd
ssh_use_dns
true, если необходима разрешение DNS, по умолчанию false с 6.8, см. http://www.openssh.com/txt/release-6.8
ssh_use_dns: false # sshd
ssh_compression
true или значение, если нужна сжатие
ssh_compression: false # sshd
ssh_hardening
Для каких компонентов (клиент и сервер) генерировать конфигурацию. Может быть полезно при работе с клиентом без SSH-сервера.
ssh_client_hardening: true # ssh
ssh_server_hardening: true # sshd
ssh_client_password_login
Если true, разрешен вход по паролю
ssh_client_password_login: false # ssh
ssh_server_password_login: false # sshd
ssh_server_ports
Порты, на которых ssh-сервер должен слушать
ssh_server_ports: ['22'] # sshd
ssh_client_port
Порт, к которому должен подключаться ssh-клиент
ssh_client_port: '22' # ssh
ssh_listen_to
Один или несколько IP-адресов, на которых ssh-сервер должен слушать. По умолчанию пусто, но должно быть настроено по соображениям безопасности!
ssh_listen_to: ['0.0.0.0'] # sshd
ssh_host_key_files
Файлы ключей хоста, которые необходимо искать при запуске sshd.
ssh_host_key_files: [] # sshd
# - path: "{{ sshd_config_path }}/ssh_host_rsa_key"
# private_key: |
# xxxxxxxxxxxxx
# xxxxxxxxxxxxx
# xxxxxxxxxxxxx
# public_key: |
# xxxxxxxxxxxxx
# xxxxxxxxxxxxx
# xxxxxxxxxxxxx
# size: 8192
# type: rsa
ssh_force_create_host_key_files
Принудительное создание файлов ключей хоста.
ssh_force_create_host_key_files: false # sshd
ssh_max_auth_retries
Указывает максимальное количество попыток аутентификации, разрешенных за одно соединение. Когда количество неудач достигает половины этого значения, дополнительные неудачи регистрируются.
ssh_max_auth_retries: 2
ssh_client_alive_interval
ssh_client_alive_interval: 300 # sshd
ssh_client_alive_count
ssh_client_alive_count: 3 # sshd
ssh_permit_tunnel
Разрешить SSH-туннели
ssh_permit_tunnel: false
ssh_remote_hosts
Хосты с пользовательскими параметрами. # ssh
ssh_remote_hosts: []
# Пример
ssh_remote_hosts:
- names: ['example.com', 'example2.com']
options: ['Port 2222', 'ForwardAgent yes']
- names: ['example3.com']
options: ['StrictHostKeyChecking no']
ssh_allow_root_with_key
Установите это значение на "без пароля" или "да", чтобы разрешить root-вход.
ssh_allow_root_with_key: 'no' # sshd
ssh_allow_tcp_forwarding
false, чтобы отключить TCP-прокси. Установите true, чтобы разрешить TCP-прокси.
ssh_allow_tcp_forwarding: false # sshd
ssh_gateway_ports
false, чтобы отключить привязку перенаправленных портов к адресам, отличным от loopback. Установите true, чтобы принудительно привязать к универсальному адресу.
Установите 'clientspecified', чтобы разрешить клиенту указать, к какому адресу привязываться.
ssh_gateway_ports: false # sshd
ssh_allow_agent_forwarding
false, чтобы отключить пересылку агента. Установите true, чтобы разрешить пересылку агента.
ssh_allow_agent_forwarding: false # sshd
ssh_pam_support
true, если SSH поддерживает PAM
ssh_pam_support: true
ssh_use_pam
false, чтобы отключить аутентификацию pam.
ssh_use_pam: false # sshd
ssh_google_auth
false, чтобы отключить аутентификацию google 2fa.
ssh_google_auth: false # sshd
ssh_pam_device
false, чтобы отключить ввод устройства pam 2FA.
ssh_pam_device: false # sshd
ssh_gssapi_support
true, если SSH поддерживает GSSAPI.
ssh_gssapi_support: false
ssh_kerberos_support
true, если SSH поддерживает Kerberos.
ssh_kerberos_support: true
ssh_deny_users
если указано, вход запрещен для имен пользователей, которые соответствуют одному из шаблонов.
ssh_deny_users: '' # sshd
ssh_allow_users
если указано, вход разрешен только для имен пользователей, которые соответствуют одному из шаблонов.
ssh_allow_users: '' # sshd
ssh_deny_groups
если указано, вход запрещен для пользователей, чья основная группа или список дополнительных групп соответствуют одному из шаблонов.
ssh_deny_groups: '' # sshd
ssh_allow_groups
если указано, вход разрешен только для пользователей, чья основная группа или список дополнительных групп соответствует одному из шаблонов.
ssh_allow_groups: '' # sshd
ssh_authorized_keys_file
изменить файл по умолчанию, который содержит открытые ключи, которые можно использовать для аутентификации пользователя.
ssh_authorized_keys_file: '' # sshd
ssh_trusted_user_ca_keys_file
указывает файл, содержащий открытые ключи доверенных удостоверяющих центров, используемых для подписи пользовательских сертификатов.
ssh_trusted_user_ca_keys_file: '' # sshd
ssh_trusted_user_ca_keys
установить открытые ключи доверенных удостоверяющих центров, используемые для подписи пользовательских сертификатов.
ssh_trusted_user_ca_keys: [] # sshd
Пример
ssh_trusted_user_ca_keys:
- 'ssh-rsa ... comment1'
- 'ssh-rsa ... comment2'
ssh_authorized_principals_file
указывает файл, содержащий разрешенные принципы. Используется только если установлен ssh_trusted_user_ca_keys_file.
ssh_authorized_principals_file: '' # sshd
Пример
ssh_authorized_principals_file: '/etc/ssh/auth_principals/%u'
%h заменяется на домашний каталог пользователя, который проходит аутентификацию, а %u заменяется на имя пользователя этого пользователя. После расширения путь принимается как абсолютный путь или путь, относительный к домашнему каталогу пользователя.
ssh_authorized_principals
список хэш-структур, содержащих пути к файлам и авторизованные принципы. Используется только если установлен ssh_authorized_principals_file.
ssh_authorized_principals: [] # sshd
Пример
ssh_authorized_principals:
- {
path: '/etc/ssh/auth_principals/root',
principals: ['root'],
owner: '{{ ssh_owner }}',
group: '{{ ssh_group }}',
directoryowner: '{{ ssh_owner }}',
directorygroup: '{{ ssh_group}}',
}
- {
path: '/etc/ssh/auth_principals/myuser',
principals: ['masteradmin', 'webserver'],
}
ssh_print_motd
false, чтобы отключить вывод MOTD
ssh_print_motd: false # sshd
ssh_print_last_log
false, чтобы отключить отображение информации о последнем входе
ssh_print_last_log: false # sshd
ssh_banner
false, чтобы отключить показ /etc/ssh/banner.txt перед разрешением аутентификации
ssh_banner: false # sshd
ssh_print_debian_banner
false, чтобы отключить утечку версии дистрибутива во время начального рукопожатия протокола
ssh_print_debian_banner: false # sshd (только для Debian)
ssh_sftp_enabled
true для включения конфигурации sftp
ssh_sftp_enabled: '{{ sftp_enabled | default(false) }}'
ssh_sftp_chroot
false для отключения sftp chroot
ssh_sftp_chroot: '{{ sftp_chroot | default(true) }}'
ssh_sftp_chroot_dir
изменить расположение по умолчанию для sftp chroot
ssh_sftp_chroot_dir: "{{ sftp_chroot_dir | default('/home/%u') }}"
Если true, вход по паролю для SFTP разрешен
ssh_server_sftp_password_login: false
ssh_server_sftp_password_login: true
ssh_client_roaming
включить экспериментальную поддержку клиента roaming
ssh_client_roaming: false
ssh_server_match_user
список хэшей (содержащих пользователя и правила) для генерации блоков Match User.
ssh_server_match_user: false # sshd
ssh_server_match_group
список хэшей (содержащих группу и правила) для генерации блоков Match Group.
ssh_server_match_group: false # sshd
ssh_server_match_address
список хэшей (содержащих адреса/подсети и правила) для генерации блоков Match Address.
ssh_server_match_address: false # sshd
ssh_server_permit_environment_vars
ssh_server_permit_environment_vars: false
ssh_max_startups
максимальное количество одновременных неавторизованных подключений к SSH-демону
ssh_max_startups: '10:30:100' # sshd
ssh_ps53
ssh_ps53: 'yes'
ssh_ps59
ssh_ps59: 'sandbox'
ssh_macs
ssh_macs: []
ssh_ciphers
ssh_ciphers: []
ssh_kex
ssh_kex: []
ssh_macs_53_default
ssh_macs_53_default:
- hmac-ripemd160
- hmac-sha1
ssh_macs_59_default
ssh_macs_59_default:
- hmac-sha2-512
- hmac-sha2-256
- hmac-ripemd160
ssh_macs_66_default
ssh_macs_66_default:
- [email protected]
- [email protected]
- [email protected]
- hmac-sha2-512
- hmac-sha2-256
ssh_macs_76_default
ssh_macs_76_default:
- [email protected]
- [email protected]
- [email protected]
- hmac-sha2-512
- hmac-sha2-256
ssh_ciphers_53_default
ssh_ciphers_53_default:
- aes256-ctr
- aes192-ctr
- aes128-ctr
ssh_ciphers_66_default
ssh_ciphers_66_default:
- [email protected]
- [email protected]
- [email protected]
- aes256-ctr
- aes192-ctr
- aes128-ctr
ssh_kex_59_default
ssh_kex_59_default:
- diffie-hellman-group-exchange-sha256
ssh_kex_66_default
ssh_kex_66_default:
- [email protected]
- diffie-hellman-group-exchange-sha256
ssh_custom_selinux_dir
каталог, где хранится политика ssh_password
ssh_custom_selinux_dir: '/etc/selinux/local-policies'
sshd_moduli_file: '/etc/ssh/moduli'
sshd_moduli_minimum: 2048
ssh_challengeresponseauthentication
отключить ChallengeResponseAuthentication
ssh_challengeresponseauthentication: false
ssh_server_revoked_keys
список открытых ключей, которые никогда не принимаются сервером ssh.
ssh_server_revoked_keys: []
ssh_hardening_enabled
Установите значение false, чтобы сделать роль бессмысленной. Полезно при использовании механизма зависимости роли Ansible.
ssh_hardening_enabled: true
ssh_custom_options
Пользовательские параметры для файла конфигурации SSH-клиента
ssh_custom_options: []
sshd_custom_options
Пользовательские параметры для файла конфигурации SSH-демона
sshd_custom_options: []
Зависимости
Нет
Пример плейбука
- hosts: all
roles:
- skriptfabrik.sshd
Автор
Лицензия
Этот проект лицензирован под MIT License.
Авторские права
(c) 2022, skriptfabrik GmbH
This role provides secure ssh-client and ssh-server configurations. It is intended to be compliant with the DevSec SSH Baseline.
ansible-galaxy install skriptfabrik/ansible-role-sshd