THREE DAY | 网络安全之Linux(包含Linux常用命令,镜像下载,docker命令等内容)超详细!!!
THREE DAY | 网络安全之Linux
一、Linux介绍
1、Linux系统简介
Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
Linux存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。
严格来讲,Linux操作系统指的是“linux内核+各种软件”,Linux这个词只表示Linux内核,但实际上人们已经习惯了用Linux来形容整个基于Linux内核,并且使用GNU 工程各种工具和数据库的操作系统。
1-1、Linux历史
linux内核是林纳斯·托瓦兹(Linus Torvalds)最先设计的。在1988年,托瓦兹进入了赫尔辛基大学,选读了计算机科学系。在学校期间,因为学业的需要与自己的兴趣,接触到了unix这个操作系统。当时整个赫尔辛基只有一部最新的UNIX系统,但是仍然很难满足托瓦兹的需求。为此,他就想到自己写一个类unix操作系统。
1991年初,林纳斯·托瓦兹购买了最新的intel 386的个人计算机,安装了Minix系统,开始学习minix操作系统。经由Minix系统的源码学习到了很多的内核程序设计的设计概念。1991年4月,林纳斯·托瓦兹开始酝酿并着手编制自己的操作系统。
一个人的力量毕竟是有限的。有些硬件托瓦兹无法取得,因此无法编写相关驱动程序,这个时候,就有志愿者站出来帮忙写驱动程序。而且托瓦兹这个人还特别务实。只要经测试可以运行后,就会将这些程序代码加入到内核中。因为这样的状况,linux的开发逐渐模块化,可维护性也大大增加。
后来,因为Linux内核加入了太多的功能,光靠托瓦兹一个人进行内核的实际测试并加入内核源程序实在太费力,于是,就有很多的朋友跳出来帮忙。例如考克斯(Alan Cox)、与崔迪(Stephen Tweedie)等,这些重要的副手会先将志愿者的修补程序或者新功能的程序代码进行测试,并且将结果上传给托瓦兹看,让托瓦兹做最后内核加入的源码的选择与整并!这个分层负责的结果让Linux的开发更加容易!
特别值得注意的是,这些托瓦兹的Linux开发副手,以及自愿传送修补程序的黑客志愿者,其实都没有见过面,而且彼此分布在地球的各个角落,大家群策群力共同开发出现今的Linux。
1-2、Linux系统的特点
- 跨平台的硬件支持
由于Linux 的内核大部分是用C 语言编写的,并采用了可移植的Unix标准应用程序接口,所以它支持如i386、Alpha、AMD和Sparc等系统平台,以及从个人电脑到大型主机,甚至包括嵌入式系统在内的各种硬件设备。
- 丰富的软件支持
与其他的操作系统不同的是,安装了Linux系统后,用户常用的一些办公软件、图形处理工具、多媒体播放软件和网络工具等都已无需安装。而对于程序开发人员来说,Linux更是一个很好的操作平台,在Linux 的软件包中,包含了多种程序语言与开发工具,如gcc、cc、C++、Tcl/Tk、Perl、Fortran77 等。
- 多用户多任务
和Unix系统一样,Linux系统是一个真正的多用户多任务的操作系统。多个用户可以各自拥有和使用系统资源,即每个用户对自己的资源(例如:文件、设备)有特定的权限,互不影响,同时多个用户可以在同一时间以网络联机的方式使用计算机系统。多任务是现代计算机的最主要的一个特点,由于Linux系统调度每一个进程是平等地访问处理器的,所以它能同时执行多个程序,而且各个程序的运行是互相独立的。
- 可靠的安全性
Linux系统是一个具有先天病毒免疫能力的操作系统,很少受到病毒攻击。
对于一个开放式系统而言,在方便用户的同时,很可能存在安全隐患。不过,利用Linux自带防火墙、入侵检测和安全认证等工具,及时修补系统的漏洞,就能大大提高Linux系统的安全性,让黑客们无机可乘。
- 良好的稳定性
Linux 内核的源代码是以标准规范的32 位(在64 位CPU上是64 位)的计算机来做的最佳化设计,可确保其系统的稳定性。正因为Linux 的稳定,才使得一些安装 Linux 的主机像Unix 机一样常年不关而不曾宕机。
- 完善的网络功能
Linux 内置了很丰富的免费网络服务器软件、数据库和网页的开发工具,如Apache、Sendmail、VSFtp、SSH、MySQL、PHP和JSP 等。近年来,越来越多的企业看到了Linux 的这些强大的功能,利用Linux 担任全方位的网络服务器。
Linux 在它的追捧者眼里是一个近乎完美的操作系统,它具有运行稳定、功能强大、获取方便等优点,因而有着广阔的前景,或许也值得我们每一个计算机爱好者学习和应用。
1-3、Linux系统架构
Linux系统一般有四个主要部分:内核、shell、文件系统、应用程序。 前三者一起构成了基本的操作系统结构,它使得用户可以使用这个操作系统并在系统中完成特定的任务。其结构如下图所示。
1、Linux 内核
内核是操作系统的核心,具有很多最基本功能,它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。
2、Linux shell
shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行,是一个命令解释器。另外,shell编程语言具有普通编程语言的很多特点,用这种编程语言编写的shell程序与其他应用程序具有同样的效果。
3、Linux 文件系统
文件系统是文件存放在磁盘等存储设备上的组织方法。Linux系统能支持多种目前流行的文件系统,如EXT2、 EXT3、 FAT、 FAT32、
VFAT和ISO9660。
4、Linux 程序
标准的Linux系统一般都有一套都有称为应用程序的程序集,它包括文本编辑器、编程语言、X
Window、办公套件、Internet工具和数据库等。
5、Linux 目录(重点)
Linux使用标准的目录结构,在安装时就已经为用户创建了文件系统和完整固定的目录组成形式,并指定了每个目录的作用和其中的文件类型。 在系统中,使用/来表示根目录,用.或./表示当前目录,用. .或. ./ 表示上一层目录。若一个目录或文件名以.开始,则表示这个目录或文件是一个隐藏目录或文件,如.bashrw,在默认方式查找时,不显示该目录或文件。
Linux系统的通过目录结构如下图所示:
二、Linux 发行版本
- Ubuntu
Ubuntu是目前最受欢迎Linux版本。Ubuntu 由标准团队提供给。该发行版具有大量功能,包括出色的 UI/UX、各种开源软件,最重要的是拥有庞大的开发人员和用户社区。
我个人使用的就是Ubuntu,它的相关资料也比较全面,个人推荐。
Ubuntu有多个版本:桌面版、服务器版、用于云和物联网的版本。
Ubuntu是非常适合初学者上手的Linux版本。
Ubuntu派生出不同的桌面环境,包括Lubuntu、Kubuntu、Xubuntu。
- CentOS
CentOS 是社区支持的企业级操作系统,于 2004 年发布。许多人将其称为红帽企业 Linux(RHEL)的副本,它也被认为是在企业中使用最广泛的。它具有高度可定制性,安全性和稳定性,这也是值得欣赏的。不过红帽官方宣布CentOS 8于2021年年底结束维护,代表着centos已死,而centos官方到2024年也停止了维护。
- Linux Mint薄荷
如果你不想了解Linux系统,因为Linux的界面风格和Windows差别太大,那么 Mint就非常适合你,因为它的外观和感觉就像Windows 操作系统。
Linux Mint基于Ubuntu,因此您将享受相同的开源软件,特别是对于一个非常新的初学者
- Kali Linux
一般用户都没听说过Kali Linux,现在就可以听一下他的介绍。Kali Linux(以前称为BackTrack)是很特别的发行版,基于Debian的 版本,专为渗透测试和安全研究而设计。如果你对黑客攻击和网络安全感兴趣,那么这个操作系统会派上用场。它预装了大量安全工具,例如NMAP、Burp Suite 和 Metasploit Framework。
喜欢Kali Linux的三个主要原因是:
用于移动渗透、Web渗透测试和信息收集工具的大量安全工具。
Kali Linux提供三种桌面环境,Gnome Shell、KDE Plasma、Xfce,最近还推出了一种类似于Windows界面Windows OS UI。
Kali Nethunter - 用于渗透测试的移动平台。
必须说,如果你没有丰富的Linux经验,Kali上手可能需要一点时间。
- ParrotOS/鹦鹉OS
Parrot OS是另一个以安全为中心的发行版,Parrot OS带有编程、黑客、隐私和多媒体工具。
其中挑出的一个工具是AnonSurf,该工具通过Tor网络隧道连接互联网,为保护上网隐私。
Parrot OS是一个全方位的发行版,具有许多强大的功能和社区。我会极力推荐它。如果您想立即开始,请访问他们的官方网站。
- Fedora
Fedora是不怎么大众的Linux发行版,我对它没有太多了解,但我必须在这里强调,因为它有一个非常大的社区,并且得到了RedHat等大公司的支持。微信搜索readdot,关注后回复编程资源获取23种精品资料
Fedora带有Gnome桌面环境,带有工作站、服务器和IoT版本。
@Linux版本ISO镜像下载地址(完整)
Linux镜像下载地址(国内)
网易开源镜像站:http://mirrors.163.com/
阿里云官方镜像:http://mirrors.aliyun.com
清华大学开源软件镜像站:https://mirrors.tuna.tsinghua.edu.cn/
Linux 官方镜像下载
Linux:https://www.linux.org/.
1.CentOS 镜像下载
CentOS官网: https://www.centos.org/.
CentOS各个版本下载:https://www.centos.org/.
2.Ubuntu 镜像下载
Ubuntu官网:https://ubuntu.com/download
Ubuntu桌面版:https://ubuntu.com/download/desktop
Ubuntu服务器版:https://ubuntu.com/download/server
3.Fedora 镜像下载
Fedora官网:https://getfedora.org/
Fedora Workstation:https://getfedora.org/en/workstation/download/
Fedora Server:https://getfedora.org/en/server/download/
4.Kali 镜像下载
Kali Linux官网:https://www.kali.org/
Kali Linux Downloads:https://www.kali.org/downloads/
三、Linux常用命令
前言
Linux作为我们黑客职业生涯中重要的操作系统,重要性不言而喻,但是Linux系统的操作并不像Windows系统那样图形化操作、简单、大众化,反而Linux要通过不同的命令来给计算机传达我们要干的事情,所以在学习Linux的过程中,熟悉的掌握各种命令才能让我们在Linux的海洋里畅游,更加快速的成为一名黑客!
1、Linux常用命令
1-1、mkdir 命令
mkdir命令用于创建目录
用法:mkdir [选项] [目录名]
参数:
-p 创建多级目录,如果目录名称不存在,就新建一个。
EG:
mkdir xs_1.txt #创建名为xs的txt文件
mkdir -p xushuai/1.txt #创建xushuai文件夹,并在此文件夹下创建名为1的txt文件
1-2 、ls 命令
ls命令用于显示指定工作目录下之内容(列出指定目录所含之文件及子目录),ls命令的输出信息可以进行彩色加亮显示,以区分不同类型的文件。
用法:ls [选项] [目录]参数:
- -a 显示所有文件及目录 (. 开头的隐藏文件也会列出)
- -l 除文件名称外,也将文件型态、权限、拥有者、文件大小等资讯详细列出
- -h 以容易理解的格式列出文件大小
EG:
ls
ls -a
ls -l
ls -al
1-3、pwd 命令
pwd命令以绝对路径的方式显示用户当前工作目录。命令将当前目录的全路径名称(从根目录)写入标准输出。全部目录使用/分隔。第一个/表示根目录,最后一个目录是当前目录。执行pwd命令可立刻得知您目前所在的工作目录的绝对路径名称。
用法:pwd
EG:
pwd #显示当前所在的工作目录
1-4、cd 命令
cd命令用于切换当前工作目录。
用法:cd [目录]
cd xushuai #切换到名为xushuai的目录
用法:cd [绝对路径]
EG:
cd /home/xushuai #切换到根目录
用法: .代表当前目录,. .代表上一级目录,cd ~用于切换至登录用户家目录。cd -用于回到上一个目录。
cd . #当前目录
cd .. #返回到上层目录
cd ~ #返回到home目录
cd ../.. #返回到当前目录的上上层目录
1-5、touch 命令
touch命令用于创建一个空白的新文件,如果同名文件已存在,则修改其时间属性
用法: touch [选项] [文件名]
EG:
touch zhulinguan #创建名为zhulinguan的空白文件
1-6、cp 命令
cp命令主要用于复制文件或目录。
用法:cp [选项] [源文件] [目录]
参数:
-r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。(递归)
-p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。(保持默认属性)
EG:
cp zhulinguan xushuai/ #复制文件zhulinguan到xushuai文件夹下
cp -r xs.txt xushuai/ #使用-r参数可以将xs。txt文件夹下所有文件复制到xushuai文件夹下
1-7、mv 命令
mv命令用来为文件或目录改名、或将文件或目录移入其它位置。
用法:mv [选项] [源文件/源目录] [目录] 参数:
- -f: 如果指定移动的源目录或文件与目标的目录或文件同名,不会询问,直接覆盖旧文件。(直接覆盖不询问)
- -n: 不要覆盖任何已存在的文件或目录。(不覆盖已存在的文件)
EG:
mv xs_1.txt bai #将目录xs_1.txt重命名为bai
mv命令的另一种用法是将文件剪切。
EG:
mv bai xushuai #将目录bai移动(剪贴)到xushuai目录中
2、Linux文本查看相关命令
2-1、cat命令
cat命令用于打开文件查看文件内容。
用法:cat [选项] [文件]
参数:
- -v:除了 LFD(换行) 和 TAB 之外所有控制符,用 ^ 和 M- 显示。
EG:
cat xushuai #查看xushuai目录,输入后会得到回显
2-2、echo命令
echo 命令用于输出指定内容。
echo string #string表示字符串,此命令会输出字符串
echo显示普通字符串
echo "it is a test"
echo It is a test #这里的双引号完全可以省略,以下命令与上面实例效果一致:
echo显示转义字符
echo "\"It is a test\""
结果如下
"It is a test"
echo 显示换行
echo -e "OK! \n" # -e 开启转义
echo "It is a test"
输出结果
OK!It is a test
echo显示不换行
#!/bin/sh
echo -e "OK! \c" # -e 开启转义 \c 不换行
echo "It is a test"
输出结果:
OK! It is a test
echo显示命令执行结果
echo `date`
输出结果
023年 05月 20日 星期六 15:15:39 CST
注意: 这里使用的是反引号 `, 而不是单引号 '。
结果将显示当前日期
2-3、more命令
Linux more 命令类似 cat ,不过会以一页一页的形式显示,更方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示,而且还有搜寻字串的功能(与 vi 相似),使用中的说明文件,请按 h 。
用法:more [选项] [文件]
EG:
more -s testfile #逐页显示 testfile 文档内容,如有连续两行以上空白行则以一行空白行显示。
more +20 testfile #从第 20 行开始显示 testfile 之文档内容。
常用操作命令
- Enter 向下n行,需要定义。默认为1行
- Ctrl+F 向下滚动一屏
- 空格键 向下滚动一屏
- Ctrl+B 返回上一屏
- = 输出当前行的行号
- :f 输出文件名和当前行的行号
- V 调用vi编辑器
- !命令 调用Shell,并执行命令
- q 退出more
2-4、less命令
less 与more类似,用less命令显示文件时,用PageUp键向上翻页,用PageDown键向下翻页。要退出less程序按q键。
用法:less [选项] [文件]
EG:
less zhulinguan #查看zhulinguan文件
ps -ef |less #ps查看进程信息并通过less分页显示
less log2013.log log2014.log #浏览多个文件
说明:
输入 :n后,切换到 log2014.log
输入 :p 后,切换到log2013.log
2-5、head命令
head 命令可用于查看文件的开头部分的内容,有一个常用的参数 -n 用于显示行数,默认为 10,即显示 10 行的内容。
用法:
head [参数] [文件]
参数:
- -q 隐藏文件名
- -v 显示文件名
- -c<数目> 显示的字节数。
- -n<行数> 显示的行数。
EG:
- 要显示 runoob_notes.log 文件的开头 10 行,请输入以下命令(默认带参赛 -n 10):
head runoob_notes.log
head -n 10 runoon_notes.log #以上命令等价于此条命令
2-6、tail 命令
tail 文件中的尾部内容。tail命令默认在屏幕上显示指定文件的末尾10行,如果给定的文件不止一个,则在显示的每个文件前面加一个文件名标题;
tail -f filename 会把 filename 文件里的最尾部的内容显示在屏幕上,并且不断刷新,只要 filename 更新就可以看到最新的文件内容。
命令格式:
tail [参数] [文件]
参数:
- -f 循环读取
- -q 不显示处理信息
- -v 显示详细的处理信息
- -c<数目> 显示的字节数
- -n<行数> 显示文件的尾部 n 行内容
- –pid=PID 与-f合用,表示在进程ID,PID死掉之后结束
- -q, --quiet, --silent 从不输出给出文件名的首部
- -s, --sleep-interval=S 与-f合用,表示在每次反复的间隔休眠S秒
EG:
tail notes.log # 默认显示最后 10 行
tail -f notes.log #跟踪名为 notes.log 的文件的增长情况
tail -n 3 notes.log #查看notes.log文件尾部三行内容。
tail -f /var/log/secure
/var/log/secure是系统远程登录日志,我们可以通过tail -f命令监控日志变化情况
2-7、wc命令
wc命令用来计算数字。利用wc指令我们可以计算文件的Byte数、字数或是列数。
用法:wc [选项] [文件]
参数:
- -l 显示行数
- -c 显示Bytes数
- -w 显示字数
wc -l notes,log #显示notes.log文件行数
wc -c notes,log #显示notes.log文件Bytes数
wc -w notes,log #显示notes.log文件字数
2-9 、du 命令
du命令可查看文件使用空间
用法:du [选项] [文件]
参数:
- -h 以K,M,G为单位,提高信息的可读性。
EG:
du命令可查看文件使用空间
用法:du [选项] [文件]
参数:
- -h 以K,M,G为单位,提高信息的可读性。
EG:
du -h xushuai #查看xushuai文件的使用情况
输出结果
4.0K xushuai/1.txt
4.0K xushuai/xs.txt/xs.txt
8.0K xushuai/xs.txt
4.0K xushuai/bai
20K xushuaidf xushuai
输出结果
文件系统 1K的块 已用 可用 已用% 挂载点
/dev/sda2 20463184 12529932 6868448 65% /
df :用于显示磁盘分区上的可使用的磁盘空间。默认显示单位为KB。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。
2-10、diff命令
Linux diff 命令用于比较文件的差异。
diff 以逐行的方式,比较文本文件的异同处。如果指定要比较目录,则 diff 会比较目录中相同文件名的文件,但不会比较其中子目录。
diff 1.txt 2.txt
diff命令所参考的不是第一个文件,而是第二个文件,它的输出信息有以下几种字符:
c: 表示必须做一些修改才能使两个文件相同
a: 表示必须添加一些内容才能使两个文件相同
d: 表示必须删除一些内容才能使两个文件相同
3、Linux系统管理命令
3-1、top命令
Linux top命令用于实时显示 process 的动态。
使用权限:所有使用者。
参数说明:
- d : 改变显示的更新速度,或是在交谈式指令列( interactive command)按 s
- q : 没有任何延迟的显示速度,如果使用者是有 superuser 的权限,则 top 将会以最高的优先序执行
- c : 切换显示模式,共有两种模式,一是只显示执行档的名称,另一种是显示完整的路径与名称
- S : 累积模式,会将己完成或消失的子进程 ( dead child process ) 的 CPU time 累积起来
- s : 安全模式,将交谈式指令取消, 避免潜在的危机
- i : 不显示任何闲置 (idle) 或无用 (zombie) 的进程
- n : 更新的次数,完成后将会退出 top
- b : 批次档模式,搭配 “n” 参数一起使用,可以用来将 top 的结果输出到档案内
EG:
#显示进程信息
top
#显示完整命令
top -c
#以批处理模式显示程序信息
top -b
#以累积模式显示程序信息
top -S
#设置信息更新次数
top -n 2
//表示更新两次后终止更新显示#设置信息更新时间
top -d 3//表示更新周期为3秒
#显示指定的进程信息
top -p 139//显示进程号为139的进程信息,CPU、内存占用率等
#显示更新十次后退出
top -n 10
#使用者将不能利用交谈式指令来对行程下命令
top -s
3-2、w 命令
w命令用于显示已经登陆系统的用户列表,并显示用户正在执行的指令。 执行这个命令可得知目前登入系统的用户有那些人,以及他们正在执行的程序。单独执行w命令会显示所有的用户,您也可指定用户名称,仅显示某位用户的相关信息。
参数说明:
- -f 开启或关闭显示用户从何处登入系统。
- -h 不显示各栏位的标题信息列。
- -l 使用详细格式列表,此为预设值。
- -s 使用简洁格式列表,不显示用户登入时间,终端机阶段作业和程序所耗费的CPU时间。
- -u 忽略执行程序的名称,以及该程序耗费CPU时间的信息。
- -V 显示版本信息 。
EG:
w # 显示当前用户登录信息及执行的命令
输出结果16:54:07 up 3:21, 2 users, load average: 0.17, 0.17, 0.12
USER TTY 来自 LOGIN@ IDLE JCPU PCPU WHAT
xushuai seat0 login- 15:15 0.00s 0.00s ? /usr/libexec/gd
xushuai tty2 tty2 15:15 3:21m 0.03s 0.03s /usr/libexec/gn
3-3、last 命令
last命令用于显示用户最近登录信息。单独执行last命令,它会读取/var/log/wtmp的文件,并把该给文件的内容记录的登入系统的用户名单全部显示出来。
参数说明: options:
- -R 省略主机名 hostname 的列
- -a 把从何处登入系统的主机名称或IP地址显示在最后一行。
- -d 将IP地址转换成主机名称。
- -f<记录文件> 指定记录文件。
- -n<显示行数>或-<显示行数> 显示名单的行数。
- -R 不显示登入系统的主机名称或IP地址。
- -x 显示系统关机,重新开机,以及执行等级的改变等信息。
username:
- username: 显示指定用户 username 的登录信息。 tty:
- tty 设置登录的终端,tty 的名称可以缩写, last 0 与 last tty0 相同。
用法:last [选项]
3-4、ps 命令
Linux ps (英文全拼:process status)命令用于显示当前进程的状态,类似于 windows 的任务管理器。
语法
ps [options] [–help]
参数:
- -A 显示所有进程(同-e)
- -a 显示当前终端的所有进程
- -u 显示进程的用户信息
- -o 以用户自定义形式显示进程信息
- -f 显示程序间的关系
- -x 显示所有程序,不以终端机来区分
- -aux 显示所有包含其他使用者的行程
ps
ps -aux | more
3-5、 netstat 命令
Linux netstat 命令用于显示网络状态。
利用 netstat 指令可让你得知整个 Linux 系统的网络情况。
语法
netstat [-acCeFghilMnNoprstuvVwx][-A<网络类型>][–ip]
参数:
- -a或–all:显示所有连线中的Socket;
- -l或–listening:显示监控中的服务器的Socket;
- -n或–numeric:直接使用ip地址,而不通过域名服务器;
- -t或–tcp:显示TCP传输协议的连线状况;
- -p或–programs:显示正在使用Socket的程序识别码和程序名称;
netstat -a #显示详细的网络状况
netstat -nu #显示当前户籍UDP连接状况
netstat -apu #显示UDP端口号的使用情况
netstat -i #打印网络接口
netstat -g #显示组播组的关系
netstat -s #显示网络统计信息
netstat -l #显示监听的套接口
netstat -at #使用 -t 选项列出 TCP 协议的连接
netstat -au #使用 -u 选项列出 UDP 协议的连接
state端口状态:
端口状态 | 含义 |
---|---|
LISTEN | 侦听来自远方的TCP端口的连接请求 |
SYN-SENT | 再发送连接请求后等待匹配的连接请求 |
SYN-RECEIVED | 再收到和发送一个连接请求后等待对方对连接请求的确认 |
ESTABLISHED | 代表一个打开的连接 |
FIN-WAIT-1 | 等待远程TCP连接中断请求,或先前的连接中断请求的确认 |
FIN-WAIT-2 | 从远程TCP等待连接中断请求 |
CLOSE-WAIT | 等待从本地用户发来的连接中断请求 |
CLOSING | 等待远程TCP对连接中断的确认 |
LAST-ACK | 等待原来的发向远程TCP的连接中断请求的确认 |
TIME-WAIT | 等待足够的时间以确保远程TCP接收到 |
CLOSED | 没有任何连接状态 |
3-6、 kill 命令
kill 命令用于删除执行中的程序或工作
用法:kill [选项] pid
参数说明:
- -l <信息编号> 若不加<信息编号>选项,则 -l 参数会列出全部的信息名称。
- -s <信息名称或编号> 指定要送出的信息。
- [程序] [程序]可以是程序的PID或是PGID,也可以是工作编号。
使用 kill -l 命令列出所有可用信号。 最常用的信号是:
- 1 (HUP):重新加载进程。
- 9 (KILL):杀死一个进程。
- 15 (TERM):正常停止一个进程。
kill 12345 #杀死进程为12345的进程
kill -KILL 123456 #强制杀死进程
kill -HUP pid #发送SIGHUP信号,可以使用一下信号kill -9 123456 #彻底杀死进程
3-7、which 命令
which命令用于查找文件。
which指令会在环境变量$PATH设置的目录里查找符合条件的文件
语法
which [文件…]
参数:
- -n<文件名长度> 指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名。
- -p<文件名长度> 与-n参数相同,但此处的<文件名长度>包括了文件的路径。
- -w 指定输出时栏位的宽度。
- -V 显示版本信息。
EG:
which bash #使用指令"which"查看指令"bash"的绝对路径
输出结果
/usr/bin/bash
3-8、rpm -Va 命令检查文件完整性
这里是引用
3-9、xargs 命令
xargs(英文全拼: eXtended ARGuments)是给命令传递参数的一个过滤器,也是组合多个命令的一个工具。
xargs 可以将管道或标准输入(stdin)数据转换成命令行参数,也能够从文件的输出中读取数据。
xargs 也可以将单行或多行文本输入转换为其他格式,例如多行变单行,单行变多行。
xargs 默认的命令是 echo,这意味着通过管道传递给 xargs 的输入将会包含换行和空白,不过通过 xargs 的处理,换行和空白将被空格取代。
xargs 是一个强有力的命令,它能够捕获一个命令的输出,然后传递给另外一个命令。
之所以能用到这个命令,关键是由于很多命令不支持|管道来传递参数,而日常工作中有有这个必要,所以就有了 xargs 命令
EG:
cat 111.txt #显示111.txt文件内的内容
输出结果
1 2 3 4 5 6 7 8 9 10
q w e r t y u i o
a s f g h j
cat 111.txt | xargs #将111.txt里的内容单行输出
输出结果
1 2 3 4 5 6 7 8 9 10 q w e r t y u i o a s f g h j
cat 111.txt | xargs -n4 #-n 选项多行输出
输出结果
1 2 3 4
5 6 7 8
9 10 q w
e r t y
u i o a
s f g h
j
4、Linux文本处理相关命令
Linux三剑客
三剑客之首就是 AWK
三剑客功能:
- awk : 处理文本
- grep :过滤文本
- sed : 修改文本
4-1、awk命令
AWK 是一种处理文本文件的语言,是一个强大的文本分析工具。 之所以叫 AWK 是因为其取了三位创始人 Alfred Aho,Peter
Weinberger, 和 Brian Kernighan 的 Family Name 的首字符
*相比较屏幕处理的优点,awk在处理庞大文件时不会出现内存溢出或是处理缓慢的问题,通常用来格式化文本信息。 awk也是一个非常棒的数据处理工具!相较于sed常常作用于一整个行的处理, awk则比较倾向于一行当中分成数个字段来处理。
awk处理过程: 依次对每一行进行处理,然后输出。
- awk作用
awk主要是用来格式化 - awk的语法格式
awk [参数] [处理内容] [操作对象]
EG:
awk '{print}' 111.txt #输出所有内容
awk '{print $0}' 111.txt #输出所有内容
awk '{print $1,$4}' 111.txt # 每行按空格或TAB分割,输出文本中的1、4项
awk 'NR==1,NR==3 {print}' 111.txt #输出第 1~3 行内容
awk 'NR==1;NR==3 {print}' 111.txt #输出第 1和第3 行内容
awk '(NR>=1)&&(NR<=3) {print}' 111.txt #输出第 1~3 行内容
awk -F, '{print $1,$2}' 111.txt # 使用","分割
awk -F ":" '{print $1,$2,$3}' /etc/passwd #输出每行中的第1、3个字段
awk '(NR%2)==1{print}' 111.txt #输出所有奇数行的内容
awk '(NR%2)==0{print}' 111.txt #输出所有偶数行的内容
awk '/^root/{print}' /etc/passwd #输出以 root 开头的行
awk '/nologin$/{print}' /etc/passwd #输出以 nologin 结尾的行
4-2、grep命令
grep (global regular expression) 命令用于查找文件里符合条件的字符串或正则表达式。
grep 指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设 grep 指令会把含有范本样式的那一列显示出来。若不指定任何文件名称,或是所给予的文件名为 -,则 grep 指令会从标准输入设备读取数据
语法
grep [options] pattern [files]
或
grep [-abcEFGhHilLnqrsvVwxy][-A<显示行数>][-B<显示列数>][-C<显示列数>][-d<进行动作>][-e<范本样式>][-f<范本文件>][–help][范本样式][文件或目录…]
- pattern - 表示要查找的字符串或正则表达式。
- files - 表示要查找的文件名,可以同时查找多个文件,如果省略 files 参数,则默认从标准输入中读取数据
参数:
- -i:忽略大小写进行匹配。
- -v:反向查找,只打印不匹配的行。
- -n:显示匹配行的行号。
- -r:递归查找子目录中的文件。
- -l:只打印匹配的文件名。
- -c:只打印匹配的行数。
EG:
grep hello file.txt #在文件 file.txt 中查找字符串 "hello",并打印匹配的行
grep -r -n pattern dir/ #在文件夹 dir 中递归查找所有文件中匹配正则表达式 "pattern" 的行,并打印匹配行所在的文件名和行号
echo "hello world" | grep -c world #在标准输入中查找字符串 "world",并只打印匹配的行数
grep test *file #在当前目录中,查找后缀有 file 字样的文件中包含 test 字符串的文件,并打印出该字符串的行
grep -r update /etc/acpi #以递归的方式查找符合条件的文件。例如,查找指定目录/etc/acpi 及其子目录(如果存在子目录的话)下所有文件中包含字符串"update"的文件,并打印出该字符串所在行的内容反向查询
grep -v test *test* #查找文件名中包含 test 的文件中不包含test 的行
- grep命令使用场景
场景: 系统报警显示了时间,但是日志文件太大无法直接 cat 查看。(查询含有特定文本的文件,并拿到这些文本所在的行)
解决:
grep -n '2019-10-24 00:01:11' *.log
查看符合条件的日志条目。
Linux 里利用 grep 和 find 命令查找文件内容
从文件内容查找匹配指定字符串的行:
grep "被查找的字符串" 文件名
例子:在当前目录里第一级文件夹中寻找包含指定字符串的 .in 文件
grep "thermcontact" /.in
从文件内容查找与正则表达式匹配的行:
grep –e "正则表达式" 文件名
查找时不区分大小写:
grep –i "被查找的字符串" 文件名
查找匹配的行数:
grep -c "被查找的字符串" 文件名
从文件内容查找不匹配指定字符串的行:
grep –v "被查找的字符串" 文件名
从根目录开始查找所有扩展名为 .log 的文本文件,并找出包含 “ERROR” 的行:
find / -type f -name "*.log" | xargs grep "ERROR"
例子:从当前目录开始查找所有扩展名为 .in 的文本文件,并找出包含 “thermcontact” 的行:
find . -name "*.in" | xargs grep "thermcontact"
4-3、sed命令
sed 命令是利用脚本来处理文本文件。
sed 可依照脚本的指令来处理、编辑文本文件。
Sed 主要用来自动编辑一个或多个文件、简化对文件的反复操作、编写转换程序等
参数:
- -e :直接在命令行模式上进行sed动作编辑,此为默认选项;
- -f :将sed的动作写在一个文件内,用–f filename 执行filename内的sed动作;
- -i :直接修改文件内容;
- -n :只打印模式匹配的行;
- -r :支持扩展表达式;
- -h或–help:显示帮助;
- -V或–version:显示版本信息。
EG:
sed -e 1a\jiayou 111.txt #在 111.txt 文件的第一行后添加一行,并将结果输出到标准输出
输出结果:
1 2 3 4 5 6 7 8 9 10
jiayou
q w e r t y u i o
a s f g h jnl 111.txt | sed '3,4d' #将 111.txt 的内容列出并且列印行号,同时,请将第 3~4 行删除!
输出结果: 1 1 2 3 2 4 5 65 e r 6 t y u 7 i o y8 a s f 9 g h j
#sed 的动作为 3,4d,那个 d 是删除的意思,因为删除了 2-5 行,所以显示的数据就没有 3-4 行了, 另外,原本应该是要下达 sed -e 才对,但没有 -e 也是可以的,同时也要注意的是, sed 后面接的动作,请务必以 '...' 两个单引号括住喔!
nl 111.txt | sed '2d' #只删除第二行
输出结果: 1 1 2 3 3 7 8 9 4 10 q w 5 e r 6 t y u 7 i o y8 a s f 9 g h j//以行为单位的替换与显示nl 111.txt | sed '2,5c No 2-5 number' #将第 2-5 行的内容取代成为 No 2-5 number输出结果:1 1 2 3
No 2-5 number6 t y u 7 i o y8 a s f 9 g h jnl 111.txt | sed -n '5,7p' #仅列出 testfile 文件内的第 5-7 行
输出结果:5 e r 6 t y u 7 i o y
//数据的搜寻并显示
nl 111.txt | sed -n '/1/p' #搜索111.txt有 1 关键字的行并显示
输出结果:1 1 2 3 4 10 q w nl 111.txt | sed '/3/d' #删除111.txt所包含 3 的行,其他行输出
输出结果:2 4 5 64 10 q w 5 e r 6 t y u 7 i o y8 a s f 9 g h j
4-4、find命令
find 命令用于在指定目录下查找文件和目录。
它可以使用不同的选项来过滤和限制查找的结果。
语法
find [path] [expression]
参数说明 :
- path 是要查找的目录路径,可以是一个目录或文件名,也可以是多个路径,多个路径之间用空格分隔,如果未指定路径,则默认为当前目录。
- expression 是可选参数,用于指定查找的条件,可以是文件名、文件类型、文件大小等等。
EG:
查找当前目录下名为 file.txt 的文件:
find . -name file.txt
将当前目录及其子目录下所有文件后缀为 .c 的文件列出来:
find . -name "*.c"
将当前目录及其子目录中的所有文件列出:
find . -type f
查找 /home 目录下大于 1MB 的文件:
find /home -size +1M
查找 /var/log 目录下在 7 天前修改过的文件:
find /var/log -mtime +7
将当前目录及其子目录下所有最近 20 天前更新过的文件列出,不多不少正好 20 天前的:
find . -ctime 20
将当前目录及其子目录下所有 20 天前及更早更新过的文件列出:
find . -ctime +20
将当前目录及其子目录下所有最近 20 天内更新过的文件列出:
find . -ctime 20
查找 /var/log 目录中更改时间在 7 日以前的普通文件,并在删除之前询问它们:
find /var/log -type f -mtime +7 -ok rm {} \;
查找当前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件:
find . -type f -perm 644 -exec ls -l {} \;
查找系统中所有文件长度为 0 的普通文件,并列出它们的完整路径:
find / -type f -size 0 -exec ls -l {} \;
5、Linux远程连接命令
5-1、ssh命令
ssh命令是Linux的远程连接工具。
ssh命令:Linux的远程连接工具
例如ssh 192.168.0.149,以当前终端用户身份远程连接IP为192.168.0.149的计算机。
- -l 为指定用户 如 ssh -l xushuai 192.168.0.1以xushuai用户远程登录,也可写成ssh xushuai@192.168.0.1
- -p 为指定端口号
执行ssh的默认情况下,会使用本地的用户名连接对方的用户名,例如本地的root连接对面服务器的root,如果两端用户名不一样,则需要使用-l username指定用户名。
再确认密码后,方能登录成功,而同时变化的文件为:/root/.ssh/known_hosts 在第一次登录时,openssh将会提示不知道这台登录的主机,只要输入yes,就会把这台主机的“识别信息”添加到known_hosts文件中. 第二次登陆后,则无须此步骤,但是如果出现错误,例如主机产生变化,则需要删除/root/.ssh/known_hosts内容。
5-2、rdesktop 命令
rdesktop命令用于在linux下链接windows远程桌面。
用法:rdesktop 192.168.0.1
5-3、curl命令
curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的http命令行工具。它支持文件的上传和下载,是综合传输工具,但按传统,习惯称url为下载工具
语法:
curl [option] [url]
参数:
- -i 显示头部信息
- -v 显示请求全过程解析
- -O 下载
EG:
curl http://www.linux.com #执行后,www.linux.com 的html就会显示在屏幕上了
curl http://www.linux.com >> linux.html #使用linux的重定向功能保存
curl www.farmsec.com
curl www.farmsec.com -i
curl www.farmsec.com -v
curl -O https://bootstrap.pypa.io/get-pip.py
6、Linux重定向
大多数系统命令从您的终端获取输入并将结果输出发送回您的终端。
通常用于标准输出的命令的输出可以很容易地转移到文件中。此功能称为输出重定向。
正如命令的输出可以重定向到文件一样,命令的输入也可以从文件重定向。
>
命令
将命令的输出存入文件,并覆盖文件原本的内容。
当我们执行命令时,命令的输出会显示在终端上。但有时,我们需要命令的输出保存在文件中,这时就需要>
和>>
对命令输出进行重定向。
>
符号,是将命令的输出存入文件,并覆盖文件原本的内容。
ls > 111.txt
cat /etc/passwd > 111.txt
>>
命令
表示将命令输出结果追加入文件,不会覆盖文件内容。
>>
符号,表示将命令输出结果追加入文件,不会覆盖文件内容。
echo '1' >> 1.txt
echo '2' >> 2.txt
<
命令
正如命令的输出可以可重定向到文件,命令的输入也可以重定向到文件。
cat < 1.txt
ls < 1.txt
<<
命令
<<
命令将运算符解释为读取输入的指令,直到找到包含指定分隔符的行。直到包含分隔符的行的所有输入行都被输入到命令的标准输入中。
command << delimiter
document
delimiter
其中delimiter代表用户定义的分隔符,两个分隔符之间,是输入的多行参数。
wc -l << EOF
abcd
1234
EOF
# 其输出结果为2,统计了输入的行数。
8、Linux vi
/vim
编译器
vi编辑器:vi是Linux系统的第一个全屏幕交互式编辑程序,它从诞生至今一直得到广大用户的青睐,历经数十年仍然是人们主要使用的文本编辑工具,它可以执行输出、删除、查找、替换、块操作等众多文本操作,而且用户可以根据自己的需要对其进行定制,这是其他编辑程序所没有的。 vi编辑器具有三种模式:一般模式、编辑模式、指令模式。 这三种模式可以通过观察vi界面的左下角判断。
在命令行执行vi [文件名] 命令可进入vi编辑器并编辑文件,如果没有同名文件则创建
为什么学vi?
vim
工作模式
vim
模式
vim
常用快捷键
四、Ubuntu中Docker
的使用命令
1、查询命令
docker info #查看详细配置
docker --help #查询所有docker命令
docker xxx --help #查询xxx命令的使用方法
docker images #查看已有镜像
docker images -q #查看已有镜像id
搜索镜像,可以去dockerhub网站直接搜索,或者如下命令
docker search xxx #xxx指你要搜索的镜像,例如mysql
docker search xxx --filter=STARS=3000 #搜索收藏量大于3000的xxx镜像
2、下载命令
docker pull xxx #下载xxx镜像**最新版**,这里搜索比较慢的话需要换加速镜像
docker pull xxx:5.7 #下载xxx镜像**5.7版本**
3、删除命令
docker rmi -f ID #根据id删除指定镜像
4、容器命令
我们要先下载镜像,才能创建容器,容器在没有事情做的时候会自动停止运行。
- 下载ubuntu镜像
docker pull ubuntu #下载一个ubuntu镜像
- 新建容器
$ docker run [参数] 镜像名
#参数说明
--name="name" # 容器名字
-d #后台方式运行
-it #交互方式运行(进入容器)
-p ip:主机端口:容器端口
-p 主机端口:容器端口
-p 容器端口
-p 随机指定端口#若使用交互方式进入容器,使用exit退出时容器停止运行
#可以使用Ctrl+P+Q退出,容器继续运行
3.删除容器
docker ps #列出正在运行的容器
docker ps -a #列出所有容器 (常用查看id)
docker rm 容器id #不能删除正在运行的容器
3.启动\停止容器
docker start 容器id #启动容器
docker restart 容器id #重启容器
docker stop 容器id #停止当前正在运行的容器
docker kill 容器id #强制停止容器
4.日志\进程\元数据信息
docker logs -tf --tail 10 容器id #--tail 10表示显示10条日志
docker top 容器id #查看容器中进程信息
docker inspect 容器id #显示容器的所有信息
5.当容器正在运行时
$ docker exec -it 容器id /bin/bash #进入正在运行的容器,并开启一个新的终端
$ docker attach 容器id #进入正在运行的终端
$ dockr cp 容器id:/xxx/aaa.txt /xxx #将容器中/xxx文件夹下的aaa.txt文件拷贝到主机的/xxx文件夹下
6.制作容器镜像
# 将操作过的容器通过commit提交为一个镜像(类似于快照),以后可以直接操作修改后的镜像,并分享给别人
$ docker commit -m="提交的描述信息" -a="作者" 容器id 目标镜像名字:1.0 #1.0为版本号,自己设定即可
备注:docker篇大部分转载于一位写得很好的博主,原文链接:https://blog.csdn.net/qq_44936079/article/details/109509929
声明
1.标识@NeverUP.的博客文章均为本人日常学习所得,为原创内容,转载请注明出处;
2.本这知识自由免费的原则分享,博客内容以空间网络安全和开发相关内容为主;
3.如果文章内容如有涉及侵犯您的知识产权和版权问题,请通知本人,本人会及时删除相关博文内容;
4.本人致力于中国企业网络安全建设,同时希望自己的分享可帮助更多的网络安全人员更好的为企业服务;
5.告诫读者,请勿将所学所得用于非法用途,否则与本人无关;
6.学习本博客内容您需要学习了解《中华人民共和国网络安全法》,《互联网信息服务管理办法》,《中华人民共和国计算机信息系统安全保护条例》,《关于维护互联网安全的决定》,《中华人民共和国保守国家秘密法》,《中华人民共和国刑法》等内容,请勿从事违法犯罪活动.
————————————————
版权声明:本文为CSDN博主「NeverUP.」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明
THREE DAY | 网络安全之Linux(包含Linux常用命令,镜像下载,docker命令等内容)超详细!!!相关推荐
- Redis第二集:Linux下安装Redis和测试,包含命令代码和问题处理办法,超详细版
Redis第二集:Linux下安装Redis和测试,包含命令代码和问题处理办法,超详细版 一.资源 Linux下的Redis的下载地址 二.安装与测试 上传至自己的Linux平台 解压安装包 tar ...
- Linux系统各发行版镜像下载
Red Hat Enterprise Linux 系列: Red Hat领导着Linux的开发.部署和经营,从嵌入式设备到安全网页服务器,它都是用开源软件作为Internet基础设施解决方案的领头羊. ...
- Linux系统各发行版镜像下载(持续更新)---download
http://www.linuxidc.com/Linux/2007-09/7399.htm Linux系统各发行版镜像下载(2014年10月更新),如果直接下载不了,请使用迅雷下载.并且注意,我的下 ...
- Linux操作系统各版本ISO镜像下载(包括oracle linux\redhat\centos\u
Linux操作系统各版本ISO镜像下载(包括oracle linux\redhat\centos\ubuntu\debian等) 2015年2月25日, 下午7:49 1.Oracle Linux(下 ...
- linux 如何加载本地镜像至docker
在 Linux 上加载本地镜像至 Docker 可以使用 "docker load" 命令. 步骤如下: 将本地镜像打包成 tar 文件: sudo dockersave -o m ...
- 【Linux】常用命令:网络、内存、cron 超详细介绍
文章目录 磁盘 挂盘 挂移动硬盘 查看磁盘大小 查看磁盘类型为SSD或SATA rsync代替rm快速删除文件 文件夹 文件 内存 关闭 swap cron 生效方式 法1 法2 格式 空行和注释 环 ...
- Linux系列讲解 —— 常用小工具下载
常用工具系列 相关文章: Windows平台 常用开发工具下载 putty,Android Studio,Visual Studio Code,git,Visual Paradigm社区版 Ubunt ...
- python linux log,linux,python 常用的处理log的命令
一般的log文件都是需要过滤 ps:管道符| 管道符前面的输出值 grep 过滤查找 将是error的log过滤显示 grep '221.2.100.138' web.access.log grep ...
- VMware虚拟机安装Red Hat Enterprise Linux 7.9.0 RHEL镜像下载安装
目录 一.Red Hat Enterprise Linux 镜像下载(以RHEL7.9.0为例) 二.Red Hat虚拟机创建 1.创建虚拟机 2. 配置虚拟机镜像路径 3.Red Hat系统安装配置 ...
- Linux系统命令(一)软件下载安装命令:rpm、Yum、apt、apt-get、sudo、man、ssh服务、镜像源修改
本文主要是收集了一些linux的软件下载安装命令 目录 一.rpm RPM(红帽软件包管理器),使用范围已不局限于红帽系统: 二.Yum 1 apt及apt-get(Ubuntu版本) 三.man ...
最新文章
- java转账_使用Java模拟银行账户存、取款、转账功能
- windows xcopy
- snmp 获取 虚拟机硬盘_服务器出故障了怎么办?SNMP告警七步走
- 约会用语(很经典的)
- 第三十五讲:tapestry Ajax zone组件无黄色闪烁的背景
- mysql集群从节点无法启动_一次galera cluster集群故障节点无法启动问题排查
- usb声卡驱动_iCON ProDrive第三代USB声卡驱动全新发布!
- excel emoji php,PHP导出带有emoji表情的文本到excel文件出问题了
- 开关造成的毛刺_干冰清洗机模具清洗机干冰去毛刺机注意事项
- Hadoop2.7.3伪分布式集群搭建
- HTML网页设计制作大作业 - 绿色环境保护HTML5网站模板(4个页面)
- 电脑正常启动黑屏,安全模式正常启动的解决办法
- Spring -> Spring Boot、Spring MVC 和 Spring 有什么区别
- unity4和unity5区别
- 判断线程池任务执行完成
- 技巧篇 之 Just do it (这将会是一个漫长的历程。。。)
- Java Web基础
- Mac安装软件时各种异常情况的解决方法
- Unity 自动化打包XCode工程
- Spark 实现黑名单实时过滤