Linux審計日志過濾與轉發


Linux審計日志

  1. linux審計日志audit配置

默認以centos7的環境進行講解,和centos6可能有些有些地方略微不同

audit配置文件:/etc/audit/auditd.conf

一般只要注意以下四項:

max_log_file = 50 #每個文件最大大小(MB)

num_logs = 4 #最大保留個數,默認大於4個會根據max_log_file_action 的方式進行處理,默認是rotate

flush = NONE # 默認情況下,審計日志為每20條flush一次,為了防止由於大量后台腳本運行產生的審計日志在頻繁flush到磁盤,導致磁盤使用率過高(特別是沒有cache直接落盤的RAID卡),所以需要修改flush模式為NONE。

local_events = yes # 是否寫到本地,默認yes,如果已經開啟了審計日志轉發功能,根據需求是否關閉。

 

 

Audit的規則配置:/etc/audit/rules.d/audit.rules

-a exit,always -F arch=b64 -S execve -k exec //記錄64位系統的所有用戶的shell命令

-a exit,always -F arch=b32 -S execve -k exec //記錄32位系統的所有用戶的shell命令

-w /etc/crontab -p wa -k crontab //監控crontab文件的寫權限和屬性權限

-w /etc/hosts -p wa -k hosts //監控hosts文件的寫權限和屬性權限

-w /etc/hosts.allow -p wa -k hosts-allow //監控hosts.allow文件寫權限和屬性權限

-w /etc/hosts.deny -p wa -k hosts-deny //監控hosts.deny文件寫權限和屬性權限

-w /etc/fstab -p wa -k fstab //以此類推

-w /etc/passwd -p wa -k passwd

-w /etc/shadow -p wa -k shadow

-w /etc/group -p wa -k group

-w /etc/gshadow -p wa -k gshadow

-w /etc/chrony.conf -p wa -k ntp

-w /etc/sysctl.conf -p wa -k sysctl

-w /etc/security/limits.conf -p wa -k limits

    -w:指定需要監控的文件。

    -p:指定監控的權限,rwxa,監控用戶對這個目錄的讀寫執行或數顯變化時間戳的改變。

    -k:指定一個key,方便使用ausearch查詢。

 

配置完后需要重啟服務audit:

service auditd restart # 注意,不能用systemctl restart auditd ,auditd不支持。

重啟后可以使用ausearch -k <key>來列出對應文件的修改記錄,如ausearch -k multipath。

重啟后audit生成的審計日志默認放在/var/log/audit/audit.log下

 

 

  1. audit實現日志轉發

1、audit配置

audit有個rsyslog插件能實現轉發到本地的rsyslog服務中

配置文件:

主要修改以下兩項:

active = yes # 開啟轉發功能,默認不開啟

args = LOG_LOCAL2 # 已那個LOCAL2設備轉發給rsyslog

 

service auditd restart # 注意,不能用systemctl restart auditd ,auditd不支持。

 

2、rsyslog配置

rsyslog配置文件:

/etc/rsyslog.conf # rsyslog程序配置文件

/etc/rsyslog.d/*.conf # 這里講解用來編寫rsyslog的過濾規則。

 

/etc/rsyslog.conf主要修改以下配置:

*.* @@remote-host:514

*.*:表示所有的設備日志所有的日志等級,包含我上面寫的audit local2的這個設備的所有日志

    @@:表示tcp協議,一個@表示udp協議。

remote-host:514:發給哪個服務器地址及端口。

 

然后重啟服務即可:systemctl restart rsyslog.

注意:審計日志的還會輸出到/var/log/message文件中,如果需要禁止輸出到/var/log/message文件,可以修改rsyslog.conf配置項並重啟即可:

*.info;mail.none;authpriv.none;cron.none.local2.none /var/log/messages

    日志級別:

    debug –有調式信息的,日志信息最多

info –一般信息的日志,最常用

notice –最具有重要性的普通條件的信息    

warning –警告級別

err –錯誤級別,阻止某個功能或者模塊不能正常工作的信息

crit –嚴重級別,阻止整個系統或者整個軟件不能正常工作的信息

alert –需要立刻修改的信息

emerg –內核崩潰等嚴重信息

none –什么都不記錄

從上到下,級別從低到高,記錄的信息越來越少

 

  1. 審計日志過濾方法

  1. 通過audit審計服務過濾

auditctl  -a always,exclude -F msgtype=PROCTITLE

-a always,exclude:排除PROCTITLE這種類型的日志

列出規則:auditctl -l

刪除規則:auditctl -d always,exclude -F msgtype=SYSCALL

刪除所以規則:auditctl -D

使用命令行重啟后規則會失效,建議規則寫入/etc/audit/rules.d/audit.rules文件中

2、通過rsyslog服務進行過濾

Linux審計日志樣例:<150>Feb 18 12:10:01 bogon audispd: node=bogon type=PATH msg=audit(1581999001.279:3434): item=1 name="/lib64/ld-linux-x86-64.so.2" inode=32828 dev=fd:00 mode=0100755 ouid=0 ogid=0 rdev=00:00 obj=system_u:object_r:ld_so_t:s0 objtype=NORMAL

編輯:/etc/rsyslog.d/audit.conf

:msg, regex, "type=PATH" @192.168.43.130:5140 # 通過正則(regex)匹配到type=PATH字段的日志發送給192.168.43.130:5140。

:msg, regex, "type=PATH" ~ # 通過正則(regex)匹配到type=PATH字段的日志並過濾掉。

:msg, regex, "type=PATH" # 通過正則(regex)匹配到type=PATH字段日志並保留,其他過濾。

規則配置好后重啟rsyslog即可。

3、通過logstash后端進行過濾

通過logstash插件drop{}可以進行過濾。

Logstash過濾前提解析必須得保證解析規則正確。

比如有一下審計日志:

Feb 18 11:13:32 bogon audispd: node=bogon type=SYSCALL msg=audit(1581995612.358:3187): arch=c000003e syscall=59 success=yes exit=0 a0=2649db0 a1=2766530 a2=27715a0 a3=7fffe5cf1100 items=2 ppid=54597 pid=56011 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts2 ses=56 comm="ls" exe="/usr/bin/ls" subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key="exec"

而后需要對審計日志進行過濾時,我們可以針對匹配某個字段進行過濾,如下:

 

Linux審計日志類型網址:https://access.redhat.com/articles/4409591#audit-record-types-2


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM