1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
Выполняется поиск по файлу лога веб-сайта, ищется одно из двух совпадений: вхождение строки "authentication failure"; вхождение строки "user.*not found". Срабатывает он так: [Sun Nov 17 17:30:05 2013] [error] [client ***.37.***.**] user user: authentication failure for "/wp-login.php": Password Mismatch [Sun Nov 17 17:29:52 2013] [error] [client ***.37.***.**] user sdcas not found: /wp-login.php [Sun Nov 17 17:35:19 2013] [error] [client ***.37.***.**] user sadcsadc not found: /wp-login.php Первая проверка — на случай, если пользователь был правильный, но пароль не верный. Вторая — на случай если пользователь был указан неверно. Для записи результатов используется временный файл: # touch /tmp/auth_errors.txt Собственно, сам скрипт: #!/usr/local/bin/bash FILE="/var/log/apache/site.ua-error.log" FAILF=`cat $FILE | grep -i "authentication failure"` FAILN=`cat $FILE | grep -i "user.*not found"` SUBJECT="Last auth failures for site" EMAIL="mail@domain.com" EMAILMESSAGE="/tmp/auth_errors.txt" echo "" > /tmp/auth_errors.txt echo "$FAILF" > /tmp/auth_errors.txt echo "$FAILN" >> /tmp/auth_errors.txt # проверяем не являются ли обе переменные пустыми, иначе нечего будет отправлять if [ -n "$FAILN" -o "$FAILF" ] then mail -s "$SUBJECT" "$EMAIL" < $EMAILMESSAGE fi В целом, его можно будет ещё улучшить, и добавить автоматическое добавление в таблицу IPFW (по аналогии с утилитой SSHIT). Добавляем задачу в cron: # crontab -e Раз в сутки вполне достаточно: # crontab -l | grep auth @daily /usr/home/setevoy/scripts/auth_failed.sh В результате — получим письмо такого содержания: # cat /usr/mail/domain.kiev.ua/box\@domain.kiev.ua/cur/1384707423.M869856P59034.akira.domain.kiev.ua\,S\=715\,W\=728\:2\,a Return-Path: <box@domain.kiev.ua> Delivered-To: box@domain.kiev.ua Received: by akira.domain.org.ua (Postfix, from userid 0) id D2DFA50F32; Sun, 17 Nov 2013 18:57:03 +0200 (EET) To: box@domain.kiev.ua Subject: Last auth failures for site Message-Id: <20131117165703.D2DFA50F32@akira.domain.org.ua> Date: Sun, 17 Nov 2013 18:57:03 +0200 (EET) From: box@domain.kiev.ua (Charlie Root) [Sun Nov 17 17:30:05 2013] [error] [client ***.37.***.**] user user: authentication failure for "/wp-login.php": Password Mismatch [Sun Nov 17 17:29:52 2013] [error] [client ***.37.***.**] user sdcas not found: /wp-login.php [Sun Nov 17 17:35:19 2013] [error] [client ***.37.***.**] user sadcsadc not found: / |