ssh_server

Роль Ansible SSH-сервер

Статус сборки Лицензия Роль Ansible

Описание

:grey_exclamation: Прежде чем использовать эту роль, пожалуйста, учтите, что все мои роли Ansible полностью написаны с учетом моей ИТ-инфраструктуры. Хотя они максимально универсальны, они могут не удовлетворять ваши потребности. Рекомендую внимательно проанализировать их работу и оценить возможность безопасной установки на ваши серверы.

Эта роль позволяет настраивать SSH-сервер.

Требования

Требуется Ansible версии >= 2.4

Зависимости

Семейство ОС

Эта роль доступна для Debian и CentOS.

Возможности

На данный момент роль может:

  • установить sshd
  • настроить sshd
  • отфильтровать начальные модули, чтобы удалить слабые простые числа
  • локальные факты

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

Все переменные, которые можно переопределить, хранятся в файле defaults/main.yml, а также в таблице ниже. Чтобы увидеть значения по умолчанию, обратитесь к этому файлу.

Большинство переменных относится к параметрам конфигурации sshd. Пожалуйста, смотрите информацию на странице man.

Имя Типы/Значения Описание
ssh_server__facts Boolean Установить локальный скрипт фактов
ssh_server__moduli_minimum Integer Минимальный размер простых чисел для хранения в файле модулей
ssh_server__service_enabled Boolean Включить или отключить службу
ssh_server__protocol String См. страницу man
ssh_server__privilege_separation String См. страницу man
ssh_server__pidfile String См. страницу man
ssh_server__log_facility String См. страницу man
ssh_server__log_level String См. страницу man
ssh_server__ports Список целых чисел См. страницу man
ssh_server__listen Список ip См. страницу man
ssh_server__address_family String См. страницу man
ssh_server__use_dns Boolean См. страницу man
ssh_server__tcp_keepalive Boolean См. страницу man
ssh_server__allow_agent_forwarding Boolean См. страницу man
ssh_server__allow_tcp_forwarding Boolean См. страницу man
ssh_server__permit_open String См. страницу man
ssh_server__gateway_ports String См. страницу man
ssh_server__allow_stream_local_forwarding Boolean См. страницу man
ssh_server__permit_tunnel Boolean См. страницу man
ssh_server__compression String См. страницу man
ssh_server__ip_qos Tuple См. страницу man
ssh_server__kex_algorithms Список строк См. страницу man
ssh_server__kex_algorithms_additional Список строк См. страницу man
ssh_server__ciphers Список строк См. страницу man
ssh_server__ciphers_additional Список строк См. страницу man
ssh_server__macs Список строк См. страницу man
ssh_server__macs_additional Список строк См. страницу man
ssh_server__server_key_bits Integer См. страницу man
ssh_server__key_regeneration_interval Integer См. страницу man
ssh_server__authentication_methods String См. страницу man
ssh_server__use_pam Boolean См. страницу man
ssh_server__use_login Boolean См. страницу man
ssh_server__password_authentication Boolean См. страницу man
ssh_server__permit_empty_passwords Boolean См. страницу man
ssh_server__challenge_response_authentication Boolean См. страницу man
ssh_server__keyboard_interactive_authentication Boolean См. страницу man
ssh_server__pubkey_authentication Boolean См. страницу man
ssh_server__authorized_keys Список строк См. страницу man Файл AuthorizedKeysFile
ssh_server__authorized_keys_system Список строк Содержит путь к глобальному файлу авторизованных ключей
ssh_server__authorized_keys_user String Содержит путь к файлу авторизованных ключей для пользователя
ssh_server__authorized_keys_command String См. страницу man
ssh_server__authorized_keys_command_user Список строк См. страницу man
ssh_server__permit_blacklisted_keys См. страницу man
ssh_server__rsa_authentication Boolean См. страницу man
ssh_server__rhosts_rsa_authentication Boolean См. страницу man
ssh_server__host_based_authentication Boolean См. страница man
ssh_server__host_based_uses_name_from_packet_only Boolean См. сторона man
ssh_server__ignore_user_known_hosts Boolean См. страница man
ssh_server__ignore_rhosts Boolean См. страница man
ssh_server__kerberos_authentication Boolean См. страница man
ssh_server__kerberos_get_afs_token Boolean См. страница man
ssh_server__kerberos_or_local_passwd Boolean См. страница man
ssh_server__kerberos_ticket_cleanup Boolean См. страница man
ssh_server__kerberos_use_kuserok Boolean См. страница man
ssh_server__gssapi_authentication Boolean См. страница man
ssh_server__gssapi_key_exchange Boolean См. страница man
ssh_server__gssapi_cleanup_credentials Boolean См. страница man
ssh_server__gssapi_strict_acceptor_check Boolean См. страница man
ssh_server__gssapi_store_credentials_on_rekey Boolean См. страница man
ssh_server__gssapi_enable_k5_users Boolean См. страница man
ssh_server__deny_users Список строк См. страница man
ssh_server__allow_users Список строк См. страница man
ssh_server__deny_groups Список строк См. страница man
ssh_server__allow_groups Список строк См. страница man
ssh_server__permit_root_login String См. страница man
ssh_server__login_grace_time String См. страница man
ssh_server__max_auth_tries Integer См. страница man
ssh_server__max_sessions Integer См. страница man
ssh_server__max_startups Специфический словарь Этот словарь должен иметь ключи 'start', 'rate', 'full' (см. страницу man)
ssh_server__accept_env Список строк См. страница man
ssh_server__permit_user_environment Boolean См. страница man
ssh_server__permit_user_rc Boolean См. страница man
ssh_server__permit_tty Boolean См. страница man
ssh_server__strict_modes Boolean См. страница man
ssh_server__version_addendum String См. страница man
ssh_server__banner String См. страница man
ssh_server__debian_banner Boolean См. страница man
ssh_server__print_motd Boolean См. страница man
ssh_server__print_last_log Boolean См. страница man
ssh_server__force_command String См. страница man
ssh_server__chroot_directory String См. страница man
ssh_server__client_alive_interval Integer См. страница man
ssh_server__client_alive_count_max Integer См. страница man
ssh_server__x11_forwarding Boolean См. страница man
ssh_server__x11_display_offset Integer См. страница man
ssh_server__x11_use_localhost Boolean См. страница man
ssh_server__subsystems_global/group/host Словарь Соответствие названия подсистемы и команды подсистемы
ssh_server__match_list_global/group/host Список условий Настройка условий соответствия (см. ниже)

Условия соответствия

Вы можете настроить доступные условия соответствия, используя переменные ssh_server__match_list_global/group/host. Эти переменные принимают список словарей. Каждый словарь должен иметь следующую форму:

ssh_server__match_list_global
  - match: "условия соответствия"
    options:                                     # опции, которые применяются, если "match" совпадает
      - AllowUsers test                          # простая строковая опция
      # словарь с условиями, зависящими от версии
      # в зависимости от текущей версии sshd, условие с более высокой версией имеет преимущество и применяются его опции
      - 8.2: AuthorizedKeysCommand /bin/true     # (строковая версия)
        7.6:                                     # (списковая версия)
          - AuthenticationMethods publickey
          - AllowUsers root
    state: absent               # необязательное состояние (по умолчанию present)

Доступные условия соответствия и опции, которые вы можете применить, зависят от вашей текущей версии sshd.

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

ssh_server__match_list_global:
  - '{{ ssh_server__match_group_sftponly }}'

Факты

По умолчанию локальные факты устанавливаются и используют следующие переменные:

ansible_local.ssh_server:
  version_full: '7.9p1'
  version_major: '7'

Пример

Плейбук

Используйте это в плейбуке следующим образом:

- hosts: all
  roles:
    - turgon37.ssh_server

Инвентарь

Чтобы использовать эту роль, создайте или обновите свой плейбук согласно приведенному примеру:

ssh_server__allow_agent_forwarding: false
ssh_server__allow_tcp_forwarding: false
ssh_server__allow_stream_local_forwarding: false
ssh_server__permit_tunnel: false
ssh_server__compression: true

ssh_server__allow_groups:
  - ssh
  - ssh-admins
ssh_server__permit_root_login: false
ssh_server__max_startups:
  start: 5
  rate: 80
  full: 10

ssh_server__match_list_global:
  - match: "LocalAddress 127.0.0.1"
    options:
      - AuthenticationMethods publickey,password
    state: present

  - match: "LocalAddress 10.0.0.1 Group ssh-admins"
    options:
    - AuthenticationMethods publickey password gssapi-with-mic

  - match: "LocalAddress 10.0.0.1 User root"
    options:
      - DenyUsers
      - AllowUsers root
      - DenyGroups
      - AllowGroups root
      - 7.0: 'PermitRootLogin prohibit-password'
        4.9: 'PermitRootLogin without-password'
      - AuthenticationMethods publickey
      - AuthorizedKeysFile /root/.ssh/authorized_keys
      - AuthorizedKeysCommand /bin/true

ssh_client__known_hosts_additionals:
  - '[gitlab]:7999 ssh-rsa XXXXX'

Пример конфигурации FreeIPA

ssh_server__authorized_keys: '/dev/null'
ssh_server__authorized_keys_lookup: true
ssh_server__authorized_keys_lookup_command: /usr/bin/sss_ssh_authorizedkeys
ssh_server__pubkey_authentication: true
ssh_server__gssapi_authentication: true
О проекте

This role configure SSH server

Установить
ansible-galaxy install Turgon37/ansible-ssh-server
Лицензия
mit
Загрузки
1313
Владелец
Ingénieur, Informaticien, curieux de nouvelles technologies. Passionné par le libre et l'esprit de communauté