Назад | Перейти на главную страницу

Нужен способ заставить системных администраторов регистрировать причину доступа к производственному серверу

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

Моей первой мыслью было изменить оболочку пользователя на сценарий, который делает что-то вроде

vim /logs/logindate.txt 
bash -l

Есть ли лучшая или более стандартная техника?

Примечание. Идея состоит в том, что эти пользователи являются системными администраторами и хотели бы делать запись в журнале, не нарушая работу системы - они просто часто забывают это делать. Итак, если они могут Ctrl-C, ну ... мы предполагаем, что они этого не сделают.

смотреть на pam_exec.so. Вы можете запустить сценарий при входе в систему в интерфейсе сеанса PAM system-auth. Сценарий запускается с правами root до того, как пользователь получит оболочку, поэтому он не может захватывать ввод с помощью read? Однако вы можете попробовать и использовать read чтобы получить причину от пользователя и зарегистрировать ее в системном журнале с logger заявление. (Я пропустил ниже, но вы можете перехватить CTRL + C, чтобы никто не мог выйти без причины.) $ PAM_USER будет установлен для человека, вошедшего в систему, поэтому вы можете включить это в оператор журнала.

Пример:

В верхней части сеанса в /etc/pam.d/system-auth:

session required pam_exec.so /usr/local/sbin/getreason

И / usr / local / sbin / getreason:

#!/bin/bash
read -p "Reason for logging into production: " reason
logger -t $(basename $0) "$PAM_USER logged in with reason: ${reason}"

Приносим извинения, если это не сработает. Я не тестировал, но недавно сделал нечто подобное. (Входные данные не регистрировались.)


Редактировать: Чем больше я думаю об этом, тем больше не думаю, что это сработает, из-за стадии, на которой он работает. Такой же getreason скрипт должен работать после замены $PAM_USER с участием $(logname), но может потребоваться выполнить его в /etc/profile. (Сначала проверьте интерактивную оболочку.)

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

Альтернативой является решение для управления привилегированными учетными записями, при котором вместо предоставления администраторам доступа с их собственной учетной записью учетные записи администраторов хранятся на условном депонировании третьей стороной, и необходимо выполнить обязательные процедуры, прежде чем администраторы смогут получить доступ к производственным системам. http://en.m.wikipedia.org/wiki/Privileged_Identity_Management

Другой способ добиться этого - иметь ваше централизованное средство ведения журнала (я думаю, Logstash, но вы можете сделать это другими способами), чтобы взять ваш auth.log в производственных системах, передать его в приложение, где люди могут регистрировать свои оправдания. .

Я видел, как это реализовано у клиентов, использующих HP Server Automation* заключается в том, что они полагаются на внутреннее ведение журнала инструмента с комбинацией шагов утверждения (я был у нескольких клиентов, у которых нет sudo или root-прав, кроме Dev).

Утверждение может быть выполнено с помощью чего-то вроде Remedy and Operations Orchestration или административного входа в SA и т. Д.

При этом, помимо средств автоматизации и управления предприятием, @Аарон Коплис ответ отличный выбор.


* Я старший специалист по HPSA, HPOO и другим аспектам консультанта HP по автоматизации.

В поисках решения я прочитал ответ Аарона Копли и подумал: «Что, если я изменю оболочку моего пользователя?»

Я успешно сделал это на своей машине с Ubuntu 14.04:

# usermod -s /usr/bin/loginScript username

В вашем скрипте вы можете просто зафиксировать причину входа в систему. Моя такая:

#!/bin/bash
read -p "Tell me why you logged in:" reason
echo "You told me: $reason" >> /var/log/reasonLogin.log
/bin/bash

Следует отметить одну вещь: сценарий не запускается от имени пользователя root, поэтому вам, возможно, придется предоставить пользователю некоторые разрешения, чтобы это работало.