Если я:
[user@notebook ~] sudo echo 123456uu
123456uu
[user@notebook ~]
Тогда я вижу это в журналах:
[root@notebook /var/log] grep 123456uu *
auth.log:Jan 9 17:01:51 notebook sudo: user : TTY=pts/3 ; PWD=/home/user ; USER=root ; COMMAND=/bin/echo 123456uu
[root@notebook /var/log]
но если я:
[user@notebook ~] sudo su -
[root@notebook ~] echo 1234567zz
1234567zz
[root@notebook ~]
Я не могу видеть это в журналах:
[root@notebook /var/log] grep 1234567zz *
[root@notebook /var/log] echo $?
1
[root@notebook /var/log]
Мой вопрос: как включить регистрацию для команд в «sudo su -»?
ОС - это Ubuntu 12.04, но вопрос в целом.
UPDATE # 1:
[user@notebook ~] sudo su -
[sudo] password for user:
[root@notebook ~] echo zizizi
zizizi
[root@notebook ~] cd /var/log
[root@notebook /var/log] grep -iIR 'zizizi' *
[root@notebook /var/log] grep 'COMMAND=/bin/su -' *
auth.log:Jan 10 15:42:42 notebook sudo: user : TTY=pts/1 ; PWD=/home/user ; USER=root ; COMMAND=/bin/su -
[root@notebook /var/log]
sudo su -
, он также имеет возможность удалить все записи журнала, которые вы могли бы сделать из своих действий. Если вы хотите 100% достоверности при ведении журнала, вам нужноsudo
сильно ограничить иsudo su
полностью запретить .Ответы:
Поскольку вы работаете в Ubuntu 12.04, обратите внимание на возможности ведения журнала ввода-вывода, активированные с помощью параметров
log_input
иlog_output
.ОСУЩЕСТВЛЕНИЕ: Судо версия по крайней мере: 1.7.4p4 необходимо.
/etc/sudoers
модификация: все, что вам нужно сделать, это добавить два тега ко всем необходимым записям sudoers (где указано «su», либо с помощью команды, либо с псевдонимом). LOG_INPUT и LOG_OUTPUT.Пример:
Добавьте следующую структуру dir log по умолчанию
sudoers
:источник
Ваша
grep
работаsudo su -
не выполняется, потому что вы не работаетеecho 1234567zz
, вы работаетеsu -
, что запускает оболочку. Оболочка тогда работаетecho
.Это является преднамеренным, и регистрация каждого запуска команды затопит ваш системный журнал бесполезной информацией (обычно есть тонны программ, которые запускаются за кулисами, которые вы обычно не видите).
Если вы измените ваш grep,
grep 'COMMAND=/bin/su -' *
вы увидите это.sudo su -
также бесполезное использованиеsu
.sudo -i
делает то же самое.источник
grep 'COMMAND=/bin/su -' *
(или без подстановочных знаков :)grep 'COMMAND=/bin/su -' /var/log/auth.log
?sudo -
) является зарегистрированным, и ваш обновленный выход показывает это. Это все, о чем мы здесь говорим. В другие команды, такие какecho
после переключения пользователейsudo -
, не SUDO команды, и , следовательно , (в соответствии с моим ответом) не вошли в системуauth.log
.sudo
Будут регистрироваться только отдельные команды с явным предваряющим . Такsudo echo
что регистрируется, но простоecho
нет, независимо от того, что вы переключились на суперпользователя.В усложнении вот три способа регистрации команд, выполненных в «sudo su -»:
Что касается того, что подходит, это действительно зависит от того, что вы пытаетесь достичь с помощью ведения журнала.
1) История команд Bash
Вы хотели бы сконфигурировать функцию истории, чтобы обеспечить сохранение достаточного количества строк, не перезаписывать из разных сеансов, не игнорировать команды и соответствующие временные метки. (См. Переменные HIST * в руководстве по bash ). Легко подрывается, редактируя файл истории, манипулируя окружением или запуская другую оболочку.
2) execve обертка
Snoopylogger является одним. Добавьте проверку,
/etc/profile
что библиотека логгера находится в карте памяти процесса (/proc/<pid>/maps
), и, если нет, установитеLD_PRELOAD
и перезапустите (с помощьюexec $SHELL --login "$@"
). Кроме того, вы можете добавить запись в /etc/ld.so.preload с помощью$LIB/snoopy.so
или эквивалентными путями к вашим 32/64-битным версиям snoopy.so.Хотя это и более сложно,
LD_PRELOAD
версия переменной среды, описанная выше, все же может быть подорвана путем манипулирования средой выполнения, так что снупи-код больше не запускается.Системный журнал должен быть отправлен вне коробки для содержания, чтобы быть заслуживающим доверия.
3) ревизия
Немного проще в настройке, чем execve-оболочка, но сложнее извлечь информацию. Это ответ на вопрос, который вы, вероятно, действительно задаете: «Есть ли способ записать, какое влияние пользователь оказал на систему после их выдачи
sudo su -
». Системный журнал должен быть отправлен вне коробки для содержания, чтобы быть заслуживающим доверия.Этот ответ Serverfault выглядит довольно полной конфигурацией для использования с audd.
Есть несколько других предложений по аналогичному вопросу о сбое сервера .
источник
Потому что это то,
sudo
что делает регистрацию; он регистрирует команды sudo. В первом случаеsudo echo
это лог. Во втором случаеsudo su
регистрируется (ищите это в/var/log/auth.log
).su
является «переключить пользователя», по умолчанию на root. Все, что вы делаете после этого , не проходитsudo
. Это почти так же, как если бы вы вошли в систему как root; сам логин регистрируется, но не каждая команда.источник
Как уже говорили другие,
sudo
не могу этого сделать.Вместо этого используйте
auditd
. Если вы хотите регистрировать все, что сделано root (в том числе, например, crontab), используйте это:ETA: обратите внимание, что регистрация всего повлияет на производительность, поэтому вы, вероятно, захотите немного ее ограничить. Смотрите
man auditctl
примеры.Если вы хотите регистрировать системные вызовы только там, где исходный логин uid не является root, используйте вместо этого:
Журналы обычно заканчиваются в /var/log/audit/audit.log. Вы можете искать их с
ausearch
.Там больше информации на страницах руководства для
auditctl
,audit.rules
иausearch
.источник
sudo su -
так что вы вернулись на круги свояsudo su -
будет,~/.bash_history
если ваша оболочка bash.echo 1234567zz
будет,/root/.bash_history
если оболочка root - bash.Объяснение этому уже было размещено златовласками.
источник
Вы хотите, чтобы su регистрировался, потому что вы чувствуете, что это недостаток безопасности? Вы думали об этой команде?
sudo bash
так же плохо, имхо.Если вы беспокоитесь о том, что люди могут делать с sudo, вам нужно ограничить его использование. Вы можете ограничить команды, которые они могут выполнять тоже. Ограничьте доступ к / bin / su, если вас это беспокоит.
источник
Что насчет этого:
или
или длинная однострочная:
sudo -E сохраняет среду PROMPT_COMMAND выполняется перед каждым приглашением
источник
Если это помогает, вы можете использовать опцию «NOEXEC» sudoers.
Вы должны определить это как
Это предотвратит выход оболочки, и пользователь не сможет использовать sudo -i или sudo -s или sudo su -
Это идет с недостатком, однако, любой выход оболочки будет отключен. за выполнение скрипта из скрипта также будет отказано.
источник
Давайте не будем усложнять это: всякий раз, когда
sudo
вызывается, он сообщает об этом факте в каком-то файле в/var/log
(в вашей системеauth.log
, на моем OS X box этоsystem.log
).sudo
сообщает свои аргументы командной строки, но он не знает, что может произойти внутри такой интерактивной команды, какsu
.Это не означает, что нет записи о том, что происходит в корневой подоболочке: команды оболочки сохраняются в истории оболочки. В моей системе сохранение истории root по умолчанию включено, поэтому все, что мне нужно сделать, - это посмотреть
~root/.sh_history
на запись того, что было сделано (если, конечно, кто-то не вмешался в это, но они могли бы также вмешаться/var/log
).Я думаю, что это лучшее решение для вас. Если нет, отправляйтесь в город
auditd
, как предложила @Jenny.PS. Если история root еще не включена, ее включение зависит от того, какую оболочку он использует. Для
bash
, установитеHISTORY
иHISTFILESIZE
достаточно большое число (по умолчанию 500, мое руководство говорит). Если вы хотите, вы можете указать, где история сохраняется путем установкиHISTFILE
пути (по умолчанию$HOME/.sh_history
)источник
Возможно, вы захотите создать машинописный текст вашей сессии, используя
script(1)
:Теперь вы можете
grep
(обратите внимание, что#
запросы на самом деле записаны в/tmp/my_typescript
):В качестве альтернативы, вы можете посмотреть весь сеанс снова
scriptreplay(1)
:Файл
/tmp/my_typescript.timing
содержит информацию, когда каждая команда была вызвана. Есть другие инструменты, такие какttyrec
илиshelr
которые имеют еще больше наворотов.источник