版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
项目7Linux文本处理2024年1月2日Linux应用基础项目化教程(RHEL8.2/CentOS8.2)12024年1月2日Linux应用基础项目化教程(RHEL8.2/CentOS8.2)2本项目学习目标:1.知识目标2.能力目标掌握Linux操作系统中常用的文本处理工具;掌握VIM模式的概念,及相互间切换的操作方法;掌握常用功能的操作方法;了解Linux中其他文本处理工具。能熟练启动或关闭VIM编辑器;能熟练使用VIM编辑器进行文本的编辑;能熟练掌握VIM的常用功能,例如:复制、粘贴、查找与替换、快速定位等;能根据需求,调整VIM工具的配置。2024年1月2日Linux应用基础项目化教程(RHEL8.2/CentOS8.2)3学习任务任务7.1VIM概述
任务7.2VIM的模式任务7.3VIM常用功能2024年1月2日Linux应用基础项目化教程(RHEL8.2/CentOS8.2)4任务7.1VIM概述Vim是随Linux和UNIX系统分发的vi编辑器的升级版本,Vim有许多有用的功能,支持正则表达式的搜索,具有轻松重复命令的能力,可以直接记录和执行宏,能够自动完成文件合并、鼠标集成、拼写检查、语法高亮显示、分支撤销/重做历史等,支持流行的网络协议和文件存档格式。Vim还具有较强的可扩展性,有自己的脚本语言,称为Vim脚本(也称为VimScript或Viml)。用户可以通过多种方式使用Vim脚本来扩展Vim的功能,如为其他编程语言开启语法高亮显示、语法检查或将Vim与其他应用程序和服务集成等。除可扩展性之外,Vim还具有可配置性,各个Vim之间可共享包含Vim核心全局配置(称为vimrc)的文件。7.1.1什么是VIM2024年1月2日Linux应用基础项目化教程(RHEL8.2/CentOS8.2)57.1.2Vim的启动与退出1.启动Vim在终端窗口中,启动Vim通常可以使用两种方式。第一种方式是无参数启动,在命令行模式下输入“vim”命令启动,启动后,显示Vim窗口,第二种方式是带参数启动,通常要指定一个文件名,如“vimtest.c”,若文件存在,则会直接打开该文件,,如图7-1-2所示;若文件不存在,则会自动创建一个空文件。2024年1月2日Linux应用基础项目化教程(RHEL8.2/CentOS8.2)6在图中演示打开的“test.c”文件已经存在,该文件中的内容为一段简单的C语言代码,在窗口的右下角会显示光标所在的位置,如“4,23-30”,其中4表示第4行,23-30表示当前光标所在的行的总长度为30个字符,其中光标指向的字符f为整行的第23个字符,最右侧的“全部”表示当前窗口显示文件的内容情况,若全部文件内容超出了一个屏幕的显示范围,则此处会按百分比显示出当前窗口中的内容在全部内容中的位置。2024年1月2日Linux应用基础项目化教程(RHEL8.2/CentOS8.2)72.退出Vim完成相应的配置调整或文件编辑任务后,可以退出Vim。通常可以在命令行模式下,输入一个冒号和“wq”,即可以保存并退出Vim;也可以直接输入两个大写字母“Z”,实现保存并退出Vim。2024年1月2日Linux应用基础项目化教程(RHEL8.2/CentOS8.2)8任务7.2VIM的模式Vim启动后,通常会有几种运行模式,包括命令模式、编辑模式、末行模式和可视化模式。在不同的模式中,按下键盘上相同的按键会产生不同的效果。(1)命令模式:当Vim处于命令模式时,从键盘输入的内容会被Vim当做命令来处理,如删除、复制、粘贴等操作。(2)插入模式:又称为编辑模式,在该模式下,从键盘输入内容,会被Vim当做文件的内容写入缓存区中。7.2.1VIM的模式2024年1月2日Linux应用基础项目化教程(RHEL8.2/CentOS8.2)9(3)末行模式:又称为底行模式,在该模式下,Vim可以执行相应的保存、退出、查找、替换等操作。(4)可视化模式:在可视化模式下,用户可以使用方向键在文件中进行相应针对文本块的操作。初学者在使用Vim时,常常因不清楚Vim的模式,在使用过程混淆不同模式的操作。通常,在不带任何参数启动Vim后,Vim会直接进入命令模式。因此,建议初学者在不确定Vim当前所处的模式时,多按几次【Ese】键,确认返回到命令模式后再进行操作。2024年1月2日Linux应用基础项目化教程(RHEL8.2/CentOS8.2)107.2.2模式间的切换Vim模式之间的切换方式如图所示。2024年1月2日Linux应用基础项目化教程(RHEL8.2/CentOS8.2)111.插入模式表中列出了从命令模式切换到插入模式的命令键及其功能。正常启动Vim后,在命令模式下通过按下相应的命令键,可以进入插入模式,进行文本内容的编辑和输入。当完成内容的编辑和输入后,按【Esc】键,可以返回命令模式。命令键功
能i光标位置不变,在光标前面插入内容I将光标移动到行首,在行首开始插入内容a将光标位置向后移动一个字符,然后在光标前面插入新的内容A将光标移动到行尾,在行首开始插入新的内容o在光标所在行的后面,新增一个空白行,插入内容O在光标所在行的前面,新增一个空白行,插入内容r/R(替换操作)r:仅替换光标所在位置的内容R:从光标所在位置开始替换往后的内容。2024年1月2日Linux应用基础项目化教程(RHEL8.2/CentOS8.2)122.末行模式在命令模式下,输入“:”可以进入末行模式,执行查找、替换等操作,完成所需的操作后,按【Enter】键可直接返回到命令模式。表中给出了末行模式下的保存与退出命令,在通过Vim执行写入操作时,通常也需要注意文件权限及拥有关系的限制,若当前操作Vim的用户对指定的文件没有写入权限,则其无法执行保存操作。命
令作
用w将缓冲区中的内容写入当前的文件中,若当前编辑的内容没有指定文件名称,则会提示没有文件名称,无法保存wfilename将缓冲区中的内容写入指定的文件中q当缓冲区中的内容已经被保存时,可以直接退出Vim,若缓冲区中还有内容未处理,则会提示未保存,无法退出q!强制退出Vim,丢弃离上一次保存后当前缓冲区中的所有内容wq保存缓冲区的内容并退出wq!强制保存并退出2024年1月2日Linux应用基础项目化教程(RHEL8.2/CentOS8.2)133.可视化模式在命令模式下,输入v/V字母,或者【Ctrl+V】键,则可以进入可视化模式,按【Esc】键后可以退出该模式,返回到命令模式。2024年1月2日Linux应用基础项目化教程(RHEL8.2/CentOS8.2)14任务7.3VIM常用功能1.复制在命令模式下,使用“yy”命令可复制光标所在的行,若需要复制多行,则可以使用“nyy”命令,其中n为一个具体的数字,表示从光标开始向后复制n行,若n超出实际长度,则复制当前内容。7.3.1复制、粘贴与删除2024年1月2日Linux应用基础项目化教程(RHEL8.2/CentOS8.2)152.粘贴在命令模式下,若已经使用“yy”或“nyy”命令复制了内容,则可以使用“p”或“P”命令执行粘贴操作,“p”命令表示将内容粘贴到光标所在行的后面,“P”命令表示将内容粘贴到光标所在行的前面,若需要将复制的内容一次性粘贴多次,则可以在“p”或“P”命令前面,增加具体粘贴的次数,如“5p”,表示将缓冲区的内容粘贴到当前光标所在行后面5次。3.删除在命令模式下,使用“dd”命令可执行删除操作,若需要删除从光标处开始的n行,则在“dd”前面添加一个具体的数字。2024年1月2日Linux应用基础项目化教程(RHEL8.2/CentOS8.2)167.3.2查找和替换1.查找用户可以在末行下实现查找功能,若查找到相应的关键字,Vim会高亮显示。表中给出了在末行模式下实现查找功能的命令。命
令功能及说明/keyword使用斜线(/)加上需要查找的关键字(keyword),表示从光标所在的行开始往后搜索,若有多个关键字时,输入“n”,表示从当前的关键字向后跳转,输入“N”,表示从当前的关键字向前跳转,若在多个关键字键跳转,已经跳转到了文件的开头或末尾仍按键搜索(n/N),则表示重新从文档的开头或末尾继续搜索。?keyword使用问号(?)加上需要查找的关键字(keyword),表示从光标所在的行开始往后搜索,若有多个关键字时,输入“N”,表示从当前的关键字向后跳转,输入“n”,表示从当前的关键字向前跳转,若在多个关键字键跳转,已经跳转到了文件的开头或末尾仍按键搜索(n/N),则表示重新从文档的开头或末尾继续搜索。2024年1月2日Linux应用基础项目化教程(RHEL8.2/CentOS8.2)17在查找关键字时,若关键字为特殊字符,则需要进行转义处理,在默认情况下,Vim中的一些字符有特殊含义,如“^”表示行首,“$”表示行尾,针对这类字符,用户需做转义处理,将其转换为普通字符进行查找,转义的格式为“\需转义的特殊字符”。2024年1月2日Linux应用基础项目化教程(RHEL8.2/CentOS8.2)182.替换在命令模式下,用户可以实现替换操作。,通常,进行替换操作的匹配是以文本内容的每行为单位进行匹配处理,替换命令的语法格式如下::m,ns/keyword-1/keyword-2/[iceg]内
容说明m,nsm,n表示文件的第m行至第n行的区域,且m<n,s表示替换操作,若m是数字0,则表示从文件开头开始替换,若n为“$”,则表示一直替换到文件的最后一行。若需要表示全文,可以使用“%”代替“m,n”/keyword-1表示替换前的关键字/keyword-2表示替换后的关键字,即用keyword-2替换keyword-1icegi、c、e、g为可选项,i表示忽略替换过程中keyword-1的大小写情况,I则表示对大小写是敏感的;若在替换过程中,每行有多个匹配的关键字,使用g选项可以一并替换每行中多次出现的关键字,若没有使用g选项,则表示仅替换每行第一次出现的关键字;c表示confirm,即在每次替换前进行询问确认;e用于控制是否显示错误(error)提示2024年1月2日Linux应用基础项目化教程(RHEL8.2/CentOS8.2)197.3.3跳转与定位若用Vim打开的文件中的内容较多,行数偏大时,需要通过翻页进行操作,查找的效率较低,因此Vim提供了快速跳转和定位功能。在命令模式下,输入“gg”命令,可以快速跳转到文件开头第一行,若需要快速跳转到文件的末尾,则输入“G”命令,若需要定位到文件的某行处,可以使用“ngg”命令,n表示具体的行号。若在跳转过程中,指定的行号超出了文件的最大行号,则默认会跳转到文件的尾部。2024年1月2日Linux应用基础项目化教程(RHEL8.2/CentOS8.2)207.3.4撤销与重做在Vim中,若操作失误,则可以使用相应的撤销或重做功能快速还原。在命令模式下,使用“u”命令(表示undo)可以撤销上一次的操作。使用【Ctrl+r】键,可以实现重做功能,即恢复上一次撤销的内容。2024年1月2日Linux应用基础项目化教程(RHEL8.2/CentOS8.2)217.3.5语法高亮设置在实际的使用过程中,因个人使用习惯等因素,部分用户需要开启或关闭Vim的语法高亮显示功能,该操作可以通过编辑Vim的默认配置文件“/etc/vimrc”进行。在“syntaxon”所在行的开头加上一个双引号即可注释该行,关闭语法高亮显示功能,取消注释即可开启该功能。若需要在命令行模式下临时地关闭或开启语法高亮显示功能,则可以使用“syntaxon”或者“syntaxoff”命令,开启或关闭语法高亮显示的命令也可以缩写为“synon”和“synoff”。执行关闭语法高亮显示命令“synoff”的结果,如图所示。2024年1月2日Linux应用基础项目化教程(RHEL8.2/CentOS8.2)227.3.6光标位置显示及行号设置1.光标位置与语法高亮显示功能的设置类似,Vim默认会在编辑器窗口的右下角,开启光标位置显示功能。若需要开启或关闭该功能,则可以通过相应的命令进行临时设置。开启光标位置显示功能的命令为“setruler”,关闭光标位置显示功能的命令为“setnoruler”。2024年1月2日Linux应用基础项目化教程(RHEL8.2/CentOS8.2)232.行号用户可以在“/etc/vimrc”文件的末尾,通过增加或删除“setnumber”命令实现行号显示功能的开启或关闭。在用Vim进行编辑时,也可以在末行模式下通过输入“setnumber”,命令临时开启行号显示功能,或者输入“setnonumber”命令临时关闭行号显示功能,如图所示。2024年1月2日Linux应用基础项目化教程(RHEL8.2/CentOS8.2)247.3.7Vim的可视化操作在前面的内容中,各类操作主要是针对行的操作,Vim也提供了针对文本块的操作,即可视化操作,可视化操作常用的命令键如表所示。命
令
键作
用v进入可视化模式。从光标开始,通过方向键进行选取,以光标最后所处的位置为结束位置V(Shift+v)进入可视化行模式,以行为单位进行选取Ctrl+v进入可视化的块模式,将光标所在的位置组成矩形块,进行内容选取2024年1月2日Linux应用基础项目化教程(RHEL8.2/CentOS8.2)257.3.7Vim的可视化操作Vim在可视化模式中,提供了许多针对文本块的操作,如表所示。命
令作
用y/Yy表示复制选中的字符,Y表示复制选中的行p/P在当前位置粘贴剪贴板中的内容,p表示粘贴在光标所在字符的后面,P表示粘贴在前面d/DD表示只删除选中的字符,D表示删除选中字符所在行的所有字符,同时会将删除的内容复制到剪贴板中u/U/~u表示将选中的文本块中的所有大写字母转换为小写字母,U表示将选中的文本块中的所有小写字母转换为大写字母,~表示反转,即将选中的文本块中的小写字母转换为大写字母,大写字母转换为小写字母x/X功能与d/D类似。2024年1月2日Linux应用基础项目化教程(RHEL8.2/CentOS8.2)26结束!项目8网络与安全管理主讲:***2024年1月2日Linux应用基础项目化教程(RHEL8.2/CentOS8.2)272024年1月2日Linux应用基础项目化教程(RHEL8.2/CentOS8.2)28本项目学习目标:1.知识目标2.能力目标掌握网络信息设置的基本概念;掌握防火墙的基本概念;掌握SELinux的基本概念;掌握Linux中日志的基本概念。能熟练使用GUI或CLI工具配置Linux的网络信息;能使用firewalld工具实现防火墙的基本控制;能使用SELinux相关工具设定SELinux选项;能熟练查看系统日志,排查系统简单的故障。2024年1月2日Linux应用基础项目化教程(RHEL8.2/CentOS8.2)29学习任务任务8.1网络管理任务8.2防火墙管理任务8.3SELinux任务8.4日志管理2024年1月2日Linux应用基础项目化教程(RHEL8.2/CentOS8.2)30任务8.1网络管理在CentOS7之前,操作系统中的网络接口名称一般通过eth0、eth1、eth2、…、ethN的形式编号,随着系统中设备的增加或减少,设置这些名称会产生一些不对称的信息。因此,从CentOS7开始,系统采用了新的命名规则,根据设备类型、适配器类型等为网络设备命名,CentOS8也采用同样的命名规则。8.1.1网络信息区
段命名规则说
明设备类型en以太网wlWLANwwWWAN适配器类型o板载设备s热插拔设备pPCI设备数字编号通用数字代表索引、ID或端口2024年1月2日Linux应用基础项目化教程(RHEL8.2/CentOS8.2)31在CentOS8中,可以使用ip命令查看网络的相关信息,包含设备和地址信息及网络性能等方面的统计信息。例如,查看设备ens33的网络信息,如图所示。
表示该网络设备接口的状态为激活状态(UP);
link行表示该设备的硬件(MAC)地址;
inet后显示该设备的IPv4地址和前缀;
brd后显示该设备的硬件广播地址;
inet6行显示该设备的IPv6地址信息。2024年1月2日Linux应用基础项目化教程(RHEL8.2/CentOS8.2)328.1.2GUI的网络管理工具在图形界面下,如图所示,单击右上角的按钮,在弹出的窗格中,先单击【有线已连接】选项,再单击【有线设置】选项,打开网络配置界面,如图8-1-4所示。2024年1月2日Linux应用基础项目化教程(RHEL8.2/CentOS8.2)33单击【有线】下的配置按钮,打开有线网络的【详细信息】选项卡,可以查看本地已经配置的网络情况,如链路速度、IPv4地址、硬件地址、默认路由(Gateway)及DNS等。2024年1月2日Linux应用基础项目化教程(RHEL8.2/CentOS8.2)348.1.3CLI的网络管理工具在命令行模式下,主要通过调整对应网卡的配置文件或者使用网络配置命令tui完成网络配置信息的调整。1.通过配置文件调整网络信息1)调整IP信息在CentOS8中,网卡的配置文件存放在“/etc/sysconfig/network-scripts”目录中,进入该目录。2024年1月2日Linux应用基础项目化教程(RHEL8.2/CentOS8.2)35网卡配置文件2024年1月2日Linux应用基础项目化教程(RHEL8.2/CentOS8.2)36网卡配置文件第1行,TYPE用于设置网卡的类型,Ethernet表示以太网类型;第2行,PROXY_METHOD用于设置代理类型,none表示未启用;第3行,BROWSER_ONLY用于设置在第2行中设置的代理服务器是否仅用于浏览器,no表示否,表示全局可用;第4行,BOOTPROTO用于设置网卡获取IP地址的方式,通常可以设置为:dhcp、static、none和bootp,其中static和none用于设置手动配置方式;2024年1月2日Linux应用基础项目化教程(RHEL8.2/CentOS8.2)37网卡配置文件第5行,DEFROUTE用于设置默认路由,yes是表示启用;第6行,IPV4_FAILURE_FATAL用于设置是否开启IPv4致命错误检测,no表示不启用;第7行,IPV6INIT用于设置是否启用IPv6,yes表示启用;第8行,IPV6_AUTOCONF用于设置是否自动化配置IPv6,yes表示是;第9行,IPV6_DEFROUTE用于设置IPV6是否为默认路由,yes表示是;第10行,IPV6_FAILURE_FATAL用于设置是否启用IPv6致命错误检测,no表示不启用;2024年1月2日Linux应用基础项目化教程(RHEL8.2/CentOS8.2)38网卡配置文件第11行,IPV6_ADDR_GEN_MODE用于设置IPv6地址的生成方式,通常在CentOS8中,IPv6地址基于RFC4826实现无状态地址自动配置,其值可以设置为eui64或stable-privacy,当IPv6地址的生成方式被设置为eui64时,系统将使用从硬件地址派生的接口令牌生成地址。这种方式可以让生成的IPv6地址中的主机部分保持不变,从而可以在主机更改网络时进行跟踪,当接口硬件被替换时,地址会发生改变。当IPv6地址生成方式被设置为stable-privacy时,可以根据RFC7217中的定义,使用Hash加密的方式生成特定密钥,这种方式在更换网络接口硬件时,也可以获得一个相对稳定的网络地址,且这种方式可以避免主机在网络中被跟踪,具体的IPv6生成的方式可以查阅manpage中的“man5nm-settings”;2024年1月2日Linux应用基础项目化教程(RHEL8.2/CentOS8.2)39网卡配置文件第12行,NAME用于定义网卡设备的名称,通常与第14行对应;第13行,UUID用于设置识别码;第14行,DEVICE用于定义配置文件对应的物理网卡设备名称;第15行,ONBOOT用于设置在开机时是否激活网卡,yes表示自动激活;第16行,IPDDR用于设置IPv4地址,这里设置为02;第17行,PREFIX用于设置子网掩码,这里设置24位的子网掩码;第18行,GATEWAY用于设置网关,这里设置为54;2024年1月2日Linux应用基础项目化教程(RHEL8.2/CentOS8.2)40网卡配置文件第19行,DNS1用于为本机设置DNS解析服务的地址,可以通过DNS2、DNS3等方式为主机指定多个DNS;第20行,IPV6_PRIVACY用于设置是否在无状态地址自动配置时启用IPv6的扩展隐私策略(RFC4941),no表示不启用。上述配置文件,在不需要使用IPv6网络时,可以做适当精简,精简后的配置文件如图所示,即适用于IPv4网络的网卡配置文件。2024年1月2日Linux应用基础项目化教程(RHEL8.2/CentOS8.2)412)调整主机名在CentOS8中,主机名可分为静态(static)、临时(transient)、优雅(pretty)3种形式,通常静态和临时主机名都有一定的规范,而优雅主机名则可以使用非规范的空格、特殊字符等。静态主机名:系统启动时永久生效的主机名,通常用于配置内核参数信息,默认存储在“/etc/hostname”中,还可通过在网卡配置文件中定义“HOSTNAME”选项来设置对应的主机名。临时主机名:当静态主机名无法获取或失效时,临时主机名默认会被设置为localhost和localhost.localdomain。优雅主机名:对字符几乎没有限制,可以设置任意。2024年1月2日Linux应用基础项目化教程(RHEL8.2/CentOS8.2)422.通过nmtui命令调整网络信息在终端执行“nmtui”命令启动文本界面形式的网络配置工具,如图8-1-14所示。通过上下方向键或【Tab】键进行跳转,可选择需要调整配置的选项,然后按【Enter】键进入配置。2024年1月2日Linux应用基础项目化教程(RHEL8.2/CentOS8.2)43任务8.2防火墙管理Linux内核中包含Netfilter框架,Netfilter是RHEL8防火墙的主要组件,用于实现数据包过滤、网络地址转换和端口转换等网络操作。Netfilter允许其他内核模块直接与内核的网络堆栈接口连接,利用防火墙软件定义的过滤规则,在内核中通过调用钩子函数(Hook)和消息处理程序实现拦截和转发等操作。8.2.1防火墙概述2024年1月2日Linux应用基础项目化教程(RHEL8.2/CentOS8.2)44FirewallD是由RedHat开发的一个动态防火墙管理工具,早期的FirewallD是传统iptables服务的改进替代方案,随着各类新的GNU/Linux发行版本中的防火墙后端引擎逐步从iptables向nftables迁移,nftables取代iptables成为默认的Linux网络包过滤框架。FirewallD是nftables框架的默认前端,提供了防火墙区域定义、网络链接及接口安全等级定义等功能。从CentOS7开始,系统默认启用FirewallD管理防火墙,防火墙前端通过firewall-cmd命令控制nftables规则集。通过FirewallD,用户可以将进入系统的所有网络流量分为多个区域,从而简化防火墙管理。根据数据源的IP地址或传入的网络接口等条件,流量将被转入相应区域按规则处理。每个区域都有自己的端口和服务列表,它们处于打开或者关闭状态。2024年1月2日Linux应用基础项目化教程(RHEL8.2/CentOS8.2)45Firewalld针对每个进入系统的数据包,通常采用以下处理流程:首先检查数据包的源地址,若该源地址被分配给了特定区域,则FirewallD应用该区域的规则,若该源地址未被分配给某个区域,则FirewallD会检查数据包传入的网络接口,检查与传入的网络接口关联的区域规则,若网络接口未与区域关联,则其会将数据包与默认区域相关联,应用默认区域的规则进行处理。2024年1月2日Linux应用基础项目化教程(RHEL8.2/CentOS8.2)461.FirewallD区域网络区域定义了网络连接的可信等级。防火墙中预定义了一部分区域,在默认情况下,如果传入流量属于系统启动的通信的一部分,那么所有区域都允许这些传入流量和全部传出流量,常用的预定义区域如表所示,其他预定义的区域可以通过使用“man”命令查阅firewalld.zone(5)手册来获取。区域名称默认配置trusted可信区域,允许所有数据包进出home家庭区域,默认拒绝所有传入数据包,但是允许数据包传出和预定义的服务(SSH、mDNS、samba-client、IPPClient或DHCPv6Client)internal与home区域类似work工作区域,默认拒绝所有传入数据包,但是允许数据包传出或预定义的服务(SSH、IPPClient或DHCPv6Client)。public公共区域,默认拒绝所有传入数据包,但是允许数据包传出或预定义的服务(SSH或dhcpv6-clinet),新增加的网卡默认加入该区域external扩展区域,默认拒绝所有传入数据包,但是允许数据包传出或预定义的服务(SSH)。会对通过此区域转发的IPv4流量进行伪装,将数据包映射为与该区域绑定的网络IPdmz非军事区,默认拒绝所有传入数据包,但是允许数据包传出或预定义的服务(SSH)block阻塞区域,在该区域中,允许传出的数据,将默认阻塞所有传入的数据包drop丢弃区域,在该区域中,允许数据包传出,丢弃传入的数据包(不响应ICMP错误)2024年1月2日Linux应用基础项目化教程(RHEL8.2/CentOS8.2)472.预定义服务FirewallD预定义了一些服务,这些定义可以识别需要配置的特定网络服务,如表所示。服务名称配
置SSHLinux服务器本地的SSH服务,对应22/TCP的流量mDNS多播DNS名称解析服务,对应5353/UDP端口,指向51(IPv4)或ff02::fb(IPv6)的流量samba-client基于SMB协议的本地文件共享和打印机共享服务,对应137/UDP和138/UDP的流量IPPClient本地IPP打印服务,对应631/UDP的流量DHCPv6Client本地DHCPv6客户端,对应546/UDP端口,指向fe80::/64的IPv6网络的流量2024年1月2日Linux应用基础项目化教程(RHEL8.2/CentOS8.2)483.数据包处理针对进入系统的数据包,FirewallD根据匹配规则对数据包进行处理,除允许传入与传出之外,FirewallD还有的其他处理规则如表所示。处理规则说
明丢弃丢弃任何传入网络的数据包都,不做任何ICMP响应阻塞拒绝任何传入的网络连接,并返回IPv4的icmp-host-prohibited报文或IPv6的icmp6-adm-prohibited报文伪装私有网络地址可以被映射为公开的IP地址端口转发将某个端口映射到另一个端口和/或其他主机。2024年1月2日Linux应用基础项目化教程(RHEL8.2/CentOS8.2)498.2.2配置防火墙在CentOS8中,如果需要调整防火墙的配置,可以通过编辑配置文件、Web控制台进行,也可以使用firewall-cmd命令与FirewallD交互。当前,多数Linux服务器使用非图形界面,因此,管理员更倾向于使用firewall-cmd命令进行配置。2024年1月2日50Linux应用基础项目化教程(RHEL8.2/CentOS8.2)命
令说
明--state返回防火墙的运行状态,“running”或者“notrunning”--get-default-zone查询当前的默认区域--set-default-zone=ZONE设置默认区域,设置默认区域时会同时改变运行时配置和永久配置--get-zones列出所有区域,仅列出区域的名称--list-all-zones列出检索到的所有区域的所有信息,包括接口、源、端口和服务等内容--list-all[--zone=ZONE]列出指定ZONE区域的所有信息,若未指定“--zone”选项,则表示输出默认区域的信息--list-services[--zone=ZONE]列出指定区域的所有服务,若未指定“--zone”选项,则表示输出默认区域的服务信息--list-ports[--zone=ZONE]列出指定区域的所有端口信息,输出时会忽略预定义的端口信息,仅输出用户自定义的端口信息,若未指定“--zone”选项,则表示输出默认区域的端口信息--get-active-zones列出当前所有正在使用的区域及其接口和源信息--add-source=CIDR[--zone=ZONE]使用CIDR的方式(如9/24),将指定的IP地址或网络段的所有流量的路由到指定区域,即由指定区域的规则进行处理,若未指定“--zone”选项,则表示添加到默认区域。--remove-source=CIDR[--zone=ZONE]与上一个命令类似,作用相反,用于删除。若未指定“--zone”选项,则删除默认区域中的源--add-interface=INTERFACE[--zone=ZONE]与“—add-source”类似,将来自INTERFACE的所有流量路由到指定区域,若未指定“--zone”选项,则使用默认区域。--change-interface=INTERFACE[--zone=ZONE]将INTERFACE和指定的ZONE区域关联,若未指定“--zone”选项,则将其与默认区域关联--add-service=SERVICE[--zone=ZONE]添加指定的服务(如FTP、http或httpS等),允许对应规则的流量通过防火墙。若未指定“--zone”,则使用默认区域。--remove-service=SERVICE[--zone=ZONE]与上一个添加服务的命令类似,作用相反,用于删除指定的服务--add-port=PORT/PROTOCOL[--zone=ZONE]添加指定的PORT/PROTOCOL规则,开放相应端口及对应协议的流量,若未指定“--zone”,则使用默认区域。其中PORT可以是连续的,PROTOCOL表示TCP或UDP,如5000-6000/TCP--remove-port=PORT/PROTOCOL[--zone=ZONE]与上一个添加端口的命令类似,作用相反,用于删除指定的端口--reload重新加载配置,在执行reload前,如果防火墙的规则集中有运行时状态的内容将全部丢弃,重新加载并应用永久配置--permanent设置将规则作为永久配置存储2024年1月2日Linux应用基础项目化教程(RHEL8.2/CentOS8.2)51在FirewallD中,运行规则分为运行时规则和永久规则两种类型,当通过firewall-cmd命令配置新规则时,若添加“--permanent”选项,则新规则将仅作用于运行时,对区域进行的修改立即生效,但该规则不是永久的,在重新加载防火墙规则(--reload)或重启服务器后将失效;若指定“--permanent”选项,则可以将新规则设置为永久规则,将相关的配置信息存放在“/etc/firrewalld”目录中,设置为永久规则的防火墙规则不会立即生效,需要在重新加载防火墙或重启服务器后才能生效。2024年1月2日Linux应用基础项目化教程(RHEL8.2/CentOS8.2)52在一些业务系统中,随着应用场景的变化,我们需要永久地保存一个新的规则,同时还需要让这个规则立即生效,并且避免因重新加载或重启服务器而改变系统当前防火墙的运行状态,这时可以通过添加两次规则实现,将其中的一次的选项设置为“--permanent”,即可避免重新加载或重启服务器操作,也可以让规则立即生效。在CentOS8中,默认不开放21号端口。因此,如果需要提供FTP服务,在安装vsftpd软件后,需要使用firewall-cmd命令在指定区域开启服务或相应端口的访问功能,如图所示。2024年1月2日Linux应用基础项目化教程(RHEL8.2/CentOS8.2)53第一条命令,用于检查防火墙是否启动,“running”表示防火墙正在运行;第二条命令,用于获取默认区域的信息,通常默认的区域为“public”;第三条命令,用于指定输出默认区域中已经开放的服务,可以发现SSH等服务已经被开启;第四条命令,用于在默认区域中增加FTP服务,“success”表示添加成功;第五条命令,用于检查FTP服务是否已经被添加到指定区域,从输出的结果可以看出,FTP服务已经被添加到默认区域中,但在添加FTP访问功能时,新规则未被设置为永久规则,重启后规则将失效,若要永久将其添加到防火墙的规则中,则应使用“--permanent”选项,然后执行重新加载操作。2024年1月2日Linux应用基础项目化教程(RHEL8.2/CentOS8.2)54通常,在CentOS8中,使用VSFTP软件提供FTP服务时,该软件默认以主动模式对外提供服务(PORT),未开启被动模式(PASV)。但是Filezilla、Chrome、Firefox等许多FTP客户端工具都采用被动模式访问FTP服务。因此,默认安装并开启vsftpd软件,并且在防火墙中开放FTP服务访问功能后,这些工具仍然无法正常使用FTP服务。这时,可以通过调整FTP服务的配置文件,为其增加被动访问功能,并开启部分可用的端口(建议1024号以后的端口)给FTP。被动模式的具体配置方法可查阅相关manpage进行学习。2024年1月2日Linux应用基础项目化教程(RHEL8.2/CentOS8.2)55例如,永久性开放10000-11000之间的TCP端口,为FTP服务的被动模式提供访问文件共享功能,如图所示。在完成防火墙的配置后,也可以检查配置开放的端口情况,例如,在完成上述添加10000-11000端口后,可以使用firewall-cmd命令列出公共区域的开放端口,如图所示。2024年1月2日Linux应用基础项目化教程(RHEL8.2/CentOS8.2)56任务8.3SELinux在各类Linux中,多数管理员都很熟悉基于用户和权限管理的安全模型,这种传统的安全模型是采用基于账户信息和文件权限的访问控制模型,称为自主式存取控制(DiscretionaryAccessControl,DAC)模型,在Linux中,DAC存在一定的缺陷,例如,因root用户的特殊性,许多DAC规则对root用户无效,同时如果某些权限设置错误,那么也会导致严重的后果,例如,某个目录的权限如果被设置为777,那么该目录将开放给所有用户,所有用户对该目录中的内容都可以执行读/写、删除等操作。8.3.1SELinux概述2024年1月2日Linux应用基础项目化教程(RHEL8.2/CentOS8.2)57安全增强型Linux(SecurityEnhancedLinux,SELinux),是一个额外的系统安全层,它的主要目标是采用基于对象的处理方式,通过制定更加复杂的控制策略,实现强访问控制(MandatoryAccessControl,MAC),在权限控制的粒度方面,比传统的DAC更加精确。通常,SELinux会为Linux中的每个文件、目录、进程及网络端口等资源设置一个专门的安全标签(SecurityLabel),这个标签也称为SELinux上下文(SELinuxCentext)。标签是一个名称,SELinux策略使用这些标签确定某个进程能否访问文件、目录或网络端口等资源。在访问控制方面,除非在策略中显式地授予访问权限,其他任何情况都会拒绝访问。2024年1月2日Linux应用基础项目化教程(RHEL8.2/CentOS8.2)58SELinux的标签具有多种标签,以Apache提供的http服务为例,该服务默认存放网页的路径为“/var/www/html”,进入网页存放目录,执行“ls-Z”命令,如图所示。图中的内容,除最后一部分“index.html”为文件名外,前面的内容用冒号“:”分割,分为4段,每段代表的含义如下:(1)第一段,“unconfined_u”表示SELinux的用户;(2)第二段,“object_r”表示角色;(3)第三段,“httpd_sys_content_t”表示类型标签;(4)第四段,“s0”表示敏感度。2024年1月2日Linux应用基础项目化教程(RHEL8.2/CentOS8.2)591.SELinux的3种状态强制状态(Enforcing):CentOS8中默认的状态,SELinux强制执行访问控制策略。许可状态(Permissive):SELinux处于活动状态,仅记录违反规则的警告信息,不强制执行访问控制策略,主要用于测试新部署的应用程序,查看将策略应用到这些程序会产生什么影响;或者用于进行相应的故障诊断,解决当前一些特定服务或应用程序不能正常工作的原因。禁用状态(Disabled):完全关闭SELinux,不执行任何访问控制策略,也不记录相应的警告信息。在关闭状态,系统中的访问控制方式恢复为DAC控制方式。需要注意的是,在禁用SELinux之前,需要考虑是否可能会在系统上再次使用SELinux,如果决定以后将其设置为Enforcing或Permissive状态,当下次重启系统时,系统将会花费一定的时间对系统中的所有文件、目录和进程等资源重新打上标签。2024年1月2日Linux应用基础项目化教程(RHEL8.2/CentOS8.2)602.SELinux的类型在CentOS8中,SELinux的默认策略分为3类。针对性保护策略(Targeted),Targeted策略主要对系统中的服务进程进行访问控制,也可以限制其他进程和用户。服务进程都被放入沙箱(Sandbox)中,在沙箱环境中服务进程会被严格限制,以便使通过此类进程所引发的恶意攻击不会影响到其他服务或危及Linux。通过使用Targeted策略,可以降低因访问特定服务(如Web服务、文件共享服务等服务)而对系统中其他资源造成不利影响的风险。最小限制策略(Minimum),Minimum策略与Targeted策略类似,它们都制定一个基本的策略规则包,以防止系统执行访问控制策略时消耗过多系统资源,其针对的是智能设备、物联网设备及低配置的计算机等应用环境。2024年1月2日Linux应用基础项目化教程(RHEL8.2/CentOS8.2)61多级安全策略(MLS),MLS策略(Multi-LevelSecurity,MLS)采用更加严格的限制规则,会对系统中的所有进程进行控制。例如,在启用MLS策略后,执行最简单的“ls”等命令时都会报错。因此,在将策略调整为MLS前,需要提前为MLS策略设计一个规则集,进行定义调整,否则容易导致系统故障,无法正常启动系统。例如,将策略设置为MLS后,重启服务器,将提示如图所示的信息。2024年1月2日Linux应用基础项目化教程(RHEL8.2/CentOS8.2)621.查看和调整SELinux的模式在命令行模式下,SELinux提供了相应的工具集,使用户可以通过执行getenforce和setenforce命令查看或调整SELinux的状态,如图所示。其中setenforce命令的值可以设置为0或者1,0表示设置为Permissive模式,1表示设置为Enforcing模式。通过setenforce命令在命令行中修改的模式重启后将失效,因此如果需要永久地调整SELinux的模式,可以通过修改“/etc/selinux/config”中的配置实现。8.3.2SELinux的基本操作2024年1月2日Linux应用基础项目化教程(RHEL8.2/CentOS8.2)632.更改SELinux的标签在运行SELinux的系统中,所有的文件、目录和进程都会有相应的标签。标签代表了SELinux相关的安全信息。在系统中新创建的文件或目录会默认继承其父目录的SELinux标签,从而确保标签的承接关系。但是当需要复制或移动这些文件或目录时,会破坏这种关系,如图所示,在“/tmp”目录下创建“file-1.html”和“file-2.html”,分别将其移动和复制到“/var/www/html”目录中,其SELinux的标签会有所不同。从图中可以发现,“mv”命令可以保留原始的SELinux标签,当时使用“cp”命令复制文件时,会自动适配目标目录的SELinux标签,如果需要保留原始的SELinux标签,则需要在执行“cp”命令使用“-a”选项,用于保留原始的SELinux标签。2024年1月2日Linux应用基础项目化教程(RHEL8.2/CentOS8.2)64如果在系统中需要更改指定文件或目录的SELinux标签,可以通过两种方式完成。一种简单的方式是使用“chcon”命令指定对应的SELinux标签。另一种方式是通过“semange”命令和“restorecon”命令组合实现,在系统中定义默认的文件标签规则。选
项功能说明-l或--list列出指定对象的类型记录-a或--add添加指定对象类型的记录-d或--delete删除指定对象类型的记录2024年1月2日Linux应用基础项目化教程(RHEL8.2/CentOS8.2)65在CentOS8等采用了SELinux策略的系统中,其相应的SELinux策略行为都是通过许多的SELinux布尔值进行定义的。这些布尔值对应SELinux的安全策略,用于控制系统中的各类行为,管理员可以根据业务及应用场景的需求情况,有选择地调整这些SELinux布尔值。在进行设置时,数字1和“on”表示启用,数字0和“off”表示禁用。通常,在查看或调整SELinux策略的布尔值时,主要使用“sebool”命令,其中“getsebool”命令用于列出指定的布尔值及其状态值(0|1),“setsebool”命令用于修改布尔值。8.3.3调整SELinux的策略2024年1月2日Linux应用基础项目化教程(RHEL8.2/CentOS8.2)661.查询布尔值“getsebool”命令用于查询指定SELinux布尔值的设置情况,可以使用“-a”选项一次性输出所有的布尔值设置情况。在排除SELinux的故障时,可以组合“grep”命令,一次性查询系统与某个关键字关联的SELinux布尔值情况。2.调整布尔值setsebool命令用于调整SELinux策略的布尔值,在执行setsebool命令时,若不使用任何选项,则表示该调整仅临时有效,当系统重启后,该设置失效,恢复为默认状态;若要永久地更改布尔值,需要使用“setsebool-P”命令。2024年1月2日Linux应用基础项目化教程(RHEL8.2/CentOS8.2)67SELinux除具有文件和进程的管理功能外,还可以通过对网络端口进行标记绑定的方式实现对网络端口的额外管理功能。其采用更有针对性的规则,实现严格的网络流量控制,当某个进程希望侦听端口时,SELinux会检查与该进程关联的标签是否已经绑定到这个端口上,通过这些规则,可以阻止恶意程序(进程或服务)控制其他合法程序(进程或服务)使用的端口,提高系统整体的安全性。8.3.4管理SELinux端口标签2024年1月2日Linux应用基础项目化教程(RHEL8.2/CentOS8.2)68SELinux为网络服务提供了许多不同的标签,以对不同服务进行控制。例如,22号端口对应SSH访问功能,提供了关联的“SSH_port_t”标签;20号端口对应FTP的数据传输功能,提供了关联的“FTP_data_port_t”标签;21号端口对应FTP的控制功能端口,提供了关联的“FTP_port_t”标签;80号端口对应http服务,提供了关联的“http_port_t”标签。使用“semanageport”命令可以管理SELinux的端口标签,可以实现端口标签的查询、添加、删除、修改等操作。2024年1月2日Linux应用基础项目化教程(RHEL8.2/CentOS8.2)691.查询端口标签使用“semanageport”命令的“-l”选项可以列出系统中已经定义的SELinux端口标签,该选项一次性输出所有定义的端口标签情况,如图所示。2024年1月2日Linux应用基础项目化教程(RHEL8.2/CentOS8.2)702.添加端口标签在Linux中,为了避免一些特殊的服务被恶意用户嗅探,在根据实际业务需求调整某些服务的侦听模式时,都需要调整默认的端口,通过非通用端口对外提供访问服务。在CentOS8中,使用“semanageport”命令的“-a”选项添加新的端口标签,使用“-t”选项指定端口绑定的标签类型,使用“-p”选项指定端口使用的协议。例如,添加SSH服务的2200端口标签,如图所示。2024年1月2日Linux应用基础项目化教程(RHEL8.2/CentOS8.2)713.删除端口标签删除SELinux端口标签的操作方式与添加的操作类似,使用“-d”选项,执行删除操作,如图所示,删除前面添加的SSH服务的2200端口标签。2024年1月2日Linux应用基础项目化教程(RHEL8.2/CentOS8.2)724.修改端口标签在CentOS8中,当业务需求发生变化时,可以修改SELinux的端口标签,使用“semanageport”命令的“-m”选项调整端口标签。例如,将绑定http服务的8800端口标签调整为绑定SSH服务的SELinux端口标签,如图所示。2024年1月2日Linux应用基础项目化教程(RHEL8.2/CentOS8.2)73任务8.4日志管理在CentOS及其他许多的Linux发行版本中都内置了采用syslog协议的标准日志系统,其将操作系统的内核及各类进程产生的事件记录下来,并通过合理的方式将产生的日志条目进行归档和记录,存放在指定的日志中。这些日志通常可用于系统安全审计、服务故障诊断及排除等。在CentOS8中,日志由两个服务负责,分别为systemd-journald和rsyslog。8.4.1日志概述2024年1月2日Linux应用基础项目化教程(RHEL8.2/CentOS8.2)741.systemd-journald服务systemd-journald服务作为操作系统日志系统的核心架构,提供一种改进的日志管理服务,可以收集内核事件、操作系统早期启动阶段的记录、其他进程及服务在启动和运行时的标准输出和标准错误输出,以及syslog日志服务在运行期间的产生的日志。systemd-journald服务收集到这些信息后,会将它们转换为标准日志格式,写入结构化、可索引的日志系统中,这些日志将被写入到临时存储的文件中,重启后将失效。2024年1月2日Linux应用基础项目化教程(RHEL8.2/CentOS8.2)752.rsyslog服务为解决system-journald服务产生的日志记录在重启后失效的问题,rsyslog服务允许用户根据需要自定义处理日志的流程,根据服务的配置情况及时接收system-journald产生的日志,并按指定的要求处理日志,将其记录到日志中,或者根据配置要求转发给其他程序处理。rsyslog服务可以通过读取system-journald产生的日志,按照日志的类型、功能和优先级对其进行重新分类、排序,然后将其永久地存储在“/var/log”目录中,常见的日志如表所示。2024年1月2日76Linux应用基础项目化教程(RHEL8.2/CentOS8.2)日志文件存储信息/var/log/mesessages除与授权认证、邮件处理、周期性任务和调试相关的信息之外,系统中多数服务和进程产生的日志都默认会存储在这个文件中/var/log/audit/*记录与审计相关的事件/var/log/secure记录与安全和授权认证相关的事件/var/log/maillog记录与邮件服务器相关的事件/var/log/cron记录与周期性任务有关的事件/var/log/xferlog记录与vsftpd产生的FTP服务访问相关的事件/var/log/httpd/*记录与Apache产生的http服务访问相关的事件/var/log/mariadb/*记录与MariaDB数据库相关的相关事件2024年1月2日Linux应用基础项目化教程(RHEL8.2/CentOS8.2)778.4.2查看日志1.记录日志通常,日志有许多种类,根据不同的关键字,其可以分为kern,auth,authpriv,cron,mail等。其中,mail日志表示记录的所有syslog协议下的邮件程序的日志,其他类型的定义可以通过“man5rsyslog.conf”命令查阅。日志的优先级如表所示,其中0表示最高优先级,7表示最低优先级数字代码优
先
级严重程度0emerg最严重,系统不可用1alert非常严重,需要立即采取行动2crit严重,达到临界值,有可能会导致更严重的结果3err未达到crit级别中的临界值4warning警告5notice正常但是需要重视的消息6info普通的信息7debug调试级别的信息2024年1月2日Linux应用基础项目化教程(RHEL8.2/CentOS8.2)78rsyslog服务通过“/etc/rsyslog.conf”配置文件,以及“/etc/rsyslog.d”目录中的以“.conf”结尾的一些自定义配置文件对日志进行控制,根据上述日志类型及日志优先级决定日志处理的流程。在系统中安装新软件时,可以很方便地在“/etc/rsyslog.d”目录中额外增加配置文件,进行日
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度卫浴安装与智能家居系统集成与运维服务合同3篇
- 2025年度猪肉品牌形象设计与品牌推广合同3篇
- 2025年度网络安全产品研发借款合同2篇
- 养殖场土地租赁合同(二零二五年度)农业观光旅游合作3篇
- 二零二五年度新能源汽车全款购车合同模板3篇
- 2025年企业外汇代收业务操作规范合同范本5篇
- 二零二五年度企业解除与因合同签订错误员工劳动合同证明3篇
- 2025年度智能家居系统安装与室内装修施工协议2篇
- 2024年塔丝绒项目可行性研究报告
- 2024年双色弯条绒项目可行性研究报告
- 2024年考研(英语一)真题及参考答案
- 山东省济南市(2024年-2025年小学四年级语文)人教版期末考试((上下)学期)试卷及答案
- 粉体工程第六章粉碎过程及设备
- 尽职调查工作底稿1_公司业务调查
- 洪水计算(推理公式法)
- GMW系列往复式给料机说明书
- 集装箱码头堆场项目可行性研究报告写作范文
- 医保药店一体化信息管理系统操作手册
- 2016年河南省对口升学文秘类基础课试题卷
- 小学六年级数学上期家长会精品课件
- 汽车常用英文术语
评论
0/150
提交评论