Прежде всего, вы сказали design :) Мой ответ будет содержать ссылки на материалы, которые вы можете использовать прямо сейчас, но некоторые из них еще недостаточно стабильны для производства. Мой ответ также будет содержать ссылки на то, что нужно написать.
Вы не сможете выполнить это, если вы (как указал user9876) полностью и полностью не доверяете человеку или компании, которые сделали первоначальную установку. Если вы не можете доверять этому, ваша проблема бесконечно рекурсивна.
Я был очень активен в новой файловой системе несколько лет назад, которая называлась ext3cow , копия на запись версии ext3. Снимки были дешевыми и на 100% неизменными, порт с Linux 2.4 до 2.6 сломался и в прошлом отказывался от возможности изменять или удалять файлы.
Фунт за фунт, это было так же эффективно, как ext3. Конечно, ничего особенного в этом нет, но это (и по большей части) все еще является стандартом производства FS.
Используя файловую систему такого типа, предполагая, что был сделан моментальный снимок первоначальной установки после того, как все службы были установлены и сконфигурированы, было бы довольно просто разложить весь том, чтобы увидеть, что изменилось и когда.
На этом этапе, пройдя через diff, вы можете решить, что ничего интересного нет, и просто изменить пароль root, или же вы можете проверить вещи, которые кажутся немного странными.
Теперь о том, что нужно написать, если будет найдено что-то интересное:
- Что-то, что вы можете передать через diff, хотя и исследует каждый файл. То, что вы увидите, - это список ревизий на файл, и в это время их придется рекурсивно сравнивать. То есть представить против прежнего настоящего, бывшего настоящего против прошлого1, прошлого1 против прошлого2 и т. д., пока не дойдете до исходного файла или до точки, что его больше не существует. Делать это вручную серьезно отстой. Кроме того, для начала вам необходимо определить файлы, которые никогда не были версионированы.
- Что-то, чтобы проверить ваше текущее работающее ядро. Если кто-то испортил VFS, ничего из этого не получится, файловые системы CoW используют временные inode для доступа к файлам в прошлом. Я знаю многих корпоративных клиентов, которые немного модифицируют ядро, вплоть до модулей, включая VMM и VFS. Это может быть не такой простой задачей - сравнение с «нетронутым» может оказаться недопустимым, поскольку старый администратор, возможно, сделал хороших изменений в ядре с момента его установки.
- Базы данных представляют собой особую головную боль, поскольку они обычно меняются каждую секунду или более, включая таблицу пользователей. Это нужно будет проверять вручную, если только вы не найдете что-то, что может проверить, чтобы убедиться, что ничего странного, такой инструмент будет очень специфичным для вашей установки. Классический корень UNIX здесь не единственная ваша задача.
Теперь рассмотрим другие компьютеры в сети. Сколько из них работает под управлением ОС, которая, как известно, легко эксплуатируется и заражена ботами? Даже если ваш сервер чист, что если этот парень присоединится к #foo на irc и начнет атаку на ваши серверы через вашу собственную локальную сеть? Большинство людей нажимают на ссылки, которые присылает сотрудник, особенно если это сочная запись в блоге о компании. Социальная инженерия очень проста, если вы делаете это изнутри.
Короче говоря, то, что вы предлагаете, является правдоподобным, однако я сомневаюсь, что большинство компаний могли бы применять лучшие практики, необходимые для его работы при необходимости. Если в результате вы обнаружите BOFH в своей рабочей силе и нуждаетесь в нем, вам лучше будет содержать его на протяжении всей его работы.
Я буду обновлять этот ответ больше, поскольку я продолжаю думать об этом. Это очень интересная тема. То, что я написал до сих пор, - это мои собственные собранные мысли о том же.
Edit:
Да, я знаю о виртуальных машинах и контрольных точках, предполагающем решение, которое выводит на новый уровень рекурсии. Имел ли (ныне ушедший) администратор прямой root-доступ к привилегированному домену или серверу хранения? Возможно, да, именно поэтому я не рассматриваю это для целей этого вопроса.