HƯỚNG DẪN Linux audit files để xem ai làm thay đổi một tập tin

Thảo luận trong 'KIẾN THỨC VPS/SERVER' bắt đầu bởi quyet1990, 17/12/16.

  1. quyet1990

    quyet1990 New Member

    Tham gia ngày:
    22/10/16
    Bài viết:
    220
    Đã được thích:
    0
    Đây là một trong những câu hỏi quan trọng nhiều sys mới quản trị yêu cầu:

    Làm thế nào để kiểm toán (audit) các sự kiện tập tin như đọc/ghi vv? Làm thế nào tôi có thể sử dụng audit để xem ai đã thay đổi một tập tin trong Linux?

    Câu trả lời là sử dụng hệ thống audit . Modern Linux kernel (2.6.x) đi kèm với daemon auditd. Nó chịu trách nhiệm viết hồ sơ audit vào ổ đĩa. Trong khi khởi động, các quy tắc trong /etc/audit.rules được đọc bởi daemon này. Bạn có thể mở tập tin /etc/audit.rules và thực hiện thay đổi như thiết lập vị trí tập tin audit log và tùy chọn khác. Các tập tin mặc định là đủ tốt để bắt đầu với auditd.

    Để sử dụng cơ sở audit bạn cần sử dụng các tiện ích sau đây
    => Auditctl - một lệnh để hỗ trợ việc kiểm soát hệ thống audit. Bạn có thể nhận được trạng thái, thêm hoặc xóa các quy tắc vào hệ thống kiểm tra hạt nhân. Thiết lập một đồng hồ trên một tập tin được thực hiện bằng cách sử dụng lệnh này:
    => Ausearch - một lệnh có thể truy vấn các audit daemon logs dựa trên các sự kiện trên các tiêu chí tìm kiếm khác nhau.
    => Aureport - một công cụ tạo báo cáo tóm tắt các audit daemon logs.

    Cài đặt gói audit
    Sử dụng lệnh yum hay up2date để cài đặt gói
    Mã:
     yum install audit 
    Hoặc:
    Mã:
     up2date install audit 
    Tự động bắt đầu dịch vụ auditd khi khởi động
    Mã:
     ntsysv 
    Hoặc:
    Mã:
     chkconfig auditd on 
    Bây giờ bắt đầu dịch vụ:
    Mã:
     /etc/init.d/auditd start 
    Làm thế nào để tôi đặt một watch trên một tập tin cho kiểm toán?
    Chúng ta hãy nói rằng bạn muốn kiểm tra một tập tin /etc/passwd. Bạn cần phải gõ lệnh như sau:
    Mã:
     auditctl -w /etc/passwd -p war -k password-file 
    Trong đó:
    -w /etc/passwd: Chèn một watch cho các đối tượng hệ thống tập tin tại đường dẫn của chúng.
    -p war: Thiết lập quyền hạn bộ lọc cho một hệ thống tập tin watch. Nó có thể là r cho đọc, w cho viết, x cho thực thi, a cho phụ thêm.
    -k password-file: Thiết lập một khóa lọc trên một file /etc/passwd (đồng hồ). Mật khẩu tập tin là một filterkey (chuỗi của văn bản có thể dài tới 31 byte). Nó là duy nhất dùng xác định các hồ sơ kiểm toán. Bạn cần sử dụng chuỗi mật khẩu tập tin hoặc cụm từ trong khi tìm kiếm các bản ghi kiểm toán.

    Chờ một thời gian hoặc người sử dụng bình thường có thể sử dụng các lệnh sau:
    Mã:
    grep 'something' /etc/passwd
    vi /etc/passwd 

    Sau đây là các ví dụ khác:
    Các luật tập tin hệ thống audit
    Thêm một watch trên "/etc/shadow" với filterkey là "shadow-file" mà tạo ra các hồ sơ cho "đọc, viết, thực thi, và gắn thêm" vào "shadow"
    Mã:
     auditctl -w /etc/shadow -k shadow-file -p rwxa 
    syscall audit rule
    Những quy tắc tiếp theo ngăn chặn kiểm toán cho mount syscall exits
    Mã:
     auditctl -a exit,never -S mount 
    Thêm watch "tmp" với một filterkey NULL mà tạo ra các hồ sơ "thực thi" vào "/tmp" (tốt cho một máy chủ web)
    Mã:
     auditctl -w /tmp -p e -k webserver-watch-tmp 
    syscall audit rule sử dụng pid
    Để xem tất cả syscalls thực hiện bởi một chương trình gọi là sshd (pid - 1005):
    Mã:
     auditctl -a entry,always -S all -F pid=1005 
    Làm thế nào để tìm ra người thay đổi hoặc truy cập một tập tin /etc/passwd?
    Sử dụng lệnh ausearch như sau:
    Mã:
     ausearch -f /etc/passwd 
    Hoặc:
    Mã:
     ausearch -f /etc/passwd | less 
    Hoặc:
    Mã:
     ausearch -f /etc/passwd -i | less 
    Trong đó:
    -f /etc/passwd: Chỉ tìm kiếm tập tin này
    -i: Giải thích các thực thể số vào văn bản. Ví dụ, uid được chuyển đổi sang tên tài khoản.

    Ví dụ kết quả đầu ra:
    Mã:
    ----
    type=PATH msg=audit(03/16/2007 14:52:59.985:55) : name=/etc/passwd flags=follow,open inode=23087346 dev=08:02 mode=file,644 ouid=root ogid=root rdev=00:00
    type=CWD msg=audit(03/16/2007 14:52:59.985:55) :  cwd=/webroot/home/lighttpd
    type=FS_INODE msg=audit(03/16/2007 14:52:59.985:55) : inode=23087346 inode_uid=root inode_gid=root inode_dev=08:02 inode_rdev=00:00
    type=FS_WATCH msg=audit(03/16/2007 14:52:59.985:55) : watch_inode=23087346 watch=passwd filterkey=password-file perm=read,write,append perm_mask=read
    type=SYSCALL msg=audit(03/16/2007 14:52:59.985:55) : arch=x86_64 syscall=open success=yes exit=3 a0=7fbffffcb4 a1=0 a2=2 a3=6171d0 items=1 pid=12551 auid=unknown(4294967295) uid=lighttpd gid=lighttpd euid=lighttpd suid=lighttpd fsuid=lighttpd egid=lighttpd sgid=lighttpd fsgid=lighttpd comm=grep exe=/bin/grep
    
    Hãy để chúng tôi giải thích kết quả đầu ra
    • audit(03/16/2007 14:52:59.985:55): Thời gian audit log
    • uid = lighttpd gid = lighttpd: id người dùng trong định dạng số. Bằng cách sử dụng tùy chọn -i với lệnh, bạn có thể chuyển đổi hầu hết các dữ liệu số sang định dạng con người có thể đọc được. Trong ví dụ của chúng tôi, người sử dụng là lighttpd sử dụng lệnh grep để mở một tập tin
    • exe = "/bin/grep": Lệnh grep sử dụng để truy cập tập tin /etc/passwd
    • perm_mask = read: Tập tin được mở cho hoạt động đọc
    Vì vậy, từ các tập tin log bạn có thể thấy rõ người đọc tập tin sử dụng lệnh grep hoặc thay đổi vào một tập tin sử dụng soạn thảo văn bản vi/vim. Log files cung cấp rất nhiều các thông tin khác.

    Ví dụ hữu ích khác
    Tìm kiếm cho các sự kiện với ngày tháng và thời gian. Nếu như thời gian được bỏ qua, hôm nay được giả định. Nếu thời gian là bỏ qua, bây giờ được giả định. Sử dụng đồng hồ thời gian 24 giờ hơn là AM hay PM để xác định thời gian. Một ví dụ là ngày 10/24/05. Một ví dụ về thời gian là 18:00:00.
    Mã:
    ausearch -ts today -k password-file
    ausearch -ts 3/12/07 -k password-file 
    Tìm kiếm một sự kiện phù hợp với các tên file thực thi được sử dụng tùy chọn -x. Ví dụ tìm ra những người đã truy cập /etc/passwd sử dụng lệnh rm:
    Mã:
    ausearch -ts today -k password-file -x rm
    ausearch -ts 3/12/07 -k password-file -x rm 
    Tìm kiếm một sự kiện với tên người sử dụng nhất định (UID). Ví dụ tìm hiểu xem người dùng vivek (UID 506) cố gắng để mở /etc/passwd:
    Mã:
    ausearch -ts today -k password-file -x rm -ui 506
    ausearch -k password-file -ui 506 
     

Chia sẻ trang này

Đang tải...