Создание сценария для контроля/root/.bashrc

Я хотел записать сценарий для контроля /root/.bashrc файл и имеет его или уведомляет меня, когда это происходит или предотвращает изменение без некоторой аутентификации.

Как я пошел бы о выполнении этого? Я никогда не писал сценарий для чего-то вроде этого. При необходимости во мне, чтобы сказать Вам определенный язык, что я использовал бы, это или будет Python 2 или удар. Был бы более легкий способ идти об этом?

0
задан 24 July 2017 в 18:31

2 ответа

Pyinotify, простой подход

Так как Вы попросили Python среди потенциальных вариаций на решения существует Python pyinotify модуль. Я лично использую Python 3. Решение может быть столь же простым как python3 -m pyinotify <FILE> или можно записать полноценный сценарий при необходимости.

Вот пример в действии:

enter image description here

Сценарий

Одна возможность пользовательского сценария может быть сделана через изменение учебного руководства, предоставленного на официальном репозитории GitHub для pyinotify. Так как Вы только обеспокоены модификациями в файл, я реализовал сценарий только для этого, но он может быть изменен для включения других событий.

#!/usr/bin/env python3
import pyinotify
import sys

class EventHandler(pyinotify.ProcessEvent):
    def process_IN_MODIFY(self, event):
        print("File",sys.argv[1]," was modified:",event.pathname)

wm = pyinotify.WatchManager()
mask = pyinotify.IN_MODIFY
handler = EventHandler()
notifier = pyinotify.Notifier(wm, handler)
wdd = wm.add_watch(sys.argv, mask, rec=True)
notifier.loop()

И вот маленький тест:

enter image description here

Взятие его далее

В любом случае все, что необходимо сделать, должно запустить команду с полномочиями пользователя root через /etc/rc.local или через cron, и вот именно. Вывод может быть отправлен или в своего рода файл журнала или отправить уведомление администраторскому пользователю. Лично, я запустил бы две команды - один с полномочиями пользователя root, который пишет в файл журнала и другим, который наблюдает файл журнала за изменениями и отправляет уведомление GUI пользователю. Возможности бесконечны здесь, так используйте свое воображение.

Поиск изменений может быть сделан через хранение резервного копирования файла (возможно, взятый в начале сценария), и после того как файл изменяется - выполненный diff или с помощью самого сценария Python через difflib. Можно также включить проверку md5 или sha256 hashsums в уравнение, но это не очень полезно за исключением знания, что файл был изменен. Другая проблема, это запускающее notifier скрипт не предотвращает изменения, которые, возможно, произошли, в то время как система была в режиме офлайн, т.е. если кто-то загрузил живой USB или вынул Ваш жесткий диск и соединился с их машиной и только затем изменил файл. Это может быть смягчено путем шифрования жесткого диска. Это также означает, что, вероятно, необходимо проверить на изменения, как только сценарий запускает.

До выяснения, кто изменил файл, Вы могли рассмотреть дату корреляции модификации и дату пользователей, входящих в систему как root/sudo. Конечно, я должен предупредить: это - несколько безнадежная задача. Пользователь жулика с корневыми способностями может изменить журналы и стирание, что присутствие пользователя, не уезжая мало ни к какому признаку того, кем это, возможно, было. Пользователи, которые получили корневые полномочия, могут даже изменить Ваш сценарий. В заключение лучшая безопасность, чтобы не изменять Ваш чувствительный файл состоит в том, чтобы предотвратить любого способность открыть тот файл во-первых.

0
ответ дан 2 November 2019 в 21:26

Это могло бы работать: sudo inotifywatch -r /root/.bashrc

Для получения дополнительной информации см. страницу справочника.

0
ответ дан 2 November 2019 в 21:26

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

Похожие вопросы: