Получаем ежедневные отчёты о том, кто ходит к нам на сервер и как часто, используя SSH и HTTP
Статистика отправляется на почту следующего вида:
# Active hosts # где, количество запросов от определенного IP адреса
# Methods # где, количество запросов каким методом было произведено (GET/POST/TRACE)
# Popular places # где, количество посещения страниц
все данный в отсортированы порядке убывания
Смотрим кто ходил по HTTP
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
#!/bin/bash LOGFILE="/var/log/www-access_log" WORKDIR="/data/shell/mail/" EMAILADMIN="sobol@domain.com" DATETIME=$(date +"%Y-%m-%d") FILENAME=$WORKDIR'WWW-'$DATETIME.txt HOST="domain.com" echo "To:$EMAILADMIN" > $FILENAME echo "From:noreply@domain.com" >> $FILENAME echo "Subject: WWW log $HOST $DATETIME" >> $FILENAME echo "" >> $FILENAME echo "# Active hosts #" >> $FILENAME echo "" >> $FILENAME COMMAND=`cat $LOGFILE | awk '{print $1}' | sort -n | uniq -c | sort -nr | head -20 >> $FILENAME` echo "" >> $FILENAME echo "# Methods #" >> $FILENAME COMMAND1=`cat $LOGFILE | awk '{print $6}' | sort -n | uniq -c | sort -nr | head -20 >> $FILENAME` echo "" >> $FILENAME echo "# Popular places #" >> $FILENAME COMMAND2=`cat $LOGFILE | awk '{print $7}' | sort -n | uniq -c | sort -nr | head -20 >> $FILENAME` /usr/local/sbin/ssmtp -t < $FILENAME |
Смотрим кто ходил по SSH
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
#!/bin/bash LOGFILE="/var/log/auth.log" WORKDIR="/data/shell/mail/" EMAILADMIN="sobol@domain.com" DATETIME=$(date +"%Y-%m-%d") FILENAME=$WORKDIR'SSH-'$DATETIME.txt HOST="domain.com" echo "To:$EMAILADMIN" > $FILENAME echo "From:noreply@domain.com" >> $FILENAME echo "Subject: SSH log $HOST $DATETIME" >> $FILENAME echo "" >> $FILENAME echo "SSH invalid user auth $HOST from $DATETIME" >> $FILENAME echo "" >> $FILENAME COMMAND=`grep -rhi 'Invalid user' $LOGFILE | grep 'from' | awk '{print $10}' | sort -n | uniq -c | sort -nr | head -20 >> $FILENAME` /usr/local/sbin/ssmtp -t < $FILENAME |