由於我之前寫了不少網路安全技術相關的故事文章,不少讀者朋友知道我是從事網路安全相關的工作,於是經常有人在微信裡問我:
我剛入門網路安全,該怎麼學?要學哪些東西?有哪些方向?怎麼選?
不同於Java、C/C++等後端開發崗位有非常明晰的學習路線,網路安全更多是靠自己摸索,要學的東西又雜又多,難成體系。
常讀我文章的朋友知道,我的文章基本以故事為載體的技術輸出為主,很少去談到職場、面試這些方面的內容。主要是考慮到現在大家的壓力已經很大,節奏很快,公眾號上是讓大家放鬆的地方,儘量寫一些輕快的內容。不過隨著越來越多的人問我上面這些問題,今天就專門寫一篇來擺一擺這個龍門陣。
近幾年,隨著網路安全被列為國家安全戰略的一部分,這個曾經細分的領域發展提速了不少,除了一些傳統安全廠商以外,一些網際網路大廠也都紛紛加碼了在這一塊的投入,隨之而來的吸引了越來越多的新鮮血液不斷湧入。
網路安全分支
其實在網路安全這個概念之上,還有一個更大的概念:資訊保安。本文不去探討二者在學術劃分上的區別,如無特殊說明,文中將其視為一個概念,我們來看下實際工作方向上,有哪些細分路線。
在這個圈子技術門類中,工作崗位主要有以下三個方向:
安全研發
安全研究:二進位制方向
安全研究:網路滲透方向
下面逐一說明一下。
安全研發
安全行業的研發崗主要有兩種分類:
與安全業務關係不大的研發崗位
與安全業務緊密相關的研發崗位
你可以把網路安全理解成電商行業、教育行業等其他行業一樣,每個行業都有自己的軟體研發,網路安全作為一個行業也不例外,不同的是這個行業的研發就是開發與網路安全業務相關的軟體。
既然如此,那其他行業通用的崗位在安全行業也是存在的,前端、後端、大資料分析等等,也就是屬於上面的第一個分類,與安全業務關係不大的型別。這裡我們重點關注下第二種,與安全業務緊密相關的研發崗位。
這個分類下面又可以分為兩個子型別:
做安全產品開發,做防
做安全工具開發,做攻
安全行業要研發的產品,主要(但不限於)有下面這些:
防火牆、IDS、IPS
WAF(Web網站應用防火牆)
資料庫閘道器
NTA(網路流量分析)
SIEM(安全事件分析中心、態勢感知)
大資料安全分析
EDR(終端裝置上的安全軟體)
DLP(資料洩漏防護)
防毒軟體
安全檢測沙箱
總結一下,安全研發的產品大部分都是用於檢測發現、抵禦安全攻擊用的,涉及終端側(PC電腦、手機、網路裝置等)、網路側。
開發這些產品用到的技術主要以C/C++、Java、Python三大技術棧為主,也有少部分的GoLang、Rust。
安全研發崗位,相對其他兩個方向,對網路安全技術的要求要低一些(只是相對,部分產品的研發對安全技能要求並不低),甚至我見過不少公司的研發對安全一無所知。在這種情況下,如果除了基本的開發功底以外,對網路安全技術有所瞭解,自然會是你面試這些崗位時的加分項。
安全研發崗位,除了通用開發技能的要求以外,可以重點關注一下下面這些技術:
上面列舉的只是最直接相關的部分,還需要有了解更多安全技術才能更好的開發產品,繼續往下看。
二進位制安全
二進位制安全方向,這是安全領域兩大技術方向之一。
這個方向主要涉及到軟體漏洞挖掘、逆向工程、病毒木馬分析等工作,涉及作業系統核心分析、除錯與反除錯、反病毒等技術。因為經常都是與二進位制的資料打交道,所以久而久之用二進位制安全來統稱這個方向。
這個方向的特點是:需要耐得住寂寞。
比不上安全研發可以有實實在在的產品輸出,也比不上網路滲透方向聽起來的狂拽炫酷,這個方向更多時間是在默默的分析和研究。
以漏洞挖掘為例,光是學習五花八門的攻擊手法就需要花不少的時間。在這個領域,為了研究一個問題,可能花費數月甚至數年時間,這絕非一般人能堅持下來的。不僅如此,不是勤奮就可以成功,更多還要靠天分。
像騰訊幾大安全實驗室的掌門人,業界知名的TK教主、吳石這些人物,他們已經深諳漏洞挖掘的奧義,並將這門絕技融會貫通,做個夢都能想到新的玩法。不過像這樣的天才實在是少之又少,絕大多數人都無法企及。
如果說程式設計師是苦逼的話,那二進位制安全研究就是苦逼Plus。
如果看了這些你還是有勇氣進入這個領域,那下面這些東西是你需要學的:
這個方向比起安全研發,不僅技術難度更大,提供這些崗位的公司也很少,且基本上分佈於北上廣深幾個一線城市。
網路滲透
這個方向更符合於大部分人對“黑客”的認知,他們能夠黑手機、黑電腦、黑網站、黑伺服器、黑內網,萬物皆可黑。
相比二進位制安全方向,這個方向初期更容易入門一些,掌握一些基本技術,拿起各種現成的工具就可以開黑了。
不過,要想從指令碼小子變成黑客大神,這個方向越往後,需要學習和掌握的東西就多了:
網路滲透的方向更偏向於“實戰”,因此對技術在廣度上有更高的要求,從網路硬體裝置、網路通訊協議、網路服務(web、郵件、檔案、資料庫等)、到作業系統、攻擊手法等等都需要了解。更偏向於一個全能型的計算機專家,將各種技術融會貫通,以用於“實戰”。
網路滲透方向的工作有下面幾個方向:
安全服務,俗稱乙方,這是最主要的一個方向,為甲方公司提供安全能力支援,如滲透測試,產品安全檢測等。
安全能力建設,俗稱甲方,國內稍微有點規模的公司都有自己的SRC(安全應急響應中心),也就是有自己的安全團隊。
國家隊:你懂的
學習路線
上面說完了三個大的技術方向後,下面來聊聊該怎麼上路呢?下面說說我的看法。
首先別想分方向,先打好基礎!
第一步:計算機基礎
這第一步,其實跟網路安全關係都不太大,而是進入IT領域的任何一個人都要掌握的基礎能力。下面五大課程,是大學老師當年教給我們不管你是什麼技術方向最好都好好學的技術,如今看來,仍然不過時:
計算機網路
計算機組成原理
作業系統
演算法與資料結構
資料庫
這每一門課程其實都內有乾坤,基本都不能做到一次學習就能掌握,而是伴隨每個人的職業生涯,不同的技術階段都會有不一樣的認識和感受。
具體學起來建議參考敏捷開發,不斷迭代:有一個粗略的認識->有了進一步的認識->徹底掌握->溫故而知新。不用糾纏於把一門課程全部學完學懂才進入下一門課程。
第二步:程式設計能力
有了上面的一些基本功後,這個時候就需要動手,來寫點程式碼,錘鍊一下程式設計的功底。
下面三項,是安全行業的從業者都最好能掌握的語言:
Shell指令碼
掌握常用的Linux命令,能編寫簡單的Shell指令碼,處理一些簡單的事務。
C語言(C++可選)
C語言沒有複雜的特性,是現代程式語言的祖師爺,適合編寫底層軟體,還能幫助你理解記憶體、演算法、作業系統等計算機知識,建議學一下。
Python
C語言幫助你理解底層,Python則助你編寫網路、爬蟲、資料處理、影像處理等功能性的軟體。是程式設計師,尤其是黑客們非常鍾愛的程式語言,不得不學。
第三步:安全初體驗
有了前面兩步的打底,是時候接觸一些網路安全的技術了,剛剛開始這個階段,仍然不要把自己圈起來只學某一個方向的技術。這個階段,我的建議是:但當涉獵,見往事耳。
網路協議攻擊、Web服務攻擊、瀏覽器安全、漏洞攻擊、逆向破解、工具開發都去接觸一下,知道這是做什麼的,在這個過程中去發現自己的興趣,讓自己對網路安全各種領域的技術都有一個初步的認識。
第四步:分方向
在第三步中,慢慢發現自己的興趣點,是喜歡做各種工具的開發,還是喜歡攻破網站,還是痴迷於主機電腦的攻擊···
這個時候就可以思考自己後面的方向,然後精力開始聚焦在這個方向上,通過上面思維導圖中各自方向的技術去持續深耕,成為某一個領域的大拿。
學習方法
上面介紹了技術分類和學習路線,這裡來談一下學習方法
看書學習,這是最最基礎的
實際動手,開發路線需要多寫程式碼,閱讀優秀開原始碼,二進位制路線多分析樣本,編寫EXP等等,滲透測試多拿網站練手(合法方式)等
打CTF,多參與一些網路安全比賽,接近實戰的環境下鍛鍊動手能力
混圈子,多混一些安全大牛出沒的社群、社群、論壇,掌握行業資訊,瞭解最新技術變化趨勢(高清版思維導圖有)
總結
以上就是我對剛入行網路安全的朋友的一些個人的建議,最後有一點需要說明一下:
上面列舉到的不同方向的技術不是嚴格意義獨立的,相反,很多時候是相輔相成,需要結合起來,融會貫通。
每個人的認知是有限的,我也不例外。本文只是我的一家之言,建議大家多看一些人的總結和經驗,橫向對比,兼聽則明,偏聽則暗。
Tips
想獲取上面思維導讀完整高清版,可以回覆「安全」自動獲取。
歡迎持續關注軒轅,接下來我將抽時間輸出一個安全路線學習精品資料合輯,敬請期待。
往期TOP5文章