cmusei.rwreceiver

rwreceiver

Un rol para configurar y administrar el servicio rwreceiver. rwreceiver es un daemon que acepta archivos transferidos desde uno o más procesos rwsender. Los archivos recibidos se almacenan en un directorio de destino. Consulte la documentación de rwreceiver para más información.

Requisitos

Si se utiliza TLS para las conexiones, se deben generar y cargar certificados coincidentes tanto en el remitente como en el receptor.

Variables de Rol

Las variables disponibles se enumeran a continuación, junto con los valores predeterminados (ver defaults/main.yml):

silk_packing_tools_loc: "/usr/local/sbin"

La ubicación de la carpeta de las herramientas de empaquetado silk.

silk_tls_support: False

Si se debe usar TLS para las conexiones.

rwreceiver_myname: "rwreceiver"

El nombre del proceso rwreceiver. Es posible ejecutar múltiples copias de rwreceiver en una sola máquina nombrándolas de manera diferente.

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 }}" 

Fuentes de plantilla a usar y sus destinos.

Variable Explicación
rwreceiver_statedirectory: "/usr/local/var/lib/rwreceiver" Directorio donde rwreceiver guarda su estado
rwreceiver_create_directories: "no" Si se establece en "sí", los directorios definidos se crearán automáticamente si no existen
rwreceiver_bin_dir: "{{ silk_packing_tools_loc }}" Ruta completa del directorio que contiene el programa "rwreceiver"
rwreceiver_destination_dir: "{{ rwreceiver_statedirectory }}/destination" La ruta completa del directorio donde se colocarán los archivos recibidos
rwreceiver_mode: "client" El modo en el que se ejecutará el receptor. Los valores válidos son "servidor" y "cliente".
rwreceiver_id: "receiver-1" El nombre de esta instancia del receptor
rwreceiver_port: "" El PUERTO o par HOST:PUERTO en el que el servidor escucha conexiones entrantes. Esto solo se requiere cuando se ejecuta en modo servidor. Si no se proporciona HOST, el servidor escucha en cualquier dirección. HOST puede ser un nombre o una dirección IP. Si HOST es una dirección IPv6, colóquela entre corchetes y encierre todo el valor entre comillas simples para evitar su interpretación por el shell.
rwreceiver_post_command: "" Comando a ejecutar en cada archivo una vez que se haya recibido. En el comando, "%s" se reemplazará con la ruta completa al archivo recibido, y "%I" se reemplazará con el identificador del rwsender que envió el archivo. Ej.: POST_COMMAND='echo archivo recibido %s de rwsender %I'
rwreceiver_freespace_min: "0" La cantidad de espacio (en bytes) que rwreceiver intentará dejar libre en el sistema de archivos que contiene $DESTINATION_DIR. Esta variable puede establecerse como un entero ordinario, o como un número real seguido de un sufijo K, M, G o T.
rwreceiver_space_max_percent: "100" El porcentaje máximo de espacio del sistema de archivos que contiene $DESTINATION_DIR que rwreceiver estará dispuesto a usar.
rwreceiver_sender_servers: "" Si el receptor está en modo cliente, entonces se deben especificar SENDER_SERVERS. Las líneas deben tener el siguiente formato: <identifier> <host>:<port>. Estas variables son valores de múltiples líneas, donde cada línea tiene el valor para un rwsender.
rwreceiver_sender_clients: "" Si el receptor está en modo servidor, entonces se deben especificar SENDER_CLIENTS. Las líneas deben tener el siguiente formato: <identifier>. Estas variables son valores de múltiples líneas, donde cada línea tiene el valor para un rwsender.
rwreceiver_duplicate_dirs: "" El receptor puede copiar archivos entrantes a múltiples directorios de destino. Tenga en cuenta que si la copia a uno de los siguientes directorios falla, se registra un error, pero el archivo se trata como si se hubiera transferido con éxito. Esta variable contiene un valor de múltiples líneas, donde cada línea enumera un directorio de destino duplicado. El formato para la línea es: <duplicate-dir>. Tenga en cuenta que cada línea debe ser una ruta de directorio completa
rwreceiver_duplicate_copies: "link" Al copiar archivos a un directorio de destino duplicado, por defecto, rwreceiver crea los archivos como enlaces duros (si es posible) entre ellos y con archivos en el directorio de destino. Sin embargo, si algún proceso modifica una copia en un lugar, eso afectará a todos los archivos. Para forzar a rwreceiver a crear una copia completa, cambie DUPLICATE_COPIES de "link" a "copy".
rwreceiver_log_type: "syslog" El tipo de registro a utilizar. Los valores válidos son "legacy" y "syslog".
rwreceiver_log_level: "info" El nivel más bajo de registro que se registrará. Los valores válidos son: emerg, alert, crit, err, warning, notice, info, debug
rwreceiver_log_dir: "{{ rwreceiver_statedirectory }}/log" La ruta completa del directorio donde se escribirán los archivos de registro cuando LOG_TYPE sea "legacy".
rwreceiver_pid_dir: "{{ rwreceiver_log_dir }}" La ruta completa del directorio donde se escribirá el archivo PID
rwreceiver_user: "root" El usuario bajo el cual se ejecuta este programa; se requieren permisos de root solo cuando rwreceiver escucha en un puerto privilegiado.
rwreceiver_extra_options: "" Opciones adicionales para pasar a rwreceiver

Al usar la opción de soporte de GnuTLS estableciendo silk_tls_support: True, se debe especificar la ruta completa del archivo CA (TLS_CA), así como O la ruta completa al archivo PKCS#12 específico del programa (TLS_PKCS12) O las rutas completas al certificado (TLS_CERT) y al archivo de clave (TLS_KEY) específicos del programa. Si el archivo PKCS#12 está protegido por contraseña, debe establecer la variable de entorno RWRECEIVER_TLS_PASSWORD con la contraseña antes de iniciar rwreceiver. Si RWRECEIVER_TLS_PASSWORD no está establecido, se trata como una contraseña nula; establezca la cadena vacía para permitir una contraseña vacía.

Variable TLS Explicación
rwreceiver_tls_ca: "" La ruta completa al archivo CA raíz, codificado en PEM
rwreceiver_tls_pkcs: "" La ruta completa al archivo PKCS#12 específico del programa, codificado en DER
rwreceiver_tls_key: "" La ruta completa al archivo de clave específico del programa, codificado en PEM
rwreceiver_tls_cert: "" La ruta completa al archivo de certificado específico del programa, codificado en PEM
rwreceiver_tls_crl: "" La ruta completa a la Lista de Revocación de Certificados, codificada en PEM. Opcional.
rwreceiver_tls_priority: "" El orden de preferencia (prioridad) para los cifrados, los métodos de intercambio de claves, los códigos de autenticación de mensajes y los métodos de compresión. Opcional. El valor predeterminado es "NORMAL". Los argumentos disponibles dependen de su versión de GnuTLS.
rwreceiver_tls_security: "" El nivel de seguridad a utilizar al generar parámetros de Diffie-Hellman. Uno de bajo, medio, alto o ultra. Opcional. El valor predeterminado es "medio".
rwreceiver_tls_debug_level: "" El nivel de depuración utilizado internamente por la biblioteca GnuTLS, un número entre 0 (sin depuración) y 99 inclusive. Opcional.

Dependencias

  • cmusei.silk

Ejemplo de Playbook

- hosts: server
  become: true
  vars:
    data_root_dir: "/data"
    # configuraciones de 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
    # configuraciones tls de 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: Copiar certificados 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' ]

Licencia

Copyright 2020 Carnegie Mellon University. SIN GARANTÍA. ESTOS MATERIALES DE LA UNIVERSIDAD CARNEGIE MELLON Y DEL INSTITUTO DE INGENIERÍA DE SOFTWARE SE PROPORCIONAN EN UNA BASE "TAL CUAL". LA UNIVERSIDAD CARNEGIE MELLON NO OFRECE NINGUNA GARANTÍA DE NINGÚN TIPO, YA SEA EXPRESA O IMPLÍCITA, EN CUANTO A CUALQUIER ASUNTO INCLUYENDO, PERO NO LIMITADO A, GARANTÍAS DE ADECUACIÓN PARA UN PROPÓSITO O COMERCIALIZACIÓN, EXCLUSIVIDAD, O RESULTADOS OBTENIDOS DEL USO DEL MATERIAL. LA UNIVERSIDAD CARNEGIE MELLON NO OFRECE NINGUNA GARANTÍA DE NINGÚN TIPO CON RESPECTO A LA LIBERTAD DE INFRACCIONES DE PATENTE, MARCA REGISTRADA O DERECHO DE AUTOR. Publicado bajo una licencia estilo MIT (SEI), consulte license.txt o comuníquese con permission@sei.cmu.edu para obtener los términos completos. [DISTRIBUTION STATEMENT A] Este material ha sido aprobado para su divulgación pública y distribución ilimitada. Consulte el aviso de derechos de autor para su uso y distribución fuera del gobierno de EE. UU. CERT® está registrado en la Oficina de Patentes y Marcas Registradas de EE. UU. por la Universidad Carnegie Mellon. Este software incluye y/o hace uso del siguiente software de terceros sujeto a su propia licencia:

  1. ansible (https://github.com/ansible/ansible/tree/devel/licenses) Copyright 2019 Red Hat, Inc.
  2. molecule (https://github.com/ansible-community/molecule/blob/master/LICENSE) Copyright 2018 Red Hat, Inc.
  3. testinfra (https://github.com/philpep/testinfra/blob/master/LICENSE) Copyright 2020 Philippe Pepiot.

DM20-0505

Información del Autor

Este rol fue creado en 2019 por Matt Heckathorn.

Acerca del proyecto

A role to configure the rwreceiver service

Instalar
ansible-galaxy install cmusei.rwreceiver
Licencia
other
Descargas
103
Propietario
At the SEI, we research software engineering, cybersecurity, and AI engineering problems; create innovative technologies; and put solutions into practice.