Markus Michalski FAQ

Server Tools: Firewall, Fail2Ban, Logs und Status

Systemnahe Befehle von Server Tools: UFW-Firewall (Status, Ports erlauben und sperren), Fail2Ban (Jails, gesperrte IPs, entbannen), Log-Viewer mit Suche und das System-Status-Dashboard.

English Version

Zurück zur Übersicht


Firewall, Fail2Ban, Logs und Status

Firewall (UFW)

Alias: fw. Voraussetzung ist ufw. Ohne das Paket melden die Befehle UFW is not installed.

server-tools firewall status
server-tools firewall allow --port 443 --proto tcp
server-tools firewall deny --port 8080
Befehl Wirkung
status Gibt ufw status verbose aus
allow --port <n> [--proto tcp\|udp] ufw allow <n>/<proto>, ohne --proto ufw allow <n> (TCP und UDP)
deny --port <n> [--proto tcp\|udp] ufw deny <n>/<proto> bzw. ufw deny <n>

Der Port muss eine Zahl von 1 bis 65535 sein. Jede Änderung landet im Audit-Log.

Im Menü "Firewall Management" gibt es zusätzlich:

Fail2Ban

Alias: f2b. Voraussetzung ist fail2ban-client.

server-tools fail2ban status
server-tools fail2ban banned
server-tools fail2ban unban --ip 203.0.113.10
Befehl Wirkung
status Alle aktiven Jails mit aktuell und insgesamt gesperrten IPs
banned Gesperrte IPs, nach Jail gruppiert
unban --ip <ipv4> Sucht die IP in allen Jails, fragt Unban IP '<ip>' from all jails? und entbannt sie überall, wo sie gesperrt ist

Für unban muss die IP eine gültige IPv4-Adresse sein. Ist sie in keinem Jail gesperrt, endet der Befehl mit einem Fehler.

Logs

Alias: log.

server-tools logs webserver --domain example.com --lines 100
server-tools logs webserver-errors --domain example.com
server-tools logs mysql --lines 20
server-tools logs audit --filter "Created database"
server-tools logs search --pattern "timeout" --domain example.com
Aktion Quelle
webserver (Alias apache) Zugriffslog des Webservers, mit --errors das Fehlerlog
webserver-errors (Alias apache-errors) Fehlerlog des Webservers
mysql ST_MYSQL_LOG_FILE
audit ST_AUDIT_LOG, mit --filter nur passende Zeilen
search Siehe unten

Optionen:

Welche Datei gelesen wird:

Ohne --domain Mit --domain
<Log-Verzeichnis>/access.log bzw. error.log, das Verzeichnis ist ST_APACHE_LOG_DIR oder ST_NGINX_LOG_DIR je nach ST_WEBSERVER /var/www/<domain>/logs/access.log bzw. error.log, sonst <Log-Verzeichnis>/<domain>-access.log bzw. <domain>-error.log

logs search durchsucht ohne --domain das globale Webserver-Fehlerlog, das MySQL-Log und das Audit-Log, mit --domain das Fehler- und das Zugriffslog der Domain. Das Muster ist ein regulärer Ausdruck ohne Beachtung der Groß- und Kleinschreibung. Je Datei erscheinen die letzten --lines Treffer. logs audit --filter arbeitet genauso.

Audit-Log

Jede ändernde Aktion schreibt eine Zeile nach ST_AUDIT_LOG (Rechte 600), sofern ST_AUDIT_LOGGING=true:

[2026-01-15 10:30:00] [INFO] user=root action=Created database: shop_db with user: shop_user

user ist der Wert von SUDO_USER, sonst der aktuelle User. Zeilenumbrüche in der Aktion werden entfernt. In der Praxis kommen die Stufen INFO und ERROR vor.

Status

server-tools status

Der Befehl braucht keine Optionen und funktioniert auch ohne Terminal (SSH-Aufruf, Cron). Er zeigt:

  1. Service Status: den Webserver-Service (apache2 oder nginx), mysql und alle php<Version>-fpm-Services der Versionen aus ST_PHP_VERSIONS_TO_SCAN, die installiert sind. Mögliche Werte sind running, stopped, not installed und unknown (no systemd).
  2. System Resources: Betriebssystem, Hostname, Load, Speicher (free -h) und Datenträger (df -h).
  3. Software Versions: Webserver, MySQL und die PHP-Versionen mit FPM-Socket.
  4. Configuration: die Ausgabe von --config.
  5. Backups: Inhalt von ST_BACKUP_DIR und die Aufbewahrungsfrist.

Das Beispiel zeigt das Format des ersten Blocks, die Werte hängen vom Server ab:

=== Service Status ===

  apache2              running
  mysql                running
  php8.3-fpm           running

Weiter