prod 서버에 액세스하는 이유를 기록하기 위해 시스템 관리자를 강제하는 기술이 필요합니다 원합니다. 내 첫 번째

회사에서는 사용자가 프로덕션 서버에 로그인 할 때마다 사용자가 로그인 한 이유와 사용자가 변경하려는 변경 사항을 기록해야합니다. 우리 팀은 이것을 원하지만 잊기 쉽습니다. 나는 그들이 기억하도록 도와주고 싶다. 나는 motd를 고려했지만 조금 더 강한 것을 원합니다.

내 첫 번째 생각은 사용자의 쉘을 다음과 같은 스크립트로 변경하는 것이 었습니다.

vim /logs/logindate.txt
bash -l

더 나은 표준 기술이 있습니까?

참고 :이 사용자는 sysadmin이며 시스템을 방해하지 않고 로그 항목을 작성하려고합니다. 그래서 그들이 ctrl-c 할 수 있다면, 우리는 그들이하지 않을 것이라고 가정하고 있습니다.



답변

pam_exec.so보십시오 . PAM 시스템 인증의 세션 인터페이스에서 로그인시 스크립트를 실행할 수 있습니다. 스크립트는 사용자가 쉘을 받기 전에 루트로 실행되므로 read?로 입력을 캡처하지 못할 수 있습니다 . 그래도 시도 read하고 사용자로부터 이유를 얻고이를 사용하여 syslog에 기록 할 수 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. (대화식 쉘을 먼저 테스트하십시오.)

적어도 다른 방법이 없다면 올바른 방향으로 생각해야하기 때문에 두 옵션을 모두 남겨 두겠습니다.


답변

대안은 권한있는 계정 관리 솔루션으로, 관리자가 자신의 계정으로 액세스 권한을 부여하는 대신 관리자가 제 3 자에 의해 에스크로에 보관하고 관리자가 프로덕션 시스템에 액세스하기 전에 필수 절차를 따라야합니다 ( http : // en). m.wikipedia.org/wiki/Privileged_Identity_Management


답변

이것을 달성하는 또 다른 방법은 중앙 로깅 시설을 보유하는 것입니다 (Logstash를 생각하고 있지만 다른 방법 으로이 작업을 수행 할 수 있습니다) 생산 시스템에서 auth.log를 가져 와서 사람들이 자신의 정당성을 기록 할 수있는 앱에 공급하십시오 .


답변

HP Server Automation * 을 실행하는 고객에게 이것이 구현 된 것을 본 방법 은 승인 단계의 조합으로 도구의 고유 로깅에 의존한다는 것입니다 (개발자를 제외하고 sudo 나 root 권한이없는 여러 고객에게 왔습니다) ).

Remedy and Operations Orchestration 또는 SA 내부의 관리 로그인 등을 통해 승인을 수행 할 수 있습니다.

@ Aaron Copley대답 은 엔터프라이즈 자동화 및 관리 도구 이외에도 훌륭한 선택입니다.


* 저는 수석 HPSA, HPOO 및 기타 HP 자동화 제품군 컨설턴트입니다.


답변

해결책을 찾는 동안 Aaron Copley의 답변을 읽고 “사용자의 쉘을 변경하면 어떻게됩니까?”

우분투 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

주의해야 할 사항 : 스크립트는 루트로 실행되지 않으므로이 작업을 수행 할 수있는 권한을 사용자에게 제공해야 할 수도 있습니다.


답변