2018/01/09

今天想把snort的資料吐進 graylog

記錄一下步驟

首先改一下snort.conf 增加寫到syslog的選項

output alert_syslog: LOG_LOCAL5 LOG_ALERT

再來改一下rsyslog.conf

$template GRAYLOGRFC5424,"<%PRI%>%PROTOCOL-VERSION% %TIMESTAMP:::date-rfc3339% %HOSTNAME% %APP-NAME% %PROCID% %MSGID% %STRUCTURED-DATA% %msg%\n"

local5.alert @graylog.server:514;GRAYLOGRFC5424

再來在gralog上加入extractor 加在 收snort log的那個input

system -> input -> manage extractors












import extractors








在以下的空格貼入 https://github.com/jhaar/mygraylog-patches-extractor-snort/blob/master/extractor-snort 裡的程式碼











之後進來的資料就可以被解析了


https://www.graylog.org/blog/64-visualize-and-correlate-ids-alerts-with-open-source-tools

2018/01/07

延續昨天的問題
程式跑一個晚上砍不到10000筆 XD
早上停掉
找了一下資料
改用另一種跑法

一樣是先把要砍的欄位資料撈出來
之後以一萬筆為單位拆開 做完後從資料中清除
如下

先把找出來的cid先排序 才能使用 comm 指令

sort data > data_s
mv data_s data

get_10000

sed -n '1,10000p' data > data_del
#grep -v -f data_del data > data_tmp
comm -1 -3 data_del data > data_tmp
mv -f data_tmp data

利用上述的檔案生成sql 語法

del_data_10000

for i in `cat data_del`
do
    echo -n $i" ,"
done > 000

echo -n 999999999 >> 000

mysql -u user -p123456 snort -e"delete from event where cid in (`cat 000`);"



一次跑100個loop

#!/bin/bash

for i in {1..100};
do
    echo $i" times"

    ./get_10000
    echo "get ok"
    ./del_data_10000
    echo "del ok"

    wc data
    echo " "

done

速度快多了

2018/01/06

記錄一下在librenms上找ip及mac及switch port的方法

如果pc關了 有可能會找不到

首先先利用 arp table 找到mac





















然後再利用找到的 mac 到 FDB table 去找













簡單快速

https://blog.michaelfmcnamara.com/2008/02/what-are-the-arp-and-fdb-tables/
前一陣子不知是因為FP還是真的有那麼多攻擊
導致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);

接下來再 使用之前寫過的清資料的方法

再跑一次
忘記從那個版本開始(最近)
要啟動snort都會出現以下的錯誤

FATAL ERROR: /etc/snort/snort.conf(327) => Invalid keyword '}' for server configuration.

今天特別google了一下

有人提到二個解法方法
一個是裝上lzma
一個是不要使用
試了第一個方法
把lzma相關的rpm都上了 還是不行
所以只能拿掉了
改一下 snort.conf

#    decompress_swf { deflate lzma } \
    decompress_swf { deflate } \

目前是沒問題了

http://seclists.org/snort/2017/q4/146

2018/01/04

今天打開graylog管理介面時 出現新版本 2.4 更新的通知
想說來升看看 會不會解決之前 REST 跟 export 的問題
升完後測了一下
目前看來都ok了
不過REST撈出來的格式跟之前不一樣
要改程式了

2017/12/31

一直都是使用BASE這個工具來看snort產生的報表
但也一直都有個問題就是查詢結果會分頁
在之前都是一頁一頁分別列印出pdf
想把查詢結果轉成csv然後寄出
試了一下發現有二個地方要處理
一個是要把php-pear-Mail這個rpm裝上去

yum install php-pear-Mail

再來要修改base_conf.php如下

base_conf.php

$action_email_smtp_host = 'localhost';
$action_email_smtp_auth = 0;
$action_email_from = 'base@snort';

不要忘記重啟httpd

systemctl restart httpd

如下圖 在查詢結果的最下方選擇 電子郵件警告(csv)  然後打入要寄出的 email 最後點進入查詢 就可以寄出了



2017/12/22

接續之前的問題
因為rest一直怪怪的
所以目前只好手動下查詢
但又碰到另一個狀況
OR的條件下太多會當掉XD
目前試出來的結果是最多85筆
範例如下

accept AND (192.168.13.209 OR 192.168.13.30 OR 192.168.13.31 OR 192.168.50.48 OR 192.168.50.194 OR 192.168.10.100 OR 192.168.43.193 OR 192.168.1.103 OR 192.168.15.249 OR 192.168.15.252 OR 192.168.19.9 OR 192.168.15.17 OR 192.168.41.213 OR 192.168.34.96 OR 192.168.35.252 OR 192.168.35.251 OR 192.168.35.253 OR 192.168.35.250 OR 192.168.35.247 OR 192.168.35.248 OR 192.168.35.245 OR 192.168.35.249 OR 192.168.42.34 OR 192.168.41.219 OR 192.168.31.248 OR 192.168.30.47 OR 192.168.74.186 OR 192.168.35.246 OR 192.168.34.184 OR 192.168.31.241 OR 192.168.30.158 OR 192.168.30.244 OR 192.168.25.124 OR 192.168.15.23 OR 192.168.34.69 OR 192.168.26.63 OR 192.168.30.111 OR 192.168.31.239 OR 192.168.34.106 OR 192.168.34.245 OR 192.168.41.209 OR 192.168.41.229 OR 192.168.41.230 OR 192.168.25.217 OR 192.168.25.170 OR 192.168.42.222 OR 192.168.49.178 OR 192.168.50.181 OR 192.168.25.187 OR 192.168.73.12 OR 192.168.94.249 OR 192.168.95.250 OR 192.168.95.252 OR 192.168.95.253 OR 192.168.27.249 OR 192.168.27.245 OR 192.168.27.251 OR 192.168.27.244 OR 192.168.27.252 OR 192.168.27.250 OR 192.168.27.246 OR 192.168.27.248 OR 192.168.26.131 OR 192.168.26.31 OR 192.168.31.242 OR 192.168.31.240 OR 192.168.31.243 OR 192.168.31.244 OR 192.168.31.247 OR 192.168.31.246 OR 192.168.31.251 OR 192.168.31.252 OR 192.168.31.253 OR 192.168.27.243 OR 192.168.27.247 OR 192.168.4.130 OR 192.168.4.108 OR 192.168.15.21 OR 192.168.4.120 OR 192.168.4.121 OR 192.168.4.150 OR 192.168.4.110 OR 192.168.4.170 OR 192.168.4.190 OR 192.168.4.160)

2017/12/21

最近在graylog上碰到搜尋都OK
除了要匯出成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/12/15

解決下完ssh連線指令要等很久才會跳出密碼輸入畫面的解決方法

在被連線的server上

vi /etc/ssh/sshd_config

1. 將 GSSAPIAuthentication yes
改成
GSSAPIAuthentication no

2. 將 #UseDNS yes
改成
UseDNS no

3. 重新啟動 sshd 服務

http://blog.xuite.net/tolarku/blog/292705102-Linux+SSH+%E7%99%BB%E5%85%A5%E9%80%9F%E5%BA%A6%E6%85%A2+-+CentOS

2017/12/14

今天把ocs升到 2.4
但升完後發現user的資料都進不去
log的錯誤如下

[Thu Dec 14 15:31:49.647252 2017] [perl:error] [pid 1193] [client 192.168.12.96:62495] Can't call method "do" on an undefined value at /usr/local/share/perl5/Apache/Ocsinventory/Server/System.pm line 189.\n

google之後找到說因為升級不會把舊的mysql user pwd帶過去

所以要改二個檔

dbconfig.inc.php
z-ocsinventory-server.conf

改完後記得要重啟apache

醬就好了

http://ask.ocsinventory-ng.org/2867/method-undefined-share-apache-ocsinventory-server-system

2017/12/07

在linux裡如果使用純數字帳號是沒辦法針對帳號名稱做quota的
這個問題的解決方式就是使用UID
把帳號名稱改成UID就可以了


xfs_quota -x -c "limit bsoft=10m  bhard=15m 123456" /dev/vdb1
假設原本的帳號是123456以上的指令是沒有作用的

此時就要到 /etc/passwd去看這個帳號的UID

123456:x:1313:1313::/home/123456:/bin/bash

UID是1313

再把設定quota的指令改成

xfs_quota -x -c "limit bsoft=10m  bhard=15m 1313" /dev/vdb1

醬就可以了

2017/12/02

最近graylog出現一個狀況
不管是在網頁介面上要export查詢的資料或
在其他机器上使用curl透過rest來撈取
二者應該是相同的做法
都會很久
目前還找不到原因
不知是不是因為資料太多的關係
目前的資料
246 indices, 4,908,265,647 documents, 3.0TB

2017/11/29

最近graylog總是怪怪的
速度很慢
加了 Disk Journal 還有cpu的個數
還是很慢
buffers常常爆表
而且cpu的使用率還是很高
今天再仔細看了一下
發現 / 的使用率已經 99% 了 XD
再找找是那裡吃掉了

/var/log/graylog/elasticsearch 裡有一堆
graylog-20xx-xx-xx.log的log

看來是每天會產生一個log file
可是到/etc的logrotate相關檔案並沒有看到設定的資料
算了
先寫個排程來處理 有空再來找看看放在graylog那裡

59 23 * * * /bin/rm -f /var/log/graylog/elasticsearch/graylog-`date -d '10 days ago' "+%Y-%m-%d"`.log

留個10天應該是夠了

2017/11/28

之前使用ftp傳檔時一直都用交談的方式
今天在測sftp時才發現lftp就可以了
範例如下

lftp ftp://user:password@host -e "put/tmp/data ; bye"

lftp sftp://user:password@host  -e "put local-file.name; bye"


2017/11/25

設定每天凌晨 01:00 關机指令

schtasks /Create /SC daily /TN shutdown /ST 01:00 /TR "c:\windows\system32\shutdown.exe -s -f"

http://lee5400.blogspot.tw/2011/05/windows-schtasks.html

2017/11/22

近日graylog出現二次以下的訊息







看來應該是 journal buffer不夠了
看了一下主按台果然全都是滿的
先把disk journal調到5G(本來是1G)
調完之後看來就ok了











再觀察看看

2017/11/10

今天把vmware轉到proxmox
要啟動時發生以下的問題

kvm: -drive file=/var/lib/vz/images/102/vm-102-disk-1.qcow2,if=none,id=drive-scsi0,format=qcow2,cache=none,aio=native,detect-zeroes=on: file system may not support O_DIRECT

解決的方法很簡單

把disk cache 改成 write through就好了


2017/11/08

有關proxmox最近備份出現的問題
測試了好久
觀察了一週
做一下整理記錄
之前備份發現問題
不管是linux或windows在備份時都出現hd reset的情況
























目前得到的結論如下

在備份裝置是10G的情況下 (使用nfs 備份) 目前都沒有發現問題 

在備份裝置是1G的情況 
在網路上找到一些方法

1. 把disk 改成virtio

linux 在改完之後就解決問題了

但如果沒辦法改成virtio 則建議把guest file 放在server的 directory 不要放在share storage上


但是windows 改完後並沒有解決問題

必須要修改 /etc/vzdump.conf

加上 bwlimit:150000  (再調高會出現問題)

限制執行vzdump執行時的io 避免跟guest os搶 io 導致出現hd reset的問題

不過改成virtio對windows guest os的效能會有滿大的改善
連idrac都會當G
Orz