1.深入分析,查找入侵原因
1.1 檢查隱藏賬戶及弱口令
1.1.1、檢查服務器系統及應用賬戶是否存在弱口令
- 檢查說明:檢查管理員賬戶、數據庫賬戶、MySQL賬戶、tomcat賬戶、網站后台管理員賬戶等密碼設置是否較為簡單,簡單的密碼很容易被黑客破解
- 解決方法:以管理員權限登錄系統或應用程序后台,修改為復雜的密碼
- 風險性:高
1.1.2、使用 last 命令查看下服務器近期登錄的賬戶記錄,確認是否有可疑IP登錄過機器;
- 檢查說明:攻擊者或者惡意軟件往往會往系統中注入隱藏的系統賬戶實施提權或其他破壞性的攻擊
- 解決方法:檢查發現有可疑用戶時,可使用命令“usermod -L 用戶名”禁用用戶或者使用命令“userdel -r 用戶名”刪除用戶。
- 風險性:高
1.1.3、通過 less /var/log/secure|grep 'Accepted' 命令,查看是否有可疑IP登錄機器成功;
- 檢查說明:攻擊者或者惡意軟件往往會往系統中注入隱藏的系統賬戶實施提權或其他破壞性的攻擊
- 解決方法: 使用命令“usermod -L 用戶名”禁用用戶或者使用命令“userdel -r 用戶名”刪除用戶。
- 風險性:高
1.1.4、檢查系統是否采用默認管理端口
- 解決方法:
1)、在服務器內編輯 /etc/ssh/sshd_config 文件中的 Port 22 將 22 修改為非默認端口,修改之后需要重啟 ssh 服務;
2)、運行 /etc/init.d/sshd restart 命令重啟是配置生效;
3)、修改FTP、MySQL、Reids等的程序配置文件的默認監聽端口21、3306、6379為其他端口;
4)、限制遠程登錄的IP,編輯/etc/hosts.deny 、/etc/hosts.allow 兩個文件來限制IP - 風險性:高
1.1.5、檢查下 /etc/passwd 這個文件,看是否有非授權賬戶登錄;
- 檢查說明:攻擊者或者惡意軟件往往會往系統中注入隱藏的系統賬戶實施提權或其他破壞性的攻擊
- 解決方法: 使用命令“usermod -L 用戶名”禁用用戶或者使用命令“userdel -r 用戶名”刪除用戶。
- 風險性:中
1.2 檢查惡意進程及非法端口
1、運行 netstat –antlp 查看下服務器是否有未被授權的端口被監聽,查看下對應的pid。
- 檢查服務器是否存在惡意進程,惡意進程往往會開啟監聽端口,與外部控制機器進行連接
- 解決方法:
1)若發先有非授權進程,運行ls -l /proc/$PID/exe或file /proc/$PID/exe ($PID為對應的pid號) ,查看下pid所對應的進程文件路徑
2)如果為惡意進程,刪除下對應的文件即可。 - 風險性:高
2、使用 ps -ef 和 top 命令查看是否有異常進程
- 檢查說明:運行以上命令,當發現有名稱不斷變化的非授權進程占用大量系統CPU或內存資源時,則可能為惡意程序
- 解決方法:確認該進程為惡意進程后,可以使用 “kill -9 進程名”命令結束進程,或使用防火牆限制進程外聯
- 風險性:高
1.3 檢查惡意程序和可疑啟動項
1、使用 chkconfig --list 和 cat /etc/rc.local 命令查看下開機啟動項中是否有異常的啟動服務
- 檢查說明:惡意程序往往會添加在系統的啟動項,在用戶關機重啟后再次運行
- 解決方法:如發現有惡意進程,可使用 “chkconfig 服務名 off” 命令關閉,同時檢查 /etc/rc.local 中是否有異常項目,如有請注釋掉。
- 風險性:高
2、進入cron文件目錄,查看是否存在非法定時任務腳本
- 檢查說明:查看/etc/crontab,/etc/cron.d,/etc/cron.daily,cron.hourly/,cron.monthly,cron.weekly/是否存在可以腳本或程序
- 解決方法:如發現有不認識的計划任務,可定位腳本確認是否正常業務腳本,如果非業務腳本呢,可直接注釋掉任務內容或刪除腳本。
- 風險性:高
1.4 檢查第三方軟件漏洞
1、如果您服務器內有運行 Web、數據庫等應用服務,請您限制應用程序賬戶對文件系統的寫權限,同時盡量使用非root賬戶運行。
- 檢查說明:使用非root賬戶運行可以保障在應用程序被攻陷后攻擊者無法立即遠程控制服務器,減少攻擊損失
- 解決方法:
1)進入web服務根目錄或數據庫配置目錄;
2)運行“chown -R apache:apache /var/www/xxxx”、“chmod -R 750 file1.txt”命令配置網站訪問權限。
-風險性:中
如下簡單介紹網站目錄文件權限的參考舉例:
場景:我們假設http服務器運行的用戶和用戶組是www,網站用戶為centos,網站根目錄是/home/centos/web。
方法/步驟:
我們首先設定網站目錄和文件的所有者和所有組為centos,www,如下命令:
chown -R centos:www /home/centos/web
設置網站目錄權限為750,750是centos用戶對目錄擁有讀寫執行的權限,設置后, centos用戶可以在任何目錄下創建文件,用戶組有有讀執行權限,這樣才能進入目錄,其它用戶沒有任何權限。
find -type d -exec chmod 750 {} \;
設置網站文件權限為640,640指只有centos用戶對網站文件有更改的權限,http服務器只有讀取文件的權限,無法更改文件,其它用戶無任何權限。
find -not -type d -exec chmod 640 {} \;
針對個別目錄設置可寫權限。比如網站的一些緩存目錄就需要給http服務有寫入權限。例如discuz x2的/data/目錄就必須要寫入權限。
find data -type d -exec chmod 770 {} \;
2、升級修復應用程序漏洞
- 檢查說明:機器被入侵,部分原因是系統使用的應用程序軟件版本較老,存在較多的漏洞而沒有修復,導致可以被入侵利用 解決方法:比較典型的漏洞如ImageMagick、openssl、glibc等,用戶可以根據騰訊雲已發布安全通告指導通過apt-get/yum等方式進行直接升級修復
- 風險性:高
2. 被入侵后的安全優化建議
1、盡量使用SSH密鑰進行登錄,減少暴力破解的風險
2、在服務器內編輯 /etc/ssh/sshd_config 文件中的 Port 22 將 22 修改為其他非默認端口,修改之后重啟 ssh 服務。可使用 /etc/init.d/sshd restart 命令重啟
3、如果必須使用SSH密碼進行管理,選擇一個好密碼
- 無論應用程序管理后台(網站、中間件、tomcat等)、遠程SSH、遠程桌面、數據庫,都建議設置復雜且不一樣的密碼
- 下面是一些好密碼的實例(可以使用空格):
1qtwo-threeMiles3c45jia
caser, lanqiu streets - 下面是一些弱口令的示例,可能是你在公開的工作中常用的詞或者是你生活中常用的詞:
公司名+日期(coca-cola2016xxxx)
常用口語(Iamagoodboy)
......
4、使用netstat -anltp檢查主機有哪些端口開放,關閉非業務端口。
5、通過騰訊雲-安全組防火牆限制僅允許制定IP訪問管理或通過編輯/etc/hosts.deny 、/etc/hosts.allow 兩個文件來限制IP;
6、應用程序盡量不使用root權限
- 如apache、redis、mysql、nginx等程序,盡量不要以root權限的方式進行運行;
7、修復系統提權漏洞與運行在root權限下的程序漏洞,以免惡意軟件通過漏洞提權獲得root權限傳播后門
- 及時更新系統或所用應用程序的版本,如struts2、nginx,ImageMagick、java等
- 關閉應用程序的遠程管理功能,如redis、ntp等,如無遠程管理需要,可關閉對外監聽端口或配置
8、定期備份雲主機業務數據
- 對重要的業務數據進行異地備份或雲備份,避免主機被入侵后無法恢復
- 除了你的 home ,root目錄外,你還應當備份 /etc 和可用於取證的 /var/log 目錄
9、安裝騰訊雲主機安全Agent,在發生攻擊后,可以了解自身風險情況