คุณต้องกำหนดค่าauditd
ให้บันทึกexecve
กิจกรรม ตัวอย่างใน RHEL5:
[root@ditirlns01 ~]# auditctl -a always,entry -S execve
WARNING - 32/64 bit syscall mismatch, you should specify an arch
[root@ditirlns01 ~]#
ฉันไม่สนใจคำเตือนส่วนโค้งและดูเหมือนจะไม่สำคัญ แต่คุณสามารถใช้-F arch=b64
หรือ-F arch=b32
ตั้งค่าหากคุณต้องการ
ผลลัพธ์ที่ได้คือ:
[root@ditirlns01 ~]# ls /tmp/whatever
ls: /tmp/whatever: No such file or directory
[root@ditirlns01 ~]# grep whatever /var/log/audit/audit.log
type=EXECVE msg=audit(1386797915.232:5527206): argc=3 a0="ls" a1="--color=tty" a2="/tmp/whatever"
type=EXECVE msg=audit(1386797927.133:5527241): argc=3 a0="grep" a1="whatever" a2="/var/log/audit/audit.log"
[root@ditirlns01 ~]#
เห็นได้ชัดว่ารวดเร็วและสกปรก แต่นั่นเป็นพื้นฐานของวิธีการที่คุณทำ สิ่งที่คุณต้องทำอาจขึ้นอยู่กับว่าคุณกำลังพยายามทำอะไร คุณสามารถลดขั้นตอนการตรวจสอบโดยใช้ตัวกรองต่าง ๆ ในauditctl
คำสั่ง แต่ฉันไม่ทราบข้อมูลใด ๆ ดังนั้นฉันจึงไม่รู้ว่าจะรวมอะไร หากคุณต้องการสิ่งที่เฉพาะเจาะจงมากขึ้นฉันขอแนะนำให้คุณตรวจสอบหน้าคนหรือโพสต์ความคิดเห็นในคำตอบนี้และฉันจะอัปเดตอีกครั้ง
หวังว่าจะช่วยผลักดันคุณไปในทิศทางที่ถูกต้อง
แก้ไข:
เนื่องจากคำถามของคุณเกี่ยวข้องกับการดูผู้ใช้คนหนึ่งฉันสามารถแสดงให้คุณเห็นว่า:
[root@ditirlns01 ~]# auditctl -a always,entry -S execve -F euid=16777216
WARNING - 32/64 bit syscall mismatch, you should specify an arch
เหมือนด้านบน แต่เฉพาะexecve
ผู้ที่ใช้งานด้วย ID ผู้ใช้ที่มีประสิทธิภาพ16777216
เท่านั้นที่จะได้รับการบันทึก หากคุณจำเป็นต้องระบุloginuid
ค่าของผู้ใช้(ผู้ที่พวกเขาเข้าสู่ระบบในตอนแรกเป็น) จากนั้นคุณกรองตามauid
:
[root@ditirlns01 ~]# auditctl -a always,entry -S execve -F auid=16777216
WARNING - 32/64 bit syscall mismatch, you should specify an arch
ตัวกรอง AUID / loginuid จะมีประโยชน์เช่นถ้าผู้ใช้จะทำsu
หรือsudo
ไปที่รูท ในสถานการณ์นั้นจะมีสิ่งต่าง ๆ มากมายที่ทำงานในฐานะรูท แต่คุณเป็นห่วงเฉพาะสิ่งที่ผู้ใช้เป็นกังวล auditctl
ยังช่วยให้คุณสามารถกรองสแต็กเพื่อให้คุณสามารถกรองทั้งeuid
และauid
:
[root@ditirlns01 ~]# auditctl -a always,entry -S execve -F auid=16777216 -F euid=0
WARNING - 32/64 bit syscall mismatch, you should specify an arch
[root@ditirlns01 ~]# ls /tmp/nashly -ltar
ls: /tmp/nashly: No such file or directory
[root@ditirlns01 ~]# grep nashly /var/log/audit/audit.log
type=EXECVE msg=audit(1386798635.199:5529285): argc=4 a0="ls" a1="--color=tty" a2="/tmp/nashly" a3="-ltar"
type=EXECVE msg=audit(1386798646.048:5529286): argc=3 a0="grep" a1="nashly" a2="/var/log/audit/audit.log"