Rootsh - утилита, позволяющая записывать все выводящиеся в терминале при работе пользователя с командной оболочкой (shell) символы в файл и/или в syslog. Основным её назначением является аудит действий пользователей, которым требуется разрешить выполнения командной оболочки с правами суперпользователя. Как правило, rootsh при этом запускается через механизм sudo. ==== Общие замечания к использованию rootsh.==== 1. rootsh не может использоваться как IDS. Имеющий доступ к системе на уровне администратора злонамеренный пользователь может без особых проблем удалить или изменить логи rootsh, или вообще обойти её вызов. 2. rootsh записывает только вывод в терминал. Т.е., вводимые в режиме отключённого эха пароли в логи не попадают. Выдаваемые программами на терминал управляющие последовательности также логируются. 3. Запись действий пользователя в syslog с одной стороны, позволяет средствами syslog передавать логи на удалённую доверенную систему. С другой стороны, при этом в syslog выводятся все управляющие последовательности с терминала пользователя. 4. Для проигрывания записанных в файл логов можно использовать команды вида: $ cat $file | perl -e 'while (<>) { print; select(undef,undef,undef,0.5);}' 5. rootsh не записывает временные отметки пользовательской активности. Т.е., сказать, когда была отдана та или иная команда, и сколько времени заняло её выполнение, нельзя. Это накладывает серьёзные ограничения при анализе логов. Если требуется полная запись действий пользователя в терминале, с последующим проигрыванием сохранённого, то следует смотреть на утилиты sudosh (http://sourceforge.net/projects/sudosh/) или sudosh2 (http://sourceforge.net/projects/sudosh2/). К сожалению, лицензия этих утилит не позволяет включить их в составе дистрибутива. ==== Особенности работы rootsh в ALT Linux. ==== 1. rootsh разрешено использовать пользователям, входящим в группу _rootsh. Поскольку rootsh пишет логи работы с консолью, бесконтрольное использование утилиты, особенно при вызове изнутри её экранных (визуальных) редакторов, mc, и т.п., может привести к быстрому исчерпанию места в /var/log/. Пример опасной с этой точки зрения команды: # /usr/bin/rootsh tail -f /var/log/messages 2. Для запуска rootsh в окружении пользователя создаётся alias вида alias rootsh='/usr/bin/sudo /usr/bin/rootsh -iy' В этом случае при вводе пользователем rootsh через sudo с правами root запускается внутри rootsh login shell (ключ -i), логирование в syslog отключается (ключ -y). Выводящиеся в терминал символы записываются в файл внутри каталога /var/log/rootsh/ . 3. Для каталога /var/log/rootsh, если это позволяет используемая файловая система, рекомендуется дополнительно установить флаг 'a': # chattr +a /var/log/rootsh/ 4. Во избежании переполнения /var/log логи работы пользователей более чем 90-дневней давности ежедневно удаляются. 5. Установкой alias'ов, их форматом и сроком хранения логов можно управлять через конфигурацию в /etc/sysconfig/rootsh. ------------ Дополнительная информация по rootsh: http://sourceforge.net/projects/rootsh/ - домашняя страница проекта http://people.consol.de/~lausser/rootsh/rootsh.html - rootsh(1) http://www.linux.com/feature/61687 - "Rootsh terminal logger keeps watch on root users"