ต้องการเทคนิคในการบีบบังคับ sysadmins เพื่อบันทึกเหตุผลในการเข้าถึงเซิร์ฟเวอร์ prod


17

บริษัท ของฉันต้องการให้ทุกครั้งที่ผู้ใช้ลงชื่อเข้าใช้เซิร์ฟเวอร์การผลิตด้วยเหตุผลที่บุคคลนั้นเข้าสู่ระบบและการเปลี่ยนแปลงที่ผู้ใช้ตั้งใจจะต้องเข้าสู่ระบบ ทีมของฉันต้องการทำสิ่งนี้ แต่ลืมได้ง่าย ฉันต้องการช่วยให้พวกเขาจำได้ ฉันคิดว่า motd แต่ต้องการบางสิ่งบางอย่างที่แข็งแกร่งขึ้นเล็กน้อย

ความคิดแรกของฉันคือเปลี่ยนเชลล์ของผู้ใช้เป็นสคริปต์ที่ทำสิ่งที่ต้องการ

vim /logs/logindate.txt 
bash -l

มีเทคนิคมาตรฐานที่ดีกว่าหรือมากกว่าหรือไม่

หมายเหตุ: แนวคิดคือผู้ใช้เหล่านี้คือ sysadmins และต้องการสร้างรายการบันทึกโดยไม่ทำลายระบบ - พวกเขามักลืมทำเช่นนั้นบ่อยๆ ดังนั้นหากพวกเขาสามารถ ctrl-c ได้ดี ... เรากำลังสมมติว่าพวกเขาจะไม่


6
คุณกำลังพยายามค้นหาวิธีแก้ไขปัญหาทางเทคนิคสำหรับปัญหาเวิร์กโฟลว์ / ขั้นตอน IMHO ความพยายามดังกล่าวถึงวาระที่จะล้มเหลวและปัญหาเวิร์กโฟลว์ / ขั้นตอนที่เกิดขึ้นจริงควรได้รับการแก้ไขโดยตรงผ่านวิธีการที่ไม่ใช่ด้านเทคนิค
จอห์น

11
ขอบคุณเพื่อน. ฉันพยายามใช้เทคโนโลยีเพื่อส่งเสริมการเปลี่ยนแปลงพฤติกรรม ฉันคิดว่าฉันสามารถคลับพวกเขาด้วยหินทุกครั้งที่พวกเขาลืม แต่ฉันคิดว่าฝ่ายทรัพยากรบุคคลชอบวิธีการทางเทคโนโลยี

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: ข้อเสนอแนะที่เป็นประโยชน์: ถ้าคุณใช้ไฟล์แบนเพื่อให้เข้าสู่ระบบใส่ไว้ในคอมไพล์หรือ SVN เพื่อให้คุณมีประวัติ
ไมเคิลมาร์ติเน

7

ทางเลือกคือโซลูชันการจัดการบัญชีที่มีสิทธิพิเศษแทนที่จะให้สิทธิ์การเข้าถึงแก่ผู้ดูแลระบบด้วยบัญชีของตนเองบัญชีผู้ดูแลระบบจะถูกควบคุมโดยบุคคลที่สามและต้องปฏิบัติตามขั้นตอนบังคับก่อนที่ผู้ดูแลระบบจะสามารถเข้าถึงระบบการผลิตhttp: // en m.wikipedia.org/wiki/Privileged_Identity_Management


0

อีกวิธีหนึ่งในการทำให้สิ่งนี้บรรลุผลคือมีศูนย์การบันทึกข้อมูลส่วนกลางของคุณ (ฉันคิดว่า Logstash แต่คุณสามารถทำสิ่งนี้ได้ด้วยวิธีอื่น) นำ auth.log ของคุณไปใช้กับระบบการผลิตป้อนข้อมูลลงในแอป .


0

วิธีที่ฉันเห็นสิ่งนี้ถูกนำไปใช้กับลูกค้าที่ใช้ HP Server Automation *คือพวกเขาพึ่งพาการบันทึกโดยกำเนิดของเครื่องมือด้วยการรวมขั้นตอนการอนุมัติ (ฉันเคยไปยังลูกค้าหลายรายที่ไม่มี sudo หรือ root priv ยกเว้นใน Dev )

การอนุมัติสามารถทำได้ผ่านทาง Remedy และ Operations Orchestration หรือการเข้าสู่ระบบของผู้ดูแลระบบภายใน SA เป็นต้น

สิ่งที่กล่าวมาทั้งหมดนอกเหนือจากเครื่องมืออัตโนมัติสำหรับองค์กรและเครื่องมือในการจัดการ @ Aaron Copleyเป็นคำตอบที่ยอดเยี่ยม


*ฉันเป็นรุ่นพี่ HPSA, HPOO และด้านอื่น ๆ ของที่ปรึกษาชุดระบบอัตโนมัติของ HP


0

ในขณะที่หาวิธีแก้ปัญหาฉันอ่านคำตอบและความคิดของ Aaron Copley: "จะเกิดอะไรขึ้นถ้าฉันเปลี่ยนเปลือกผู้ใช้ของฉัน"

ฉันทำมันสำเร็จบนเครื่อง 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

สิ่งหนึ่งที่คุณควรทราบ: สคริปต์ไม่ได้ทำงานในฐานะรูทดังนั้นคุณอาจต้องให้สิทธิ์แก่ผู้ใช้ในการทำงานนี้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.