Мы — долго запрягаем, быстро ездим, и сильно тормозим.
www.lissyara.su —> статьи —> FreeBSD —> Security —> termlog

Логгирование происходящего на терминалах

Автор: lissyara.


    Подкинули на форуме интересную утилиту - termlog. Она предназначена для наблюдения и логгирования того что юзер делает в ssh сессии. Думаю, будет полезна на хотинге где разрешён ssh-доступ пользовалям.
   Обновляем порты, ставим:
srv2$ cd /usr/ports/security/termlog
srv2$ make install clean

   Чтение мана и разглядывание Makefile привели к пониманию принципа работы и того, что стартового скрипта нет. На мой взгляд, досадное упущение... Рисуем свой:
srv2$ cat /usr/local/etc/rc.d/termlog.sh
#!/bin/sh

# PROVIDE: termlog
# REQUIRE: cron devfs syslogd

. /etc/rc.subr

load_rc_config termlog

name=termlog
rcvar=`set_rcvar`

command="/usr/local/bin/termlog"

# default to disable
termlog_enable=${termlog_enable:-"NO"}
# logging path
termlog_log_dir=${termlog_log_dir:-"/var/log/termlog/`date +%Y-%m-%d`"}
# maximum monitored consoles
termlog_max_cons=${termlog_max_cons:-"30"}
termlog_flags=${termlog_flags:-" -C $termlog_log_dir -f -n $termlog_max_cons &"}

start_precmd=start_precmd

start_precmd()
{
        mkdir -p $termlog_log_dir
        chmod 751 $termlog_log_dir
}

run_rc_command "$1"

   Можно прописывать переменные в rc.conf (я прописал одну - "termlog_enable") и запускать:
srv2$ /usr/local/etc/rc.d/termlog.sh start
Starting termlog.
srv2$ 2008-12-11 11:18:59.828679 session lissyara_ttyp0_1228994339.log created

srv2$    

   Ага. Моя сессия уже пишется =))
   Добавялем в крон строку перезапуска ночью, чтоб директория менялась:
srv2$ crontab -l -u root | tail -1
# termlog
59 23 * * * sleep 62 && /root/scripts/termlog.rotate.log.sh >/dev/null 2>&1
srv2$  

Скрипт:
srv# more /root/scripts/termlog.rotate.log.sh
#!/bin/sh

/usr/local/etc/rc.d/termlog restart

. /etc/rc.conf

work_dir=`dirname $termlog_log_dir`

cd $work_dir

num_dirs=`ls -t | wc -l`
num_old_dirs=`expr $num_dirs - 1`

ls -t | tail -$num_old_dirs |
{
while read dir_name
do
        cd $work_dir/$dir_name && gzip * &
done
}

srv#   

Всё. Настоятельно рекомендую настроить ротацию файлов логов, ибо растут они очень быстро.

Стартовый скрипт в немного допилил, отправил баг-репортом. Глядишь, закоммитят. Статью тогда правда убрать придётся - писать уже будет неочем =))
http://www.freebsd.org/cgi/query-pr.cgi?pr=129571

2009-03-03: Закоммитили.
Поправил чутка статью.



размещено: 2008-12-11,
последнее обновление: 2008-12-11,
автор: lissyara


Raven2000, 2008-12-11 в 14:54:25

Приятная тулза, но плохо, что она недоделана автором до конца.

zingel, 2008-12-11 в 15:08:21

доделай сам

Morty, 2008-12-11 в 15:24:32

очень вовремя
спасибо !

arksu, 2008-12-11 в 16:18:03

мм..... тема! давно искал что-то подобное. тока все время не мог уделить.
спасибо! надо будет залить на все сервера

abigor, 2008-12-11 в 16:45:11

хм, я больше смотрел в сторону http://xgu.ru/wiki/LiLaLo но увы этого дела нету в портах, но тут дали наводку на поиск

Ара, 2008-12-12 в 3:06:29

Вместо "/usr/local/bin" надо писать "%%PREFIX%%/bin"

lissyara, 2008-12-12 в 8:58:43

Если вы про PR - то да, тупанул.
Если про скрипт в статье - то нет.

Ара, 2008-12-12 в 10:09:16

Про PR, да. :)

HEDG_SS, 2009-10-29 в 11:03:11

Чуток дописал скрипт ротации логов "под себя", может кому-то пригодится...
Добавлено ограничение : за сколько последних дней сохранять логи, чтоб не плодить сотни папок
#!/bin/sh

/usr/local/etc/rc.d/termlog.sh restart
# Где лежат логи (папки с логами по дате)
work_dir="/var/log/termlog"
# За сколько последних дней оставлять логи
num_day="30"
cd $work_dir

### Раздел архивирования новых логов
num_dirs=`ls -t | wc -l`
num_old_dirs=`expr $num_dirs - 1`
ls -t | tail -$num_old_dirs |
{
while read dir_name
do
       chmod  400 $work_dir/$dir_name/* && cd $work_dir/$dir_name && gzip * &
done
}

### Удаление старых логов
cd $work_dir
num_dirs=`ls -t | wc -l`

if [ $num_dirs -gt $num_day ]
then
num_old_dirs=`expr $num_dirs - $num_day`
ls -t | tail -$num_old_dirs |
{
while read dir_name
do
       rm -R "$work_dir/$dir_name"
done
}
fi

agat, 2012-08-12 в 14:44:20

заметил фичу


agat@alfa:/var/log/termlog#/usr/local/etc/rc.d/termlog start
Starting termlog.
agat@alfa:/var/log/termlog#2012-08-12 10:19:32.238465 session agat_ttyp0_1344766772.log created
agat@alfa:/var/log/termlog#tail -f /var/log/termlog/agat_ttyp0_1344766772.log


и вот тут начинается лол.
Если запустить mc то в логе получается бред, но
если после этого посмотреть cat /файл/лога то можно заметить, что мс на долю секунды запускается, а так же подозреваю, что обрабатываются нажатия клавиш в этом самом мс и все это исполняется в виде макроса наживую систему.

З.Ы. или это только у меня паранойя?



 

  Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
  Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.052 секунд
Из них PHP: 25%; SQL: 75%; Число SQL-запросов: 77 шт.
Исходный размер: 22524; Сжатая: 6387