so, ich weiss nicht ob das schon optimiert ist , wohl 10/100%
Folgendes "Scriptchen" findet Methoden ungleich GET/POST, und
sortiert mit $1 = ip die IPs der Clients. Damit laesst sich dann z.B.
iptables fuettern.
Code:
#!/usr/bin/env bash
cd /var/log/httpd || exit
for LOGFILE in access_log ssl_request_log; do
# test -f $LOGFILE
echo
echo "unwanted Methods in $LOGFILE:"
echo "-----------"
METHODS="HEAD|CONNECT|OPTIONS|TRACE"
DENY='tag=' # omit cvsweb HEAD false positive
for M in $METHODS; do
if [ "$1" = 'ip' ]; then
egrep "$M" $LOGFILE|grep -v ${DENY}|uniq -u| sed 's/\[.*\]/ /g'|awk '{print $1}'|uniq -u
else
egrep "$M" $LOGFILE|grep -v ${DENY}|uniq -u| sed 's/\[.*\]/ /g'
fi
done
done
Jetzt fehlt nur noch eine Einzeiler Loesung fuer awk.
*EDIT2*
Code:
sed -ne 's/\[.*\]/ /g;/"CONNECT/p;/"TRACE/p;/"OPTIONS/p;/"HEAD/p' /var/log/httpd/access_log
dabei ^^ sollen die Methods in eine Variable, allerdings habe ich das mit sed wieder nicht hinbekommen, da " mit Teil
des Patterns ist um falsch Positive auszuschliessen.
Lesezeichen