Funktionsweise
Auf dieser Seite
Argus ist eine Batch-Pipeline, kein Dienst. Ein Cron-Job führt einen Sammler für jede Quelle aus, die Sammler hängen Anzahlen an reine Textdateien an, und ein zweiter Job zeichnet die Diagramme mit gnuplot. Kein Prozess von Argus bleibt zwischen zwei Nächten laufen.
Sammlung
Die Sammler sind getrennte Skripte, eines pro Quelle, sodass der Ausfall eines Sammlers die anderen nicht stoppt:
collect-ssh.shliestauth.logoder journald und zählt SSH-Angriffe;collect-fail2ban.shliest die Sperren jedes Fail2Ban-Jails, wenn Fail2Ban installiert ist;collect-crowdsec.shliest die Warnungen jedes CrowdSec-Szenarios, wenn CrowdSec installiert ist.
/etc/cron.d/argus startet die Sammlung um 00:05. Eine Quelladresse wird zu einem Angriff, wenn sie an einem Tag ARGUS_SSH_THRESHOLD fehlgeschlagene Versuche erreicht, standardmäßig 5. Die Anzahl wird behalten; die Adresse nicht.
Reine Textdateien
Die Sammler schreiben $ARGUS_DATA_DIR/<year>/<series>_<year>.txt, standardmäßig unter /srv/argus/. Jede Zeile enthält eine Anzahl und eine Stundenscheibe, <count> <YYYY-MM-DDTHH>. Es gibt keine Datenbank und keinen Index zum Neuaufbau: Eine Datei kann mit einem Textwerkzeug gelesen, kopiert oder verglichen werden.
Eine Serie ist der Dateiname ohne das Jahr, also ist ssh_direct_2026.txt die Serie ssh_direct. Eine Datei pro Quelle und pro Jahr hält den Verlauf lesbar, nachdem sich ein Sammler ändert.
Rendern
Der Diagramm-Job startet um 00:15 und ruft chart-daily.sh auf, das die Tagessummen aus den reinen Textdateien neu aufbaut und das Bild des Jahres zeichnet. Die Ansichten period und hourly werden auf Anfrage mit argus-chart aus denselben Dateien gezeichnet. Das Zeichnen erledigt gnuplot, und jedes Bild landet in <data directory>/<year>/images/.
Um 00:20 prüft argus-doctor.sh, ob jeder Sammler am Vortag lief. Jeder Sammler schreibt jeden Tag eine Lebenszeichenzeile, auch wenn er null Ereignisse gezählt hat, damit ein ruhiger Tag und ein angehaltener Sammler unterschieden werden können.
Kein Daemon
Argus bietet keinen Dienst und keine Weboberfläche an und hält keinen Prozess am Leben. Ein Server mit 1 GB RAM genügt, und eine Nacht ohne Sammlung lässt die vorherigen Dateien unberührt. Die Diagramme werden dort gelesen, wohin sie kopiert werden, auf dem Arbeitsplatzrechner, mit einem beliebigen Bildbetrachter.
Die Skripte, die Einstellungen und der Dateiaufbau sind im Repository beschrieben: README, Installationsleitfaden.