《网络攻防实践》假期作业


这个作业属于哪个课程?

https://edu.cnblogs.com/campus/besti/19attackdefense

这个作业的要求在哪里?

https://edu.cnblogs.com/campus/besti/19attackdefense/homework/10228

我在这个课程的目标是:

学习网络攻防的相关概念和技术并加以实践。

这个作业在哪些具体方面帮助我实现目标:

  • 了解网络攻防的基础知识
  • 掌握 Markdown 标记语言
  • 使用虚拟机软件安装 Linux 操作系统
  • 学习常用的 Linux 命令

作业正文

见本文正文内容

参考文献

Markdown 教程

网络攻击与防御技术研究


作业一

  1. 你对网络攻击和防御了解多少?该课程需要计算机和网络相关的基础知识,你原专业是什么专业,目前你掌握多少基础知识?
  2. 作业要使用 Markdown 格式。

网络攻击

  • 网络攻击是指对网络的保密性、完整性、不可抵赖性、可用性、可控性产生危害的任何行为,可抽象分为信息泄露、完整性破坏、拒绝服务攻击和非法访问四种基本类型。
  • 网络攻击的基本特征是:由攻击者发起并使用一定的攻击工具,对目标网络系统进行攻击访问,并呈现一定的攻击效果,实现了攻击者的攻击意图。
  • 网络攻击方式一般可分为读取攻击、操作攻击、欺骗攻击、泛洪攻击、重定向攻击和 Rootkits 技术等。
  • 实施网络攻击的过程虽然复杂多变,但是仍有规律可循。一次成功的网络攻击通常包括信息收集、网络隐身、端口和漏洞扫描、实施攻击、设置后门和痕迹清除等步骤。

网络防御

  • 网络防御主要是用于防范网络攻击,随着网络攻击手段的不断进步,防御技术也从被动防御转向主动防御。现有防御技术大体可以分为数据加密、访问控制、安全检测、安全监控和安全审计技术等,综合运用这些技术,根据目标网络的安全需求,有效形成网络安全防护的解决方案,可以很好地抵御网络攻击。
  • 常见的网络防御技术有信息加密、访问控制、防火墙、入侵防御、恶意代码防范、安全审计与查证等。

其他

我本科的专业是计算机科学与技术,目前尚未接触过网络攻防相关的技术,期待今后的学习;本文已使用 Markdown 格式进行编写,本地使用的文本编辑器是 Visual Studio Code,可方便地即时预览编写效果,如图所示:


作业二

你自己动手安装过操作系统吗?如果没有的话现在动手学一下吧。

  1. 学习基于 VirtualBox 虚拟机安装 Ubuntu 图文教程在自己笔记本上安装 Linux 操作系统。
  2. 通过实践学习别出心裁的 Linux 命令学习法,掌握 Linux 命令的学习方法。
  3. 参考上面的学习方法通过实践学习 Linux 基础入门(新版)课程,掌握常用的 Linux 命令,重点是3/4/5/6/7/8节。

我这里使用 Parallels Desktop 虚拟机软件,已经成功安装了 Linux 操作系统,如图:


1 常用快捷键

  • Ctrl + Alt + T:打开终端
  • Ctrl + D:退出终端
  • Ctrl + Shift + T:新建标签页
  • Ctrl + Shift + W:关闭当前标签页
  • Alt + 数字 N:终端中切换到第 N 个标签页
  • Tab:终端命令补全
  • ⬆️⬇️:切换命令历史
  • Ctrl + C:中断程序运行
  • Ctrl + A:光标移至输入行头
  • Ctrl + E:光标移至输入行尾
  • Ctrl + K:删除光标所在位置至行末

2 Linux 简介

1991 年 10 月,Linus Torvalds(Linux 之父)在赫尔辛基大学接触 UNIX,他希望能在自己的电脑上运行一个类似的操作系统。可是 UNIX 的商业版本非常昂贵,于是他从 MINIX 开始入手,计划开发一个比 MINIX 性能更好的操作系统。很快他就开始了自己的开发工作。他第一次发行的版本迅速吸引了一些黑客。尽管最初的 Linux 并没有多少用处,但由于一些黑客的加入使它很快就具有了许多吸引人的特性,甚至一些对操作系统开发不感兴趣的人也开始关注它。

Linux 本身只是操作系统的内核。内核是使其它程序能够运行的基础。它实现了多任务和硬件管理,用户或者系统管理员交互运行的所有程序实际上都运行在内核之上。其中有些程序是必需的,比如说,命令行解释器(shell),它用于用户交互和编写 shell 脚本。 Linus 没有自己去开发这些应用程序,而是使用已有的自由软件。这减少了搭建开发环境所需花费的工作量。实际上,他经常改写内核,使得那些程序能够更容易地在 Linux 上运行。许多重要的软件,包括 C 编译器,都来自于自由软件基金 GNU 项目。GNU 项目开始于 1984 年,目的是为了开发一个完全类似于 UNIX 的免费操作系统。为了表扬 GNU 对 Linux 的贡献,许多人把 Linux 称为 GNU/Linux(GNU 有自己的内核)。

1992-1993 年,Linux 内核具备了挑战 UNIX 的所有本质特性,包括 TCP/IP 网络,图形界面系统(X window ),Linux 同样也吸引了许多行业的关注。一些小的公司开始开发和发行 Linux,有几十个 Linux 用户社区成立。1994 年,Linux 杂志也开始发行。

Linux 内核 1.0 在 1994 年 3 月发布,内核的发布要经历许多开发周期,直至达到一个稳定的版本。

Linux 主要是上图中系统调用和内核这两层。

3 基本命令

  • pwd:显示当前目录
  • ls:列出当前目录下文件
  • cd ..:返回上级目录(相对路径表示方法)
  • cd:访问目录,后跟当前目录下文件夹名称或绝对/相对路径
  • man:获取命令帮助
  • touch:创建文件
  • clear:清屏

4 用户及文件权限管理

  • 查看用户

使用 whoami 查看当前登录用户:

  • 创建用户

新建一个名为 lilei 的用户:

sudo adduser lilei

切换登录用户:

su -l lilei

使用 whoami 查看当前登录用户,使用 exit 退出登录。

  • 用户组

查看用户组:groups + 用户名称

为用户添加用户组: usermod

将 lilei 添加到 sudo 用户组:

sudo usermod -G sudo lilei

  • 删除用户

删除用户命令:

sudo deluser lilei --remove-home

  • 查看文件权限

使用较长格式列出文件:ls -l

  • 变更文件所有者

使用 lilei 登录并创建一个名为 iphone 的文件,可见文件所有者为 lilei:

换回 parallels 身份,使用以下命令变更文件所有者为 parallels:

sudo chown parallels iphone

  • 修改文件权限

方式一:二进制数字表示

每个文件的三组权限(拥有者,所属用户组,其他用户)对应一个“rwx”,也就是一个“7”,所以如果将文件“iphone”的权限改为只有自己可以用那么就这样:

为了演示,先在文件里加点内容:

echo "echo \"hello shiyanlou\"" > iphone

然后修改权限:

chmod 600 iphone

现在,其他用户已经不能读这个“iphone”文件了:

方式二:加减赋值操作

完成上述相同的效果,可以:

chmod go-rw iphone

g、o 还有 u 分别表示 group、others 和 user,+ 和 - 分别表示增加和去掉相应的权限。

5 Linux 目录结构及文件基本操作

5.1 Linux 目录结构

Linux 是以树形目录结构的形式来构建整个系统的,可以理解为树形目录是一个用户可操作系统的骨架。虽然本质上无论是目录结构还是操作系统内核都是存储在磁盘上的,但从逻辑上来说 Linux 的磁盘是挂载在目录上的,每一个目录不仅能使用本地磁盘分区的文件系统,也可以使用网络上的文件系统。举例来说,可以利用网络文件系统(Network File System,NFS)服务器载入某特定目录等。

5.2 Linux 文件的基本操作

创建名为 test 的空白文件:

touch test

创建名为 mydir 的空目录:

mkdir mydir

使用参数 -p 创建一个多极目录:

mkdir -p father/son/grandson

将文件 test 复制到刚创建的目录:

cp test father/son/grandson

新建一个 family 目录,并将上述 father 目录复制到该目录(使用参数 -r):

mkdir family
cp -r father family


删除文件 test:

rm test

rm -f test

( -f 表示强制删除,忽略文件属性)

删除目录:

rm -r family


将文件 file 移动到 documents 目录下:

touch file
mkdir documents
mv file documents


重命名文件 file 为 file1:

mv file file1

使用 cat 查看文件:

使用 moreless 命令分页查看文件:

如果说上面的 cat 是用来快速查看一个文件的内容的,那么这个 moreless 就是天生用来“阅读”一个文件的内容的,比如说 man 手册内部就是使用的 less 来显示内容。其中 more 命令比较简单,只能向一个方向滚动,而 less 为基于 more 和 vi(一个编辑器)开发,功能更强大。less 的使用基本和 more 一致.

使用 headtail 命令查看文件:

这两个命令,一个是只查看文件的头几行(默认为 10 行,不足 10 行则显示全部)和尾几行。

甚至更直接的只看一行, 加上 -n 参数,后面紧跟行数:

tail -n 1 /etc/passwd

关于 tail 命令参数 -f,这个参数可以实现不停地读取某个文件的内容并显示。这可以让我们动态查看日志,达到实时监视的目的。

使用 file 命令查看文件类型:

6 环境变量与文件查找

6.1 环境变量

使用 declare 声明一个变量:

declare tmp

其实也可以不用 declare 预声明一个变量,直接即用即创建,这里只是表示 declare 的作用,这在创建其它指定类型的变量(如数组)时会用到。

使用 = 号赋值运算符,将变量 tmp 赋值为 shiyanlou

tmp=shiyanlou

读取变量的值,使用 echo 命令和 $ 符号($ 符号用于表示引用一个变量的值):

echo $tmp

注意:并不是任何形式的变量名都是可用的,变量名只能是英文字母、数字或者下划线,且不能以数字作为开头。

环境变量的作用域比自定义变量的要大,如 Shell 的环境变量作用于自身和它的子进程。在所有的 UNIX 和类 UNIX 系统中,每个进程都有其各自的环境变量设置,且默认情况下,当一个进程被创建时,除了创建过程中明确指定的话,它将继承其父进程的绝大部分环境设置。Shell 程序也作为一个进程运行在操作系统之上,而我们在 Shell 中运行的大部分命令都将以 Shell 的子进程的方式运行。

6.2 搜索文件

  • whereis 简单快速
whereis who
whereis find

whereis 并没有从硬盘中依次查找,而是直接从数据库中查询。whereis 只能搜索二进制文件(-b),man 帮助文件(-m)和源代码文件(-s)。如果想要获得更全面的搜索结果可以使用 locate 命令。

  • locate 快而全

通过“/var/lib/mlocate/mlocate.db ”数据库查找,不过这个数据库也不是实时更新的,系统会使用定时任务每天自动执行 updatedb 命令更新一次,所以刚添加的文件,它可能会找不到,需要手动执行一次 updatedb 命令。它可以用来查找指定目录下的不同文件类型,如查找 /etc 下所有以 sh 开头的文件:

sudo apt-get update
sudo apt-get install locate
locate /etc/sh

查找 /usr/share/ 下所有 jpg 文件:

locate /usr/share/\*.jpg
  • which 小而精

which 本身是 Shell 内建的一个命令,我们通常使用 which 来确定是否安装了某个指定的软件,因为它只从 PATH 环境变量指定的路径中去搜索命令:

which man
  • find 精而细

find 应该是这几个命令中最强大的了,它不但可以通过文件类型、文件名进行查找而且可以根据文件的属性(如文件的时间戳,文件的权限等)进行搜索。

这条命令表示去 /etc/ 目录下面 ,搜索名字叫做 interfaces 的文件或者目录。这是 find 命令最常见的格式,find 的第一个参数是要搜索的地方:

sudo find /etc/ -name interfaces

7 文件打包与解压缩

  • 使用 zip 打包文件
zip -r -q -o pass.zip /home/parallels/Desktop/passwd
du -h pass.zip
file pass.zip

第一行命令中,-r 参数表示递归打包包含子目录的全部内容,-q 参数表示为安静模式,即不向屏幕输出信息,-o 表示输出文件,需在其后紧跟打包输出文件名。后面使用 du 命令查看打包后文件的大小。

  • 使用 unzip 解压缩

解压到当前目录:

unzip pass.zip

使用安静模式,将文件解压到指定目录:

unzip -q pass.zip -d ziptest

上述指定目录不存在,将会自动创建。如果不想解压只想查看压缩包的内容,可以使用 -l 参数:

unzip -l pass.zip
  • 创建一个 tar
tar -P -cf test.tar /home/parallels/Desktop/passwd

上面命令中,-P 保留绝对路径符,-c 表示创建一个 tar 包文件,-f 用于指定创建的文件名,注意文件名必须紧跟在 -f 参数之后,比如不能写成 tar -fc shiyanlou.tar,可以写成 tar -f shiyanlou.tar -c。还可以加上 -v 参数以可视的方式输出打包的文件。

  • 解包一个文件(-x 参数)到指定路径的已存在目录(-C 参数):
mkdir tardir
tar -xf test.tar -C tardir
  • 只查看不解包文件 -t 参数:
tar -tf test.tar

  • 只需要在创建 tar 文件的基础上添加 -z 参数,使用 gzip 来压缩文件:
tar -czf test.tar.gz /home/parallels/Desktop/passwd
  • 解压 *.tar.gz 文件:
tar -xzf test.tar.gz

8 文件系统操作与磁盘管理

使用 df 命令查看磁盘的容量:

使用 du 命令查看目录的容量:

常用参数:

du -h #同--human-readable 以K,M,G为单位,提高信息的可读性。
du -a #同--all 显示目录中所有文件的大小。
du -s #同--summarize 仅显示总计,只列出最后加总的值。

9 Linux 下的帮助命令

help 命令是用于显示 shell 内建命令的简要帮助信息:

man 工具是显示系统手册页中的内容,也就是一本电子版的字典:

man ls

info 来自自由软件基金会的 GNU 项目,是 GNU 的超文本帮助系统,能够更完整的显示出 GNU 信息:

info ls

猜你喜欢

转载自www.cnblogs.com/kidling/p/12264172.html