軒轅,網絡安全這條路,怎麼走?

因爲我以前寫了很多網絡安全技術相關的故事文章,很多讀者朋友知道我是從事網絡安全相關的工做,因而常常有人在微信裏問我:前端

我剛入門網絡安全,該怎麼學?要學哪些東西?有哪些方向?怎麼選?程序員

不一樣於Java、C/C++等後端開發崗位有很是明晰的學習路線,網路安全更可能是靠本身摸索,要學的東西又雜又多,難成體系。web

常讀我文章的朋友知道,個人文章基本以故事爲載體的技術輸出爲主,不多去談到職場、面試這些方面的內容。主要是考慮到如今你們的壓力已經很大,節奏很快,公衆號上是讓你們放鬆的地方,儘可能寫一些輕快的內容。不過隨着愈來愈多的人問我上面這些問題,今天就專門寫一篇來擺一擺這個龍門陣。面試

近幾年,隨着網絡安全被列爲國家安全戰略的一部分,這個曾經細分的領域發展提速了很多,除了一些傳統安全廠商之外,一些互聯網大廠也都紛紛加碼了在這一塊的投入,隨之而來的吸引了愈來愈多的新鮮血液不斷涌入。算法

網絡安全分支

其實在網絡安全這個概念之上,還有一個更大的概念:信息安全。本文不去探討兩者在學術劃分上的區別,如無特殊說明,文中將其視爲一個概念,咱們來看下實際工做方向上,有哪些細分路線。數據庫

在這個圈子技術門類中,工做崗位主要有如下三個方向:編程

  • 安全研發
  • 安全研究:二進制方向
  • 安全研究:網絡***方向

下面逐一說明一下。後端

安全研發

安全行業的研發崗主要有兩種分類:瀏覽器

  • 與安全業務關係不大的研發崗位
  • 與安全業務緊密相關的研發崗位

你能夠把網絡安全理解成電商行業、教育行業等其餘行業同樣,每一個行業都有本身的軟件研發,網絡安全做爲一個行業也不例外,不一樣的是這個行業的研發就是開發與網絡安全業務相關的軟件。安全

既然如此,那其餘行業通用的崗位在安全行業也是存在的,前端、後端、大數據分析等等,也就是屬於上面的第一個分類,與安全業務關係不大的類型。這裏咱們重點關注下第二種,與安全業務緊密相關的研發崗位。

這個分類下面又能夠分爲兩個子類型:

  • 作安全產品開發,作防
  • 作安全工具開發,作攻

安全行業要研發的產品,主要(但不限於)有下面這些:

  • 防火牆、IDS、IPS
  • WAF(Web網站應用防火牆)
  • 數據庫網關
  • NTA(網絡流量分析)
  • SIEM(安全事件分析中心、態勢感知)
  • 大數據安全分析
  • EDR(終端設備上的安全軟件)
  • DLP(數據泄漏防禦)
  • 殺毒軟件
  • 安全檢測沙箱

總結一下,安全研發的產品大部分都是用於檢測發現、抵禦安全***用的,涉及終端側(PC電腦、手機、網絡設備等)、網絡側。

開發這些產品用到的技術主要以C/C++、Java、Python三大技術棧爲主,也有少部分的GoLang、Rust。

安全研發崗位,相對其餘兩個方向,對網絡安全技術的要求要低一些(只是相對,部分產品的研發對安全技能要求並不低),甚至我見過很多公司的研發對安全一無所知。在這種狀況下,若是除了基本的開發功底之外,對網絡安全技術有所瞭解,天然會是你面試這些崗位時的加分項。

安全研發崗位,除了通用開發技能的要求之外,能夠重點關注一下下面這些技術:

0de85177411fdd0cba64592b0fa75cec.png

上面列舉的只是最直接相關的部分,還須要有了解更多安全技術才能更好的開發產品,繼續往下看。

二進制安全

二進制安全方向,這是安全領域兩大技術方向之一。

這個方向主要涉及到軟件漏洞挖掘、逆向工程、病毒***分析等工做,涉及操做系統內核分析、調試與反調試、反病毒等技術。由於常常都是與二進制的數據打交道,因此長此以往用二進制安全來統稱這個方向。

這個方向的特色是:須要耐得住寂寞

比不上安全研發能夠有實實在在的產品輸出,也比不上網絡***方向聽起來的狂拽炫酷,這個方向更多時間是在默默的分析和研究。

以漏洞挖掘爲例,光是學習五花八門的***手法就須要花很多的時間。在這個領域,爲了研究一個問題,可能花費數月甚至數年時間,這絕非通常人能堅持下來的。不只如此,不是勤奮就能夠成功,更多還要靠天分。

像騰訊幾大安全實驗室的掌門人,業界知名的TK教主、吳石這些人物,他們已經深諳漏洞挖掘的奧義,並將這門絕技融會貫通,作個夢都能想到新的玩法。不過像這樣的天才實在是少之又少,絕大多數人都沒法企及。

若是說程序員是苦逼的話,那二進制安全研究就是苦逼Plus。

若是看了這些你仍是有勇氣進入這個領域,那下面這些東西是你須要學的:

712061a6cf56ad4207d3a8f4d4f258de.jpeg

這個方向比起安全研發,不只技術難度更大,提供這些崗位的公司也不多,且基本上分佈於北上廣深幾個一線城市。

網絡***

這個方向更符合於大部分人對「***」的認知,他們可以黑手機、黑電腦、黑網站、黑服務器、黑內網,萬物皆可黑。

相比二進制安全方向,這個方向初期更容易入門一些,掌握一些基本技術,拿起各類現成的工具就能夠開黑了。

不過,要想從腳本小子變成***大神,這個方向越日後,須要學習和掌握的東西就多了:

a813efe92cc216f7cf27ddd2efcf05f5.jpeg

網絡***的方向更偏向於「實戰」,所以對技術在廣度上有更高的要求,從網絡硬件設備、網絡通訊協議、網絡服務(web、郵件、文件、數據庫等)、到操做系統、***手法等等都須要瞭解。更偏向於一個全能型的計算機專家,將各類技術融會貫通,以用於「實戰」。

網絡***方向的工做有下面幾個方向:

安全服務,俗稱乙方,這是最主要的一個方向,爲甲方公司提供安全能力支持,如***測試,產品安全檢測等。

安全能力建設,俗稱甲方,國內稍微有點規模的公司都有本身的SRC(安全應急響應中心),也就是有本身的安全團隊。

國家隊:你懂的

學習路線

上面說完了三個大的技術方向後,下面來聊聊該怎麼上路呢?下面說說個人見解。

首先別想分方向,先打好基礎!

第一步:計算機基礎

這第一步,其實跟網絡安全關係都不太大,而是進入IT領域的任何一我的都要掌握的基礎能力。下面五大課程,是大學老師當年教給咱們無論你是什麼技術方向最好都好好學的技術,現在看來,仍然不過期:

  • 計算機網絡
  • 計算機組成原理
  • 操做系統
  • 算法與數據結構
  • 數據庫

這每一門課程其實都內有乾坤,基本都不能作到一次學習就能掌握,而是伴隨每一個人的職業生涯,不一樣的技術階段都會有不同的認識和感覺。

具體學起來建議參考敏捷開發,不斷迭代:有一個粗略的認識->有了進一步的認識->完全掌握->溫故而知新。不用糾纏於把一門課程所有學完學懂才進入下一門課程。

第二步:編程能力

有了上面的一些基本功後,這個時候就須要動手,來寫點代碼,錘鍊一下編程的功底。

下面三項,是安全行業的從業者都最好能掌握的語言:

  • Shell腳本

掌握經常使用的Linux命令,能編寫簡單的Shell腳本,處理一些簡單的事務。

  • C語言(C++可選)

C語言沒有複雜的特性,是現代編程語言的祖師爺,適合編寫底層軟件,還能幫助你理解內存、算法、操做系統等計算機知識,建議學一下。

  • Python

C語言幫助你理解底層,Python則助你編寫網絡、爬蟲、數據處理、圖像處理等功能性的軟件。是程序員,尤爲是***們很是鍾愛的編程語言,不得不學。

第三步:安全初體驗

有了前面兩步的打底,是時候接觸一些網絡安全的技術了,剛剛開始這個階段,仍然不要把本身圈起來只學某一個方向的技術。這個階段,個人建議是:但當涉獵,見往事耳

網絡協議***、Web服務***、瀏覽器安全、漏洞***、逆向破解、工具開發都去接觸一下,知道這是作什麼的,在這個過程當中去發現本身的興趣,讓本身對網絡安全各類領域的技術都有一個初步的認識。

第四步:分方向

在第三步中,慢慢發現本身的興趣點,是喜歡作各類工具的開發,仍是喜歡攻破網站,仍是癡迷於主機電腦的***···

這個時候就能夠思考本身後面的方向,而後精力開始聚焦在這個方向上,經過上面思惟導圖中各自方向的技術去持續深耕,成爲某一個領域的大拿。

學習方法

上面介紹了技術分類和學習路線,這裏來談一下學習方法

  • 看書學習,這是最最基礎的
  • 實際動手,開發路線須要多寫代碼,閱讀優秀開源代碼,二進制路線多分析樣本,編寫EXP等等,***測試多拿網站練手(合法方式)等
  • 打CTF,多參與一些網絡安全比賽,接近實戰的環境下鍛鍊動手能力
  • 混圈子,多混一些安全大牛出沒的社羣、社區、論壇,掌握行業信息,瞭解最新技術變化趨勢(高清版思惟導圖有)
  • 關注微信公衆號【編程技術宇宙】,乾貨技術,有趣故事一網打盡,多多分享文章就能夠積累經驗值哦

總結

以上就是我對剛入行網絡安全的朋友的一些我的的建議,最後有一點須要說明一下:

上面列舉到的不一樣方向的技術不是嚴格意義獨立的,相反,不少時候是相輔相成,須要結合起來,融會貫通。

每一個人的認知是有限的,我也不例外。本文只是個人一家之言,建議你們多看一些人的總結和經驗,橫向對比,兼聽則明,偏聽則暗。

Tips

想獲取上面思惟導讀完整高清版,能夠在公衆號裏回覆「安全」自動獲取。

相關文章
相關標籤/搜索