---
# System prepended metadata

title: 排程週期模組

---

# 排程週期模組

## 10 minutes
- Suricata Rule更新
### Suricata Rule更新
以python撰寫更新腳本

1. 獲取API KEY
透過open開啟.env設定檔抓取API_KEY_Value那行並以"="為斷點並取第二筆(API 值)，如沒獲取產出訊息未找到API_key
```
API_KEY_Value = API 值 -> [API_KEY_Value][Value]
```
2. 版本確認
透過RMQ_API與雲端RMQ索要當前最新規則版本號，開啟local_rules_version檔案讀取其中版本號，並與API索要的版本號進行比對若不相同，則將進行下載

3. 比對檔案md5值並下載
利用RMQ_API取得檔案的md5，並與下載檔案進行md5比對比對相同則回傳True，反之false

4. 同步新版Rules並重啟服務
當md5回傳值為True時，透過subprocess,call()創建資料夾存取檔案(tgz)解壓縮後的規則檔，將之同步於Suricata規則檔而後刪除下載的暫存檔並透過curl重啟suricata docker服務

5. 存取版本號
將新版本號取代local_rules_version檔案中的內容

- 錯誤及正確的信息皆輸出至/var/log/cron.log做為記錄

## Hour
- Suricata Rule更新
- Call Winlog and ETA AI module
### Call AI module

## Daily
- Elasticsearch 清除index底下的data
- 清除suricata告警資料
- 檢查硬碟容量
- 備份Logs資料

### Elasticsearch 清除index底下的data
撰寫bash script透過Elasticsearch_API刪除資料庫中其下資料表
- winlog(3個月前) 
- suricata(3個月前)
- cic(7天前)
- winlogbeat(7天前)
- packetbeat(7天前)
- lm(184天前)

示範指令概念:
```
[index]_remove_date = "$(date +/-d '時間' +%Y-%m)"
curl -X DELETE "elasticsearch:[ES API port]/[index name]-$[index]_remove_date
```

### 清除suricata告警資料
撰寫bash script刪除天之前的eve.json日誌
```
rm [path]/eve-'date -d"-7days" "+%Y-%m-%d'.json 2>/dev/null
```
### 檢查硬碟容量
查詢es_volume使用比率當大於85%取得winlogbeat與cic所有欄位名稱必逐一刪除

### 備份Logs資料
撰寫bash script找出Logs中的資料 打包成 date+Y-m-d.tgz將之移動到LogsCompress目錄下儲存並刪除Logs目錄中的資料資料

## Week
- 清除suricata狀態統計日誌
### 清除suricata狀態統計日誌
透過crontab排程撰寫每周清除suricata stat.log

## Month
- 清除suricata cron.log

## Reboot
- ES pipline 前處裡
- 清除suricata狀態統計日誌
### ES pipline 前處裡

## 特定時間
- Suricata 確認功能正常及存活

### Suricata 確認功能正常及存活
每日的凌晨12點36分及中午12點36分執行bash script 撰寫的腳本
利用tcpreplay重跑先行錄製好封包理應會產生告警日誌並拋送至雲端上，利用RESTful API向雲端索要是否有此筆資料，如無則產生錯誤信息至cron.log及重啟Suricata服務