2020年4月6日凌晨,我收到一條來自騰訊雲的短信:
<code>【騰訊雲】安全提醒:您的服務器172.21.x.x(賬號ID:xxxxx instance-id:ins-xxxxxx[未命名] 地域:北京)檢測到來自 61.219.255.x 的暴力破解事件,破解狀態:破解成功。您的服務器疑似被黑客入侵,請即刻前往主機安全控制檯查看詳細信息並參照:http://url.cn/5AnEx6J ,進行處理/<code>
![記錄一次真實的服務器被黑客入侵經歷](http://p2.ttnews.xyz/loading.gif)
我的服務器被入侵了? 我看了一下,發現這個服務器是我個人的一臺閒置服務器,以前搭建過一個wordpress 測試了下而已, 這臺服務器當時並沒有設置秘鑰登錄,允許了密碼登錄並且是root用戶。
我開始想過直接重裝系統,但是出於技術人心裡的一點倔強和好奇決定查看一下。
1、我連上服務器之後先執行了 w 命令看了下,除了我之外沒有別IP在連服務器!(當時忘了截圖) ,執行 history 命令 沒有查到 異常的記錄, 在 .bash_history 也沒有查到 。
2、然後查了下 /var/log/secure 日誌,發現密碼確實被攻破了(我把日誌中的IP最後一段換成了x):
<code>
Apr 6 00:19:48 VM_0_5_centos sshd[22197]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=61.219.255.x user=root
Apr 6 00:19:50 VM_0_5_centos sshd[22197]: Failed password for root from 61.219.255.x port 53319 ssh2
Apr 6 00:19:51 VM_0_5_centos sshd[22197]: Connection closed by 61.219.255.x port 53319 [preauth]
Apr 6 00:19:54 VM_0_5_centos sshd[22210]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=61.219.255.x user=root
Apr 6 00:19:56 VM_0_5_centos sshd[22210]: Failed password for root from 61.219.255.x port 48948 ssh2
Apr 6 00:19:56 VM_0_5_centos sshd[22210]: Connection closed by 61.219.255.x port 48948 [preauth]
Apr 6 00:19:57 VM_0_5_centos sshd[22220]: Accepted password for root from 61.219.255.x port 14542 ssh2/<code>
可以看到 最下面那一條: Accepted password for root from 61.219.255.x 說明他破解了我的密碼
接下來我發現了一個可怕的事情,這個黑客簡直是高手。
他不但破解了我的密碼,還在root 用戶下.ssh/authorized_keys 添加了他的公鑰,而且還新建了一個普通用戶,同樣也加了公鑰 。我嘗試清除掉他的公鑰,提示我無法保存。我可是root 用戶啊,作為一個運維人員,很快會意識到文件被加鎖了。
<code>[root@VM_0_5_centos ~]# lsattr .ssh/authorized_keys
-----i------- .ssh/authorized_keys
#果然被加鎖了 ,需要先解鎖再修改
[root@VM_0_5_centos ~]# chattr -i .ssh/authorized_keys
#然後用同樣的方法解鎖黑客新建用戶的認證文件,然後刪掉他新建的用戶/<code>
3、我馬上修改sshd的配置文件,包括 拒絕密碼認證和拒絕root直接ssh, 創建一個新用戶並添加我的公鑰
<code>vi /etc/ssh/sshd_config
#禁止密碼認證
PasswordAuthentication no
#禁止root用戶直接ssh到服務器
PermitRootLogin no
#公鑰的位置
AuthorizedKeysFile .ssh/authorized_keys
#然後重啟sshd 服務
#再創建一個用戶dfzz, 並授權sudo all,也可以只授權某個命令,看自己需要嘍
visudo
dfzz ALL=(ALL) NOPASSWD: ALL/<code>
4、 用戶檢查完了,sshd也重啟了,我開始檢查有沒有惡意進程
![記錄一次真實的服務器被黑客入侵經歷](http://p2.ttnews.xyz/loading.gif)
果然還是沒放過我啊,這個wordpress 進程並不是我之前自己測試的wordpress,我之前是 lnmp+ wordpress ,並沒有叫wordpress的進程。
我kill 掉 這個進程,並刪除了這個文件
然後用 netstat -lntup 查了一下 有沒有異常的服務 端口
<code>#查到了一個,但是忘記截圖也忘記複製了。。。
#這個進程的pid是13747 , 查看pid對應的目錄
ls -l /proc/13747
#目錄下有一個exe 對應的文件就是程序執行文件,刪掉它,然後 kill掉進程/<code>
5、檢查一下 /etc/hosts 因為黑客經常 入侵服務器 經常會修改 hosts 文件
呵呵,還真是。 我修改的時候同樣提示權限不足,還是先解鎖再修改。
6、 我又檢查了一下定時任務,因為黑客經常會修改定時任務,你刪掉他們的程序定時又會啟動,可結果卻是定時任務正常,沒有被修改, 我有點詫異,難道這就結束了?
好,那我重啟一下系統看看!
果然,沒我想的這麼簡單!
重啟後發現 /etc/hosts 又被加了一大推, root 用戶的authorized_keys 又被加了黑客的公鑰,而且我新建的那個dfzz 用戶 也被加了他的公鑰,當然這三個文件也被加了鎖,真的厲害!
我先給這三個文件解鎖,去掉了被修改的內容
又查看了下進程,發現剛才kill的那兩個進程不出所料的又啟動了。
我還是先kill掉這兩個 進程 並刪除 執行文件
接下來查一下開機啟動文件:
<code>chkconfig --list
#有一個可以的開機啟動進程,但還並不能確定就是這個,好像叫 jexce ,忘記截圖了。
我先取消掉這個進程的開機啟動,
又檢查了下 /etc/rc.d/init.d 目錄,發現了很多可疑的腳本文件,統統刪掉! 同樣提示權限不足,還是先解鎖
[root@VM_0_5_centos ~]# chattr -i /etc/rc.d/init.d/watchdogs
[root@VM_0_5_centos ~]# chattr -i /etc/rc.d/init.d/selinux
[root@VM_0_5_centos ~]# chattr -i /etc/rc.d/init.d/pdflushs
[root@VM_0_5_centos ~]# chattr -i /etc/rc.d/init.d/DbSecuritySp
然後刪掉這些文件
然後再看一下有沒有 systemd管理的服務有開機自啟的
systemctl list-unit-files|grep enabled
沒有發現異常/<code>
然後檢查一下 /etc/rc.d/rc.local 也正常,凡是開機啟動的都檢查一遍!
然後給 chattr 暫時改個名,要不老被鎖
<code>mv /usr/bin/chattr /usr/local/bin/qweasdzxc
#我讓你給我再加鎖 ?
# 自己改的名字一定要記住, 或者一會再改回來/<code>
好,現在發現了一個可疑的開機自啟的文件,又刪掉了一些可疑腳本,再重啟試一下 !
我抱著激動的心情 輸入 了 reboot 命令
。。。。。。 無法連接服務器!
我回頭看了一下,剛才刪除文件的時候,誤刪了一個文件 /etc/rc.d/init.d/functions 導致系統重啟起不來了! 由於我這個服務器不重要。。。當時這個服務器 沒有做鏡像和快照!
只能重裝系統!
這篇文章是在系統重裝後寫的 ,有的地方可能有遺漏,並沒有完美的解決此次被黑客入侵,當做一次教訓記錄下來。
黑客的手法很高明,我們只能更加小心,一點都不能疏忽大意。
亡羊補牢的措施:
1、 服務器絕對不允許密碼認證登錄
2、 禁止 root 用戶直接ssh 登錄
3、 如果公司的IP是固定的,可以對ssh做IP限制,或者做一個vpn服務,總之通過固定IP去ssh就可以限制IP了,這樣是最安全的
閱讀更多 小趙搞IT 的文章