Skip to main contentSkip to footer

Configurer l'agent Linux

Chaque clé de /etc/reportedip-agent/config.yaml avec sa valeur par défaut et sa plage, les seuils de détection par source, l'escalade des bannissements, les limites de fonctionnement, le courrier qui arrive quand quelque chose ne va pas, et quel changement prend effet à la prochaine synchronisation, à un redémarrage, ou dans la minute.

Configuration

Un fichier, une liste blanche, un répertoire d'état. Ce que l'installateur écrit convient déjà à l'hôte ; la plupart des installations ne changent que deux choses, la valeur de mode et le fait que le blocage local soit actif ou non.

CheminPropriétaire, modeContenu
/etc/reportedip-agent/config.yamlroot:root, 0600Tous les réglages. L'agent refuse de démarrer quand le groupe ou les autres peuvent le lire, car ce fichier contient votre clé API, et il indique la commande chmod qui corrige.
/etc/reportedip-agent/whitelist.confroot:root, 0600Jamais bloquer, jamais signaler. Une adresse ou un CIDR par ligne, # commence un commentaire. Une ligne cassée est ignorée avec un avertissement. Créé par install, avec un commentaire explicatif en tête.
/var/lib/reportedip-agent/root:root, 0700État : offsets.json (positions de lecture), queue/, dedup.json, bans.json, health.json (santé), install-id, auto-whitelist, group-whitelist (écrit par la synchronisation depuis votre groupe, pas à la main), feed-token, les fichiers de verrou.
/var/log/reportedip-agent.logroot:root, 0640Le journal propre à l'agent. Il assure lui-même la rotation du fichier : logrotate n'est ni nécessaire ni gênant.
/usr/local/bin/reportedip-agentroot:root, 0755Le binaire. Un seul fichier, lié statiquement.
Une clé inconnue arrête l'agent avec le code 2. L'analyseur vérifie les noms de champs : une faute de frappe est donc une erreur avec un numéro de ligne et non une valeur qui ne s'applique jamais en silence. La table ci-dessous est la liste complète, et une clé qui n'y figure pas n'existe pas. Deux sont souvent inventées : il n'y a pas de sync_interval, l'intervalle vient de votre licence, et il n'y a pas de whitelist, la clé s'appelle whitelist_file. Après une modification, reportedip-agent status se termine avec le code 2 et nomme la clé quand le fichier n'est pas lisible.

Chaque clé de config.yaml

Seul api_key est obligatoire. Chaque autre clé a la valeur par défaut indiquée, et une clé que vous omettez conserve cette valeur. Une valeur en dehors de sa plage est une erreur qui nomme la clé, jamais un écrêtage silencieux. Les points dans les noms ci-dessous marquent l'imbrication : ban.enabled est un enabled: indenté sous ban:.

CléDéfautAcceptéEffet
api_keyaucunevotre cléLa seule clé sans valeur par défaut. REPLACE_ME compte comme absente.
api_urlhttps://reportedip.com/wp-json/reportedip/v2https absolueLa base REST. Le http simple n'est accepté que sur la boucle locale, pour un proxy local.
update_urldepuis api_url, chemin /agenthttps absolueD'où viennent les binaires de l'agent. À définir pour un miroir.
auto_updatetruetrue, falseInstaller une version plus récente pendant la synchronisation. false pour un hôte dont la version est décidée ailleurs ; update à la main fonctionne toujours, et status continue d'indiquer le retard de l'hôte.
log_levelwarndebug, info, warn, errorRien d'autre n'est accepté. Une installation neuve écrit warn, un hôte neuf reste donc silencieux dans le journal jusqu'à ce que quelque chose demande attention ; les lignes de routine (une liste mise à jour, un signalement en file, un bannissement local posé) sont au niveau info. Un hôte déjà installé garde ce que dit son fichier de configuration, et --log-level ou REPORTEDIP_LOG_LEVEL fixe la valeur qu'écrit une installation neuve, une flotte qui veut info n'a donc pas à être modifiée hôte par hôte ensuite. Les rares échecs qui arrêtent l'hôte avant que le logger n'existe sont à un niveau au-dessus d'error et s'affichent toujours, quelle que soit cette clé : ce niveau n'est pas une verbosité qu'un hôte peut baisser, c'est l'unique ligne que laisse toujours derrière lui un hôte qui vient de s'arrêter.
log_file/var/log/reportedip-agent.logchemin, ou videLe journal propre à l'agent, en plus de stderr, pour que journald garde tout ce qu'il a aujourd'hui. Vide désactive le fichier.
log_max_mb101 à 1024Taille à laquelle l'agent effectue la rotation de son propre fichier.
log_keep30 à 20Générations conservées. Avec les valeurs par défaut, le pire cas sur disque est de 40 Mo.
backendautoauto, ipset, nftablesQuel filtre de paquets est écrit. Un changement ultérieur exige sync --migrate-backend.
modedroplog, drop, offCe que font les règles. S'applique aux listes du flux et aux bannissements locaux.
confidence901 à 100Le seuil du flux. Plus bas signifie une liste plus longue et plus de cas limites. Le serveur annonce un plancher pour votre offre, et la plus haute des deux valeurs l'emporte.
limit500001 à 50000Nombre maximal d'adresses par requête de liste.
listsssh, edgessh, mail, web, ftp, edge, groupQuelles listes du flux sont actives. ssh et edge sont toujours actives et ne peuvent pas être désactivées. group, la liste du groupe de votre compte, est elle aussi toujours active et n'a besoin d'aucune entrée : sur une clé sans groupe, elle est simplement vide.
lists.ssh.portsdepuis le vrai service en écoute1 à 65535 chacunLes ports sur lesquels la règle ssh s'applique. La seule option par liste ; les autres listes ont des jeux de ports fixes. Une liste vide fait correspondre la règle à tous les ports.
min_entries.<list>ssh 1000, mail 500, web 500, ftp 500, edge 10001 ou plusLe plancher de plausibilité : sous ce nombre d'adresses, une liste n'est pas mise en place. Un minimum de zéro laisserait passer une liste vide, il est donc refusé. La liste group n'a pas de minimum et refuse la clé : un groupe vide est un groupe valide.
whitelist_file/etc/reportedip-agent/whitelist.confcheminVotre liste jamais bloquer, jamais signaler.
sourcesune entrée sshdliste d'entréesLes sources de journaux. Un fichier avec une clé sources décide seul : une entrée que vous ajoutez se place à côté de celles de l'installateur, pas dans un second bloc.
sources[].typeaucunun des quatorzeUn type inconnu est une erreur qui énumère les types valides. web-app n'en fait pas partie.
sources[].pathaucunun fichierDéfinissez path ou glob, jamais les deux. Sans aucun des deux, l'agent choisit lui-même le canal, journald ou le fichier par défaut de la distribution. La source web n'a pas de valeur par défaut et ne pointe vers rien sans l'un des deux. Pour scan, c'est le journal du noyau, sinon /var/log/kern.log ou /var/log/messages.
sources[].globaucun5 segments joker au plusUn motif sur plusieurs fichiers, réévalué toutes les dix minutes.
sources[].excludeaucunmotifs shellRetire des fichiers qu'un glob avait captés. Pas des expressions régulières. Un motif sans barre oblique correspond au nom de fichier seul, un motif avec barre doit couvrir le chemin complet. Un motif qui ne correspond à rien est signalé au démarrage.
sources[].poll_minutes51 à 60Seulement pour imunify360, qui interroge une commande au lieu de lire un fichier. Sur tout autre type, c'est une erreur.
min_hits, window_minutes5, 101 ou plusLe couple global pour toute source d'événement sans entrée propre dans la table interne.
web_min_hits, web_window_minutes50, 1201 ou plusLe même couple pour la seule source web, qui a besoin de volume plutôt que d'un code de statut.
thresholds.<event source>.hits, .window_minutesla table interne1 ou plusRemplace la table interne pour une source d'événement. Un nom inconnu est une erreur, pas un réglage qui ne s'applique jamais.
dedup_hours61 ou plusLa même adresse est signalée au plus une fois par fenêtre.
queue_max50001 ou plusFichiers de signalement en attente. Au-delà, les plus anciens sont abandonnés.
disk_min_mb2000 à 1000000Mébioctets libres exigés là où vit le répertoire d'état. En dessous, aucun nouveau signalement n'est mis en file, tandis que la détection et le blocage continuent. 0 désactive la limite.
jail_categories.<jail>table interneidentifiants positifsCorrespondance supplémentaire entre un nom de jail fail2ban et des identifiants de catégorie de menace. Il y a 63 catégories, numérotées de 1 à 63 sans trou. Aucun plafond n'est vérifié volontairement : le serveur possède la liste et gagne des entrées sans mise à jour de l'agent, et un identifiant qu'il ne connaît pas coûte un signalement rejeté, alors qu'un refus de démarrer coûterait l'hôte entier. Pertinent seulement tant que fail2ban reste une source.
ban.enabledtruetrue, falseDétermine si les détections locales sont bloquées ou non. Un ban add manuel fonctionne dans les deux cas.
ban.time_minutes301 ou plusLe premier bannissement d'une adresse.
ban.max_time_minutes10080 (7 jours)au moins ban.time_minutesLe plafond de l'escalade. L'abaisser plus tard laisse tels quels les bannissements déjà présents dans le noyau ; le nouveau plafond s'applique aux nouveaux bannissements et à ceux restaurés après un redémarrage ou un vidage.
ban.escalate41 ou plusLe multiplicateur par récidive dans la fenêtre de mémoire. 1 signifie aucune escalade.
ban.memory_hours241 ou plusCombien de temps un bannissement compte pour l'escalade suivante.
notify.emailvideune adresseVide signifie que cet hôte n'envoie aucun courrier. Il enregistre quand même ses états et les montre dans status.
notify.cooldown_hours241 ou plusAu plus un courrier par état dans cette fenêtre. 1 donne au plus un courrier par heure pour un état qui reste ouvert ; 0, un courrier par synchronisation, est refusé.
notify.relaytruetrue, falseEnvoyer via reportedip.com au lieu du MTA local. Essayé en premier, disponible à partir de Professional.
notify.smtp.host, .from, .user, .passwordvidechaînesNécessaire seulement sur un hôte sans MTA local et sans relais. Avec Postfix, Exim ou msmtp, l'agent utilise sendmail et aucun mot de passe n'a besoin de vivre dans un fichier.
notify.smtp.port5871 à 65535Port de soumission de votre propre serveur SMTP.
notify.smtp.starttlstruetrue, falseAvec true, le courrier est refusé plutôt qu'envoyé en clair quand le serveur ne propose pas STARTTLS.

Un fichier complet que l'analyseur accepte, avec chaque bloc qu'un hôte normal utilise :

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

Limites de détection, par source

Un seuil est un couple : combien d'occurrences, en combien de minutes. C'est la même idée que maxretry et findtime d'une jail fail2ban. Trois niveaux décident quel couple s'applique à une source d'événement, et le premier qui a une réponse gagne.

OrdreD'où vient le couplePortée
1Une entrée sous thresholdsExactement la source d'événement que vous nommez.
2La table interne, neuf entréesLes neuf sources d'événement marquées « interne » dans la table ci-dessous.
3web_min_hits / web_window_minutesLa source web uniquement.
3min_hits / window_minutesTout le reste, web-error compris.
Source d'événementSeuilOrigine
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 mininterne
postfix-sasl3 en 60 mininterne, mesuré
postfix-reject5 en 60 mininterne, rejets 5xx seulement
postfix-amavis3 en 60 mininterne
dovecot10 en 60 mininterne, mesuré
ftp20 en 60 mininterne
named20 en 30 mininterne
panel5 en 60 mininterne
scan10 en 10 mininterne
fail2ban, csf, imunify360aucun seuilCette source a déjà compté : une ligne est donc un signalement.

La clé sous thresholds est la source d'événement de cette table, pas le type de source de sources. Les deux nombres doivent valoir au moins 1. Un seul bloc thresholds, une entrée par source que vous voulez changer :

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

Relever un seuil rend l'agent plus silencieux et laisse passer les attaquants lents. L'abaisser est la direction qui coûte quelque chose : en dessous d'environ trois occurrences par heure sur une source de courrier ou web, vous finirez par signaler un client dont le mot de passe est faux dans son logiciel de messagerie, et un signalement est public au sein de la communauté.

Une donnée n'est pas configurable. Une adresse avec un historique de bannissement a besoin de moins d'occurrences qu'une adresse inconnue : un bannissement antérieur compte une ligne double, deux la comptent triple, puis cinq et neuf. Le poids est plafonné au seuil de sa source d'événement, un dixième bannissement ne transforme donc pas une seule ligne en signalement.

Limites de bannissement

Cinq valeurs dans le bloc ban, chacune dans l'unité que nomme sa clé. Elles ne s'appliquent qu'aux adresses que l'agent a trouvées dans vos propres journaux. La liste communautaire n'a aucune durée de bannissement, elle est remplacée en entier à chaque passe du flux. Avec les valeurs par défaut, une adresse qui revient est bannie 30 minutes, puis 2 heures, 8 heures, 32 heures et 128 heures, ensuite pour le plafond de 7 jours.

CléDéfautCe qui se passe aux extrêmes
enabledtruefalse est un hôte qui signale et ne bloque pas.
time_minutes30Des valeurs très courtes font de l'escalade la seule chose qui compte ; des valeurs très longues font qu'un faux positif reste longtemps dans l'ensemble.
max_time_minutes10080Sous time_minutes, le plafond raccourcirait le premier bannissement, et l'agent refuse un tel fichier. L'abaisser plus tard laisse intacts les bannissements encore présents dans le noyau : le plafond du jour s'applique aux nouveaux bannissements et à ceux que la synchronisation restaure après un redémarrage ou un vidage.
escalate41 signifie que chaque bannissement dure time_minutes.
memory_hours24Un enregistrement reste aussi pour le triple de la durée de son dernier bannissement quand c'est plus long, et c'est ce qui rend le plafond atteignable sans que le fichier des bannissements grossisse à cause de bannissements courts.
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

Limites de fonctionnement

Ces valeurs bornent ce que l'agent consomme lui-même. Ce ne sont pas des réglages de détection, et les deux qui valent la peine d'être changées sont la taille de la file et le plancher de disque.

CléDéfautUnitéTrop basTrop haut
queue_max5000signalements en attenteDes signalements sont abandonnés pendant une panne de l'API, les plus anciens d'abord.Une longue panne laisse des milliers de petits fichiers à envoyer ensuite.
dedup_hours6heuresLe même attaquant est signalé encore et encore et mange votre quota quotidien.Une adresse qui attaque de nouveau la semaine prochaine est signalée tard.
disk_min_mb200Mo libresL'agent peut contribuer à remplir /var, ce qui emporte l'hôte entier.Les signalements s'arrêtent sur un hôte parfaitement sain. 0 supprime la limite.
log_max_mb10MoUne rotation à chaque deuxième écriture et un historique trop court pour enquêter.Maximum 1024, et avec log_keep c'est le pire cas sur disque.
log_keep3générations0 ne garde aucun fichier issu d'une rotation.Maximum 20, et le coût disque est le produit des deux.
notify.cooldown_hours24heuresAu moins 1, et 1 donne au plus un courrier par heure pour un état qui reste ouvert. 0 donnerait un courrier par synchronisation et est refusé.Un problème apparu ce matin est envoyé par courrier demain.
poll_minutes5minutesUne commande lancée trop souvent sur un hôte chargé.Maximum 60, et les détections arrivent d'autant plus tard.
limit50000adresses par listeUne liste tronquée : les pires adresses sont là, la fin non.50000 est le maximum que l'API sert.
min_entries1000 / 500adressesUne liste anormalement courte passe en production et l'hôte est moins protégé qu'il ne le croit.Une liste réellement petite est refusée pour toujours et l'ensemble reste à sa génération précédente.

Sous le plancher de disque, l'agent n'écrit plus de nouveaux signalements dans la file, enregistre l'état et l'envoie par courrier, et continue de détecter et de bloquer. Un /var plein est pire qu'un signalement manqué.

Les limites qui ne viennent pas du fichier

Quatre nombres ne sont pas des réglages sur l'hôte. Ils viennent de votre compte et l'agent les demande, ce qui fait qu'une montée en gamme prend effet sans que personne édite un fichier.

LimiteValeurOù vous la voyez
Signalements par jour, par compteFree 50, Contributor 200, Professional 1 000, Business 5 000 multiplié par votre multiplicateur de volume, Enterprise illimité. L'atteindre répond HTTP 429 et l'agent garde le signalement dans sa file.status, section account
Signalements par jour, par serveurAutomatique : 150 pour cent de la part équitable, jamais sous 50 et jamais au-dessus de la limite du compte. Avec un serveur c'est toute la limite du compte, avec deux 75 pour cent chacun, avec six un quart chacun. Vous pouvez fixer un nombre à la place, ou arrêter les signalements d'une machine.status, et Agent Servers dans votre compte
Intervalle du flux et confiance minimaleToutes les 15 minutes avec une confiance à partir de 75 sur Professional, Business et Enterprise ; toutes les heures avec une confiance à partir de 90 sur Contributor ; sans licence serveur, aucun flux. Votre confidence ne sert que là où il est plus strict que ce plancher.status, par liste
Courriers via le relais de reportedip.com500 par mois sur Professional, 2 500 sur Business. Partagés avec le plugin Hive. Indisponible sur Free et Contributor, où l'agent utilise le MTA local.Votre compte
Le budget par serveur est compté et non appliqué. Aucun signalement n'est refusé à cause de lui aujourd'hui. Il est mesuré, affiché dans le portail et dans status, et pour l'instant c'est tout ce qu'il fait. Son activation sera annoncée à l'avance, et le libellé de cette ligne change avec elle : la ligne dit donc toujours lequel des deux cas s'applique.

Un courrier quand quelque chose ne va pas

Ce qui est envoyé par courrier est un état et non un événement : un flux qui échoue toutes les heures fait un message et non vingt-quatre. L'agent suit onze états, retient quand chacun a été envoyé par courrier pour la dernière fois afin qu'un redémarrage ne reprenne pas à zéro, et envoie une levée d'alerte quand un état est terminé.

ÉtatSignification
feedUne liste a échoué trois fois de suite, parce qu'elle n'a pas pu être récupérée ou qu'elle est revenue plus petite que min_entries.
api_keyLa clé a été refusée.
chainLa chaîne ou un ensemble ne correspond pas à la configuration.
diskMoins d'espace libre que disk_min_mb.
sourceUne source configurée ne pointe vers rien, ou n'est pas lisible.
updateLa mise à jour automatique ne parvient pas à atteindre ou à vérifier une version.
queueLa file a atteint queue_max et les signalements les plus anciens sont abandonnés.
licenseLa licence serveur de cet hôte manque ou arrive à échéance.
rulesVos fichiers de règles sous rules.d n'ont pas pu être utilisés, et les règles livrées tournent seules.
ruleUn garde-fou a désactivé l'une de vos règles de fichier ; rules status la nomme.
reputationL'adresse depuis laquelle cet hôte signale est elle-même listée dans la base communautaire. Un avertissement, pas une erreur : il exige une confiance de 75, la plus basse qu'un flux serve, il se déclenche donc quand d'autres hôtes bloqueraient vraiment cette adresse ; en dessous, le nombre n'apparaît que dans status et dans le fichier d'état. Dans status, il porte la confiance, le nombre de signalements et la page de retrait ; le courrier ne nomme que l'état, car ce texte contient une adresse et n'entre jamais dans un courrier. Il disparaît à la synchronisation suivant le retrait.

Le courrier porte le nom d'hôte, la version, le nom de l'état, une phrase courte avec des chiffres et la commande pour regarder. Jamais une ligne de journal, jamais une adresse IP, jamais un chemin. Au plus un courrier par état dans notify.cooldown_hours. Arrêter l'agent envoie exactement un courrier qui nomme ce que cet hôte cesse de faire ; un redémarrage de la machine et un redémarrage du service n'en envoient aucun, et c'est ce qui garde la mise à jour automatique silencieuse.

install écrit le bloc notify : l'adresse est donc une option au moment de l'installation et non une retouche ensuite. Une configuration existante n'est jamais modifiée, pas même par une mise à jour.

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

Trois chemins de livraison, dans l'ordre où l'agent les essaie. Sans notify.email, aucun ne s'exécute.

CheminQuand il sertCe qu'il exige
Le relais de reportedip.comnotify.relay: true, la valeur par défaut. Essayé en premier, car un MTA local qui accepte un courrier et ne le livre jamais est la seule panne que l'agent ne peut pas voir.Professional ou au-dessus, et une vraie boîte joignable comme destinataire. Une offre sans le relais répond 403 une fois, ce qui est retenu pour une journée.
Le MTA localAvec relay: false, ou après un refus du relais.Postfix, Exim ou msmtp. L'agent appelle sendmail -t -i et aucun mot de passe ne vit dans un fichier. Une boîte locale comme root@localhost fonctionne ici et seulement ici.
Votre propre serveur SMTPAvec relay: false et sans MTA local.Le bloc notify.smtp. STARTTLS reste actif : le courrier est refusé plutôt qu'envoyé en clair quand le serveur ne le propose pas.
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

Lancez reportedip-agent doctor après avoir configuré cela. Sa section mail dit si un courrier peut réellement quitter l'hôte, ce qui est une autre question que celle de savoir si la configuration est lisible. Un destinataire absent est nommé à chaque exécution et n'est pas compté comme une faute.

Quand une modification prend effet

L'agent lit sa configuration au démarrage, ne surveille pas le fichier et n'a pas de signal de rechargement. La commande dont vous avez besoin dépend de la partie que vous avez touchée.

Ce que vous avez changéCe qui le rend effectif
mode, lists, min_entries, confidence, limit, backendreportedip-agent sync. La synchronisation construit la chaîne et les règles : un nouveau mode est actif à la fin de celle-ci.
thresholds, min_hits, window_minutes, web_min_hits, web_window_minutes, dedup_hours, ban, notify, log_*systemctl restart reportedip-agent.service. C'est le démon de surveillance qui les lit.
Une source ajoutée à sourcessystemctl restart reportedip-agent.service.
La source scan ajoutéeLes deux : le redémarrage pour la source, et reportedip-agent sync pour la règle de pare-feu qu'elle lit, que seule la synchronisation construit.
Une source retirée de sourcesUn arrêt puis un démarrage, pas un redémarrage. Sur un hôte en production, un systemctl restart n'a pas suffi et le démon a continué à suivre le fichier retiré : systemctl stop reportedip-agent.service && systemctl start reportedip-agent.service.
Le contenu de whitelist_fileRien, quand vous utilisez reportedip-agent whitelist add : cela écrit le fichier et l'ensemble noyau en une étape et prend effet aussitôt. Éditer le fichier à la main demande un sync.
api_key, api_url, auto_update, update_urlRien pour la prochaine sync, qui est un oneshot et lit le fichier à neuf. Redémarrez le service de surveillance pour que le chemin de signalement reprenne aussi la clé.
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

Dernière mise à jour: · Maintenu par l’équipe ReportedIP

Security Focused
Conforme au RGPD
Made in Germany
Retour aux docs