tryhackme-预安全-linux 基础-Linux 基础知识(第三部分)-15

tryhackme-Pre Security-Linux Fundamentals-Linux Fundamentals Part 3
房间地址:https://tryhackme.com/room/linuxfundamentalspart3
这是网络安全入门的基础模块的计算机科学基础知识:Linux Fundamentals Part 3(Linux 基础知识(第三部分)),序号 01 表示第一篇文章,当你不知道从哪里开始的时候,你可以按照数字顺序来进行参考即可。

Linux Fundamentals Part 3

Task 1 Introduction

没啥介绍的

Task 2 Deploy Your Linux Machine

部署环境

Task 3 Terminal Text Editors

文本编辑器:nano,vim
您可以通过按下“Ctrl”键(在 Linux 中表示为 ^)和相应的字母来使用这些 nano 的功能。
如果您想了解更多关于 VIM 的信息,TryHackMe 有一个展示 VIM 的房间!
https://tryhackme.com/room/toolboxvim

Task 4 General/Useful Utilities

  • 下载文件 (Wget)

传输文件是计算机的一个基本功能。例如,您可能想要下载程序、脚本,甚至是图片。幸运的是,我们可以通过多种方式检索这些文件。

我们将介绍 wget 的用法。此命令允许我们通过 HTTP 从 Web 下载文件——就像您在浏览器中访问文件一样。我们只需提供要下载的资源的地址即可。例如,如果我想将一个名为“myfile.txt”的文件下载到我的机器上,假设我知道它的网址——它会像这样:
wget https://assets.tryhackme.com/additional/linux-fundamentals/part3/myfile.txt

  • 从主机传输文件 - SCP (SSH)

安全复制(SCP)就是一个安全复制文件的方法。与常规的 cp 命令不同,此命令允许您使用 SSH 协议在两台计算机之间传输文件,并提供身份验证和加密。

SCP 基于源和目标模型,允许您:

将文件和目录从当前系统复制到远程系统
将文件和目录从远程系统复制到当前系统
前提是我们知道当前系统和远程系统上用户的用户名和密码。例如,让我们将一个示例文件从我们的计算机复制到远程计算机,我在下表中已将其整齐地列出:
scp important.txt ubuntu@192.168.1.30:/home/ubuntu/transferred.txt

现在让我们反过来,布置一下使用 scp 从我们未登录的远程计算机复制文件的语法
scp ubuntu@192.168.1.30:/home/ubuntu/documents.txt notes.txt

  • 从您的主机提供文件 - WEB

Ubuntu 机器预装了 Python3。Python 提供了一个轻量级且易于使用的模块“HTTPServer”。该模块可以将您的计算机变成一个快速简便的 Web 服务器,您可以使用它来提供您自己的文件,然后其他计算机可以使用 curl 和 wget 等命令下载这些文件。

Python3 的“HTTPServer”将提供您运行命令所在目录中的文件,但您可以通过提供手册页中的选项来更改此设置。简单来说,我们只需在终端中运行 python3 -m http.server 即可启动该模块!在下面的代码片段中,我们从名为“webserver”的目录提供服务,该目录包含一个名为“file”的文件。

这个模块的一个缺陷是无法索引,所以你必须知道要使用的文件的确切名称和位置。这就是为什么我更喜欢使用 Updog。Updog 是什么?一个更先进但更轻量级的 Web 服务器。不过现在,我们还是先用 Python 的“HTTP 服务器”吧。
Updog:https://github.com/sc0tfree/updog

Task 5 Processes 101

进程是计算机上正在运行的程序。它们由内核管理,每个进程都有一个与其关联的 ID,也称为 PID。PID 会根据进程启动的顺序递增。例如,第 60 个进程的 PID 为 60。

  • 查看进程 ps

要查看其他用户运行的进程以及未从会话运行的进程(即系统进程),我们需要在 ps 命令中添加 aux,如下所示:ps aux

另一个非常有用的命令是 top 命令;top 会提供系统上运行进程的实时统计信息,而不是一次性查看。这些统计信息每 10 秒刷新一次,但当您使用箭头键浏览各行时也会刷新。另一个深入了解系统情况的优秀命令是通过 top 命令。

  • 进程管理

您可以发送终止进程的信号;信号类型多种多样,具体与内核处理进程的“干净程度”相关。要终止某个命令,我们可以使用名称合适的 kill 命令以及要终止的进程 PID。例如,要终止 PID 1337,可以使用 kill 1337。

以下是一些我们可以在进程终止时发送的信号:

SIGTERM - 终止进程,但允许其事先执行一些清理任务
SIGKILL - 终止进程 - 终止后不执行任何清理任务
SIGSTOP - 停止/暂停进程

  • 进程如何启动?

我们先来谈谈命名空间(namespaces)。操作系统 (OS) 使用命名空间将计算机上可用的资源(例如 CPU、RAM 和优先级)最终分配给各个进程。可以将其想象成将计算机分割成多个切片——类似于蛋糕。切片中的进程将能够访问一定量的计算能力,但这只是每个进程实际可用计算能力的一小部分。

命名空间对于安全性非常有用,因为它可以将进程与其他进程隔离——只有位于同一命名空间中的进程才能相互访问。

我们之前讨论过 PID 的工作原理,这里就来谈谈它的作用。ID 为 0 的进程是系统启动时启动的。这个进程是 Ubuntu 上的系统初始化,例如 systemd,它用于提供一种管理用户进程的方法,位于操作系统和用户之间。

例如,系统启动并初始化后,systemd 是第一个启动的进程之一。任何我们想要启动的程序或软件都会以 systemd 的子进程形式启动。这意味着它由 systemd 控制,但会以独立的进程运行(尽管会共享 systemd 的资源),以便于我们识别等等。

image

  • 让进程/服务在启动时启动

有些应用程序可以在我们拥有的系统启动时启动。例如,Web 服务器、数据库服务器或文件传输服务器。这些软件通常至关重要,管理员通常会指示它们在系统启动时启动。

在本例中,我们将指示 Apache Web 服务器手动启动 Apache,然后指示系统在启动时启动 Apache2。

systemctl ——这个命令允许我们与 systemd 进程/守护进程交互。继续我们的示例,systemctl 是一个易于使用的命令,其格式如下:systemctl [选项] [服务]
例如,要启动 Apache,我们使用 systemctl start apache2。看起来很简单,对吧?同样,如果我们想停止 Apache,只需将 [option] 替换为 stop(而不是像我们之前提供的 start)。

我们可以使用 systemctl 执行四个选项:
Start
Stop
Enable
Disable

  • Linux 中的后台运行和前台运行简介

&Ctrl + Z

  • 重新将进程置于前台

fg

Task 6 Maintaining Your System: Automation

  • 希望你记住的是liunx自动化而不是cron,比如后X程序通过其他自动化的方式实现持久化

用户可能希望安排某个操作或任务在系统启动后执行。例如,运行命令、备份文件或启动您常用的程序(例如 Spotify 或 Google Chrome)。

我们将讨论 cron 进程,更具体地说,是如何通过使用 crontabs 与其交互。crontab 是系统启动时启动的进程之一,负责执行和管理 cron 作业。

crontab 只是一个特殊的文件,其格式可以被 cron 进程识别,并逐步执行每行任务。crontab 需要 6 个特定值:
MIN 执行时间
HOUR 执行时间
DOM 执行时间
MON 执行时间
DOW 执行时间
CMD 实际执行的命令。

我们以备份文件为例。您可能希望每 12 小时备份一次“cmnatic”的“文档”。我们将使用以下格式:
0 */12 * * * cp -R /home/cmnatic/Documents /var/backups/

crontab 的一个有趣特性是它们也支持通配符或星号 (*)。如果我们不想为该特定字段提供值,即我们不关心它在哪年哪月哪日执行——只希望它每 12 小时执行一次,那么只需添加一个星号即可。

一开始可能会让人感到困惑,所以才有了像在线“Crontab 生成器”这样的优秀资源,它允许你使用一个友好的应用程序来生成格式!当然还有“Cron Guru”这个网站!
https://crontab-generator.org/
https://crontab.guru/

可以使用 crontab -e 编辑 Crontab,您可以选择一个编辑器(例如 Nano)来编辑您的 crontab。

image

Task 7 Maintaining Your System: Package Management

  • 软件包和软件仓库简介

当开发者希望向社区提交软件时,他们会将其提交到“apt”仓库。如果获得批准,他们的程序和工具就会被发布到公众面前。Linux 的两个最可取之处就在这里凸显出来:用户可访问性和开源工具的优势。

在 Ubuntu 20.04 Linux 机器上使用 ls 命令时,这些文件充当网关/注册表。
image

image

虽然操作系统供应商会维护自己的软件仓库,但您也可以将社区软件仓库添加到列表中!这可以让您扩展操作系统的功能。您可以使用 add-apt-repository 命令或列出其他供应商来添加其他软件仓库!例如,一些供应商会拥有距离其地理位置较近的软件仓库。

  • 管理您的存储库(添加和删除)

通常我们使用 apt 命令将软件安装到 Ubuntu 系统上。apt 命令是软件包管理软件(也称为 apt)的一部分。apt 包含一整套工具,允许我们管理软件包和源代码,并同时安装或删除软件。

添加软件仓库的一种方法是使用上面演示的 add-apt-repository 命令,但我们将逐步介绍如何手动添加和删除软件仓库。虽然您可以使用 dpkg 等软件包安装程序来安装软件,但 apt 的优势在于,每当我们更新系统时,包含我们添加的软件的仓库也会被检查更新。

在本例中,我们将文本编辑器 Sublime Text 作为仓库添加到我们的 Ubuntu 计算机中,因为它不属于默认的 Ubuntu 软件仓库。添加软件时,下载内容的完整性由所谓的 GPG(Gnu Privacy Guard)密钥来保证。这些密钥本质上是开发人员进行的安全检查,用于告知用户“这是我们的软件”。如果密钥与您的系统信任的密钥以及开发人员使用的密钥不匹配,则软件将无法下载。

因此,首先,我们需要为 Sublime Text 3 的开发人员添加 GPG 密钥。(请注意,TryHackMe 实例无法访问互联网,因此我们不希望您将此密钥添加到您部署的机器上,否则会导致失败。)

  1. 让我们下载 GPG 密钥并使用 apt-key 信任它:wget -qO - https://download.sublimetext.com/sublimehq-pub.gpg | sudo apt-key add -
  2. 现在我们已经将此密钥添加到信任列表,接下来可以将 Sublime Text 3 的仓库添加到 apt 源列表中。一个好的做法是,为每个添加的社区/第三方仓库创建一个单独的文件。
    2.1. 让我们在 /etc/apt/sources.list.d 中创建一个名为 sublime-text.list 的文件,并输入存储库信息,如下所示:
    image
    2.2. 现在使用 Nano 或您选择的文本编辑器将 Sublime Text 3 存储库添加并保存到这个新创建的文件中:
    image
    2.3. 添加此条目后,我们需要更新 apt 以识别此新条目——这可以通过使用 apt update 命令完成
    2.4. 成功更新后,我们现在可以继续安装我们信任的软件,并使用 apt install sublime-text 添加到 apt 中
    删除软件包就像逆向操作一样简单。可以使用 add-apt-repository --remove ppa:PPA_Name/ppa 命令,或者手动删除之前添加的文件。删除后,我们只需使用 apt remove [software-name-here] 命令即可,例如 apt remove sublime-text

Task 8 Maintaining Your System: Logs

我们在“Linux 基础知识 第一部分”中简要介绍了日志文件及其位置。现在,让我们快速回顾一下。这些文件和文件夹位于 /var/log 目录中,包含系统上运行的应用程序和服务的日志信息。操作系统 (OS) 已经非常擅长通过一个称为“轮换”的过程自动管理这些日志。

我重点介绍了 Ubuntu 机器上运行的三个服务的一些日志:
Apache2 Web 服务器
fail2ban 服务的日志,例如,该服务用于监控暴力破解尝试
UFW 服务,用作防火墙

image

这些服务和日志是监控系统健康状况并保护系统安全的有效方法。不仅如此,Web 服务器等服务的日志还包含每个请求的信息,方便开发人员或管理员诊断性能问题或调查入侵者的活动。例如,以下两种类型的日志文件值得关注:
access log
error log
image

Task 9 Conclusions & Summaries

欢迎来到 Linux 基础知识模块的尾声。随着时间的推移,你对 Linux 的熟悉程度会不断提升。Linux 拥有相对轻松地完成强大任务的潜力(希望你已经在本模块中有所体会)。

总结一下,本课程介绍了以下主题:

使用终端文本编辑器
常用实用程序,例如使用 Python Web 服务器下载和提供内容
进程概览
使用 crontab、软件包管理和查看日志来维护和自动化你的系统

在其他一些专门用于 Linux 工具或实用程序的 TryHackMe 房间中继续学习:
Bash Scripting - https://tryhackme.com/room/bashscripting
Regular Expressions - https://tryhackme.com/room/catregex

posted @ 2025-10-22 04:51  sec875  阅读(8)  评论(0)    收藏  举报