谷歌网络安全 IV 笔记(一)
001:课程介绍
概述
在本节课中,我们将要学习《工具之道:Linux与SQL》这门课程的核心内容与目标。课程将介绍操作系统、Linux命令行以及SQL查询的基础知识,并解释这些技能如何应用于网络安全分析师的日常工作中。
课程内容与目标
大家好,欢迎来到这门关于安全领域计算基础的课程。我叫Kim,是一名安全领域的技术项目经理。我伴随着计算机和互联网成长,但直到看到安全如何与技术交织在一起,才真正将其视为一个职业机会。
在我从事第一份安全工作之前,我在一个云应用团队工作,需要定期与安全团队互动。那是我第一次接触安全工作,但保护信息并与他人共同实现这一目标的想法让我感到兴奋。因此,我决定努力考取CISSP认证,这为我在公司带来了新的工作机会,并使我得以转入安全领域。
至此,如果你一直跟随学习,你已经探索了安全领域中各种有用的概念,包括安全域和网络。我很高兴能在课程的下一部分加入你们,我们将放慢节奏,以便你能以实际的方式理解这些主题。
本课程的重点是计算基础。当你理解一个组织系统中机器的工作原理时,它能帮助你更高效地完成作为安全分析师的工作。作为安全分析师,你的部分工作是保护系统免受可能的攻击。你是保护组织数据的第一道防线之一。为了有效地做到这一点,了解你所保护的系统如何运作是有帮助的。
此外,你可能需要调查事件以帮助纠正系统中的错误。熟悉Linux操作系统及其相关命令,并能够通过SQL与组织的数据进行交互,将有助于你完成这些任务。
在本课程中,你将学习操作系统及其与应用程序和硬件的关系。接下来,你将更详细地探索Linux操作系统。然后,你将在安全背景下使用Linux命令行。最后,我们将讨论作为安全分析师工作时,如何使用SQL查询数据库。
我很高兴能与你们一起探索所有这些主题。让我们开始吧。
总结
本节课中我们一起学习了《工具之道:Linux与SQL》课程的总体介绍。我们了解了课程的目标是掌握操作系统基础、Linux命令行操作以及SQL数据库查询,并认识到这些技能对于有效执行网络安全分析、保护系统与调查事件至关重要。
002:操作系统基础
在本节课中,我们将要学习操作系统的基础知识。操作系统是计算机的核心软件,它管理硬件资源并为应用程序提供运行环境。理解操作系统是网络安全分析工作的重要基石。
什么是操作系统?
你每周使用计算机多少次?对一些人来说,答案可能是“非常多”。计算机是功能强大的机器,它让我们能够完成各种任务,从工作中使用专业应用程序,到向远方的亲人发送电子邮件。
你是否想过计算机如何做到这一切?答案就在于操作系统。在本节中,我们将了解常见的操作系统,并探索操作系统的主要功能。
操作系统的主要功能
上一节我们引入了操作系统的概念,本节中我们来看看它的核心作用。操作系统是管理计算机硬件与软件资源的系统软件。它充当用户与计算机硬件之间的桥梁。
以下是操作系统执行的几个关键功能:
-
资源管理:管理中央处理器、内存、磁盘空间和输入/输出设备。
-
进程管理:启动、运行和结束应用程序(进程)。
-
内存管理:分配和回收内存空间供程序使用。
-
文件系统管理:组织、存储、检索和保护文件和目录。
-
用户界面:提供用户与计算机交互的方式,例如图形界面或命令行。
操作系统、应用程序与硬件的关系
理解了操作系统的功能后,我们进一步探讨它与计算机其他部分的关系。操作系统、应用程序和硬件共同协作,完成用户的任务。
它们的关系可以概括为:用户通过应用程序发出指令,应用程序调用操作系统的服务,操作系统直接管理和控制硬件资源。例如,当你在文字处理软件中保存文档时,应用程序会请求操作系统将数据写入硬盘,操作系统则负责执行具体的磁盘写入操作。
图形用户界面与命令行界面
操作系统提供了不同的方式供用户与之交互。最常见的两种是图形用户界面和命令行界面。
-
图形用户界面:用户通过视觉元素如图标、窗口和菜单,使用鼠标和键盘进行操作。这种方式直观易用。
-
命令行界面:用户通过输入特定的文本命令来执行操作。这种方式高效、灵活,并且可以编写脚本实现自动化。
对于安全分析师而言,命令行界面是工作的必备部分。它允许分析师快速执行诊断、监控系统状态、分析日志文件以及运行安全工具。
总结
本节课中我们一起学习了操作系统的基础知识。我们了解了操作系统的定义及其核心功能,探讨了操作系统、应用程序和硬件三者之间的关系,并比较了图形用户界面与命令行界面的特点。掌握这些知识,特别是熟悉命令行界面的使用,将为你后续的网络安全分析学习打下坚实的基础。接下来,我们将深入探索命令行环境。
003:金姆的计算机领域学习之旅
概述
在本节课中,我们将跟随谷歌技术项目经理金姆,了解她从非技术背景起步,最终进入网络安全领域的职业旅程。她的故事将展示,无论起点如何,对技术的热情和持续学习都能引领你走向网络安全职业。
金姆的职业起点
金姆目前在谷歌的安全并购团队担任技术项目经理。她的工作是与谷歌收购的其他公司合作,帮助它们整合到谷歌的环境中。
在进入网络安全乃至整个技术领域之前,金姆曾担任过多种角色。她的职业生涯始于餐厅服务员。
转向教育与技术领域
随后,她在当地大学成为国际学生的英语导师。在完成了多次实习并从大学毕业之后,她获得了第一个进入技术领域工作的机会。正是从这里开始,她对技术以及最终对网络安全的兴趣被点燃了。
给初学者的鼓励与建议
金姆想告诉所有背景的人:如果你对保护信息感兴趣,如果你对保护人们感兴趣,网络安全领域欢迎你。未来,安全领域会有你的位置。你可以从事许多不同的职位,并且你现在拥有的以及之前积累的所有技能,都能在安全领域中得到应用。
最重要的技能
以下是金姆认为工作中最重要的技能:
- 与人沟通:这是她最依赖的核心技能。她每天使用最多的技能就是与人建立联系。除非她以正确的方式与他人沟通,否则她无法完成任何工作。
给新人的建议
对于刚进入网络安全领域的新人,金姆的一条建议是保持开放的心态。她本人是从商科学位起步的,起初甚至觉得自己不够技术,无法达到今天的成就。在那之前,她所有的经验要么是餐厅工作,要么是市场营销,或者是一些感觉与技术无关的工作。
但所有这些经历都帮助并激励她更多地涉足技术领域,并最终进入安全领域。在她意识到之前,那种自我怀疑已经被同事们的支持和共事者的尊重所取代。
总结
本节课中,我们一起学习了金姆从非技术背景成功转型为谷歌网络安全专业人士的经历。她的故事强调了保持开放心态和有效沟通的重要性,并证明多样化的背景和经验是进入网络安全领域的宝贵财富,而非障碍。无论你的起点在哪里,对保护信息与人的热情和持续学习是通往这个领域的关键。
004:操作系统简介
在本节课中,我们将要学习操作系统的基本概念,了解它在计算机中的作用,以及为什么它对网络安全专业人员至关重要。
什么是操作系统?🖥️
计算机、智能手机和平板电脑等设备都拥有操作系统。如果你使用过台式机或笔记本电脑,你可能用过 Windows 或 Mac OS 操作系统。智能手机和平板电脑则运行在 Android 和 iOS 这类移动操作系统上。另一个流行的操作系统是 Linux。Linux 在安全行业中被广泛使用,作为一名安全专业人员,你很可能会与 Linux 操作系统打交道。
那么,操作系统究竟是什么?它是计算机硬件与用户之间的接口。操作系统,通常简称为 OS,负责在尽可能高效地运行计算机的同时,使其易于使用。“硬件”可能是另一个新术语,它指的是计算机的物理组件。
操作系统的演变历程 🔄
上一节我们介绍了操作系统的定义,本节中我们来看看它的发展历程。我们现在每天依赖的 OS 界面,是早期计算机所不具备的。在 20 世纪 50 年代,早期计算机面临的最大挑战是运行一个计算机程序所需的时间。当时,计算机无法同时运行多个程序。相反,人们必须等待一个程序运行完毕,然后重启计算机并加载新程序。
想象一下,每次打开新应用程序时都必须开关计算机。完成发送电子邮件这样简单的任务将花费很长时间。自那时起,操作系统已经演变,我们不再需要担心以这种方式浪费时间。
现代操作系统的重要性 💡
得益于操作系统及其演变,今天的计算机运行高效。它们可以同时运行多个应用程序,并且还能访问打印机、键盘和鼠标等外部设备。操作系统之所以重要的另一个原因是,它们帮助人类和计算机相互交流。
计算机使用一种称为二进制的语言进行交流,它由 0 和 1 组成。操作系统提供了一个接口,以弥合用户与计算机之间的这种沟通鸿沟,允许你以复杂的方式与计算机交互。
操作系统与安全 🔒
操作系统对于计算机的使用至关重要。同样,操作系统安全对于计算机的安全也至关重要。这涉及保护文件、数据访问和用户身份验证,以帮助防范和预防病毒、蠕虫和恶意软件等威胁。
了解操作系统的工作原理对于完成不同的安全相关任务至关重要。以下是安全分析师可能需要执行的一些任务:
-
配置和维护系统安全:通过管理访问权限来实现。
-
管理和配置防火墙。
-
设置安全策略。
-
启用病毒防护。
-
执行审计、记账和日志记录:以检测异常行为。
所有这些任务都需要对操作系统有深入的理解。随着我们继续本课程,我们将更详细地探讨操作系统。
总结 📝
本节课中我们一起学习了操作系统的基础知识。我们了解到操作系统是硬件与用户之间的关键接口,它经历了从单一程序运行到支持多任务并行处理的演变。现代操作系统不仅提升了效率和人机交互体验,其安全性更是网络安全的核心,是安全专业人员执行配置、监控和防御等任务的基础。在接下来的课程中,我们将深入探索操作系统的更多细节。
005:操作系统内部 🔧
在本节课中,我们将学习操作系统如何工作。我们将从启动计算机开始,了解操作系统如何作为用户、应用程序和计算机硬件之间的桥梁,协调任务执行。这对于安全分析师理解潜在的安全事件至关重要。
计算机启动过程
上一节我们介绍了操作系统的定义,本节中我们来看看当你按下电源按钮时,计算机内部发生了什么。
启动计算机时,一个名为BIOS的特殊微芯片被激活。在2007年后制造的许多计算机中,该芯片被UEFI取代。BIOS和UEFI都包含启动指令,负责加载一个名为引导加载程序的特殊程序。
以下是启动过程的关键步骤:
-
BIOS/UEFI激活:按下电源按钮后,硬件激活BIOS或UEFI芯片。
-
加载引导加载程序:BIOS/UEFI中的指令负责加载引导加载程序。
-
启动操作系统:引导加载程序随后负责启动操作系统。
作为安全分析师,理解这些过程很有帮助。启动过程可能存在漏洞。通常,BIOS不会被杀毒软件扫描,因此容易受到恶意软件感染。
操作系统如何协调任务
现在我们已经了解了如何启动操作系统,接下来看看用户如何与系统通信以完成任务。
这个过程始于用户。为了完成任务,你使用计算机上的应用程序。应用程序是执行特定任务的程序。当你这样做时,应用程序将你的请求发送给操作系统。
以下是操作系统协调任务的流程:
-
用户发起请求:用户通过应用程序(如计算器)发起一个任务。
-
应用程序与OS通信:应用程序将用户请求(如计算“2+2”)发送给操作系统。
-
OS与硬件交互:操作系统解释此请求,并将其定向到计算机硬件的相应组件(如中央处理器CPU)。
-
硬件执行并返回:硬件(CPU)执行计算工作,然后将答案发送回操作系统。
-
结果显示:操作系统将结果传回应用程序,最终显示给用户。
让我们用一个简单的例子概述其工作原理:当你想使用计算机上的计算器时,你用鼠标点击计算器应用程序。当你键入想要计算的数字时,应用程序与操作系统通信。你的操作系统随后将计算任务发送给硬件的一个组件——中央处理器。一旦硬件完成了确定最终数字的工作,它就将答案发送回你的操作系统,然后答案就可以显示在你的计算器应用程序中。
理解这个过程有助于调查安全事件。安全分析师应能追溯此流程,分析安全事件可能发生的位置。就像机械师需要比普通司机更了解汽车内部工作原理一样,认识操作系统如何工作是安全分析师的重要知识。
总结
本节课中我们一起学习了操作系统的内部工作原理。我们从计算机的启动过程开始,了解了BIOS/UEFI和引导加载程序的作用。接着,我们探讨了操作系统如何作为中介,协调用户、应用程序和硬件(特别是CPU)之间的通信以完成任务。掌握这些基础知识对于安全分析师追溯和分析安全事件至关重要。
006:操作系统资源分配
概述
在本节课中,我们将要学习操作系统如何管理计算机的资源。我们将探讨操作系统如何像指挥家一样,协调CPU、内存和存储等资源,确保系统高效运行。这对于理解后续的安全技能至关重要。
操作系统作为资源管理者
上一节我们介绍了操作系统与其他计算机部件的交互。本节中我们来看看操作系统如何管理系统资源。
操作系统不仅与其他计算机部件交互,还负责管理系统的资源。这是一项需要大量平衡工作的重大任务,以确保计算机的所有资源都被有效利用。
可以将此概念类比为能量。一个人需要能量来完成不同的任务。有些任务需要更多能量,而另一些则需要较少。例如,跑步比看电视需要更多能量。
计算机的操作系统也需要确保它有足够的能量来正确执行特定任务。在计算机上运行杀毒扫描比使用计算器应用程序会消耗更多能量。
操作系统:计算机的指挥家
想象你的计算机是一个管弦乐队。许多不同的乐器,如小提琴、鼓和小号,都是乐队的一部分。乐队还有一位指挥来引导音乐的流向。
在计算机中,操作系统就是指挥家。操作系统处理资源和内存管理,以确保计算机系统有限的能力被用在最需要的地方。
各种程序、任务和进程不断竞争中央处理器(CPU)的资源。它们都有各自需要内存、存储和输入/输出带宽的理由。
操作系统负责确保每个程序都在分配和释放资源。所有这些都在你的计算机中同时发生,以使你的系统高效运行。
作为用户,这些过程大部分对你来说是隐藏的。例如,你的浏览器任务管理器会列出所有正在处理的任务及其内存和CPU使用情况。
资源管理对安全分析的重要性
以下是了解资源管理对安全分析师至关重要的原因:
-
识别资源使用情况:了解系统资源的使用位置有助于分析师响应事件和排查系统中的应用程序问题。
-
发现异常:例如,如果一台计算机运行缓慢,分析师可能会发现其正在将资源分配给恶意软件。
-
奠定安全基础:对操作系统工作原理的基本理解将帮助你更好地理解本课程后续将学到的安全技能。
总结
本节课中我们一起学习了操作系统作为资源管理者的核心角色。我们了解到操作系统如何像指挥家一样,协调和分配CPU、内存等关键资源,确保多个程序能高效、稳定地运行。理解这一机制是诊断系统性能问题、识别恶意活动(如资源被恶意软件占用)的重要基础,为我们后续深入学习网络安全技能做好了准备。
007:图形用户界面(GUI)与命令行界面(CLI)
概述
在本节课中,我们将要学习用户与操作系统进行通信的两种主要方式:图形用户界面(GUI)和命令行界面(CLI)。我们将了解它们各自的特点、工作原理以及在实际工作中的应用场景。
用户与操作系统的通信
上一节我们介绍了计算机的内部工作原理。本节中,我们来看看用户如何与操作系统进行交互以向硬件发送任务。
用户通过一个接口与操作系统进行通信。用户界面是一种允许用户控制操作系统功能的程序。我们将讨论的两种用户界面是图形用户界面(GUI)和命令行界面(CLI)。
图形用户界面(GUI)
图形用户界面(GUI)是一种利用屏幕上的图标来管理计算机上不同任务的用户界面。大多数操作系统都可以使用图形用户界面。
如果你使用过个人电脑或手机,那么你就有操作图形用户界面的经验。
以下是图形用户界面通常包含的组件:
-
开始菜单与程序组:用于组织和启动应用程序。
-
任务栏:用于快速启动程序。
-
桌面:包含图标和快捷方式。
所有这些组件都帮助你与操作系统通信以执行任务。
除了点击图标,在使用图形用户界面时,你还可以从开始菜单搜索文件或应用程序。你只需要记住程序的图标或名称即可启动应用。
命令行界面(CLI)
现在,让我们来讨论命令行界面。
相比之下,命令行界面(CLI)是一种基于文本的用户界面,它使用命令与计算机进行交互。这些命令与操作系统通信并执行诸如打开程序等任务。
命令行界面的结构与图形用户界面有很大不同。当你使用命令行界面时,会立刻注意到区别:屏幕上没有图标或图形。命令行界面看起来类似于使用特定文本语言的代码行。
命令行界面比图形用户界面更灵活、更强大。可以这样理解:使用命令行界面就像在杂货店的食材区自己搭配想吃的任何饭菜,这让你对要吃什么有很大的控制权和定制能力。相比之下,使用图形用户界面更像是从餐厅点餐,你只能点菜单上有的东西。如果你既想吃面条又想吃披萨,但你去的第一家餐厅只有披萨,你就得去另一家餐厅点面条。
使用图形用户界面,你必须一次完成一项任务,但命令行界面允许定制,这让你可以同时完成多项任务。例如,想象你有一个包含数百个不同类型文件的文件夹,你需要仅将JPEG文件移动到一个新文件夹中。想想使用图形用户界面在这个文件夹中找到每个JPEG文件并将其移动到新文件夹中是多么缓慢和繁琐。另一方面,命令行界面则可以让你简化这个过程,一次性移动所有文件。
两种界面的比较与安全分析中的应用
正如你所见,这两种用户界面存在非常大的差异。
作为一名安全分析师,你的部分工作可能涉及使用命令行界面来分析日志或进行用户身份验证与授权。安全分析师在日常工作中普遍使用命令行界面。
总结
本节课中,我们一起学习了两种类型的用户界面。你了解到自己已经拥有使用图形用户界面的经验,因为大多数个人电脑和手机都使用图形用户界面。同时,你也初步认识了命令行界面。在本课程后续部分,你将学习如何在Linux中使用命令行界面,以及它对你作为安全分析师的日常工作有多么重要。你将获得通过命令行进行通信的实践经验。
008:我在网络安全领域的道路
概述
在本节课中,我们将跟随艾伦的分享,了解她如何从零售业转行进入网络安全领域,并成长为谷歌的安全工程经理。她的经历将为我们揭示,进入网络安全行业并不一定需要传统的技术背景,好奇心、实践和社区交流同样至关重要。
我的名字是艾伦,我是谷歌的一名安全工程经理,专注于谷歌如何使用云。
当我开始进入技术领域时,网络安全还不是一个独立的领域。我是后来才接触到它的。
我的技术生涯始于在一家海报店做零售工作。当时我们需要建立一个网站,而我的脚很疼,非常需要坐下来工作。于是我请朋友教我HTML,这样我就可以坐着工作,让脚上的水泡休息一下。
在海报店工作时,我们的一位顾客在一家初创公司工作,经常来给员工照片装裱。他们请这位顾客给我的网站提意见,最终他们给了我一个实习机会。
我最终拥有的专长之一是API设计,即设计开发者与机器通信的接口。因此,我得到了一份工作,为安全技术设计一个微型版本的操作系统,并从那里开始学习安全知识。
我认识的从事网络安全的大多数人,尤其是在早期,根本没有学位。即使有,也像我一样,是哲学或诗歌之类的学位。
几乎所有人都是通过自己实验、与人交流、阅读来自学的。所以我认为,技术背景不是必需的。
事实上,拥有一个习惯于在现实世界中工作的背景,有时能让网络安全更容易理解,并帮助你做出更平衡的选择。
在几乎所有领域,你都能找到一个安全社区。找到他们所在的地方。
寻找本地会议。开始与人交谈。
这种方式学习比独自摸索要有趣得多。我发现,大多数人,如果你去找他们说:“嘿,你在这方面真的很擅长。你介意我请你喝杯咖啡,然后你教教我吗?”他们几乎总是会答应。
我给没有技术背景的人的建议如下。
第一条是,不要害怕技术。
看起来好像只有拥有计算机科学学位的人才能理解这些东西。但这些核心概念、这些技术,任何人都可以理解。
所以,永远不要让你可能没有技术背景这一点成为障碍。
只需选择一个你感兴趣的领域,然后开始深入钻研。只要你保持好奇心。
只要你发现它有趣,你就能学会技术。
总结
本节课中,我们一起学习了艾伦的非传统职业道路。她从一个海报店的员工,通过主动学习HTML、抓住实习机会、专攻API设计,最终成为谷歌的安全工程经理。她的经历有力地证明了:好奇心和实践是进入网络安全领域的关键,技术背景并非必需,而社区交流则是加速学习和获得机会的重要途径。
009:8_总结
概述
在本节课中,我们将回顾并总结前面章节所学习的关键知识。主要内容包括操作系统的基础知识、其核心功能,以及图形用户界面与命令行界面的区别。这些知识对于网络安全分析师至关重要。
课程内容回顾
我们共同完成了一段重要的学习旅程。最棒的是,我们一同探讨了一些非常实用的主题。
现在,让我们来回顾本节课程的核心要点。
作为一名安全分析师,理解你所使用的系统至关重要。掌握计算机基础知识将帮助你更有效、更高效地完成工作。
在本节中,我们介绍了常见的操作系统,并讨论了操作系统的主要功能。重要的是,你学习了操作系统、应用程序和硬件之间的关系。了解它们如何像管弦乐队一样协同工作,是非常有益的。
此外,你还学习了图形用户界面与命令行界面之间的区别。理解命令行界面对你的工作将非常重要。
总结与展望
很高兴能与你一同探索操作系统的世界。了解操作系统的工作原理,是迈向安全分析师职位的重要一步。你做得非常出色。
让我们继续推进这个课程项目。在下一节中,我们将专门聚焦于 Linux 操作系统。
010:Linux与SQL
概述
在本节课中,我们将要学习Linux操作系统的基础知识。我们将了解Linux的架构、不同的发行版本,以及如何通过Shell与系统进行交互。这些知识对于网络安全领域的日常工作至关重要。
第四课:第2周:欢迎来到第二周
上一节我们介绍了操作系统和用户界面的基本概念,学习了操作系统的工作原理以及计算机资源的分配方式。我们还回顾了几种常见的操作系统。你可能已经有了自己偏爱的操作系统。
在安全领域,Linux被广泛使用。本节中,我们将深入学习Linux操作系统及其在日常任务和安全工作中的应用。
首先,我们将学习Linux的架构。
Linux的架构
Linux操作系统遵循一种分层的架构模型。其核心是内核,它负责管理系统的硬件资源,如CPU、内存和输入/输出设备。内核之上是系统库和Shell,它们为用户和应用程序提供了与内核交互的接口。最外层是应用程序,用户通过它们执行具体任务。
其架构可以简化为以下层次:
-
硬件层
-
内核层
-
系统库/Shell层
-
应用程序层
接下来,我们将比较Linux的不同发行版本。
Linux的发行版本
Linux有众多不同的发行版本,它们都基于相同的Linux内核,但打包了不同的软件、包管理器和用户界面。以下是几种常见的发行版:
-
Ubuntu:用户友好,适合初学者,拥有庞大的社区支持。
-
Fedora:以集成最新技术而闻名,通常用于开发和前沿应用。
-
Debian:以稳定性和庞大的软件仓库著称,是许多发行版(包括Ubuntu)的基础。
-
CentOS/RHEL:广泛应用于企业服务器环境,强调稳定性和长期支持。
最后,我们来探索一个关键的Linux组件:Shell。
Linux Shell
Shell是一个命令行解释器,它充当用户与Linux内核之间的桥梁。用户通过输入文本命令来与Shell交互,Shell则解释这些命令并指示内核执行相应的操作。
例如,要列出当前目录下的文件和文件夹,可以使用 ls 命令:
ls
要创建一个新目录,可以使用 mkdir 命令:
mkdir new_folder
总结
本节课中我们一起学习了Linux操作系统的基础知识。我们探讨了Linux的分层架构,比较了几种主流的Linux发行版,并介绍了通过Shell与系统进行命令行交互的基本方式。掌握这些内容是进一步学习Linux系统管理和网络安全技能的重要第一步。
谷歌网络安全专业证书第四课:4:Linux简介
在本节课中,我们将要学习Linux操作系统的基本概念、其独特之处,以及它在网络安全领域中的核心应用。
您可能在过去见过或听说过Linux这个名字。但您是否知道,Linux是当今安全领域最常用的操作系统之一?让我们从了解Linux及其在安全领域的应用开始。
Linux是一个开源操作系统。它诞生于20世纪90年代初,由两位先驱者的工作共同促成。当时,有两位不同的人各自进行着改进计算机工程的项目。第一位是Linus Torvalds。当时,Unix操作系统已被广泛使用。他希望改进它,使其开源并让任何人都能使用。他的革命性贡献在于引入了Linux内核。我们稍后将学习内核的作用。大约在同一时期,Richard Stallman开始致力于GNU项目。GNU同样是一个基于Unix的操作系统。Stallman与Torvalds有着共同的目标:创建对任何人都是免费和开放的软件。在开发GNU数年后,该软件缺失的关键组件正是内核。最终,Torvalds的内核与Stallman的GNU工具相结合,共同构成了我们今天通常所说的Linux。
现在您已经了解了Linux背后的历史,接下来让我们看看是什么让Linux如此独特。
正如之前提到的,Linux是开源的,这意味着任何人都可以访问该操作系统及其源代码。Linux及其附带的许多程序都在GNU通用公共许可证的条款下授权,允许您自由地使用、分享和修改它们。得益于Linux的开源理念以及强大的功能集,整个开发者社区都采用了这个操作系统。这些开发者能够在项目上协作,共同推动计算技术的发展。
作为一名安全分析师,您会发现Linux被不同的组织所使用。更具体地说,Linux被应用于许多安全程序中。Linux的另一个独特之处在于其开发出的不同发行版或变体。由于庞大的社区贡献,Linux有超过600种发行版。稍后,您将了解更多关于发行版的信息。
最后,让我们看看在入门级安全岗位上您将如何使用Linux。
作为一名安全分析师,您在日常工作中会使用许多工具和程序。您可能需要检查不同类型的日志以识别系统中发生的情况。例如,在调查问题时,您可能会查看错误日志。
您将使用Linux的另一个场景是,在身份与访问管理系统中验证访问权限和授权。在安全领域,管理访问权限是确保系统安全的关键。我们稍后将更深入地探讨访问和授权。最后,作为分析师,您可能会使用为特定任务设计的专用发行版。例如,您可能使用一个包含数字取证工具的发行版来调查事件警报中的情况。您也可能使用一个用于渗透测试和攻击性安全的发行版来寻找系统中的漏洞。发行版的创建是为了满足其用户的需求。
希望您对学习更多关于Linux的知识感到兴奋。这将是安全领域中一项非常有用的技能。
本节课中,我们一起学习了Linux操作系统的起源、其开源和社区驱动的特性、多样的发行版,以及它在安全分析工作中的具体应用场景,如日志分析、访问管理和使用专用安全工具发行版。掌握Linux是进入网络安全领域的重要一步。
012:在网络安全领域学习和成长
在本节课中,我们将跟随谷歌云的首席信息安全官菲尔,了解在快速变化的网络安全领域如何持续学习和成长。我们将探讨学习的心态、方法以及如何构建坚实的知识基础。
大家好,我是菲尔。我是谷歌云的首席信息安全官,我的工作很大一部分当然与网络安全相关。
在网络安全领域,你必须持续学习,必须保持知识更新。根本原因在于技术、业务以及数字生活世界总是在不断变化。你今天使用的在线服务,很可能与12个月前大不相同。
在90年代中期,我曾参与开发世界上最早的网上银行系统之一。当时,我们基本上是自己构建和编写所有的安全代码。我记得我研究过最早的网页浏览器、最早的网页服务器,以及互联网上最早的加密实现。那甚至是在谷歌公司成立之前,处于互联网的萌芽期。我们实际上是一边摸索一边构建,在实践中学习。
🧠 从零开始:克服初学者的焦虑
上一节我们了解了网络安全领域日新月异的特性。本节中,我们来看看如何以正确的心态开始学习。
当你初次进入网络安全领域时,重要的是不要被其庞大的范围所吓倒。我们所有人都曾站在你今天的位置,都必须在某个时刻开始学习。
我曾经不了解Linux,不知道如何编程,也不熟悉其他操作系统的各个部分。我必须一步一步地学习所有这些是如何运作的,并随着时间的推移逐渐积累知识。即使是现在,我偶尔也需要查阅资料,因为我无法一次性记住所有东西,这完全没问题。
当你面对一个新领域时,总会对是否能足够快地学会它感到一定程度的焦虑。通常,随着经验的积累,你会逐渐确信自己能够掌握。但同样重要的是要记住,你不必一次性学会所有东西。
🛠️ 循序渐进:构建知识体系的方法
了解了正确的心态后,我们来看看具体的学习方法。
大多数时候,你只需要在过程的初始阶段学到足够有价值的知识,然后边做边学。从编写几行简单的代码开始,或者查看别人的代码并尝试理解它的功能,然后稍作修改,逐步深入。
以下是构建知识基础的关键步骤:
-
从简单开始:编写几行简单的代码。
-
观察与理解:查看他人的代码,理解其功能。
-
动手修改:对代码进行小幅修改,观察变化。
-
逐步深入:通过增量式学习,不断积累。
通过这种方式构建的知识基础,将使你具备学习其他新事物的能力。我认为,许多事情都将由此生发。
📚 总结与回顾
本节课中,我们一起学习了在网络安全领域持续成长的核心要点。
我们首先认识到,由于技术和环境的快速变化,持续学习是网络安全工作的必然要求。接着,我们探讨了如何以平和的心态开始,克服初学者的焦虑,并理解循序渐进的重要性。最后,我们介绍了一种实用的学习方法:从基础入手,通过观察、理解和实践来逐步构建坚实的知识体系。记住,学习是一个积累的过程,强大的基础是未来探索更广阔天地的关键。
013:Linux架构详解
概述
在本节课中,我们将学习Linux操作系统的核心架构。我们将逐一解析构成Linux系统的各个组件,了解它们如何协同工作,从而为后续深入学习Linux命令和系统管理打下坚实基础。
从建筑到系统:理解架构的重要性
让我们从一个看似与安全无关的快速问题开始。你是否有最喜欢的建筑?它的哪个建筑特点最令你印象深刻?是窗户,还是墙体的结构?正如建筑物一样,操作系统也拥有其架构,并由相互协作的离散组件构成一个整体。
在本视频中,我们将详细查看共同构成Linux的所有组件。
Linux架构的核心组件
Linux的组件包括:用户、应用程序、Shell、文件系统层次标准、内核以及硬件。别担心,我们将逐一深入探讨这些组件。
用户:系统的启动者
首先,你是用户。用户是与计算机进行交互的人。在Linux中,你是操作系统架构中的第一个元素。你负责发起操作系统将要执行的任务或命令。
Linux是一个多用户系统。这意味着多个用户可以同时使用系统的资源。
应用程序:执行特定任务的程序
架构的第二个元素是系统中的应用程序。应用程序是执行特定任务的程序,例如文字处理器或计算器。你可能会听到“应用程序”和“程序”这两个词互换使用。
举个例子,我们稍后会深入学习的一个流行Linux应用程序是Nano。Nano是一个文本编辑器。这个简单的应用程序帮助你在屏幕上记录笔记。
Linux应用程序通常通过包管理器进行分发。我们将在后续课程中了解更多关于这个过程的内容。
Shell:用户与系统的沟通桥梁
Linux架构中的下一个组件是Shell。这是一个重要的元素,因为它是你与系统通信的方式。
Shell是一个命令行解释器。它处理命令并输出结果。这听起来可能很熟悉。之前,我们学习了两种类型的用户界面:图形用户界面和命令行界面。你可以将Shell视为一个命令行界面。
文件系统层次标准:数据的组织者
Linux操作系统的另一个架构元素是文件系统层次标准。FHS是Linux操作系统中负责组织数据的组件。
理解FHS的一个简单方法是将其想象成一个数据文件柜。FHS是数据在系统中的存储方式。它是一种组织数据的方法,以便在系统访问数据时能够找到它们。
内核:进程与内存的管理者
这引出了内核。内核是Linux操作系统的一个组件,负责管理进程和内存。
内核与硬件通信,以执行Shell发送的命令。内核使用驱动程序来使应用程序能够执行任务。Linux内核有助于确保系统更有效地分配资源,并使系统运行得更快。
硬件:系统的物理基础
最后,架构的最后一个组件是硬件。硬件指的是计算机的物理组件。你可以将其与可以下载到系统中的软件应用程序进行比较。
你计算机中的硬件包括CPU、鼠标和键盘等。
总结
恭喜,我们现在已经涵盖了Linux的架构。理解这些组件将帮助你越来越熟悉Linux。在接下来的学习中,我们将基于此架构知识,探索如何通过Shell与系统交互,以及如何管理文件和进程。
014:13_Linux发行版
在本节课程中,我们将深入了解Linux操作系统,并探讨作为一名安全分析师需要掌握的相关知识。我们将重点介绍Linux发行版的概念、特点以及它们在安全工作中的重要性。
Linux是一个高度可定制的操作系统。与其他操作系统不同,Linux有多种版本可供选择。这些不同的Linux版本被称为发行版。
您可能也听说过它们被称为“distros”或Linux的“风味”。理解您所使用的发行版至关重要,因为这决定了您可以使用哪些工具和应用程序。例如,Debian发行版提供的工具就与Ubuntu发行版不同。
🚗 理解Linux发行版:一个类比
为了更清晰地描述Linux发行版,我们可以使用一个类比。将操作系统想象成一辆车。
首先,我们从它的引擎开始,这相当于Linux的内核。正如引擎驱动车辆运行一样,内核是Linux操作系统最重要的组成部分。
因为Linux内核是开源的,任何人都可以获取内核并对其进行修改,以构建一个新的发行版。这好比汽车制造商获取一个引擎,然后创造出不同类型的车辆:卡车、轿车、货车、敞篷车、公共汽车、飞机等等。
这些不同类型的车辆可以比作不同的Linux发行版。公共汽车用于运送大量人员,卡车用于长距离运输大量货物,飞机则通过空运运送乘客或货物。正如每种车辆都有其特定用途一样,不同的发行版也因不同原因而被使用。
此外,车辆都有不同的组件来区分彼此。飞机有带按钮和旋钮的控制面板,普通汽车有四个轮胎,但卡车可能有更多。同样,不同的Linux发行版包含不同的预装程序、用户界面等等。这在很大程度上基于Linux用户的需求,但有些发行版的选择也基于个人偏好,就像有人可能选择跑车作为座驾一样。
🔧 Linux发行版的构成与优势
使用Linux作为操作系统的一个优势在于其可定制性。
发行版通常包含Linux内核、实用工具、一个包管理系统和一个安装程序。
我们之前了解到,Linux是开源的,任何人都可以为源代码的增补做出贡献。这正是新发行版被创建的方式。所有发行版都派生自另一个发行版,但有几个被认为是“父发行版”。例如,Red Hat是CentOS的父发行版,Slackware是SuSE的父发行版。Ubuntu和Kali Linux都派生自Debian。
🛡️ 安全分析师常用的发行版
接下来,我们将看看安全分析师最常用的一些发行版。对这些发行版了解得越多,您的工作就会越轻松。
以下是几个关键的安全相关Linux发行版:
-
Kali Linux:这是一个专门为渗透测试和数字取证设计的发行版。它预装了数百种安全工具,如
nmap(网络扫描器)、Wireshark(网络协议分析器)和Metasploit(渗透测试框架)。 -
Parrot Security OS:另一个专注于安全、隐私和开发的发行版。它提供了一个完整的便携式实验室,用于各种网络安全场景。
-
Ubuntu:虽然是一个通用发行版,但其庞大的社区、优秀的文档和稳定的软件仓库,使其成为许多安全专业人员的可靠基础系统,可以在此基础上安装所需的安全工具。
📝 本节总结
在本节课程中,我们一起学习了Linux发行版的核心概念。我们了解到Linux发行版是包含内核、工具和包管理系统的不同版本,其多样性和可定制性是Linux的一大优势。通过类比车辆,我们理解了不同发行版有不同用途和组件。最后,我们简要介绍了安全分析师常用的几个发行版,如Kali Linux,为后续的实际操作奠定了基础。理解您所使用的发行版,是有效利用Linux进行安全分析工作的第一步。
015:Kali Linux™ 简介
在本节课程中,我们将介绍一个在安全领域广泛使用的Linux发行版——Kali Linux。我们将了解它的特点、适用场景以及它预装的一些核心工具。
Kali Linux是Offensive Security公司的注册商标,它基于Debian系统开发。这个开源发行版是专门为渗透测试和数字取证而设计的。
🛡️ Kali Linux的安全使用环境
上一节我们介绍了Linux发行版的基本概念,本节中我们来看看Kali Linux。首先,必须注意Kali Linux应该在虚拟机环境中使用。这可以防止其工具被不当使用时对您的系统造成损害。使用虚拟机的另一个好处是,它允许您在需要时恢复到之前的安全状态。
🔍 Kali Linux在渗透测试中的应用
随着安全专业人员职业生涯的发展,有些人会专攻渗透测试领域。渗透测试是一种模拟攻击,旨在帮助识别系统、网络、网站、应用程序和流程中的漏洞。Kali Linux内置了大量在渗透测试中有用的工具。
以下是其中几个例子:
-
Metasploit:可用于查找并利用计算机上的漏洞。
-
Burp Suite:帮助测试Web应用程序弱点的工具。
-
John the Ripper:用于猜测密码的工具。
🕵️ Kali Linux在数字取证中的应用
作为一名安全分析师,您的工作可能涉及数字取证。数字取证是收集和分析数据以确定攻击发生后情况的实践。例如,您可能需要调查与网络活动相关的数据。
Kali Linux对于从事数字取证工作的安全专业人员来说也是一个非常有用的发行版。它包含了大量可用于此目的的工具。
以下是几个常用于数字取证的例子:
-
Tcpdump:一个命令行数据包分析器,用于捕获网络流量。
-
Wireshark:安全行业中常用的另一个工具,它拥有图形用户界面,可用于分析实时和已捕获的网络流量。
-
Autopsy:一个用于分析硬盘驱动器和智能手机的取证工具。
📚 总结与过渡
以上仅仅是Kali Linux所包含工具中的几个例子。这个发行版拥有许多用于进行渗透测试和数字取证的工具。
我们已经探讨了Kali Linux为何是一个在安全领域被广泛使用的重要发行版。但是,安全专业人员也会使用其他发行版。接下来,我们将探索另外几个发行版。
在本节课中,我们一起学习了Kali Linux——一个专为安全测试和取证设计的Linux发行版。我们了解了它必须在虚拟机中使用以确保安全,并认识了它在渗透测试(如使用Metasploit)和数字取证(如使用Wireshark)中的关键作用。
016:Shell简介
在本节课中,我们将要学习Linux操作系统中的一个核心组件——Shell。我们将了解它的定义、功能以及它如何作为安全分析师与系统交互的关键工具。
欢迎回来。在这个视频中,我们将讨论Linux Shell。作为安全分析师,Linux架构中的这个部分将是您主要进行操作的地方。我们之前在介绍Linux操作系统其他组件时已经提到了Shell。现在,让我们更深入地看看Shell是什么以及它有什么作用。
Shell是命令行解释器。这意味着它帮助您通过命令行与操作系统进行通信。之前,我们讨论过命令行界面。Shell本质上就是这个界面。Shell为您提供了与操作系统交互的命令行界面。为了告诉操作系统要做什么,您需要在这个界面中输入命令。命令是告诉计算机执行某个操作的指令。Shell与内核通信以执行这些命令。
Shell的角色与功能
上一节我们介绍了Shell的基本定义,本节中我们来看看它的具体角色和功能。
我们之前讨论过操作系统如何帮助人类和计算机相互交流。Shell是操作系统中允许您实现这一点的部分。可以把它想象成您和您的系统之间一个非常有用的语言翻译器。由于您不会说计算机语言或二进制语言,您无法直接与您的系统通信。这就是Shell发挥作用的地方。
您的操作系统在大部分工作中并不需要Shell,但Shell是您与系统功能之间的一个接口。它允许您执行数学运算、运行测试和启动应用程序。更重要的是,它允许您组合这些操作,并将应用程序相互连接,以执行复杂和自动化的任务。
Shell的种类
正如有许多Linux发行版一样,也存在许多不同类型的Shell。以下是几种常见的Shell类型:
-
Bash (Bourne Again Shell):这是最流行、最常用的Shell之一,通常是许多Linux发行版的默认Shell。
-
Zsh (Z Shell):一个功能丰富的Shell,提供了强大的定制和自动补全功能。
-
Fish (Friendly Interactive Shell):以其用户友好性和开箱即用的优秀功能而闻名。
在本课程中,我们将主要关注Bash Shell。让我们继续学习更多关于Shell的知识。
总结
本节课中我们一起学习了Linux Shell。我们了解到Shell是一个命令行解释器,它作为用户与操作系统内核之间的翻译接口,使我们能够通过输入命令来控制系统、执行任务和连接应用程序。我们还简单了解了Shell的不同类型,并明确了本课程将重点使用Bash Shell。掌握Shell是有效进行安全分析和系统管理的基础。
017:Shell中的输入和输出
在本节课程中,我们将学习如何与Shell进行交互,具体了解标准输入、标准输出和标准错误。理解这三者是有效使用命令行工具的基础。
与计算机交互就像和朋友对话。一方提出问题,另一方给出回应。如果不知道答案,就直接表示无法回答。同样,Shell中的命令可以接收输入、产生输出或返回错误信息。接下来,我们将详细探讨这些概念。
标准输入 📥
标准输入是指操作系统通过命令行接收的信息。这就像在对话中向朋友提问。信息从你的键盘输入到Shell。如果Shell能理解你的请求,它会向内核申请执行相关任务所需的资源。
让我们看一个例子:echo是一个Linux命令,用于输出指定的文本字符串。字符串数据是由有序字符序列组成的数据。
在我们的例子中,我们将让它输出字符串“Hello”。因此,作为输入,我们将在Shell中键入 echo Hello。稍后,当我们按下回车键时,就会得到输出。但在执行之前,让我们先更详细地讨论输出的概念。
标准输出 📤
标准输出是操作系统通过Shell返回的信息。
就像朋友回答你的问题一样,输出是计算机对你输入命令的响应。输出就是你接收到的结果。
现在,让我们继续之前的例子,通过按下回车键将 echo Hello 这个输入发送给操作系统。Shell会立即返回输出 Hello。
标准错误 ❗
最后,标准错误包含操作系统通过Shell返回的错误消息。就像你的朋友可能表示无法回答问题一样,如果系统无法响应你的命令,它也会返回错误消息。
有时,这可能发生在我们拼错命令或系统不知道如何响应命令时。其他时候,也可能因为我们没有执行命令的适当权限。
我们将探索另一个演示标准错误的例子。让我们在Shell中输入 eccho Hello。请注意,我故意将 echo 拼写为 eccho。
当我们按下回车键时,会出现一条错误消息。
总结
我们已经介绍了与Shell通信的基础知识。与Shell的通信只能通过以下三种方式进行:
-
输入:系统接收命令。
-
输出:系统响应命令并产生输出。
-
错误:系统不知道如何响应,导致错误。
随着我们后续探索对安全专业人员有用的命令,你会对这些概念更加熟悉。
谷歌网络安全专业证书第四课:《工具之道:Linux与SQL》 - P18:17_总结
在本节课程中,我们完成了对Linux操作系统基础知识的探索。现在,让我们一起来回顾和总结所学内容。
我们首先探讨了Linux操作系统的整体架构,了解了其核心组件如何协同工作。
随后,我们深入研究了Linux的不同发行版。以下是安全领域中最广泛使用的一些发行版:
-
Kali Linux:专为渗透测试和网络安全审计设计。
-
Ubuntu:以用户友好和社区支持强大而闻名。
-
Parrot OS:一个专注于安全、隐私和开发的发行版。
-
Red Hat Enterprise Linux (RHEL):一款广泛用于企业级环境的商业发行版。
-
SUSE Linux Enterprise Server (SLES):另一款主要面向企业的稳定发行版。
最后,我们学习了Shell的概念及其核心作用。Shell是用户与操作系统内核之间的命令行解释器,它接收用户输入的命令,并将其转换为系统可以执行的指令。其基本交互模型可以简化为:
用户输入 -> Shell解释 -> 内核执行 -> 结果输出
恭喜你完成了本节的学习,你的进展非常出色。我们还有更多实用的主题即将展开。
在接下来的课程中,你将学习作为一名安全分析师,需要在Shell中使用的具体命令。让我们继续前进。
谷歌网络安全专业证书第四课:《工具之道:Linux与SQL》 - P19:18_欢迎来到第三周
在本节课中,我们将学习如何通过命令行与Linux操作系统进行交互。我们将介绍核心的Linux命令,重点涵盖文件系统导航、用户认证与授权管理,并了解如何获取资源以学习更多命令。掌握这些技能对于网络安全分析师至关重要。
学习一种新的交流方式令人兴奋。
也许你曾学习一门新语言并记得这种感觉。
或许我们许多人与幼儿词汇量扩展时的兴奋感同身受。
包括我在内的其他人,则记得初次使用专门语言与计算机交流时的新奇感。
上一节我们介绍了Linux的基础,本节中我们将继续深入学习如何通过其Shell与操作系统进行通信。
你将利用命令行与操作系统进行通信。
你将学习如何在Shell中输入命令,并了解作为安全分析师将使用的一些核心Linux命令。
具体而言,这包括导航和管理文件系统。
你还将重点关注用户的认证和授权。
这意味着你将能够使用命令行在系统中添加和删除用户,并控制他们的访问权限。
最后,学无止境,因此我们将介绍如何访问支持学习新Linux命令的资源。
我记得初次了解命令行时,对其提供的强大功能感到震惊。
我不再需要通过点击多个屏幕来完成任务。
尽管需要一些练习和时间来适应。
但它已成为我手中最重要的工具之一。
完成本节学习后,你将获得在使用Linux命令进行安全分析工作这一重要领域的实践经验。
本节课中我们一起学习了如何通过Linux命令行与系统交互,掌握了文件系统操作和用户管理的基础命令,并了解了持续学习的资源。这些是网络安全分析师日常工作的核心工具。
020:通过Bash Shell执行Linux命令
欢迎回来。在深入学习具体的Linux命令之前,我们先来更详细地探讨如何通过Shell与操作系统进行通信的基础知识。
对于所有安全专业人员来说,能够使用Linux命令是一项基础技能。作为一名安全分析师,您需要处理服务器日志,并且需要知道如何在没有图形用户界面的情况下远程导航、管理和分析文件。此外,您还需要知道如何在组访问期间验证已配置的用户,以及授予授权和设置文件权限。这意味着,掌握命令行技能对于您作为安全分析师的工作至关重要。
在学习Linux架构时,我们了解到Shell是操作系统的主要组件之一。我们也了解到存在不同的Shell。在本节中,我们将使用Bash。Bash是大多数Linux发行版中的默认Shell。您在本节中将学习的关键Linux命令,在大多数Shell中都是通用的。
现在您知道了将要使用的Shell,让我们来了解如何在Bash中编写命令。正如上一节所讨论的,与操作系统的通信就像一场对话。您输入命令,操作系统则用命令的答案来回应。
命令是告诉计算机执行某项操作的指令。我们将在Bash中尝试一个命令。请注意光标前的美元符号($)。这是提示您输入新命令的提示符。
有些命令可能告诉计算机查找某些内容,例如特定文件。
其他命令可能告诉它启动一个程序,或者输出特定的文本字符串。在上一节讨论输入和输出时,我们探讨了echo命令是如何做到这一点的。让我们再次输入echo命令。
您可能注意到,我们刚刚输入的命令并不完整。如果我们想使用echo命令输出特定的文本字符串,就需要指定该字符串是什么。这就是参数的作用。
参数是命令所需的特定信息。有些命令接受多个参数。现在,让我们用一个参数来完成echo命令。
我们正在学习一些相当技术性的东西,那么输出“you are doing great”这句话怎么样?我们将添加这个参数,然后按回车键获取输出。
在这个例子中,我们的参数是一个文本字符串。参数也可以提供其他类型的信息。
在Linux中非常重要的一点是,所有命令和参数都是区分大小写的。这包括文件和目录名。在您作为安全分析师学习如何在日常任务中使用Linux时,请记住这一点。
好的,既然我们已经介绍了通过Shell输入Linux命令和参数的基础知识,现在可以准备学习一些具体的命令了。这很令人兴奋,让我们进入下一个视频。
本节课总结
在本节课中,我们一起学习了通过Bash Shell与Linux操作系统交互的基础。我们明确了Shell(特别是Bash)在安全分析工作中的核心地位,理解了命令和参数的基本概念,并通过echo命令进行了实践。我们特别强调了Linux中命令和参数是区分大小写的这一重要特性,为后续学习具体的文件操作和系统管理命令打下了坚实的基础。
谷歌网络安全专业证书第四课:《工具之道:Linux与SQL》 - P21:导航和读取文件的核心命令
在本节课中,我们将学习如何与Linux操作系统进行通信,重点掌握在Linux文件系统中导航以及读取文件内容的核心命令。
上一节我们介绍了Linux架构的组成部分。本节中,我们来看看Linux文件系统层次结构标准。FHS是Linux操作系统的一个组件,用于组织数据。这个文件系统是Linux中非常重要的一部分,因为我们在Linux中所做的任何事情,在系统的某个目录中都被视为一个文件。
FHS是一个层次化系统。就像一棵树,所有东西都从根开始生长和分支。根目录是Linux中的最高级别目录,用一个斜杠 / 表示。子目录从根目录分支出来。这些子目录进一步分支,离根目录越来越远。
在描述Linux的目录结构时,斜杠用于沿着这些分支回溯到根目录。例如,路径 /home/anna 中,第一个斜杠表示根目录。然后它分支到 home 子目录。另一个斜杠表示它再次分支,这次是分支到位于 home 内的 anna 子目录。
在安全领域工作时,学习导航文件系统以定位和分析日志(例如日志文件)至关重要。你将分析这些日志文件以了解应用程序使用情况和身份验证情况。
有了这个背景知识,我们现在可以学习常用于导航文件系统的命令了。
以下是三个核心导航命令:
-
pwd:将当前工作目录的路径打印到屏幕上。使用此命令时,输出会告诉你当前位于哪个目录。 -
ls:显示当前工作目录中的文件和目录名称。 -
cd:在目录之间导航。当你想更改目录时,就使用这个命令。
让我们在Bash中使用这些命令。首先,我们输入命令 pwd 来显示当前位置,然后按回车键。输出是到 analyst 目录的路径,这是我们当前的工作目录。
接下来,我们输入 ls 来显示 analyst 目录内的文件和目录。输出是四个目录的名称:logs、old_reports、projects 和 reports,以及一个名为 updates.txt 的文件。
假设我们现在想进入 logs 目录以检查未经授权的访问。我们输入 cd logs 来更改目录。cd 命令不会在屏幕上产生任何输出。但如果我们再次输入 pwd,其输出会表明当前工作目录是 logs,它是 analyst 目录的一个子目录。
作为安全分析师,你还需要知道如何在Linux中读取文件内容。例如,你可能需要读取包含配置设置的文件以识别潜在漏洞,或者在调查未经授权访问时查看用户访问报告。
以下是两个用于读取文件内容的命令:
-
cat:显示文件的全部内容。这个命令很有用,但有时你并不想查看一个大文件的全部内容。 -
head:在这种情况下,你可以使用head命令。它默认只显示文件的开头10行。
让我们试试这些命令。假设我们想读取 access.txt 文件的内容,并且我们已经位于该文件所在的工作目录中。
首先,我们输入 cat 命令,然后跟上文件名 access.txt。Bash会返回这个文件的完整内容。
让我们将其与 head 命令进行比较。当我们输入 head 命令并跟上文件名时,只显示该文件的前10行。
本节课中,我们一起学习了安全分析师如何使用 pwd、ls、cd、cat 和 head 这些基本命令来导航系统并读取文件内容。这些是进行系统管理和安全调查的基础。接下来,我们将探索如何管理系统。😊
022:使用Linux找到所需内容 🔍
在本节课中,我们将学习如何在Linux文件系统中查找所需内容。作为一名安全分析师,过滤信息是解决复杂问题的关键技能。我们将重点介绍两个强大的命令:grep和管道(|),它们能帮助您高效地搜索和筛选数据。
上一节我们介绍了pwd、ls和cd等基本导航命令,本节中我们来看看如何在系统中进行精确查找。
使用 grep 命令进行搜索
grep 命令用于在指定文件中搜索特定字符串,并返回包含该字符串的所有行。这在处理大型日志或配置文件时尤其有用。
例如,假设您的团队发现一段恶意软件包含特定字符串,您可能需要查找包含相同字符串的其他文件。手动扫描大型文件非常耗时,而 grep 可以快速完成此任务。
以下是 grep 命令的基本语法:
grep [搜索字符串] [文件名]
-
第一个参数是您要搜索的字符串。
-
第二个参数是您要搜索的文件名。
假设我们有一个名为 updates.txt 的文件,我们需要找到其中所有包含单词 “OS” 的行。命令如下:
grep OS updates.txt
执行后,Bash 将只输出 updates.txt 文件中包含 “OS” 的行。
使用管道 | 进行过滤
管道是Linux中一个多功能命令,其核心思想是将一个命令的标准输出作为另一个命令的标准输入,以便进行进一步处理。在过滤数据的上下文中,它非常强大。
想象一根物理管道:水从一端进入,从另一端流出。Linux管道类似,数据从管道左侧的命令流出,成为管道右侧命令的输入。管道符号是竖线:|。
之前我们学习了 grep 可以直接搜索文件内容。当 grep 与管道结合使用时,它可以对前一个命令的输出结果进行搜索。
以下是一个组合命令示例:
ls /home/reports | grep users
这个命令的执行过程是:
-
ls /home/reports首先列出/home/reports目录下的所有文件和子目录。 -
管道
|将这个列表输出,而不是显示在屏幕上,并将其传递给下一个命令。 -
grep users接收这个列表,并在其中搜索包含字符串 “users” 的项。 -
最终,只有名称中包含 “users” 的文件或目录会被显示出来。
在Bash中实践
让我们通过一个具体例子来更好地理解这个过滤过程。
首先,我们输出 reports 目录中的所有内容。如果不在该目录下,需要指定路径:
ls /home/analyst/reports
假设输出显示有7个文件。现在,我们只想查看文件名中包含 “users” 的文件。我们将使用管道组合 ls 和 grep 命令:
ls /home/analyst/reports | grep users
执行后,输出将只显示那些文件名包含 “users” 的文件。不包含此字符串的两个文件将从结果中消失。
总结
本节课中我们一起学习了在Linux中进行信息过滤的两种核心方法:
-
grep命令:用于在文件内容中直接搜索特定字符串。 -
管道
|:用于将一个命令的输出作为另一个命令的输入,常与grep结合,实现对命令结果的动态过滤。
掌握文件和目录的导航以及内容过滤,是有效使用Linux命令行的基础。作为安全分析师,这些技能将帮助您快速定位日志、配置文件和潜在威胁指标。让我们继续探索Linux命令行的更多功能。
023:创建和修改目录和文件
在本节课中,我们将学习如何在Linux系统中创建和修改目录与文件。掌握这些基本操作是有效组织和管理数据的基础,对于网络安全工作至关重要。
上一节我们讨论了根目录和子目录的结构。本节中,我们来看看如何像修剪和培育树木一样,通过命令来创建和管理这些“分支”。
在网络安全领域处理数据时,组织是关键。如果我们知道信息的位置,就能更容易地发现问题并确保信息安全。
在之前的视频中,我们已经讨论了如何在目录之间导航。现在,让我们花点时间更仔细地检查目录。你可能熟悉用文件夹来组织信息的概念。在Linux中,我们使用目录。目录有助于组织文件和子目录。例如,在一个报告目录中,分析师可能需要创建两个子目录,一个用于草稿,另一个用于最终报告。
既然我们知道了为什么需要目录,现在让我们看看一些用于管理目录和文件的基本Linux命令。
以下是用于创建和删除目录的命令:
-
mkdir命令创建一个新目录。 -
rmdir命令则删除一个目录。这个命令的一个有用特性是它内置了警告功能,当目录非空时会提示你,这可以防止你意外删除文件。
接下来,你将使用其他命令来创建和删除文件。
-
touch命令创建一个新文件。 -
rm命令则删除一个文件。
最后,我们还有用于复制和移动文件或目录的命令。
-
mv命令将文件或目录移动到新位置。 -
cp命令将文件或目录复制到新位置。
现在,我们准备好尝试这些命令了。首先,让我们使用 pwd 命令查看当前目录。
然后,让我们用 ls 命令显示 analyst 目录中的文件和目录名称。
假设我们不再需要文件列表中出现的 old_reports 目录。让我们看看如何删除它。我们输入 rmdir 命令,后面跟上我们想要删除的目录名 old_reports。
我们可以使用 ls 命令来确认 old_reports 已被删除,并且不再出现在内容列表中。
现在,让我们做另一个更改。我们需要一个用于报告草稿的新目录。因此,我们需要使用 mkdir 命令,并为此目录指定一个名称 drafts。如果我们再次输入 ls,会注意到新的 drafts 目录已包含在 analyst 目录的内容中。
让我们通过输入 cd drafts 进入这个新目录。如果我们运行 ls,它没有返回任何输出,表明此目录当前为空。但接下来,我们将向其中添加一些文件。
假设我们需要起草关于最近安装的电子邮件和操作系统补丁的新报告。要创建这些文件,我们输入 touch email_patches.txt。
然后输入 touch os_patches.txt。运行 ls 表明这些文件现在已在 drafts 目录中。
如果我们意识到只需要一份关于操作系统补丁的新报告,并想删除 email_patches 报告,该怎么办?为此,我们输入 rm 命令,并指定要删除的文件为 email_patches.txt。运行 ls 确认它已被删除。
现在,让我们专注于移动和复制命令。我们意识到在 reports 文件夹中有一个名为 email_policy.txt 的文件目前是草稿格式。因此,我们想把它移动到新创建的 drafts 文件夹中。为此,我们需要切换到当前拥有该文件的目录。
在该目录中运行 ls 显示它包含几个文件,其中包括 email_policy.txt。然后,要移动该文件,我们将输入 mv 命令,后跟两个参数。mv 后的第一个参数标识要移动的文件。第二个参数指示移动的目标位置。
如果我们切换到 drafts 目录,然后显示其内容,会注意到 email_policy.txt 文件已被移动到此目录。我们切换回 reports 目录。显示文件内容确认 email_policy.txt 已不在那里。
还有一件事。vulnerabilities.txt 是一个我们希望保留在 reports 目录中的文件,但由于它影响一个即将进行的项目,我们也想把它复制到 projects 目录中。既然我们已经在这个拥有该文件的目录中,我们将使用 cp 命令将其复制到 projects 目录中。请注意,第一个参数指示要复制哪个文件,第二个参数提供它将被复制到的目录的路径。
当我们按下回车键时,这会将 vulnerabilities.txt 文件复制到 projects 目录中,同时将原始文件保留在 reports 目录里。用这些命令能做的事情很酷,不是吗?
现在让我们关注与修改文件相关的另一个概念。除了使用命令,你还可以使用应用程序来帮助你编辑文件。作为安全分析师,文件编辑器对于日常任务(如编写或编辑报告)通常是必需的。一个流行的文件编辑器是 nano。它很适合初学者。你可以通过 nano 命令访问此工具。让我们一起来熟悉一下 nano。
我们将为新的草稿报告 os_patches.txt 添加一个标题。首先,我们切换到包含该文件的目录。
然后我们输入 nano,后跟我们要编辑的文件名 os_patches.txt。这会打开 nano 文件编辑器并载入该文件。现在,我们只需在编辑器中输入标题“OS Patches”。
我们需要在返回命令行之前保存它,为此我们按 Ctrl+O,然后按回车键以当前文件名保存。接着要退出,我们按 Ctrl+X。
做得好。我们在这里涵盖了很多主题,从创建和删除目录及文件,到复制、移动它们。就在刚才,我们还添加了编辑文件的操作。你正在顺利掌握Linux命令的道路上。
024:文件权限与所有权
欢迎回来。在本节课程中,我们将继续学习如何在Linux环境中工作,并重点探讨文件与目录的权限管理。理解权限对于网络安全分析师至关重要,因为它直接关系到系统资源的访问控制和信息保护。
🔐 权限与授权概述
上一节我们介绍了Linux的基本操作,本节中我们来看看如何管理文件和目录的访问权限。权限是授予文件或目录的访问类型,它与授权概念紧密相关。授权是指授予用户访问系统中特定资源的权限。通过授权,你可以限制对指定文件或目录的访问。
遵循“按需知密”原则来管理数据访问是一个好习惯。试想,如果任何人都能在系统上随意访问或修改任何内容,将会带来多大的安全风险。
📖 Linux中的三种权限类型
在Linux中,授权用户可以拥有三种类型的权限。
以下是三种基本权限类型:
-
读取权限:对于文件,意味着可以读取文件内容。对于目录,意味着可以读取该目录下的所有文件列表。
-
写入权限:对于文件,允许修改文件内容。对于目录,表示可以在该目录内创建新文件。
-
执行权限:对于文件,意味着如果该文件是可执行文件,则可以运行它。对于目录,则允许用户进入该目录并访问其中的文件。
👥 三种权限所有者
权限会授予三种不同类型的所有者。
以下是三种权限所有者:
-
用户:文件的所有者。创建文件时,你即成为该文件的所有者,但所有权可以更改。
-
组:每个用户都属于某个组。一个组包含多个用户,这是在多用户环境中管理权限的一种方式。
-
其他:指系统上的所有其他用户。基本上,任何能访问系统的其他人都属于此类别。
🔢 权限表示法
在Linux中,文件权限用一个10个字符的字符串表示。对于一个用户、组和其他都拥有完全权限的目录,该字符串为:drwxrwxrwx。
让我们更仔细地分析这个字符串的含义:
-
第一个字符表示文件类型。例如,
d表示这是一个目录。如果这个字符是连字符-,则表示它是一个普通文件。 -
第二到第四个字符表示用户的权限。在示例中,
r表示有读权限,w表示有写权限,x表示有执行权限。如果缺少某项权限,则用连字符-代替字母。 -
第五到第七个字符以相同的方式表示组的权限。
-
第八到第十个字符表示其他用户的权限。
为文件和目录设置恰当的访问权限,对于保护敏感文件和维护系统整体安全至关重要。例如,薪资部门处理敏感信息,如果薪资组之外的人可以读取这些文件,就会引发隐私问题。另一个例子是当用户、组和其他人都能写入一个文件时,这种文件被称为全局可写文件,可能带来重大的安全风险。
🔍 如何检查权限
了解了权限的基本概念后,我们来看看如何实际查看它们。首先需要理解什么是选项。选项用于修改命令的行为,可以是一个字母或一个完整的单词。
检查权限涉及为 ls 命令添加选项。
以下是用于检查权限的常用 ls 命令选项:
-
ls -l:以长格式列出文件和目录,并显示其权限信息。 -
ls -a:显示所有文件,包括隐藏文件(以点.开头的文件)。 -
ls -la:结合上述两个选项,显示所有文件(包括隐藏文件)的详细信息及其权限。
让我们进入Bash环境尝试这些选项。假设我们当前在 project 子目录中。
首先,使用 ls 命令显示目录内容。输出显示了目录中的文件,但我们不知道它们的权限信息。
通过使用 ls -l,我们获得了这些文件的扩展信息。现在文件名显示在每行的右侧。每行的第一个信息块就是我们之前讨论过的权限格式。由于这些都是文件而非目录,请注意第一个字符是连字符 -。
让我们聚焦于一个特定文件 project1.txt。其权限字符串的第二到第四个字符(rw-)显示用户拥有读和写权限,但没有执行权限。在第五到第七个字符和第八到第十个字符的位置,序列都是 r--。这意味着组和其他用户只有读权限。
在权限信息之后,ls -l 首先显示用户名(例如 analyst),接着是组名(例如 security)。
现在使用 ls -a。输出中包含了两个额外的文件:名为 .hidden1.txt 和 .hidden2.txt 的隐藏文件。
最后,我们也可以使用 ls -la 来显示所有文件(包括这些隐藏文件)的权限。
📝 本节总结
本节课中,我们一起学习了Linux中文件权限与所有权的基础知识。你现在对文件权限的表示方法(如 drwxrwxrwx)、三种权限类型(读、写、执行)以及三种所有者(用户、组、其他)有了更深入的了解。同时,我们掌握了使用 ls -l、ls -a 和 ls -la 命令来检查文件和目录权限的方法。
这些知识在安全工作中非常有用,因为监控和设置正确的权限对于保护信息至关重要。休息一下,我们下一个视频再见。
025:24_更改权限
概述
在本节课中,我们将学习如何更改Linux系统中文件和目录的权限。作为安全分析师,调整用户权限是保护系统文件免遭意外或恶意修改的关键任务。
上一节我们介绍了如何检查用户的权限。本节中,我们来看看如何使用 chmod 命令来实际更改这些权限。
理解 chmod 命令
chmod 命令用于更改文件和目录的权限。其名称代表“Change mode”(更改模式)。更改权限有两种模式,但我们将重点学习符号模式。
了解 chmod 工作原理的最佳方式是通过一个例子。虽然命令看起来包含很多细节,但我们可以将其分解。请记住,与许多Linux命令一样,您无需死记硬背所有信息,随时可以查阅参考。
以下是 chmod 命令的一个示例:
chmod g+w,o-r access.txt
让我们来分解这个命令的各个部分。
分解 chmod 命令参数
使用 chmod 时,您需要指定要调整权限的文件或目录。这是命令的最后一个参数,在本例中是名为 access.txt 的文件。
紧跟在 chmod 命令后的第一个参数指明了如何更改权限。这被称为符号模式。
以下是该命令各组成部分的详细说明:
-
所有者类型标识符:
-
我们之前学过三种所有者类型:用户(user)、组(group)和其他(other)。
-
在
chmod中,我们用u代表用户,g代表组,o代表其他。 -
在本例中,
g表示我们将对组的权限进行更改,o表示将对其他的权限进行更改。这两个标识符用逗号分隔。
-
-
操作符:
-
我们是想添加还是移除权限?为此,我们使用数学运算符。
-
+号表示添加权限,-号表示移除权限。 -
在本例中,
g后面的+表示我们要为组添加权限,o后面的-表示我们要从其他移除权限。
-
-
权限类型:
-
我们已经学过,
r代表读权限,w代表写权限,x代表执行权限。 -
在本例中,
w表示我们为组添加写权限,r表示我们从其他移除读权限。
-
因此,命令 chmod g+w,o-r access.txt 的整体含义是:为文件 access.txt 的所属组添加写权限,同时移除其他用户的读权限。
虽然一开始看起来很复杂,但分解后理解起来就容易多了。记住,您不需要记住所有内容。
实践操作:更改权限
现在让我们尝试运行这个新命令。我们将从 log 子目录开始。
首先,使用 ls -l 命令查看当前目录下文件的权限信息:
ls -l
输出将显示该目录中唯一文件 access.txt 的权限。
之前我们学过如何解读这些权限:
-
第2到第4个字符表明用户拥有读和写权限(
rw-)。 -
第5到第7个字符表明组只有读权限(
r--)。 -
第8到第10个字符表明其他只有读权限(
r--)。
我们的目标是调整这些权限:确保安全组的分析师拥有写权限,同时移除其他类型所有者的读权限。因此,我们需要为组添加写权限,并为其他移除读权限。
运行 chmod 命令:
chmod g+w,o-r access.txt
现在,再次运行 ls -l 命令来查看更改:
ls -l
输出显示 access.txt 的权限已发生变化。
请注意权限字符串中的变化:
-
在代表组权限的中间段(第5-7位),
w已被添加,赋予了写权限。 -
另一个变化是,在代表其他权限的最后一段(第8-10位),
r已被移除。 -
如前所述,连字符
-表示缺乏相应权限。现在,“其他”用户没有任何权限(---)。
总结
在本节课中,我们一起学习了如何使用 chmod 命令的符号模式来更改Linux系统中文件和目录的权限。我们分解了命令的语法,理解了如何指定所有者类型(u, g, o)、操作符(+, -)和权限类型(r, w, x),并通过一个实践例子巩固了所学知识。虽然需要练习才能熟练,但随着时间推移,在Linux中工作会变得越来越自然。掌握权限管理是维护系统安全的重要基础。
026:添加和删除用户 👥
在本节课中,我们将要学习如何在Linux系统中添加和删除用户。这是系统管理中的一项基础且关键的任务,直接关系到系统的访问控制和安全性。
概述:用户管理与身份验证
上一节我们介绍了Linux的基本操作,本节中我们来看看用户管理。添加和删除用户与身份验证的概念相关。身份验证是用户向系统证明其身份的过程。就像进入一栋实体大楼一样,并非所有用户都应被允许进入系统。我们需要确保不应访问系统的人无法访问,同时,应访问系统的人能够顺利访问。这就是为什么我们需要添加用户。
新用户可能是组织的新成员,或是需要加入新小组的现有成员。这可能是由于组织结构变动,或仅仅是管理层的调动指令。同样,当用户离开组织时,需要将其删除。他们不应再拥有系统的任何访问权限。如果用户只是更换了小组,也应从他们不再属于的小组中删除。
超级用户:root
在了解如何操作用户之前,我们需要先认识一种特殊类型的用户:root用户(或称超级用户)。root用户是一个拥有修改系统的高级权限的用户。普通用户的权限有限,而root用户则没有这些限制。需要执行特定任务的个人可以被临时添加为root用户。root用户可以创建、修改或删除任何文件,并运行任何程序。只有root用户或拥有root权限的账户才能添加新用户。
你可能会想,如何成为超级用户?一种方法是直接以root用户身份登录。但在Linux中,以root身份运行命令被视为不良实践。
为何以root身份运行命令可能存在问题?
以下是三个主要问题:
-
安全风险:恶意攻击者会试图攻破root账户,因为这是最强大的账户。为了保持安全,root账户应禁用登录功能。
-
易犯不可逆错误:在命令行界面中很容易输错命令。如果以root身份运行,你犯下不可逆错误(例如永久删除目录)的风险更高。
-
责任归属问题:在Linux这样的多用户环境中,用户众多。如果一个用户以root身份运行命令,将无法追踪到底是谁执行了该命令。
解决方案:sudo命令
一个有助于解决上述问题的方案是使用 sudo 命令。sudo是一个临时授予特定用户提升权限的命令。与root用户运行所有命令都拥有root权限相比,sudo提供了一种更受控的方法。它解决了以root身份运行所带来的许多问题。
sudo源自“Superuser do”。它允许你以提升权限的用户身份执行命令,而无需登录或退出另一个账户。运行sudo会提示你输入当前登录用户的密码。并非系统上的所有用户都能成为超级用户。用户必须通过一个名为 sudoers 的配置文件被授予sudo访问权限。
添加用户:useradd命令
现在我们已经了解了sudo,让我们学习如何将其与另一个命令结合来添加用户。这个命令就是 useradd。useradd用于向系统添加一个用户。只有root用户或拥有sudo权限的用户才能使用useradd命令。
让我们看一个具体的例子。假设销售部门新加入一名代表,他将获得用户名sales_rep_7。我们的任务是将他添加到系统中。
以下是添加新用户的步骤:
-
首先,我们需要使用
sudo命令。 -
接着是
useradd命令。 -
最后是要添加的用户名,本例中是
sales_rep_7。
完整的命令如下:
sudo useradd sales_rep_7
此命令执行后通常不会在屏幕上显示任何内容。但由于我们得到了一个新的bash提示符(光标)而没有错误信息,我们可以确信命令已成功执行。如果失败,则会出现错误信息。有时错误可能很简单,比如拼错了useradd,或者可能是因为我们没有sudo权限。
删除用户:userdel命令
现在,让我们学习如何执行相反的操作:使用 userdel 命令删除用户。userdel用于从系统中删除一个用户。同样,我们需要通过sudo获得的root权限来使用userdel命令。
回到我们刚才添加用户的例子。假设两个月后,我们刚添加到系统中的销售代表离开了公司。该用户不应再拥有系统访问权限。
以下是删除该用户的步骤:
-
同样,首先使用
sudo命令。 -
接着是
userdel命令。 -
最后是要删除的用户名。
完整的命令如下:
sudo userdel sales_rep_7
再次,我们知道命令成功运行,因为出现了新的bash提示符且没有错误信息。
总结
本节课中我们一起学习了如何在Linux系统中添加和删除用户。我们了解到这些操作都需要使用sudo来获取必要的权限。我们探讨了root用户的概念及其潜在风险,并介绍了sudo命令作为更安全、可控的替代方案。最后,我们实践了使用useradd和userdel命令的具体步骤。在使用sudo时,我们必须运用最佳判断力,负责任地使用这些特殊权限,以确保系统的安全。
027:Linux与SQL
概述
在本节课中,我们将跟随谷歌安全工程师达玛尔的分享,了解他学习Linux命令的旅程与心得。我们将探讨Linux在网络安全领域的重要性、学习过程中的挑战与策略,以及可用的支持资源。
达玛尔的学习背景与职业路径
我的名字是达玛尔,我是谷歌的一名安全工程师。
我从小就一直想进入网络安全领域。我看过的很多卡通片里都有软盘或闪存驱动器,角色们将其插入电脑就能引发混乱。我一直觉得这非常酷。
在来到谷歌之前,我做过不少工作。我最开始是在Jamba Juice制作冰沙。后来,我在Geek Squad找到了第一份与IT技术相关的工作,最终来到这里成为了一名安全工程师。
给网络安全新手的建议
对于那些试图进入网络安全领域的人,我的建议是:这可能比你想象的要容易得多。
这绝对比我想象的要容易。我自己跳入这个领域后学到的一点是:你无法一次性学会所有东西,也不需要一次性知道所有东西。
Linux的重要性与用途
上一节我们了解了进入网络安全领域的心态,本节中我们来看看一个关键工具:Linux。
Linux非常重要,因为它几乎被每一家公司广泛使用。
以下是Linux在安全工作中的两个常见用途:
-
你可能使用Linux来整理日志。这是一种非常常见的做法。
-
你可能还会使用Linux编写bash脚本作业,以帮助完成Linux内的例行任务。
达玛尔与Linux的结缘
我最初对学习Linux产生兴趣是源于电影《侏罗纪公园》。电影中有一个场景,他们需要重新激活电控门,为此必须使用Unix操作系统。后来,我了解了Unix是什么,以及Linux是如何从它衍生而来的。这激励我去学习更多关于Linux的知识。
学习Linux命令的实用建议
了解了Linux的起源后,我们来看看如何有效地学习它。
我能给那些试图学习Linux和Linux命令的人的最好建议是:不要因为出现任何小挫折而气馁。坚持下去。
把它想象成你第一次学游泳。你可能并不擅长,过程令人沮丧,你可能还有点害怕,但你坚持了下来。我希望你现在已经会游泳了。
可用的学习支持资源
面对学习挑战时,善用资源至关重要。以下是学习Linux时可利用的一些支持资源:
-
证书课程中的讨论论坛是一个很好的例子。
-
另一个学习Linux的支持途径是使用Stack Overflow来谷歌搜索答案。
-
甚至可以在Reddit上发帖求助。
网络安全工作的意义
我非常热爱网络安全工作。知道我和我的团队,以及谷歌所有其他的安全团队,正在帮助保护人们在网络上免受他们可能甚至不知道的威胁,这非常令人满足。
总结
本节课中,我们一起学习了安全工程师达玛尔进入网络安全领域和学习Linux的历程。我们明确了Linux在行业中的核心地位,获得了坚持学习、克服挫折的鼓励,并了解了论坛、搜索引擎等实用的支持资源。最后,我们也看到了网络安全工作保护他人的重要价值。
谷歌网络安全专业证书第四课:《工具之道:Linux与SQL》 - P28:27_Linux社区
概述
在本节中,我们将了解Linux庞大的在线社区如何成为学习和解决问题的宝贵资源。你将学习如何利用社区资源来获取帮助,并继续提升你的Linux技能。
庞大的支持社区
Linux的流行和易用性催生了一个庞大的在线社区。这个社区持续发布信息,帮助用户学习如何操作Linux系统。
由于Linux是开源的,它已经形成了一个全球性的用户社区,成员们频繁地贡献内容。这个全球社区对所有Linux用户来说都是一个巨大的资源库,因为用户可以在这里找到日常任务的解决方案。
利用网络搜索
在互联网上简单搜索,通常就能提供许多答案。解决任务最简单的方法之一,就是搜索并阅读他人是如何完成的。
对于初学者而言,寻找如何执行某项任务的资源,是持续学习的好方法。例如,到目前为止你已经学会了如何添加用户,但假设之后你想添加一个新的用户组。学习如何操作的一种方式就是在线搜索。
让我们通过谷歌搜索来尝试一下。搜索“如何在Linux中添加组”,结果会为我们提供许多选项。
优质资源示例
另一个声誉良好的资源是“Unix和Linux Stack Exchange”问答社区。该社区的回答通过积分进行排名,以显示高质量的答案。许多问题涉及更高级的用户,并侧重于故障排除。
现在,当你对Linux相关主题有疑问时,你知道可以去哪里寻求额外的支持了。大量的支持资源只需点击即可获得。
过渡
上一节我们介绍了如何从外部网络社区获取支持。接下来,我们将学习如何从命令行内部直接获取帮助。
029:Shell内的man手册 📖
在本节课程中,我们将学习如何直接在Shell中使用内置的帮助资源,这些工具能帮助你在Linux环境中更高效地工作。Linux系统的一个优点是,你可以通过命令行直接获取帮助信息。
使用 man 命令获取详细手册
首先介绍的命令是 man,它用于显示其他命令的详细信息和工作方式。该命令的名称来源于单词“manual”(手册)。
让我们通过使用 man 来获取关于 usermod 命令的信息,以便更深入地了解其用法。输入命令 man usermod 后,man 会返回的信息包括对该命令的总体描述,以及关于 usermod 各个选项的详细说明。例如,选项 -D 可以添加到 usermod 命令中来更改用户的主目录。
man 命令提供了大量信息,但有时我们只需要快速了解某个命令的基本功能。
使用 whatis 命令获取简要说明
在这种情况下,可以使用 whatis 命令。whatis 会在单行中显示对命令的描述。
假设你听到同事提到了一个名为 tail 的命令,但你从未听说过它。你可以通过输入 whatis tail 来快速了解它的作用,从而得知该命令用于输出文件的末尾部分。
使用 apropos 命令搜索相关命令
有时,我们甚至不知道该查找哪个命令。这时,apropos 命令就能派上用场。apropos 会在手册页描述中搜索指定的字符串。
让我们尝试一下。假设你有一个需要更改密码的任务,但不太确定如何操作。如果我们使用 apropos 命令并指定字符串“password”,这将显示大量包含该单词的命令。这虽然有所帮助,但可能仍然难以找到我们真正需要的内容。
不过,我们可以通过添加 -a 选项和另一个字符串来过滤结果。此选项将仅返回同时包含这两个字符串的命令。在我们的例子中,既然我们想要更改密码,就让我们同时搜索包含“change”和“password”的命令。现在,apropos 的结果已被限制在最相关的命令范围内。
这些命令使得在Linux命令行中导航和查找信息变得容易得多。
总结
本节课我们一起学习了三个重要的Shell内置帮助工具:man、whatis 和 apropos。作为网络安全领域的新分析师,你不可能随时知道所有答案,但学会如何快速找到这些答案至关重要。掌握这些命令将帮助你在Linux环境中更自信、更高效地解决问题。
030:29_总结
概述
在本节课程中,我们将回顾并总结在Linux命令行界面学习过程中所掌握的核心知识与技能。
课程内容回顾
上一节我们介绍了如何利用命令行与操作系统进行交互。本节中,我们来总结一下所涵盖的关键内容。
在本节课程中,你学习了大量关于Linux命令行的知识。以下是本节涵盖的核心要点:
-
你学习了使用命令行与操作系统进行通信。
-
你掌握了用于导航和管理文件系统的命令。
-
你学会了使用其他命令进行用户身份验证和授权。
这些都是一名安全分析师很可能遇到的任务。最后,你还了解了如何获取资源以支持学习新的Linux命令。凭借这些知识,你将能够持续深入地学习如何使用命令行。
学习成果总结
我们学会了如何与Linux系统进行通信。这是一项重大的成就,并且对你未来作为安全分析师的职业生涯将非常有用。
你应该为截至目前所完成的工作感到自豪。
总结
本节课中,我们一起学习了与Linux命令行交互的基础,包括文件系统操作、用户权限管理以及如何自主扩展命令行知识。这些技能是网络安全分析工作的重要基石。
谷歌网络安全专业证书第四课:《工具之道:Linux与SQL》:4:欢迎来到第四周
在本节课中,我们将要学习一种新的数据分析工具:SQL。我们将了解什么是关系型数据库,如何编写SQL查询来访问数据,如何使用过滤器精确查找信息,以及如何通过连接操作合并多个数据表。
在安全领域,多样性很重要。找到有效的解决方案通常需要多样化的视角。
我们使用的工具也是如此。你的工作将经常要求你使用多种不同的工具。
在上一节中,我们学习了Linux命令行,了解了这个工具如何帮助你搜索和过滤数据、浏览Linux文件系统以及验证用户身份。
现在,在本节中,我们将学习另一个工具。我们将探索SQL,以及它如何让你以安全分析师角色所需的方式分析数据。
我们将从学习关系型数据库及其结构开始。
接下来,我们将介绍SQL查询以及如何使用它们从数据库中访问数据。
然后,我们将学习SQL过滤器,它帮助我们优化查询以获取所需的确切信息。
最后,我们将探索SQL连接操作,它允许你将多个表组合在一起。
当我在工作中遇到问题或项目时,我经常需要筛选大量数据。当我使用SQL时,我能够快速审查数据并自信地提供结果,因为查询语句是统一且易于执行的。
SQL是一个非常强大且灵活的工具。在本节中,你将学习作为安全分析师所需掌握的部分,并获得实践经验。
祝你好运,我将在后续课程中与你一同学习。😊
总结
本节课我们一起学习了SQL在安全分析中的重要性。我们概述了本节的学习路径:从关系型数据库基础开始,到编写SQL查询、应用过滤器进行精确搜索,最后学习如何连接多个数据表。SQL作为一种强大而灵活的工具,将帮助你高效地处理和分析安全数据。
032:数据库简介 🗄️
在本节课中,我们将要学习数据库的基础知识。我们将了解什么是数据库、它与电子表格的区别,以及关系型数据库是如何通过表和键来组织数据的。
我们的现代世界充满了数据,这些数据几乎总是在指导我们做出重要决策。当处理大量数据时,我们需要知道如何存储它,以便数据组织有序,并能快速访问和处理。解决这个问题的方案就是数据库,这正是我们将在本视频中探讨的内容。
首先,我们可以将数据库定义为信息或数据的有组织集合。
数据库与电子表格
数据库常与电子表格进行比较。你们中的一些人可能过去使用过 Google Sheets 或其他常见的电子表格程序。虽然这些程序是存储数据的便捷方式,但电子表格通常是为单个用户或小团队存储较少数据而设计的。相比之下,数据库可以被多人同时访问,并且可以存储海量数据。数据库在访问数据时还能执行复杂的任务。
作为安全分析师,您经常需要访问包含有用信息的数据库。例如,这些可能是包含登录尝试信息、软件和更新信息,或机器及其所有者信息的数据库。
既然我们知道了数据库的重要性,接下来让我们谈谈它们是如何组织的,以及我们如何与它们交互。
关系型数据库的结构
使用数据库使我们能够存储大量数据,同时保持快速和易于访问。构建数据库有很多不同的方式,但在本课程中,我们将使用关系型数据库。关系型数据库是一种包含相互关联的表格的结构化数据库。
让我们进一步了解关系型数据库的构成。我们将从检查一个大型组织信息数据库中的单个表开始。
每个表都包含信息字段。例如,在这个关于员工的表中,字段将包括员工ID、设备ID和用户名等。这些是表的列。
此外,表包含行,也称为记录。记录中填充了与表中列相关的具体数据。例如,我们的第一行是一条记录,对应一名ID为1000、在市场部工作的员工。
关系型数据库通常有多个表。考虑一个例子,我们从一个更大的数据库中获取两个表:一个包含公司员工,另一个包含分配给这些员工的机器。
表之间的关系:键
如果两个表共享一个共同的列,我们就可以连接它们。在这个例子中,我们通过一个共同的员工ID列在它们之间建立关系。将两个表相互关联起来的列称为键。键有两种类型。
以下是两种主要类型的键:
-
主键:主键指的是每一行都有唯一条目的列。主键不能有任何重复值或任何空值。主键使我们能够唯一地标识表中的每一行。对于员工表,员工ID就是一个主键。每个员工ID都是唯一的,并且没有重复或为空的员工ID。
-
外键:外键是一个表中的列,该列是另一个表中的主键。与主键不同,外键可以有空值和重复值。外键允许我们将两个表连接在一起。在我们的例子中,我们可以查看机器表中的员工ID列。我们之前已将其确定为员工表中的主键,因此我们可以用它来将每台机器连接到其对应的员工。
同样重要的是要注意,一个表只能有一个主键,但可以有多个外键。
总结与下一步
掌握了这些信息,我们就可以开始学习SQL的基础知识了,SQL是让我们能够处理数据库的语言。在本节的后续部分,我们将亲身体验并实践刚刚学到的这些概念。
在本节课中,我们一起学习了数据库的基本概念,包括其定义、与电子表格的区别,以及关系型数据库如何通过表、记录、主键和外键来组织和关联数据。
033:使用SQL查询数据库
概述
在本节课中,我们将要学习SQL(结构化查询语言)的基础知识。SQL是安全分析师用于与数据库交互、检索和分析数据的关键工具。我们将了解SQL的重要性,以及它如何帮助我们从海量日志中高效提取所需信息。
作为一名安全分析师,你需要熟悉数据库以及用于访问数据库的工具。
既然我们已经了解了数据库的基础知识,现在让我们聚焦于一个用于操作数据库的重要工具:SQL,并进一步了解像你这样的分析师可能会如何使用它。
SQL,有时也读作S-Q-L,代表结构化查询语言。SQL是一种用于创建、与数据库交互以及从数据库请求信息的编程语言。
在学习更多关于SQL的知识之前,我们需要定义“查询”的含义。查询是向数据库表或多个表的组合请求数据。
几乎所有的关系型数据库都依赖某种版本的SQL来查询数据。不同版本的SQL在结构上只有细微的差异,例如引号放置的位置。无论你使用哪种SQL,你都会发现它是你作为安全分析师工作中一个非常重要的工具。
上一节我们介绍了SQL的基本概念,本节中我们来看看SQL如何帮助你检索日志。
日志是记录组织系统内发生事件的记录。作为安全分析师,你可能因各种原因被指派审查日志。例如,某些日志可能包含公司所用机器的详细信息,作为分析师,你需要找出那些配置不当的机器。其他日志可能描述访问你网站或网络应用的访客及其执行的任务。在这种情况下,你可能需要寻找可能指向恶意活动的异常模式。
安全日志通常非常庞大且难以处理。其中有数百万个数据点,要找到你需要的信息非常耗时。但这就是SQL发挥作用的地方。它可以通过一个只需几秒钟就能运行的查询,筛选数百万个数据点,提取出相关的数据行。
SQL也是一种非常常见的基础数据分析语言,这是另一套能让你作为安全分析师脱颖而出的技能。作为安全分析师,你可以使用SQL的过滤功能来查找数据,以支持与安全相关的决策,并分析何时可能出现问题。例如,你可以识别哪些机器尚未收到最新的补丁。这很重要,因为补丁是帮助防范攻击的更新。再举一个例子,你可以使用SQL根据机器使用最少的时间来确定更新机器的最佳时机。
现在我们已经知道了SQL为何对我们如此重要,接下来我们将开始对一个示例数据库进行基本查询。
总结
本节课中我们一起学习了SQL的基础知识及其在网络安全分析中的重要性。我们了解到SQL是一种强大的查询语言,能够帮助我们从庞大的数据库日志中高效、精确地提取信息,支持安全决策和问题分析。在接下来的课程中,我们将开始动手实践,学习如何构建基本的SQL查询。
034:网络安全中的SQL
📚 课程概述
在本节课中,我们将跟随谷歌安全工程师阿黛代奥,了解SQL在网络安全领域的重要性、学习路径以及实践经验。你将明白为什么SQL是网络安全专业人士工具箱中的必备技能,以及如何通过实践来掌握它。
🧑💻 个人背景与入门鼓励
大家好,我是阿黛代奥,目前在谷歌担任安全工程师。
许多人认为,进入网络安全领域需要拥有计算机科学学位。我认为事实并非如此。以我为例,我的IT学习之旅始于尼日利亚的拉各斯,那是我出生和成长的地方。如今,我来到了硅谷,为谷歌工作。我认为这非常了不起,是梦想成真。你正在学习的这个证书,是你承诺将职业转向网络安全的第一步。为你喝彩。
🔑 SQL在网络安全中的核心价值
上一节我们了解了非科班背景也能进入网络安全领域,本节中我们来看看SQL技能的具体价值。
SQL是你作为网络安全专业人士工具箱中必须掌握的技能之一。掌握SQL后,你不仅能快速做出决策,更能用数据支撑你的决策,并能向你的团队和利益相关者清晰地解释决策依据。仅仅说“我们需要这样做”是一回事;而说“我们需要这样做,这是基于我通过SQL查询得到的数据”则是另一回事,后者更具说服力。
🛠️ SQL的学习路径与实践方法
了解了SQL的重要性后,我们来看看如何有效地学习并掌握它。
我最初在学校的一门课程中学习了SQL,那是一次很棒的学习经历。但毕业后,我几乎忘记了所有内容。我采取的下一步是参加在线课程,就像你现在正在做的一样,重新学习SQL的基础知识和实际应用方法。
我第一次实际应用SQL是在谷歌。实践至关重要。我认为,和其他任何事情一样,熟能生巧。因此,即使每周只抽出几个小时,也要留出时间练习编写SQL语句。这项技能对你获得第一份工作将非常实用,你可以用它来做数据驱动的决策。
💼 网络安全工作的成就感
最后,我们来谈谈掌握这些技能后,从事网络安全工作带来的满足感。
在网络安全领域工作让我感到非常充实。我每天上班都充满活力,不仅因为我能处理非常复杂的问题并尝试找出解决方案,还因为我拥有优秀的同事,我们能齐心协力攻克难题。晚上入睡时,我知道我的工作是为了让谷歌用户和员工更安全,这对我来说是一种非常有回报的感觉。
📝 课程总结
本节课中,我们一起学习了网络安全专家阿黛代奥分享的经验。我们了解到SQL是支撑数据驱动决策、进行有效沟通的关键技能;学习SQL需要结合课程学习与持续实践;最终,在网络安全领域运用这些技能解决问题,能带来巨大的职业成就感与满足感。
035:基本查询
在本节课中,我们将学习如何运行你的第一个SQL查询。这个查询将基于网络安全分析师可能遇到的一项常见工作任务:确定特定员工被分配了哪台计算机。我们将从基础开始,了解构成SQL查询的核心关键字和语法。
从任务到查询
假设我们有权访问一个名为 employees 的表,该表包含五列。其中,employee_id 和 device_id 这两列包含了我们需要的信息。我们的目标是编写一个查询,仅从该表中返回这两列数据。
SQL核心关键字:SELECT 与 FROM
编写基本SQL查询需要两个核心关键字:SELECT 和 FROM。
-
SELECT 指示要返回哪些列。
-
FROM 指示要从哪个表中查询数据。
这些关键字在SQL中的使用方式与日常用语非常相似。例如,你可以请朋友“从(FROM)大箱子里挑选(SELECT)苹果和香蕉”。SQL的思维逻辑与此一致。
现在,让我们在SQL中使用 SELECT 和 FROM 来获取关于员工及其所用计算机的信息。
编写你的第一个查询
以下是获取员工ID和设备ID的SQL语句:
SELECT employee_id, device_id
FROM employees;
我们来分解一下这个语句:
-
语句以
SELECT开头,后面跟着我们想要返回的列名:employee_id和device_id。 -
两个列名之间用逗号分隔。
-
FROM关键字指定了数据来源的表:employees。 -
整个语句以分号结束。
运行此查询后,输出结果将为我们提供匹配员工与其计算机所需的信息。恭喜,你已经成功运行了第一个SQL查询!
关于SQL语法的要点
在继续之前,有必要了解一些SQL语法的关键方面。语法决定了在计算语言中什么是结构正确的。
以下是两个重要注意事项:
-
大小写不敏感:SQL关键字不区分大小写。
SELECT和select是等效的。然而,通常将关键字大写以提高查询语句的可读性。 -
语句结束符:分号
;应放在语句的末尾,用以标记一个SQL命令的结束。
查询所有列:SELECT *
如果我们需要获取更多信息,例如员工所属的部门、用户名或办公地点,该怎么办?我们可以让SQL打印出表中的所有列。
这可以通过在 SELECT 后使用星号 * 来实现,这通常被称为 SELECT ALL。
以下是查询 employees 表中所有列的语句:
SELECT *
FROM employees;
运行此查询,输出结果将显示完整的表格。
总结
本节课中,我们一起学习了SQL的基础查询操作。我们了解了如何使用 SELECT 和 FROM 这两个核心关键字从特定表中提取指定的列数据,也掌握了使用 * 来快速选择所有列的方法。同时,我们认识了SQL语法中关于大小写和分号使用的基本规则。
你已经成功完成了基础SQL查询的学习!在下一个视频中,我们将学习如何为查询添加过滤器,以便更精确地获取所需数据。
036:SQL查询中的基本筛选 🔍
在本节课中,我们将要学习SQL最强大的功能之一:数据筛选。我们将了解如何通过筛选条件,从数据库中选择更具体、更符合需求的数据片段。
什么是筛选? 🎯
筛选是指选择符合特定条件的数据。你可以将筛选理解为一种只挑选我们想要的数据的方式。
例如,假设我们想从一个水果摊上选择苹果。筛选功能允许我们指定想要哪种苹果。当我们去挑选苹果时,我们可能会明确地说:“只选择新鲜的苹果。” 这会将不新鲜的苹果从选择中移除。这就是一个筛选过程。
在网络安全分析中,你可能会筛选登录尝试表,以查找来自特定国家的所有尝试。这可以通过对国家列应用筛选条件来实现。例如,你可以筛选出仅包含“Canada”的记录。
理解SQL运算符 ⚙️
在开始之前,我们需要关注SQL语法的一个重要部分:运算符。
运算符是一个代表某种操作的符号或关键字。一个运算符的例子是“等于”运算符(=)。例如,如果我们想找到所有在“country”列中包含“USA”的记录,我们会使用 country = 'USA'。
使用WHERE子句进行筛选 📝
要在SQL中筛选查询,我们只需在之前使用的SELECT和FROM语句后添加额外的一行。这额外的一行将使用SQL中的WHERE子句。WHERE指明了筛选的条件。
在关键字WHERE之后,使用运算符列出具体的条件。因此,如果你想找到所有在美国进行的登录尝试,我们将创建这样一个特定的筛选条件:指示返回所有在“country”列中值等于“USA”的记录。
让我们在SQL中将其组合起来。我们将从选择log_in_attempts表中的所有列开始,然后添加WHERE筛选器。别忘了分号,它表示SQL语句的结束。
以下是示例代码:
SELECT *
FROM log_in_attempts
WHERE country = 'USA';
运行此查询后,由于我们的筛选条件,只有登录尝试国家为“USA”的行会被返回。
使用LIKE运算符进行模式匹配 🔄
在之前的例子中,我们的筛选条件仅仅是基于返回等于特定值的记录。我们也可以通过搜索模式而非精确单词来使条件更复杂。
例如,在员工表中,我们有一个“office”列。我们可以搜索此列中匹配特定模式的记录。也许我们想要所有在东楼(East building)的办公室。为了搜索模式,我们使用百分号(%)作为未指定字符的通配符。
如果我们运行一个筛选条件 WHERE office LIKE 'East%',这将返回所有以“East”开头的记录,例如办公室“East 120”、“East 290”和“East 435”。
当使用百分号搜索模式时,我们不能使用等于运算符。相反,我们使用另一个运算符:LIKE。LIKE是一个与WHERE一起使用的运算符,用于在列中搜索模式。由于LIKE是一个运算符,类似于等号,我们用它来代替等号。
因此,当我们的目标是返回“office”列中所有以单词“east”开头的值时,LIKE会出现在WHERE子句中。
实践:处理数据不一致性 🛠️
让我们回到想要筛选在美国进行的登录尝试的例子。想象一下,我们意识到数据库中表示“美国”的方式存在不一致性:有些条目使用“US”,而另一些使用“USA”。
让我们进入SQL并应用这种带有LIKE的新筛选类型。我们将以相同的前两行代码开始,因为我们想从login_attempts表中选择所有列。然后,我们将添加一个带有LIKE的筛选器,以便如果“country”列中的值以字符“US”开头,记录就会被返回。这包括了“US”和“USA”。
以下是示例代码:
SELECT *
FROM login_attempts
WHERE country LIKE 'US%';
运行此查询以检查输出是否改变。这将返回用户位置在美国的所有条目。现在,我们可以使用LIKE子句基于模式来筛选列。
总结 📚
本节课中,我们一起学习了SQL查询中的基本筛选。我们首先了解了筛选的概念及其在精确获取数据中的重要性。接着,我们认识了SQL中的运算符,特别是=和LIKE。我们详细探讨了如何使用WHERE子句添加筛选条件,从简单的等值匹配到更灵活的模式匹配。通过处理数据表示不一致的实际例子,我们掌握了LIKE运算符结合通配符(%)的用法。现在,你已经能够通过单一查询,非常精确地从数据库中获取所需的数据了。
037:日期和数字筛选 📊
在本节课中,我们将继续学习SQL查询和筛选,但这次我们将把这些技巧应用到新的数据类型上。我们将探索如何在数据库中对数字和日期时间数据进行筛选,这对于安全分析师识别异常活动(如非工作时间的登录尝试)或管理任务(如查找特定时间段内需要更新的机器)至关重要。
数据类型简介
上一节我们介绍了如何使用字符串数据进行筛选,本节中我们来看看SQL中另外两种常见的数据类型:数字和日期时间。
以下是三种常见的数据类型:
-
字符串数据:由有序的字符序列组成的数据。这些字符可以是数字、字母或符号。例如,用户名
analyst10就是字符串数据。 -
数字数据:由数字组成的数据。与字符串不同,可以对数字数据进行数学运算,如乘法或加法。例如,登录尝试次数。
-
日期时间数据:表示日期和/或时间的数据。例如,补丁安装日期或登录尝试的具体时间。
使用运算符筛选数字和日期
我们将使用与字符串筛选类似的运算符来筛选数字和日期。这些运算符允许我们进行比较。
以下是用于处理数字或日期时间数据类型的常见运算符:
-
=等于 -
>大于 -
<小于 -
!=不等于 -
>=大于或等于 -
<=小于或等于
例如,假设您想查找晚上6点之后进行的登录尝试,因为这属于非正常工作时间,可能存在可疑活动。
您可以在筛选器中使用大于运算符来识别这些尝试。
SELECT *
FROM log_in_attempts
WHERE time > ‘18:00’;
在这段代码中:
-
SELECT *表示选择log_in_attempts表中的所有列。 -
WHERE time > ‘18:00’是筛选条件,它指定time列中的值必须大于18:00(即SQL中表示下午6点的方式)。
执行此查询后,我们将获得一份下午6点之后所有登录尝试的列表。
使用 BETWEEN 运算符筛选范围
除了基本的比较运算符,我们还可以使用 BETWEEN 运算符来筛选特定范围内的数字或日期。
BETWEEN 是一个用于筛选处于某个范围内的数字或日期的运算符。
一个典型的应用场景是查找在特定时间范围内安装的所有补丁。
让我们尝试查找所有在2021年3月1日至2021年9月1日之间安装的补丁。
SELECT *
FROM machines
WHERE os_patch_date BETWEEN ‘2021-03-01’ AND ‘2021-09-01’;
在这段代码中:
-
我们从
machines表中选择所有记录。 -
在
WHERE语句中,我们指定要筛选的列是os_patch_date。 -
使用
BETWEEN运算符,并给出范围的开始‘2021-03-01’和结束‘2021-09-01’。
运行此查询后,我们将得到在这两个日期之间打过补丁的所有机器的列表。
重要注意事项:引号的使用
在结束之前,有一个重要的细节需要注意:当我们筛选字符串、日期和时间时,需要使用引号来指定我们要查找的内容。然而,对于数字,我们不使用引号。
掌握了这些新知识,您现在就可以为各种数字和日期创建有趣的筛选条件了。
本节课中我们一起学习了如何对数字和日期时间数据类型使用运算符(如 >、<、BETWEEN)进行SQL筛选,并了解了在筛选不同数据类型时使用引号的规则。在下一个视频中,我们将通过在一个查询中使用多个条件,进一步扩展我们的筛选能力。
038:使用AND、OR和NOT进行筛选
在本节课中,我们将要学习如何在SQL查询中使用AND、OR和NOT运算符来组合多个筛选条件。这对于处理复杂的网络安全分析任务至关重要,例如识别依赖于多个因素的特定漏洞。
概述
上一节我们介绍了SQL中的基本筛选方法。本节中我们来看看如何通过组合多个条件进行更精确的查询。在实际的网络安全工作中,我们经常需要根据多个条件来筛选数据。例如,一个安全漏洞可能同时与特定的操作系统和特定的电子邮件客户端相关。为了找到所有可能受影响的设备,我们需要筛选出同时满足这两个条件的记录。
使用AND运算符
AND是一个逻辑运算符,它要求同时满足其连接的两个条件。
我们可以用一个类比来理解:假设你有一个装满了水果的大箱子,你需要从中挑选出又大又新鲜的苹果。这意味着结果中不会包含小的苹果(即使它是新鲜的),也不会包含腐烂的苹果(即使它是大的)。只有同时满足“大”和“新鲜”这两个条件的苹果才会被选中。
在SQL中,AND运算符的用法如下:
SELECT *
FROM 表名
WHERE 条件1 AND 条件2;
让我们将其应用到具体的例子中。假设我们有一个名为Machines的表,其中包含operating_system和email_client等列。我们想找出所有运行OS1操作系统并且使用EmailClient1电子邮件客户端的机器。
对应的SQL查询是:
SELECT *
FROM Machines
WHERE operating_system = ‘OS1’ AND email_client = ‘EmailClient1’;
执行这个查询后,返回的结果将只包含那些在operating_system列值为‘OS1’并且在email_client列值为‘EmailClient1’的行。
使用OR运算符
接下来,我们来看看OR运算符。OR也是一个逻辑运算符,它要求满足其连接的任意一个条件即可。
在维恩图中,每个圆圈代表一个条件。当使用OR连接时,SQL会选择满足其中任何一个条件的所有行(同时满足两个条件的行也会被包含在内)。
例如,我们需要找出所有运行OS1或OS3操作系统的机器,因为这两种系统都需要打补丁。
以下是使用OR运算符的SQL查询:
SELECT *
FROM Machines
WHERE operating_system = ‘OS1’ OR operating_system = ‘OS3’;
执行此查询后,结果将包含operating_system列的值为‘OS1’或‘OS3’的所有记录。
使用NOT运算符
最后,我们学习NOT运算符。NOT用于否定一个条件,即选择不满足该条件的行。
在维恩图中,条件由圆圈表示。使用NOT时,返回的是圆圈之外的所有部分,即所有不匹配该条件的数据。
这比逐一列出所有不需要的情况要高效得多。例如,在挑选水果时,你可以说“任何不是苹果的水果”,这比说“我要香蕉、或橘子、或酸橙等等”要简洁。
在SQL中的应用示例如下:假设你想更新公司里所有不是运行OS3操作系统的设备。
对应的SQL查询是:
SELECT *
FROM Machines
WHERE NOT operating_system = ‘OS3’;
执行这个查询,我们将得到所有没有运行OS3操作系统的机器列表,从而知道哪些机器需要更新。
总结
本节课中我们一起学习了SQL中三个重要的逻辑运算符:AND、OR和NOT。
-
AND:用于连接多个条件,要求所有条件都必须为真。 -
OR:用于连接多个条件,要求至少一个条件为真。 -
NOT:用于否定一个条件,选择不满足该条件的行。
掌握这些运算符的组合使用,能让你构建出更复杂、更精确的查询,以应对各种网络安全数据分析场景。
在下一个视频中,我们将学习如何将两个表连接(JOIN)在一起,从而进一步扩展我们能运行的查询类型。
039:在SQL中连接表 🧩
在本节课中,我们将要学习SQL中一个非常强大的功能:连接表。当我们需要从数据库的两个不同表中获取信息时,这个功能至关重要。通过学习连接操作,你将能够整合数据,从而获得更全面的洞察。
连接表的语法
上一节我们介绍了SQL查询和筛选的基础知识。本节中,我们来看看如何连接多个表。由于现在要处理两个表,我们需要一种方法来告诉SQL我们是从哪个表中选择列。
在SQL语句中,如果两个表包含同名的列,SQL需要知道我们指的是哪一个。解决方法是先写表名,然后是一个点号.,最后是列名。例如:
-
employees.employee_id表示employees表中的employee_id列。 -
machines.employee_id表示machines表中的employee_id列。
理解连接的基础
现在我们已经理解了引用列的语法,让我们将其应用到连接操作中。假设我们想更深入地了解公司中访问机器的员工信息。通过连接employees表和machines表,我们可以实现这个目标。
我们首先需要确定用于连接两个表的共享列。通常,我们会使用一个表中的主键去连接另一个表中作为外键的对应列。
-
在
employees表中,employee_id是主键,因为它为表中的每一行提供了唯一值,并且没有空值。 -
在
machines表中,employee_id是外键。我们无法保证它遵循与主键相同的唯一性和非空性标准。
内连接详解
接下来,我们将使用一种称为内连接的连接类型。内连接会返回在指定列上匹配的行,该列存在于多个表中。
为了更清晰地解释内连接,让我们聚焦于employees表和machines表中的各四行数据。
如果我们选择在两个表的employee_id列上执行内连接,那么只有那些在两个表中employee_id值都存在的行才会被返回。例如,如果两个表都有1188和1189,那么这两行就是匹配的。连接的结果将包含这两行,以及来自两个表的所有列。
在继续学习查询之前,我们必须了解表中的空值。在SQL中,NULL 代表由于任何原因而缺失的值。在我们的例子中,machines表中的NULL值可能代表尚未分配给任何员工的机器。
编写内连接查询
现在,让我们在SQL中实现这一点,对完整的表执行内连接。假设我们希望通过连接这两个表,获得一个显示用户名、办公室位置及其机器操作系统的列表。employee_id是这两个表之间的公共列,我们可以用它来连接它们,但结果中不需要显示此列。
以下是构建查询的步骤:
-
首先,编写一个基本的
SELECT语句,指明我们想要选择的列:username、office和operating_system。 -
我们希望
employees表作为第一个(左)表,因此在FROM语句中使用它。 -
然后,编写查询中告诉SQL将
machines表与employees表连接的部分。
让我们分解这个查询:
SELECT username, office, operating_system
FROM employees
INNER JOIN machines ON employees.employee_id = machines.employee_id;
-
INNER JOIN指示SQL执行内连接。 -
machines是我们想要与第一个表(employees)组合的第二个表,称为右表。 -
ON employees.employee_id = machines.employee_id告诉SQL基于哪个列进行连接。由于涉及两个表,我们必须用表名.列名的格式来标识列。
让我们回顾一下输出结果。完美!我们已经成功连接了两个表。查询结果显示的是在employee_id列上匹配的记录。请注意,这些记录包含来自两个表的列,但仅限于我们通过SELECT语句指定的那些列。
总结与预告
本节课中,我们一起学习了SQL中连接表的核心概念。我们掌握了如何通过表名.列名的语法引用特定表中的列,理解了主键和外键在连接中的作用,并重点实践了内连接的用法。内连接能够帮助我们基于匹配条件,从多个表中整合出有意义的数据集。
然而,内连接只返回匹配的行。还有其他类型的连接(如左连接、右连接、全外连接)不要求完全匹配也能连接两个表,我们将在下一个视频中讨论这些内容。
040:39_连接表的类型
在本节课程中,我们将学习外连接(Outer Joins)的三种类型:左连接、右连接和全外连接。我们将了解它们与内连接的区别,以及每种连接在何种场景下使用。
上一节我们介绍了内连接,它只返回两个表中指定列具有匹配值的记录。然而,在某些情况下,我们可能需要获取一个表或两个表中的所有记录,即使它们在另一张表中没有匹配项。本节中我们来看看如何通过外连接实现这一需求。
外连接有三种类型:左连接、右连接和全外连接。与外连接类似,外连接也是将两个表组合在一起。但是,它们不要求列之间必须匹配才能返回行。具体返回哪些行取决于连接的类型。
以下是三种外连接的简要说明:
-
左连接:返回左表(第一个表)的所有记录,但只返回右表中在指定列上有匹配值的行。
-
右连接:返回右表(第二个表)的所有记录,但只返回左表中在指定列上有匹配值的行。
-
全外连接:返回两个表中的所有记录。
让我们通过一个简单的例子来具体分析左连接。假设我们有两个表:employees(左表)和machines(右表),每个表只有几行和几列。我们通过 employee_id 列进行连接。
在这个例子中,只有两条记录在 employee_id 列上有匹配值。当我们执行左连接时,SQL会返回这些具有匹配值的行,以及左表(employees)中的所有其他行,同时包含两个表的所有列。那些来自 employees 表但未找到匹配的记录,其对应的来自 machines 表的列值将显示为 NULL。
接下来,我们谈谈右连接。右连接返回右表(第二个表)的所有记录,但只返回左表中在指定列上有匹配值的行。如果使用右连接重写上面的例子,结果将包含两个表的匹配行、右表的所有行以及两个表的所有列。对于任一表中不存在的值,结果中会显示为 NULL。
最后,我们讨论全外连接。全外连接返回两个表中的所有记录。使用同样的例子,一个全外连接将返回所有表的所有列。如果某一行在特定列上没有值,则返回 NULL。例如,machines 表中没有 employee_id 为 1190 的行,因此结果中该行来自 machines 表的列值就是 NULL。
要在SQL中实现左连接、右连接和全外连接,其语法结构与内连接相同,但使用不同的关键字。
以下是SQL中实现这些连接的代码示例:
-- 左连接
SELECT *
FROM table1
LEFT JOIN table2 ON table1.column = table2.column;
-- 右连接
SELECT *
FROM table1
RIGHT JOIN table2 ON table1.column = table2.column;
-- 全外连接
SELECT *
FROM table1
FULL OUTER JOIN table2 ON table1.column = table2.column;
作为一名安全分析师,你不需要死记硬背所有这些内容。一旦理解了所需的连接类型,你可以快速搜索并找到执行这些查询所需的全部信息。
掌握了关于连接的知识后,我们已经涵盖了你作为使用SQL的安全分析师所需的一些非常重要的信息。
本节课中我们一起学习了外连接的三种类型:左连接、右连接和全外连接。我们了解了每种连接如何工作,它们与内连接的区别,以及如何在SQL查询中使用它们来组合数据表。
041:总结
在本节课程中,我们将回顾并总结在SQL部分所学习的所有核心知识与技能。
恭喜你,我们已经共同完成了SQL部分的学习。你付出了很多努力,并掌握了一项对安全分析师职业发展至关重要的工具。
现在,让我们花点时间回顾一下你在本节中学到的所有主题。
我们首先学习了关系数据库的结构,以及如何使用查询语言SQL来访问它们。
接着,我们进行了编写SQL查询语句的实践练习。我们使用SQL来提取作为分析师工作时可能需要的信息。
然后,我们重点学习了SQL过滤器。我们从简单的字符串条件开始,到最后,我们学会了如何在一个查询中使用多个过滤器。
本单元以SQL连接操作作为结尾,我们学习了如何连接多个表,从而一次性获取更多信息。
完成本课程,意味着你在未来成为安全分析师的职业生涯中迈出了非常重要的一步。你已经接触到了一个能在工作中为你提供强大助力的工具。
无论何时你需要,我都鼓励你重新回顾本课程的材料。学习像SQL这样的查询语言需要时间。
再次感谢你与我一同走过这段学习旅程。希望你也能像我一样享受使用SQL的过程。
本节课总结
在本节课中,我们一起学习了:
-
关系数据库的基本结构与SQL的用途。
-
编写基础SQL查询语句以提取数据。
-
使用
WHERE子句进行数据过滤,从简单条件到多条件组合。 -
使用
JOIN操作关联多个数据表,以获取更全面的信息。
掌握这些SQL核心技能,为你处理和分析安全相关数据奠定了坚实的基础。
042:课程总结 🎉
在本节课中,我们将对《工具之道:Linux与SQL》课程的核心内容进行回顾与总结。
课程概述
您已经完成了本课程的学习。恭喜您。本课程的重点是计算基础。理解计算基础知识是您转型为安全分析师过程中的一项宝贵技能。
课程内容回顾
上一节我们介绍了SQL查询等具体工具,现在让我们来整体回顾一下您在本课程中学到的知识。
我们首先关注的是操作系统及其与应用程序和硬件的关系。理解您所要保护的系统如何运作,对于有效完成工作至关重要。
这自然将我们引向了Linux操作系统。在安全专业领域工作时,熟悉Linux非常重要。我们首先讨论了它的体系结构和各种发行版。然后,我们使用Linux命令行来执行安全分析师可能遇到的任务。
最后,我们探讨了另一个有用的工具,即使用SQL来查询数据库。
学习成果与展望
完成本课程后,希望您能更好地理解这些计算基础如何支持安全分析师的日常工作。同时也希望您能继续在这个专业项目中学习前进。前方还有许多其他有用且令人兴奋的主题。
再次恭喜您。您完成了又一门课程。掌握技能是值得自豪的事情。请在本项目的学习进程中继续保持。
总结
本节课中,我们一起学习了计算基础、Linux操作系统和SQL数据库查询的核心知识,这些都是安全分析师日常工作的基石。祝贺您取得的进步,并预祝您在后续的学习中再接再厉。
043:课程介绍
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐


所有评论(0)