Я думаю о том, чтобы поставить весь мой Linux-сервер под контроль версий с помощью git Причиной этого является то, что это может быть самым простым способом обнаружения вредоносных модификаций / руткитов. Все, что я наивно считаю, необходимо проверить целостность системы: монтировать раздел linux каждую неделю или около того, используя спасательную систему, проверять, не отменен ли репозиторий git, и затем выдавать состояние git для обнаружения любых изменений, внесенных в систему. ,
Помимо очевидных потерь дискового пространства, есть ли другие негативные побочные эффекты?
Это совершенно безумная идея?
Это даже безопасный способ проверки на наличие руткитов, поскольку мне, скорее всего, придется хотя бы исключить / dev и / proc?
Ответы:
Это "плохая идея" (тм). Помимо всего прочего, ваш репозиторий будет работать медленно, как все чертовски, и ухудшаться с каждой сохраненной ревизией.
Попробуйте централизованное управление, например, puppet / cfengine / chef. Это будет держать вещи, как вы ожидаете, и отменить неожиданные изменения.
Добавьте к этому что-то вроде iwatch, чтобы получать электронные письма о несанкционированных изменениях файлов.
Объедините это далее с файлами rpm / deb, если необходимо развернуть пользовательские приложения.
Добавьте что-то вроде rkhunter или chkrootkit время от времени для ударов ногами, и вы должны хорошо идти.
Работа сделана.
источник
Другой альтернативой является настройка tripwire , которая представляет собой программное обеспечение GPL, которое просматривает все важные файлы в вашей системе и определяет, какие из них были изменены способами, которые вы определили как неприемлемые. Изменение может быть определено просто как mtime, через номер инода, вплоть до криптографически надежных контрольных сумм.
Требуется некоторая настройка и настройка, если вы не хотите получать множество отчетов каждую ночь об измененных файлах
/var/run
, изменениях в клиентских файлах DHCP/etc
и т. П., Но если вы все же столкнетесь с этой проблемой, это может быть очень полезно на самом деле.База данных свойств файла подписан с помощью ключа не известной машины, которая поможет вам быть уверены , что ни один инструмент не злонамеренно изменили базу данных или натяжной двоичные файлы. Для полной уверенности вы можете записать копию инструментов и баз данных tripwire на носитель только для чтения, который можно смонтировать на сервере и использовать для проверки всех изменений, произошедших после записи диска, если требуется полный судебный анализ.
Если вы собираетесь это сделать, очень важно настроить и запустить tripwire до того, как машина будет запущена в производство, или вы никогда не можете быть полностью уверены, что какой-то злонамеренный пользователь не имел возможности заразить машину до того, как она будет запущена. был перепутан.
источник
Я не думаю, что это сработает, но в качестве эксперимента я бы хотел посмотреть, что произойдет, если вы сделаете это только с папкой / etc. Вот где хранится большая часть информации о конфигурации.
источник
@Sirex уже дал очень хороший ответ, но если вы хотите сделать еще один шаг в области безопасности, лучшим способом борьбы с ним является сначала предотвращение, а затем обнаружение.
Попробуйте настроить систему с /монтированной файловой системой только для чтения. Сделайте / tmp отдельным ramfs, смонтированным с опцией noexec, nodev. Чтобы система работала, вам нужно только / var монтировать чтение-запись. Поэтому в / var монтируем fs с помощью rw, noexec, nodev и удаляем права на запись в / var / tmp (на самом деле, это редко требуется демонам, и это должно настраиваться). Также используйте патч безопасности для вашего ядра, чтобы дополнительно ограничить доступ пользователей к ресурсам, например, попробуйте grsec. Используйте брандмауэр с самыми строгими правилами.
Некоторые дистрибутивы предоставляют обширную документацию по укреплению системы. Например:
источник
Я думаю, что это хорошая идея для анализа изменений, которые инструмент вносит в вашу систему:
... Удалить ВМ
Вы должны добавить в
.gitignore
файл много папок, например, proc и т. Д.источник
В ситуациях, когда вы просто заинтересованы в сохранении определенных папок во всей файловой системе под контролем версий, может подойти следующий подход:
Сначала создайте Git-репозиторий на
/
уровне:Затем создайте
/.gitignore
белый список только для определенных папок, например, только для белого/path/to/versioned/config/folder/
(на основе /programming//a/11018557/320594 ):Затем создайте первый коммит:
А затем добавьте дополнительные папки, которые вы хотите под управлением версиями по требованию.
PS:
В дополнение к предыдущему методу, если вам нужно держать / etc / под контролем версий, вы можете предпочесть использовать
etckeeper
( https://etckeeper.branchable.com/ ) для управления версиями этой конкретной папки, поскольку она более специализирована для этой цели ( например, он фиксируется автоматически после установки пакетов).источник