rwreceiver

rwreceiver

Роль для настройки и управления службой rwreceiver. rwreceiver - это демон, который принимает файлы, переданные с одного или нескольких процессов rwsender. Полученные файлы хранятся в директории назначения. Дополнительную информацию смотрите в документации по rwreceiver.

Требования

Если используется TLS для соединений, необходимо сгенерировать и загрузить соответствующие сертификаты как для отправителя, так и для приемника.

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

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

silk_packing_tools_loc: "/usr/local/sbin"

Папка с инструментами упаковки silk.

silk_tls_support: False

Использовать ли TLS для соединений.

rwreceiver_myname: "rwreceiver"

Имя процесса rwreceiver. Можно запускать несколько копий rwreceiver на одном сервере под разными именами.

rwreceiver_conf_template: "rwreceiver.conf.j2"
rwreceiver_conf_file_loc: "/usr/local/etc"
rwreceiver_conf_file_path: "{{ rwreceiver_conf_file_loc }}/{{ rwreceiver_myname }}.conf"
rwreceiver_init_template: "rwreceiver.j2"
rwreceiver_init_file_path: "/etc/init.d/{{ rwreceiver_myname }}" 

Шаблоны источников и их назначения.

Переменная Описание
rwreceiver_statedirectory: "/usr/local/var/lib/rwreceiver" Директория, в которой rwreceiver хранит своё состояние
rwreceiver_create_directories: "no" Если установлено в "yes", определённые директории будут созданы автоматически, если они ещё не существуют
rwreceiver_bin_dir: "{{ silk_packing_tools_loc }}" Полный путь к директории, содержащей программу "rwreceiver"
rwreceiver_destination_dir: "{{ rwreceiver_statedirectory }}/destination" Полный путь к директории, в которую будут помещены полученные файлы
rwreceiver_mode: "client" Режим, в котором будет работать приемник. Допустимые значения: "server" и "client".
rwreceiver_id: "receiver-1" Имя этого экземпляра приемника
rwreceiver_port: "" Порт или пара HOST:PORT, на которой сервер слушает входящие соединения. Это необходимо только в режиме сервера. Если HOST не указан, сервер слушает на любом адресе. HOST может быть именем или IP-адресом. Если HOST является адресом IPv6, заключите его в квадратные скобки и заключите всё значение в одиночные кавычки, чтобы предотвратить интерпретацию оболочкой.
rwreceiver_post_command: "" Команда для выполнения с каждым файлом после его получения. В команде "%s" будет заменен полным путем к полученному файлу, а "%I" - идентификатором rwsender, который отправил файл. Например: POST_COMMAND='echo received file %s from rwsender %I'
rwreceiver_freespace_min: "0" Количество пространства (в байтах), которое rwreceiver попытается оставить свободным в файловой системе, содержащей $DESTINATION_DIR. Эта переменная может быть задана как обычное целое число или как вещественное число с суффиксом K, M, G или T.
rwreceiver_space_max_percent: "100" Максимальный процент используемого пространства файловой системы, содержащей $DESTINATION_DIR, который rwreceiver будет готов использовать.
rwreceiver_sender_servers: "" Если приемник работает в режиме клиента, то необходимо указать SENDER_SERVERS. Строки должны иметь следующий формат: <identifier> <host>:<port>. Эти переменные являются многострочными значениями, где каждая строка имеет значение для одного rwsender.
rwreceiver_sender_clients: "" Если приемник работает в серверном режиме, то необходимо указать SENDER_CLIENTS. Строки должны иметь следующий формат: <identifier>. Эти переменные являются многострочными значениями, где каждая строка имеет значение для одного rwsender.
rwreceiver_duplicate_dirs: "" Приемник может копировать входящие файлы в несколько целевых директорий. Обратите внимание, что если копирование в одну из следующих директорий завершается ошибкой, регистрируется ошибка, но файл считается успешно переданным. Эта переменная содержит многострочное значение, где каждая строка перечисляет дублирующую целевую директорию. Формат строки: <duplicate-dir>. Каждая строка должна быть полным путем к директории.
rwreceiver_duplicate_copies: "link" При копировании файлов в дублирующую целевую директорию по умолчанию rwreceiver создает файлы как жесткие ссылки (если это возможно) друг на друга и на файлы в целевой директории. Однако, если какой-либо процесс изменит одну из копий на месте, это повлияет на все файлы. Чтобы заставить rwreceiver создать полную копию, измените DUPLICATE_COPIES с "link" на "copy".
rwreceiver_log_type: "syslog" Тип используемого ведения журнала. Допустимые значения: "legacy" и "syslog".
rwreceiver_log_level: "info" Наименьший уровень ведения журнала, который необходимо фактически записывать. Допустимые значения: emerg, alert, crit, err, warning, notice, info, debug
rwreceiver_log_dir: "{{ rwreceiver_statedirectory }}/log" Полный путь к директории, в которую будут записываться файлы журналов, когда LOG_TYPE установлен в "legacy".
rwreceiver_pid_dir: "{{ rwreceiver_log_dir }}" Полный путь к директории, в которую будет записан PID файл
rwreceiver_user: "root" Пользователь, от имени которого работает эта программа; права root требуются только в том случае, если rwreceiver слушает на привилегированном порту.
rwreceiver_extra_options: "" Дополнительные параметры для передачи rwreceiver

При использовании дополнительной поддержки GnuTLS, установив silk_tls_support: True, необходимо указать полный путь к CA файлу (TLS_CA), а также ИЛИ полный путь к файлу PKCS#12, специфичному для программы (TLS_PKCS12) ИЛИ полные пути к сертификату (TLS_CERT) и ключевым файлам (TLS_KEY), специфичным для программы. Если файл PKCS#12 защищен паролем, необходимо заранее установить переменную окружения RWRECEIVER_TLS_PASSWORD на пароль перед запуском rwreceiver. Если RWRECEIVER_TLS_PASSWORD не установлена, она рассматривается как пустой пароль; установите её в пустую строку для разрешения пустого пароля.

Переменная TLS Описание
rwreceiver_tls_ca: "" Полный путь к файлу корневого CA, закодированному в PEM
rwreceiver_tls_pkcs: "" Полный путь к файлу PKCS#12, специфичному для программы, закодированному в DER
rwreceiver_tls_key: "" Полный путь к файлу ключа, специфичному для программы, закодированному в PEM
rwreceiver_tls_cert: "" Полный путь к файлу сертификата, специфичному для программы, закодированному в PEM
rwreceiver_tls_crl: "" Полный путь к Списку Отозванных Сертификатов, закодированному в PEM. Опционально.
rwreceiver_tls_priority: "" Порядок предпочтения (приоритет) для шифров, методов обмена ключами, кодов аутентификации сообщений и методов сжатия. Опционально. Значение по умолчанию - "NORMAL". Доступные аргументы зависят от версии GnuTLS.
rwreceiver_tls_security: "" Уровень безопасности, используемый при создании параметров Диффи-Хеллмана. Один из: low, medium, high или ultra. Опционально. Значение по умолчанию - "medium".
rwreceiver_tls_debug_level: "" Уровень отладки, используемый внутри библиотеки GnuTLS, число от 0 (без отладки) до 99 включительно. Опционально.

Зависимости

  • cmusei.silk

Пример Playbook

- hosts: server
  become: true
  vars:
    data_root_dir: "/data"
    # настройки rwreceiver
    silk_tls_support: True
    rwreceiver_statedirectory: "{{ data_root_dir }}/rwreceiver"
    rwreceiver_destination_dir: "{{ rwreceiver_statedirectory }}/incoming"
    rwreceiver_create_directories: "yes"
    rwreceiver_mode: "server"
    rwreceiver_port: "3737"
    rwreceiver_sender_clients: |
        sender1
        sender2
    # настройки tls rwreceiver
    tls_ca: "testcert.pem"
    tls_key: "client-key.pem"
    tls_cert: "client-cert.pem"
    rwreceiver_tls_ca: "/etc/pki/tls/{{ tls_ca }}"
    rwreceiver_tls_key: "/etc/pki/tls/private/{{ tls_key }}"
    rwreceiver_tls_cert: "/etc/pki/tls/{{ tls_cert }}"
    rwreceiver_pid_dir: "/var/run"
  pre_tasks:
    - name: Копировать ssl сертификаты
      copy:
        src: "{{ item.f }}"
        dest: "{{ item.d }}"
        mode: "{{ item.m }}"
        owner: "root"
        group: "root"
      with_items:
        - f: "{{ tls_ca }}"
          d: "{{ rwreceiver_tls_ca }}"
          m: '0644'
        - f: "{{ tls_key }}"
          d: "{{ rwreceiver_tls_key }}"
          m: '0600'
        - f: "{{ tls_cert}}"
          d: "{{ rwreceiver_tls_cert }}"
          m: '0644'
  roles:
    - role: cmusei.rwreceiver
      tags: [ 'rwreceiver' ]

Лицензия

Авторские права 2020 года Университета Карнеги-Меллон. БЕЗ ГАРАНТИЙ. МАТЕРИАЛ ИНСТИТУТА АППЛИКАТИВНОЙ ИНЖЕНЕРИИ И УНИВЕРСИТЕТА КАРНЕГИ-МЕЛЛОН ДАННЫЙ НА УСЛОВИЯХ "КАК ЕСТЬ". УНИВЕРСИТЕТ КАРНЕГИ-МЕЛЛОН НЕ ДАЁТ НИКАКИХ ГАРАНТИЙ, ЛИЧНЫХ ИЛИ ПОЯСНИТЕЛЬНЫХ, КАСАЮЩИХСЯ ЛЮБОГО ВОПРОСА, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ, ГАРАНТИИ ОТВЕТСТВЕННОСТИ ПО ЦЕЛИ ИЛИ ТОРГОВОЙ ДЕЙСТВИТЕЛЬНОСТИ, ИСКЛЮЧИТЕЛЬНОСТИ ИЛИ РЕЗУЛЬТАТОВ, ПОЛУЧЕННЫХ ИЗ ИСПОЛЬЗОВАНИЯ МАТЕРИАЛА. УНИВЕРСИТЕТ КАРНЕГИ-МЕЛЛОН НЕ ДАЁТ НИКАКИХ ГАРАНТИЙ ОТНОСИТЕЛЬНО СВОБОДЫ ОТ НАРУШЕНИЯ ПАТЕНТА, ТОРГОВОЙ МАРКИ ИЛИ АВТОРСКИХ ПРАВ. Выпущен под лицензией в стиле MIT (SEI), пожалуйста, смотрите license.txt или свяжитесь с permission@sei.cmu.edu для получения полных условий. [ЗАЯВЛЕНИЕ О РАСПРЕДЕЛЕНИИ A] Этот материал одобрен для публичного распространения и неограниченного распределения. Пожалуйста, смотрите уведомление об авторских правах для не правительственного использования и распределения. CERT® зарегистрирован в Патентном и товарном ведомстве США Университетом Карнеги-Меллон. Это программное обеспечение включает и/или использует следующее стороннее программное обеспечение, подлежащее своей лицензии:

  1. ansible (https://github.com/ansible/ansible/tree/devel/licenses) Авторские права 2019 года Red Hat, Inc.
  2. molecule (https://github.com/ansible-community/molecule/blob/master/LICENSE) Авторские права 2018 года Red Hat, Inc.
  3. testinfra (https://github.com/philpep/testinfra/blob/master/LICENSE) Авторские права 2020 года Philippe Pepiot.

DM20-0505

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

Эта роль была создана в 2019 году Мэттом Хеккаторном.

О проекте

A role to configure the rwreceiver service

Установить
ansible-galaxy install cmu-sei/ansible-role-rwreceiver
Лицензия
other
Загрузки
91
Владелец
At the SEI, we research software engineering, cybersecurity, and AI engineering problems; create innovative technologies; and put solutions into practice.