顯示具有 sql 標籤的文章。 顯示所有文章
顯示具有 sql 標籤的文章。 顯示所有文章

2019/01/11

最近有台電腦中毒
在snort造成三百多萬筆的log

TOTAL        ip_src
3019640    192.168.101.56

導致web的管理介面開啟緩慢
於是想說來清理一下
碰到几個問題

首先用sql下指令
半小時大約只能delete 2百多筆
醬可能要搞到天荒地老

再來想說不然匯出 用 shell處理完再匯入
用grep直接當掉
只能用sed
可是用sed的速度比sql快不了多少

最後解決的方式是
先把發生當天的資料全砍了

delete from event where timestamp like '2019-01-07%';

再清理一次
快多了

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

速度快多了

2016/06/18

在python中撈取mysql的資料
在cursor.execute後可以用cursor.fetchone()及cursor.fetchall()

如果回傳的只有一筆資料 可以使用cursor.fetchone() 可以少一點code
語法

cursor.execute(select count(*) from table)
result = cursor.fetchone()
print result[0]

如果回傳的資料有很多 則使用cursor.fetchall()

語法
cursor.execute(select * from table)
result = cursor.fetchall()
if result:
for record in result:
print record[0]


2015/12/04

最近開始直接向各國回報攻擊我們的ip
今天終於有一個國家回信 是日本
好感動
請我再提供log的時區及純文字檔

snort base 無法直接匯出

記錄一下sql語法

select event.cid,signature,sig_name,inet_ntoa(iphdr.ip_src),tcphdr.tcp_sport,inet_ntoa(iphdr.ip_dst),tcphdr.tcp_dport,timestamp from iphdr,event,signature,tcphdr where event.signature=signature.sig_id and event.cid=iphdr.cid and event.cid=tcphdr.cid and event.timestamp like '2015-12-04%' and inet_ntoa(iphdr.ip_src)="133.208.26.134" into outfile '/tmp/133.208.26.134.log';

事件的唯一值是 event裡的cid 其他table都要參考這個值

iphdr 放的是ip資料
tcphdr 放的是tcp的相關port 資料
udphdr 放的是udp的相關port 資料

2015/07/07

今天接到一個工作
要把snort裡的資料匯出成文字檔給外面的單位
因為BASE沒辦法一次全部匯出
所以要自己寫sql了

select event.cid,signature,sig_name,inet_ntoa(iphdr.ip_src),inet_ntoa(iphdr.ip_dst),timestamp from iphdr,event,signature where event.signature=signature.sig_id and event.cid=iphdr.cid into outfile '/tmp/sqloutput.txt';


http://www.andrew.cmu.edu/user/rdanyliw/snort/acid_db_er_v102.html
http://sgros.blogspot.tw/2012/07/querying-snort-sql-database.html
http://note.tc.edu.tw/670.html