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


17

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

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

vim /logs/logindate.txt 
bash -l

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

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


6
워크 플로 / 절차 문제에 대한 기술 솔루션을 찾고 있습니다. IMHO는 그러한 노력이 실패로 끝나고 실제 워크 플로 / 절차 문제는 비 기술적 수단을 통해 직접 해결되어야합니다.
John

11
고마워 친구. 행동 변화를 촉진하기 위해 기술을 사용하려고합니다. 나는 그들이 잊을 때마다 바위와 함께 클럽을 만들 수 있다고 생각하지만 HR은 기술적 접근법을 선호한다고 생각합니다.

8
@John 워크 플로를 구현하고 지원하는 기술 목적의 일부가 아닙니까?
Michael Martinez

1
해고를 포함한 징계 조치.
Michael Hampton

4
예,하지만 질문은 "해야합니까?"가 아닙니다. 문제는 "할 수 있니?"였습니다. 하나는 가치 판단입니다. 하나는이 포럼에 적합한 기술적 질문입니다. 팀을 관리 할 수 ​​있다고 확신합니다. 나는 큰 성공을 거두었지만 피를 많이 사용할 수있었습니다. 나는 좋은 것을 좋아합니다. 나는 잘 잊어 버린 관리자가 있습니다. :) 이번에는 @ aaron-copley가 남자 인 것 같습니다. 모두 감사합니다!

답변:


19

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. (대화식 쉘을 먼저 테스트하십시오.)

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


1
정말 감사합니다. 완벽 해 보인다. 다른 것이 없으면 입력을 캡처하기 위해 C로 작은 것을 쓸 수 있습니다. 이것을 구현하고 작동하는지 알려 드리겠습니다.

1
@BiggyDevOPs : 유용한 제안 : 플랫 파일을 사용하여 로그를 유지하는 경우 git 또는 svn에 저장하여 기록을 가지십시오
Michael Martinez


0

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


0

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

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

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


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


0

해결책을 찾는 동안 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

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.