Что использовать для контроля целостности файлов сайта?
Вопрос вроде довольно тривиальный и ответ на него скорее всего git. Но все же, что лучше использовать для контроля целостности файлов на сайте, при следующих условиях:
1 Сайт довольно большой и пользователи имеют право загружать некоторые файлы.
2 Работают с сайтом несколько разработчиков, правда работают через гит, но заливаются изменения на рабочий сервер вручную.
3 Хотелось бы получать уведомления при изменениях залитых не стандартным образом файлах (email, sms), а так же одобрить или отклонить данные изменения.
Думаю в идеале бы хотелось сделать так, чтобы некоторые файлы вообще работали в режиме только чтения/исполнения без возможности подправить права на них пользователем под которым исполняется весь сайт.
Согласен что вопрос довольно обширный и скорее для администратора, но возможно есть какое-то типовое решение и/или мануал)
Автоматизируйте деплой из гита, руками то зачем. Сразу же получите инструмент для одобрения/отклонения изменений и минимизируете "внешние" изменения.
А для контроля целостности посмотрите в сторону selinux, auditd и ossec/aide/afiсk. Первым закрутите политики доступа до упора, вторым настроите нужные события, третьим сделаете массовый мониторинг изменений.
а есть какие-либо готовые решения/инструменты для всего этого? То есть чтобы автоматизировать деплой и контролировать изменения извне? Или перечисленные программные средства и умеют все это делать?
В основном хочется понять оптимальный набор инструментов и порядок работы, чтобы хоть как-то понимать что делают админы на сервере и какой порядок сложности в этом, ато периодически возникают проблемы, которые на мой взгляд админами решаются ну очень медленно.
Не one-click-install, конечно, но это и есть вполне готовые решения.
Вы можете автоматизировать деплой пост-хуком в гите или с помощью CI-системы а-ля jenkins. Изменения извне апретите административно. А перечисленными средствами проконтролируйте выполнение этого запрета.
По поводу контроля админов - сложно порекомендовать что-то без понимания организации ваших процессов. И это по большей части вопрос менеджмента, а не софта.
Конечно, можно полностью автоматизировать конфигурацию сервера и деплой приложения с помощью puppet/chef/etc. В таком случае админы просто не будут заходить на сервер и руками что-то исправлять, и изменения станут более прозрачны. Но это очень большое дело :)