https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/9c67f58ad0105c39e263ac84e3abedeb_0.png

在本节课中,我们将学习网络安全领域的基础计算知识,包括操作系统、Linux命令行以及SQL查询。这些技能对于安全分析师高效地保护系统、调查事件至关重要。

大家好,欢迎来到这门网络安全基础计算课程。我叫Kim,是一名安全领域的技术项目经理。我从小接触计算机和互联网,但直到发现安全与技术的紧密交织,才将其视为职业方向。

在我的第一份安全工作之前,我曾在一个云应用团队工作,需要定期与安全团队互动。那是我首次接触安全工作,但保护信息并与他人共同实现这一目标的想法让我感到兴奋。因此,我决定考取CISSP认证,这为我在公司带来了新的工作机会,并使我得以转入安全领域。

至此,如果你一直跟随课程学习,应该已经探索了安全领域的多种有用概念,包括安全域和网络。我很高兴能在课程的下一阶段加入你们。我们将循序渐进,以便你能以实用的方式理解这些主题。

本课程的重点是计算基础。理解组织中系统内机器的工作原理,有助于你更高效地履行安全分析师的工作职责。

作为安全分析师,你的部分职责是保护系统免受潜在攻击。你是保护组织数据的第一道防线之一。为了有效地做到这一点,了解你所保护的系统如何运作会很有帮助。

此外,你可能需要调查事件以帮助纠正系统中的错误。熟悉Linux操作系统及其相关命令,并能够通过SQL与组织的数据进行交互,将对此大有裨益。

在本课程中,你将学习操作系统及其与应用程序和硬件的关系。接下来,你将更详细地探索Linux操作系统。然后,你将在安全背景下使用Linux命令行。最后,我们将讨论作为安全分析师,如何使用SQL查询数据库。

我很高兴能与你们一起探索所有这些主题。让我们开始吧。

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/9c67f58ad0105c39e263ac84e3abedeb_2.png

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/9c67f58ad0105c39e263ac84e3abedeb_4.png

本节课中,我们一起学习了网络安全基础计算课程的目标和内容框架。我们了解到,掌握操作系统、Linux和SQL知识对于安全分析师保护系统、调查事件至关重要。在接下来的章节中,我们将深入这些核心工具的具体应用。

044:1_01_welcome-to-week-1

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/7fd04e9077a80f6a0f5310b8391753f1_0.png

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/7fd04e9077a80f6a0f5310b8391753f1_0.png

在本节课中,我们将学习操作系统的基础知识。我们将了解常见的操作系统,探索操作系统的主要功能,并理解操作系统、应用程序和硬件之间的关系。最后,我们将比较图形用户界面和命令行界面。命令行界面将成为你作为安全分析师工作中不可或缺的一部分。

操作系统简介

你每周使用电脑多少次?对一些人来说,答案可能是“非常多”。电脑是功能强大的机器,它们让我们能够完成各种任务,从工作中使用专业应用程序,到向远方的亲人发送电子邮件。

你是否思考过电脑如何实现所有这些功能?答案就在于操作系统。操作系统是管理计算机硬件与软件资源的系统软件,是所有程序运行的基础平台。

上一段我们提出了电脑功能背后的核心问题,本节中我们将正式介绍操作系统。

操作系统的主要功能

操作系统是计算机系统的核心管理者。它的主要功能包括:

以下是操作系统的几个核心功能:

  • 进程管理:操作系统负责创建、调度和终止进程,并管理进程间的通信。

  • 内存管理:操作系统跟踪内存的使用情况,为程序分配和回收内存空间。其核心目标可用公式表示为:有效内存分配 = 避免内存泄漏 + 优化访问速度

  • 文件系统管理:操作系统控制数据的存储、检索和组织方式,管理文件和目录结构。

  • 设备管理:操作系统通过驱动程序与硬件设备(如键盘、鼠标、打印机)进行通信。

  • 用户界面:操作系统提供用户与计算机交互的方式,例如图形界面或命令行。

操作系统、应用程序与硬件的关系

理解了操作系统的功能后,我们来看看它如何与计算机的其他部分协同工作。操作系统、应用程序和硬件之间存在着清晰的层次关系。

它们的关系可以概括为:硬件 是物理基础,操作系统 是管理和控制硬件的软件层,而 应用程序 则在操作系统的支持下运行,为用户提供特定功能。这就像一个三明治结构。

图形用户界面 vs. 命令行界面

操作系统通过用户界面与用户交互。主要有两种类型的用户界面,它们各有特点。

以下是两种主要用户界面的比较:

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/7fd04e9077a80f6a0f5310b8391753f1_2.png

  • 图形用户界面:用户通过视觉元素如图标、窗口和菜单与系统交互,通常使用鼠标点击操作。这种方式直观易学。

  • 命令行界面:用户通过输入文本命令来与系统交互。例如,在Linux中列出当前目录文件的命令是:ls。这种方式虽然学习曲线较陡,但效率高、可编写脚本自动化,是安全分析工作的核心工具。

总结

本节课中,我们一起学习了操作系统的基础知识。我们了解了操作系统的定义及其进程管理、内存管理等核心功能,探讨了操作系统作为中间层连接应用程序与硬件的关系,并比较了图形用户界面和命令行界面的特点。理解这些概念是构建网络安全职业生涯的重要基石。接下来,我们将深入探索命令行界面的具体使用。

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/7fd04e9077a80f6a0f5310b8391753f1_2.png

045:2_02_金姆的计算机之旅

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/61e880b208ee69daedff328958b70816_0.png

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/61e880b208ee69daedff328958b70816_0.png

概述

在本节课程中,我们将跟随谷歌技术项目经理金姆,了解她如何从非技术背景成功转型进入网络安全领域。她的个人经历将为我们揭示,通往网络安全职业的道路是多元且开放的。

大家好,我是金姆。我是谷歌的一名技术项目经理。我目前任职于安全并购团队,负责与谷歌收购的其他公司合作,并协助它们整合到谷歌的环境中。

在进入网络安全乃至科技行业之前,我曾担任过多个不同的职位。我最初在餐厅工作,之后在当地大学为国际学生担任英语辅导老师。在完成多次实习并从大学毕业之后,我获得了进入科技行业的第一个机会。正是在那里,我对科技以及最终对网络安全的兴趣开始萌芽。

核心建议:开放心态与技能迁移

上一部分我们了解了金姆的职业起点,本节中我们来看看她给初学者的核心建议。金姆想告诉所有背景的人,如果你对保护信息、保护他人感兴趣,你完全可以进入网络安全领域。

网络安全领域有众多不同的岗位,而你目前拥有以及过去积累的所有技能,都能在安全领域中找到用武之地。

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/61e880b208ee69daedff328958b70816_2.png

最重要的技能:人际连接

除了技术知识,金姆强调了另一项至关重要的软技能。以下是她最依赖的核心能力:

  • 人际连接能力:我运用最多的技能是与人沟通。除非我能以正确的方式与他们建立联系,否则我将一事无成。这实际上是我最依赖的重要技能。

给新人的关键建议

对于刚进入网络安全领域的新人,金姆有一条关键建议:

  • 保持开放心态:我最初获得的是商科学位,当时我甚至觉得自己不够技术化,无法达到今天的职位。在那之前,我所有的经验要么是餐厅工作,要么是市场营销,或是其他感觉与科技无关的工作。但所有这些经历都帮助并激励我更多地涉足科技领域,并最终进入安全领域。在我意识到之前,那种自我怀疑已经被来自同事的支持和与我共事过的其他人的尊重所取代。

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/61e880b208ee69daedff328958b70816_4.png

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/61e880b208ee69daedff328958b70816_4.png

总结

本节课中,我们一起学习了金姆从非技术岗位转型为谷歌安全专家的历程。她的故事清晰地表明,多元化的背景和软技能同样是网络安全领域的宝贵财富。关键在于保持开放心态,积极建立人际连接,并相信你过去的每一段经历都可能成为未来成功的基石。

046:Linux与SQL》

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/f80cd5919c63753795292fb82cacd219_0.png

P46:操作系统简介

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/f80cd5919c63753795292fb82cacd219_0.png

在本节课中,我们将要学习操作系统的基础知识。操作系统是计算机、智能手机和平板电脑等设备的核心软件。了解操作系统的工作原理对于网络安全专业人员至关重要,因为它是执行安全任务、配置系统和防范威胁的基础。


计算机、智能手机和平板电脑等设备都拥有操作系统。

如果你使用过台式机或笔记本电脑,你可能使用过 Windows 或 Mac OS 操作系统。

智能手机和平板电脑则运行在 Android 和 iOS 这类移动操作系统上。

另一个流行的操作系统是 Linux。Linux 在安全行业中被广泛使用。

作为一名安全专业人员,你很可能会与 Linux 操作系统进行交互。

那么,操作系统究竟是什么?它是计算机硬件与用户之间的接口。

操作系统,通常简称为 OS,负责在使计算机尽可能高效运行的同时,也使其易于使用。“硬件”可能是另一个新术语。

硬件指的是计算机的物理组件。

我们今天每天依赖的 OS 界面,是早期计算机所不具备的。

在 20 世纪 50 年代,早期计算机面临的最大挑战是运行一个计算机程序所需的时间。

当时,计算机无法同时运行多个程序。相反,人们必须等待一个程序运行完毕,然后重新启动计算机并加载新程序。

想象一下,每次需要打开一个新应用程序时都必须开关计算机。完成发送电子邮件这样简单的任务将花费很长时间。自那时起,操作系统已经进化,我们不再需要担心以这种方式浪费时间。


上一节我们回顾了操作系统的历史,本节中我们来看看现代操作系统带来的好处。

得益于操作系统及其发展,今天的计算机运行高效。

它们可以同时运行多个应用程序,并且还能访问打印机、键盘和鼠标等外部设备。

操作系统之所以重要的另一个原因是,它们帮助人类和计算机彼此通信。

计算机使用一种称为二进制的语言进行通信,这种语言由 0 和 1 组成。

操作系统提供了一个接口,以弥合用户与计算机之间的这种通信鸿沟,允许你以复杂的方式与计算机交互。

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/f80cd5919c63753795292fb82cacd219_2.png

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/f80cd5919c63753795292fb82cacd219_2.png


操作系统对于计算机的使用至关重要。同样地,操作系统安全对于计算机的安全也至关重要。

这涉及保护文件、数据访问和用户身份验证,以帮助防范和预防病毒、蠕虫和恶意软件等威胁。

了解操作系统的工作原理对于完成不同的安全相关任务至关重要。

例如,作为一名安全分析师,你可能需要负责通过管理访问权限来配置和维护系统的安全性。

以下是安全分析师可能负责的一些关键任务:

  • 管理和配置防火墙。

  • 设置安全策略。

  • 启用病毒防护。

  • 执行审计、记账和日志记录以检测异常行为。

所有这些任务都需要对操作系统有深入的理解。随着我们继续本课程,我们将更详细地探讨操作系统。


本节课中我们一起学习了操作系统的基本概念、其历史演变、在现代计算中的核心作用,以及它在网络安全领域的重要性。理解操作系统是高效执行安全任务、保护系统免受威胁的基础。在接下来的课程中,我们将深入探索操作系统的更多细节。

047:操作系统内部探秘 🔍

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/23f851f7654dea675277d936442962d0_0.png

在本节课程中,我们将深入探讨操作系统的工作原理。我们将了解从启动计算机到执行一个简单任务(如使用计算器)的完整流程,并理解这些知识对网络安全分析师的重要性。


上一节我们介绍了什么是操作系统。现在,让我们来讨论它们是如何工作的。

当你按下电源按钮时,你正在与计算机硬件进行交互。这个动作会启动计算机并加载操作系统。启动计算机意味着激活一个名为 BIOS 的特殊微芯片。在许多2007年后制造的计算机上,这个芯片已被 UEFI 所取代。BIOS和UEFI都包含启动指令,负责加载一个名为 引导加载程序 的特殊程序。然后,引导加载程序负责启动操作系统。就这样,你的计算机就开机了。

作为安全分析师,理解这些过程对你很有帮助。漏洞可能出现在像启动过程这样的环节中。通常,BIOS不会被防病毒软件扫描,因此它可能容易受到恶意软件感染。


现在你已经了解了如何启动操作系统,让我们看看你和其他用户如何与系统通信以完成任务。

这个过程始于你——用户。为了完成任务,你使用计算机上的应用程序。应用程序 是执行特定任务的程序。当你这样做时,应用程序会将你的请求发送给操作系统。从那里,操作系统解释这个请求,并将其引导至计算机硬件的相应组件。

在之前的视频中,我们了解到硬件由计算机的所有物理组件构成。硬件也会将信息发送回操作系统,操作系统再将其发送回应用程序。

以下是当你想要使用计算机上的计算器时,这个过程如何运作的简单概述:

  • 你使用鼠标点击计算机上的计算器应用程序。

  • 当你输入想要计算的数字时,应用程序与操作系统通信。

  • 你的操作系统随后将计算任务发送给硬件的一个组件——中央处理器CPU

  • 一旦硬件完成了确定最终数字的工作,它会将答案发送回你的操作系统。

  • 然后,答案就可以显示在你的计算器应用程序中。


理解这个过程有助于调查安全事件。安全分析师应该能够追溯这个流程,分析安全事件可能发生的位置。就像机械师需要比普通司机更了解汽车内部工作原理一样,认识操作系统如何工作是安全分析师的重要知识。

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/23f851f7654dea675277d936442962d0_2.png


在本节课中,我们一起学习了计算机的启动过程(从BIOS/UEFI到引导加载程序),以及用户、应用程序、操作系统和硬件(特别是CPU)之间如何协作以完成任务。理解这些内部流程是追踪和分析潜在安全事件的基础。

操作系统基础:第四课:操作系统资源管理

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/c337cfe3de68202e21e7e77289c46191_0.png

在本节课中,我们将要学习操作系统如何管理计算机的资源。我们将了解资源分配的重要性,以及作为安全分析师,理解资源使用情况如何帮助我们识别和解决问题。


上一节我们介绍了操作系统与计算机其他部分的交互。本节中,我们来看看操作系统如何扮演“资源管理者”的角色。

操作系统不仅与其他计算机部件交互,还负责管理系统资源。这是一项需要大量平衡工作的重大任务,旨在确保计算机的所有资源被高效利用。

这类似于“能量”的概念。一个人需要能量来完成不同的任务。有些任务需要更多能量,而另一些则需求较少。例如,跑步比看电视需要更多能量。计算机的操作系统同样需要确保它有足够的“能量”来正确执行特定任务。在计算机上运行杀毒扫描比使用计算器应用程序会消耗更多“能量”。

想象你的计算机是一个管弦乐队。许多不同的乐器,如小提琴、鼓和喇叭,都是乐队的一部分。乐队还有一位指挥来引导音乐的流向。在计算机中,操作系统就是指挥。操作系统处理资源和内存管理,以确保计算机系统有限的能力被用在最需要的地方。

各种程序、任务和进程不断竞争中央处理单元的资源。它们都有各自需要内存、存储和输入/输出带宽的理由。操作系统负责确保每个程序都能分配和释放资源。所有这些都在你的计算机中同时发生,以使系统高效运行。作为用户,这些过程大部分对你来说是隐藏的。例如,你的浏览器任务管理器会列出所有正在处理的任务及其内存和CPU使用情况。


https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/c337cfe3de68202e21e7e77289c46191_2.png

了解系统资源的使用位置对分析师很有帮助。理解资源使用情况可以帮助你响应事件并排查系统中的应用程序问题。例如,如果一台计算机运行缓慢,分析师可能会发现它正在将资源分配给恶意软件。对操作系统工作原理的基本理解,将帮助你更好地理解在本课程后续部分将学到的安全技能。


https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/c337cfe3de68202e21e7e77289c46191_4.png

本节课中,我们一起学习了操作系统作为资源管理者的核心功能。我们了解到,操作系统像指挥一样,协调CPU、内存等资源在各种竞争程序间的分配,以确保系统整体效率。理解资源分配机制是安全分析的基础,能帮助我们识别异常的资源消耗,例如由恶意软件引起的系统性能下降。

049:图形界面与命令行界面

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/6ec522a8f1526a1fa0ade60431c6f58b_0.png

在本节课程中,我们将探讨用户如何与计算机操作系统进行通信。我们将学习两种主要的用户界面:图形用户界面和命令行界面,并了解它们各自的特点、优势以及它们在网络安全工作中的实际应用。

概述:用户与操作系统的通信

上一节我们学习了计算机的内部工作原理。现在,让我们来讨论用户和操作系统之间是如何相互通信的。

你已经了解到,计算机包含操作系统、硬件和应用程序。操作系统负责与硬件通信以执行任务。在本节中,你将学习用户(也就是你)如何与操作系统交互,以便向硬件发送任务。

用户通过一个界面与操作系统进行通信。

用户界面是一个允许用户控制操作系统功能的程序。我们将讨论的两种用户界面是图形用户界面命令行界面

图形用户界面

让我们更详细地介绍这些界面。图形用户界面是一种利用屏幕上的图标来管理计算机上不同任务的用户界面。

大多数操作系统都可以使用图形用户界面。如果你使用过个人电脑或手机,你就已经拥有操作图形用户界面的经验。

以下是大多数图形用户界面通常包含的组件:

  • 一个包含程序组的开始菜单。

  • 一个用于启动程序的任务栏。

  • 一个带有图标和快捷方式的桌面。

所有这些组件都帮助你与操作系统通信以执行任务。除了点击图标,在使用图形用户界面时,你还可以从开始菜单搜索文件或应用程序。你只需要记住程序的图标或名称即可启动应用程序。

命令行界面

现在,让我们来讨论命令行界面。

相比之下,命令行界面是一种基于文本的用户界面,它使用命令与计算机交互。这些命令与操作系统通信,并执行诸如打开程序等任务。

命令行界面的结构与图形用户界面有很大不同。当你使用命令行界面时,你会立刻注意到区别:屏幕上没有图标或图形。命令行界面看起来类似于使用特定文本语言的代码行。

命令行界面比图形用户界面更灵活、更强大。可以这样理解:使用命令行界面就像在杂货店的食材区,你可以用任何食材创造你想吃的任何餐点。这让你对要吃什么拥有很大的控制权和定制能力。

相比之下,使用图形用户界面更像是从餐厅点餐。你只能点菜单上有的东西。如果你既想吃面条又想吃披萨,但你去的第一家餐厅只有披萨,你就得去另一家餐厅点面条。

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/6ec522a8f1526a1fa0ade60431c6f58b_2.png

使用图形用户界面,你一次只能完成一项任务。但命令行界面允许定制,这让你可以同时完成多项任务。

例如,想象你有一个包含数百个不同类型文件的文件夹,而你只需要将其中所有的JPEG文件移动到一个新文件夹中。

试想一下,如果你使用图形用户界面在这个文件夹中找到每一个JPEG文件并将其移动到新文件夹,这个过程将是多么缓慢和繁琐。

另一方面,命令行界面则可以让你简化这个过程,一次性移动所有文件。

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/6ec522a8f1526a1fa0ade60431c6f58b_4.png

两种界面的差异与安全分析师的视角

正如你所见,这两种用户界面存在非常大的差异。

作为一名安全分析师,你的部分工作可能会涉及使用命令行界面,例如在分析日志或对用户进行身份验证和授权时。安全分析师在日常工作中普遍会使用命令行界面。

总结

在本节视频中,我们讨论了两种类型的用户界面。你了解到,由于大多数个人电脑和手机都使用图形用户界面,你已经拥有了使用它的经验。同时,你也初步认识了命令行界面。

在本课程的后续部分,你将学习如何在Linux中使用命令行界面,并了解它对于你作为安全分析师的日常工作有多么重要。你将获得通过命令行进行通信的实践经验。

网络安全职业路径:第四课:埃伦的网络安全之路

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/e7bf28e8ba128ad4c768bb4bf795a9ae_0.png

在本节课中,我们将跟随谷歌安全工程经理埃伦的分享,了解她非传统的网络安全职业路径。她的经历将告诉我们,进入这个领域并不一定需要计算机科学背景,好奇心和学习热情才是关键。

我的名字是埃伦,我是谷歌的一名安全工程经理,专注于谷歌如何使用云。

在我开始接触技术时,网络安全还不是一个独立的领域。我是后来才进入这个领域的。

我的技术生涯始于在一家海报店做零售工作。当时我们需要建立一个网站,而我的脚很疼,非常需要坐下来工作。于是我请朋友教我HTML,这样我就可以坐着工作,让脚上的水泡休息一下。

在海报店工作时,我们的一位顾客在一家初创公司工作,常来给员工照片装裱。他请这位顾客给我的网站提意见,最终他们给了我一个实习机会。

我后来拥有的一个专长是API设计,即设计开发者与机器通信的接口。因此,我得到了一份工作,为安全技术设计一个微型操作系统,并从那里开始学习安全知识。

我认识的从事网络安全的人,尤其是在早期,大多根本没有学位。即使有,也像我一样,是哲学或诗歌之类的学位。

几乎所有人都是通过自己动手实验、与人交流、阅读来自学的。所以我认为,技术背景并非必需

事实上,拥有在现实世界中实践过的背景,有时能让网络安全更容易理解,并帮助你做出更平衡的决策。

在几乎所有领域,你都能找到安全社区。找到他们所在的地方。

寻找本地会议。开始与人交流。

这种方式学习比独自摸索要有趣得多。我发现,大多数人,如果你走上前对他们说:“嘿,你在这方面真的很擅长。你介意我请你喝杯咖啡,然后你教教我吗?”他们几乎总是会答应。

我给没有技术背景的人的建议如下:

以下是具体建议:

  • 不要害怕技术。 技术可能看起来只有拥有计算机科学学位的人才能理解。但这些核心概念和技术是任何人都可以理解的。所以,永远不要让你可能没有技术背景这一点成为障碍。

  • 选择感兴趣的领域并深入钻研。 只要你保持好奇心,只要你发现它有趣,你就能学会相关技术。

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/e7bf28e8ba128ad4c768bb4bf795a9ae_2.png

在本节课中,我们一起学习了埃伦从零售业到谷歌安全经理的独特职业旅程。她的故事强调了好奇心、主动学习和社区参与在网络安全职业发展中的重要性,并鼓励所有背景的学习者勇敢迈出第一步。

051:8_01_wrap-up.en_subtitled

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/378875642c8b86e375b8c971cddb096c_0.png

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/378875642c8b86e375b8c971cddb096c_0.png

概述

在本节课程中,我们一起学习了计算机操作系统的基础知识。这些知识对于网络安全分析师理解其工作环境至关重要。

课程内容回顾

我们成功完成了本节的学习。这是一段收获丰富的学习过程。最棒的是我们共同完成,并涵盖了一些非常实用的主题。

让我们来回顾一下本节的课程内容。

作为一名安全分析师,理解你所使用的系统非常重要。掌握计算机基础知识将帮助你更有效、更高效地完成工作。

在本节中,我们介绍了常见的操作系统。我们还讨论了操作系统的主要功能。重要的是,你学习了操作系统、应用程序和硬件之间的关系。了解它们如何像管弦乐队一样协同工作很有意义。

此外,你学习了图形用户界面(GUI)和命令行界面(CLI)之间的区别。理解命令行界面对你的工作将非常重要。

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/378875642c8b86e375b8c971cddb096c_2.png

总结与展望

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/378875642c8b86e375b8c971cddb096c_2.png

很高兴能与你一同探索操作系统的世界。了解操作系统的工作原理,是迈向安全分析师职位的重要一步。你做得很好。

让我们继续推进这个课程项目。在下一节中,我们将特别聚焦于Linux操作系统。

谷歌网络安全专业证书第四课:《工具之道:Linux与SQL》 - P52:9_01_welcome-to-week-2

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/544e796745a4d0fcc3b7f7a145e95302_0.png

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/544e796745a4d0fcc3b7f7a145e95302_0.png

欢迎回来。我们将探讨另一个重要主题。在之前的内容中,你学习了操作系统和用户界面。你了解了操作系统的工作原理以及计算机中资源如何分配。我们还回顾了几种常见的操作系统。你可能已经有了自己偏爱的操作系统。人们常常会偏爱某一款操作系统。但在安全领域,Linux 被广泛使用。在本节中,你将深入学习 Linux 操作系统及其在日常任务和安全中的应用。

首先,你将了解 Linux 的体系结构。之后,我们将比较现有的不同 Linux 发行版。最后,你将探索 Shell,这是一个关键的 Linux 组件,它允许你与系统进行通信。

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/544e796745a4d0fcc3b7f7a145e95302_2.png

我记得自己初次了解 Linux 操作系统时的情景,现在很高兴能与你一同探索它。

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/544e796745a4d0fcc3b7f7a145e95302_4.png


课程概述

在本节课中,我们将要学习 Linux 操作系统的基础知识,包括其核心架构、不同的发行版本以及用于系统交互的关键工具——Shell。


Linux 操作系统架构 🏗️

上一节我们介绍了操作系统的基本概念,本节中我们来看看 Linux 的具体架构。Linux 架构主要包含以下几个核心层次:

以下是 Linux 系统的主要组成部分:

  1. 内核:这是 Linux 的核心,负责管理硬件资源(如 CPU、内存)和基本系统服务。其作用类似于计算机的“大脑”。

  2. 系统库:为应用程序提供一系列预构建的函数,方便开发者调用内核功能,而无需直接与内核交互。

  3. 系统工具:包含各种实用程序和命令行工具,用于执行文件管理、进程控制等任务。

  4. Shell:作为用户与内核之间的命令行接口,接收用户指令并将其传递给内核执行。

  5. 应用程序:用户直接使用的软件,例如网页浏览器、文本编辑器等。

Linux 发行版比较 🔄

了解了 Linux 的基本架构后,我们来看看它的不同“风味”——即发行版。Linux 发行版是基于 Linux 内核,搭配不同的软件包、库和桌面环境组合而成的完整操作系统。

以下是几种常见的 Linux 发行版:

  • Ubuntu:非常适合初学者,拥有庞大的社区支持和丰富的文档。

  • Debian:以稳定性和大量的软件仓库著称,是许多其他发行版(包括 Ubuntu)的基础。

  • Red Hat Enterprise Linux:一款商业发行版,专注于企业级应用,提供强大的技术支持。

  • Kali Linux:专为网络安全测试和渗透测试而设计,预装了大量的安全工具。

探索 Shell:与 Linux 交互的关键 🐚

最后,我们来深入了解 Shell。Shell 是网络安全专业人员必须掌握的核心工具,它提供了直接、高效控制操作系统的方式。

Shell 本质上是一个命令行解释器。你输入文本命令,Shell 会理解这些命令并指示内核执行相应操作。例如,要列出当前目录的文件,你可以使用 ls 命令。

ls -la

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/544e796745a4d0fcc3b7f7a145e95302_2.png

这个命令会以详细列表形式显示所有文件(包括隐藏文件)。

通过 Shell,你可以管理文件、监控系统进程、配置网络设置以及运行安全脚本,其灵活性和强大功能是图形界面难以比拟的。


https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/544e796745a4d0fcc3b7f7a145e95302_4.png

总结

本节课中,我们一起学习了 Linux 操作系统的基础知识。我们首先探讨了 Linux 的体系结构,包括内核、Shell 等核心组件。接着,我们比较了不同的 Linux 发行版及其适用场景。最后,我们深入了解了 Shell 作为与系统交互的关键工具的重要性。掌握这些基础知识,是你在网络安全领域有效使用 Linux 的第一步。

053:10_02_Linux简介

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/0ac57496bcd5ee4e8d4ee82d8ccc5f69_0.png

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/0ac57496bcd5ee4e8d4ee82d8ccc5f69_0.png

在本节课中,我们将要学习Linux操作系统,了解它的历史、独特之处以及在网络安全领域中的核心应用。Linux是当今安全领域最常用的操作系统之一。

Linux的历史背景

上一节我们提到了Linux的重要性,本节中我们来看看它的起源。Linux是一个开源操作系统,诞生于20世纪90年代初,由两部分组成。

当时有两位不同的人各自进行着改进计算机工程的项目。第一位是Linus Torvalds。当时,Unix操作系统已被广泛使用。他希望改进它,使其开源并让任何人都能使用。他的革命性贡献是引入了Linux内核。我们稍后会学习内核的作用。

大约在同一时间,Richard Stallman开始致力于GNU项目。GNU也是一个基于Unix的操作系统。Stallman与Torvalds有着共同的目标,即创建免费且对所有人开放的软件。

在开发GNU数年后,该软件缺少的关键组件就是内核。两人的创新成果结合在一起,共同构成了今天通常所说的Linux

Linux的独特之处

现在你已经了解了Linux背后的历史,让我们看看是什么让Linux如此独特。

如前所述,Linux是开源的,这意味着任何人都可以访问该操作系统及其源代码。Linux及其附带的许多程序都在GNU通用公共许可证的条款下授权,该许可证允许你自由地使用、共享和修改它们。

得益于Linux的开源理念以及强大的功能集,整个开发者社区都采用了这个操作系统。这些开发者能够在项目上进行协作,共同推动计算技术的发展。

作为一名安全分析师,你会发现Linux被不同的组织所使用。更具体地说,Linux被用于许多安全程序中。

Linux的另一个独特之处在于其开发出的不同发行版或变体。由于社区的广泛贡献,Linux有超过600个发行版。稍后你将了解更多关于发行版的信息。

Linux在初级安全岗位中的应用

最后,让我们看看在初级安全岗位上你将如何使用Linux。

作为一名安全分析师,你将在日常工作中使用许多工具和程序。你可能会检查不同类型的日志来识别系统中发生的情况。例如,在调查问题时,你可能会查看错误日志。

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/0ac57496bcd5ee4e8d4ee82d8ccc5f69_2.png

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/0ac57496bcd5ee4e8d4ee82d8ccc5f69_2.png

你将使用Linux的另一个地方是验证身份与访问管理系统中的访问权限和授权。在安全领域,管理访问权限是确保系统安全的关键。我们稍后将更深入地探讨访问和授权。

最后,作为一名分析师,你可能会发现自己在使用为特定任务设计的发行版。例如,你可能使用一个包含数字取证工具的发行版来调查事件警报中发生了什么。你也可能使用一个用于渗透测试和攻击性安全的发行版来寻找系统中的漏洞。

发行版的创建是为了满足其用户的需求。

总结

本节课中我们一起学习了Linux操作系统的历史、其开源和社区驱动的特性,以及它在网络安全工作中的多种应用场景,包括日志分析、访问管理和使用专用发行版进行取证或渗透测试。掌握Linux将是你安全领域一项非常有用的技能。

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/0ac57496bcd5ee4e8d4ee82d8ccc5f69_4.png

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/0ac57496bcd5ee4e8d4ee82d8ccc5f69_4.png

054:11_03_网络安全领域的成长与学习

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/b0880a0cf3816aeb29903337b56effa5_0.png

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/b0880a0cf3816aeb29903337b56effa5_0.png

在本节课中,我们将跟随谷歌云的首席信息安全官Phil,了解在快速变化的网络安全领域如何持续学习和成长。我们将探讨从零开始构建知识体系的方法,并理解终身学习在这一行业中的核心重要性。

大家好,我是Phil。我是谷歌云的首席信息安全官,我的工作很大一部分当然与网络安全相关。

在网络安全领域,你必须持续学习,必须紧跟最新发展。根本原因在于技术、商业以及数字生活世界总是在不断变化。你今天使用的在线服务,很可能与仅仅12个月前就已大不相同。

在90年代中期,我参与了世界上最早的网上银行系统之一的工作。本质上,当时我们是在自己构建和编写所有的安全措施。我记得曾参与开发最早的网页浏览器、最早的网页服务器,以及互联网上最早的加密实现。这甚至是在谷歌公司成立之前,处于互联网的萌芽期。我们实际上是在一边摸索、一边构建、一边学习。

当你初次进入网络安全领域时,重要的是不要被其广度吓倒。这是一个非常广阔的领域。我们所有人都曾从你今天所处的位置起步,都必须在某个时间点开始学习。我曾经不懂Linux,不懂如何编程,也不懂其他操作系统的各个部分。我必须一步步学习所有这些是如何运作的,并随着时间的推移逐渐积累起这些知识。

即使是现在,我偶尔也需要查阅资料,因为我无法一次性记住所有东西,这完全没问题。当你面对一个新情境时,总会对是否能足够快地学会它感到一定程度的焦虑。通常,随着经验的积累,你会逐渐确信自己能够做到。但同样重要的是要记住,你不必一次性学会所有东西。

大多数时候,你只需在过程的初始阶段学到足够有价值的知识,然后边做边学。你可以从编写几行简单的代码开始,或者阅读他人的代码并尝试理解其功能,然后稍作修改,逐步深入。建立起这个知识基础,能赋予你学习其他事物的能力。我认为,许多事情都将由此生发。


总结

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/b0880a0cf3816aeb29903337b56effa5_2.png

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/b0880a0cf3816aeb29903337b56effa5_4.png

本节课中,我们一起学习了网络安全专家Phil分享的行业成长经验。我们认识到,网络安全是一个需要持续学习知识迭代的领域,面对庞大的知识体系,关键在于建立基础循序渐进。初学者应从简单的实践开始,如编写基础代码或分析现有代码,逐步构建自己的知识框架,并接纳学习过程中查阅资料和阶段性掌握知识的常态。

055:Linux架构解析

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/ca75bfcd8b66f730694f8b041e5f126d_0.png

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/ca75bfcd8b66f730694f8b041e5f126d_0.png

在本节课程中,我们将学习Linux操作系统的核心架构。我们将逐一解析构成Linux系统的各个组件,了解它们如何协同工作,从而帮助你建立对Linux系统更深入的理解。

架构概述:从建筑到操作系统

让我从一个看似与安全无关的快速问题开始。你是否有最喜欢的建筑?它的哪个建筑特点最令你印象深刻?是窗户,还是墙体的结构?就像建筑物一样,操作系统也拥有自己的架构,并由相互协作的独立组件构成一个整体。

在本视频中,我们将探讨构成Linux系统的所有组件。

Linux架构的六大组件

Linux的组件包括:用户应用程序Shell文件系统层次标准内核以及硬件。别担心,我们将逐一详细讲解这些组件。

第一组件:用户

用户是与计算机进行交互的人。在Linux中,你是操作系统架构中的第一个元素。你负责发起操作系统将要执行的任务或命令。

Linux是一个多用户系统。这意味着多个用户可以同时使用系统的资源。

第二组件:应用程序

系统架构的第二个元素是应用程序。应用程序是执行特定任务的程序,例如文字处理器或计算器。你可能会听到“应用程序”和“程序”这两个词互换使用。

例如,我们稍后将深入学习的一个流行的Linux应用程序是Nano。Nano是一个文本编辑器。这个简单的应用程序可以帮助你在屏幕上记录笔记。

Linux应用程序通常通过包管理器进行分发。我们将在后续课程中了解更多关于这个过程的内容。

第三组件:Shell

Linux架构中的下一个组件是Shell。这是一个重要的元素,因为它是你与系统通信的方式。

Shell是一个命令行解释器。它处理命令并输出结果。这听起来可能很熟悉。之前,我们学习了两种类型的用户界面:图形用户界面命令行界面。你可以将Shell视为一个命令行界面。

第四组件:文件系统层次标准

Linux操作系统架构的另一个元素是文件系统层次标准。FHS是Linux操作系统中负责组织数据的组件。

理解FHS的一个简单方法是将其视为一个数据文件柜。FHS是数据在系统中存储的方式。它是一种组织数据的方法,以便在系统访问数据时能够找到它们。

第五组件:内核

这引出了我们的下一个组件:内核。内核是Linux操作系统的一个组件,负责管理进程内存

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/ca75bfcd8b66f730694f8b041e5f126d_2.png

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/ca75bfcd8b66f730694f8b041e5f126d_2.png

内核与硬件通信,以执行Shell发送的命令。内核使用驱动程序来使应用程序能够执行任务。Linux内核有助于确保系统更有效地分配资源,并使系统运行得更快。

第六组件:硬件

最后,架构的最后一个组件是硬件。硬件指的是计算机的物理组件。你可以将其与可以下载到系统中的软件应用程序进行比较。

你计算机中的硬件包括CPU鼠标键盘等。

课程总结

恭喜你,我们现在已经涵盖了Linux的架构。理解这些组件将帮助你越来越熟悉Linux。

😊

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/ca75bfcd8b66f730694f8b041e5f126d_4.png

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/ca75bfcd8b66f730694f8b041e5f126d_4.png

056:Linux发行版详解 🐧

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/7f9e907f5e249afe43f6931c2c50a6d4_0.png

在本节课中,我们将深入学习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。

安全分析师常用的发行版 🛡️

上一节我们介绍了发行版的基本概念和构成,本节中我们来看看安全分析师最常用的一些发行版。对这些发行版了解得越深入,你的工作就会越轻松。

以下是几个关键的安全相关发行版:

  • Kali Linux专门为渗透测试和数字取证设计。它预装了数百种安全工具,是安全专业人士的首选。

  • Ubuntu基于Debian,以用户友好和社区支持强大著称。它拥有庞大的软件库,适合作为通用操作系统,也常被用作安全工作的基础平台。

  • Red Hat Enterprise Linux (RHEL) / CentOS在企业环境中极为流行,以稳定性和安全性著称。RHEL是商业版本,而CentOS(社区企业操作系统)是其免费的开源克隆版,常用于服务器和安全应用。

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/7f9e907f5e249afe43f6931c2c50a6d4_2.png

总结 📝

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/7f9e907f5e249afe43f6931c2c50a6d4_4.png

本节课中我们一起学习了Linux发行版的核心知识。我们了解到Linux发行版是包含内核、工具和包管理系统的不同操作系统版本,其开源特性带来了高度的可定制性。通过车辆类比,我们理解了不同发行版各有侧重。最后,我们认识了Kali Linux、Ubuntu和RHEL/CentOS等安全分析师常用的发行版,理解它们的特点有助于我们根据任务需求选择合适的工具环境。

057:14_02_kali-linux-tm.en_subtitled

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/5ca26ae04c611ff72de3169bbd799ed5_0.png

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/5ca26ae04c611ff72de3169bbd799ed5_0.png

在本节课程中,我们将介绍一个在安全领域广泛使用的Linux发行版——Kali Linux。我们将探讨它的起源、设计目的以及它为安全专业人员提供的核心工具。

🐧 Kali Linux简介

Kali Linux是Offensive Security公司的注册商标,它基于Debian系统开发。这个开源发行版是专门为渗透测试和数字取证而设计的。

💻 使用建议:虚拟机环境

Kali Linux应运行在虚拟机中。这可以防止因工具使用不当而对你的主系统造成损害。使用虚拟机的另一个好处是,你可以随时将系统状态回滚到之前的快照,这为学习和测试提供了极大的便利。

🔍 Kali Linux在渗透测试中的应用

随着安全专业人员职业发展,部分人会专攻渗透测试领域。渗透测试是一种模拟攻击,旨在帮助识别系统、网络、网站、应用程序和流程中的漏洞。Kali Linux内置了大量在渗透测试中有用的工具。

以下是几个核心工具的例子:

  • Metasploit:用于发现并利用计算机系统中的漏洞。

  • Burp Suite:用于测试Web应用程序弱点的工具。

  • John the Ripper:一款用于密码破解的工具。

🕵️ Kali Linux在数字取证中的应用

作为一名安全分析师,你的工作可能涉及数字取证。数字取证是收集和分析数据以确定攻击发生后情况的实践。例如,你可能需要调查与网络活动相关的数据。

Kali Linux对于从事数字取证工作的安全专业人员同样非常有用,它包含了大量可用于此目的的工具。

以下是几个相关工具的例子:

  • Tcpdump:一个命令行数据包分析器,用于捕获网络流量。

    tcpdump -i eth0
    
  • Wireshark:安全领域常用的工具,它拥有图形用户界面,可用于分析实时和已捕获的网络流量。

  • Autopsy:一个用于分析硬盘驱动器和智能手机的取证工具。

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/5ca26ae04c611ff72de3169bbd799ed5_2.png

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/5ca26ae04c611ff72de3169bbd799ed5_2.png

📚 本节总结

以上仅仅是Kali Linux所包含工具的几个例子。这个发行版拥有许多用于进行渗透测试和数字取证的强大工具。

我们已经探讨了Kali Linux为何是安全领域一个重要且广泛使用的发行版。当然,安全专业人员也会使用其他发行版。在接下来的内容中,我们将继续探索更多相关的Linux发行版。

058:Linux与SQL

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/863ad09c5d6dc0ba969733fcce01b4d7_0.png

概述

在本节课中,我们将要学习Linux操作系统中的一个核心组件——Shell。我们将了解Shell的定义、功能以及它如何作为用户与操作系统之间的桥梁,帮助安全分析师执行各种任务。


Shell简介

上一节我们介绍了Linux操作系统的整体架构,本节中我们来看看其中的一个关键部分:Shell。

Shell是命令行解释器。这意味着它帮助用户通过命令行与操作系统进行通信。之前我们讨论过命令行界面,Shell本质上就是这个界面。Shell为用户提供了与操作系统交互的命令行界面。为了告诉操作系统要做什么,用户需要在这个界面中输入命令。一个命令就是一条指示计算机执行某项操作的指令。Shell与内核通信以执行这些命令。

之前我们讨论了操作系统如何帮助人类和计算机相互交流。Shell是操作系统中允许你做到这一点的部分。可以把它想象成你和你的系统之间一个非常有用的语言翻译。由于你不会说计算机语言或二进制,你无法直接与你的系统沟通。这就是Shell发挥作用的地方。

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/863ad09c5d6dc0ba969733fcce01b4d7_0.png

Shell的功能

你的操作系统在大部分工作中并不需要Shell,但它是你与系统功能之间的一个接口。它允许你执行数学运算、运行测试以及执行应用程序。更重要的是,它允许你组合这些操作,并将应用程序相互连接,以执行复杂且自动化的任务。

以下是Shell的一些核心功能:

  • 执行用户输入的命令。

  • 作为用户与操作系统内核之间的翻译器。

  • 支持脚本编写,以自动化重复性任务。

  • 允许通过管道和重定向连接多个命令和应用程序。

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/863ad09c5d6dc0ba969733fcce01b4d7_2.png

Shell的类型

正如存在许多Linux发行版一样,也存在许多不同类型的Shell。在本课程中,我们将主要关注bash shell。Bash是“Bourne Again SHell”的缩写,是大多数Linux系统的默认Shell,功能强大且应用广泛。


总结

本节课中我们一起学习了Linux Shell的基本概念。我们了解到Shell是一个命令行解释器,是用户与操作系统内核交互的接口。它接收用户的命令,将其翻译给内核执行,并将结果返回给用户。Shell对于执行计算、运行程序以及通过组合命令实现任务自动化至关重要。在后续课程中,我们将深入探索bash shell的具体使用方法。

059:Shell中的输入与输出

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/e0a0ba4742d3793ff7ecc4304de82870_0.png

在本节中,我们将学习如何与Shell进行通信,理解标准输入、标准输出和标准错误这三个核心概念。掌握这些是有效使用命令行工具的基础。

概述

与计算机交互就像与朋友对话。你提出问题(输入),朋友给出回答(输出),或者表示无法回答(错误)。在Shell中,这个过程通过标准输入、标准输出和标准错误来实现。本节我们将逐一探讨它们。

标准输入:向Shell发出指令

上一节我们介绍了Shell的基本概念,本节中我们来看看如何向它发送指令。标准输入是指操作系统通过命令行接收的信息。这就像在对话中向朋友提问。

信息从你的键盘输入到Shell。如果Shell能够理解你的请求,它会向内核申请执行相关任务所需的资源。

以下是一个简单的例子,我们使用 echo 命令。echo 是一个Linux命令,用于输出指定的文本字符串。字符串数据是由有序字符序列组成的数据。

在我们的例子中,我们将让它输出字符串“Hello”。因此,作为输入,我们将在Shell中键入:

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/e0a0ba4742d3793ff7ecc4304de82870_2.png

echo Hello

标准输出:接收系统的回应

在按下回车键执行上述命令之前,让我们先详细讨论输出的概念。标准输出是操作系统通过Shell返回的信息。

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/e0a0ba4742d3793ff7ecc4304de82870_4.png

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/e0a0ba4742d3793ff7ecc4304de82870_5.png

就像朋友回答你的问题一样,输出是计算机对你输入命令的响应。输出就是你接收到的结果。

现在,让我们继续之前的例子,按下回车键将 echo Hello 这个输入发送给操作系统。

$ echo Hello
Hello

立即,Shell返回了“Hello”这个输出。

标准错误:当系统无法回应时

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/e0a0ba4742d3793ff7ecc4304de82870_7.png

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/e0a0ba4742d3793ff7ecc4304de82870_8.png

最后,标准错误包含操作系统通过Shell返回的错误消息。就像你的朋友可能表示无法回答问题一样,如果系统无法响应你的命令,它会返回一条错误消息。

有时,这可能是因为我们拼错了命令,或者系统不知道如何响应该命令。其他时候,可能是因为我们没有执行命令的适当权限。

我们将探索另一个演示标准错误的例子。让我们在Shell中输入 eccho Hello。请注意,我故意将 echo 拼写为 eccho

$ eccho Hello
bash: eccho: command not found

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/e0a0ba4742d3793ff7ecc4304de82870_10.png

当我们按下回车键时,出现了一条错误消息,指出找不到该命令。

总结

本节课中我们一起学习了与Shell通信的基础知识。与Shell的通信只能通过以下三种方式进行:

  • 输入:系统接收命令。

  • 输出:系统响应命令并产生结果。

  • 错误:系统不知道如何响应,导致错误。

随着我们后续探索对安全专业人员有用的命令,你会对这些概念更加熟悉。

060:17_01_wrap-up.en_subtitled

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/2a62d4897d30ad1503e4036f91b6df64_0.png

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/2a62d4897d30ad1503e4036f91b6df64_0.png

概述 📋

在本节课程中,我们完成了对Linux操作系统基础知识的探索。现在,让我们一起来回顾一下本节的核心内容。

本节内容回顾 🔄

我们已经到达本节的结尾。出色的工作。让我们回顾一下你刚刚完成的学习内容。

在本节中,你学习了关于Linux操作系统的知识。

Linux架构与发行版 🏗️

在探索Linux的不同发行版时,我们研究了Linux的架构。

我们讨论了在安全领域中最广泛使用的一些发行版。你接触到了Kali Linux、Ubuntu、Parrot、Red Hat和SUSE发行版。

Shell及其角色 🐚

最后,你学习了Shell及其作为用户与操作系统之间解释器的角色。Shell的核心功能可以用以下概念描述:

  • 解释器:接收用户命令,将其翻译成系统内核能理解的指令。

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/2a62d4897d30ad1503e4036f91b6df64_2.png

总结与展望 🎯

恭喜你。你做得很好。我们还有更多有用的主题即将到来。

在课程的下一部分,你将学习作为安全分析师工作时,在Shell中使用的具体命令。

让我们继续前进。

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/2a62d4897d30ad1503e4036f91b6df64_4.png

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/2a62d4897d30ad1503e4036f91b6df64_4.png

061:18_01_welcome-to-week-3

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/5e5818f8f930017d692a635559367589_0.png

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/5e5818f8f930017d692a635559367589_0.png

概述

在本节课中,我们将要学习如何通过命令行与Linux操作系统进行交互。你将掌握在Shell中输入命令的方法,并了解一些作为安全分析师将要用到的核心Linux命令。具体内容包括文件系统的导航与管理,以及用户的认证与授权。最后,我们还会介绍如何获取资源以支持你学习更多新的Linux命令。

学习新沟通方式的感受

学习一种新的沟通方式会令人兴奋。你可能学习过一门新语言,并记得这种感觉。或许我们许多人都能体会到小孩子在扩展词汇量时的这种兴奋感。包括我在内的其他人,则记得当我们第一次使用一门专门的语言与计算机交流时,那种奇妙的感觉。

上一节我们介绍了Linux的基础,本节中我们来看看如何通过其Shell与操作系统进行更深入的交流。

使用命令行与操作系统交互

你将利用命令行与操作系统进行通信。你将学习如何在Shell中输入命令,并了解一些作为安全分析师将要用到的核心Linux命令。

以下是本节将重点学习的两个核心领域:

  • 文件系统导航与管理:你将学习如何浏览和操作Linux文件系统中的文件和目录。

  • 用户认证与授权:这意味着你将能够使用命令行在系统中添加和删除用户,并控制他们能访问哪些资源。

持续学习与资源获取

最后,学习永无止境,因此我们将介绍如何获取资源来支持你学习新的Linux命令。

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/5e5818f8f930017d692a635559367589_2.png

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/5e5818f8f930017d692a635559367589_2.png

个人经验分享

我记得当我第一次了解命令行时,对其提供的强大功能感到震惊。我不再需要通过点击多个屏幕来完成工作。尽管需要一些练习和时间来适应,但它一直是我手中最重要的工具之一。

总结

本节课中,我们一起学习了如何通过命令行与Linux系统交互,涵盖了文件管理、用户权限等核心操作。完成本节后,你将获得在使用Linux命令进行安全分析工作这一重要领域的实践经验。

062:19_02_linux-commands-via-the-bash-shell

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/e1217c8b5f4e6728419441c85aff4da4_0.png

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/e1217c8b8b5f4e6728419441c85aff4da4_0.png

在本节课中,我们将要学习如何通过Bash shell与Linux操作系统进行通信的基础知识。掌握Linux命令是每位安全专业人员必备的核心技能。我们将从命令和参数的基本概念开始,为后续学习具体命令打下基础。

上一节我们介绍了Linux的架构和Shell的作用,本节中我们来看看如何通过Bash shell输入命令与系统交互。

命令行的重要性

能够使用Linux命令是所有安全专业人员的基础技能。作为一名安全分析师,您需要处理服务器日志,并且需要知道如何在没有图形用户界面的情况下远程导航、管理和分析文件。此外,您还需要知道如何在组访问期间验证配置的用户,以及授予授权和设置文件权限。这意味着,培养命令行技能对于您作为安全分析师的工作至关重要。

认识Bash Shell

当我们学习Linux架构时,我们了解到Shell是操作系统的主要组件之一。我们也了解到存在不同的Shell。在本节中,我们将使用Bash。Bash是大多数Linux发行版中的默认Shell。您将在本节中学到的主要Linux命令在大多数Shell中都是通用的。

命令与参数基础

现在您知道了将要使用的Shell,让我们深入了解如何在Bash中编写命令。正如我们在上一节中讨论的,与操作系统通信就像一场对话。您输入命令,操作系统则用命令的答案来回应。

一个命令是告诉计算机执行某项操作的指令。我们将在Bash中尝试一个命令。请注意光标前的美元符号。这是提示您输入新命令的提示符。

有些命令可能告诉计算机查找某些内容,例如特定文件。

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/e1217c8b5f4e6728419441c85aff4da4_2.png

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/e1217c8b8b5f4e6728419441c85aff4da4_2.png

其他命令可能告诉它启动一个程序,或者输出特定的文本字符串。在上一节中,当我们讨论输入和输出时,我们探讨了echo命令是如何做到这一点的。让我们再次输入echo命令。

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/e1217c8b5f4e6728419441c85aff4da4_4.png

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/e1217c8b8b5f4e6728419441c85aff4da4_4.png

您可能注意到,我们刚刚输入的命令并不完整。如果我们想使用echo命令输出特定的文本字符串,我们需要指定该文本字符串是什么。这就是参数的作用。

参数是命令所需的特定信息。有些命令接受多个参数。现在,让我们用一个参数来完成echo命令。

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/e1217c8b5f4e6728419441c85aff4da4_6.png

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/e1217c8b8b5f4e6728419441c85aff4da4_6.png

我们正在学习一些相当技术性的东西,那么让我们输出“you are doing great”这句话。我们将添加这个参数,然后按回车键获取输出。

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/e1217c8b5f4e6728419441c85aff4da4_8.png

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/e1217c8b8b5f4e6728419441c85aff4da4_8.png

在这个例子中,我们的参数是一个文本字符串。参数也可以提供其他类型的信息。

在Linux中,非常重要的一点是,所有命令和参数都是区分大小写的。这包括文件和目录名。在您作为安全分析师学习如何在日常任务中使用Linux时,请牢记这一点。

总结

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/e1217c8b5f4e6728419441c85aff4da4_10.png

本节课中我们一起学习了通过Bash shell与Linux系统交互的基础。我们了解了命令行对安全分析师工作的重要性,认识了Bash作为默认Shell的角色,并掌握了命令和参数的基本概念,特别是区分大小写的特性。现在我们已经掌握了通过Shell输入Linux命令和参数的基础知识,为学习具体命令做好了准备。

063:核心导航与文件读取命令

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/1f8a3d6b031a8d0e7be7a988dff3c252_0.png

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/1f8a3d6b031a8d0e7be7a988dff3c252_0.png

欢迎回来。希望你在学习如何与Linux操作系统沟通方面收获颇丰。

在我们继续探索Linux命令行的旅程中,本节将重点学习如何在Linux文件系统中导航。现在,请想象一棵树。你首先注意到树的哪个部分?是树干还是树枝?这些部分确实引人注目,但它的树根呢?一棵树的一切都始于树根。当我们思考Linux文件系统时,情况也类似。

上一节我们介绍了Linux架构的组成部分。文件系统层次结构标准是Linux操作系统的一个组件,用于组织数据。这个文件系统是Linux中非常重要的一部分,因为我们在Linux中所做的一切,在系统的某个目录中都被视为一个文件。

FHS是一个层次化系统。就像一棵树一样,所有内容都从根目录生长和分支出来。根目录是Linux中的最高级别目录,用一个正斜杠 / 表示。子目录从根目录分支出来。这些子目录会进一步分支,离根目录越来越远。

在描述Linux的目录结构时,当沿着这些分支回溯到根目录时,会使用斜杠。例如,路径 /home/anna/ 中,第一个斜杠表示根目录。然后它分支到 home 子目录。另一个斜杠表示它再次分支,这次是分支到位于 home 内的 anna 子目录。

从事安全工作时,学习导航文件系统以定位和分析日志至关重要。你将分析这些日志文件,以了解应用程序使用情况和身份验证情况。

有了这些背景知识,我们现在可以学习用于导航文件系统的常用命令了。

以下是三个核心导航命令:

  • pwd:将当前工作目录打印到屏幕上。使用此命令时,输出会告诉你当前位于哪个目录。

  • ls:显示当前工作目录中的文件和目录名称。

  • cd:在目录之间导航。当你想更改目录时,就会使用这个命令。

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/1f8a3d6b031a8d0e7be7a988dff3c252_2.png

让我们在Bash中使用这些命令。首先,我们输入命令 pwd 以显示当前位置,然后按回车键。输出是 analyst 目录的路径,这是我们当前的工作目录。

接下来,我们输入 ls 以显示 analyst 目录内的文件和目录。输出是四个目录的名称:logsold_reportsprojectsreports,以及一个名为 updates.txt 的文件。

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/1f8a3d6b031a8d0e7be7a988dff3c252_2.png

假设我们现在想进入 logs 目录以检查是否存在未授权访问。我们将输入 cd logs 来更改目录。cd 命令不会在屏幕上产生任何输出。但如果我们再次输入 pwd,其输出会显示当前工作目录是 logs,它是 analyst 目录的一个子目录。

作为一名安全分析师,你还需要知道如何在Linux中读取文件内容。例如,你可能需要读取包含配置设置的文件以识别潜在漏洞,或者在调查未授权访问时查看用户访问报告。

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/1f8a3d6b031a8d0e7be7a988dff3c252_4.png

在读取文件内容时,有一些命令会对你有所帮助。

以下是两个核心文件读取命令:

  • cat:显示文件的全部内容。这个命令很有用,但有时你并不想查看一个大文件的全部内容。

  • head:在这种情况下,你可以使用 head 命令。它默认只显示文件的开头10行。

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/1f8a3d6b031a8d0e7be7a988dff3c252_4.png

让我们试试这些命令。假设我们想读取 access.log.txt 文件的内容,并且我们已经位于该文件所在的工作目录中。首先,我们输入 cat 命令,然后跟上文件名 access.log.txt

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/1f8a3d6b031a8d0e7be7a988dff3c252_6.png

Bash返回了这个文件的完整内容。让我们将其与 head 命令进行比较。当我们输入 head 命令并跟上文件名时,只显示该文件的前10行。

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/1f8a3d6b031a8d0e7be7a988dff3c252_8.png

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/1f8a3d6b031a8d0e7be7a988dff3c252_6.png

本节内容非常充实,而这仅仅是个开始。很高兴你学习了安全分析师如何使用基本命令来导航系统。接下来,我们将探索如何管理系统。😊

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/1f8a3d6b031a8d0e7be7a988dff3c252_10.png

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/1f8a3d6b031a8d0e7be7a988dff3c252_8.png

总结

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/1f8a3d6b031a8d0e7be7a988dff3c252_10.png

在本节课中,我们一起学习了Linux文件系统导航和文件内容读取的核心命令。我们首先了解了Linux文件系统层次结构标准,它像一棵树一样从根目录 / 开始组织。然后,我们实践了三个导航命令:pwd(查看当前位置)、ls(列出当前目录内容)和 cd(切换目录)。最后,我们学习了两个读取文件的命令:cat(显示文件全部内容)和 head(显示文件开头部分)。掌握这些命令是进行日志分析、配置检查和系统管理的基础。

064:在Linux中查找所需内容 🔍

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/33a0ef1f9e93e9f4912f1763b9752f3d_0.png

在本节课中,我们将学习如何在Linux文件系统中查找所需的信息。作为安全分析师,过滤信息是解决复杂问题的关键技能。我们将重点介绍两个强大的工具:grep命令和管道(|)操作符,它们能帮助您高效地搜索和筛选数据。

使用 grep 命令进行搜索

上一节我们介绍了pwdlscd等基本导航命令。本节中,我们来看看如何使用grep命令在文件中搜索特定字符串。

grep命令用于搜索指定文件,并返回包含指定字符串的所有行。其基本语法是一个命令后跟两个参数。

以下是grep命令的基本语法:

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/33a0ef1f9e93e9f4912f1763b9752f3d_2.png

grep [搜索字符串] [文件名]
  • 第一个参数是您要搜索的字符串。

  • 第二个参数是您要搜索的文件名。

例如,假设我们有一个名为updates.txt的文件,我们需要在其中查找所有包含单词“OS”的行。如果文件很大,人工逐行扫描将非常耗时。我们可以使用以下命令:

grep OS updates.txt

执行此命令后,Bash将返回updates.txt文件中所有包含“OS”的行。

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/33a0ef1f9e93e9f4912f1763b9752f3d_4.png

使用管道进行过滤

了解了如何在单个文件中搜索后,我们来看看如何将多个命令组合起来,对命令的输出结果进行过滤。这就需要用到管道。

管道命令(|)将一个命令的标准输出作为另一个命令的标准输入进行进一步处理。它由竖线字符(|)表示,可以想象成一根物理管道:数据从一端进入,经过处理,从另一端流出。

在过滤上下文中,grep命令可以接在管道之后,用于筛选前一个命令的输出。

例如,以下命令组合:

ls /home/reports | grep users
  • 第一部分 ls /home/reports 指示操作系统列出reports子目录中的所有文件和目录。

  • 管道符 | 将这个列表输出传递给下一个命令,而不是直接显示在屏幕上。

  • 第二部分 grep users 则在接收到的列表(即reports目录的内容)中搜索包含字符串“users”的项目。

最终,该命令将只返回reports目录中名称包含“users”的文件和目录。

实践示例

为了更好地理解过滤的工作原理,让我们在Bash中探索一个例子。

首先,我们输出reports目录中的所有内容。如果我们已在该目录中,只需输入ls。但假设我们不在,则需要指定路径:

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/33a0ef1f9e93e9f4912f1763b9752f3d_6.png

ls /home/reports

按回车后,输出显示reports目录中有七个文件。

现在,我们只想返回包含单词“users”的文件。我们将结合使用ls命令、管道和grep命令:

ls /home/reports | grep users

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/33a0ef1f9e93e9f4912f1763b9752f3d_8.png

如输出所示,Linux现在只返回包含“users”字符串的文件。不包含此字符串的两个文件不再出现。

总结

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/33a0ef1f9e93e9f4912f1763b9752f3d_10.png

本节课中我们一起学习了在Linux中进行信息过滤的两种核心方法。您掌握了使用 grep 命令在文件中直接搜索特定字符串,以及通过 管道(| 将一个命令的输出作为另一个命令(如grep)的输入进行链式处理和筛选。这些技能是安全分析师高效处理日志、配置文件和各种系统数据的基础。接下来,让我们继续探索Linux命令行的更多功能。

065:创建与修改目录和文件 📁

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/6be9333a81922002932ea3e8a2b52f32_0.png

在本节课中,我们将学习如何在Linux系统中创建、修改、删除、移动和复制目录与文件。这些是组织和管理数据的基础技能,对于网络安全工作至关重要。


上一节我们讨论了目录导航,本节中我们来看看如何构建和修改目录结构。

让我们创建一些“分支”。这是什么意思呢?在之前的视频中,我们讨论了根目录以及其他子目录如何从根目录分支出来。让我们再次将文件目录系统想象成一棵树。子目录就是树的枝干。它们都从同一个根连接,但可以生长成一个复杂的结构。在本视频中,我们将创建目录和文件,并学习如何修改它们。

在安全领域处理数据时,组织是关键。如果我们知道信息的位置,就更容易发现问题并确保信息安全。


管理目录和文件的基本命令

以下是用于管理目录和文件的一些基本Linux命令。

首先,我们来看创建和删除目录的命令:

  • mkdir 命令用于创建新目录。

  • rmdir 命令用于移除或删除目录。这个命令的一个有用特性是它内置了警告功能,当目录非空时会提示你,这可以防止你意外删除文件。

接下来,是用于创建和删除文件的命令:

  • touch 命令用于创建新文件。

  • rm 命令用于移除或删除文件。

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/6be9333a81922002932ea3e8a2b52f32_2.png

最后,是用于复制和移动文件或目录的命令:

  • 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 后的第一个参数标识要移动的文件。第二个参数指示移动的目标位置。

mv email_policy.txt ../drafts/

如果我们切换到 drafts 目录并显示其内容,会注意到 email_policy.txt 文件已被移动到此目录。我们切换回 reports 目录,显示文件内容确认 email_policy 已不在那里。

还有一件事。vulnerabilities.txt 是一个我们希望保留在 reports 目录中的文件,但由于它影响一个即将进行的项目,我们也想将其复制到 projects 目录中。由于我们已经在包含此文件的目录中,我们将使用 cp 命令将其复制到 projects 目录。

cp vulnerabilities.txt ../projects/

请注意,第一个参数指示要复制哪个文件,第二个参数提供要复制到的目录路径。当我们按下回车键时,这会将 vulnerabilities.txt 文件复制到 projects 目录,同时将原始文件保留在 reports 中。


使用文件编辑器

除了使用命令,你还可以使用应用程序来帮助你编辑文件。作为安全分析师,文件编辑器对于日常任务(如编写或编辑报告)通常是必需的。一个流行的文件编辑器是 Nano,它非常适合初学者。你可以通过 nano 命令访问此工具。

让我们一起来熟悉一下 Nano。我们将为新的草稿报告 os_patches.txt 添加一个标题。首先,我们切换到包含该文件的目录。然后,我们输入 nano,后跟要编辑的文件名 os_patches.txt。这将打开Nano文件编辑器并载入该文件。

现在,我们只需在编辑器中键入标题“OS Patches”。在返回命令行之前,我们需要保存它。为此,我们按 Ctrl + O,然后按回车键以当前文件名保存。接着,要退出,我们按 Ctrl + X


https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/6be9333a81922002932ea3e8a2b52f32_4.png

总结

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/6be9333a81922002932ea3e8a2b52f32_6.png

本节课中我们一起学习了从创建和删除目录及文件,到复制、移动它们,以及最后使用Nano编辑文件。你现在已经很好地掌握了学习Linux命令的道路。

066:文件权限与所有权

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/22ef69f8c6f94f8896923c2d863e50df_0.png

概述

在本节课中,我们将学习Linux系统中的文件和目录权限。我们将了解Linux如何表示权限,以及如何检查与文件和目录关联的访问权限。理解权限对于保护敏感信息和维护系统安全至关重要。

权限与授权

上一节我们介绍了Linux的基本操作,本节中我们来看看如何控制对文件和目录的访问。权限是授予文件或目录的访问类型。权限与授权相关。授权是授予对系统中特定资源访问权限的概念。授权允许您限制对指定文件或目录的访问。

遵循“按需知密”原则是良好的实践。可以想象,如果任何人都能访问或修改系统上的任何内容,将会带来多大的安全风险。

Linux中的权限类型

在Linux中,授权用户可以拥有三种类型的权限。

以下是三种基本权限类型:

  • 读取权限:对于文件,读取权限意味着可以读取文件的内容。对于目录,此权限意味着您可以读取该目录中的所有文件。

  • 写入权限:对于文件,写入权限允许修改文件内容。对于目录,写入权限表示可以在该目录中创建新文件。

  • 执行权限:对于文件,执行权限意味着如果它是可执行文件,则可以运行该文件。对于目录,执行权限允许用户进入该目录并访问其文件。

权限的所有者类型

权限被授予三种不同的所有者类型。

以下是三种所有者类型:

  • 用户:用户是文件的所有者。当您创建一个文件时,您就成为该文件的所有者,但所有权可以被更改。

  • :每个用户都属于某个特定的组。一个组由多个用户组成,这是管理多用户环境的一种方式。

  • 其他:“其他”可以视为系统上的所有其他用户。基本上,任何其他可以访问系统的人都属于此组。

权限的表示方法

在Linux中,文件权限用一个10个字符的字符串表示。对于一个用户、组和其他都拥有完全权限的目录,该字符串为:drwxrwxrwx

让我们更仔细地分析其含义:

  • 第一个字符表示文件类型。在此示例中,d 表示它是一个目录。如果此字符是连字符 -,则表示它是一个常规文件。

  • 第二、三、四个字符表示用户的权限。在此示例中,r 表示用户拥有读取权限,w 表示写入权限,x 表示执行权限。如果缺少某项权限,则用连字符 - 代替该字母。

  • 第五、六、七个字符以相同的方式表示下一个所有者类型“组”的权限。如图所示,组也拥有读、写和执行权限。没有连字符表示所有这些权限都已授予。

  • 第八到第十个字符表示最后一个所有者类型“其他”的权限。在此示例中,他们也拥有读、写和执行权限。

权限设置的重要性

确保文件和目录设置了适当的访问权限对于保护敏感文件和维护系统的整体安全至关重要。

例如,薪资部门处理敏感信息。如果薪资组之外的人可以读取此文件,这将引发隐私问题。另一个例子是当用户、组和其他都可以写入一个文件时。此类文件被视为全局可写文件。全局可写文件可能带来重大的安全风险。

如何检查权限

那么,我们如何检查权限呢?首先,我们需要理解什么是选项。选项用于修改命令的行为。我们命令的选项可以是单个字母或完整的单词。

检查权限涉及向 ls 命令添加选项。

以下是用于检查权限的常用 ls 命令选项:

  • ls -l:显示文件和目录的权限。

  • 您可能还想显示隐藏文件并查看其权限。隐藏文件在其名称前以句点 . 开头,通常在使用 ls 显示文件内容时不会出现。输入 ls -a 可以显示隐藏文件。

  • 然后,您可以组合这些选项来同时实现两个功能。输入 ls -la 可以显示文件和目录(包括隐藏文件)的权限。

实践操作

让我们进入Bash环境尝试这些选项。目前,我们在 project 子目录中。

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/22ef69f8c6f94f8896923c2d863e50df_2.png

首先,使用 ls 命令显示其内容。输出显示此目录中的文件,但我们不知道它们的任何权限信息。

通过使用 ls -l 代替,我们获得了这些文件的扩展信息。文件名现在显示在每行的右侧。每行的第一个信息片段以我们之前讨论的格式显示权限。由于这些都是文件而不是目录,请注意第一个字符是连字符 -

让我们关注一个特定的文件 project1.txt。其权限的第二到第四个字符显示用户拥有读取和写入权限,但缺少执行权限(rw-)。在第五到第七个字符以及第八到第十个字符中,序列是 r--。这意味着组和其他只有读取权限。

在权限之后,ls -l 首先显示一个用户名(这里是 analyst),接着是组名(在我们的例子中是 security 组)。

现在让我们使用 ls -a。输出中包含了另外两个文件:名为 .hidden1.txt.hidden2.txt 的隐藏文件。

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/22ef69f8c6f94f8896923c2d863e50df_4.png

最后,我们也可以使用 ls -la 来显示所有文件(包括这些隐藏文件)的权限。

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/22ef69f8c6f94f8896923c2d863e50df_6.png

总结

本节课中,我们一起学习了Linux中的文件权限与所有权。我们了解了三种基本权限(读、写、执行)和三种所有者类型(用户、组、其他),并学会了如何使用 ls -lls -als -la 命令来检查权限。监控和设置正确的权限对于保护信息安全至关重要,这些知识将在安全工作中为您提供帮助。

067:修改权限

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/01c23c42901e8c3d43f31302b8fe4a2d_0.png

概述

在本节课中,我们将要学习如何使用 chmod 命令来修改文件和目录的权限。这是保护系统文件不被意外或故意更改或删除的关键操作。

在上一节我们介绍了如何检查用户的权限,本节中我们来看看如何更改这些权限。

作为一名安全分析师,可能需要出于多种原因更改用户的权限。例如,用户可能更换了部门或被分配到不同的工作组,或者用户可能不再参与需要特定权限的项目。这些更改对于保护系统文件至关重要。

了解 chmod 命令

chmod 命令用于更改文件和目录的权限。该命令的名称是“Change mode”的缩写。更改权限有两种模式,但我们将重点介绍符号模式。

学习 chmod 工作原理的最佳方式是通过一个示例。虽然细节较多,但我们可以逐步分解。请记住,与许多 Linux 命令一样,您无需死记硬背所有信息,随时可以查阅参考资料。

以下是 chmod 命令的一个示例:

chmod g+w,o-r access.txt

分解 chmod 命令

让我们来分解这个命令的各个部分。

首先,您需要确定要调整权限的文件或目录。这是命令的最后一个参数,在本例中是一个名为 access.txt 的文件。

紧接在 chmod 命令后的第一个参数指明了如何更改权限。这目前可能看起来难以理解,但稍后我们会明白为什么这被称为符号模式。

之前,我们学习了三种所有者类型:用户(user)、组(group)和其他(other)。在 chmod 中,我们使用以下字母来标识它们:

  • u 代表用户

  • g 代表组

  • o 代表其他

在这个特定例子中,g 表示我们将对组权限进行一些更改,o 表示将对“其他”的权限进行更改。在这个参数中,这些所有者类型用逗号分隔。

那么,我们是想要添加还是移除权限呢?为此,我们使用数学运算符:

  • + 加号表示添加权限

  • - 减号表示移除权限

在这个例子中,g 后面的加号表示我们要为组添加权限,o 后面的减号表示我们要从“其他”那里移除权限。

最后一个问题是:进行何种更改?我们已经学过:

  • r 代表读取权限

  • w 代表写入权限

  • x 代表执行权限

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/01c23c42901e8c3d43f31302b8fe4a2d_2.png

因此,在本例中,w 表示我们正在为组添加写入权限,而 r 表示我们正在从“其他”那里移除读取权限。

虽然这仍然很复杂,但经过分解后,它看起来就不那么像外语了。请记住,您不必记住所有内容。

实践操作

让我们尝试使用这个新命令。我们将从 log 子目录开始。

如果我们使用 ls -l 命令,它将输出文件的权限。它显示了此目录中唯一文件 access.txt 的权限。

之前我们学习了如何解读这些权限:

  • 第2到第4个字符表明用户拥有读取和写入权限。

  • 第5到第7个字符表明组仅拥有读取权限。

  • 第8到第10个字符表明“其他”仅拥有读取权限。

我们需要调整这些权限:我们希望确保安全组中的分析师拥有写入权限,但同时要从“其他”这类所有者那里移除读取权限。因此,我们为组添加写入权限,并为“其他”移除读取权限。

我们执行以下命令:

chmod g+w,o-r access.txt

现在,让我们再次运行 ls -l。这显示了 access.txt 的权限发生了变化。

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/01c23c42901e8c3d43f31302b8fe4a2d_4.png

请注意,在中间的权限段(组权限)中,添加了 w 以授予写入权限。另一个变化是,在最后的权限段中,r 被移除了,这表明“其他”的读取权限已被移除。如前所述,连字符表示缺少权限。现在,“其他”缺少所有权限。

总结

本节课中我们一起学习了如何使用 chmod 命令的符号模式来修改文件和目录的权限。我们分解了命令的语法,了解了如何指定所有者类型(u, g, o)、操作符(+, -)和权限类型(r, w, x),并通过一个实践示例巩固了理解。虽然需要练习,但随着时间推移,在 Linux 中工作会变得更加自然。掌握权限管理是维护系统安全的重要技能。

068:添加与删除用户 👥

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/1fa0e9d16ff21ca2a8de2d76895657f3_0.png

在本节课程中,我们将学习如何在Linux系统中添加和删除用户。这是系统管理中的一项基础且关键的任务,直接关系到系统的访问控制和安全性。

概述:用户管理与认证

上一节我们介绍了Linux的基本操作,本节中我们来看看用户管理。这涉及到认证的概念。认证是用户向系统证明其身份的过程。就像进入一栋实体大楼一样,并非所有用户都应被允许进入系统。我们需要确保只有授权用户才能访问,同时也要保证所有应有权访问的用户都能顺利进入。这就是为什么我们需要添加用户。

新用户可能来自组织的新成员,或是需要加入新团队的现有成员。这可能是由于组织结构变动,或仅仅是管理层的调动指令。同样地,当用户离开组织时,他们需要被删除,以确保他们不再拥有系统的任何访问权限。如果用户只是更换了所属团队,他们也应该从原团队中被移除。

超级用户:root

在讨论具体操作前,我们需要了解一个特殊类型的用户:root用户(或称超级用户)。root用户是一个拥有修改系统的高级权限的用户。普通用户的权限有限,而root用户则没有这些限制。需要执行特定任务的个人可以被临时授予root权限。

root用户可以创建、修改或删除任何文件,并运行任何程序。只有root用户或拥有root权限的账户才能添加新用户

你可能会问,如何成为超级用户?一种方式是直接以root用户身份登录。但在Linux中,以root身份运行命令被视为不良实践。为什么这可能存在问题?

以下是三个主要问题:

  1. 安全风险:恶意攻击者会试图攻破root账户,因为这是最强大的账户。为了安全起见,root账户的登录功能通常应被禁用。

  2. 易犯错误:在命令行界面中很容易输错命令。如果以root身份运行,你将面临更高的犯下不可逆错误的风险,例如永久删除一个重要目录。

  3. 责任归属:在Linux这样的多用户环境中,用户众多。如果一个用户以root身份运行命令,将无法追踪到底是谁执行了该命令。

解决方案:sudo命令

一个帮助解决上述问题的方案是使用 sudo 命令。sudo命令可以临时授予特定用户提升的权限。与root用户运行所有命令都拥有最高权限相比,sudo提供了一种更受控的方法。它解决了直接以root身份运行所带来的许多问题。

sudo源自“Superuser do”。它允许你以提升权限的用户身份执行命令,而无需登录或退出另一个账户。运行sudo会提示你输入当前登录用户的密码。

并非系统上的所有用户都能成为超级用户。 用户必须通过一个名为 sudoers 的配置文件被授予sudo访问权限。

添加用户:useradd命令

现在我们已经了解了sudo,让我们学习如何结合另一个命令来添加用户。这个命令是 useradduseradd用于向系统添加一个用户。只有root用户或拥有sudo权限的用户才能使用useradd命令。

让我们看一个具体的例子。假设销售部门新加入一名代表,我们将为其分配用户名sales_rep_7。我们的任务是将他添加到系统中。

以下是添加新用户的步骤:

  1. 首先使用sudo命令。

  2. 接着是useradd命令。

  3. 最后是要添加的用户名。

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/1fa0e9d16ff21ca2a8de2d76895657f3_2.png

具体命令如下:

sudo useradd sales_rep_7

此命令执行成功后通常不会在屏幕上显示任何内容。但由于我们得到了一个新的bash提示符(而不是错误信息),我们可以确信命令已成功执行。如果失败,则会出现错误信息。有时错误可能很简单,比如拼错了useradd,或者可能是因为我们没有sudo权限。

删除用户:userdel命令

现在,让我们学习如何执行相反的操作:使用 userdel 命令删除用户。userdel用于从系统中删除一个用户。同样,我们需要通过sudo获得的root权限来使用userdel命令。

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/1fa0e9d16ff21ca2a8de2d76895657f3_4.png

回到我们刚才添加用户的例子。假设两个月后,我们刚添加到系统中的销售代表离开了公司。该用户不应再拥有系统访问权限。

以下是删除该用户的步骤:

  1. 首先使用sudo命令。

  2. 接着是userdel命令。

  3. 最后是要删除的用户名。

具体命令如下:

sudo userdel sales_rep_7

同样,我们知道命令成功运行了,因为出现了新的bash提示符且没有错误信息。

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/1fa0e9d16ff21ca2a8de2d76895657f3_6.png

总结

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/1fa0e9d16ff21ca2a8de2d76895657f3_8.png

本节课中我们一起学习了如何在Linux系统中添加和删除用户。我们了解到这些操作都需要使用sudo来获取必要的权限。我们探讨了直接使用root账户的风险,以及sudo命令如何提供一种更安全、更可控的权限提升方式。

最后,请记住,在使用sudo这类特殊权限时,我们必须运用最佳判断力。这些特权必须被负责任地使用,以确保整个系统的安全。

谷歌网络安全专业证书课程:第四课:工具之道:Linux与SQL

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/12a6563bc0ee34c44d7b94a6d58449f2_0.png

P69:26_01_damar-my-journey-into-linux-commands

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/12a6563bc0ee34c44d7b94a6d58449f2_0.png

概述

在本节中,我们将跟随谷歌安全工程师Demar的分享,了解他进入网络安全领域的个人历程,特别是学习Linux命令的经验与建议。这对于初学者理解Linux在网络安全中的重要性以及如何开始学习非常有帮助。


我的名字是Demar,我是谷歌的一名安全工程师。

我从小就想进入网络安全领域。我看过的很多卡通片里都有软盘或闪存驱动器,角色们将其插入电脑就能造成混乱。我一直觉得这很酷。

在加入谷歌之前,我做过不少工作。我最开始是在Jamba Juice制作冰沙。后来,我在Geek Squad找到了第一份与IT技术相关的工作,最终来到这里成为了一名安全工程师。

给想进入网络安全领域的人的建议是:这可能比你想象的要容易得多。

这绝对比我想象的要容易。我自己摸索学到的一点是:你无法一次性学会所有东西,也不需要一次性掌握所有知识。


Linux的重要性与应用场景 🐧

上一部分我们了解了Demar的背景,本节中我们来看看他为何强调Linux。

Linux非常重要,因为它几乎被每一家公司广泛使用。

在网络安全工作中,你可能会使用Linux来管理和分析日志。这是一种非常常见的做法。

你也可能使用Linux来编写bash脚本作业,以帮助完成Linux内的例行任务。

一个基础的bash脚本示例是:

#!/bin/bash
# 这是一个简单的脚本示例
echo "开始执行日志备份..."
cp /var/log/syslog /backup/
echo "备份完成。"

如何开始学习Linux 💡

了解了Linux的用途后,我们来看看Demar是如何对它产生兴趣并开始学习的。

我最初对学习Linux产生兴趣是因为电影《侏罗纪公园》。电影中有一个场景,他们需要重新激活电力门,必须使用Unix操作系统来完成。后来,我了解了Unix是什么,以及Linux是如何从它衍生出来的。这激励我去学习更多关于Linux的知识。

我能给正在尝试学习Linux和Linux命令的人的最好建议是:不要因为遇到任何小挫折而气馁。坚持下去。

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/12a6563bc0ee34c44d7b94a6d58449f2_2.png

把它想象成你第一次学游泳。你可能并不擅长,过程令人沮丧,你可能还有点害怕,但你坚持了下来。我希望你现在已经会游泳了。


学习资源与支持 🛠️

坚持学习需要方法和支持,以下是Demar推荐的一些途径。

学习Linux有大量的支持资源。一个很好的例子是证书课程中的讨论论坛。

另一个学习Linux的支持途径是使用谷歌搜索答案,可以利用Stack Overflow这样的网站。甚至可以发一个Reddit帖子。


总结

本节课中,我们一起学习了安全工程师Demar的入行故事。他分享了Linux在网络安全工作中的核心作用,例如日志管理脚本自动化,并鼓励初学者克服困难、坚持学习,同时善用在线论坛和社区资源。他的经历表明,进入网络安全领域并掌握关键工具是一个循序渐进、充满支持的过程。

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/12a6563bc0ee34c44d7b94a6d58449f2_2.png

我非常热爱网络安全工作。 知道我和我的团队,以及谷歌所有其他安全团队正在帮助保护网络上的人们免受他们可能甚至不知道的威胁,这非常令人满足。

谷歌网络安全专业证书第四课:《工具之道:Linux与SQL》

P70:27_02_the-linux-community.en_subtitled

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/7b28bbbd4b828331539d7389c56d37b6_0.png

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/7b28bbbd4b828331539d7389c56d37b6_0.png

概述

在本节中,我们将了解Linux庞大的在线社区。这个社区是学习和解决问题的重要资源,尤其对初学者而言。我们将学习如何利用这个社区来寻找帮助,例如通过在线搜索来学习如何执行特定任务。

Linux社区:一个强大的支持网络

有许多像你一样的人正在使用命令行。Linux的流行性和易用性催生了一个庞大的在线社区,该社区持续发布信息,帮助用户学习如何操作Linux。

由于Linux是开源的,它已经形成了一个全球性的用户社区,成员们频繁地贡献内容。这个全球社区对所有Linux用户来说都是一个巨大的资源库,因为用户可以在这里找到日常任务的解决方案。

如何利用社区资源

只需在互联网上搜索,就能获得许多答案。解决任务最简单的方法,就是搜索并阅读他人是如何完成的。

对于初学者来说,寻找如何执行某项任务的资源是持续学习的好方法。到目前为止,你已经学会了如何添加用户。但想象一下,如果你之后想添加一个新用户组,学习如何操作的一种方法就是在线搜索。

让我们通过谷歌搜索来尝试一下。

实践:在线搜索解决方案

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/7b28bbbd4b828331539d7389c56d37b6_2.png

以下是通过搜索“如何在Linux中添加组”可能找到的一些资源示例:

  • Linux手册页:这是最权威的官方文档。你可以直接在终端使用 man 命令查看,例如 man groupadd

  • 在线论坛和问答网站:例如Stack Overflow或专门的Linux论坛,用户可以提问并获得社区解答。

  • 技术博客和教程:许多经验丰富的用户会分享详细的步骤指南。

另一个信誉良好的来源是Unix和Linux Stack Exchange。他们的答案通过积分进行排名,以显示高质量的回答。许多问题涉及更高级的用户,并侧重于故障排除。

总结与过渡

现在,你知道了每当对Linux相关主题有疑问时,可以去哪里获取额外的支持。大量的支持资源只需点击即可获得。

在接下来的内容中,我们将学习如何从命令行内部获取支持。请继续学习。

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/7b28bbbd4b828331539d7389c56d37b6_4.png

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/7b28bbbd4b828331539d7389c56d37b6_4.png

071:Shell内置帮助资源 📚

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/efd80fd5c77d617d26d9ba6d2cae7c26_0.png

在本节课中,我们将学习如何直接在Shell中获取帮助,这些资源能有效辅助你在Linux环境下的工作。Linux的一个优点是,你可以通过命令行直接获得帮助。

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/efd80fd5c77d617d26d9ba6d2cae7c26_2.png

使用 man 命令查看手册

首先,我们将介绍 man 命令。man 命令用于显示其他命令的详细信息及其工作原理。该命令的名称来源于单词“manual”(手册)。

让我们通过使用 man 来获取关于 usermod 命令的信息,以便更深入地了解它。在 man 之后,我们输入该命令的名称。man 返回的信息包括一个总体描述,以及关于 usermod 每个选项的详细信息。例如,选项 -D 可以添加到 usermod 中来更改用户的主目录。

man 提供了大量信息,但有时我们只需要快速了解某个命令的功能。

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/efd80fd5c77d617d26d9ba6d2cae7c26_4.png

使用 whatis 命令快速查询

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/efd80fd5c77d617d26d9ba6d2cae7c26_6.png

在这种情况下,你可以使用 whatis 命令。whatis 命令在一行内显示对某个命令的描述。

假设你听到同事提到了一个像 tail 这样的命令。你以前从未听说过这个命令,但你可以查明它的作用。只需使用命令 whatis tail,就能了解到它用于输出文件的末尾部分。

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/efd80fd5c77d617d26d9ba6d2cae7c26_8.png

使用 apropos 命令搜索相关命令

有时,我们甚至不知道该查找什么命令。这时 apropos 命令可以帮助我们。apropos 在手册页描述中搜索指定的字符串。让我们来试试。

假设你有一个需要更改密码的任务,但不太确定如何操作。如果我们使用带有字符串 passwordapropos 命令,这将显示大量包含该单词的命令。这有一定帮助,但可能仍然难以找到我们需要的内容。

不过,我们可以通过添加 -a 选项和一个额外的字符串来过滤结果。此选项将仅返回同时包含两个字符串的命令。在我们的例子中,由于我们想要更改密码,让我们查找同时包含 changepassword 的命令。现在,搜索结果已被限制在最相关的命令范围内。

这些命令使得在Linux命令行中导航变得更加容易。

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/efd80fd5c77d617d26d9ba6d2cae7c26_10.png

总结

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/efd80fd5c77d617d26d9ba6d2cae7c26_11.png

作为一名新的分析师,你不可能总是知道所有答案,但你可以学会在哪里找到它们。本节课我们一起学习了三个重要的Shell内置帮助工具:manwhatisapropos。它们分别是查看详细手册、获取命令简要说明以及根据关键词搜索相关命令的有效方法。掌握这些工具将极大地提升你在Linux环境下的工作效率和问题解决能力。

072:章节总结

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/712e8e7dbfa4ac08d996d9e3ec7d73be_0.png

概述

在本节课程中,我们学习了如何通过命令行与操作系统进行交互。这包括使用命令来导航和管理文件系统,以及使用其他命令进行用户身份验证和授权。这些任务都是安全分析师在工作中很可能遇到的。最后,我们还学习了如何获取资源以支持学习新的Linux命令。掌握这些知识后,你将能够持续深入地学习命令行的使用。

章节内容回顾

上一节我们介绍了与Linux系统交互的基础,本节中我们来回顾一下所涵盖的核心内容。

以下是我们在本节中完成的主要学习目标:

  • 使用命令行与操作系统进行通信。

  • 使用命令来导航和管理文件系统。

  • 使用命令进行用户身份验证和授权。

  • 学习如何获取资源以支持学习新的Linux命令。

核心概念与技能

我们学习了如何与Linux系统通信。这是一个重要的成就,对于你未来作为安全分析师的职业生涯将非常有用。

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/712e8e7dbfa4ac08d996d9e3ec7d73be_2.png

命令行交互是安全工作的基础,其核心在于理解并执行正确的命令。例如,用于列出目录内容的命令是:

ls

而用于更改文件权限的命令可能涉及:

chmod

总结

本节课中我们一起学习了通过命令行有效管理Linux系统的基本技能。你现在已经能够执行文件系统操作和基本的用户权限管理,并且掌握了持续自学新命令的方法。你应该为目前所完成的工作感到自豪。

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/712e8e7dbfa4ac08d996d9e3ec7d73be_4.png

我们做到了。

073:Linux与SQL

概述

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/e7356d1d92f7241ed161a328ed4ae062_0.png

在本节课中,我们将要学习一种新的工具——SQL。在上一节中,我们学习了Linux命令行,它帮助我们搜索、过滤数据,导航文件系统以及管理用户认证。本节中,我们将探索SQL,了解它如何以网络安全分析师角色所需的方式,帮助我们分析数据。

关系数据库与结构

上一节我们介绍了Linux命令行工具,本节中我们来看看数据分析的另一个核心工具:SQL。首先,我们需要理解SQL操作的对象——关系数据库。

关系数据库是一种以表格形式组织和存储数据的系统。每个表格包含行和列,行代表记录,列代表记录中的属性。表格之间可以通过共同的列(键)建立联系。

以下是数据库表格的基本结构示例:

-- 示例:创建一个用户表
CREATE TABLE users (
    user_id INT PRIMARY KEY,
    username VARCHAR(50),
    email VARCHAR(100)
);

理解这种结构是使用SQL进行有效查询的基础。

SQL查询入门

了解了数据库的基本结构后,我们现在可以学习如何从中获取数据。SQL查询是与数据库交互的主要方式。

一个基础的SQL查询使用SELECT语句。它允许你指定想要从数据库表中检索哪些列的数据。

以下是SQL查询的基本组成部分:

  • SELECT: 指定要检索的列。

  • FROM: 指定数据来源的表。

  • WHERE(可选): 添加条件来过滤结果。

例如,从一个名为employees的表中检索所有员工的姓名和部门,查询语句如下:

SELECT name, department FROM employees;

使用SQL过滤器精炼查询

基础查询能获取大量数据,但安全分析通常需要更精确的信息。这时就需要使用SQL过滤器。

SQL过滤器主要通过WHERE子句实现,它允许我们为查询设置条件,只返回满足这些条件的记录。

以下是WHERE子句中常用的操作符:

  • 等于 (=): 匹配特定值。WHERE department = ‘Security’

  • 大于/小于 (>, <, >=, <=): 进行数值比较。WHERE login_attempts > 5

  • LIKE: 进行模式匹配(常与%通配符合用)。WHERE username LIKE ‘admin%’

  • IN: 匹配列表中的任意值。WHERE status IN (‘active’, ‘pending’)

  • AND/OR: 组合多个条件。WHERE department = ‘IT’ AND status = ‘active’

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/e7356d1d92f7241ed161a328ed4ae062_2.png

通过组合这些过滤器,你可以构建出非常精确的查询,快速定位到关键的安全事件或日志条目。

探索SQL连接(JOIN)

在实际的数据库中,数据通常分散在多个相关的表中。为了进行综合分析,我们需要将多个表的数据组合起来,这就需要用到SQL连接(JOIN)。

SQL连接允许你基于两个表之间的关联列,将它们的数据行合并在一起。最常见的连接类型是INNER JOIN,它只返回两个表中匹配的行。

连接的基本公式如下:

SELECT columns
FROM table1
INNER JOIN table2
ON table1.common_column = table2.common_column;

例如,如果你有一个users表(包含user_idusername)和一个login_logs表(包含log_iduser_idlogin_time),你可以通过user_id连接这两个表,来查看每个用户的登录记录:

SELECT users.username, login_logs.login_time
FROM users
INNER JOIN login_logs
ON users.user_id = login_logs.user_id;

掌握连接操作,使你能够从复杂的多表数据库中提取出有意义的关联信息,这对于追踪安全事件链条或进行行为分析至关重要。

总结

本节课中我们一起学习了SQL这一强大的数据分析工具。我们首先了解了关系数据库的结构,然后学习了如何使用SELECT语句进行基础查询。接着,我们探讨了通过WHERE子句添加过滤器来精炼查询结果。最后,我们学习了如何使用JOIN操作来连接多个表,进行综合数据分析。正如课程所强调的,在安全领域,工具的多样性很重要。SQL能帮助你快速、一致地审查大量数据,并自信地提供分析结果,是网络安全分析师工具箱中不可或缺的一部分。

谷歌网络安全专业证书第四课:4:数据库简介

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/b2f36457d889a025218df12da8cf889b_0.png

在本节课中,我们将要学习数据库的基本概念,包括其定义、结构以及如何通过关系型数据库来组织和管理数据。


我们的现代世界充满了数据,这些数据几乎总是在指导我们做出重要决策。处理大量数据时,我们需要知道如何存储它,使其组织有序,并能快速访问和处理。解决这个问题的方案就是数据库。这正是我们将在本视频中探讨的内容。

首先,我们可以将数据库定义为信息或数据的有组织集合

数据库常与电子表格进行比较。你们中的一些人可能过去使用过 Google Sheets 或其他常见的电子表格程序。虽然这些程序是存储数据的便捷方式,但电子表格通常设计为供单个用户或小型团队存储较少数据。相比之下,数据库可以被多人同时访问,并能存储海量数据。数据库在访问数据时还能执行复杂的任务。

作为安全分析师,您经常需要访问包含有用信息的数据库。例如,这些可能是包含登录尝试信息、软件和更新信息,或机器及其所有者信息的数据库。

既然我们已经了解了数据库的重要性,接下来让我们谈谈它们是如何组织的,以及我们如何与之交互。


关系型数据库的结构

使用数据库使我们能够存储大量数据,同时保持快速、便捷的访问。构建数据库有很多不同的方式,但在本课程中,我们将使用关系型数据库。关系型数据库是一种包含相互关联的表格的结构化数据库。

让我们进一步了解关系型数据库的构成。我们将从检查一个大型组织信息数据库中的单个表格开始。

每个表格都包含信息字段。例如,在这个关于员工的表格中,字段包括员工ID、设备ID和用户名。这些就是表格的列。

此外,表格包含行,也称为记录。记录中填充了与表格列相关的具体数据。例如,我们的第一行是一条记录,对应一名ID为1000、在市场部工作的员工。

关系型数据库通常有多个表格。考虑一个例子,我们从一个更大的数据库中获取两个表格:一个包含公司员工,另一个包含分配给这些员工的机器。如果两个表格共享一个共同的列,我们就可以将它们连接起来。在这个例子中,我们通过一个共同的员工ID列在它们之间建立关系。


主键与外键

将两个表格相互关联的列称为键。键有两种类型。

第一种称为主键。主键指的是每一行都有唯一条目的列。主键不能有任何重复值或任何空值。主键允许我们唯一地标识表中的每一行。对于员工表,员工ID就是一个主键。每个员工ID都是唯一的,并且没有重复或为空的员工ID。

第二种键是外键。外键是一个表中的列,该列是另一个表中的主键。与主键不同,外键可以有重复值和空值。外键允许我们将两个表格连接在一起。在我们的例子中,我们可以查看机器表中的员工ID列。

我们之前已将其识别为员工表中的主键,因此我们可以用它来将每台机器与其对应的员工连接起来。

同样重要的是要注意,一个表只能有一个主键,但可以有多个外键。


SQL简介

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/b2f36457d889a025218df12da8cf889b_2.png

掌握了这些信息,我们就可以开始学习SQL的基础知识了,SQL是让我们能够操作数据库的语言。在本节接下来的内容中,我们将亲身体验并实践刚刚介绍的概念。


总结

本节课中,我们一起学习了数据库的基本概念。我们了解了数据库作为有组织数据集合的定义,比较了数据库与电子表格的区别,并重点探讨了关系型数据库的结构,包括表格、记录、字段以及连接表格的关键——主键和外键。这些知识为我们接下来学习如何使用SQL语言与数据库交互打下了坚实的基础。

075:使用SQL查询数据库

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/738d4ff48def40ce2770a05c47aa7511_0.png

概述

在本节课中,我们将要学习结构化查询语言(SQL)的基础知识。SQL是安全分析师用于与数据库交互、检索和分析数据的关键工具。我们将了解什么是查询,以及SQL如何帮助我们从海量日志中高效提取所需信息。


什么是SQL?🤔

上一节我们介绍了数据库的基础知识,本节中我们来看看一个用于操作数据库的重要工具:SQL。

SQL,全称为结构化查询语言,是一种用于创建、与数据库交互以及从数据库请求信息的编程语言。

在学习更多关于SQL的知识之前,我们需要先定义“查询”的含义。

查询是指向数据库表或组合表请求数据的行为。

几乎所有关系型数据库都依赖某种版本的SQL来查询数据。不同版本的SQL在结构上只有细微差别,例如引号的放置位置。无论您使用哪种SQL,它都将是您作为安全分析师工作中非常重要的工具。


SQL在安全分析中的重要性 🔍

现在我们已经了解了SQL是什么,接下来让我们探讨SQL如何帮助安全分析师处理日志数据。

日志是记录组织系统内发生事件的记录。作为安全分析师,您可能因各种原因需要审查日志。

以下是安全分析师可能需要处理日志的几个场景:

  • 一些日志可能包含公司所用机器的详细信息。作为分析师,您需要找出那些配置不当的机器。

  • 另一些日志可能描述访问您网站或网络应用的访客及其执行的任务。在这种情况下,您可能需要寻找可能指向恶意活动的异常模式。

安全日志通常非常庞大且难以处理。它们包含数百万个数据点,手动查找所需信息非常耗时。这正是SQL发挥作用的地方。

SQL可以通过一个只需几秒钟即可运行的查询,筛选数百万个数据点,提取出相关的数据行。这非常有用。

SQL也是一种非常通用的基础数据分析语言,掌握这项技能将使您作为一名安全分析师脱颖而出。

作为安全分析师,您可以使用SQL的过滤功能来查找数据,以支持安全相关的决策,并分析何时可能出现问题。

例如:

  • 您可以识别哪些机器尚未安装最新的补丁。这很重要,因为补丁是帮助防范攻击的更新。

  • 作为另一个例子,您可以使用SQL根据机器使用最少的时间来确定更新机器的最佳时机


总结

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/738d4ff48def40ce2770a05c47aa7511_2.png

本节课中我们一起学习了SQL的基础概念及其在网络安全领域的重要性。我们了解到SQL是一种强大的查询语言,能够帮助我们从庞大的数据库和日志中快速、精确地检索信息,从而支持安全监控、漏洞分析和事件响应等工作。掌握SQL是成为一名高效安全分析师的关键技能。

在下一节视频中,我们将开始对一个示例数据库进行基本的查询操作,这非常令人期待。

076:SQL在网络安全中的应用

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/8fff24519fffd2eb297f7f34449a45c7_1.png

概述

在本节课中,我们将跟随谷歌安全工程师A Dio的分享,了解SQL技能对于网络安全从业者的重要性、学习路径以及实践经验。我们将探讨如何利用SQL进行数据驱动的决策,并理解这项技能在职业生涯中的实际价值。

核心内容

大家好,我是A Dio,目前在谷歌担任安全工程师。

许多人认为必须拥有计算机科学学位才能进入网络安全领域。我认为事实并非如此。以我为例,我的学习起点是在尼日利亚的拉各斯,那里是我的家乡。如今,我已在硅谷为谷歌工作。我认为这非常了不起,是梦想成真。你学习这个证书,是承诺将职业生涯转向网络安全的第一步,值得称赞。

SQL是网络安全专业人员工具箱中必备的技能之一。掌握它,你不仅能快速做出判断,更能基于数据支撑你的决策,并能向你的团队和利益相关者清晰地解释决策依据。仅仅说“我们需要这样做”是一回事;而说“我们需要这样做,这是我通过SQL语句分析得出的数据依据”则是另一回事,后者更有说服力。

我的SQL学习路径始于学校的课程,那打下了很好的基础。但毕业后,我几乎忘记了所学的大部分内容。我采取的下一步是参加在线课程,就像你现在正在做的一样,重新学习SQL的基础知识和实际应用方法。

我第一次实际应用SQL是在谷歌。实践至关重要。我认为任何事情都是熟能生巧。即使每周只抽出几个小时,专门练习编写SQL语句,这项技能也将对你获得第一份工作非常有帮助,并能用于做出数据驱动的决策。

在网络安全领域工作让我感到非常充实。每天上班我都充满活力,这不仅是因为我能处理非常复杂的问题并尝试找出解决方案,还因为我拥有优秀的同事,我们能齐心协力攻克难题。晚上入睡时,我知道我的工作是为了让谷歌用户和员工更安全,这给我带来了极大的成就感。

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/8fff24519fffd2eb297f7f34449a45c7_3.png

总结

本节课我们一起学习了SQL在网络安全中的关键作用。我们了解到,数据驱动的决策能力是网络安全专业人员的核心优势之一,而SQL是实现这一能力的重要工具。通过持续的学习和实践,即使没有传统的计算机科学背景,也能掌握这项技能并在实际工作中创造价值,为保护数字世界贡献力量。

077:34_01_basic-queries - 基础查询入门

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/a287f597924e89b3775ae0ac06a26578_0.png

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/a287f597924e89b3775ae0ac06a26578_0.png

在本节课程中,我们将学习如何运行你的第一个SQL查询。这个查询将基于网络安全分析师可能遇到的一个常见工作任务:确定特定员工被分配了哪台计算机。

概述:什么是SQL查询?🔍

SQL查询是一种用于与数据库通信并获取特定信息的指令。它就像向数据库提问,并得到精确的答案。我们将从一个简单的任务开始,学习构建查询的两个核心关键字。

构建你的第一个查询 ✨

假设我们有权访问一个名为 employees 的表,该表包含五列。其中,employee_iddevice_id 这两列包含了我们所需的信息。

我们的目标是编写一个查询,仅从该表中返回这两列数据。

核心关键字:SELECT 和 FROM

构建基础SQL查询需要两个关键字:SELECTFROM

  • SELECT 指示要返回哪些列。

  • FROM 指示要从哪个表中查询数据。

这两个关键字在SQL中的用法与日常用语非常相似。例如,你可以对朋友说:“请从那个大盒子里选出苹果和香蕉。” 这已经非常接近SQL的思维模式了。

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/a287f597924e89b3775ae0ac06a26578_2.png

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/a287f597924e89b3775ae0ac06a26578_2.png

现在,让我们在SQL中使用 SELECTFROM 来获取关于员工及其所用计算机的信息。

我们首先输入SQL语句。在 FROM 之后,我们指明信息将从 employees 表中提取。在 SELECT 之后,我们列出想要从该表返回的两列:employee_iddevice_id

请注意,我们想要返回的两个列名之间用逗号分隔。

示例代码:

SELECT employee_id, device_id
FROM employees;

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/a287f597924e89b3775ae0ac06a26578_4.png

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/a287f597924e89b3775ae0ac06a26578_4.png

关于SQL语法的关键点 📝

在继续之前,有必要提及几个与SQL语法相关的关键方面。语法指的是决定计算语言中什么是正确结构的规则。

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/a287f597924e89b3775ae0ac06a26578_6.png

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/a287f597924e89b3775ae0ac06a26578_6.png

在SQL中,有两点重要的语法规则:

  1. 关键字不区分大小写:你可以用小写字母书写 selectfrom。但通常使用大写字母,因为这会使查询语句更易于阅读和理解。

  2. 分号结束语句:分号被放置在语句的末尾,表示一个完整查询的结束。

现在,我们通过按回车键来运行这个查询。输出结果将提供我们需要的信息,用以匹配员工和他们的计算机。

恭喜!你已经成功运行了你的第一个SQL查询。

查询所有列:使用 SELECT * 🌟

上一节我们介绍了如何查询特定的列。但如果我们想了解更多信息呢?例如,想知道使用该计算机的员工来自哪个部门、他们的用户名或办公地点。

为此,我们可以使用SQL编写另一个语句,打印出表中的所有列。我们可以通过在 SELECT 后放置一个星号 * 来实现。这通常被称为 “SELECT ALL”

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/a287f597924e89b3775ae0ac06a26578_8.png

现在,让我们在SQL中对 employees 表运行这个查询。

示例代码:

SELECT *
FROM employees;

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/a287f597924e89b3775ae0ac06a26578_8.png

运行后,我们将在输出中获得完整的表格数据。

总结与展望 🎯

在本节课中,我们一起学习了SQL的基础查询操作。我们掌握了:

  • 使用 SELECT 关键字指定要返回的列。

  • 使用 FROM 关键字指定要查询的表。

  • 使用逗号分隔多个列名。

  • 使用星号 * 来快速选择表中的所有列。

  • 了解了SQL语法中关键字大小写不敏感和以分号结束语句的规则。

你刚刚完成了一个基础的SQL查询,这是一个重要的开始!在下一个视频中,我们将学习如何为查询添加过滤器,以便更精确地获取数据。我们下节课再见。

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/a287f597924e89b3775ae0ac06a26578_10.png

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/a287f597924e89b3775ae0ac06a26578_10.png

078:SQL基础查询过滤 🔍

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/b427bcd78749f11a2ce24a9920b79c6e_0.png

在本节课中,我们将要学习SQL最强大的功能之一:数据过滤。通过过滤,我们可以从数据库中筛选出符合特定条件的精确数据,这对于安全分析师处理登录记录、用户信息等任务至关重要。

概述:什么是过滤?

过滤是指根据特定条件选择数据的过程。你可以将其理解为只挑选我们想要的数据。例如,从一个水果摊选择苹果时,我们可能会明确地说“只选新鲜的苹果”,这会将不新鲜的苹果从选择中排除。这就是一个过滤器。

在网络安全分析中,你可能会过滤登录尝试表,以查找来自特定国家的所有尝试。这可以通过对国家列应用过滤器来完成。例如,你可以过滤只返回包含“Canada”的记录。

运算符:过滤的基石

在开始之前,我们需要关注SQL语法的一个重要部分:运算符。

运算符是一个符号或关键字,用于表示一个操作。一个典型的例子是“等于”运算符(=)。例如,如果我们想找到所有在“country”列中包含“USA”的记录,我们会使用 country = 'USA'

使用WHERE子句进行过滤

要在SQL中过滤查询,我们只需在之前使用的SELECTFROM语句后添加额外的一行。这额外的一行将使用SQL中的WHERE子句。WHERE指明了过滤的条件。

在关键字WHERE之后,使用运算符列出具体的条件。因此,如果你想找到所有在美国进行的登录尝试,我们将创建这样一个特定的条件过滤器:指示返回所有在“country”列中值等于“USA”的记录。

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/b427bcd78749f11a2ce24a9920b79c6e_2.png

让我们在SQL中将其组合起来。我们将从选择log_in_attempts表中的所有列开始,然后添加WHERE过滤器。别忘了分号,它表示SQL语句的结束。

SELECT *
FROM log_in_attempts
WHERE country = 'USA';

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/b427bcd78749f11a2ce24a9920b79c6e_4.png

运行此查询后,由于我们的过滤器,只有登录尝试国家为“USA”的行会被返回。

使用LIKE运算符进行模式匹配

在上一个例子中,我们的过滤条件仅仅是基于返回等于特定值的记录。我们还可以通过搜索模式而非精确单词来使条件更复杂。

例如,在员工表中,我们有一个“office”列。我们可以搜索此列中匹配特定模式的记录。或许我们想要所有在东楼(East building)的办公室。为了搜索模式,我们使用百分号(%)作为未指定字符的通配符。

如果我们运行一个 ‘East%’ 的过滤器,这将返回所有以“East”开头的记录,例如办公室“East 120”、“East 290”和“East 435”。

当使用百分号搜索模式时,我们不能使用等号运算符。相反,我们使用另一个运算符:LIKE

LIKE是一个与WHERE一起使用的运算符,用于在列中搜索模式。由于LIKE是一个类似于等号的运算符,我们用它来代替等号。因此,当我们的目标是返回“office”列中所有以单词“east”开头的值时,LIKE会出现在WHERE子句中。

实践:处理数据不一致性

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/b427bcd78749f11a2ce24a9920b79c6e_6.png

让我们回到想要过滤在美国进行的登录尝试的例子。想象一下,我们意识到数据库中表示“美国”的方式存在不一致:有些条目使用“US”,而另一些使用“USA”。

我们将进入SQL并应用这种带有LIKE的新过滤器。我们将以相同的前两行代码开始,因为我们想从login_attempts表中选择所有列。然后,我们将添加一个带有LIKE的过滤器,以便如果“country”列中的值以字符“US”开头,记录就会被返回。这包括了“US”和“USA”。

SELECT *
FROM login_attempts
WHERE country LIKE 'US%';

运行此查询以检查输出是否变化。这将返回用户位置在美国的所有条目。现在,我们可以使用LIKE子句基于模式来过滤列。

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/b427bcd78749f11a2ce24a9920b79c6e_8.png

总结

本节课中,我们一起学习了SQL查询过滤的核心概念。我们首先了解了过滤的基本定义及其在数据分析中的重要性。接着,我们认识了构成过滤条件的基石——运算符,特别是等号(=)。然后,我们详细探讨了如何使用WHERE子句来实施精确匹配的过滤。

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/b427bcd78749f11a2ce24a9920b79c6e_10.png

为了处理更灵活的数据匹配需求,我们进一步学习了LIKE运算符和通配符(%)的使用,从而能够进行模式匹配,有效应对数据录入不一致的情况。通过结合这些技术,我们现在已经能够编写精确的查询,从数据库中高效地提取出所需的具体数据子集。

079:36_01_过滤日期与数字

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/95e13967262c964a05993927d070df5a_0.png

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/95e13967262c964a05993927d070df5a_0.png

在本节课中,我们将继续学习使用SQL查询和过滤器,但这次我们将把它们应用到新的数据类型上。我们将探索数据库中常见的三种数据类型,并学习如何对数字和日期时间数据进行过滤。掌握这些技能对于分析安全日志、识别异常活动至关重要。

数据类型简介

上一节我们介绍了如何使用字符串数据进行过滤。本节中,我们来看看SQL中另外两种重要的数据类型:数字和日期时间。

数据库中的数据主要分为三种类型:

  • 字符串数据:由有序的字符序列组成的数据。这些字符可以是数字、字母或符号。例如,用户名 analyst10 就是字符串数据。

  • 数字数据:由数字组成的数据。与字符串不同,可以对数字数据使用数学运算,如乘法或加法。例如,登录尝试次数。

  • 日期和时间数据:表示日期和/或时间的数据。例如,补丁安装日期或登录尝试发生的时间。

作为安全分析师,经常需要查询数字和日期。例如,可以过滤补丁日期以找到需要更新的机器,或者过滤登录尝试以仅返回在特定时间段内发生的记录。

使用运算符过滤数字和日期

我们将在数字和日期数据上再次使用运算符。以下是处理数字或日期时间数据类型的常见运算符:

  • 等于 (=)

  • 大于 (>)

  • 小于 (<)

  • 不等于 (!=<>)

  • 大于或等于 (>=)

  • 小于或等于 (<=)

假设你想查找下午6点之后进行的登录尝试,因为这超出了正常工作时间,可能存在可疑模式。

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/95e13967262c964a05993927d070df5a_2.png

你可以通过在过滤器中使用大于运算符来识别这些尝试。

以下是编写查询的步骤:

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/95e13967262c964a05993927d070df5a_2.png

  1. 使用 SELECT * 表示从 log_in_attempts 表中选择所有列。

  2. 使用 WHERE 添加过滤器。

  3. 设置条件,要求 time 列中的值必须大于 1800(在SQL中,1800 表示下午6点)。

对应的SQL代码如下:

SELECT *
FROM log_in_attempts
WHERE time > 1800;

运行此查询后,将得到下午6点之后所有登录尝试的列表。

使用 BETWEEN 运算符过滤范围

除了比较运算符,我们还可以使用 BETWEEN 运算符来过滤特定范围内的数字或日期。

BETWEEN 是一个用于筛选处于某个范围内的数字或日期的运算符。

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/95e13967262c964a05993927d070df5a_4.png

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/95e13967262c964a05993927d070df5a_6.png

一个典型的应用场景是查找在特定日期范围内安装的所有补丁。

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/95e13967262c964a05993927d070df5a_6.png

例如,我们想查找所有在2021年3月1日至2021年9月1日之间安装的补丁。

以下是编写查询的步骤:

  1. machines 表中选择所有记录。

  2. WHERE 语句中使用 BETWEEN 运算符。

  3. 指定要过滤的列,这里是 OS_patch_date

  4. 使用 BETWEEN 定义范围的开始和结束日期。

对应的SQL代码如下:

SELECT *
FROM machines
WHERE OS_patch_date BETWEEN '2021-03-01' AND '2021-09-01';

运行此查询后,将得到在这两个日期之间打过补丁的所有机器的列表。

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/95e13967262c964a05993927d070df5a_8.png

重要注意事项

在结束之前,有一个重要的细节需要注意:

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/95e13967262c964a05993927d070df5a_8.png

  • 当过滤字符串、日期和时间时,我们使用引号来指定要查找的内容。

  • 然而,对于数字,我们不使用引号。

掌握了这些新知识,你现在已经准备好为数字和日期创建各种有趣的过滤器了。

总结

本节课中我们一起学习了:

  1. 识别了SQL中的三种主要数据类型:字符串、数字以及日期和时间。

  2. 学习了如何使用比较运算符(如 ><=)来过滤数字和日期数据。

  3. 掌握了 BETWEEN 运算符的用法,用于查询特定范围内的数字或日期记录。

  4. 明确了在编写过滤条件时,字符串和日期值需要引号,而数字值则不需要。

在下一个视频中,我们将通过在一个查询中使用多个条件,进一步扩展我们的过滤能力。

080:使用AND、OR和NOT进行筛选

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/39eab559c4027e8cd06af730caec87cf_0.png

在本节课中,我们将要学习如何在SQL查询中使用ANDORNOT运算符来组合多个筛选条件。这对于处理复杂的网络安全分析任务至关重要。

概述

上一节我们介绍了SQL中的基本筛选方法。本节中我们来看看如何通过组合多个条件进行更精确的查询。在实际的网络安全工作中,我们经常需要根据多个因素来定位问题。例如,一个安全漏洞可能同时与特定的操作系统和特定的电子邮件客户端相关。为了找到所有符合条件的记录,我们需要使用逻辑运算符。

使用AND运算符

AND运算符用于指定查询结果必须同时满足两个或多个条件。

我们可以用一个简单的公式来描述:

条件1 AND 条件2

这就像从一箱水果中挑选又大又新鲜的苹果。结果中不会包含小的苹果(即使新鲜),也不会包含腐烂的苹果(即使很大),只会包含同时满足“大”和“新鲜”这两个条件的苹果。

假设我们有一个名为machines的表,其中包含operating_systememail_client等列。我们想找出所有运行OS1并且使用email_client1的机器。

以下是实现此查询的SQL代码:

SELECT *
FROM machines
WHERE operating_system = ‘OS1’
  AND email_client = ‘email_client1’;

在这段代码中:

  1. SELECT * FROM machines 表示从machines表中选择所有列。

  2. WHERE 子句开始定义筛选条件。

  3. operating_system = ‘OS1’ 是第一个条件。

  4. AND 运算符连接两个条件。

  5. email_client = ‘email_client1’ 是第二个条件。

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/39eab559c4027e8cd06af730caec87cf_2.png

执行此查询将返回所有同时满足这两个条件的记录。

使用OR运算符

OR运算符用于指定查询结果只需满足其中任意一个条件即可。

其公式为:

条件1 OR 条件2

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/39eab559c4027e8cd06af730caec87cf_4.png

在维恩图中,这表示选择属于条件1条件2圆圈内的所有部分(包括重叠部分)。

例如,我们需要为运行OS1OS3的机器打补丁。我们可以使用OR运算符来查找所有符合任一操作系统的机器。

以下是相应的SQL查询:

SELECT *
FROM machines
WHERE operating_system = ‘OS1’
   OR operating_system = ‘OS3’;

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/39eab559c4027e8cd06af730caec87cf_6.png

在这段代码中:

  • 第一个条件 operating_system = ‘OS1’ 筛选出OS1

  • OR 运算符表示“或者”。

  • 第二个条件 operating_system = ‘OS3’ 筛选出OS3

执行此查询将返回所有操作系统为OS1OS3的记录。

使用NOT运算符

NOT运算符用于否定一个条件,选择不满足该条件的记录。

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/39eab559c4027e8cd06af730caec87cf_8.png

其公式为:

NOT 条件

这就像告诉朋友:“请给我所有不是苹果的水果。”这比逐一列出香蕉、橘子、青柠等要高效得多。

例如,我们想要更新公司里所有不是运行OS3操作系统的设备。

以下是实现此需求的SQL代码:

SELECT *
FROM machines
WHERE NOT operating_system = ‘OS3’;

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/39eab559c4027e8cd06af730caec87cf_10.png

在这段代码中:

  • WHERE NOT 对紧随其后的条件进行否定。

  • operating_system = ‘OS3’ 是被否定的条件。

执行此查询将返回所有操作系统不等于OS3的机器列表,从而我们知道需要更新哪些设备。

总结

https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/39eab559c4027e8cd06af730caec87cf_12.png

本节课中我们一起学习了SQL中三个核心的逻辑运算符:

  • AND:要求所有条件同时为真。

  • OR:要求至少一个条件为真。

  • NOT:对条件取反,选择不符合条件的记录。

通过组合使用这些运算符,我们可以构建出非常强大和灵活的查询语句,以应对网络安全分析中各种复杂的筛选需求。你已经掌握了更多可用于实际分析工作的SQL技能。

在接下来的视频中,我们将学习如何将两张表连接(JOIN)在一起,从而进一步扩展我们能执行的查询类型。

081:SQL中的表连接

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐