История: Как-то давно писал статью на Хабре, но что-то не взлетела, решил вот утащить её в свой блог, может вторая жизнь породит новые веяния в умах =)

Наверняка многие использовали для записи сессий командной строки программу script.
А кто-нибудь задавался вопросом, а можно ли использовать её в рамках повышения безопасности/мониторинга/проверки адекватности пользователей системы?
Любопытства ради решил прикрутить script ко всем пользователям системы и посмотреть, что из этого выйдет…

 

#!/bin/sh
if [ "$TERM" != "" ]; then
DATE=`date +%F.%H.%M`
FOLDER="/tmp/"
exec script -q -t $FOLDER$USER.$DATE 2> $FOLDER$USER.$DATE.time
else
/bin/sh $*
fi

Добавляем такой скрипт в /etc/profile (в gentoo сохранил это в файл bash.sh и поместил его в директорию /etc/profile.d/).

Можно проверять работоспособность, заходя по SSH или любым другим способом.

В /tmp должны появиться файлы вида test.2010-03-25.20.01 и test.2010-03-25.20.01.time.
Файл c .time содержит в себе всю информацию по таймингу сессии.

Если файлы создались, дабы проверить плоды, запускаем:

scriptreplay test.2010-03-25.20.01.time test.2010-03-25.20.01

и наслаждаемся просмотром.

Хочу сразу сказать недоработки:
1 Если подключаться ssh user@host /bin/bash -i — то ничего не логируется =(

Основной интерес к этому способу появился от желания последить за работой новых админов, посмотреть их способы (не стоять же за спиной у бедняги).

Так же можно создать отдельный каталог вместо /tmp, например /opt/sessions и задать права:

chmod 733 /opt/sessions

Дабы все сессии могли писать, но юзеры не могли сделать листинг этой дирекории.

Оригинал