天天看點

Linux下安全審計audit 系統審計 記錄root操作Linux下安全審計audit 系統審計

Linux下安全審計audit 系統審計

1.審計介紹

Linux 審計系統提供了一種跟蹤系統上與安全相關的資訊的方法。根據預先配置的規則,Audit 會生成日志條目,以盡可能多地記錄有關系統上發生的事件的資訊。此資訊對于關鍵任務環境确定安全政策的違反者及其執行的操作至關重要。審計不會為您的系統提供額外的安全性;相反,它可用于發現違反您系統上使用的安全政策的情況。可以通過其他安全措施(例如 SELinux)進一步防止這些違規行為。

audit能夠在日志中記錄的資訊有:

  • 時間的日期時間、類型和結果
  • 主體和客體的敏感度标簽
  • 事件與觸發事件的使用者身份的關聯
  • 對審計配置的所有修改和通路審計日志檔案的嘗試
  • 身份驗證機制的所有用途,例如 SSH、Kerberos 等
  • 對任何受信任資料庫的更改,例如

    /etc/passwd

  • 嘗試将資訊導入或導出系統
  • 根據使用者身份、主題和對象标簽以及其他屬性包括或排除事件

使用審計系統也是許多與安全相關的認證的要求。稽核旨在滿足或超過以下認證或合規指南的要求:

  • 受控通路保護配置檔案 (CAPP)
  • 标記安全保護配置檔案 (LSPP)
  • 規則集基礎通路控制 (RSBAC)
  • 國家工業安全計劃操作手冊 (NISPOM)
  • 聯邦資訊安全管理法案 (FISMA)
  • 支付卡行業 — 資料安全标準 (PCI-DSS)
  • 安全技術實施指南 (STIG)

審計還包括:

  • 由國家資訊保障合作夥伴 (NIAP) 和最佳安全行業 (BSI) 評估。
  • 在 Red Hat Enterprise Linux 5 上通過 LSPP/CAPP/RSBAC/EAL4+ 認證。
  • 在 Red Hat Enterprise Linux 6 上通過作業系統保護配置檔案/評估保證級别 4+ (OSPP/EAL4+) 認證。

2.審計能做什麼

2.1 看檔案通路

審計可以跟蹤檔案或目錄是否已被通路、修改、執行,或者檔案的屬性是否已更改。這很有用,例如,檢測對重要檔案的通路并在這些檔案之一損壞的情況下提供審計跟蹤。

2.2 監控系統調用

可以将審計配置為每次使用特定系統調用時生成日志條目。這可以用來,例如,通過監控來跟蹤更改系統時間

settimeofday

clock_adjtime

和其他時間相關的系統調用。

2.3 記錄使用者運作的指令

由于審計可以跟蹤檔案是否已被執行,是以可以定義許多規則來記錄特定指令的每次執行。例如,可以為

/bin

目錄中的每個可執行檔案定義規則。然後可以通過使用者 ID 搜尋生成的日志條目,以生成每個使用者執行指令的審計跟蹤。

2.4 記錄安全事件

pam_faillock

認證子產品能夠記錄失敗的登入嘗試的。還可以設定稽核以記錄失敗的登入嘗試,并提供有關嘗試登入的使用者的其他資訊。

2.5 搜尋事件

Audit 提供了ausearch實用程式,該實用程式可用于過濾日志條目并根據許多條件提供完整的審計跟蹤。

2.6 運作摘要報告

該aureport實用程式可用于生成,除其他事項外,記錄的事件每日報告。然後系統管理者可以分析這些報告并進一步調查可疑活動。

2.7 監控網絡通路

iptables和ebtables實用程式可以被配置為觸發審計事件,進而允許系統管理者監控網絡通路。

3.審計系統架構

審計系統由兩個主要部分組成:使用者空間應用程式和實用程式,以及核心端系統調用處理。核心元件接收來自使用者空間應用程式的系統調用,并通過三個過濾器之一過濾它們:user、task或exit。一旦系統調用通過這些過濾器之一,它就會通過排除過濾器發送,排除過濾器根據稽核規則配置将其發送到稽核守護程式以進行進一步處理。

[外鍊圖檔轉存失敗,源站可能有防盜鍊機制,建議将圖檔儲存下來直接上傳(img-KnMsoByf-1632449444073)(C:\Users\15856\AppData\Roaming\Typora\typora-user-images\image-20210923164817910.png)]

使用者空間審計守護程序從核心收集資訊并在日志檔案中建立日志檔案條目。其他審計使用者空間實用程式與審計守護程序、核心審計元件或審計日志檔案互動:

  • audisp — 審計排程程式守護程序與審計守護程序互動并将事件發送到其他應用程式以進行進一步處理。這個守護程序的目的是提供一個插件機制,以便實時分析程式可以與審計事件互動。
  • auditctl — 審計控制實用程式與核心審計元件互動,以控制事件生成過程的許多設定和參數。
  • 其餘的審計實用程式将審計日志檔案的内容作為輸入,并根據使用者的要求生成輸出。例如,aureport實用程式生成所有記錄事件的報告。

4.安裝審計包

系統一般預設就有

yum install audit
           

5.配置審計服務

審計守護程序可以在

/etc/audit/auditd.conf

配置檔案中進行配置。此檔案包含修改稽核守護程式行為的配置參數。任何空行或井号 (

#

)後面的任何文本都将被忽略。

5.1 配置auditd CAPP環境

預設

auditd

配置應該适用于大多數環境。但是,如果您的環境必須滿足受控通路保護配置檔案(CAPP)設定的标準,這是通用标準認證的一部分,則必須使用以下設定配置稽核守護程式:

  • 儲存稽核日志檔案的目錄(通常為

    /var/log/audit/

    )應駐留在單獨的分區上。這可以防止其他程序占用此目錄中的空間,并為審計守護程式提供對剩餘空間的準确檢測。
  • 該*

    max_log_file

    *參數指定單個審計日志檔案的最大大小,必須設定為充分利用儲存審計日志檔案的分區上的可用空間。
  • 該*

    max_log_file_action

    參數決定一旦

    max_log_file

    *達到設定的限制時采取的操作,應設定

    keep_logs

    為防止審計日志檔案被覆寫。
  • 該*

    space_left

    參數指定磁盤上剩餘的可用空間量,在該

    space_left_action

    參數中設定的操作将被觸發,必須設定為一個數字,以便管理者有足夠的時間來響應并釋放磁盤空間。該

    space_left

    *值取決于生成稽核日志檔案的速率。
  • 建議将*

    space_left_action

    *參數設定為

    email

    exec

    使用适當的通知方法。
  • 該*

    admin_space_left

    參數指定

    admin_space_left_action

    *觸發參數中設定的操作的絕對最小可用空間量,必須設定為一個值,以便留出足夠的空間來記錄管理者執行的操作。
  • 該*

    admin_space_left_action

    *參數必須設定為

    single

    使系統進入單使用者模式并允許管理者釋放一些磁盤空間。
  • 該*

    disk_full_action

    *參數指定在儲存稽核日志檔案的分區上沒有可用空間時觸發的操作,必須設定為

    halt

    single

    。這可確定系統在 Audit 無法再記錄事件時關閉或以單使用者模式運作。
  • 的*

    disk_error_action

    *,其中規定,被觸發的情況下,上儲存審計日志檔案的分區檢測到錯誤的動作,必須設定為

    syslog

    single

    halt

    ,這取決于你的本地安全政策有關硬體故障的處理。
  • 所述*

    flush

    *配置參數必須設定為

    sync

    data

    。這些參數確定所有審計事件資料與磁盤上的日志檔案完全同步。

其餘配置選項應根據您的本地安全政策進行設定。

6.定義審計規則

審計系統根據一組規則運作,這些規則定義了要在日志檔案中捕獲的内容。可以指定三種類型的審計規則:

  • 控制規則 — 允許修改審計系統的行為及其某些配置。
  • 檔案系統規則——也稱為檔案監視,允許審計對特定檔案或目錄的通路。
  • 系統調用規則——允許記錄任何指定程式進行的系統調用。

可以使用auditctl實用程式在指令行上指定審計規則(請注意,這些規則在重新啟動後不會持久),或寫入

/etc/audit/audit.rules

檔案。以下兩節總結了定義審計規則的兩種方法。

6.1 使用auditctl實用程式定義審計規則

與審計服務和審計日志檔案互動的所有指令都需要 root 權限。確定以 root 使用者身份執行這些指令。

auditctl

指令允許您控制審計系統的基本功能并定義決定記錄哪些審計事件的規則。

6.1.1 定義控制規則

以下是一些允許您修改審計系統行為的控制規則:

  • -b

    設定核心中現有審計緩沖區的最大數量,例如:
    auditctl -b 8192
               
  • -f

    auditctl -f 2
               
    上述配置會在發生嚴重錯誤時觸發核心恐慌。
  • -e

    auditctl -e 2
               
  • -r

    設定每秒生成消息的速率,例如:
    auditctl -r 0
               
    上述配置對生成的消息沒有設定速率限制。
  • -s

    報告審計系統的狀态,例如:
    [[email protected] ~]# auditctl -s
    enabled 1
    failure 2
    pid 5613
    rate_limit 0
    backlog_limit 8192
    lost 0
    backlog 0
    loginuid_immutable 0 unlocked
    
               
  • -l

    列出所有目前加載的審計規則,例如:
    [[email protected] ~]# auditctl -l
    No rules
    
               
  • -D

    删除所有目前加載的審計規則,例如:
    [[email protected] ~]# auditctl -D
    No rules
    
               

6.1.2 定義檔案系統規則

文法:

auditctl -w path_to_file -p permission -k key_name

解釋:

  • path_to_file:被審計的檔案或目錄
  • 權限:
    • r

      —對檔案或目錄的讀取權限
    • w

      —對檔案或目錄的寫通路權限
    • x

      —執行對檔案或目錄的通路
    • a

      —更改檔案或目錄的屬性
  • key_name:是一個可選字元串,可幫助您識别生成特定日志條目的規則或規則集

例如:

  • 要定義記錄對

    /etc/passwd

    檔案的所有寫通路和每個屬性更改的規則,請執行以下指令:
    auditctl -w /etc/passwd -p wa -k passwd_change
               
    請注意,

    -k

    選項後面的字元串是任意的。
  • 要定義一個規則來記錄

    /etc/selinux/

    目錄中所有檔案的所有寫通路權限和每個屬性更改,請執行以下指令:
    auditctl -w /etc/selinux/ -p wa -k selinux_change
               
  • 要定義記錄

    /sbin/insmod

    指令執行的規則,将子產品插入 Linux 核心,請執行以下指令:
    auditctl -w /sbin/insmod -p x -k module_insertion
               

6.1.3 定義系統調用規則

文法:

auditctl -a action,filter -S system_call -F field=value -k key_name

解釋:

  • action和filter指定何時記錄某個事件。action可以是always或nerver。filter指定将哪個核心規則比對過濾器應用于事件。規則的比對濾波器可以是以下中的一個:task、exit、user、exclude。
  • system_call通過名稱指定系統調用。可以在/usr/include/asm/unistd_64.h檔案中找到所有系統調用清單。多個系統調用可以組合成一個規則,每個都在-s選項後指定
  • filed=value指定其他選項,這些選項進一步修改規則以根據指定的體系結構、組ID、程序ID等比對事件。
  • key_name是一個可選字元串,可幫助我們識别生成特定日志條目的規則或規則集。

例如:

  • 要定義一個規則,在程式每次使用

    adjtimex

    settimeofday

    系統調用時建立日志條目,并且系統使用 64 位架構,請執行以下指令:
    auditctl -a always,exit -F arch=b64 -S adjtimex -S settimeofday -k time_change
               
  • 定義一個規則,每次檔案被ID為500或更大的系統使用者删除或重命名時建立一個日志條目(該

    -F auid!=4294967295

    選項用于排除未設定登入UID的使用者),執行以下指令:
    auditctl -a always,exit -S unlink -S unlinkat -S rename -S renameat -F "auid>=500" -F auid!="4294967295" -k delete
               
  • 也可以使用系統調用規則文法定義檔案系統規則。以下指令為系統調用建立一個類似于

    -w /etc/shadow -p wa

    檔案系統規則的規則:
    auditctl -a always,exit -F path=/etc/shadow -F perm=wa
               

6.2 在 /ETC/AUDIT/AUDIT.RULES 檔案中定義持久審計規則和控制

要定義在重新啟動後持續存在的稽核規則,您必須将它們包含在

/etc/audit/audit.rules

檔案中。此檔案使用相同的

auditctl

指令行文法來指定規則。任何空行或井号 (

#

)後面的任何文本都将被忽略。

auditctl

指令還可用于從帶有

-R

選項的指定檔案中讀取規則,例如:

auditctl -R  /usr/share/doc/audit-2.8.5/rules/xxx.rules
           

定義控制規則

一個檔案可以隻包含修改審計系統的行為如下控制規則:

-b

-D

-e

-f

,和

-r

6.2.1 控制規則

# 删除之前的所有規則
-D

# 設定緩沖區大小
-b 8192

# 使配置不可變——需要重新開機才能更改審計規則
-e 2

# 發生故障時的恐慌
-f 2

# 每秒最多生成 100 條審計消息
-r 100
           

6.2.2 定義檔案系統和系統調用規則

檔案系統和系統調用規則是使用

auditctl

文法定義的

例如:檔案系統和系統調用規則

audit.rules

-w /etc/passwd -p wa -k passwd_changes
-w /etc/selinux/ -p wa -k selinux_changes
-w /sbin/insmod -px -k module_insertion

-a always,exit -F arch=b64 -S adjtimex -S settimeofday -k time_change
-a always,exit -S unlink -S unlinkat -S rename -S renameat -F auid>=500 -F auid!=4294967295 -k delete
           

6.2.3 預配置的規則檔案

在目錄中,審計包根據各種認證标準提供了一組預配置的規則檔案:

/usr/share/doc/audit-*version*/rules

  • nispom.rules

    ——符合《國家工業安全方案操作手冊》第八章要求的審計規則配置。
  • capp.rules

    — 滿足受控通路保護配置檔案(CAPP)設定的要求的審計規則配置,這是通用标準認證的一部分。
  • lspp.rules

    — 符合标記安全保護配置檔案(LSPP)設定要求的審計規則配置,這是通用标準認證的一部分。
  • stig.rules

    — 符合安全技術實施指南 (STIG) 規定要求的審計規則配置。

7.審計日志檔案

預設情況下,審計系統将日志條目存儲在

/var/log/audit/audit.log

檔案中;如果啟用日志輪換,則輪換

audit.log

檔案存儲在同一目錄中。

以下稽核規則會記錄每次讀取或修改

/etc/ssh/sshd_config

檔案的嘗試:

-w /etc/ssh/sshd_config -p warx -k sshd_config
           

如果

auditd

守護程序正在運作,運作以下指令會在審計日志檔案中建立一個新事件:

~]# cat /etc/ssh/sshd_config
           

audit.log

檔案中的 此事件如下所示:

type=SYSCALL msg=audit(1632445286.424:140): arch=c000003e syscall=2 success=yes exit=3 a0=7ffdc4adf839 a1=0 a2=1fffffffffff0000 a3=7ffdc4add9e0 items=1 ppid=7725 pid=8290 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts1 ses=3 comm="cat" exe="/usr/bin/cat" key="sshd_config"
type=CWD msg=audit(1632445286.424:140):  cwd="/root"
type=PATH msg=audit(1632445286.424:140): item=0 name="/etc/ssh/sshd_config" inode=37244245 dev=fd:00 mode=0100600 ouid=0 ogid=0 rdev=00:00 objtype=NORMAL cap_fp=0000000000000000 cap_fi=0000000000000000 cap_fe=0 cap_fver=0


           

上述事件由三條記錄(每條以

type=

關鍵字開頭)組成,它們共享相同的時間戳和序列号。每條記錄由若幹對組成,由空格或逗号分隔。對上述事件的詳細分析如下:

  • 第一條記錄
    • type=SYSCALL

      type

      字段包含記錄的類型。在此示例中,該

      SYSCALL

      值指定此記錄是由對核心的系統調用觸發的。
    • msg=audit(1364481363.243:24287)

      msg

      字段記錄:
      • 表單中記錄的時間戳和唯一 ID 。如果多條記錄是作為同一審計事件的一部分生成的,則它們可以共享相同的時間戳和 ID。

        audit(*time_stamp*:*ID*)

      • 核心或使用者空間應用程式提供的 各種特定于事件的對。

        *name*=*value*

    • arch=c000003e

      arch

      字段包含有關系統 CPU 架構的資訊。值

      c000003e

      以十六進制表示法編碼。

      ausearch

      使用指令搜尋審計記錄時,使用

      -i

      --interpret

      選項自動将十六進制值轉換為人類可讀的等效值。該

      c000003e

      值被解釋為

      x86_64

    • syscall=2

      syscall

      字段記錄發送到核心的系統調用的類型。值 ,

      2

      可以與

      /usr/include/asm/unistd_64.h

      檔案中人類可讀的等價物相比對。在這種情況下,

      2

      open

      系統調用。請注意,ausyscall實用程式允許您将系統調用号轉換為其人類可讀的等效項。使用該

      ausyscall --dump

      指令顯示所有系統調用及其編号的清單。
    • success=yes

      success

      字段記錄了該特定事件中記錄的系統調用是成功還是失敗。
    • exit=3

      exit

      字段包含一個值,用于指定系統調用傳回的退出代碼。該值因系統調用而異。您可以使用以下指令将該值解釋為人類可讀的等效值:(

      ausearch --interpret --exit 3

      假設您的稽核日志包含一個失敗并顯示退出代碼的事件

      3

      )。
    • a0=7ffdc4adf839 a1=0 a2=1fffffffffff0000 a3=7ffdc4add9e0

      a0

      a3

      場記錄的前四個參數,編碼以十六進制表示,在此事件中的系統調用。這些參數取決于所使用的系統調用;它們可以由ausearch實用程式解釋。
    • items=1

      items

      字段包含事件中的路徑記錄數。
    • ppid=7725

      ppid

      字段記錄父程序 ID (PPID)。在這種情況下,

      7725

      bash

      程序的 PPID 。
    • pid=8290

      pid

      字段記錄程序 ID (PID)。在這種情況下,

      8290

      cat

      程序的 PID 。
    • auid=0

      auid

      字段記錄審計使用者 ID,即 loginuid。該 ID 在登入時配置設定給使用者,即使使用者的身份發生變化(例如,通過使用

      su - john

      指令切換使用者帳戶)也會被每個程序繼承。
    • uid=0

      uid

      字段記錄啟動分析程序的使用者的使用者 ID。可以使用以下指令将使用者 ID 解釋為使用者名:. 在本例中,是 user 的使用者 ID 。

      ausearch -i --uid UID

      [[email protected] rules]# ausearch -i --uid 0
      ----
      type=PROCTITLE msg=audit(09/23/2021 21:01:26.424:140) : proctitle=cat /etc/ssh/sshd_config
      type=PATH msg=audit(09/23/2021 21:01:26.424:140) : item=0 name=/etc/ssh/sshd_config inode=37244245 dev=fd:00 mode=file,600 ouid=root ogid=root rdev=00:00 objtype=NORMAL cap_fp=none cap_fi=none cap_fe=0 cap_fver=0
      type=CWD msg=audit(09/23/2021 21:01:26.424:140) :  cwd=/root
      type=SYSCALL msg=audit(09/23/2021 21:01:26.424:140) : arch=x86_64 syscall=open success=yes exit=3 a0=0x7ffdc4adf839 a1=O_RDONLY a2=0x1fffffffffff0000 a3=0x7ffdc4add9e0 items=1 ppid=7725 pid=8290 auid=root uid=root gid=root euid=root suid=root fsuid=root egid=root sgid=root fsgid=root tty=pts1 ses=3 comm=cat exe=/usr/bin/cat key=sshd_config
      
                 
    • euid=500

      euid

      字段記錄啟動分析程序的使用者的有效使用者 ID。
    • suid=500

      suid

      字段記錄啟動分析程序的使用者的設定使用者 ID。
    • fsuid=500

      fsuid

      字段記錄啟動分析程序的使用者的檔案系統使用者 ID。
    • egid=500

      egid

      字段記錄了啟動分析程序的使用者的有效組 ID。
    • sgid=500

      sgid

      字段記錄啟動分析程序的使用者的集合 ID。
    • fsgid=500

      fsgid

      字段記錄啟動分析程序的使用者的檔案系統組 ID。
    • tty=pts1

      tty

      字段記錄調用分析程序的終端。
    • ses=3

      ses

      字段記錄從中調用分析程序的會話的會話 ID。
    • comm="cat"

      comm

      字段記錄用于調用分析程序的指令的指令行名稱。在這種情況下,該

      cat

      指令用于觸發此稽核事件。
    • exe="/usr/bin/cat"

      exe

      字段記錄了用于調用分析過程的可執行檔案的路徑。
    • key="sshd_config"

      key

      字段記錄了與在稽核日志中生成此事件的規則相關聯的管理者定義的字元串。

audit.log

檔案中的 此事件如下所示:

type=SYSCALL msg=audit(1632445286.424:140): arch=c000003e syscall=2 success=yes exit=3 a0=7ffdc4adf839 a1=0 a2=1fffffffffff0000 a3=7ffdc4add9e0 items=1 ppid=7725 pid=8290 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts1 ses=3 comm="cat" exe="/usr/bin/cat" key="sshd_config"
type=CWD msg=audit(1632445286.424:140):  cwd="/root"
type=PATH msg=audit(1632445286.424:140): item=0 name="/etc/ssh/sshd_config" inode=37244245 dev=fd:00 mode=0100600 ouid=0 ogid=0 rdev=00:00 objtype=NORMAL cap_fp=0000000000000000 cap_fi=0000000000000000 cap_fe=0 cap_fver=0


           
  • 第二條記錄
    • type=CWD

      在第二條記錄中,

      type

      字段值為

      CWD

      — 目前工作目錄。此類型用于記錄調用第一條記錄中指定的系統調用的程序所執行的工作目錄。

      此記錄的目的是記錄目前程序的位置,以防在關聯的 PATH 記錄中捕獲到相對路徑。這樣就可以重建絕對路徑。

    • msg=audit(1364481363.243:24287)

      msg

      字段與第一條記錄中的值具有相同的時間戳和 ID 值。
    • cwd="/home/shadowman"

      cwd

      字段包含調用系統調用的目錄的路徑。
  • 第三條記錄
    • type=PATH

      在第三條記錄中,

      type

      字段值為

      PATH

      。審計事件包含

      PATH

      作為參數傳遞給系統調用的每個路徑的-type 記錄。在此稽核事件中,隻有一個路徑 (

      /etc/ssh/sshd_config

      ) 用作參數。
    • msg=audit(1364481363.243:24287):

      msg

      字段擁有與第一條和第二條記錄中的值相同的時間戳和 ID 值。
    • item=0

      item

      字段訓示

      SYSCALL

      目前記錄在類型記錄中引用的項目總數中的哪個項目。這個數字是從零開始的;值 表示它是第一項。
    • name="/etc/ssh/sshd_config"

      name

      字段記錄作為參數傳遞給系統調用的檔案或目錄的路徑。在這種情況下,它是

      /etc/ssh/sshd_config

      檔案。
    • inode=37244245
                 

      inode

      字段包含與此事件中記錄的檔案或目錄相關聯的 inode 編号。以下指令顯示與

      409248

      inode 編号關聯的檔案或目錄:
      [[email protected] ~]# find / -inum 37244245
      /etc/ssh/sshd_config
      
                 
    • dev=fd:00

      dev

      字段指定包含此事件中記錄的檔案或目錄的裝置的次要和主要 ID。在這種情況下,該值代表

      /dev/fd/0

      裝置。
    • mode=0100600

      mode

      字段記錄檔案或目錄權限,以數字元号編碼。在這種情況下,

      0100600

      可以解釋為

      -rw-------

      ,意味着隻有 root 使用者對

      /etc/ssh/sshd_config

      檔案有讀寫權限。
    • ouid=0

      ouid

      字段記錄對象所有者的使用者 ID。
    • ogid=0

      ogid

      字段記錄對象所有者的組 ID。
    • rdev=00:00

      rdev

      字段包含僅用于特殊檔案的記錄裝置辨別符。在這種情況下,它不被使用,因為記錄的檔案是一個普通檔案。

8.搜尋審計日志檔案

該ausearch工具允許你搜尋審計日志檔案中的特定事件。預設情況下,ausearch 會搜尋

/var/log/audit/audit.log

檔案。您可以使用該指令指定不同的檔案。在一個指令中提供多個選項等效于使用AND運算符。

ausearch *options* -if *file_name*``ausearch

8.1 使用

ausearch

搜尋審計日志檔案

  • 要在

    /var/log/audit/audit.log

    檔案中搜尋失敗的登入嘗試,請使用以下指令:
    ausearch --message USER_LOGIN --success no --interpret
               
  • 要搜尋所有帳戶、組和角色更改,請使用以下指令:
    ausearch -m ADD_USER -m DEL_USER -m ADD_GROUP -m USER_CHAUTHTOK -m DEL_GROUP -m CHGRP_ID -m ROLE_ASSIGN -m ROLE_REMOVE -i
               
  • 要使用使用者的登入 ID (

    auid

    )搜尋某個使用者執行的所有記錄操作,請使用以下指令:
    ausearch -ua 500 -i
               
  • 要搜尋從昨天到現在所有失敗的系統調用,請使用以下指令:
    ausearch --start yesterday --end now -m SYSCALL -sv no -i
               

9.建立審計報告

該aureport實用程式可以生成記錄在審計日志檔案中的事件總結和柱狀報告。預設情況下,查詢目錄中的所有

audit.log

檔案

/var/log/audit/

以建立報告。您可以使用該指令指定不同的檔案來運作報告。

aureport *options* -if *file_name*

9.1 使用

aureport

生成審計報告

  • 要為過去三天(不包括目前示例日)記錄的事件生成報告,請使用以下指令:
    [[email protected] ~]# aureport --start 09/21/2021 00:00:00 --end 09/24/2021 00:00:00
    
    Summary Report
    ======================
    Range of time in logs: 12/31/1969 19:00:00.000 - 09/23/2021 21:01:26.424
    Selected time for report: 09/21/2021 00:00:00 - 09/24/2021 00:00:00
    Number of changes in configuration: 0
    Number of changes to accounts, groups, or roles: 0
    Number of logins: 0
    Number of failed logins: 0
    Number of authentications: 0
    Number of failed authentications: 0
    Number of users: 1
    Number of terminals: 1
    Number of host names: 0
    Number of executables: 1
    Number of commands: 1
    Number of files: 1
    Number of AVC's: 0
    Number of MAC events: 0
    Number of failed syscalls: 0
    Number of anomaly events: 0
    Number of responses to anomaly events: 0
    Number of crypto events: 0
    Number of integrity events: 0
    Number of virt events: 0
    Number of keys: 1
    Number of process IDs: 1
    Number of events: 1
    
               
  • 要生成所有可執行檔案事件的報告,請使用以下指令:
    [[email protected] ~]# aureport -x
    
    Executable Report
    ====================================
    # date time exe term host auid event
    ====================================
    1. 09/23/2021 21:01:26 /usr/bin/cat pts1 ? 0 140
    
               
  • 要生成上述可執行檔案事件報告的摘要,請使用以下指令:
    [[email protected] ~]# aureport -x --summary
    
    Executable Summary Report
    =================================
    total  file
    =================================
    1  /usr/bin/cat
    
               
  • 要為所有使用者生成失敗事件的摘要報告,請使用以下指令:
    [[email protected] ~]# aureport -u --failed --summary -i
    
    Failed User Summary Report
    ===========================
    total  auid
    ===========================
    <no events of interest were found>
    
               
  • 要為每個系統使用者生成所有失敗登入嘗試的摘要報告,請使用以下指令:
    [[email protected] ~]# aureport --login --summary -i
    
    Login Summary Report
    ============================
    total  auid
    ============================
    2  unset
    1  root
    
               
  • 要從

    ausearch

    搜尋 user 的所有檔案通路事件的查詢生成報告

    500

    ,請使用以下指令:
    ausearch --start today --loginuid 500 --raw | aureport -f --summary
               
  • 要生成查詢的所有審計檔案及其包含的事件時間範圍的報告,請使用以下指令:
    [[email protected] ~]# aureport -t
    
    Log Time Range Report
    =====================
    /var/log/audit/audit.log: 09/23/2021 21:01:26.424 - 09/23/2021 21:43:58.190
    
               

10.為審計配置PAM

10.1 配置pam_tty_audit

Red Hat Enterprise Linux 中的審計系統使用

pam_tty_audit

PAM 子產品來啟用或禁用對指定使用者的 TTY 輸入的審計。當被審計的使用者登入時,

pam_tty_audit

将使用者在

/var/log/audit/audit.log

檔案中進行的準确擊鍵記錄下來。該子產品與

auditd

守護程式一起使用,是以請確定audit正常啟用。

When you want to specify user names for TTY auditing, modify the

/etc/pam.d/system-auth

and

/etc/pam.d/password-auth

files using the

disable

and

enable

options in the following format:

session required pam_tty_audit.so disable=username,username2 enable=username 
           

注意:

By default,

pam_tty_audit

does **NOT** log keystrokes when the TTY is in password entry mode. Logging can be re-enabled by adding the

log_passwd

option along with the other options in the following way:

session required pam_tty_audit.so disable=username,username2 enable=username log_passwd 
           

When you enable the module, the input is logged in the

/var/log/audit/audit.log

file, written by the

auditd

daemon. Note that the input is not logged immediately, because TTY auditing first stores the keystrokes in a buffer and writes the record periodically, or once the audited user logs out. The

audit.log

file contains all keystrokes entered by the specified user, including backspaces, delete and return keys, the control key and others. Although the contents of

audit.log

are human-readable it might be easier to use the aureport utility, which provides a TTY report in a format which is easy to read. You can use the following command as root:

aureport --tty
           

The following is an example of how to configure

pam_tty_audit

to track the actions of the

root

user across all terminals and then review the input.

example:

Enter the following line in the

session

section of the

/etc/pam.d/system-auth

and

/etc/pam.d/password-auth

files:

session    required     pam_tty_audit.so disable=* enable=root
           

Use the

aureport --tty

command to view the log. If the

root

user has logged in a TTY console at around 11:00 o’clock and tried to issue the

pwd

command, but then deleted it and issued

ls

instead, the report will look like this:

#登入root使用者,先後執行了pwd和ls
[[email protected] ~]# aureport --tty -ts today | tail -f

TTY Report
===============================================
# date time event auid term sess comm data
===============================================
1. 09/23/2021 21:59:50 179 0 ? 7 bash "pwd",<ret>
2. 09/23/2021 21:59:50 180 0 ? 7 ? "pwd"
3. 09/23/2021 21:59:51 181 0 ? 7 bash "ls",<ret>
4. 09/23/2021 21:59:51 182 0 ? 7 ? "ls"
#root使用者下,随便敲了點東西如下
[[email protected] ~]# aureport --tty -ts today | tail -f
3. 09/23/2021 21:59:51 181 0 ? 7 bash "ls",<ret>
4. 09/23/2021 21:59:51 182 0 ? 7 ? "ls"
5. 09/23/2021 22:00:56 183 0 ? 7 bash "dfddgfds",<ret>
6. 09/23/2021 22:00:56 184 0 ? 7 ? "dfddgfds"
7. 09/23/2021 22:00:57 185 0 ? 7 bash "dsgds",<ret>
8. 09/23/2021 22:00:57 186 0 ? 7 ? "dsgds"
9. 09/23/2021 22:00:57 187 0 ? 7 bash "g",<ret>
10. 09/23/2021 22:00:57 188 0 ? 7 ? "g"
11. 09/23/2021 22:00:57 189 0 ? 7 bash "sdg",<ret>
12. 09/23/2021 22:00:57 190 0 ? 7 ? "sdg"
#root使用者下,cat了/etc/passwd
[[email protected] ~]# aureport --tty -ts today | tail -f
5. 09/23/2021 22:00:56 183 0 ? 7 bash "dfddgfds",<ret>
6. 09/23/2021 22:00:56 184 0 ? 7 ? "dfddgfds"
7. 09/23/2021 22:00:57 185 0 ? 7 bash "dsgds",<ret>
8. 09/23/2021 22:00:57 186 0 ? 7 ? "dsgds"
9. 09/23/2021 22:00:57 187 0 ? 7 bash "g",<ret>
10. 09/23/2021 22:00:57 188 0 ? 7 ? "g"
11. 09/23/2021 22:00:57 189 0 ? 7 bash "sdg",<ret>
12. 09/23/2021 22:00:57 190 0 ? 7 ? "sdg"
13. 09/23/2021 22:01:20 198 0 ? 7 bash "cat /et",<tab>,"pass",<tab>,<ret>
14. 09/23/2021 22:01:20 199 0 ? 7 ? "cat /etc/passwd
           

這樣就可以監控root的每一時刻在做什麼了,嘿嘿

11.安全等保中較常用配置

vim /etc/audit/rules.d/audit.rules

-a exit,always -F arch=b64 -S umask -S chown -S chmod 
-a exit,always -F arch=b64 -S unlink -S rmdir 
-a exit,always -F arch=b64 -S setrlimit 
-a exit,always -F arch=b64 -S setuid -S setreuid 
-a exit,always -F arch=b64 -S setgid -S setregid 
-a exit,always -F arch=b64 -S sethostname -S setdomainname 
-a exit,always -F arch=b64 -S adjtimex -S settimeofday 
-a exit,always -F arch=b64 -S mount -S _sysctl
 
-w /etc/group -p wa 
-w /etc/passwd -p wa 
-w /etc/shadow -p wa 
-w /etc/sudoers -p wa

-w /etc/ssh/sshd_config

-w /etc/bashrc -p wa   
-w /etc/profile -p wa   
-w /etc/profile.d/   
-w /etc/aliases -p wa   
-w /etc/sysctl.conf -p wa
 
-w /var/log/lastlog
 
# Disable adding any additional rules - note that adding *new* rules will require a reboot

           

參考紅帽子官方:https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/security_guide/sec-understanding_audit_log_files

繼續閱讀