請問這是受到攻擊嗎? - BBS
By Carolina Franco
at 2009-04-09T05:09
at 2009-04-09T05:09
Table of Contents
※ 引述《sweetwords (米虫三號)》之銘言:
: 最近 LAB 的 FreeBSD 測試機,
: 常常開機太久後網頁資料連結到資料庫不是讀取太久,
: 就是整個資料庫都連不到
1)有可能 DB Lock 或 DB connect 過多超出預設值,
2)也有可能記憶體用光,或超出 kern.maxfiles or kern.maxfilesperproc
或沒設妥 MySQL updatelog 的存放量以致硬碟滿了
或安裝時未規劃妥 RAID 或硬碟空間整體配置佈局
或者瞬間流量滿了(超出網卡或 switch 撐不住)_
3)也有可能前端網頁程式不是很嚴謹,遇上 SQL injection 之類攻擊狀況。
1) 可以下 show full processlist 或以類似如下
#!/bin/sh
PATH=/bin:/usr/bin:/usr/local/bin
LockTxt=$(/usr/local/bin/mysql -u whoami -p'xxoo' -h192.168.x.x -e \
"show full processlist" | grep -v Sleep \
| grep -v Connect | grep -v '\-\-\-\-' | grep -v "Command" \
| egrep -v "[[:cntrl:]][0-1][[:cntrl:]]" \
| grep -v "processlist")
if [ "$LockTxt" != "" ];
then echo "$LockTxt" | sed "s/^/$(date)\t/g" >> ~/dblock.log
fi
exit 0
方式寫成 script 放到 crontab 去跑並把 log 存起來,來察看是否有 lock 發生,
並根據經驗來判別該 lock 行為是否為人為失誤操作所致,比方說 SELECT * 之類,
或異常行為或疑似攻擊行為。
若是超出 MySQL max_connections 則要依需求來調整 my.cnf
在 [mysqld] 區段加上 max_connections = 1024 之類設定,並重啟 MySQL 即可。
2) 可以用 pstat -T 跟 df -h 與 netstat -m 之類察看,
像是若超出最大同時開啟檔案數也可以考慮以 sysctl 調高一些,
並以相關 snmp 工具來輔助確認流量方面是不是有問題。
3) 可能要多注意 web ap 內相關 SQL 檢驗跟表單檢查,
而 web app 的檔案權限, owner, group 也要注意
有閒錢的話可以考慮看看 WAF 產品。
: 每次都要 reboot 狀況才會改善
: 一直在想說是不是受到攻擊之類的?
: 下了 netstat 去看
: c42e54ec stream 0 0 0 c42e59d8 0 0 /tmp/mysql.sock
: c42e5604 stream 0 0 0 c3a3e3d4 0 0 /tmp/mysql.sock
: c42e5a64 stream 0 0 0 c42e5460 0 0 /tmp/mysql.sock
: 發現有這個暫存檔,不知是否是這個原因搞掛 mysql
: 隨著開機時間越多,我也發現這個 stream 會越來越多
: 但是不懂這是啥意義?有各位前輩可以解答嗎,非常感謝 <0>
這、、 你去 google 一下 mysql.sock 是作什麼的,或者找位 DBA 人員問問也可。
: 另外也有找到資料是 httpd 開啟兩個服務讓 mysql loading 太大
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^?
: ps aux | grep httpd 我也有試著下版友給我的建議這個指令
這指令以及 ps aux | grep httpd | wc -l 的執行結果為?
: cat /var/log/httpd-access.log 11:45
: 除了以上這個以外,還會跑出一堆在
: 帳號/底下的 log
log 內容大約像是什麼?
--
靜中見真境,淡中識本然
--
: 最近 LAB 的 FreeBSD 測試機,
: 常常開機太久後網頁資料連結到資料庫不是讀取太久,
: 就是整個資料庫都連不到
1)有可能 DB Lock 或 DB connect 過多超出預設值,
2)也有可能記憶體用光,或超出 kern.maxfiles or kern.maxfilesperproc
或沒設妥 MySQL updatelog 的存放量以致硬碟滿了
或安裝時未規劃妥 RAID 或硬碟空間整體配置佈局
或者瞬間流量滿了(超出網卡或 switch 撐不住)_
3)也有可能前端網頁程式不是很嚴謹,遇上 SQL injection 之類攻擊狀況。
1) 可以下 show full processlist 或以類似如下
#!/bin/sh
PATH=/bin:/usr/bin:/usr/local/bin
LockTxt=$(/usr/local/bin/mysql -u whoami -p'xxoo' -h192.168.x.x -e \
"show full processlist" | grep -v Sleep \
| grep -v Connect | grep -v '\-\-\-\-' | grep -v "Command" \
| egrep -v "[[:cntrl:]][0-1][[:cntrl:]]" \
| grep -v "processlist")
if [ "$LockTxt" != "" ];
then echo "$LockTxt" | sed "s/^/$(date)\t/g" >> ~/dblock.log
fi
exit 0
方式寫成 script 放到 crontab 去跑並把 log 存起來,來察看是否有 lock 發生,
並根據經驗來判別該 lock 行為是否為人為失誤操作所致,比方說 SELECT * 之類,
或異常行為或疑似攻擊行為。
若是超出 MySQL max_connections 則要依需求來調整 my.cnf
在 [mysqld] 區段加上 max_connections = 1024 之類設定,並重啟 MySQL 即可。
2) 可以用 pstat -T 跟 df -h 與 netstat -m 之類察看,
像是若超出最大同時開啟檔案數也可以考慮以 sysctl 調高一些,
並以相關 snmp 工具來輔助確認流量方面是不是有問題。
3) 可能要多注意 web ap 內相關 SQL 檢驗跟表單檢查,
而 web app 的檔案權限, owner, group 也要注意
有閒錢的話可以考慮看看 WAF 產品。
: 每次都要 reboot 狀況才會改善
: 一直在想說是不是受到攻擊之類的?
: 下了 netstat 去看
: c42e54ec stream 0 0 0 c42e59d8 0 0 /tmp/mysql.sock
: c42e5604 stream 0 0 0 c3a3e3d4 0 0 /tmp/mysql.sock
: c42e5a64 stream 0 0 0 c42e5460 0 0 /tmp/mysql.sock
: 發現有這個暫存檔,不知是否是這個原因搞掛 mysql
: 隨著開機時間越多,我也發現這個 stream 會越來越多
: 但是不懂這是啥意義?有各位前輩可以解答嗎,非常感謝 <0>
這、、 你去 google 一下 mysql.sock 是作什麼的,或者找位 DBA 人員問問也可。
: 另外也有找到資料是 httpd 開啟兩個服務讓 mysql loading 太大
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^?
: ps aux | grep httpd 我也有試著下版友給我的建議這個指令
這指令以及 ps aux | grep httpd | wc -l 的執行結果為?
: cat /var/log/httpd-access.log 11:45
: 除了以上這個以外,還會跑出一堆在
: 帳號/底下的 log
log 內容大約像是什麼?
--
靜中見真境,淡中識本然
--
Tags:
BBS
All Comments
Related Posts
使用pkg_add -r 安裝的程式是否能不重봠…
By Ina
at 2009-04-09T04:25
at 2009-04-09T04:25
Intel Atom 效能?
By Victoria
at 2009-04-08T17:27
at 2009-04-08T17:27
Intel Atom 效能?
By Bethany
at 2009-04-08T06:39
at 2009-04-08T06:39
飛瑞的On-Line UPS + USHA Smart II控制 …
By Margaret
at 2009-04-08T06:11
at 2009-04-08T06:11
如何 遠端 不重新開機 更改IP?
By Gary
at 2009-04-08T02:28
at 2009-04-08T02:28