如何自学网络安全技术
一、自学网络安全学习的误区和陷阱
1. 不要试图先成为一名程序员再开始学习
学习编程周期长,且实际向安全过渡后可用到的关键知识并不多。一般人如果想要把编程学好再开始学习网络安全往往需要花费很长时间,容易半途而废。学习编程只是工具不是目的,我们的目标不是成为程序员。建议在学习网络安全的过程中,哪里不会补哪里,这样更有目的性且耗时更少。
2. 不要把深度学习作为入门第一课
很多人冲着要把网络安全学好学扎实,很容易用力过猛,陷入误区:把所有内容都进行深度学习。把深度学习作为网络安全第一课不是好主意,原因如下:
- 深度学习的黑箱性更加明显,很容易学的囫囵吞枣。
- 深度学习对自身要求高,不适合自学,很容易走进死胡同。
3. 不要收集过多的资料
网上关于网络安全的学习资料很多,动辄几个 G。很多朋友有'收集癖',一下子购买十几本书或收藏几十个视频。网上的学习资料重复性极高,且大多数内容还是几年前没有更新的。在入门期间建议'小而精'的选择材料。
二、学习网络安全的前期准备
1. 硬件选择
学习网络安全不需要配置很高的电脑,只要稳定就行。黑客使用的程序,低端 CPU 也可以很好地运行,且不占什么内存。此外,黑客操作常在命令行下进行,所以电脑能使用到最佳状态即可。不要打着学习的名义重新购买机器。
2. 软件选择
- 操作系统:Linux 虽然看着酷炫,但对于新人入门并不友好。Windows 系统一样可以用虚拟机装靶机来进行学习。
- 编程语言:首推 Python,因为其良好的拓展支持性。市面上很多网站是 PHP 开发的,选择 PHP 也是可以的。其他语言还包括 C++、Java 等。不必学习所有语言,学习编程只是工具不是目的。但学习编程能决定你在网络安全这条路上到底能走多远,推荐自学一些基础编程知识。
3. 语言能力
计算机最早是在西方发明出来的,很多名词或者代码都是英文的。现有的一些教程最初也是英文原版翻译过来的,漏洞被发现到翻译成中文一般需要一个星期的时间,在这个时间差上漏洞可能都修补了。如果不理解一些专业名词,在与其他黑客交流技术或者经验时也会有障碍。所以需要一定量的英文和黑客专业名词(不需要特别精通,但是要能看懂基础的),例如:肉鸡、挂马、shell、WebShell 等。
三、学习路线图
我一共划分了六个阶段,但并不是说你得学完全部才能上手工作,对于一些初级岗位,学到第三四个阶段就足矣。
第一阶段:石器时代(打基础)
针对纯新手小白刚刚入场,主要是打基础,需要学习的有五部分内容:
Windows
Windows 上基础的一些命令、PowerShell 的使用和简单脚本编写,以及 Windows 以后经常会打交道的几个重要组件的使用:注册表、组策略管理器、任务管理器、事件查看器等。除此之外,学习在 Windows 上面搭建虚拟机,学会安装系统,为接下来学习 Linux 做准备工作。
Linux
网络安全必然要与 Linux 经常打交道。很多新人一上来就跟着一些培训班学习 Kali,学的云里雾里的。连基本的 Linux 概念都没建立起来,就急着学 Kali,这属于还没学会走路就去学跑步,本末倒置了。 在基础阶段,主要以使用为主,学习文本编辑、文件、网络、权限、磁盘、用户等相关的命令,对 Linux 有一个基本的认知。
计算机网络
网络安全中,计算机网络是非常重要的存在。作为基础阶段,这一小节主要从宏观上学习计算机网络,而不是死扣某一个协议的某些字段意义。 首先从局域网出发,了解计算机通信的基本网络——以太网,局域网内是如何通信的?集线器、交换机有什么区别?MAC 地址、IP 地址、子网、子网掩码分别是做什么用的? 随后引出更大的广域网、互联网,什么是网络通信协议,通信协议分层的问题,通过七层和四层模型快速建立起计算机网络的基础概念,各层协议的作用,分别有哪些协议,这些协议在当今的互联网中具体是怎么应用的。
Web 基础
网络渗透中非常重要的一个组成部分就是 Web 安全,要学习 Web 安全,得先从 Web 前端基础开始入手。 这一小节非常简单,就是学习最原始的 Web 前端三板斧:HTML+CSS+JS 的开发使用,为将来学习 Web 相关的安全知识打下基础。 这一小节是相对偏实际动手多一些,需要自己多动手进行一些网页编程,尤其是 JavaScript 的熟悉掌握,了解 Ajax 是什么东西,常用的 jQuery 库也学习一下,这都是 Web 前端中非常基础和常用的内容。


