In der Firewall: gemeldete Angreifer blocken
Die Attack-Intelligence-Liste direkt auf Routern und Border-Firewalls blocken - ohne fail2ban: iptables, nftables, ufw, pf (BSD) und Windows Firewall, alle 5 Minuten synchronisiert.
So funktioniert das Firewall-Blocken
Auf der Firewall selbst wird kein fail2ban benötigt. Die Blockliste ist ein Text-Export - eine IP pro Zeile, nur soft- und hard-gelistete Angreifer:
https://reports.provider.tools/api/v1/abuse/export (alle Dienste)
https://reports.provider.tools/api/v1/abuse/export?service=ssh (einzelner Dienst)
Diese Liste holen Sie in einem Intervall ab (alle 5 Minuten, wie unser eigener Sync) und laden sie in Ihr Firewall-Regelwerk. Ausgetragene IPs stehen einfach nicht mehr in der Liste - das Set wird bei jedem Lauf neu aufgebaut.
Zuerst Whitelisten: eigene IPs (Büro, VPN, Monitoring) immer ausschließen, damit Sie sich nie selbst aussperren.
iptables + ipset (Linux)
Als /usr/local/sbin/pt-block-sync.sh speichern, dann chmod +x:
#!/usr/bin/env bash
set -e
IPLIST=$(mktemp)
curl -fsS https://reports.provider.tools/api/v1/abuse/export -o "$IPLIST"
ipset destroy provider-tools-block 2>/dev/null || true
ipset create provider-tools-block hash:ip hashsize 4096 maxelem 65536
while read -r ip; do
[ -n "$ip" ] && ipset add provider-tools-block "$ip" 2>/dev/null || true
done < "$IPLIST"
# Chain anlegen (einmalig) und Regel erzwingen
iptables -N PROVIDER_TOOLS_BLOCK 2>/dev/null || true
iptables -C INPUT -j PROVIDER_TOOLS_BLOCK 2>/dev/null || iptables -I INPUT -j PROVIDER_TOOLS_BLOCK
iptables -F PROVIDER_TOOLS_BLOCK
# Eigene IPs NIE blocken - hier Ihre Whitelist pflegen:
# iptables -A PROVIDER_TOOLS_BLOCK -s 203.0.113.0/24 -j RETURN
iptables -A PROVIDER_TOOLS_BLOCK -m set --match-set provider-tools-block src -j DROP
rm -f "$IPLIST"
Cron (alle 5 Minuten, passend zum Netzwerk-Sync):
*/5 * * * * root /usr/local/sbin/pt-block-sync.sh
nftables (Linux)
Als /usr/local/sbin/pt-block-sync-nft.sh speichern, dann chmod +x:
#!/usr/bin/env bash
set -e
nft flush set inet filter provider_tools_block 2>/dev/null || nft add set inet filter provider_tools_block '{ type ipv4_addr; flags interval; }'
nft add chain inet filter provider_tools_block '{ type filter hook input priority -1; }' 2>/dev/null || true
nft flush chain inet filter provider_tools_block
# Eigene IPs NIE blocken - hier Ihre Whitelist pflegen:
# nft add rule inet filter provider_tools_block ip saddr 203.0.113.0/24 accept
curl -fsS https://reports.provider.tools/api/v1/abuse/export | while read -r ip; do
[ -n "$ip" ] && nft add element inet filter provider_tools_block "{ $ip }" 2>/dev/null || true
done
nft add rule inet filter provider_tools_block ip saddr @provider_tools_block drop
Cron (alle 5 Minuten):
*/5 * * * * root /usr/local/sbin/pt-block-sync-nft.sh
ufw (Ubuntu/Debian)
ufw kennt keine Sets - der sauberste Weg ist das ipset + iptables-Script aus dem Abschnitt oben: ufw nutzt unter der Haube iptables, und ein Sprung in PROVIDER_TOOLS_BLOCK funktioniert neben ufw ohne Konflikte.
Alternativ jede IP direkt mit ufw blocken (langsamer bei großen Listen, für kleine Listen geeignet):
#!/usr/bin/env bash
set -e
# Vorherige Einträge entfernen
ufw status numbered | awk '/provider-tools/ {print $1}' | sed 's/[//;s/]//' | sort -rn | while read -r n; do
yes | ufw delete "$n" >/dev/null 2>&1 || true
done
curl -fsS https://reports.provider.tools/api/v1/abuse/export | while read -r ip; do
[ -n "$ip" ] && ufw deny from "$ip" comment 'provider-tools' >/dev/null 2>&1 || true
done
pf (FreeBSD / OpenBSD / macOS)
In /etc/pf.conf eine Tabelle definieren und die Liste hineinladen:
table <provider_tools> persist
block drop in quick from <provider_tools> to any
Sync-Script (z.B. /usr/local/sbin/pt-block-sync-pf.sh):
#!/bin/sh
set -e
TMP=$(mktemp)
curl -fsS https://reports.provider.tools/api/v1/abuse/export -o "$TMP"
# Eigene IPs NIE blocken - hier Ihre Whitelist pflegen (vor dem Reload löschen):
# sed -i '' '/^203.0.113./d' "$TMP"
pfctl -t provider_tools -T replace -f "$TMP"
rm -f "$TMP"
Cron (alle 5 Minuten):
*/5 * * * * root /usr/local/sbin/pt-block-sync-pf.sh
Windows Firewall
PowerShell-Script, als geplante Aufgabe alle 5 Minuten ausführen. Blockt die aktuelle Liste über eine einzige dynamische Firewall-Regel:
# pt-block-sync.ps1
$ErrorActionPreference = 'SilentlyContinue'
$ips = (Invoke-WebRequest -Uri 'https://reports.provider.tools/api/v1/abuse/export' -UseBasicParsing).Content -split '\n' | Where-Object { $_ -match '^\d+\.\d+\.\d+\.\d+$' }
Remove-NetFirewallRule -DisplayName 'provider-tools-block'
if ($ips.Count -gt 0) {
New-NetFirewallRule -DisplayName 'provider-tools-block' -Direction Inbound -Action Block -RemoteAddress $ips -Profile Any
}
Geplante Aufgabe:
schtasks /Create /TN "provider-tools-block" /TR "powershell -ExecutionPolicy Bypass -File C:scriptspt-block-sync.ps1" /SC MINUTE /MO 5 /RU SYSTEM
Eigene IPs in eine zweite Allow-Regel aufnehmen, die VOR dieser Regel verarbeitet wird - Windows verarbeitet Allow-Regeln standardmäßig zuerst.