實戰|記一次云服務器被黑
您所使用的設備(IP:*下:


嚇我一跳,定睛一看,端口6379,不是radis的默認端口嗎?前些陣子寫項目就用自己的服務器搭了一個radis服務器,不會被黑了吧?百般納悶,反正說是24小時內,不管,先睡覺
早上爬起來,想用Xshell登錄一下服務器看看,結果死活登不上,再在控制臺看看,結果還是登不上,心想:完了,不會真被黑了吧?用騰訊云自動實例檢測,提示CPU近期占有率高達92%,但是我在服務器中就掛了一個radis和nginx,有鬼!我最后用VNC登錄方式成功登錄,書到用時方恨少,Linux的運維命令又忘了不少,下面記記Linux問題排查的命令吧
問題排查
查看CPU狀態:
top
分析進程
根據任務管理器中的進程,分析與排查問題,以采取對應解決方案。
如果是業務進程占用了大量 CPU 或內存資源,分析業務程序是否有優化空間,進行優化或者升級服務器配置。
如果是異常進程占用了大量 CPU 或內存資源,則可能中毒,需要自行終止進程或者使用安全軟件進行查殺,必要時考慮備份數據,重裝系統。
例如:
Top 命令的輸出信息主要分為兩部分,上半部分顯示 CPU 和內存資源的總體使用情況:
第一行:系統當前時間,當前登錄用戶個數以及系統負載。
第二行:系統總進程數、運行中進程數、休眠、睡眠和僵尸進程數量。
第三行:CPU 當前使用情況。
第四行:內存當前使用情況。
第五行:Swap 空間當前使用情況。
下半部分以進程為維度顯示資源的占用情況:
PID:進程 ID。
USER:進程所有者。
PR:進程優先級 NI:NICE 值,NICE 值越小,優先級越高。
VIRT:使用的虛擬內存大小,單位 KB。
RES:當前使用的內存大小,單位 KB。
SHR:使用的共享內存的大小,單位 KB。
S:進程狀態。
%CPU:更新時間間隔內進程所使用的 CPU 時間的百分比。
%MEM:更新時間間隔內進程所使用的內存的百分比。
TIME+:進程使用的 CPU 時間,精確到 0.01s。
COMMAND:進程名稱。

1. 分析占有率異常的進程,記下第一個字段PID
2. 輸入k
3. 輸入需要終止進程的 PID ,按 Enter
流量檢測小工具:
如下命令
yum install iftop -y yum install lsof -y
安裝好后,執行如下命令:
iftop

<=、=> 表示流量的方向
TX 表示發送流量
RX 表示接收流量
TOTAL 表示總流量
Cum 表示運行 iftop 到目前時間的總流量
peak 表示流量峰值
rates 分別表示過去2s、10s和40s的平均流量
根據 iftop 中消耗流量的 IP,執行以下命令,查看連接該 IP 的進程。
lsof -i | grep (你要看的那個ip)
然后就可以查詢那個異常IP的歸屬地:歸屬地查詢(https://www.ip138.com/)
查看端口
查看指定端口:
netstat -anp | grep 3306 #3306是你要查詢的端口號

監控狀態為LISTEN表示已經被占用,最后一列顯示被服務mysqld占用,查看具體端口號,只要有如圖這一行就表示被占用了
如下命令可以查看所有端口:
netstat -nultp

綜上,你需要找到異常端口,然后想辦法關閉它
如下,先查詢6379端口
lsof -i:6379
然后kill它
kill -9 PID

如果實在沒辦法,就重裝系統吧!
注意!!!!,安裝MySQL,redis這樣的軟件,一定要設置密碼,而且不能是簡單密碼,云服務器環境復雜,很可能有人利用你的漏洞去攻擊別人,我初步猜想是有人請求騰訊云內網ip,通過沒有設置密碼的redis端口漏洞進行感染操作,我就中招了,很遺憾,進行一番操作還是沒有排查出問題,只能重裝系統,血的教訓啊,嗚嗚