Получайте уведомления каждый раз, когда кто-то использует apt-get install или изменяет файлы в / etc /

Я управляю парой серверов, на которых у нескольких пользователей есть права sudo.

Он работает так, как задумано. Это серверы разработки, и пользователи должны иметь возможность обновлять / устанавливать программное обеспечение и настраивать его. Для этого есть строгие правила, но этого недостаточно.

Это проблема для команды управления сервером, потому что всякий раз, когда что-то идет не так, нужно очистить и заставить его работать снова.

Есть ли способ получать уведомления каждый раз, когда кто-то устанавливает пакет и / или изменяет / etc / files?

Я гуглил, но единственное, что я получаю из этого поиска, это apticron, который не именно то, что я ищу.

Это было бы очень полезно, так как это позволило бы, с одной стороны, контролировать неправильные установки, а с другой стороны, быстро отслеживать, что было сделано, и возвращать его при необходимости.

Любые другие предложения, которые могут помочь в решении этого вопроса.

0
задан 24 April 2019 в 14:19

1 ответ

В «vanilla» (никакое дополнительное программное обеспечение не загружается) вам придется написать скрипт, который отслеживает файл /var/log/auth.log. Каждый раз, когда пользователь использует «su», чтобы стать пользователем root, или любого другого пользователя, здесь делается запись с его UID:

Apr 24 04:32:57 Hostname sudo: pam_unix(sudo:session): session opened for user root by (uid=0)

Это скажет вам, кто и когда стал пользователем root. Затем вы также сможете анализировать историю каждого отдельного пользователя (сохраненную в домашнем каталоге по адресу /home/user/.bash_history. В конце ваш сценарий будет выглядеть примерно так:

for name in $(awk --field-separator=":" '{print $1}' /etc/passwd); do echo $name >> /var/log/report; cat /home/$name/.bash_history | grep -i "apt install" >> /var/log/report; done

Вы также можете легко заменить «apt-install» на «sudo», чтобы увидеть все запущенные команды sudo, но этот сценарий сэкономит вам время, чтобы увидеть, кто установил программы. Если бы они использовали «su», чтобы стать пользователем root, вам нужно будет сделать дополнительный шаг, привязав его к метке времени и UID в файле auth.log. Пока ваши разработчики не имеют такого доступа и могут запускать только sudo, это не должно В этом нет необходимости (но все это становится неэффективным, если один из ваших разработчиков изменяет свою историю bash)

Что касается мониторинга всего каталога / etc, я бы рекомендовал явно просматривать метки времени. Всякий раз, когда выполняется изменение для файла (что-то на самом деле изменяется / файл записывается) метка времени в ls -l обновляется:

-rw------- 1 user user 32500 Apr 24 04:25 .bash_history

S Cript для этого будет немного сложнее, так как потребуется проходить по каталогам, требуя, чтобы он также включал логику, чтобы определить, является ли элемент каталогом. Однако в стороне от рекурсии, он будет смотреть на поля 6,7,8 вывода ls-l, в идеале запускаться один раз в конце дня, и проверять, совпадает ли метка времени с датой дня. Если это так, то он будет записывать, какие файлы были изменены или созданы.

0
ответ дан 24 April 2019 в 14:19

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

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