2025/06/30
2024/07/01
2020/08/27
cacti 轉換到 librenms 的過程還有一個問題就是cacti可以自己寫shell 餵值來畫圖
目前還沒看到librenms有支援
所以想到應該可以把shell 拿到的值轉成snmp丟出來
查了一下文件
總共有三種方式可以做
pass
exec
extend
在snmpd.conf裡有說明及範例
但目前 exec 試不出來
extend 看來最方便使用
在/etc/snmp/snmpd.conf 最後加上
extend script1 /tmp/test
test的內容如下
#!/bin/sh
echo "aaa"
echo "bbb"
重啟 snmpd
systemctl restart snmpd
接下來使用 snmpwalk snmpwalk 捉值就可以了
snmpwalk -v2c -c public localhost 'NET-SNMP-EXTEND-MIB::nsExtendOutLine."script1".1'
得到
NET-SNMP-EXTEND-MIB::nsExtendOutLine."script1".1 = STRING: aaa
snmpwalk -v2c -c public localhost 'NET-SNMP-EXTEND-MIB::nsExtendOutLine."script1".1'
NET-SNMP-EXTEND-MIB::nsExtendOutLine."script1".1 = STRING: bbb
最後產出 OID
snmptranslate -On 'NET-SNMP-EXTEND-MIB::nsExtendOutLine."script1".1'
得到
.1.3.6.1.4.1.8072.1.3.2.4.1.2.7.115.99.114.105.112.116.49.1
2020/08/19
2020/01/04
因為是 ubuntu 14.04的版本
而且 elasticsearch 也EOL
之前就一直想upgrade
只是一直沒動作
因為有10T的資料
不太可能花時間去搬
目前想保留然後再架一台新的graylog3 ova
graylog2改ip要重跑 graylog-ctl reconfigure
但跑了二次 跑完後就掛了
所以改用另一個方式
在graylog2上起一個output output 把資料送到 graylog3
同時保留二份
然後graylog2再慢慢砍資料
最後把graylog2 關几
把graylog3改成graylog2的ip
graylog3改ip只要重開几就好
不用再其他設定 很方便
找出最舊index並刪除的 shell 如下
#!/bin/bash
i=`/usr/bin/curl -u admin:passwd 'http://10.0.0.1:9200/_cat/indices/graylog*?v'|grep close|awk '{print $2}'|sort -rn -t_ -k 2|tail -n 1`
echo $i
/usr/bin/curl -XDELETE "http://10.0.0.1:9200/$i/"
另外 graylog3 ova 使用的是 ubuntu 18.04
預設的網路設定方式是 netplan
用的實在不順
如果要改回 /etc/network/interfaces
要先安裝 ifupdown
sudo apt install ifupdown
設定好 /etc/network/interfaces
再 rm -rf /etc/netplan/*
重開几即可
2018/03/22
想說來監控一下
目前觀察到當 process buffer 和 output buffer都滿就會往回塞到disk journal 因此就直接monitor disk jounrnal
第一步就是要把graylog目前的相關資料取出來
但因為graylog只提供jason的格式 並不方便操作
所以再使用 jq 轉換 以利值的讀取
指令如下 直接取出值
curl -u user:passwd 'http://1.2.3.4:9000/api/system/metrics'|jq . |grep -A 1 journal.entries-uncommitted |grep value |awk '{print $2}'
再利用以上的值來比對設定的基準 高於就發alarm
https://stedolan.github.io/jq/
2018/01/07
先把找出來的cid先排序 才能使用 comm 指令
sort data > data_s
mv data_s data
mv -f data_tmp data
2018/01/06
導致snort的資料庫塞了一堆 OS-WINDOWS Microsoft WINS arbitrary memory modification attempt 有五百多萬筆 XD
rule 是以下這個
alert udp $EXTERNAL_NET any -> $HOME_NET 1027:5000 (msg:"OS-WINDOWS Microsoft WINS arbitrary memory modification attempt"; sid:13826; gid:3; rev:6; classtype:attempted-admin; reference:cve,2008-1451; reference:url,technet.microsoft.com/en-us/security/bulletin/MS08-034; metadata: engine shared, soid 3|13826;)
然後整個web畫面就慢的夭壽慢 一直放著沒處理
今天想想來處理
首先先把 acid_event 這個 table 裡有關 OS-WINDOWS Microsoft WINS arbitrary memory modification attempt 的 cid 找出來
select cid from acid_event where sig_name='OS-WINDOWS Microsoft WINS arbitrary memory modification attempt';
然後寫個 shell 到 event table 去全砍了
#!/bin/bash
for i in `cat 123`
do
echo $i
mysql -u user -p123456 snort -e"delete from event where cid=$i;"
done
或直接寫個sql
DELETE FROM tb1 WHERE tb1.a in (SELECT k from tb2);
再跑一次
2017/12/21
除了要匯出成csv會很慢
不過這個問題應該跟接下來要討論的是同一個問題
使用rest撈資料時發生有時撈得到有時撈不到的情況
但確定指令沒下錯 而且確定語法一定有資料可以出來
於是寫了一個shell來試
#!/bin/bash
i=1
while :
do
echo $i
curl -m 240 -u user:pwd 'http://10.0.0.1:9000/api/search/universal/keyword?query=nf_dst_address%3A192.168.12.220&keyword=last%2020%20hours&fields=message&limit=1'
i=`expr $i + 1`
sleep 3
done
出現以下的結果
1
2
3
4
"timestamp","message"
"2017-12-20T10:09:23.000Z","NetFlowV5 [210.65.47.55]:443 <> [192.168.12.220]:42702 proto:6 pkts:1 bytes:52"
5
"timestamp","message"
"2017-12-20T10:09:23.000Z","NetFlowV5 [210.65.47.55]:443 <> [192.168.12.220]:42702 proto:6 pkts:1 bytes:52"
6
"timestamp","message"
"2017-12-20T10:09:23.000Z","NetFlowV5 [210.65.47.55]:443 <> [192.168.12.220]:42702 proto:6 pkts:1 bytes:52"
7
8
"timestamp","message"
"2017-12-20T10:09:23.000Z","NetFlowV5 [210.65.47.55]:443 <> [192.168.12.220]:42702 proto:6 pkts:1 bytes:52"
9
"timestamp","message"
"2017-12-20T10:09:23.000Z","NetFlowV5 [210.65.47.55]:443 <> [192.168.12.220]:42702 proto:6 pkts:1 bytes:52"
10
11
12
"timestamp","message"
"2017-12-20T10:09:23.000Z","NetFlowV5 [210.65.47.55]:443 <> [192.168.12.220]:42702 proto:6 pkts:1 bytes:52"
13
"timestamp","message"
"2017-12-20T10:09:23.000Z","NetFlowV5 [210.65.47.55]:443 <> [192.168.12.220]:42702 proto:6 pkts:1 bytes:52"
而且在管理介面上看到的狀況如下圖
找了很多資料 調了很多參數都沒用 直覺是個bug
2017/06/05
因為在fields展開後有四個選項可以操作

上圖的 Generate chart 應該就可以畫圖
而 Statistics 是相關的記錄及統計
但當點下去時出現

只能針對數字定義的欄位才能使用
看來必須要設定Extractor對message拆解並定義後才行了
因此先吐一筆測試資料到graylog
echo "testiiiiii 20"|nc 10.0.0.1 1234
再利用這筆資料來產生Extractor

如上圖 主要的重點是必須定義該拆解出來的欄位值是數字
目前支援的定義如下圖 依所需值不同的位數來選擇不同的定義
目前的範例是定義為int

定義好後接下來進到graylog的資料就會被拆解如下圖
num_test這個欄位就拆解出來而且被定義為int

接下來就可以使用 Generate chart 及 Statistics 產生如下的二張報表


在圖上就可以看到用數值畫出來的圖及統計的結果了
Generate chart還可以依不同需求產生不同的圖

在cacti上寫shell也可以達到相同的目的
但操作上會複雜許多
目前想到可以利用個這個來畫出溫度及統計並利用alert功能來進行
溫度超標的通知
應該是滿方便的
http://docs.graylog.org/en/2.2/pages/extractors.html
2017/03/14
2016/11/24
或是某個指令執行有沒有成功
視情況以進行接下來的處理
之前都是用grep把結果導到/tmp
再用test去判斷檔案是否存在
其實也可以用$?來判斷
$?是shell中一個特別的變數
如果上一個指令成功則為0
反之則為1
範例如下
grep error file
[ $? == 0 ] && echo "not ok"
假設file 內有error這個字串
則印出 not ok
http://c.biancheng.net/cpp/view/2739.html
