Um Portscans automatisch zu blockieren eignet sich Crowdsec, welches hierfür einen eigene Collection für iptables besitzt.
Anscheinend wird die Collection nicht selbstständig installiert, weshalb ich es nachträglich mit
cscli collections install crowdsecurity/iptables
installieren musste.
Anschließend wird die Collection im Hub gelistet:
cscli hub list
INFO[29-10-2023 20:17:30] Loaded 105 collecs, 113 parsers, 196 scenarios, 7 post-overflow parsers
COLLECTIONS
──────────────────────────────────────────────────────────────────────────────────────────────────────────────
Name 📦 Status Version Local Path
──────────────────────────────────────────────────────────────────────────────────────────────────────────────
crowdsecurity/base-http-scenarios ✔️ enabled 0.6 /etc/crowdsec/collections/base-http-scenarios.yaml
crowdsecurity/http-cve ✔️ enabled 2.3 /etc/crowdsec/collections/http-cve.yaml
crowdsecurity/iptables ✔️ enabled 0.1 /etc/crowdsec/collections/iptables.yaml
crowdsecurity/linux ✔️ enabled 0.2 /etc/crowdsec/collections/linux.yaml
crowdsecurity/nginx ✔️ enabled 0.2 /etc/crowdsec/collections/nginx.yaml
crowdsecurity/sshd ✔️ enabled 0.2 /etc/crowdsec/collections/sshd.yaml
──────────────────────────────────────────────────────────────────────────────────────────────────────────────
Anschließend braucht es noch eine Iptables Regel, damit der Traffic auch geloggt wird.
iptables -A INPUT -m state --state NEW -j LOG
Achtung
Dadurch dass nun neue Verbindungen protokolliert werden, können die Logs sehr stark anwachsen und entsprechend den Speicher vollschreiben.
In Debian 12 werden die neuen Verbindungen standardmäßig in /var/log/syslog geschrieben.
Wenn nun der Server Ziel eines Portscan wird, wird dies bemerkt und entsprechend die IP des scannenden Systems temporär gesperrt.