如何从零开始学习网络安全
问题一:【黑客】如何学起?
答:必须从学习者的角度来看。如果你已经学过编程,通晓几门语言,答案会与从未接触过计算机、甚至不知道什么是高级语言的人有所不同。
这就像登珠穆朗玛峰,有人已在 200 米高处,有人还在 20 米处。对于不同高度的人,指导策略应有所区别。对于零基础小白,需要更基础、更详细的指引。
小白的迷茫
谁没有小白过呢?在建筑大楼、宇宙飞船、钓鱼、养宠物等许多领域,初学者都会经历迷茫期。回想当年蹒跚学步、学骑自行车的过程,由紧张恐惧到熟练掌控,都有一个从小白到老司机的过程。
此刻,你要踏上的是神圣而伟大的计算机安全殿堂。迷茫吗?那就对了。迷茫意味着进化,意味着你即将开始新一段的成长历程。不要怕,惧怕的是因迷茫而选择放弃。你应该像雄鹰一样,未来是蓝天,而不是臭水沟。
老司机指路:基础划分
这个问题对于小白来说有点大。因为一谈到安全就不免讲到各种入侵、破解、渗透、DDOS、控制、破坏等相关的东西,而这些概念想要真正理解,必须在理解计算机工作原理的基础之上。
所以,基础很重要,特别记住:基础很重要。
在这里把基础分为三块:
- 计算机工作原理基础
- 计算机网络基础
- 安全基础
第一:计算机工作原理基础
不理解上面的划分怎么办?如果不理解为什么要把计算机的工作原理单独孤立出来作为一个学习对象,建议从计算机的历史中去解决。
要完成这部分的基础学习,有很多起点选择:从经常使用电脑开始,或者选择一门编程语言去学,或者是买一本书籍。
建议: 首先从一门编程语言开始,一定要死磕,选择一门编程语言不能放弃,要从头到尾的去学完。我在这里不推荐具体语言,可以自己慢慢了解去选择自己喜欢的一门。
但这还只是一部分而已,还有一部分硬件的知识可能需要你去理解。比如什么是冯诺依曼结构?作为一名小白可以不那么三心二意,先把前人给你指引的首要的东西学了,然后再去拓展是最稳妥的。
计算机众所周知的是由软件 + 硬件的机器。硬件是轨道,软件是跑车,跑车在轨道上跑才形成了各种各样的数据样式的展现。这是形象化了的举例,与真正的硬件和软件有所出入,但是前期为了理解,放弃那种精确,求之以粗糙是很有必要的。
上面我的建议,从编程开始入手学习,从更大的视野来看,就是从软件开始下手,因为硬件已经被设计完成,与你操作计算机的关系不大。一个懂硬件的未必会对计算机操作很牛逼,因为你的目的是安全,是对计算机工作的控制,而不是构造计算机,因此软件优先于硬件。
后期如果对硬件感兴趣,甚至于有改进计算机硬件结构的愿望的话,理解了计算机的软件后再去进行还会有辅助效果。
对于这部分的基础,越说你越糊涂,你的疑问越多。想要学会游泳的最好方式是杜绝恐惧,不作什么太多的准备,直接跳入水中,先行动,再从行动中找感觉,找到你的理解。
因此,去找一门编程语言,死磕一门,绝对要死磕(我指的是想成为大神的人)。如果你的目标就是能搞个小入侵,知道点计算机的基本工作过程,没有必要。学完一门语言后你就会进步很多,到时候你思维打通了,你才会明白今天所说的。
第二:计算机网络基础
当你能够用一门语言去编程的时候,你就对计算机如何工作的有很深的认知了。计算机上跑的任何软件和程序(怎么跑的,为什么能跑),一些安装包什么的,你都明白那是干啥的。
接着对于所有软件程序中的一个集合'网络协议'也就很容易学习了。
网络协议本质是程序,它的功能是让计算机之间能够通信,加一点,安全通信。
再上一部分的计算机工作原理基础上你学习完成后,那么这一部分的学习很轻松。但是绝对重要,因为安全的影响力主要来自互联网,没有广泛相互联系的互联网,安全也只能对面前的计算机进行操控,而不能远程去控制和攻击。学习计算机网络会让你明白攻击当中的很多远程的方式,并且安全的多数伟大和神秘也是互联网赋予的。
具体的协议有哪些,该怎么学,对于一个小白来讲没有说的必要,小白的任务是前面的那个先完成。
第三:安全基础
安全基础是给学习完以上两大基础后依然不知道如何入侵和进行安全工程的人准备的。一般有天赋的人学完以上两部分,对于如何利用计算机通过网络去进入其他计算机的系统,窃取信息等都会不学自通。
假如你还尚未打通,那么就要学学安全的基础,这方面有大量前辈们所写的书,对于前辈经验们的系统性的梳理去认知也很快会让你进入一个不一样的思维模式去。
禁忌:不要在庞杂繁多混乱堆砌的概念上停留过多时间
上面很多答者都列出了一大箩筐的概念,我倒认为那些概念实在没有必要拿出来吓唬人。什么 PHP 服务器、ASP 服务器、IIS、渗透、入侵、破解、HTML、Java、虚拟主机、云主机、IP 追踪、木马编写、病毒编写、键盘记录、钓鱼网站、域名、DNS、端口扫描、DOS 指令……


