《网络攻防实践》寒假作业
前言
这个作业属于那个课程 | 《网络攻防实践》 |
---|---|
这个作业的要求在哪里 | 《网络攻防实践》假期作业 |
我在这个课程的目标是 | 学习并了解网络攻防的相关知识,能够进行独立的实际操作 |
这个作业在哪个具体方面帮助我实现目标 | 该作业主要帮助我学习markdown的相关用法以及Linux的常用命令,为学习网络攻防实践课做好准备 |
作业正文 | 作业一、作业二 |
参考文献 | https://www.cnblogs.com/math/p/se-tools-001.html、https://www.cnblogs.com/math/p/exceltk.html、https://www.cnblogs.com/Pandaman/p/markdown.html |
作业一
(1)你对网络攻击和防御了解多少?该课程需要计算机和网络相关的基础知识,你原专业是什么专业,目前你掌握多少基础知识?
(2)作业要使用Markdown格式,Markdown入门参考(需掌握)。
-
我本科是软件工程专业,学习过《计算机网络》课程,了解一些网络相关的基本知识。但所学习知识尚浅,仍需努力学习相关知识。
攻击技术:网络扫描,网络监听,网络入侵,网络后门,网络隐身
防御技术:安全操作系统和操作系统的安全配置,加密技术,防火墙技术,入侵检测,网络安全协议。
作业二
(1)学习基于VirtualBox虚拟机安装Ubuntu图文教程在自己笔记本上安装Linux操作系统(也可以使用 VMWare安装虚拟机,安装方法自己百度)
(2)通过实践学习别出心裁的Linux命令学习法,掌握Linux命令的学习方法
(3)参考上面的学习方法通过实践学习Linux 基础入门(新版)课程,掌握常用的Linux命令,重点是3/4/5/6/7/8节。
基于VMWare安装虚拟机Ubuntu
Linux命令
-
使用Ubuntu有几个快捷键要掌握一下,可以提高使用命令行的效率:
CTRL+ALT+T
:打开终端,天天使用终端,用鼠标打开太低效了;
CTRL+SHIFT+T
:新建标签页,编程时有重要应用;
ALT+数字N
:终端中切换到第N个标签页,编程时有重要应用;
Tab
:终端中命令补全,当输入某个命令的开头的一部分后,按下Tab
键就可以得到提示或者帮助完成;
上下键盘
:切换命令历史,刚输入一个很长的命令,按上
键就可以恢复;
CTRL+C
:中断程序运行。登录Linux后,我们就可以在#或$符后面去输入命令,有的时候命令后面还会跟着
选项
(options)或参数
(arguments)。即Linux中命令格式为:command [options] [arguments] //中括号代表是可选的,即有些命令不需要选项也不需要参数
其中
选项(option)
是调整命令执行行为的开关,选项
不同决定了命令的显示结果不同,参数(arugment)
是指命令的作用对象。如ls命令,
ls
或ls .
是两条等价的命令,显示是当前目录的内容,这里“.”就是参数,表示当前目录,这个参数缺省可以省略。我们可以用
ls -a .
显示当前目录中的所有内容,包括隐藏文件和目录。其中“-a” 就是选项,改变了显示的方式,如下图所示:以上简要说明了Linux命令以及选项和参数的区别,但具体Linux中哪条命令有哪些选项及参数,以及如何使用,需要我们靠经验积累或者查看Linux的帮助文档了。
-
man命令
不论学习编程还是Linux命令,掌握帮助文档的使用都是很重要的,是举一反三的重要途径。
man
是manual的缩写,我们可以通过man man来查看man
的帮助,如下图:帮助文档包含:
1 Executable programs or shell commands(用户命令帮助) //普通的Linux命令 2 System calls (系统调用帮助) //系统调用,操作系统的提供的服务接口 3 Library calls (库函数调用帮助) //库函数, C语言中的函数 4 Special files (usually found in /dev) //指文件的格式,比如passwd, 就会说明这个文件中各个字段给游戏留的,由各个游戏自己定义 6 Games //给游戏留的,由各个游戏自己定义 7 Miscellaneous (including macro packages and conventions), e.g. man(7), groff(7) //附件还有一些变量,比如向environ这种全局变量在这里就有说明 8 System administration commands (usually only for root) //系统管理用的命令,这些命令只能由root使用,如ifconfig
结合后面学习的grep 命令和管道,可以多关键字查找:
man -k key1 | grep key2 | grep key3 | ...
例如使用
man -k sort | grep 3
,可以更好的找到qsort,你可以试试。man -k
有个等价的命令apropos
,大家可以学习一下。使用
man -k
找到命令后,可以用man -f cmd
查看命令的基本功能。man -f
等价于whatis
.
Linux基础入门
-
Linux用户管理
who 命令常用参数 //-a 打印能打印的全部 //-d 打印死掉的进程 //-m 同am i,mom likes //-q 打印当前登录用户数及用户名 //-u 打印当前登录用户登录信息 //-r 打印运行等级 sudo adduser *** //创建用户 sudo passwd *** //设置密码 su *** //切换用户 groups *** //加入用户组 sudo usermod -G sudo *** //给sudo权限 sudo deluser *** --remove-home //删除用户及其目录 cat /etc/group | grep -E "lilei" //lilei:x:1000;group_name:password:GID:user_list Linux 下密码输入是不显示任何内容的 退出当前用户跟退出终端一样可以使用 exit 命令或者使用快捷键 Ctrl+d
-
Linux文件权限
ls -l //使用较长格式列出文件 ls -Al //查看文件 ls -dl <目录名> //查看某一个目录的完整属性,而不是显示目录里面的文件属性: ls -AsSh //显示所有文件大小,并以普通人类能看懂的方式呈现: touch filename //创建文件 sudo chown dou** filename //变更文件所有者 echo "echo \"hello dou\"" > filename //加内容 chmod XXX filename //赋予文件权限,XXX分别是0-7的三个数字分别代表user和groups、others //1 2 4 三个数字分别代表x执行、w写和r读,加和为7 sudo chmod 777 filename //给出了最大的权限
adduser
和useradd
的区别是什么?答:useradd 只创建用户,创建完了用 passwd lilei 去设置新用户的密码。adduser 会创建用户,创建目录,创建密码(提示你设置),做这一系列的操作。其实 useradd、userdel 这类操作更像是一种命令,执行完了就返回。而 adduser 更像是一种程序,需要你输入、确定等一系列操作。
-
Linux的目录结构
cd .. //进入上一级目录 pwd //获取当前路径 cd /usr/local/bin //绝对路径 cd ../../usr/local/bin //相对路径
-
Linux文件的基本操作
文件: touch filename // 新建文件 目录: mkdir xxx //新建xxx目录 //-p 新建多级目录(mkdir -p father/son/grandson) cp xxx /home/shiyanlou //拷贝xxx文件夹到home/shiyanlou目录下 rm xxx //删除xxx文件夹后加 //-f 强制删除 //-r 删除文件夹 mv xxx /home/shiyanlou // 移动xxx文件夹到home/shiyanlou目录下 touch file{1..5}.txt //使用通配符批量创建 5 个文件 rename 's/\.txt/\.c/' *.txt //批量将这 5 个后缀为 .txt 的文本文件重命名为以 .c 为后缀的文件 rename 'y/a-z/A-Z/' *.c //批量将这 5 个文件,文件名和后缀改为大写 cat filename // 顺序查看文件 //-n 添加行数 nl filename //查看文件,显示行号,并且比前两个显示更专业 file filename //查看文件类型 head filename //显示文件前10行 tail filename //显示文件尾 (tail -n 1 /etc/passwd //只看一行, 加上 -n 参数,后面紧跟行数)
-
环境变量
declare tmp //创建变量名 tmp=*** //变量名=赋值名 echo $tmp //读取变量的值 $ 符号用于表示引用一个变量的值 //并不是任何形式的变量名都是可用的,变量名只能是英文字母、数字或者下划线,且不能以数字作为开头。 set env export //用于打印环境变量信息,区别在于涉及的变量范围不同 // 修改变量 path=$PATH:绝对路径 $ echo $path //查看 PATH 环境变量的内容 touch hello_shell.sh gedit hello_shell.sh //创建一个 Shell 脚本文件 $ path=${path%/home/shiyanlou/mybin} // 或使用通配符,*表示任意多个任意字符 $ path=${path%*/mybin} unset temp //删除变量 source .zshrc //变量立即生效 whereis who whereis find //简单快速搜索文件 whereis filename //只能搜索二进制文件(-b),man帮助文件(-m)和源代码文件(-s) locate filename //可以用来查找指定目录下的不同文件类型,但需要`apt-get install locate` which filename //我们通常使用 which 来确定是否安装了某个指定的软件,因为它只从 PATH 环境变量指定的路径中去搜索命令 find filename //它可以通过文件类型、文件名进行查找,也可以根据文件的属性(如文件的时间戳,文件的权限等)进行搜索。 -atime //最后访问时间 -ctime //最后修改文件内容的时间 -mtime //最后修改文件属性的时间 ( -mtime n //n 为数字,表示为在 n 天之前的“一天之内”修改过的文件 -mtime +n //列出在 n 天之前(不包含 n 天本身)被修改过的文件 -mtime -n //列出在 n 天之内(包含 n 天本身)被修改过的文件 -newer file //file 为一个已存在的文件,列出比 file 还要新的文件名)
sudo find /etc -name sources.list //找到sources.list文件
sudo chown shiyanlou /etc/apt/sources.list //把文件所有者改为自己
sudo chmod 600 /etc/apt/sources.list //把权限修改为仅仅只有自己可读可写
-
Linux常用的压缩/解压工具
压缩 tar –cvf *.tar /home/dou/Desktop // 打包/home/dou/Desktop目录*.tar tar –czf *.tar.gz /home/dou/Desktop // 打包/home/dou/Desktop目录为*.tar.gz zip -r -(9-1) -q -o -e *.zip /home/dou/Desktop // ( r 参数表示递归打包包含子目录的全部内容,-q 参数表示为安静模式,即不向屏幕输出信息,-o,表示输出文件,需在其后紧跟打包输出文件名。-(9-1) 压缩级别 -e创建加密压缩包) 解压 tar –xvf *.tar // 解压*.tar tar -xzvf *.tar.gz // 解压*.tar.gz unzip *.zip // 解压*.zip du -h -d *.zip // 查看打包后文件的大小
-
文件系统操作
-
基本操作
df //显示磁盘容量 du //显示目录大小 -h //更易于阅读 -d //显示深度 -s //显示总计
-
简单的磁盘管理
dd of=test bs=10 count=1 # 或者 dd if=/dev/stdin of=test bs=10 count=1 //输出到文件 dd if=/dev/stdin of=/dev/stdout bs=10 count=1 //输出到标准输出 //注,在打完了这个命令后,继续在终端打字,作为你的输入 dd if=/dev/stdin of=test bs=10 count=1 conv=ucase //dd在拷贝的同时还可以实现数据转换,将输出的英文字符转换为大写再写入文件 dd if=/dev/zero of=virtual.img bs=1M count=256 //从/dev/zero设备创建一个容量为 256M 的空文件 du -h virtual.img sudo mkfs.ext4 virtual.img //将磁盘镜像格式化为ext4文件系统 sudo mount //使用mount查看主机已经挂载的文件系统 mount -o loop -t ext4 virtual.img /mnt //挂载我们创建的虚拟磁盘镜像到/mnt目录 sudo umount /mnt //卸载 sudo fdisk -l //查看硬盘分区表信息 sudo fdisk virtual.img //中间的分区信息
-
-
内建命令与外部命令(type 命令来区分命令是内建的还是外部的)
内建命令实际上是 shell 程序的一部分,其中包含的是一些比较简单的 Linux 系统命令,这些命令是写在bash源码的builtins里面的,由 shell 程序识别并在 shell 程序内部完成运行,通常在 Linux 系统加载运行时 shell 就被加载并驻留在系统内存中。而且解析内部命令 shell 不需要创建子进程,因此其执行速度比外部命令快。比如:history、cd、exit 等等。 外部命令是 Linux 系统中的实用程序部分,因为实用程序的功能通常都比较强大,所以其包含的程序量也会很大,在系统加载时并不随系统一起被加载到内存中,而是在需要时才将其调入内存。虽然其不包含在 shell 中,但是其命令执行过程是由 shell 程序控制的。外部命令是在 Bash 之外额外安装的,通常放在/bin,/usr/bin,/sbin,/usr/sbin等等。比如:ls、vi等。 -
帮助命令
help //help 命令是用于显示 shell 内建命令的简要帮助信息。 man //man 工具是显示系统手册页中的内容,也就是一本电子版的字典,这些内容大多数都是对命令的解释信息,还有一些相关的描述。通过查看系统文档中的 man 也可以得到程序的更多相关信息和 Linux 的更多特性。 info //得到的信息比 man 还要多,info 来自自由软件基金会的 GNU 项目,是 GNU 的超文本帮助系统,能够更完整的显示出 GNU 信息。