1、概述

  在本人所處的公司的服務器正式遭到黑客攻擊之前,一直都以爲 黑客 是個遙不可及的詞,直到真正成爲了受害者時,才猛然意識到安全的重要性。有一些基本經驗和心得總結出來,和同行分享一下吧。

  2、暴破手段

  最粗暴的黑客行爲,就是利用計算機對比人的逆天的計算能力,來暴力破解。一般的服務器都是不提供交互界面的,而且爲了能夠方便和其它程序進行自動化連接和集成,也是不會設置圖靈測試驗證碼的,所以基於這種條件,服務器天然具備暴破的條件。

  主要的暴破方法如下:

  3、資產收集

  所謂的資產收集,在服務器滲透領域,就是獲取服務器的域名和IP等等相關信息,這是獲取滲透目標的最基本要求。資產收集的手段有很多,主要有社會工程學手段,計算機信息檢索手段及混合手段。

  社會工程學手段

  從內部人着手,採用誘導或者收買的方式來獲取信息

  計算機信息檢索手段

  從社會上公開的信息進行檢索分析,例如:工商信息,域名信息

  混合手段

  研究企業內部人員,觀察其社交網絡行爲,從郵箱,QQ號等等獲得信息檢索的線索,逐步弄清資產

  這是一個類似於“戰場”的場合,其目的只有一個:獲取服務器資產相關信息。

  這一領域到底有多嚴酷,可以從以前一些“某國家研究所向國外間諜出賣重要資料最終被判死刑”的案例可以看出。當然,大部分的普通人還是沒法到那個程度的,所以就從普通的技術層次來進行實驗。

  比如:要獲取指定企業的服務器信息。

  一級線索:

  企業名稱

  企業網址

  任何人都可以通過企業名稱,可以在啓信寶等平臺上獲得此企業的詳細工商信息。

  例如:阿里巴巴

  對於小公司,特別是創業小公司來說,公司的域名一般都是以創始人或者聯合創始人的名義來註冊的,當然我們一般不會這個名字來查詢公司域名,畢竟同名人太多,這個用於域名查詢之後的驗證。

  一般公司肯定會有官網,有官網就有域名,通過任意的域名反查平臺:

  查到相關信息如下:

  域名持有人姓名(可以和之前查到的企業相關人員進行驗證)

  註冊時間和到期時間

  電話/地址/郵箱

  其實通過 電話/地址/郵箱 還可以繼續進行深挖,挖到更多的線索,但是這和本文主題相關不大,略去不表。

  在支持 whois反查 的平臺,可以查出更多相關的域名,然後進行篩選分析得到和此企業相關的域名。

  然後通過PING或者traceroute等等網絡工具,可以查到服務器的具體IP地址及網絡節點圖。

  當然,如果是自己內部人員做滲透測試,就沒有這麼麻煩了,直接找運維人員要一份服務器資產清單即可。

  4、端口掃描

  在獲得 服務器資產清單 之後,就可以對服務器上運行的服務進行掃描。基本上所有的服務器都是以IP+端口作爲服務地址來對外提供服務的。

  通過常見的 nmap 等等工具可以掃描到服務器上暴露的端口,下面對內網的某個安全測試服務器進行掃描:

  顯然,服務器上面運行了哪些服務一目瞭然。

  ftp

  ssh

  dnsmasq

  web-http

  mongodb服務器

  mysql

  redis

  其它

  有了這些信息之後,可做的事情又多了:

  ssh密碼暴破

  估計很多小白用戶的root賬號密碼都會中招,如果這一層被攻破,服務器就成了肉機,所以操作及文件系統權限都被獲取

  ftp密碼暴破

  匿名登錄賬號會中招

  簡單密碼賬號會中招

  可以查看ftp上的文件,甚至有些沒有設置好權限的,還能通過此端口獲取整個服務器根目錄權限

  web密碼暴破

  如果獲取成功,再有web權限的疏忽,則可能通過web後臺上傳可執行文件,執行shell腳本,間接獲取服務器所有權限

  數據庫密碼暴破

  暴破破功後,影響也是相當大的

  一般情況下:

  沒經驗的開發人員沒有系統的安全意識,服務器漏洞百出

  公司用於測試的服務器,沒有足夠的安全意識和投入,往往成爲了突破口

  基於如上獲取的信息,就可以對很多服務器形成很好的滲透了。因爲這個世界上有太多的人還沒有足夠的安全意識,就已經敢把自己的服務放在公網上了。

  5、預防措施

  服務器端口掃描這一行爲,最好的方法,就是儘量僞裝好自己的服務器上的服務。主要手段有:

  禁用ICMP,防止別人通過網絡工具獲取網絡拓撲圖

  局域網的多臺服務器之間禁止公網IP訪問

  沒有必要對外公開的信息就不要給外界權限訪問

  對外儘量使用代向代理,不要暴露過多端口信息

  當然,肯定會有很多開發小白會覺得這樣很不方便,特別是在很多創業公司裏面,早期如果在安全上下太多功夫,而把本來用於產品開發的保貴人力放在這邊,有點不划算,這是普遍的早期企業的矛盾之處。

  所以會存在這樣的訴求:

  既要開發服務器隱藏端口

  也需要開發人員在自己機器上訪問到相應的數據庫,方便查看數據開發調試

  本文提出了一種中間代理模式,來實現以上訴求。

  5.1、生產配置圖

  一般的web應用程序都有數據庫服務器和web應用服務器,還有一臺反向代理服務器(nginx),如下圖:

  其中:

  Web服務器通過內網IP及端口連接數據庫服務器

  Nginx服務器通過內網IP及端口連接Web服務器

  只有80端口的Web服務暴露給客戶訪問

  整體來說:不需要對外的服務器都對公網形成了很好的隔離。

  5.2、開發配置圖

  對於開發調試階段需要連接公網服務器的數據庫時,可以使用如下模式:

  5.3 方法總結

  上面的 端口映射 方法,其思想都是基於 代理映射 。即都會使用一箇中間人做傳話,內部的系統對外都是黑盒狀態,然後安全人員集中精力守住門口即可,畢竟守門的難度比守個方圓十公里的大莊園要簡單得多,真的是省時省心省力。

  類似的方法在ssh登錄管理服務器的時候,也有用到:開發人員要登錄集羣的其它服務器,必需要登錄到某一臺中間服務器,然後再通過中間服務器對其它服務器內網訪問。

  畢竟:隱藏得越深,往往就越安全也越省事。即使技術十分精湛,也沒有必要去自找麻煩吧。

  6、小結

  上面提到的那些知識,對於專門做安全行業的人來說,估計是太自然不過的知識儲備了。本文提到的這些滲透手段,主要目的是根據提出一些服務器部署的安全建議,給開發人員一些警示:儘量能夠養成良好的開發習慣,做到防患於未然。

  本文只針對服務器端口掃描這一行爲提出了一種端口僞裝的可行方法,還有密碼暴破的預防、服務器權限控制,預防小漏洞導致大問題、其它等等。

相關文章