零基礎如何自學網絡安全,需要學習哪些知識?

如果你是準備自學的話,那建議你看完這篇文章再做決定。

在開始之前,我們要想清楚自己學習網絡安全的目的是什么,如果是當做一個興趣來學習的話,去B站上面找些視頻教程看看,然后會使用一些基本的滲透工具,基本上就足夠你在朋友同事面前炫耀裝逼了。
但如果是準備從事網絡安全這個方向的工作,那可能就需要做好頭禿的準備。
首先,我們一起來了解一下網絡安全行業(yè)都有哪些崗位?你適合哪些崗位。
(友情提示,全文四千五百余字,內容較多,建議先收藏再觀看,避免后續(xù)找不到)
咱們新興技術不做羅列,就算傳統(tǒng)的安全崗位:安全產品工程師(或者售后工程師)、安全咨詢師(售前工程師)、滲透測試工程師、銷售、安全開發(fā)工程師、安全運維工程師、應急響應工程師、等級保護測評師、安全服務工程師。大體上這么多,其他小眾崗位就不一一列舉了。
安全崗位的大體工作內容或職責
售后工程師:安全產品的售后服務工作,包括安全產品的交付實施、售后支撐、產品調試上架。比如客戶買了咱們的防火墻,咱們要派人去安裝調試吧,總不能讓客戶自己去安裝吧。這是產品工程師或者售后工程師的主要工作內容。
售前工程師:主要是協(xié)助銷售完成跟單,說的通俗易懂一點就是跟銷售配合,一個做商務關系(吃吃喝喝、送禮請客)一個做技術方案(解決客戶的痛點),兩個人配合拿下項目。
滲透測試工程師:這個崗位是大多數(shù)人夢寐以求的,展現(xiàn)個人技術的時候到了。主要是模擬黑客對目標業(yè)務系統(tǒng)進行攻擊,點到為止。
銷售:不再贅述,估計你們年輕的人也不太關心,但是等你成長了,你就會發(fā)現(xiàn),你以前的對銷售的認知是多么的扯淡。
安全開發(fā)工程師:嗯,就是搞開發(fā),要對安全也要了解,比如開發(fā)一個web應用防火墻,連web攻擊都不懂,那還開發(fā)個啥,閉門造車啊,能防的注嗎?
安全運維工程師:一個單位買了那么多安全產品,肯定要有人做運維的,分析一下日志,升級一下策略。定期檢查一下業(yè)務系統(tǒng)的安全性,查看一下內網當中有沒有威脅,這都是安全運維工程師要做的內容。
應急響應工程師:客戶業(yè)務系統(tǒng)被攻擊,要快速定位安全問題,要快速恢復業(yè)務系統(tǒng),有的甚至還要取證報警。(家里如果被偷東西價值太大,你還不報警?心咋這么大)
等級保護測評師:按照國家要求,重要的業(yè)務系統(tǒng)需要按照安全等級進行保護的,目前國家已經發(fā)布了等級保護2.0標準,要按照這個標準進行建設。等級保護測評師的工作就是協(xié)助客戶檢查一下業(yè)務系統(tǒng)是否滿足等級保護的要求,不滿足的趕緊整改。
安全服務工程師:好多企業(yè)把滲透測試工程師也歸到安全服務工程師里面,無傷大雅。不懂安全服務,還不懂吃飯的服務員嘛,就是協(xié)助客戶做好安全工作,具體的內容比如常見的漏洞掃描、基線檢測、滲透測試、網絡架構梳理、風險評估等工作內容。安全服務的面很大的,幾乎涵蓋了上述所有崗位的內容。
說了這么多崗位,把銷售和開發(fā)踢出去,(大多數(shù)少年不關心這兩個崗位),其他崗位咱們在劃分一下,其實就是三個方向:安全產品方向、安全運營和數(shù)據(jù)分析方向、安全攻防和應急方向。除了這個方向,還有個未列出來的方向—安全管理方向,放心少年,這個方向你一時半會用不到,哪個公司傻乎乎的上來就讓一個萌新去做安全管理?
那么問題來了?這三個方向學習的內容是一樣的嗎?
顯然不一樣啊,要不然分什么方向,吃飽撐的啊。這個就跟當年高中文理分科一樣,問啥要分,因為內容太多,不同的人擅長點不一樣,學習的內容那么多,時間那么少,要么壓縮內容,要么拉長時間。言歸正傳,這三個方向,在實際工作中需要哪些技能點?
安全產品方向:懂產品,如防火墻、上網行為管理、入侵檢測/保護、網閘、vpn、數(shù)據(jù)庫審計、堡壘機、抗拒絕服務、云防護產品、殺毒、準入、web應用防火墻、虛擬化安全產品等等。
安全運營和數(shù)據(jù)分析方向:安全服務、安全測評、風險評估、等級保護、ISO 27000、日志分析、威脅分析、soc運營等等。
安全攻防和應急方向:web攻防、系統(tǒng)攻防、內網滲透、應急響應、代碼審計、移動apk監(jiān)測、工控系統(tǒng)安全檢測等等。
了解完網絡安全行業(yè)的崗位劃分,我們再來看看各個公司對于安全人員的招聘需求,以boss直聘上的Web安全崗的招聘需求舉例:

計算機基礎扎實,熟悉常用的數(shù)據(jù)結構和算法;
熟悉至少一門編程語言,具備扎實的編碼能力;
熟悉瀏覽器的各項安全特性,對常見Web漏洞的攻防原理有深入理解;
熟悉常見Windows&linux、Web應用和數(shù)據(jù)庫各種攻擊手段;
熟悉網絡安全測試方法、測試用例、漏洞判定準則;
熟悉滲透測試流程,了解常見的滲透測試工具的用法及原理;
有實際滲透測試經驗,熟悉滲透測試各種提權方法;
熟悉常見腳本語言,能夠進行WEB滲透測試,惡意代碼檢測和行為分析;
悉常見Web高危漏洞(SQL注入、XSS、CSRF、WebShell等)原理及實踐,在各漏洞提交平臺實際提交過高風險漏洞優(yōu)先;
熟練使用各種安全掃描,滲透工具,有豐富的安全滲透經驗并能能獨立完成滲透測試;
掌握MySQL、MSSQL、Oracle、PostgreSQL等一種或多種主流數(shù)據(jù)庫結構以及特殊性;
看完這些,是不是差點被勸退了?
我覺得這是好事,如果你沒考慮清楚是否要從事這個行業(yè)的話,勸你還是慎重選擇,雖然網絡安全行業(yè)的市場需求大,但需求對人才的需求,不是對人的需求,如果你還是想學習網絡安全的話,那可以接著往下看,我給你出一個詳細的自學路線圖。

密密麻麻看起來一大堆,但其實拆解之后就會發(fā)現(xiàn)并不難學,給你看看我給團隊小伙伴制定的Web安全學習路線,整體大概半年左右,具體視每個人的情況而定:
(友情提示:覺得有幫助的話可以收藏一下本篇回答,免得后續(xù)找不到)
1、Web安全相關概念(2周)
熟悉基本概念(SQL注入、上傳、XSS、CSRF、一句話木馬等)。
通過關鍵字(SQL注入、上傳、XSS、CSRF、一句話木馬等)進行Google/SecWiki;
閱讀《精通腳本黑客》,雖然很舊也有錯誤,但是入門還是可以的;
看一些滲透筆記/視頻,了解滲透實戰(zhàn)的整個過程,可以Google(滲透筆記、滲透過程、入侵過程等);
2、熟悉滲透相關工具(3周)
熟悉AWVS、sqlmap、Burp、nessus、chopper、nmap、Appscan等相關工具的使用。
了解該類工具的用途和使用場景,先用軟件名字Google/SecWiki;
下載無后門版的這些軟件進行安裝;
學習并進行使用,具體教材可以在SecWiki上搜索,例如:Brup的教程、sqlmap;
待常用的這幾個軟件都學會了可以安裝音速啟動做一個滲透工具箱;
3、滲透實戰(zhàn)操作(5周)
掌握滲透的整個階段并能夠獨立滲透小型站點。
網上找滲透視頻看并思考其中的思路和原理,關鍵字(滲透、SQL注入視頻、文件上傳入侵、數(shù)據(jù)庫備份、dedecms漏洞利用等等);
自己找站點/搭建測試環(huán)境進行測試,記住請隱藏好你自己;
思考滲透主要分為幾個階段,每個階段需要做那些工作;
研究SQL注入的種類、注入原理、手動注入技巧;
研究文件上傳的原理,如何進行截斷、雙重后綴欺騙(IIS、PHP)、解析漏洞利用(IIS、Nignix、Apache)等;
研究XSS形成的原理和種類,具體學習方法可以Google/SecWiki;
研究Windows/Linux提權的方法和具體使用;
4、關注安全圈動態(tài)(1周)
關注安全圈的最新漏洞、安全事件與技術文章。
通過SecWiki瀏覽每日的安全技術文章/事件;
通過Weibo/twitter關注安全圈的從業(yè)人員(遇到大牛的關注或者好友果斷關注),天天抽時間刷一下;
通過feedly/鮮果訂閱國內外安全技術博客(不要僅限于國內,平時多注意積累),沒有訂閱源的可以看一下SecWiki的聚合欄目;
養(yǎng)成習慣,每天主動提交安全技術文章鏈接到SecWiki進行積淀;
多關注下最新漏洞列表,推薦幾個:exploit-db、CVE中文庫、Wooyun等,遇到公開的漏洞都去實踐下。
關注國內國際上的安全會議的議題或者錄像,推薦SecWiki-Conference。
5、熟悉Windows/Kali Linux(3周)
學習Windows/Kali Linux基本命令、常用工具;
熟悉Windows下的常用的cmd命令,例如:ipconfig,nslookup,tracert,net,tasklist,taskkill等;
熟悉Linux下的常用命令,例如:ifconfig,ls,cp,mv,vi,wget,service,sudo等;
熟悉Kali Linux系統(tǒng)下的常用工具,可以參考SecWiki,《Web Penetration Testing with Kali Linux》、《Hacking with Kali》等;
熟悉metasploit工具,可以參考SecWiki、《Metasploit滲透測試指南》。
6、服務器安全配置(3周)
學習服務器環(huán)境配置,并能通過思考發(fā)現(xiàn)配置存在的安全問題。
Windows2003/2008環(huán)境下的IIS配置,特別注意配置安全和運行權限,;
Linux環(huán)境下的LAMP的安全配置,主要考慮運行權限、跨目錄、文件夾權限等;
遠程系統(tǒng)加固,限制用戶名和口令登陸,通過iptables限制端口;
配置軟件Waf加強系統(tǒng)安全,在服務器配置mod_security等系統(tǒng);
通過Nessus軟件對配置環(huán)境進行安全檢測,發(fā)現(xiàn)未知安全威脅。
7、腳本編程學習(4周)
選擇腳本語言Perl/Python/PHP/Go/Java中的一種,對常用庫進行編程學習。
搭建開發(fā)環(huán)境和選擇IDE,PHP環(huán)境推薦Wamp和XAMPP,IDE強烈推薦Sublime;
Python編程學習,學習內容包含:語法、正則、文件、網絡、多線程等常用庫,推薦《Python核心編程》,不要看完;
用Python編寫漏洞的exp,然后寫一個簡單的網絡爬蟲;
PHP基本語法學習并書寫一個簡單的博客系統(tǒng),參見《PHP與MySQL程序設計(第4版)》、視頻;
熟悉MVC架構,并試著學習一個PHP框架或者Python框架(可選);
了解Bootstrap的布局或者CSS;
8、源碼審計與漏洞分析(3周)
能獨立分析腳本源碼程序并發(fā)現(xiàn)安全問題。
熟悉源碼審計的動態(tài)和靜態(tài)方法,并知道如何去分析程序;
從Wooyun上尋找開源程序的漏洞進行分析并試著自己分析;
了解Web漏洞的形成原因,然后通過關鍵字進行查找分析;
研究Web漏洞形成原理和如何從源碼層面避免該類漏洞,并整理成checklist。
9、安全體系設計與開發(fā)(5周)
能建立自己的安全體系,并能提出一些安全建議或者系統(tǒng)架構。
開發(fā)一些實用的安全小工具并開源,體現(xiàn)個人實力;
建立自己的安全體系,對公司安全有自己的一些認識和見解;
提出或者加入大型安全系統(tǒng)的架構或者開發(fā);
這個路線圖已經詳細到每周要學什么內容,學到什么程度,可以說我整理的這個Web安全路線圖對新人是非常友好的,除此之外,我還給團隊小伙伴整理了相對應的學習資料,如果你需要的話,我也可以分享一部分出來(涉密部分分享不了),需要的可以在評論區(qū)告訴我!



如果覺得有幫助的話,可以幫我點贊收藏一下,寫的不對或不清楚的地方,也歡迎大家在評論區(qū)指出,謝謝!