Seit ein paar Tagen bin ich in irgend einer Liste für XML-RPC Brute Force Attacken gelandet und die müllen meine limitierten Apache Slots zu. Lösung:
#!/bin/bash
# script: block xmlrpc attacks
# author: Steffen Wirth <s.wirth@itbert.de>
LOGFILE="/var/log/apache2/access.log"
LASTLINES="20"
MAXCOUNT="5"
LIST=$(tail -n$LASTLINES $LOGFILE |grep "xmlrpc.php" | awk '{print $1}' | sort -n | uniq -c)
if [ -n "$LIST" ]; then
while read -r count ip ; do
if [ $count -ge $MAXCOUNT ]; then
iptables -A INPUT -s $ip -j DROP
logger -t "XMLRPC" "blocked ip $ip"
fi
done <<< "$LIST"
fi
wie immer auch im gist.github.com
Wie Sebastian korrekt darauf hinwies, wenn man fail2ban installiert hat ist es viel einfacher:
# grep -v "^#" /etc/fail2ban/filter.d/apache-xmlrpc.conf
[INCLUDES]
before = apache-common.conf
[Definition]
failregex = ^ .*POST .*xmlrpc\.php.*
ignoreregex =
# grep apache-xmlrpc /etc/fail2ban/jail.conf -A3
[apache-xmlrpc]
enabled = true
port = http,https
filter = apache-xmlrpc
logpath = /var/log/apache*/*access.log
maxretry = 5