มุมมองสดของคำสั่งเชลล์ Linux ที่ดำเนินการโดยผู้ใช้รายอื่น?


27

เป็นไปได้หรือไม่ที่ผู้ใช้รูทใน Linux มีมุมมองแบบเรียลไทม์ (หรือใกล้เคียงกับเรียลไทม์) ของคำสั่งเชลล์ที่รันโดยผู้ใช้รายอื่นที่ล็อกอินผ่านเทอร์มินัลหรือ SSH เห็นได้ชัดว่ามีการจัดเก็บใน. bash_history แต่จะถูกบันทึกไว้เมื่อผู้ใช้ออกจากระบบและสามารถปิดใช้งานได้เช่นกัน

แก้ไข: สิ่งที่ดีเลิศที่สามารถเปิดและปิดได้อย่างง่ายดาย


ttyrpldดูดี แนะนำในคำถามนี้ serverfault.com/questions/40011/…
hayalci

คำตอบ:


16

ในฐานะที่เป็น root คุณสามารถแทนที่เชลล์ของพวกเขาด้วยสคริปต์ wrapper อย่างง่ายที่บันทึกคำสั่งของพวกเขาก่อนส่งพวกเขาไปยังเชลล์จริง สิ่งนี้จะทำงานก่อนที่พวกเขาจะเข้าสู่ระบบ


20
เราทำสิ่งนี้เพื่อตรวจสอบบัญชีที่ถูกแฮ็กที่นายจ้างคนก่อนหน้า สร้าง "/ bin / bash" (สังเกตช่องว่าง) ที่เป็นตัวล้อมรอบคำสั่งสคริปต์ ทำงานเหมือนเสน่ห์ :)
ผู้บัญชาการ Keen

ฉลาดมาก! +1
EMP

9

ใช้สูดดมถ้าคุณต้องการที่จะบุกเข้าไปในเซสชั่นของผู้ใช้หรือscreen -xถ้าคุณมีความร่วมมือ

โปรดระวังว่าการสอดแนมผู้ใช้ของคุณอาจอยู่ภายใต้กฎระเบียบหรือผิดกฎหมายโดยสิ้นเชิงทั้งนี้ขึ้นอยู่กับกฎหมายท้องถิ่นของคุณ


7

การเปลี่ยนเชลล์นั้นไม่สำคัญมากนักในการหลีกเลี่ยงการแก้ไขเชลล์เองนั้นดีกว่า แต่คุณต้องแก้ไขเชลล์ทั้งหมด แครกเกอร์โปรดของเราใช้สิ่งนี้เป็นโบนัสที่เขาไม่ได้รบกวนตัวเองด้วยการปิดการใช้งาน bash_history

ssh host /bin/sh -i  

Snoopyเป็นตัวล้อมรอบฟังก์ชัน exec และบันทึกไบนารีภายนอกใด ๆ ที่ถูกเรียกใช้งาน (ไม่ใช่ shell builtins)

ข้อเสนอแนะของ @ David ซมิตกลิ่นแหม่ง ๆใช้วิธีการที่ดีกว่าก็ก๊อก pseudoterminal

ttysnoopใช้วิธีการเดียวกัน แต่ก็ไม่มีสี (ฉันอาจมีปัญหาในการบันทึกการเชื่อมต่อ ssh ไม่สามารถจำได้)

คุณสามารถลองปะ SSHเข้าสู่ระบบเซสชั่น แต่แพทช์ที่มีความเก่า

pseudopodและrootshสามารถใช้สำหรับการบันทึก sudos ที่ถูกกฎหมาย และshwatcrเป็นอีกสิ่งหนึ่งในการตรวจสอบการเข้าสู่ระบบ


สิ่งที่ssh host /bin/sh -iควรทำคืออะไร?
Mike Pennington

+1 สำหรับด้อมไม่สมบูรณ์ แต่ทำในสิ่งที่เราต้องการให้ทำ
กิน

4

หากคุณเป็นสหกรณ์ที่คุณสามารถใช้หน้าจอ GNUระหว่างสองผู้ใช้ - มีหนึ่งสร้างเซสชันหน้าจอแล้วมีคนอื่น ๆ screen -xเข้าร่วมโดยใช้

หากคุณต้องการรูทเพื่อ "สอดแนม" ผู้ใช้รายอื่นโดยที่ไม่รู้ตัวโซลูชันที่ดีที่สุดและมีประสิทธิภาพมากที่สุดอาจเป็นซอฟต์แวร์ / ฮาร์ดแวร์ของ keylogger


4

Sysdigเป็นเครื่องมืออันทรงพลังในการสำรวจระดับระบบ - นี่คือสิ่งที่คุณต้องการ;)

ตัวอย่าง:

sysdig -i spy_users

หมวดหมู่: ความปลอดภัย

spy_users แสดงกิจกรรมผู้ใช้แบบโต้ตอบ

แสดงรายการคำสั่งทุกคำสั่งที่ผู้ใช้เรียกใช้แบบโต้ตอบ (เช่นจาก bash) และทุกไดเรกทอรีที่ผู้ใช้เยี่ยมชม



1

ฉันเขียนวิธีการบันทึกคำสั่ง / builtins 'bash' ทั้งหมดลงในไฟล์ข้อความหรือเซิร์ฟเวอร์ 'syslog' โดยไม่ต้องใช้โปรแกรมปะแก้หรือเครื่องมือปฏิบัติการพิเศษ

มันง่ายในการปรับใช้เพราะเป็น shellscript ง่าย ๆ ที่ต้องถูกเรียกใช้ครั้งเดียวเมื่อเริ่มต้น 'bash'

ดูวิธีการได้ที่นี่: http://blog.pointsoftware.ch/index.php/howto-bash-audit-command-logger


ยินดีต้อนรับสู่ Server Fault! เราชอบที่คำตอบนั้นมีเนื้อหาไม่ใช่ตัวชี้ไปที่เนื้อหา วิธีนี้ช่วยให้มั่นใจได้ว่าคำตอบจะยังคงมีอยู่แม้ว่าลิงก์จะตาย ในขณะที่สิ่งนี้อาจตอบคำถามในทางทฤษฎีมันก็ควรที่จะรวมส่วนสำคัญของคำตอบที่นี่และให้ลิงค์สำหรับการอ้างอิง
user9517 รองรับ GoFundMonica


1
function spy() { 
   ptsnum=`ps awfux | grep pt[s]\/"$1" | awk '/bas[h]/{print $2}'` ; 
   /usr/bin/strace -s 1000 -t -f -p $ptsnum 2>&1 3>&1 \
        | grep -Poi 'write\(...\"[[:print:]]{1,2}\"[.][.][.][,]..\)' ; 
}

[436] klikevil@epiphany ~ $ w<br>
 09:36:43 up 12:06,  6 users,  load average: 0.46, 0.29, 0.20<br>
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT<br>
klikevil pts/0    75.125.126.8     23:05    2:19m 10:33   0.18s cmd                                      <br>
klikevil pts/1    75.125.126.8     00:18    6:50m  0.06s  0.04s sshd: klikevil [priv]<br>
klikevil tty7     :0               09:02   17:07m  2:02   0.32s x-session-manager<br>
klikevil pts/2    :0.0             09:03    3:30   0.08s  0.08s bash<br>
klikevil pts/3    :0.0             09:03    0.00s  0.76s  0.00s w<br>
klikevil pts/4    :0.0             09:06    3:13   0.46s  0.00s /bin/sh /usr/bin/thunder<br>
[437] klikevil@epiphany ~ $ spy 2<br>
write(2, "e"..., 1)<br>
write(2, "c"..., 1)<br>
write(2, "h"..., 1)<br>
write(2, "o"..., 1)<br>
write(2, " "..., 1)<br>
write(2, "s"..., 1)<br>
write(2, "u"..., 1)<br>
write(2, "p"..., 1)<br>
write(2, " "..., 1)<br>
write(2, "d"..., 1)<br>
write(2, "o"..., 1)<br>
write(2, "g"..., 1)<br>
write(2, "\n"..., 1)<br>
^C<br>

ดูเหมือนว่าจะทำงานได้ดีถ้าคุณไม่รังเกียจที่จะเรียงผ่านการแบ่งบรรทัด


1

Snoopyมีไว้สำหรับการบันทึกคำสั่งที่มีน้ำหนักเบา

หากคุณต้องการ live view ของคำสั่งที่ดำเนินการบนระบบของคุณนี่อาจเป็นได้ คำเตือน: Snoopy ไม่ใช่โซลูชันการตรวจสอบที่เหมาะสมและสามารถหลีกเลี่ยงได้ง่าย

อย่างไรก็ตามหากคุณต้องการเห็นตัวละครทุกตัวที่พิมพ์ลงในเทอร์มินัลคุณจะต้องใช้เครื่องมืออื่น

การเปิดเผย: ฉันเป็นผู้ดูแลด้อมในปัจจุบัน


-3

ลองส่งออก HISTTIMEFORMAT = "% T" รันคำสั่งสองสามคำสั่งและ "ประวัติ" หลังจากนั้น ...

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