zoukankan      html  css  js  c++  java
  • 《网络攻防实践》假期作业

    这个作业属于哪个课程 课程链接
    这个作业的要求在哪里 作业要求
    我在这个课程的目标是 学习网络攻防的相关概念和技术并加以实践
    这个作业在哪些具体方面帮助我实现目标 了解网络攻防的基础知识
    掌握 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
    

  • 相关阅读:
    shell 使用Seq算出1-100的奇数之和
    Shell脚本判断是否是闰年
    shell脚本之使用bc工具实现数值转换(浮点转二进制)
    shell脚本之函数的参数
    shell脚本之while
    大数据JAVA基础第十六天
    大数据JAVA基础第十五天
    大数据JAVA基础第十四天
    大数据JAVA基础第十三天
    大数据JAVA基础第十二天
  • 原文地址:https://www.cnblogs.com/kidling/p/12264172.html
Copyright © 2011-2022 走看看