《网络攻防实践》假期作业
这个作业属于哪个课程 | 课程链接 |
这个作业的要求在哪里 | 作业要求 |
我在这个课程的目标是 | 学习网络攻防的相关概念和技术并加以实践 |
这个作业在哪些具体方面帮助我实现目标 | 了解网络攻防的基础知识 掌握 Markdown 标记语言 使用虚拟机软件安装 Linux 操作系统 学习常用的 Linux 命令 |
作业正文 | 见本文正文内容 |
参考文献 |
Markdown 教程 网络攻击与防御技术研究 |
作业一
- 你对网络攻击和防御了解多少?该课程需要计算机和网络相关的基础知识,你原专业是什么专业,目前你掌握多少基础知识?
- 作业要使用 Markdown 格式。
网络攻击
- 网络攻击是指对网络的保密性、完整性、不可抵赖性、可用性、可控性产生危害的任何行为,可抽象分为信息泄露、完整性破坏、拒绝服务攻击和非法访问四种基本类型。
- 网络攻击的基本特征是:由攻击者发起并使用一定的攻击工具,对目标网络系统进行攻击访问,并呈现一定的攻击效果,实现了攻击者的攻击意图。
- 网络攻击方式一般可分为读取攻击、操作攻击、欺骗攻击、泛洪攻击、重定向攻击和 Rootkits 技术等。
- 实施网络攻击的过程虽然复杂多变,但是仍有规律可循。一次成功的网络攻击通常包括信息收集、网络隐身、端口和漏洞扫描、实施攻击、设置后门和痕迹清除等步骤。
网络防御
- 网络防御主要是用于防范网络攻击,随着网络攻击手段的不断进步,防御技术也从被动防御转向主动防御。现有防御技术大体可以分为数据加密、访问控制、安全检测、安全监控和安全审计技术等,综合运用这些技术,根据目标网络的安全需求,有效形成网络安全防护的解决方案,可以很好地抵御网络攻击。
- 常见的网络防御技术有信息加密、访问控制、防火墙、入侵防御、恶意代码防范、安全审计与查证等。
其他
我本科的专业是计算机科学与技术,目前尚未接触过网络攻防相关的技术,期待今后的学习;本文已使用 Markdown 格式进行编写,本地使用的文本编辑器是 Visual Studio Code,可方便地即时预览编写效果,如图所示:
作业二
你自己动手安装过操作系统吗?如果没有的话现在动手学一下吧。
- 学习基于 VirtualBox 虚拟机安装 Ubuntu 图文教程在自己笔记本上安装 Linux 操作系统。
- 通过实践学习别出心裁的 Linux 命令学习法,掌握 Linux 命令的学习方法。
- 参考上面的学习方法通过实践学习 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
查看文件:
使用 more
和 less
命令分页查看文件:
如果说上面的 cat
是用来快速查看一个文件的内容的,那么这个 more
和 less
就是天生用来“阅读”一个文件的内容的,比如说 man
手册内部就是使用的 less
来显示内容。其中 more
命令比较简单,只能向一个方向滚动,而 less
为基于 more
和 vi(一个编辑器)开发,功能更强大。less
的使用基本和 more
一致.
使用 head
和 tail
命令查看文件:
这两个命令,一个是只查看文件的头几行(默认为 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