Skip to main contentSkip to footer

Den Linux-Agenten betreiben

Die Befehle und ihre Exit-Codes, was die drei systemd-Units tun, wie status und doctor ins Monitoring passen, test statt fail2ban-regex, und die Tabelle zur Problembehebung: Symptom, Ursache, Befehl.

Befehle

BefehlWirkungExit
REPORTEDIP_KEY=K install [--accept-terms] [--admin-ip IP|CIDR] [--ssh-port N] [--mode log|drop] [--ban|--no-ban] [--notify-email A] [--log-level L] [--expert]Erkennt die Dienste, schreibt Config, Auto-Whitelist und Install-ID, installiert und aktiviert die Units und prüft den Key. Der Key kommt aus der Umgebung; --key funktioniert weiter und warnt, dass sein Wert in der Prozessliste steht. Überschreibt eine bestehende Config nie. Nur als root. --expert fragt zusätzlich nach der Eskalationsleiter, den Schwellen, den Limits und einem SMTP-Server.0, 2 bei abgelehntem Key, bevor etwas geschrieben ist, oder bei einem Config-Problem, 1 wenn die Key-Prüfung nach der Installation scheitert
syncEin Feed-Durchlauf: Whitelist-Set neu bauen, jede Liste bedingt abrufen, tauschen, was die Größenprüfung bestanden hat, Kette neu bauen, fehlende lokale Sperren wiederherstellen, aufräumen, alle sechs Stunden nach einem Update sehen. Das führt der Timer aus, und das läuft beim Boot.0, 1 eingeschränkt, ebenfalls 0, wenn ein anderer Sync das Lock hält
watchDer Daemon. Liest jede Quelle mit, zählt, meldet und sperrt, wenn das eingeschaltet ist. Endet bei SIGTERM.1, wenn das Queue-Lock nach einer Minute noch gehalten wird oder der Daemon mit einem Fehler endet, 2 bei einem Config-Problem
report-queueSchickt die wartenden Reports einmal. Nützlich nach einem API-Ausfall oder auf einem Host, auf dem der Daemon nicht läuft.0, 1 eingeschränkt
statusVersion, Backend, Modus, Werkzeuge, Anzahl und letzter Erfolg pro Liste, Whitelist, Kettenprüfung, Lesepositionen und Treffer pro Quelle, Queue und Sender, Konto und Lizenz, die Gruppe dieses Keys, die Reputation der Adresse, von der dieser Host meldet, Platte, lokale Sperren, offene Zustände.0 gesund, 1 eingeschränkt, 2 Config
doctorWas der Host bietet und was fehlt, darunter ein Log, das dieser Host schreibt und das keine Quelle liest. Ändert nichts, funktioniert ohne Config.0, 1 mit Einschränkungen, 2 nicht lauffähig
test <file>... [--type T] [--rule ID] [--lines]Lässt die Detektoren über echte Logdateien laufen. Meldet nichts, sperrt nichts, schreibt nichts. --rule lässt eine einzelne Regel aus einer Regeldatei allein laufen.0, 2 bei einem Datei- oder Typproblem
ban list [--json|--plain] | add <ip> [minutes] | rm <ip>Zeigt die lokalen Sperren gegen das, was der Kernel wirklich hält, setzt eine von Hand, hebt eine auf. --json gibt die Liste als ein Dokument aus, --plain nur die wirksamen Adressen, eine je Zeile, für einen Proxy oder ein Skript.0, 1 bei einem Kernel-Fehler, mit --json und --plain dann ohne Liste, 2 bei falschem Argument oder solange ein Sync das Lock hält; add auch bei einer Adresse auf der Whitelist oder ohne Firewall-Backend
unban <ip>Dasselbe wie ban rm, unter dem Wort, das ein Operator tippt, wenn es brennt.wie oben
whitelist add <ip|cidr> [comment] | list | rm <ip|cidr> [--auto]Pflegt die Nie-blocken-nie-melden-Liste. add schreibt Datei und Kernel-Set auf einmal. list gibt Ihre Datei, die Auto-Whitelist und die Whitelist Ihrer Gruppe aus, Letztere auf Zeilen mit group: samt Notiz. --auto entfernt einen Eintrag, den der Installer geschrieben hat.0, 1 wenn die Datei geändert wurde und das Set nicht, 2 bei einer falschen Adresse oder solange ein Sync das Lock hält
update [--check]Prüft den Verteilpunkt, ersetzt diese Binärdatei und startet danach den Watch-Dienst neu. --check berichtet nur. Das ist der eine Befehl, der die Config locker liest, er funktioniert also auch auf einem Host, dessen Config neuer ist als seine Binärdatei.0, 1 wenn die Prüfung oder die Installation scheiterte, 2 wenn die Config nicht lesbar ist oder das State-Verzeichnis nicht angelegt werden kann
housekeepingEntfernt die eigenen Überreste des Agenten und gibt die Zahlen aus. Der Sync-Lauf macht dasselbe still.0, 2 bei einem Config- oder Zustandsproblem
rules list | show <id> | check [file...] | export <id> | status | enable <id> | disable <id> | simulate <id>Die Erkennungsregeln: die gelieferten und die Dateien unter /etc/reportedip-agent/rules.d, die sie überschreiben oder ergänzen. check prüft eine Datei, bevor sie live geht, export gibt eine Regel als Vorlage aus, status zeigt dazu die Treffer und welche Regeln jung sind, enable und disable schalten eine Regel ein oder aus, simulate lässt eine Regel weiter melden und macht aus ihren Sperren Warnungen im Log, bis enable das beendet.0, 1 wenn eine Datei übersprungen wurde oder die Betreiberregeln nicht genutzt werden, 2 bei falschem Argument oder wenn check ein Problem findet
versionGibt die Version aus und sonst nichts.0
helpDie Befehlsliste, mit den Pfaden für Config und Zustand.0

test, statt fail2ban-regex

test lässt die Detektorkette über eine Logdatei laufen, die Sie schon haben, mit den Schwellwerten und der Whitelist dieses Hosts, und gibt aus, welche Adressen einen Schwellwert überschritten hätten und an welcher Stelle der Datei. Es meldet nichts, blockt nichts und schreibt nichts, es ist also auf einem Produktionshost gefahrlos und die ehrliche Antwort auf die Frage, ob das den Angriff von letzter Woche erwischt hätte.

bash
# A configured source: the type is taken from the config
reportedip-agent test /var/log/auth.log

# Any other file: name the type yourself
reportedip-agent test --type postfix /var/log/mail.log.1

# A rotated log and its successor as one stream, in this order,
# so a window that spans the rotation counts like the daemon saw it.
# A .gz is read inflated.
reportedip-agent test /var/log/mail.log.2.gz /var/log/mail.log.1 /var/log/mail.log

# Every single hit, with line number, address and timestamp
reportedip-agent test --lines /var/log/auth.log

Die Zusammenfassungszeile nennt die gelesenen Zeilen, wie viele passten, wie viele ein Ignore-Muster verworfen hat, wie viele keinen brauchbaren Zeitstempel trugen und wie viele als überlang übersprungen wurden. Danach eine Zeile pro Adresse mit ihren Treffern, ihren Zurücksetzungen, ob sie gesperrt worden wäre und wie oft, dem Zeitpunkt des ersten Treffers und dem angewendeten Schwellwert. Eine Adresse auf Ihrer Whitelist wird mit der Schicht gezeigt, die gegriffen hat, und als nie gesperrt und nie gemeldet markiert. Das macht diesen Befehl zum schnellsten Weg, einen Whitelist-Eintrag tatsächlich nachzuweisen.

Zwei Dinge macht test nicht. Es rät kein Format: ohne --type muss die Datei einer der konfigurierten Quellpfade sein, sonst sagt es das und zählt die gültigen Typen auf. Und es wendet die Gewichtung aus der Bann-Historie nicht an, der Daemon braucht für eine Adresse mit früheren Sperren also weniger Treffer, als diese Wiederholung vermuten lässt.

Betrieb

Drei systemd-Units, von install geschrieben und aktiviert und von jedem Sync auf den Stand der laufenden Version gebracht. Eigene Änderungen gehören in ein Drop-in unter /etc/systemd/system/<unit>.d/, dort überleben sie ein Update. Eine Unit, die Sie direkt bearbeitet haben, wird ersetzt, die vorherige Fassung bleibt als <unit>.bak daneben liegen, und das Journal nennt beide.

UnitWann sie läuftDetails
reportedip-agent-sync.timerAlle 15 Minuten, plus ein fester zufälliger Versatz von bis zu 2 MinutenEr muss so schnell feuern, wie die schnellste Lizenz es verlangen kann, denn er ist das Einzige, was einen Sync startet. Wie viele dieser Läufe wirklich abrufen, entscheidet die Lizenz, und ein Lauf, der für seinen Tarif zu früh kommt, holt nichts.
reportedip-agent-sync.serviceBeim Systemstart und bei jedem Timer-TickFür multi-user.target aktiviert, nach network-online.target und nach jedem Firewall-Dienst, ohne Zufallsverzögerung. Ein Sync-Durchlauf: Whitelist-Set, die sechs Listen, die Kette, das Wiederherstellen fehlender lokaler Sperren, die Housekeeping-Arbeit und alle sechs Stunden eine Update-Prüfung.
reportedip-agent.serviceDauerhaftDer Watch-Daemon. Startet nach einem Fehler nach zehn Sekunden neu, höchstens fünfmal in fünf Minuten, und nie bei Exit-Code 2. Ein falsch konfigurierter Host bleibt also mit einem lesbaren Grund stehen, statt endlos neu gestartet zu werden.

Beide Dienste laufen mit NoNewPrivileges, ProtectHome, PrivateTmp, gesperrter Personality und einem eingeschränkten Satz an Adressfamilien.

Was von selbst läuftWie oftWas es tut
Log-RotationBei jedem SchreibenDer Agent rotiert log_file bei log_max_mb und behält log_keep Generationen. Er braucht logrotate nicht. Jede Zeile geht außerdem nach stderr und damit ins Journal der Unit.
housekeepingIn jedem SyncAlte Queue-Dateien, abgelaufene Dedup-Einträge, veraltete Lesepositionen, übrige Temporär- und Lock-Dateien, abgelaufene Bann-Datensätze, überzählige Generationen des eigenen Logs, Dateien im Spiegel der gelieferten Regeln, die das Binary nicht mehr enthält, und das vorherige Binary, sobald es einen Monat alt ist. Von Hand aufgerufen zeigt es die Zahlen.
Selbst-UpdateAlle sechs StundenEin neues Release wird vor der Installation gegen eine Ed25519-Signatur mit dem im Binary eingebauten Public Key geprüft, eine manipulierte Datei scheitert also auf Ihrer Maschine, statt dass ihr vertraut wird, nur weil sie über HTTPS kam. Scheitert der Tausch, kommt die laufende Binärdatei zurück, ein abgebrochenes Update lässt den Host also auf der Version, die er hatte.
ZustandsmailPro Zustand, mit notify.cooldown_hoursEine Mail, wenn etwas nicht stimmt, eine, wenn es behoben ist. Ab Pro kann sie über das Relay von reportedip.com gehen.
Die PlattengrenzeBei jedem Queue-SchreibenUnter disk_min_mb reiht der Agent keine neuen Reports ein und sagt das, während Erkennung und Blocken weiterlaufen.
bash
systemctl list-timers reportedip-agent-sync.timer
systemctl status reportedip-agent.service --no-pager
journalctl -u reportedip-agent.service -n 50 --no-pager
journalctl -u reportedip-agent-sync.service -n 50 --no-pager
tail -n 100 /var/log/reportedip-agent.log

Exit-Codes

CodeBedeutungWas zu tun ist
0GesundNichts.
1Eingeschränkt, aber es wird wieder versuchtDie Ausgabe lesen. Ein weiterer Versuch kann das durchaus beheben. Ein offener Fehlerzustand im Gesundheitsstand färbt den Exit-Code auch dann, wenn der Lauf selbst durchging, denn ein Exit 0 neben einem erfassten Fehler ist kein Signal für ein Monitoring. Bei status ist ein gestoppter watch-Daemon einer dieser Gründe.
2Ohne Menschen nicht wiederholbarDie Config, die Dateirechte, ein fehlendes Werkzeug, ein Lock in einem anderen Prozess. doctor ausführen. systemd startet den Watch-Dienst bei einer 2 nicht neu.

Damit ist reportedip-agent status direkt als Monitoring-Prüfung verwendbar, ohne Wrapper-Skript und ohne Ausgabe zu parsen. status --json gibt dasselbe Ergebnis als JSON-Dokument aus; die Einrichtung für Zabbix, Nagios, Icinga, Checkmk und Prometheus steht unter Monitoring.

Die Reputation der eigenen Adresse dieses Hosts

Der Sync-Lauf fragt den Server mindestens einmal am Tag, und bei offenem Zustand in jedem Lauf, was er von der Adresse hält, von der dieser Host meldet. Steht diese Adresse selbst in der Community-Datenbank, warnt status und endet mit Exit 1. Ab einer Confidence von 75 ist zusätzlich der Zustand reputation offen, mit der Confidence, der Anzahl der Reports und dem Link auf die Delisting-Seite im Text. Es ist eine Warnung und kein Fehler, denn eine gelistete Adresse ist eine Aussage über das Netz, in dem der Host steht, und nicht zwingend über den Host: eine geteilte Adresse, ein Carrier-NAT oder ein Nachbar hinter demselben Proxy können sie dorthin bringen. Einen Blick ist es trotzdem wert, denn ein Host, der von einer gelisteten Adresse meldet, sieht von außen so aus wie ein übernommener Host. Prüfen Sie, was die Maschine verlässt, beantragen Sie das Delisting, sobald sie sauber ist, und der Zustand verschwindet mit dem nächsten Sync nach dem Delisting; auf dem Host ist nichts zurückzusetzen. Unter 75 entsteht kein Zustand: eine Handvoll alter Reports ist ehrliche Datenlage und nichts, worauf ein Betreiber reagieren kann, und kein Feed liefert eine Adresse mit diesem Wert aus.

Bot-Fluten: was der Agent tut und was nicht

Eine Seite, die mit 200 beantwortet wird, ist nie ein Angriff. Eine Flut von Tausenden Adressen, die je ein- oder zweimal eine gewöhnliche Seite abrufen, ist Last, und eine Regel, die je Adresse zählt, sieht von jeder eine Anfrage und nichts, worauf sie reagieren könnte. Der Agent sperrt einen solchen Schwarm nicht und soll es auch nicht, denn dieselben Zeilen kommen von echten Besuchern. Er tut stattdessen zweierlei: Er sagt Ihnen, dass eine Website geflutet wird, und er zählt das eine Muster in der Flut, das Besucher nicht erzeugen. Der Rest gehört in den Webserver. Der Fachartikel zu Bot-Fluten geht einen Praxisfall mit gemessenen Zahlen durch.

Der Volumen-Alarm

Der Daemon zählt jede Zeile jedes Logs, das er liest, und führt für jedes eine Baseline der Zeilen je Stunde: in der ersten Woche einen laufenden Mittelwert über die vollen Stunden, danach ein Mittel mit einer Woche Gedächtnis. Liest die laufende Stunde eines Web-Logs, also einer der Quellen web und web-error, mindestens das Achtfache seiner Baseline und mindestens 20.000 Zeilen, öffnet sich der Zustand volume als Warnung. Sein Text nennt die lauteste Website, den Namen des Verzeichnisses, in dem das Log liegt, meist den virtuellen Host, und reportedip-agent status zeigt jedes laute Log. Der Zustand schließt sich nach einer vollen ruhigen Stunde.

Seit 0.3.52 sagt der Alarm auch, wer die Flut verursacht. Solange ein Log laut ist, zählt der Daemon dessen Clients, bis zu 20.000 Adressen, und ergänzt den Text um eine Einschätzung: ein Client hat die meisten Zeilen erzeugt, und ob eine Regel ihn zählt; wenige Clients haben die meisten erzeugt; oder die Zeilen verteilen sich auf viele Clients, dann passt eine Regel besser als Sperren. Die Mail enthält nur diese Einschätzung, nie eine Adresse. reportedip-agent status nennt unter dem Log die fünf lautesten Clients mit ihrem Anteil und ruled=, der Zahl ihrer Zeilen, die eine Regel gezählt hat. ruled=0 heißt, dass keine Regel sie zählt, und reportedip-agent ban add <address> sperrt einen davon. Die Liste bleibt nach der Flut stehen, bis die nächste beginnt. Die Entwarnungsmail wiederholt den letzten Stand des Alarms mit Beginn, Ende und Dauer.

Vor 24 vollen Stunden Baseline alarmiert nichts, eine frische Installation bleibt am ersten Tag also still. Der Alarm sperrt nichts und meldet nichts: Er macht die Flut sichtbar, und was dagegen zu tun ist, entscheiden Sie. Eine Flut, die über mehr als eine Woche langsam wächst, hebt die Baseline mit, der Faktor fängt also Sprünge und keine Rampen. Zwei Schlüssel in config.yaml setzen die Grenzen; unter Monitoring steht, wo laufende Stunde und Baseline in status erscheinen.

yaml
volume_factor: 8          # times the usual hour; 0 switches the alarm off, otherwise 2 to 1000
volume_min_lines: 20000   # lines in the running hour, at least; 0 to 100000000

Die Regel web-query-crawl

Das Muster, das Besucher nicht erzeugen: GET-Anfragen mit Query-String, beantwortet mit 200, ohne eigenen Referer (leer oder eine Suchmaschine wie Google oder Bing), 20 davon in 60 Minuten von einer Adresse. So sieht ein Client aus, der Kalenderfilter, Anhang-IDs oder facettierte Listen abgrast. Die Regel ignoriert statische Assets, Pfade unter /wp-json/ und /wp-admin/, wp-cron, die gewöhnlichen Query-Schlüssel von WordPress, WooCommerce und Tracking (p, s, wc-ajax, utm_*, fbclid, gclid und ähnliche) und jede Zeile, deren User-Agent einen Crawler erklärt (bot, crawler, spider, GPTBot, Ahrefs, Semrush und andere). Sie zählt nur Clients, deren User-Agent mit Mozilla/ beginnt, was jeder Browser und jeder getarnte Crawler schickt, ein Werkzeug oder Crawler mit eigenem Namen wird also nie gezählt; die Namensliste deckt die Crawler ab, die ebenfalls mit Mozilla/ beginnen, etwa Googlebot.

Seit 0.3.50 lässt sie außerdem weg, was eine Messung über eine Woche und 36 Server unter ihren Treffern fand, jeweils nach Form und nicht nach Namen: einen User-Agent, der sich als (compatible; Name) nennt, einen Zusatz in der Browser-Klammer trägt (like Gecko; Name) oder eine Kontaktadresse; Links aus einer Mail wie Newsletter-Ansichten und Öffnungs- oder Klick-Tracking (noti, fluentcrm, mailpoet_*, mc_cid); Cache-Buster, also eine Zahl unter einem kurzen Schlüssel wie cb, nc, nocache oder *_check; einen Schalter ohne Wert als ersten Parameter wie ?start_customizing; und wp-cron hinter einem doppelten Schrägstrich.

Ein Crawler, der sagt, wer er ist, wird von dieser Regel nicht gesperrt. Er kann ein SEO-Dienst sein, den der Betreiber der Website gebucht hat, und bremsen lässt er sich im Webserver oder über robots.txt. Deshalb gibt es auch keine Allowlist von User-Agents, die Sie pflegen müssten: Die Regel zählt nur Clients, die sich als Browser ausgeben. Ein gefälschter Crawler-Name entkommt ihr mit Absicht; die Scanner- und Login-Regeln zählen einen solchen Client weiter. Die Regel meldet nichts, denn ein Crawl ist ein Ärgernis und keine Community-Daten.

Sie wird simuliert ausgeliefert: Sie schreibt eine Warnung simulated ban ins Log und sperrt nichts. Schalten Sie sie ab oder stellen Sie sie mit einer Überschreibungsdatei scharf. simulate betrifft nur das Verhalten, das Scharfstellen startet also keinen Beobachtungstag; der Daemon übernimmt die Datei innerhalb einer Minute.

bash
# What the rule would have banned so far
journalctl -u reportedip-agent | grep "simulated ban"

# Switch it off
reportedip-agent rules disable web-query-crawl

# Arm it: real bans instead of simulated ones
cat > /etc/reportedip-agent/rules.d/50-web-query-crawl.yaml <<EOF
format: 1
rules:
  - id: web-query-crawl
    action: {simulate: false}
EOF
reportedip-agent rules check

Im Webserver

Alles, was Last begrenzt, egal wer sie schickt, gehört in den Webserver. Vier Maßnahmen, gezeigt für nginx; Pfad, Domain und Zahlen passen Sie an Ihre Website an.

  • Eine limit_req-Zone mit festem Schlüssel für den Filterpfad. Eine Zone je Adresse bewirkt nichts gegen Tausende Adressen mit je einer Anfrage. Eine Zone mit dem Schlüssel $server_name begrenzt, wie viele Anfragen je Sekunde auf diesem Pfad PHP erreichen, egal wie viele Adressen sie schicken.
  • Ein FastCGI-Cache mit dem Query-String im Schlüssel. Mit $request_uri in fastcgi_cache_key wird ein wiederholter Filteraufruf ohne PHP beantwortet. Weniger Filterkombinationen helfen ihm: rel="nofollow" an Filterlinks und der Filterpfad in robots.txt.
  • Eine 429 für Anfragen ohne den eigenen Referer der Website, als Notbremse. Sie hält, bis der Bot den Referer fälscht.
  • Eine Präfixsperre gemieteter Netze, nach einer whois-Prüfung. Ein Block eines Hosting-Anbieters darf als Ganzes weg. Bei einem Endkundenprovider geht das nicht, denn ein Präfix trägt dort viele Kunden hinter Carrier-NAT.
nginx
# http {}
limit_req_zone $server_name zone=filter_all:1m rate=10r/s;

map $http_referer $own_referer {
    default 0;
    "~^https://(www\.)?example\.org/" 1;
}

# server {}
location ^~ /events/ {
    limit_req zone=filter_all burst=20;
    limit_req_status 429;
    if ($own_referer = 0) { return 429; }   # emergency brake, only while it holds
    try_files $uri $uri/ /index.php?$args;
}

# server {}, only after whois names a hosting provider
deny 198.51.100.0/24;

Problembehebung

Ein Symptom, eine wahrscheinliche Ursache, ein Befehl. reportedip-agent doctor und reportedip-agent status beantworten gemeinsam die meisten dieser Fälle, und es sind die zwei Dinge, nach denen der Support zuerst fragt.

SymptomUrsacheBefehl
Startet nicht und nennt seine Config-DateiDie Datei ist für Gruppe oder andere lesbar, und sie enthält Ihren API-Key.chmod 0600 /etc/reportedip-agent/config.yaml && chown root:root /etc/reportedip-agent/config.yaml
Exit 2 mit „field ... not found in type“Ein unbekannter Schlüssel in der Config. Der Parser ist absichtlich streng.Den genannten Schlüssel entfernen oder korrigieren. Die Liste der gültigen Schlüssel steht oben.
Jeder Befehl endet nach einem Rollback mit Exit 2Die Binärdatei ist älter als die Config und kann einen neueren Block nicht lesen.reportedip-agent update, der eine Befehl, der die Datei locker liest und die unbekannten Schlüssel nennt.
Ein älteres Binary endet mit Exit 2 auf einer Config mit notify.relayDieser Schlüssel ist neuer als das Binary. Dieselbe Klasse Falle wie die Zeile darüber, und sie hat schon zweimal Hosts ungeschützt gelassen.Die Zeile relay: aus dem notify-Block entfernen, oder vorwärts statt zurück: reportedip-agent update.
Die Sets existieren, sind aber leerEntweder wurde der Feed abgelehnt oder die Liste ist an der Größenprüfung gescheitert.reportedip-agent status sagt, welches von beidem, und die Zeile der Liste trägt den letzten Fehler.
status sagt unlicensedDas Konto hat für diesen Host keine Lizenz frei.Eine unter Agent Servers hinzufügen. Die Liste im Kernel arbeitet in der Zwischenzeit weiter.
Es wird nie etwas gemeldetDie Quelle, die gegriffen hätte, wurde nie erkannt, oder ihr Schwellwert wird nicht erreicht.reportedip-agent test /path/to/log, dann reportedip-agent status und den Abschnitt sources lesen.
Es wird nie etwas geblockt, obwohl Reports rausgehenban.enabled wurde auf false gesetzt, oder mode auf log (ab Werk blocken beide). Zwei Schalter.reportedip-agent ban list sagt in seinen letzten Zeilen, welches von beidem.
Gar kein Quellzustand vorhandenDer Watch-Daemon ist nie gelaufen.systemctl enable --now reportedip-agent.service
Eine Quelle zeigt files=0Der Pfad oder Glob löst auf diesem Host auf nichts auf.reportedip-agent doctor nennt die Quelle und das versuchte Muster.
Ein Dienst, der nach dem Agenten installiert wurde, meldet nichtsErkannt wird einmal, zur Installationszeit, und das ist Absicht: ein Dienst, der für eine Wartung gestoppt ist, darf eine Quelle nie abschalten. In der Gegenrichtung passiert von allein genauso wenig, ein Mailserver, der auf einem Host dazukommt, der vorher keinen hatte, wird also nicht aufgenommen.reportedip-agent doctor nennt das Log, das dieser Dienst schreibt, sagt, dass keine Quelle es liest, und steigt mit 1 aus. Tragen Sie die Quelle in config.yaml nach und starten Sie den Watch-Dienst neu.
Eine Log-Quelle gilt als unlesbarDie Datei ist auch für root nicht lesbar. Meist ein Control Panel, das bei der Rotation Modus 000 setzt.ls -l auf den Pfad, und die Rotation korrigieren, die das erzeugt hat.
Eine Quelle hat Treffer, meldet aber nieIhre Logzeitstempel sind mehr als eine Minute von der Systemuhr entfernt, das Zählfenster füllt sich also nie.reportedip-agent doctor, die Drift-Zeilen unter sources. Die Zeitzone dieses Logs korrigieren.
Ihre eigene Adresse wurde gesperrtSie stand nicht auf der Whitelist.reportedip-agent whitelist add <address>. Sofort wirksam, denn die Whitelist-Regel steht vor der Blockregel.
Eine Sperre steht in bans.json, aber nicht im KernelEin Reboot ohne Sync, oder ein Firewall-Reload, der das Set mitgenommen hat.reportedip-agent sync stellt sie mit der Restzeit wieder her.
Ein Kernel-Eintrag mit Datensatz noneJemand hat mit ipset oder nft von Hand gesperrt, oder der Speicher ist verloren. Er läuft ab, aber kein Reboot bringt ihn zurück.reportedip-agent ban list
Ein Set existiert mit falschem Typ oder ohne TimeoutEin Überrest des dokumentierten Shell-Skripts oder eines anderen Werkzeugs.ipset destroy <set> und danach reportedip-agent sync, das es korrekt neu anlegt.
Beide Werkzeugketten haben rip--ObjekteDas Backend wurde ohne Migration gewechselt.reportedip-agent sync --migrate-backend, und status gibt die genauen Entfernungsbefehle für die andere Seite aus.
Die Firewall ist nach einem Reboot wegEin gespeichertes Ruleset verweist auf ein rip--Set, und iptables-restore verwirft bei einem unbekannten Set die ganze Datei.grep -n rip- /etc/iptables/rules.v4 /etc/iptables/rules.v6 und diese Zeilen entfernen. Der Agent braucht nichts Gespeichertes.
Eine entfernte Quelle wird weiter gelesenEin systemctl restart reicht für eine entfernte Quelle nicht.systemctl stop reportedip-agent.service && systemctl start reportedip-agent.service
Reports hören auf, die Erkennung läuft weiterDie Plattengrenze wurde erreicht.Platz freimachen, dann reportedip-agent housekeeping.
HTTP 429 bei ReportsDas Tageslimit für Reports Ihres Tarifs.Die Limits stehen unter Authentifizierung.
Die Queue wächst immer weiterDer Sender ist nach einem Fehler pausiert, mit einem Backoff.reportedip-agent status zeigt die Pause und den Grund; läuft der Daemon, sendet er selbst, und reportedip-agent report-queue sendet nur, wenn der Daemon nicht läuft.
Eine Lastflut, die der Agent nicht sperrtViele Adressen mit je wenigen gewöhnlichen Anfragen, beantwortet mit 200. Ein Schwarm mit einer Anfrage je Adresse bleibt unter jeder Regel, die je Adresse zählt, mit Absicht.Begrenzen Sie sie im Webserver mit limit_req, einem Cache oder einer 429-Bremse. Die Anleitung zur Bot-Flut zeigt die Maßnahmen mit gemessenen Zahlen.
Jeder Web-Treffer ist dieselbe Handvoll Adressennginx sieht einen Proxy oder Cloudflare und nicht den Besucher.set_real_ip_from konfigurieren. reportedip-agent install warnt genau vor diesem Fall.
„more addresses than the counter tracks at once“Ein Scan, der breiter ist als der Zähler pro Quelle. Kein Fehler.Nichts. Ein so breiter Scan ist ein Fall für die Community-Liste und nicht für lokale Sperren.
status sagt, der Host sei bei den Versionen zurückDas automatische Update kommt nicht durch, oder auto_update ist aus.reportedip-agent update --check, dann reportedip-agent update.
status sagt group=noneDer Key dieses Hosts ist in keiner Gruppe. Kein Fehler: das Set rip-group bleibt leer.Legen Sie unter Groups in Ihrem Konto eine Gruppe an und hängen Sie die Keys der Hosts hinein; der nächste Sync füllt das Set.
status warnt vor der Reputation der Adresse dieses HostsDie Adresse, von der dieser Host meldet, steht in der Community-Datenbank.Prüfen, was die Maschine verlässt, dann das Delisting beantragen. Der Zustand verschwindet mit dem nächsten Sync danach.
Keine rip-scan:-Zeilen im Kernel-LogKeine Quelle scan in der Config, oder der Sync, der die Regel baut, lief seit dem Nachtragen nicht.- type: scan unter sources eintragen, den Watch-Dienst neu starten, dann reportedip-agent sync. Adressen auf der Whitelist und bereits verworfene Adressen erzeugen nie eine Zeile.

Zuletzt aktualisiert: · Betreut vom ReportedIP-Team

Security Focused
DSGVO-konform
Made in Germany
Zurück zur Doku