亚欧色一区w666天堂,色情一区二区三区免费看,少妇特黄A片一区二区三区,亚洲人成网站999久久久综合,国产av熟女一区二区三区

  • 發布文章
  • 消息中心
點贊
收藏
評論
分享
原創

文件數據丟失問題排查

2025-06-12 09:00:45
14
0

問題描述

用戶(hu)發現錄(lu)音數據文件丟失,但是(shi)查看audit審計日志(zhi)沒(mei)有相關文件刪除(chu)的(de)記錄(lu)。用戶(hu)需要排查文件是(shi)怎么被刪除(chu)的(de)。

問題分析

采用auditctl -l 查看審計規則的配置,確實對錄音文件目錄 /home/data/crm 添加了監控,對該目錄的寫入、屬性變更都會記錄相應日志。
image.png

采用 ausearch -i --ts "2025-04-25 00:00:00" | grep -i delete 獲取刪除的(de)日志(zhi),發現無對應的(de)審計日志(zhi)。

crontab -l 有定(ding)時(shi)任務的配(pei)置,但都與(yu)刪(shan)除是無關的。

從4月30日起,用戶反饋(kui)說每天凌晨2點2分(fen)左右,錄(lu)(lu)(lu)音文(wen)(wen)件目錄(lu)(lu)(lu)大(da)小都會變小。目錄(lu)(lu)(lu)里沒有任何壓縮文(wen)(wen)件,判斷文(wen)(wen)件在該時刻點被刪除了(le)。

建議用戶在(zai)凌晨(chen)2點開啟top監控(kong),監控(kong)30分鐘(zhong),監控(kong)腳(jiao)本如下:

#!/bin/bash

OUTPUT\_FILE="top\_data.log"
 DURATION=180
 echo > OUTPUT\_FILE

end\_time=**(( **(date +%s) + DURATION ))

# 循環記錄top數據,直到達到指定時長

while [ **(date +%s) -lt **end\_time ]; do
     date >> \$OUTPUT\_FILE
     top -b -n 1 >> \$OUTPUT\_FILE
     sleep 1
 done

crontab 設置如下:

2 \* \* \* \* /root/monitor.sh &

發現凌晨2點2分左右,服務器上的nfsd進程非常忙碌。
通過mount命令查看到該(gai)錄音目錄被nfs共享給其他客(ke)戶端10.10.1.41。

image.png

進一步(bu)排查(cha)客戶端(duan)發(fa)現有(you)凌晨2點清理(li)過(guo)期錄音文件(jian)的腳本(ben)。

[root@ecs-umjp2hbx task]# crontab -l
 0 2 \* \* \* /home/iflytek/znzj/source/clean\_wav.sh
 0 1 \* \* \* /home/iflytek/znzj/source/clean\_log.sh
 0 3 \* \* \* /home/iflytek/share/qingli.sh
 0 5 \* \* \* /home/iflytek/znzj/epc-1094/epcclearlog.sh
 [root@ecs-umjp2hbx task]# more /home/iflytek/znzj/source/clean\_wav.sh
 #!/bin/bash

TARGET\_DIR="/home/iflytek/znzj/source"
 find "\$TARGET\_DIR" -name "\*.wav" -type f -mtime +7 -exec rm -f {} ;

因此錄音文件刪除原因已查明。

為什么(me)刪除(chu)沒有審計日志(zhi)呢?

審(shen)計(ji)日志記錄一般是通過syscall返回時記錄的:

do_syscall_64
	syscall_exit_to_user_mode
		syscall_exit_work
			__audit_syscall_exit
				audit_log_exit
					audit_log_start

或是配置的一些監控事(shi)件,通過用戶態命(ming)(ming)令觸(chu)發,記錄審計(ji)日志:(如 用戶登(deng)錄/登(deng)出(chu) ssh, 特權命(ming)(ming)令執行 sudo 等)

__sys_sendto
	sock_sendmsg
		netlink_sendmsg
			netlink_unicast
				audit_receive
					audit_receive_msg
						audit_log_start

從上面可以(yi)看出,nfs client端刪除文(wen)件是不支持審計(ji)的。

為什么nfs client端刪除文件不支持審計?

  1. 技術架構限制:NFS 協議與內核審計的交互方式

(1) NFS 服務端(duan)處理的是 RPC 請求,而(er)非本地系(xi)統調用(yong)

  • NFS 客戶端 通過 RPC(遠程過程調用) 向服務端發送文件操作請求(如 REMOVE?、CREATE?),而不是直接觸發服務端的系統調用(如 unlink()?、open()?)。
  • audit 子系統 的監控機制主要基于:
    • 系統調用(syscall)(如 -S open?、-S unlink?)。
    • 文件路徑監控(-w /path?)(依賴內核的 inotify? 或 fanotify?)。
  • NFS 服務端 處理的是 RPC 層的操作,不會在本地觸發對應的 syscall?,因此 audit 無法捕獲。

(2) NFS 服務(wu)端的內(nei)核實現不掛鉤 audit 機制

  • NFS 服務端(nfsd?)在內核中的實現是獨立的,它:
    • 接收 RPC 請求 → 調用 VFS(虛擬文件系統)接口 → 修改文件系統。
    • 不會經過syscall? 路徑,因此 audit 無法攔截。
  1. 性能與擴展性考量

(1) NFS 的高性能(neng)需(xu)求

  • NFS 設計目標是 低延遲、高吞吐量,如果每個 NFS 操作都要經過 audit 子系統:
    • 額外開銷:每個 RPC 請求都需要審計日志記錄,影響 I/O 性能。
    • 日志爆炸:NFS 通常用于共享存儲,頻繁操作會導致 audit 日志量劇增(如 -w /shared? 會記錄所有讀寫)。

(2) 審計日志的適用(yong)場景

  • audit 主要用于 安全合規(如 sudo?、sshd?、敏感文件訪問),而不是 存儲協議審計。
  • NFS 的審計更適合由 網絡層日志(如 tcpdump?)或 專用存儲審計工具(如 CIFS/samba? 的完整日志)實現。
  1. 安全模型與責任邊界

(1) 客戶端(duan) vs. 服(fu)務端(duan)的審計責(ze)任

(2) 分布式系統的復雜(za)性

audit 主要(yao)用于(yu) 安(an)全合規(如(ru) sudo?、sshd?、敏感文件(jian)訪問(wen)),而不是 存儲(chu)協議審計(ji)。

NFS 的(de)審(shen)計更適合由(you) 網絡層日(ri)(ri)志(如(ru) tcpdump?)或 專用存儲(chu)審(shen)計工(gong)具(如(ru) CIFS/samba? 的(de)完整日(ri)(ri)志)實(shi)現。

NFS 服務端 只負責提供(gong)共享存儲,不感知客戶端的操作細節(如哪個用戶執行 rm?)。

真正的操(cao)作者(zhe) 是 NFS 客戶端,因此:

  • 客戶端應該記錄自己的操作(如 auditctl -w /mnt/nfs_share?)。
  • 服務端只需保證共享目錄的訪問控制(如 /etc/exports? 的 rw?/ro? 權限)。

如果 NFS 服務端記錄所有客戶(hu)端操作:

  • 日志歸屬問題:如何區分不同客戶端的相同操作?(需額外記錄客戶端 IP、UID 等)
  • 信任鏈問題:客戶端可能偽造信息,服務端無法完全信任客戶端提交的審計數據。

那(nei)么nfs client端刪除(chu)文(wen)件(jian)如何監控(kong)呢?

只(zhi)需要(yao)在nfs client端添加對應的(de)審計(ji)即(ji)可(ke)。

問題結果

  1. 用戶發現錄音數據文件丟失,實際上是服務器將錄音文件目錄掛載到客戶端,客戶端上有定期清理的腳本,通過nfs協議刪除過期的文件。
  2. 由于服務端audit不支持對nfs client端刪除文件進行審計,因此如果要監控client端的行為,需要在對應的client端添加審計即可。
0條評論
0 / 1000
c****9
3文章(zhang)數
0粉絲數
c****9
3 文章(zhang) | 0 粉絲
c****9
3文章(zhang)數
0粉絲數
c****9
3 文章 | 0 粉絲
原創(chuang)

文件數據丟失問題排查

2025-06-12 09:00:45
14
0

問題描述

用戶發現(xian)錄音數據文件丟失,但是(shi)查看audit審計日志沒有(you)相關文件刪除的記錄。用戶需要(yao)排(pai)查文件是(shi)怎么(me)被刪除的。

問題分析

采用auditctl -l 查看審計規則的配置,確實對錄音文件目錄 /home/data/crm 添加了監控,對該目錄的寫入、屬性變更都會記錄相應日志。
image.png

采用 ausearch -i --ts "2025-04-25 00:00:00" | grep -i delete 獲取刪除的日(ri)志,發現無(wu)對(dui)應的審計日(ri)志。

crontab -l 有(you)定時任務的(de)配置,但(dan)都與刪除(chu)是無關的(de)。

從4月30日起,用戶(hu)反饋說(shuo)每天(tian)凌晨(chen)2點2分左右,錄(lu)音(yin)文(wen)件(jian)目錄(lu)大小(xiao)都(dou)會變小(xiao)。目錄(lu)里(li)沒有任(ren)何(he)壓縮(suo)文(wen)件(jian),判斷文(wen)件(jian)在該時刻點被刪除(chu)了。

建議(yi)用戶在(zai)凌晨(chen)2點(dian)開啟top監控,監控30分(fen)鐘,監控腳本(ben)如下(xia):

#!/bin/bash

OUTPUT\_FILE="top\_data.log"
 DURATION=180
 echo > OUTPUT\_FILE

end\_time=**(( **(date +%s) + DURATION ))

# 循環記錄top數據,直到達到指定時長

while [ **(date +%s) -lt **end\_time ]; do
     date >> \$OUTPUT\_FILE
     top -b -n 1 >> \$OUTPUT\_FILE
     sleep 1
 done

crontab 設(she)置如下:

2 \* \* \* \* /root/monitor.sh &

發現凌晨2點2分左右,服務器上的nfsd進程非常忙碌。
通過(guo)mount命令查(cha)看到(dao)該錄(lu)音目(mu)錄(lu)被nfs共(gong)享給其他客戶(hu)端10.10.1.41。

image.png

進一步排(pai)查客戶(hu)端發現有凌晨2點清理過(guo)期錄音文件的腳本。

[root@ecs-umjp2hbx task]# crontab -l
 0 2 \* \* \* /home/iflytek/znzj/source/clean\_wav.sh
 0 1 \* \* \* /home/iflytek/znzj/source/clean\_log.sh
 0 3 \* \* \* /home/iflytek/share/qingli.sh
 0 5 \* \* \* /home/iflytek/znzj/epc-1094/epcclearlog.sh
 [root@ecs-umjp2hbx task]# more /home/iflytek/znzj/source/clean\_wav.sh
 #!/bin/bash

TARGET\_DIR="/home/iflytek/znzj/source"
 find "\$TARGET\_DIR" -name "\*.wav" -type f -mtime +7 -exec rm -f {} ;

因(yin)此錄音(yin)文件刪(shan)除原因(yin)已查明。

為什(shen)么刪除沒有審計(ji)日志呢(ni)?

審(shen)計日志(zhi)記錄(lu)(lu)一(yi)般是通過syscall返回時(shi)記錄(lu)(lu)的:

do_syscall_64
	syscall_exit_to_user_mode
		syscall_exit_work
			__audit_syscall_exit
				audit_log_exit
					audit_log_start

或(huo)是配置(zhi)的一(yi)些監控事件(jian),通過(guo)用戶態(tai)命(ming)令觸發(fa),記錄審計日志:(如(ru) 用戶登(deng)錄/登(deng)出 ssh, 特權命(ming)令執行 sudo 等)

__sys_sendto
	sock_sendmsg
		netlink_sendmsg
			netlink_unicast
				audit_receive
					audit_receive_msg
						audit_log_start

從上面(mian)可以看(kan)出,nfs client端刪除文件(jian)是不支持審(shen)計(ji)的。

為(wei)什么(me)nfs client端刪(shan)除文件不支持審計?

  1. 技術架構限制:NFS 協議與內核審計的交互方式

(1) NFS 服務端處理的是 RPC 請求(qiu),而(er)非本地系統調(diao)用

  • NFS 客戶端 通過 RPC(遠程過程調用) 向服務端發送文件操作請求(如 REMOVE?、CREATE?),而不是直接觸發服務端的系統調用(如 unlink()?、open()?)。
  • audit 子系統 的監控機制主要基于:
    • 系統調用(syscall)(如 -S open?、-S unlink?)。
    • 文件路徑監控(-w /path?)(依賴內核的 inotify? 或 fanotify?)。
  • NFS 服務端 處理的是 RPC 層的操作,不會在本地觸發對應的 syscall?,因此 audit 無法捕獲。

(2) NFS 服務端(duan)的(de)內核實(shi)現不掛鉤 audit 機制

  • NFS 服務端(nfsd?)在內核中的實現是獨立的,它:
    • 接收 RPC 請求 → 調用 VFS(虛擬文件系統)接口 → 修改文件系統。
    • 不會經過syscall? 路徑,因此 audit 無法攔截。
  1. 性能與擴展性考量

(1) NFS 的高(gao)性能需(xu)求

  • NFS 設計目標是 低延遲、高吞吐量,如果每個 NFS 操作都要經過 audit 子系統:
    • 額外開銷:每個 RPC 請求都需要審計日志記錄,影響 I/O 性能。
    • 日志爆炸:NFS 通常用于共享存儲,頻繁操作會導致 audit 日志量劇增(如 -w /shared? 會記錄所有讀寫)。

(2) 審計日志的(de)適(shi)用場景

  • audit 主要用于 安全合規(如 sudo?、sshd?、敏感文件訪問),而不是 存儲協議審計。
  • NFS 的審計更適合由 網絡層日志(如 tcpdump?)或 專用存儲審計工具(如 CIFS/samba? 的完整日志)實現。
  1. 安全模型與責任邊界

(1) 客戶端(duan) vs. 服(fu)務端(duan)的審計責(ze)任(ren)

(2) 分布式系統的(de)復雜性

audit 主要用于 安全(quan)合規(如 sudo?、sshd?、敏感文件訪問),而不(bu)是 存儲協(xie)議審計。

NFS 的審(shen)(shen)計更(geng)適合(he)由 網絡層日志(如 tcpdump?)或 專用存儲審(shen)(shen)計工具(如 CIFS/samba? 的完(wan)整日志)實現(xian)。

NFS 服務端 只負責提供共享存儲,不感知(zhi)客戶(hu)端的(de)操作(zuo)細節(如哪個用戶(hu)執行 rm?)。

真正的操作(zuo)者 是 NFS 客戶端,因(yin)此:

  • 客戶端應該記錄自己的操作(如 auditctl -w /mnt/nfs_share?)。
  • 服務端只需保證共享目錄的訪問控制(如 /etc/exports? 的 rw?/ro? 權限)。

如果 NFS 服務端記錄所有客(ke)戶端操(cao)作:

  • 日志歸屬問題:如何區分不同客戶端的相同操作?(需額外記錄客戶端 IP、UID 等)
  • 信任鏈問題:客戶端可能偽造信息,服務端無法完全信任客戶端提交的審計數據。

那(nei)么nfs client端(duan)刪除文件如何(he)監控呢?

只需要在nfs client端(duan)添加(jia)對應的審計即可。

問題結果

  1. 用戶發現錄音數據文件丟失,實際上是服務器將錄音文件目錄掛載到客戶端,客戶端上有定期清理的腳本,通過nfs協議刪除過期的文件。
  2. 由于服務端audit不支持對nfs client端刪除文件進行審計,因此如果要監控client端的行為,需要在對應的client端添加審計即可。
文章來自個人專欄
文章 | 訂(ding)閱
0條評論
0 / 1000
請輸入你的評論
0
0