Итак, родилась у меня как-то давным давно идея сделать свой собственный мониторинг с б/ж и ш.
Необходимо было мониторить успешные входы по ssh(и использование sudo) и сообщать мне об этом. Для оповещений был выбран мессенджер centerim (в дебиан и подобных пакет называется centericq-utf8). Так же понадобится пакет screen.
После установки пакета (в моём случае сборки ебилда) я создал пользователя jabber с домашней директорией /home/jabber.
После этого сменил юзера на jabber:
Запустил centerim-utf8.
Настроил аккаунт icq ( новый уин можно получить тут — https://www.icq.com/register/
Проверил что номер появился в сети и вышел из мессенджера.
Далее, вернулся к суперпользователю.
Запустил от рута в новом скрине мессенджер. (По-другому, согласно сайту, демонизировать centerim никак нельзя)
После этого написал такой скриптик и поместил его в крон раз в минуту:
Имеется целое поле для экспериментов и доработок, но я решил остановиться, и оставить всё как есть — всё более или менее работает.
В целом, эта статья о том, что если что-то не устраивает в чужом велосипеде — всегда можно написать свой.
Спасибо за внимание. Если есть вопросы, буду рад ответить в комментариях.
Необходимо было мониторить успешные входы по ssh(и использование sudo) и сообщать мне об этом. Для оповещений был выбран мессенджер centerim (в дебиан и подобных пакет называется centericq-utf8). Так же понадобится пакет screen.
aptitude install screen centericq-utf8
Приступим
После установки пакета (в моём случае сборки ебилда) я создал пользователя jabber с домашней директорией /home/jabber.
После этого сменил юзера на jabber:
su - jabber.
Запустил centerim-utf8.
centerim-utf8
Настроил аккаунт icq ( новый уин можно получить тут — https://www.icq.com/register/
Проверил что номер появился в сети и вышел из мессенджера.
Далее, вернулся к суперпользователю.
exit
Запустил от рута в новом скрине мессенджер. (По-другому, согласно сайту, демонизировать centerim никак нельзя)
su - jabber -c "screen -d -m /usr/bin/centerim"
После этого написал такой скриптик и поместил его в крон раз в минуту:
authmon.sh
#!/bin/bash
# лог, который смотреть
LOG=/var/log/messages
# название бинарника centerim
CIM=/usr/bin/centerim
# сколько строчек смотреть в $LOG
N=20
# искать строчки, включающие следующие слова
EXPR="sshd|sudo"
# файл, в котором хранится мд5-хэш от предыдущего успешного прогона скрипта
MDFILE=/home/jabber/mon/auth.md5
# файл, в котором хранятся отфильтрованные грепом записи от прошлого прогона
TXTFILE=/home/jabber/mon/auth.txt
# файл, в котором хранятся отфильтрованные грепом записи от текущего прогона
TXTFILE2=/home/jabber/mon/auth.new
# имя пользователя, от которого запущен centerim
JABBERUSER=jabber
# протокол centerim
PROTO=icq
# УИН владельца, куда будут высылаться извещения
UIN=288611
# Набор фраз, которые исключать из лога.
EXCL='munin|Invalid|getaddrinfo|identification string|POSSIBLE BREAK-IN ATTEMPT'
OLD=`cat $MDFILE`
tail -$N $LOG | grep -E $EXPR | grep -v -E "$EXCL" > $TXTFILE2
READ=`tail -1 $TXTFILE2 | md5sum | awk '{print $1};'`
if [ "$READ" == "$OLD" ]; then
exit 0
else
echo -e $READ > $MDFILE
cat $TXTFILE2 > $TXTFILE
su - $JABBERUSER -c "cat $TXTFILE | $CIM -s msg -p $PROTO -t $UIN"
fi
Имеется целое поле для экспериментов и доработок, но я решил остановиться, и оставить всё как есть — всё более или менее работает.
В целом, эта статья о том, что если что-то не устраивает в чужом велосипеде — всегда можно написать свой.
Спасибо за внимание. Если есть вопросы, буду рад ответить в комментариях.