iT邦幫忙

0

救命啊, 我想我的 Mysql 被攻擊了!!!

afgn 2012-08-29 23:50:195867 瀏覽

如題, 一台WEB搭配一台MySQL,各有兩片網卡(eth0外、eth1內), mysql 跑內網查詢.

今天下午忽然發現, eth1流量比 eth0 大很多, 幾乎到頂 (請參考下圖).

bwm-ng v0.6 (probing every 0.500s), press 'h' for help
input: libstatnet type: rate
\ iface Rx Tx Total

lo: 0.00 KB/s 0.00 KB/s 0.00 KB/s
eth0: 1.32 KB/s 0.42 KB/s 1.75 KB/s
eth1: 27329.36 KB/s 107723.57 KB/s 135052.94 KB/s

total: 27330.69 KB/s 107724.00 KB/s 135054.68 KB/s

web 的也是一樣怪, 對外服務不到500KB (eth0), 而對內串接 mysql 的也是到頂, 只有停掉
mysql 服務才能降下來.

我的 mysql 版本是 5.1.60 source 安裝版, 請問有救嗎??

22
wiseguy
iT邦超人 1 級 ‧ 2012-08-30 09:53:00
最佳解答

我想你的 mysql 被你自己的 web 站攻擊了。
SQL 指令寫得不好,就有這種情形發生。明明沒什麼人在用 Web AP,資料庫卻飆到最高點。

  1. 在 mysql 主機裡下個指令:mysqladmin -p processlist 會列出當下 mysql 的連線。注意其中兩欄 Command、Time 就可以知道哪個指令在耗 mysql 的時間。

  2. 在 mysql 的設定檔 my.cnf 裡加上下列三行,打開 slow query 的記錄:
    slow_query_log=1
    long_query_time = 5
    slow_query_log_file=/tmp/slow_queries.log

    重跑 mysql 之後,若再遇到流量飆高,就下指令看看什麼 SQL 在耗流量吧。比如下
    mysqldumpslow -s r -t 10 /tmp/slow_queries.log
    就表示列出查詢資料量最多的前 10 名。更多參數請參考官方網:
    http://dev.mysql.com/doc/refman/5.1/en/mysqldumpslow.html

afgn iT邦新手 5 級 ‧ 2012-08-30 15:20:38 檢舉

好吧, 您還是一哥 ^_^

昨天找到半夜, 終於發現是RD同事把MySQL語法設錯導致CPU Loading 飆高.

管系統的總是會先懷疑東懷疑西, 沒想到是內賊害的 :p

把有問題的程式修正, CPU Loading 馬上恢復正常, Anyway, 還是感謝 Wiseguy 大大提供寶貴的建議.

可以跟您要 Email 或 GoogleTalk 即時通嗎??

我的是 afgnsu@gmail.com ^_^

6
ganymede
iT邦好手 1 級 ‧ 2012-08-30 08:24:54

直接由 firewall 裡去限定只允許 MySQL 連線的 IP 吧, 這是最快也最省事的方法.

afgn iT邦新手 5 級 ‧ 2012-08-30 15:21:52 檢舉

其實是自己打自己... 要怎麼擋??

我總不能把 Web 和 MySQL 之間的通道關閉吧?!

4
hon2006
iT邦大師 1 級 ‧ 2012-08-30 09:01:51

可以先看一下mysql.log,不然就限制一下mysql可以傳檔案的大小,不然就裝一下 ntop,看看是誰對你作DDOS攻擊.

afgn iT邦新手 5 級 ‧ 2012-08-30 15:22:43 檢舉

其實 binlog 跟本沒人在設, 因為只會增加 loading...

答案如同 wiseguy 大大說的, 是自己打自己 >"<

我要發表回答

立即登入回答