회사에서는 사용자가 프로덕션 서버에 로그인 할 때마다 사용자가 로그인 한 이유와 사용자가 변경하려는 변경 사항을 기록해야합니다. 우리 팀은 이것을 원하지만 잊기 쉽습니다. 나는 그들이 기억하도록 도와주고 싶다. 나는 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
주의해야 할 사항 : 스크립트는 루트로 실행되지 않으므로이 작업을 수행 할 수있는 권한을 사용자에게 제공해야 할 수도 있습니다.