Skip to main contentSkip to footer

Configurar el agente para Linux

Cada clave de /etc/reportedip-agent/config.yaml con su valor por omisión y su rango, los umbrales de detección por fuente, la escalada de bloqueos, los límites de funcionamiento, el correo que llega cuando algo va mal, y qué cambio tiene efecto en la siguiente sincronización, en un reinicio o en menos de un minuto.

Configuración

Un archivo, una lista blanca, un directorio de estado. Lo que escribe el instalador ya encaja con el host; la mayoría de las instalaciones cambian solo dos cosas, el valor de mode y si el bloqueo local está activo.

RutaPropietario, modoContenido
/etc/reportedip-agent/config.yamlroot:root, 0600Todos los ajustes. El agente se niega a arrancar cuando el grupo u otros pueden leerlo, porque el archivo contiene tu clave API, e indica el comando chmod que lo corrige.
/etc/reportedip-agent/whitelist.confroot:root, 0600Nunca bloquear, nunca notificar. Una dirección o un CIDR por línea, # inicia un comentario. Una línea rota se omite con un aviso. La crea install, con un comentario explicativo al principio.
/var/lib/reportedip-agent/root:root, 0700Estado: offsets.json (posiciones de lectura), queue/, dedup.json, bans.json, health.json (salud), install-id, auto-whitelist, group-whitelist (escrito por la sincronización desde tu grupo, no a mano), feed-token, los archivos de lock.
/var/log/reportedip-agent.logroot:root, 0640El registro propio del agente. Él mismo rota el archivo, así que logrotate no es necesario ni molesta.
/usr/local/bin/reportedip-agentroot:root, 0755El binario. Un solo archivo, enlazado estáticamente.
Una clave desconocida detiene el agente con el código 2. El analizador comprueba los nombres de campo, así que una errata es un error con número de línea y no un valor que nunca se aplica en silencio. La tabla de abajo es la lista completa, y una clave que no esté en ella no existe. Dos se inventan a menudo: no hay sync_interval, el intervalo viene de tu licencia, y no hay whitelist, la clave se llama whitelist_file. Tras un cambio, reportedip-agent status termina con el código 2 y nombra la clave cuando el archivo no se puede leer.

Cada clave de config.yaml

Solo api_key es obligatoria. Cada otra clave tiene el valor por defecto que se indica, y una clave que omitas conserva ese valor. Un valor fuera de su rango es un error que nombra la clave, nunca un recorte silencioso. Los puntos en los nombres de abajo marcan el anidamiento: ban.enabled es un enabled: sangrado bajo ban:.

ClavePor defectoAceptadoEfecto
api_keyningunatu claveLa única clave sin valor por defecto. REPLACE_ME cuenta como ausente.
api_urlhttps://reportedip.com/wp-json/reportedip/v2https absolutaLa base REST. El http simple solo se acepta en la interfaz loopback, para un proxy local.
update_urldesde api_url, ruta /agenthttps absolutaDe dónde vienen los binarios del agente. Se define para un espejo.
auto_updatetruetrue, falseInstalar una versión más nueva durante la sincronización. false para un host cuya versión se decide en otro sitio; update a mano sigue funcionando, y status sigue indicando cuánto se ha quedado atrás el host.
log_levelwarndebug, info, warn, errorNada más se acepta. Una instalación nueva escribe warn, así que un host nuevo se queda callado en el diario hasta que algo necesite atención; las líneas de rutina (una lista actualizada, un informe en la cola, un bloqueo local puesto) están en info. Un host ya instalado conserva lo que diga su archivo de configuración, y --log-level o REPORTEDIP_LOG_LEVEL fijan el valor que escribe una instalación nueva, así que una flota que quiera info no hay que editarla después host por host. Los pocos fallos que detienen el host antes de que exista el registrador están en un nivel por encima de error y se muestran siempre, sea cual sea esta clave: ese nivel no es un grado de detalle que un host pueda bajar, es la única línea que deja siempre un host que acaba de detenerse.
log_file/var/log/reportedip-agent.logruta o vacíoEl registro propio del agente, además de stderr, para que journald conserve todo lo que tiene hoy. Vacío desactiva el archivo.
log_max_mb101 a 1024Tamaño al que el agente rota su propio archivo.
log_keep30 a 20Generaciones rotadas que se conservan. Con los valores por defecto el peor caso en disco son 40 MB.
backendautoauto, ipset, nftablesQué filtro de paquetes se escribe. Un cambio posterior necesita sync --migrate-backend.
modedroplog, drop, offQué hacen las reglas. Se aplica a las listas del feed y a los bloqueos locales.
confidence901 a 100El umbral del feed. Más bajo significa una lista más larga y más casos límite. El servidor indica un suelo para tu plan, y gana el más alto de los dos valores.
limit500001 a 50000Número máximo de direcciones por petición de lista.
listsssh, edgessh, mail, web, ftp, edge, groupQué listas del feed están activas. ssh y edge están siempre activas y no se pueden desactivar. group, la lista del grupo de tu cuenta, también está siempre activa y no necesita entrada: en una clave sin grupo está simplemente vacía.
lists.ssh.portsdel servicio real a la escucha1 a 65535 cada unoLos puertos en los que actúa la regla ssh. La única opción por lista; las demás listas tienen conjuntos de puertos fijos. Una lista vacía hace que la regla actúe en todos los puertos.
min_entries.<list>ssh 1000, mail 500, web 500, ftp 500, edge 10001 o másEl suelo de plausibilidad: por debajo de ese número de direcciones una lista no se intercambia. Un mínimo de cero dejaría pasar una lista vacía, así que se rechaza. La lista group no tiene mínimo y rechaza la clave: un grupo vacío es un grupo válido.
whitelist_file/etc/reportedip-agent/whitelist.confrutaTu lista de nunca bloquear, nunca notificar.
sourcesuna entrada sshdlista de entradasLas fuentes de registro. Un archivo con una clave sources decide solo, así que una entrada tuya va junto a las que escribió el instalador, no en un segundo bloque.
sources[].typeningunouno de los catorceUn tipo desconocido es un error que enumera los válidos. web-app no es uno de ellos.
sources[].pathningunoun archivoDefine path o glob, nunca ambos. Sin ninguno de los dos, el agente elige el canal por su cuenta, journald o el archivo por defecto de la distribución. La fuente web no tiene valor por defecto y sin uno de los dos no apunta a nada. Para scan es el diario del núcleo, si no /var/log/kern.log o /var/log/messages.
sources[].globninguno5 segmentos comodín como máximoUn patrón sobre muchos archivos, reevaluado cada diez minutos.
sources[].excludeningunopatrones de shellRetira archivos que un glob había captado. No son expresiones regulares. Un patrón sin barra coincide solo con el nombre del archivo, uno con barra tiene que cubrir la ruta completa. Un patrón que no coincide con nada se avisa al arrancar.
sources[].poll_minutes51 a 60Solo para imunify360, que consulta un comando en lugar de leer un archivo. En cualquier otro tipo es un error.
min_hits, window_minutes5, 101 o másEl par global para toda fuente de evento sin entrada propia en la tabla interna.
web_min_hits, web_window_minutes50, 1201 o másEl mismo par solo para la fuente web, que necesita volumen en lugar de un código de estado.
thresholds.<event source>.hits, .window_minutesla tabla interna1 o másSustituye la tabla interna para una fuente de evento. Un nombre desconocido es un error, no un ajuste que nunca se aplica.
dedup_hours61 o másLa misma dirección se notifica como máximo una vez por ventana.
queue_max50001 o másArchivos de informe en espera. Por encima se descartan los más antiguos.
disk_min_mb2000 a 1000000Mebibytes libres exigidos donde vive el directorio de estado. Por debajo no se encola ningún informe nuevo, mientras la detección y el bloqueo siguen. 0 desactiva el límite.
jail_categories.<jail>tabla internaidentificadores positivosCorrespondencia adicional entre un nombre de jail de fail2ban e identificadores de categoría de amenaza. Hay 63 categorías, numeradas de 1 a 63 sin huecos. A propósito no se comprueba un techo: el servidor es dueño de la lista y gana entradas sin que se actualice el agente, y un identificador que no conoce cuesta un informe rechazado, mientras que negarse a arrancar costaría el host entero. Solo importa mientras fail2ban siga siendo una fuente.
ban.enabledtruetrue, falseSi los hallazgos locales se bloquean. Un ban add manual funciona en ambos casos.
ban.time_minutes301 o másEl primer bloqueo de una dirección.
ban.max_time_minutes10080 (7 días)al menos ban.time_minutesEl techo de la escalada. Bajarlo después deja como están los bloqueos que ya están en el núcleo; el nuevo techo se aplica a los bloqueos nuevos y a los que se restauran tras un reinicio o un vaciado.
ban.escalate41 o másEl multiplicador por reincidencia dentro de la ventana de memoria. 1 significa ninguna escalada.
ban.memory_hours241 o másCuánto tiempo cuenta un bloqueo para la siguiente escalada.
notify.emailvacíouna direcciónVacío significa que este host no envía correo. Igualmente registra sus estados y los muestra en status.
notify.cooldown_hours241 o másComo máximo un correo por estado en esa ventana. 1 es como máximo un correo por hora para un estado que sigue abierto; 0, un correo por sincronización, se rechaza.
notify.relaytruetrue, falseEnviar a través de reportedip.com en lugar del MTA local. Se intenta primero, disponible desde Professional.
notify.smtp.host, .from, .user, .passwordvacíocadenasSolo hace falta en un host sin MTA local y sin relé. Con Postfix, Exim o msmtp el agente usa sendmail y ninguna contraseña tiene que vivir en un archivo.
notify.smtp.port5871 a 65535Puerto de envío de tu propio servidor SMTP.
notify.smtp.starttlstruetrue, falseCon true el correo se rechaza en lugar de enviarse en claro cuando el servidor no ofrece STARTTLS.

Un archivo completo que el analizador acepta, con cada bloque que usa un host normal:

yaml
# /etc/reportedip-agent/config.yaml   root:root 0600
api_key: "YOUR_API_KEY"
api_url: https://reportedip.com/wp-json/reportedip/v2

log_level: warn              # debug | info | warn | error
log_file: /var/log/reportedip-agent.log
log_max_mb: 10
log_keep: 3
auto_update: true

backend: auto                # auto | ipset | nftables
mode: drop                   # log | drop | off
confidence: 90               # the feed threshold
limit: 50000

lists:                       # ssh, edge and group are always on
  ssh:
    ports: [22]              # written by install from the real listener
  edge: {}
  mail: {}
  web: {}

min_entries:                 # below this many addresses a list is not applied
  ssh: 1000
  mail: 500
  web: 500
  ftp: 500
  edge: 1000

whitelist_file: /etc/reportedip-agent/whitelist.conf

min_hits: 5                  # the global detection pair
window_minutes: 10
web_min_hits: 50             # the web source uses its own
web_window_minutes: 120
dedup_hours: 6
queue_max: 5000
disk_min_mb: 200

sources:                     # detected at install time
  - type: sshd
  - type: web
    glob: /var/www/*/log/access.log
  - type: web-error
    path: /var/log/nginx/error.log
  - type: postfix
    path: /var/log/mail.log
  - type: dovecot
    path: /var/log/mail.log
  - type: scan               # the kernel log; adds the port scan rule

thresholds: {}               # per event source overrides, see below

ban:                         # block local finds, not only the feed
  enabled: true
  time_minutes: 30
  max_time_minutes: 10080
  escalate: 4
  memory_hours: 24

notify:
  email: ""                  # empty means no mail
  cooldown_hours: 24
  relay: true                # through reportedip.com, from Professional

Límites de detección, por fuente

Un umbral es un par: cuántos golpes, en cuántos minutos. Es la misma idea que maxretry y findtime de un jail de fail2ban. Tres niveles deciden qué par se aplica a una fuente de evento, y gana el primero que tenga respuesta.

OrdenDe dónde viene el parAlcance
1Una entrada en thresholdsExactamente la fuente de evento que nombras.
2La tabla interna, nueve entradasLas nueve fuentes de evento marcadas como «interno» en la tabla de abajo.
3web_min_hits / web_window_minutesSolo la fuente web.
3min_hits / window_minutesTodo lo demás, web-error incluido.
Fuente de eventoUmbralProcedencia
sshd5 en 10 minmin_hits / window_minutes
web-error5 en 10 minmin_hits / window_minutes
modsec5 en 10 minmin_hits / window_minutes
exim5 en 10 minmin_hits / window_minutes
web50 en 120 minweb_min_hits / web_window_minutes
web-app20 en 60 mininterno
postfix-sasl3 en 60 mininterno, medido
postfix-reject5 en 60 mininterno, solo rechazos 5xx
postfix-amavis3 en 60 mininterno
dovecot10 en 60 mininterno, medido
ftp20 en 60 mininterno
named20 en 30 mininterno
panel5 en 60 mininterno
scan10 en 10 mininterno
fail2ban, csf, imunify360sin umbralEsa fuente ya ha contado, así que una línea es un informe.

La clave en thresholds es la fuente de evento de esa tabla, no el tipo de fuente de sources. Los dos números tienen que ser al menos 1. Un solo bloque thresholds, una entrada por fuente que quieras cambiar:

yaml
thresholds:
  # A resolver that sees a lot of refused queries: fewer minutes,
  # more hits.
  named:
    hits: 40
    window_minutes: 5
  # A mail server whose customers keep mistyping passwords: SASL a
  # little more forgiving, Dovecot untouched.
  postfix-sasl:
    hits: 6
    window_minutes: 60
  # An exposed SSH port, stricter than the global pair.
  sshd:
    hits: 3
    window_minutes: 10

Subir un umbral hace al agente más silencioso y deja pasar a los atacantes lentos. Bajarlo es la dirección que cuesta algo: por debajo de unos tres golpes por hora en una fuente de correo o web acabarás notificando a un cliente con una contraseña mal puesta en su programa de correo, y un informe es público dentro de la comunidad.

Un dato no es configurable. Una dirección con historial de bloqueos necesita menos golpes que una desconocida: un bloqueo anterior cuenta una línea el doble, dos el triple, luego cinco y nueve. El peso se recorta al umbral de su fuente de evento, así que un décimo bloqueo no convierte una sola línea en un informe.

Límites de bloqueo

Cinco valores en el bloque ban, cada uno en la unidad que nombra su clave. Solo se aplican a direcciones que el agente encontró en tus propios registros. La lista comunitaria no tiene tiempo de bloqueo alguno, se reemplaza entera en cada pasada del feed. Con los valores por defecto, una dirección que vuelve queda bloqueada 30 minutos, luego 2 horas, 8 horas, 32 horas y 128 horas, y después durante el techo de 7 días.

ClavePor defectoQué pasa en los extremos
enabledtruefalse es un host que notifica y no bloquea.
time_minutes30Valores muy cortos hacen de la escalada lo único relevante; valores muy largos significan que un falso positivo se queda mucho tiempo en el conjunto.
max_time_minutes10080Por debajo de time_minutes el techo acortaría el primer bloqueo, y el agente rechaza un archivo así. Bajarlo después deja intactos los bloqueos que siguen en el núcleo: el techo de hoy se aplica a los bloqueos nuevos y a los que la sincronización restaura tras un reinicio o un vaciado.
escalate41 significa que cada bloqueo dura time_minutes.
memory_hours24Un registro se mantiene además el triple de la duración de su último bloqueo cuando eso es más largo, y eso es lo que hace alcanzable el techo sin que el archivo de bloqueos crezca por bloqueos cortos.
yaml
# Careful: a short first ban, a low cap, a long memory.
ban:
  enabled: true
  time_minutes: 10
  max_time_minutes: 1440     # one day
  escalate: 3
  memory_hours: 72

# Strict: a long first ban and a hard escalation.
ban:
  enabled: true
  time_minutes: 60
  max_time_minutes: 43200    # thirty days
  escalate: 6
  memory_hours: 168          # a week

Límites de funcionamiento

Estos valores acotan lo que el agente consume él mismo. No son ajustes de detección, y los dos que merece la pena cambiar son el tamaño de la cola y el suelo de disco.

ClavePor defectoUnidadDemasiado bajoDemasiado alto
queue_max5000informes en esperaSe descartan informes durante una caída de la API, los más antiguos primero.Una caída larga deja miles de archivos pequeños que enviar después.
dedup_hours6horasEl mismo atacante se notifica una y otra vez y se come tu cupo diario.Una dirección que vuelve a atacar la semana que viene se notifica tarde.
disk_min_mb200MB libresEl agente puede ayudar a llenar /var, y eso se lleva el host entero.Los informes se detienen en un host perfectamente sano. 0 quita el límite.
log_max_mb10MBRotación en cada segunda escritura y un historial demasiado corto para investigar nada.Máximo 1024, y junto con log_keep ese es el peor caso en disco.
log_keep3generaciones0 no conserva ningún archivo rotado.Máximo 20, y el coste en disco es el producto de los dos.
notify.cooldown_hours24horasAl menos 1, y 1 es como máximo un correo por hora para un estado que sigue abierto. 0 sería un correo por sincronización y se rechaza.Un problema que empezó esta mañana se envía por correo mañana.
poll_minutes5minutosUn comando que arranca demasiado a menudo en un host cargado.Máximo 60, y los hallazgos llegan otro tanto más tarde.
limit50000direcciones por listaUna lista truncada: las peores direcciones están, el resto no.50000 es el máximo que sirve la API.
min_entries1000 / 500direccionesUna lista inverosímilmente corta entra en producción y el host está peor protegido de lo que cree.Una lista realmente pequeña se rechaza para siempre y el conjunto se queda en su generación anterior.

Por debajo del suelo de disco el agente deja de encolar informes nuevos, anota el estado y lo envía por correo, y sigue detectando y bloqueando. Un /var lleno es peor que un informe perdido.

Límites que no vienen del archivo

Cuatro números no son un ajuste del host. Vienen de tu cuenta y el agente los consulta, y por eso una mejora de plan tiene efecto sin que nadie edite un archivo.

LímiteValorDónde lo ves
Informes por día, por cuentaFree 50, Contributor 200, Professional 1.000, Business 5.000 por tu multiplicador de volumen, Enterprise ilimitado. Alcanzarlo responde HTTP 429 y el agente mantiene el informe en su cola.status, sección account
Informes por día, por servidorAutomático: el 150 por ciento de la parte justa, nunca por debajo de 50 y nunca por encima del límite de la cuenta. Con un servidor es todo el límite de la cuenta, con dos el 75 por ciento cada uno, con seis un cuarto cada uno. Puedes fijar un número en su lugar, o detener los informes de una máquina.status, y Agent Servers en tu cuenta
Intervalo del feed y confianza mínimaCada 15 minutos con confianza desde 75 en Professional, Business y Enterprise; cada hora con confianza desde 90 en Contributor; sin licencia de servidor, ningún feed. Tu confidence solo sirve donde es más estricto que ese suelo.status, por lista
Correos por el relé de reportedip.com500 al mes en Professional, 2.500 en Business. Compartidos con el plugin Hive. No disponible en Free ni Contributor, donde el agente usa el MTA local.Tu cuenta
El presupuesto por servidor se cuenta y no se impone. Hoy no se rechaza ningún informe por él. Se mide, se muestra en el portal y en status, y por ahora eso es todo lo que hace. Su activación se anunciará antes, y el texto de esa línea cambia con ella, así que la línea siempre dice cuál de los dos casos se aplica.

Un correo cuando algo va mal

Lo que se envía por correo es un estado y no un evento, así que un feed que falla cada hora es un mensaje y no veinticuatro. El agente lleva once estados, recuerda cuándo se envió por correo cada uno por última vez para que un reinicio no empiece de cero, y envía un aviso de restablecimiento cuando uno termina.

EstadoSignificado
feedUna lista ha fallado tres veces seguidas, porque no se pudo descargar o volvió más pequeña que min_entries.
api_keyLa clave fue rechazada.
chainLa cadena o un conjunto no es lo que dice la configuración.
diskMenos espacio libre que disk_min_mb.
sourceUna fuente configurada no resuelve nada, o no es legible.
updateLa actualización automática no alcanza o no verifica una versión.
queueLa cola ha llegado a queue_max y se descartan los informes más antiguos.
licenseLa licencia de servidor de este host falta o está a punto de acabar.
rulesTus archivos de reglas bajo rules.d no se pudieron usar, y las reglas incluidas funcionan solas.
ruleUna salvaguarda ha desactivado una de tus reglas de archivo; rules status la nombra.
reputationLa dirección desde la que este host notifica está ella misma listada en la base de datos comunitaria. Un aviso, no un error: necesita confianza 75, la más baja que sirve cualquier feed, así que salta cuando otros hosts bloquearían de verdad esa dirección; por debajo, el número solo aparece en status y en el archivo de estado. En status lleva la confianza, el número de informes y la página de retirada; el correo solo nombra el estado, porque este texto contiene una dirección y nunca entra en un correo. Desaparece con la siguiente sincronización tras la retirada.

El correo lleva el nombre del host, la versión, el nombre del estado, una frase corta con números y el comando con el que mirar. Nunca una línea de registro, nunca una dirección IP, nunca una ruta. Como máximo un correo por estado dentro de notify.cooldown_hours. Detener el agente envía exactamente un correo que nombra lo que este host deja de hacer; un reinicio de la máquina y un reinicio del servicio no envían ninguno, y eso es lo que mantiene callada la actualización automática.

install escribe el bloque notify, así que la dirección es una opción de línea de comandos al instalar y no un retoque posterior. Una configuración existente nunca se cambia, ni siquiera por una actualización.

bash
# Arm the mail while the host is being set up
sudo REPORTEDIP_KEY=<YOUR-KEY> reportedip-agent install --notify-email ops@example.org

# The same through the install script, so one line arms a whole
# rollout
curl -fsSL https://reportedip.com/agent/install.sh \
  | REPORTEDIP_ACCEPT_TERMS=1 REPORTEDIP_KEY=<YOUR-KEY> REPORTEDIP_NOTIFY_EMAIL=ops@example.org sh

Tres vías de entrega, en el orden en que el agente las intenta. Sin notify.email no se ejecuta ninguna.

VíaCuándo se usaQué necesita
El relé de reportedip.comnotify.relay: true, el valor por defecto. Se intenta primero, porque un MTA local que acepta un correo y nunca lo entrega es el único fallo que el agente no puede ver.Professional o superior, y un buzón real y alcanzable como destinatario. Un plan sin el relé responde 403 una vez, y eso se recuerda durante un día.
El MTA localCon relay: false, o después de que el relé lo haya rechazado.Postfix, Exim o msmtp. El agente llama a sendmail -t -i y ninguna contraseña vive en un archivo. Un buzón local como root@localhost funciona aquí y solo aquí.
Tu propio servidor SMTPCon relay: false y sin MTA local.El bloque notify.smtp. STARTTLS sigue activo, así que el correo se rechaza en lugar de enviarse en claro cuando el servidor no lo ofrece.
yaml
# The default: out through the relay of reportedip.com, so this
# host needs no mail server of its own.
notify:
  email: "ops@example.org"
  cooldown_hours: 24
  relay: true

# Local delivery only, through postfix, exim or msmtp.
notify:
  email: "ops@example.org"
  cooldown_hours: 24
  relay: false

# No local MTA and no relay: your own SMTP.
notify:
  email: "ops@example.org"
  cooldown_hours: 12
  relay: false
  smtp:
    host: mail.example.org
    port: 587
    from: agent@example.org
    user: agent@example.org
    password: "..."
    starttls: true

Ejecuta reportedip-agent doctor después de configurar esto. Su sección mail dice si un correo puede salir realmente del host, que es una pregunta distinta de si la configuración se puede leer. Un destinatario ausente se nombra en cada ejecución y no cuenta como fallo.

Cuándo tiene efecto un cambio

El agente lee su configuración al arrancar, no vigila el archivo y no tiene señal de recarga. El comando que necesitas depende de la parte que hayas tocado.

Qué has cambiadoQué lo hace efectivo
mode, lists, min_entries, confidence, limit, backendreportedip-agent sync. La sincronización construye la cadena y las reglas, así que un modo nuevo está activo al final de ella.
thresholds, min_hits, window_minutes, web_min_hits, web_window_minutes, dedup_hours, ban, notify, log_*systemctl restart reportedip-agent.service. Eso lo lee el demonio watch.
Una fuente añadida a sourcessystemctl restart reportedip-agent.service.
La fuente scan añadidaAmbas cosas: el reinicio para la fuente, y reportedip-agent sync para la regla del cortafuegos que lee, que solo construye la sincronización.
Una fuente retirada de sourcesUna parada y un arranque, no un reinicio. En un host en producción un systemctl restart no bastó y el demonio siguió leyendo el archivo retirado: systemctl stop reportedip-agent.service && systemctl start reportedip-agent.service.
El contenido de whitelist_fileNada, cuando usas reportedip-agent whitelist add: eso escribe el archivo y el conjunto del núcleo en un paso y tiene efecto de inmediato. Editar el archivo a mano necesita un sync.
api_key, api_url, auto_update, update_urlNada para el siguiente sync, que es un oneshot y lee el archivo de nuevo. Reinicia el servicio watch para que la vía de informes también tome la clave.
bash
# The safe sequence after any edit
reportedip-agent status >/dev/null; [ $? -ne 2 ] && echo "config parses"
reportedip-agent sync
systemctl restart reportedip-agent.service
systemctl status reportedip-agent.service --no-pager

Última actualización: · Mantenido por el equipo de ReportedIP

Security Focused
Conforme al RGPD
Made in Germany
Volver a la documentación