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

17

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

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

vim /logs/logindate.txt 
bash -l

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

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


источник
6
Вы пытаетесь найти техническое решение для рабочего процесса / процедурной проблемы. ИМХО, такие усилия обречены на провал, и реальный рабочий процесс / процедурная проблема должна решаться напрямую с помощью нетехнических средств.
Джон
11
Спасибо дружище. Я пытаюсь использовать технологии, чтобы способствовать изменению поведения. Полагаю, я мог бы просто бить их рок каждый раз, когда они забывают, но я думаю, что HR предпочитает технологический подход.
8
@John Не является ли целью технологии внедрение и содействие в рабочих процессах?
Майкл Мартинес
1
Дисциплинарное взыскание, вплоть до увольнения.
Майкл Хэмптон
4
Да, но вопрос был не "ты должен это сделать?" вопрос был, "ты можешь сделать это?" Одним из них является оценочное суждение; Одним из них является технический вопрос, достойный этого форума. Я уверен в своей способности управлять своей командой. Я мог бы использовать камень с большим успехом, но так много крови. Мне нравится быть милым. У меня есть хорошие админы, просто забывчивые. :) Похоже, @ Аарон-Копли - человек на этот раз. Спасибо всем!

Ответы:

19

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

Пример:

В верхней части сессии в /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. (Сначала проверьте интерактивную оболочку.)

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

Аарон Копли
источник
1
Спасибо тебе большое за это. Выглядит отлично. Если ничего другого, я могу написать небольшую вещь в C, чтобы захватить ввод. Я реализую это и дам вам знать, если это работает.
1
@BiggyDevOPs: полезное предложение: если вы используете плоский файл для хранения журнала, поместите его в git или svn, чтобы у вас была история
Майкл Мартинес,
7

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

HBruijn
источник
0

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

gWaldo
источник
0

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

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

Это все сказанное, вне автоматизации и управления предприятием средств, @ Аарон Копли «s ответ является отличным выбором.


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

кроличий садок
источник
0

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

Я сделал это успешно на моей машине с 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, поэтому вам может потребоваться предоставить пользователю некоторые разрешения, чтобы эта работа работала.

william.wd
источник