FreeBSD_11-系統管理——{Part_7-AUDIT}

 相關概念安全

  • EVENT
    • 事件,審計系統計錄的對象,包括用戶登錄、網絡與文件操做等各方面
  • CLASS
    • 類,對具備相同或相似屬性的事件的分組
  • RECORD
    • 記錄,審計系統生成的日誌中的每一條信息
  • TRAIL
    • 帳目,即日誌文件
  • SELECTION EXPRESSION
    • 篩選表達式,用於提取有效審計信息的語法
  • PRESELECTION
    • 預設篩選,用於指定審計日誌的記錄範圍
  • REDUCTION
    • 簡化,或稱爲濃縮,是指從日誌中提取重要內容的過程,也包括通過一段較長時間以後,對舊的審計日誌中非重要部分進行清除以釋放磁盤空間的行爲

系統支持網絡

  • # /etc/rc.conf[.local]
    auditd_enable="YES" # /usr/src/sys/amd64/conf/MyKernel
    options                AUDIT 

配置session

  • CONFIG FILE:/etc/security/audit_*
    • audit_class:類定義,其包含的具體內容定義在 audit_event 中,能夠自定義其歸屬關係
    • audit_control:行爲控制,針對整個系統
    • audit_event:可審計事件信息表
    • audit_user:對具體每一個用戶的行爲控制
    • audit_warn:自帶的警示腳本
  • 預置的 CLASS 定義
  • all    all    #匹配全部事件類別
    aa    authentication and authorization  #認証 
    ad    administrative    #系統管理行爲
    ap    application    #應用程序定義的行爲
    cl    file close    #關閉文件相關的系統調用
    ex    exec    Audit program execution  #程序運行
    fa    file attribute access    #文件屬性查看,即 stat 之類的系統調用
    fc    file create     #文件建立
    fd    file delete     #文件冊除
    fm    file attribute modify    #文件屬性更改
    fr    file read    #文件防問/讀取
    fw    file write    #文件更改或寫入
    io    ioctl    #針對 ioctl 系統調用
    ip    ipc    #進程間通訊,包括 POSIX 與 SYSTEM V 兩類
    lo    login_logout    #系統登入與登出
    na    non attributable    #無屬主事件,即登錄以前的行爲,如失敗的登錄嘗試等
    no    invalid class #無效事件,無關歸類的事件
    nt    network    #網絡請求與接受事件
    ot    other    #其它小几率事件
    pc    process    #審計進程的行爲,如某進程調用 exec 類系統調用執行了哪些額外操做
  • /etc/security/audit_user
    • 以冒號分割爲三個字段,分別爲用戶名、老是審計的事件、從不審計的事件
    • # 留空  表示記錄成功或失敗的事件
      # +  表示僅記錄執行成功的事件
      # -  表示僅記錄執行失敗的事件
      # ^  表示記錄既沒有返回成功也沒有返回失敗的事件
      # ^-  沒有返回失敗信號的事件
      # ^+  沒有返回成功信號的事件
      # 以上規則一樣適用於 audit_control 文件中的 flags 與 naflags 字段
      John:lo,+ex:no #對 John 用戶的登入登出及成功執行的程序進行審計;沒法歸類的事件不審計 www:fc,+ex:no #對 www 用戶的文件建立與成功執行程序事件進行審計;沒法歸類的事件不審計
  • /etc/security/audit_control
    • 參數含義
    • dir:/var/audit  #存放審計日誌的目錄
      dist:off  #當設定爲 on 或 yes 時,全部審計日誌文件都會在 /var/audit/dist 下建立更連接,供 auditdistd 使用,經過網絡進行安全的分佈式存儲
      flags:lo,aa  #指定對全部用戶都審計的事件類別
      host:10.1.1.2  #指定主機名稱 或 IP,追加在每條審計記錄的 header 以前;若使用主機名,在 /etc/hosts 中靜態添加,不要依靠 DNS
      naflags:lo  #指定對哪些類別中的沒法斷定執行主體的事件進行審計
      minfree:5  #存放日誌的目錄所在文件系統須要爲其它應用保留的空間百分比,如 5 表明預留 5%
      policy:cnt,argv  #全局策略參數(cnt:某個事件審計失敗時継續運行,argv:)
      filesz:10M  #指日誌大小上限,0 表示不限制;達到指定大小時,會建立一個新文件継續記錄,可使用的單位:B(Bytes)、K(Kilobytes)、M(Megabytes)、G(Gigabytes),指定的值小於 512K 時,會被忽略
      expire-after:60d AND 1G  #指定審計日誌失效條件,能夠爲時間(單位:y/d/h/s)或 size (單位:G/M/K/B)形式,能夠用 AND、OR 邏輯進行組合,如本例指建立時間超過 60 天的日誌會被清除,但若是全部日誌的總大小沒有超過 1G,則不清除,直到總大小達到 1G 

管理app

  • audit 用戶組中的成員擁有對 /var/audit 下審計日誌的查看權限
  • 審計日誌文件是以 BSD 二進制形式存儲的,必須使務對應的工具進行管理:praudit、auditreduce
  • praudit
  • #將審計日誌文件轉換爲可讀文件格式,每一個事件的記錄起始位置用 header 與 trailer 標識;-x 表示轉換爲 xml 格式
    praudit [-x] /var/audit/AUDITFILE #示例: header,133,10,execve(2),0,Mon Sep 25 15:58:03 2006, + 384 msec exec arg,finger,John #命令及參數,此處意爲執行了 finger John 命令 path,/usr/bin/finger #所執行的命令的絕對路徑 attribute,555,root,wheel,90,24918,104944 #這是對 finger 二進制文件當時的屬性的描述 subject,robert,root,wheel,root,wheel,38439,38032,42086,128.232.9.100 #audit user ID, effective user ID and group ID, real user ID and group ID, process ID, session ID, port ID, and login address return,success,0 #執行結果 trailer,133 #結束標識
    # 僅提取 John 用戶的審計日誌
    auditreduce -u John /var/audit/AUDITFILE | praudit
    # 以相似於 top 命令的界面形式動態監控
    # 注意:監控行爲自己會產生大量審計記錄,影響視圖可讀性,此方法不適用於過於精細的審計對象

    praudit /dev/auditpipe #auditpipe 設備默認只有 root 能夠訪問,若要受權 audit 用戶組中的成員使用,在 /etc/devfs.rules 中添加 add path 'auditpipe*' mode 0440 group audit
  • 日誌輪轉(rotate)
    • 審計日誌的分段存儲,由 audit 自身管理,不能使用 newsyslog
    • 手動分段的命令是:audit -n,執行後會建立一個新的日誌文件供內核寫入;能夠寫入 crontab 中定時輪轉
  • 日誌壓縮
    • 能夠在 /etc/security/audit_warn 中添加自定義腳本內容
    • # 日誌文件會在正常關閉的時候執行壓縮
      # 如:關機或到達臨界條件須要關閉舊的日誌文件進行 rotate 時
      if [ "$1" = closefile ]; then #其中的 $一、closefile、$2 等是系統預先定義好的變量與標識
              xz $2
      fi 

...分佈式

相關文章
相關標籤/搜索