Регистрация активности лиц в Linux

Так что я прочитал много постов, связанных с этим, и просто запутался больше, чем раньше. Существуют рекомендации для различных инструментов, включая ttyrec, snoopy, acct, rooth, sudosh, ttyrpld, аудит unix и другие.

В моем случае я хочу иметь возможность регистрировать все команды, выполняемые в системе (например, историю с включенными временными метками), но я также хочу знать, кто что сделал? Тем не менее, мы все регистрируемся через ssh для одного и того же небольшого набора учетных записей пользователей (в зависимости от того, что мы делаем). Как я могу получить журнал команд, включающий информацию, которую "кто" даст мне (в отношении соединения), чтобы я мог проследить действие для конкретного человека как для обычного "пользователя"?

3 ответа

Решение

auditd Пакет предназначен для этого, вы можете использовать PAM для назначения каждому входу в систему идентификатора сеанса, чтобы вы могли отслеживать активность учетной записи обратно к исходному входу в систему (а затем проверить журнал входа в систему, чтобы определить, откуда этот человек входил в систему), и использовать ausearch Команда, чтобы найти события, которые вас интересуют. Вы можете прочитать довольно полное руководство здесь, хотя некоторые тонкие детали должны быть изменены в соответствии с вашим дистрибутивом. У Redhat есть сайт с FAQ и некоторыми другими документами здесь.

Поскольку это не зависит от попыток регистрировать команды, введенные в оболочку, или записывать историю команд пользователей, следует регистрировать такие вещи, как открытие vi (что может быть сделано через X или в screen) написание сценария (возможно, по одному символу за раз с помощью команд вырезания / вставки vi и нескольких запусков :.!/usr/games/fortune чтобы получить некоторые исходные данные, которые вы, возможно, не сможете войти), затем запустите :%!/bin/bash команда.

В вашем распоряжении уже есть множество инструментов, на которые ваш вопрос (и эти ответы) намекают, например, на историю, snoopy, auddd, журналы sudo и т. Д.... но если у вас есть "Подмножество учетных записей", которые используют люди, есть На сервере нет способа сказать, кто что сделал. Единственный способ точно определить, кто это сделал, - это если пользователи имеют свои собственные компьютеры, которые они специально используют, и используют клавиатурные шпионы, чтобы сказать, что они физически печатали на этой клавиатуре.

Всякий раз, когда вы делитесь учетными записями, вы не можете сказать, что на самом деле происходит, поскольку вам потребуются дополнительные доказательства того, кто использовал вашу корневую учетную запись или учетную запись bob, или что бы ни делали ваши люди. Если вы пытаетесь выяснить, что произошло в конкретном инциденте, вам, возможно, придется пересмотреть свои политики и процедуры доступа, процедуры восстановления, а также оценить своих сотрудников и / или, при необходимости, пройти переподготовку (или их надежность с помощью конфиденциальных учетных записей). чем непосредственно сосредоточиться на поиске того, кто что-то сделал, так как это может поглотить больше ресурсов, чем вы можете найти, чтобы найти человека, который сделал это.

В противном случае вам может понадобиться изучить методы судебной экспертизы для отслеживания того, что произошло (создание образа диска, отслеживание журналов и т. Д.). Если вы не расследуете инцидент, изучите свои политики и внедрите лучшее отслеживание и проверку учетной записи (только у вас есть root, только Боб использует свою учетную запись, используя sudo, чтобы получить доступ к более высоким привилегиям, устанавливать и контролировать audd и т. д.), и будьте осторожны, чтобы ваш круг доверенных лиц не чувствовал себя под микроскопом, иначе вы можете оттолкнуть людей, пытающихся чтобы выполнить свою работу (или помешать им выполнить свою работу).

Linux audd ( http://people.redhat.com/sgrubb/audit/) даст вам больше возможностей для наблюдения за тем, кто что сделал. У вас есть больше об этом в ответе ДерфК.

Однако никто ничего не скажет вам, вошедшему в систему как webadmin, если есть n человек, которые имеют доступ к учетной записи webadmin. Я бы предложил использовать именованные учетные записи для каждого пользователя, а затем использовать su - или sudo для запуска команд из учетной записи "function".

Другие вопросы по тегам