Hệ thống con "kiểm toán" nhân Linux có thể làm những gì bạn cần.
ví dụ: nếu bạn chạy các lệnh này:
auditctl -a exit,always -F arch=b64 -S execve
auditctl -a exit,always -F arch=b32 -S execve
Sau đó, mọi sự kiện thực hiện được ghi lại, và rất nhiều thông tin được cung cấp xung quanh đó
ví dụ: đây là đầu ra của tôi đang chạy tail /var/log/audit/audit.log
exit=0 a0=7f0e4a21e987 a1=7f0e4a21e6b0 a2=7f0e4a21e808 a3=8 items=2 ppid=906 pid=928 auid=500 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=1 comm="tail" exe="/usr/bin/tail" subj=kernel key=(null)
type=EXECVE msg=audit(1543671660.203:64): argc=2 a0="tail" a1="/var/log/audit/audit.log"
type=CWD msg=audit(1543671660.203:64): cwd="/home/sweh"
type=PATH msg=audit(1543671660.203:64): item=0 name="/usr/bin/tail" inode=266003 dev=fd:03 mode=0100755 ouid=0 ogid=0 rdev=00:00 obj=unlabeled objtype=NORMAL cap_fp=0000000000000000 cap_fi=0000000000000000 cap_fe=0 cap_fver=0
type=PATH msg=audit(1543671660.203:64): item=1 name="/lib64/ld-linux-x86-64.so.2" inode=273793 dev=fd:03 mode=0100755 ouid=0 ogid=0 rdev=00:00 obj=unlabeled objtype=NORMAL cap_fp=0000000000000000 cap_fi=0000000000000000 cap_fe=0 cap_fver=0
type=PROCTITLE msg=audit(1543671660.203:64): proctitle=7461696C002F7661722F6C6F672F61756469742F61756469742E6C6F67
Có một số giá trị thú vị có thể được nhìn thấy; ví dụ: "auid" là 500, đó là ID đăng nhập của tôi, mặc dù "uid" bằng 0 ('tôi đang chạy theo su
). Vì vậy, mặc dù người dùng có thể đã chuyển đổi tài khoản với su
hoặc sudo
chúng tôi vẫn có thể theo dõi lại "ID kiểm toán" của họ
Bây giờ những auditctl
lệnh đó sẽ bị mất khi khởi động lại. Bạn có thể đặt chúng vào một tệp cấu hình (ví dụ: trong /etc/audit/rules.d/
thư mục, trên CentOS 7). Vị trí chính xác sẽ phụ thuộc vào phiên bản HĐH của bạn. Các auditctl
trang hướng dẫn sẽ giúp ở đây.
Hãy coi chừng, mặc dù ... điều này sẽ khiến rất nhiều thông điệp tường trình được tạo ra. Hãy chắc chắn rằng bạn có đủ dung lượng trên đĩa!
Nếu cần, các quy tắc có thể được giới hạn cho một người dùng cụ thể hoặc một lệnh cụ thể.
Và cũng hãy cẩn thận; nếu người dùng đặt mật khẩu trong lệnh thực thi (ví dụ mysql --user=username --password=passwd
) thì điều này sẽ được ghi lại.
auditd
ghi lại các đối số dòng lệnh cũng như chương trình đã chạy không? serverfault.com/questions/765179/ trộm