Linux网络操作系统项目化教程(openEuler)课件 项目9 系统安全管理_第1页
Linux网络操作系统项目化教程(openEuler)课件 项目9 系统安全管理_第2页
Linux网络操作系统项目化教程(openEuler)课件 项目9 系统安全管理_第3页
Linux网络操作系统项目化教程(openEuler)课件 项目9 系统安全管理_第4页
Linux网络操作系统项目化教程(openEuler)课件 项目9 系统安全管理_第5页
已阅读5页,还剩162页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

项目9系统安全管理《Linux网络操作系统项目化教程(openEuler)》学习目标/Target了解Linux操作系统安全机制,能够说出Linux常见的安全机制了解Linux操作系统不安全因素,能够说出Linux常见的不安全因素了解防火墙,能够说出防火墙概念、作用及特点了解防火墙策略与规则,能够说出防火墙的防御原理了解SELinux安全系统,能够说出SELinux概念、工作模式,以及什么是安全上下文、默认安全上下文的修改与安全策略知识目标学习目标/Target能够使用ss命令监控系统网络运行情况能够使用ps命令、top命令监控系统进程运行状态能够使用who命令、w命令查看用户相关信息能够使用joumalctl命令查看系统各种日志信息能够使用lsof命令查看系统打开了哪些文件能够使用firewalld命令完成特定场景的防火墙配置技能目标学习目标/Target通过Linux操作系统安全机制的学习,培养全面审视系统安全性的能力通过Linux操作系统不安全因素识别的学习,培养敏锐的风险感知与预防意识通过监控进程与查看日志的训练,培养基于数据的逻辑推理能力与系统化排查思维通过学习防火墙的配置与管理,激发对网络安全防护的兴趣,培养构建安全网络环境的责任感和使命感通过学习SELinux安全系统的应用与实践,培养高级安全配置能力,激发在复杂安全环境下的创新思维素养目标目录/Contents9.19.2Linux操作系统安全概述系统运行情况检查和监督9.3防火墙9.4SELinux安全系统项目导入01项目导入随着业务不断拓展,公司的数据量与日俱增,网络环境也愈发复杂,为了提高公司整体网络安全防护能力,上级领导决定对公司网络环境进行全面升级,此次升级涵盖网络监控、进程监控、日志监控及防火墙配置等多个方面,旨在全方位保障公司数据安全,防止未经授权的访问和抵御潜在的网络攻击。防火墙作为网络安全防护的第一道防线,有着至关重要的作用,细分下来包含多个具体任务。上级领导将其中最为基础又关键的部分交给小智来完成,这既是对他能力的信任,也是对他的一次重要考验,帮助他进一步深化对Linux系统安全管理的理解与实践。知识准备02了解Linux操作系统安全机制,能够说出Linux常见的安全机制。学习目标9.1.1Linux操作系统安全机制Linux操作系统从诞生以来就很注重系统安全问题,例如,Linux虽然是一个多用户操作系统,但它有着严格的权限管理,每个用户(除了root用户)只能行使被分配的权力,不能越权行事。此外,Linux操作系统是一个开源操作系统,系统的安全漏洞能很快地被发现并被修复。经过不断的发展,Linux操作系统安全机制不断完善,其安全性越来越高。9.1.1Linux操作系统安全机制下面针对Linux操作系统基本的安全机制进行介绍。口令安全防火墙最小权限日志文件安全机制9.1.1Linux操作系统安全机制口令安全就是为用户设置账号、密码,账号、密码不匹配的用户不允许登录Linux操作系统。口令安全是Linux操作系统最基本的安全机制。Linux操作系统保证口令安全的常用措施有以下几种。1.口令安全9.1.1Linux操作系统安全机制设置密码有效期A清除未设置密码的账号B清除长期未登录的账号CPASS_WARN_AGE 7为了保证口令安全,可以每隔一段时间修改密码。Linux操作系统默认密码有效期为7天,用户可以手动更改密码有效期。密码有效期可以在/etc/login.defs文件中设置,在该文件中,有如下选项。设置密码有效期9.1.1Linux操作系统安全机制1.口令安全更改该选项的值即可修改密码有效期。未设置密码的账号对Linux操作系统来说是极度危险的,攻击者可以轻易地利用该账号登录系统。为了保证系统安全,可以通过/etc/passwd文件查看并清除未设置密码的账号。清除未设置密码的账号9.1.1Linux操作系统安全机制1.口令安全在Linux操作系统中,有些账号可能登录几次后就不再使用,它们的存在对系统来说是一种安全威胁,因此要定期清理这些账号。清除长期未登录的账号9.1.1Linux操作系统安全机制1.口令安全Linux操作系统中的最小权限是指通过设置文件或目录的权限来防止违规操作。在Linux操作系统中,每一个文件或目录都有不同的权限属性,这些权限包括读、写、执行、SUID、SGID等,为这些文件分配用户权限时,应当以最小权限为原则,防止用户越权行事,给系统安全带来威胁。9.1.1Linux操作系统安全机制2.最小权限防火墙技术是计算机最基本的防御措施,它通过定义一组规则来过滤不合法的流量。此外,防火墙还可以跟踪、监控已经放行的流量,对流量的流向进行记录,一旦发现问题就会报警,把它们对网络和主机的危害降到最低。如果因为规则定义不当等出现了安全问题,防火墙软件的记录文件还可以提供佐证,便于追踪线索。9.1.1Linux操作系统安全机制3.防火墙Linux操作系统提供了丰富的日志文件来记录系统的运行情况,这些日志记录了系统中几乎所有的操作,通过认真读取日志文件可以查找、解决日常遇到的各种问题。Linux操作系统日志文件的默认位置是/var/log,有些第三方软件的日志文件也会保存在自己独有的目录。进入/var/log目录,查看openEuler的日志文件,查看命令及运行结果如下所示。9.1.1Linux操作系统安全机制4.日志文件点击查看了解Linux操作系统不安全因素,能够说出Linux常见的不安全因素。学习目标9.1.2Linux操作系统不安全因素Linux操作系统从诞生以来就很注重系统安全问题,例如,Linux虽然是一个多用户操作系统,但它有着严格的权限管理,每个用户(除了root用户)只能行使被分配的权力,不能越权行事。此外,Linux操作系统是一个开源操作系统,系统的安全漏洞能很快地被发现并被修复。经过不断的发展,Linux操作系统安全机制不断完善,其安全性越来越高。9.1.2Linux操作系统不安全因素任何可能对Linux操作系统造成潜在破坏的人、对象或事件等都称为Linux操作系统不安全因素。从这个角度来说,Linux操作系统不安全因素既包括环境和灾害因素,又包括人为因素和系统自身的因素。总体来说,Linux操作系统不安全因素大致可分为以下3种。物理因素A人为因素B系统自身因素C9.1.2Linux操作系统不安全因素物理因素是指在物理介质上危害Linux操作系统的安全,主要受Linux操作系统设备所处的环境影响,包括温度、湿度、静电、灰尘、强电磁场、电磁脉冲,以及自然灾害中的火灾、水灾、地震等。目前,针对这些非人为的环境和灾害因素已有较好的应对策略。1.物理因素2.人为因素人为因素是指由于人员的疏忽或黑客的主动攻击造成的系统安全事件,这些攻击可能是有意的,也可能是无意的。有意的系统破坏行为是指人为主动的恶意攻击、违纪、违法和犯罪等。无意的系统破坏行为是指由于操作疏忽而发生失误,对系统造成不良影响。Linux操作系统安全防护技术主要就是针对系统安全威胁进行防护。9.1.2Linux操作系统不安全因素系统自身因素是指网络中的计算机系统或网络设备由于自身的原因引发的系统安全风险。威胁系统安全的系统自身因素主要包括以下3种。3.系统自身因素计算机硬件系统的故障;1各类计算机软件的故障或安全缺陷,包括系统软件(如操作系统)、应用软件的故障或缺陷;2网络和通信协议自身的缺陷。39.1.2Linux操作系统不安全因素虽然Linux操作系统有基本的安全机制,系统日志也会记录系统运行情况,但作为Linux操作系统使用者,我们还需要经常检查系统运行情况,以了解系统的运行状态,确保没有安全隐患。本节将针对常见的系统运行情况检查和监督进行讲解。9.2系统运行情况检查和监督掌握网络的检查,能够使用ss命令监控系统网络运行情况。学习目标9.2.1检查网络日常使用Linux操作系统时,经常检查系统网络状态如网络连接(Socket)类型、网络连接状态等,及时获取网络连接的异常情况,可以降低系统安全风险。Linux的所有操作都是通过命令实现的,针对网络检查,Linux操作系统提供了ss命令。9.2.1检查网络ss选项参数ss是SocketStatistics的缩写,该命令用于获取所有Socket(套接字)统计信息,包括Socket类型、Socket状态、Socket的IP地址及端口号等。ss命令的功能比较强大,因此它的用法也比较复杂,但它的基本格式和其他命令相同,具体如下所示。具体格式9.2.1检查网络ss命令常用选项如表。9.2.1检查网络选项说明-a显示所有连接的Socket,包括连接的和没有连接的,该选项提供了系统的全面网络连接视图-s显示系统中所有的Socket摘要,该选项提供了关于系统中Socket使用的快速概览-l显示处于监听状态的Socket-p显示使用Socket的进程,包括进程ID和进程名称。该选项有助于用户确定哪个进程正在使用特定的网络连接-t显示TCPSocket9.2.1检查网络选项说明-u显示UDPSocket-i显示TCPSocket内部信息-n以数字形式显示IP地址和端口,而不解析为主机名和服务名-r将服务名解析为主机名,将端口号解释为服务(协议)名-4使用IPv4地址的Socket-6使用IPv6地址的Socketss命令的用法比较多,如检查Socket类型、检查Socket状态等,下面介绍几种ss命令常见的用法。9.2.1检查网络ss命令可以通过不同的选项显示不同类型的Socket信息,例如,通过-s选项显示Socket摘要信息,通过-l选项显示所有处于监听状态的信息。1.显示Socket信息9.2.1检查网络案例9-1:显示Socket摘要信息。点击查看1.显示Socket信息9.2.1检查网络案例9-2:显示处于监听状态的Socket,以及使用这些Socket的进程。点击查看Linux操作系统中的Socket有多种类型,可以通过ss命令的不同选项来显示不同类型的Socket信息,如TCPSocket、UDPSocket。2.显示不同类型的Socket9.2.1检查网络案例9-3:显示TCPSocket、UDPSocket信息。点击查看一个Socket有多种不同的状态,通过ss命令可以查询处于不同状态的Socket。Socket常见的状态如表。3.显示某种状态的Socket9.2.1检查网络状态说明LISTEN监听状态ESTABLISHED连接打开状态,即刚刚建立连接,可以传输数据的状态CONNECTED连接状态,通常除了LISTEN和CLOSED状态,其他状态都可以称为CONNECTED状态FIN-WAIT-1/FIN-WAIT-2释放连接状态CLOSED关闭状态9.2.1检查网络案例9-4:显示所有状态为ESTABLISHED的HTTP连接。3.显示某种状态的Socket[itheima@localhost~]$ss-ostateestablished'(dport=:httpordport=:http)' NetidRecv-QSend-QLocalAddress:PortPeerAddress:Port在案例9-4中,使用ss命令显示所有状态为ESTABLISHED的HTTP连接,由输出结果可知,系统中没有处于ESTABLISHED状态的HTTP连接。9.2.1检查网络案例9-5:分别显示使用IPv4地址和IPv6地址,并且处于CLOSED状态的Socket。点击查看3.显示某种状态的Socketss命令提供了src子命令和dst子命令来匹配指定IP地址的Socket,src子命令用于匹配本地地址,dst子命令用于匹配远程地址。9.2.1检查网络4.显示指定IP地址和端口号的Socket9.2.1检查网络案例9-6:显示来自6地址的Socket。4.显示指定IP地址和端口号的Socket[itheima@localhost~]$ssdst6NetidStateRecv-QSend-QLocalAddress:PortPeerAddress:Port案例9-6使用ss命令显示来自6地址的Socket,由输出结果可知,系统中没有来自该地址的Socket。9.2.1检查网络案例9-6:显示来自6地址的Socket。4.显示指定IP地址和端口号的Socket[itheima@localhost~]$ssdst6:1024[itheima@localhost~]$ssdst6:http需要注意的是,在IP地址后面可以使用“:”连接端口号指定查询来自该地址某个端口的Socket,具体命令如下所示。指定端口号http连接默认端口号为809.2.1检查网络案例9-7:显示来自本机地址的Socket。4.显示指定IP地址和端口号的Socket[itheima@itheima~]$sssrc37NetidStateRecv-QSend-QLocalAddress:PortPeerAddress:PortProcesstcpESTAB0037:ssh:50604ssdport/sportOPPORTss命令还可以将本地端口(sport)或远程端口(dport)与另一个端口进行比较,查询来自某些端口的Socket。比较端口时,ss命令格式如下所示。具体格式9.2.1检查网络5.端口比较在上述格式中,PORT为端口号,OP为运算规则,如=、>、<等。OP表示的运算规则如表。9.2.1检查网络5.端口比较规则说明\<=或le小于或等于\>=或ge大于或等于==或=或eq等于!=或ne不等于\<或lt小于\>或gt大于使用端口比较运算符查询Socket的命令示例如下。9.2.1检查网络5.端口比较[itheima@localhost~]$ssdport\>=60000 [itheima@localhost~]$ssdport=32195 [itheima@localhost~]$sssport=http [itheima@localhost~]$sssport!=1024 [itheima@localhost~]$ssdport\<1024

匹配大于或等于60000的远程端口匹配远程端口32195匹配本地80端口匹配不是1024的本地端口匹配小于1024的远程端口掌握进程的监控,能够使用ps命令、top命令监控系统进程运行状态。学习目标9.2.2监控进程进程是计算机系统中的运行单元,计算机系统主要通过进程完成任务,如读写文件、操作数据库等。如果系统中有非法进程,可能会给系统带来重大危害。例如,木马病毒都以进程的形式在计算机上运行。此外,有些网络攻击会破坏计算机系统的合法进程,使系统无法正常工作,从而达到攻击计算机系统的目的。因此,监控和保护进程安全,是保证系统安全的重要措施。9.2.2监控进程Linux操作系统提供了很多命令用于监控进程,如ps、top、pstree等,通过这些命令,系统管理员可以了解系统中进程运行情况,如进程运行状态、进程是否结束、哪些进程占用了过多资源等。针对非法进程及异常进程,系统管理员可以及时采取相应措施,以保证Linux操作系统安全。9.2.2监控进程掌握查看用户的方法,能够使用who命令、w命令查看用户相关信息。学习目标9.2.3查看用户Linux操作系统是一个多用户操作系统,用户登录需要口令,如果用户口令被截取,则攻击者会利用用户口令登录系统进行非法操作。如果权限较大的用户口令被截取,则会给系统带来不可估量的危害。因此,经常查看用户登录情况,也可以保证系统安全。9.2.3查看用户w命令是who命令的增强版,它可以显示登录用户更多、更详细的信息。例如,w命令可以显示登录用户当前正在进行的工作。w命令的基本格式如下所示。w选项参数

9.2.3查看用户基本格式w命令常用选项如表。9.2.3查看用户选项说明-h不显示列标题-s使用短格式显示信息,仅显示用户名、终端、来源地址和登录时间,不显示其他信息-f显示远程主机名或IP地址,在输出结果中包含FROM字段,显示用户是从哪台远程主机登录的案例9-8:查看系统当前登录用户的信息。点击查看9.2.3查看用户掌握查看系统日志的方法,能够使用journalctl命令查看系统各种日志信息。学习目标9.2.4查看日志openEuler使用systemd-journald服务收集日志信息并进行统一管理,为了方便查看日志文件,systemd-journald服务提供了相应的日志管理命令journalctl。journalctl命令功能强大,它可以查看所有的日志信息,其基本格式如下所示。journalctl选项参数

基本格式9.2.4查看日志journalctl命令常用选项如表。9.2.4查看日志选项说明-a显示全部日志信息-k查看内核日志,用于调试与内核相关的问题。这些日志包含与硬件和系统内核相关的重要信息,如设备驱动程序的加载、系统调用的执行等-b查看系统本次启动的日志信息-u查看指定服务的日志信息,如-usshd.service

表示只显示sshd服务相关的日志信息-n指定查看的日志条数,如-n50表示查看50条日志,默认是10行9.2.4查看日志选项说明-f追踪日志,实时输出最新日志信息-o指定输出格式,journalctl命令可以输出多种格式的信息。l

cat:仅输出日志消息内容,不包含元数据或其他附加信息l

export:以二进制格式导出日志l

json:标准的JSON格式,每行一个JSON对象,方便程序解析l

json-pretty:优化的JSON格式,更易读l

json-sse:特定格式的JSON,适用于通过HTTP流式传输日志条目,常用于Web应用9.2.4查看日志选项说明-ol

short:默认的输出格式,显示类似于传统syslog文件的日志条目l

short-mnotonic:默认格式,提供普通时间戳l

short-iso:默认格式,时间戳使用ISO8601格式l

short-precise:默认格式,提供微秒级精度的时间戳l

verbose:显示该条目的全部可用字段,提供最详细的输出,包括所有元数据字段。这对于调试或深入了解日志条目的细节非常有用-p显示指定优先级的日志,如-perr表示显示所有错误级别的日志信息--disk-usage查看当前日志占用的磁盘空间大小示例:journanctl命令查看日志的用法示例如下。点击查看9.2.4查看日志journalctl命令可以按照不同的匹配规则查看日志信息,下面介绍几种常用的日志查看规则。9.2.4查看日志journalctl命令可以使用--since和--until选项查看指定时间的日志,这两个选项的含义如下所示。1.查看指定时间的日志9.2.4查看日志1--since:--until:指定日志信息的开始时间。2指定日志信息的截止时间。案例9-9:查看昨天的日志。点击查看9.2.4查看日志1.查看指定时间的日志案例9-10:查看2025年2月11日到目前为止的日志。点击查看9.2.4查看日志1.查看指定时间的日志案例9-11:查看过去15分钟的日志。点击查看9.2.4查看日志1.查看指定时间的日志journalctl命令可以查看指定进程、指定用户或指定用户组的日志,格式如下所示。journalctl选项=参数

基本格式9.2.4查看日志2.查看指定时间的日志指定进程、用户、用户组的选项分别如下所示。

_PID:指定进程ID。

_UID:指定用户ID。

_GID:指定用户组ID。案例9-12:查看昨天PID为4070的进程日志。点击查看9.2.4查看日志2.查看指定时间的日志案例9-13:查看用户ID为1000的用户日志、用户组ID为1002的用户组日志。[itheima@itheima~]$journalctl_UID=1000[itheima@itheima~]$journalctl_GID=10029.2.4查看日志2.查看指定时间的日志Linux操作系统的日志信息量很大,有些并不重要的日志会干扰我们对日志的分析,为此,Linux操作系统根据日志记录的信息错误严重程度,将日志划分为不同的优先级,具体如下所示。9.2.4查看日志3.查看指定优先级的日志0:emerg(紧急)。1:alert(警惕)。2:crit(严重)。3:err(错误)。4:warning(警告)。5:notice(注意)。6:info(通知)。7:debug(调试)。案例9-14:查看系统本次启动后,优先级为err的日志。点击查看9.2.4查看日志3.查看指定优先级的日志掌握查看系统文件的方法,能够使用lsof命令查看系统打开了哪些文件。学习目标9.2.5查看系统打开的文件openEuler使用systemd-journald服务收集日志信息并进行统一管理,为了方便查看日志文件,systemd-journald服务提供了相应的日志管理命令journalctl。journalctl命令功能强大,它可以查看所有的日志信息,其基本格式如下所示。journalctl选项参数

基本格式9.2.5查看系统打开的文件在Linux操作系统中,一切皆文件,通过文件不仅可以访问常规数据,还可以访问网络连接和硬件,系统运行情况都可以从文件中获知。因此,在Linux操作系统中查看系统当前打开的文件,可以帮助我们监控系统运行情况,也可以帮助我们诊断系统出现的问题。9.2.5查看系统打开的文件Linux操作系统提供了一个命令lsof,用于查看系统打开的文件。lsof是ListOpenFiles的缩写,用于查看系统打开的文件。除了查看系统打开的文件,lsof命令还可以查看网络连接、进程、端口号、用户等信息,因此,lsof命令功能非常强大,用法也比较复杂。9.2.5查看系统打开的文件lsof命令基本格式如下所示。lsof选项参数

基本格式9.2.5查看系统打开的文件lsof命令常用选项如表。选项说明-a用来对指定的条件进行“与”操作。例如,当同时指定了UID和PID时,可使用-a选项确保两个条件都满足-t只列出PID-n不解析主机名,加快查询速度-c进程名或命令列出指定进程或命令打开的文件-gGID列出指定GID的组中进程打开的文件9.2.5查看系统打开的文件选项说明-d文件描述符列出使用该文件的进程,如-da.txt表示查看使用a.txt文件的所有进程+d目录列出指定目录下被打开的文件(不递归)+D目录递归列出指定目录下被打开的文件-i按网络连接过滤,列出所有打开了网络Socket的进程。可以配合具体的协议、主机地址、端口号等参数使用,如-iTCP@:https

表示显示所有到的HTTPS连接-pPID列出指定PID所打开的文件-u用户名列出指定用户打开的文件9.2.5查看系统打开的文件在不添加任何选项的情况下,lsof命令会列出所有活动进程打开的文件,由于输出信息太多,可以使用more命令指定输出行数。为避免输出结果列数太多不得不换行显示导致信息错乱,下面以截图形式展示lsof命令的输出结果,如图。进程名称进程标识符,即PID线程ID任务名称进程所有者文件描述符9.2.5查看系统打开的文件进程通过文件描述符识别文件,lsof命令常用的文件描述符如表。文件描述符说明0标准输出1标准输入2标准错误cwd应用程序当前的工作目录,即该应用程序的启动目录txt该类型的文件是程序代码,如应用程序二进制文件本身或共享库lnn库引用(AIX)errFD信息错误jld监管目录9.2.5查看系统打开的文件ltx共享库文本(代码和数据)mxx十六进制内存映射类型号m86DOS合并映射文件mem内存映射文件pd父目录rtd根目录tr内核跟踪文件(OpenBSD)v86VP/ix映射文件NOFD这并不是一个标准的文件描述符类型,当进程无法根据上下文获取文件描述符类型时,会将其显示为NOFD9.2.5查看系统打开的文件lsof命令常用的文件类型如表。文件类型说明REG普通文件DIR目录CHR字符类型BLK块设备类型UNIXUNIX域套接字FIFO先进先出队列IPv4IPv4套接字9.2.5查看系统打开的文件DEVICE:存储文件的设备。SIZE/OFF:文件的大小和文件偏移量(以字节为单位)。NODE:索引节点。NAME:文件名称。9.2.5查看系统打开的文件案例9-15:查看/bin/bash文件都在被哪些进程使用。点击查看9.2.5查看系统打开的文件案例9-16:查看哪些进程在使用80端口。点击查看9.2.5查看系统打开的文件案例9-17:查看TCP连接信息和UDP连接信息。点击查看9.2.5查看系统打开的文件案例9-18:查看/etc目录下被打开的文件。点击查看9.2.5查看系统打开的文件防御网络攻击、保障系统安全是非常重要的一项工作,防火墙作为公网与内网之间的保护屏障,在防御网络攻击、保障系统安全方面起着至关重要的作用。本节将针对防火墙进行详细讲解。9.3防火墙了解防火墙,能够说出防火墙概念、作用及特点。学习目标9.3.1防火墙概述防火墙是保障系统安全非常重要的一个工具,下面分别从防火墙概念、防火墙作用、防火墙特征、防火墙的不足与缺陷4个方面对防火墙进行讲解。防火墙概念防火墙特征防火墙作用防火墙的不足与缺陷防火墙概述9.3.1防火墙概述防火墙也称为防护墙,是指隔离在本地网络与外界网络之间的一种高级访问控制设备、置于不同网络安全域之间的一系列部件组合,也是不同网络安全域间通信流的唯一通道。防火墙能根据企业的相关安全政策控制(允许、拒绝、监视、记录)进出网络的访问行为。防火墙的位置如图。1.防火墙概念9.3.1防火墙概述防火墙如同一扇安全门,负责控制并检查站点访问者,它一般可以起到以下作用。2.防火墙作用9.3.1防火墙概述

过滤、筛选和屏蔽有害的信息和服务,保护内网中的网络服务。防止攻击者接近防御设备。

实施安全策略,对网络通信进行访问控制。对内外网之间的通信进行监控审计。

限制用户对特殊站点的访问。随着防火墙技术的发展,其功能越来越强大,但无论如何设计,总体来说,防火墙应该有如下5个方面的特征。3.防火墙特征9.3.1防火墙概述所有出站和入站的网络流量都必须经过防火墙;1只允许被授权的网络流量通过,不被授权的网络流量将被丢弃或拒绝;2防火墙本身不能被攻破。3可以与其他安全技术结合使用,以增强自身功能,提供更强大的保护。4界面友好,方便用户设置防火墙规则。5虽然防火墙可以提高内部网的安全性,在网络安全体系中极为重要,但它并不是网络中唯一的安全措施,除了上述特性,防火墙也存在一些不足和缺陷。4.防火墙的不足与缺陷9.3.1防火墙概述防火墙可以限制有害的网络服务,但一些存在安全漏洞却有用的网络服务也会被防火墙限制。1防火墙不能完全防止内部威胁,比如用户操作失误导致网络受到攻击。2防火墙无法防御绕过防火墙的其他途径的攻击。34.防火墙的不足与缺陷9.3.1防火墙概述防火墙无法完全防御已感染病毒的软件或文件。4防火墙无法防御木马、缓冲区溢出等类型的攻击。5防火墙是一种被动式的防护手段,它只能对目前已知的网络威胁起作用。6了解防火墙策略与规则,能够说出防火墙防御原理。学习目标9.3.2防火墙策略与规则当流量经过防火墙时,防火墙会将客户请求逐一与防火墙设置的规则进行匹配,匹配成功之后,防火墙会执行规则中定义的行为,如允许、拒绝、丢弃等。防火墙的规则存储在内核中的netfilter模块,多个规则可以组成一个规则链,根据流量处理位置的不同,可以将规则链分为以下5种。1INPUT:OUTPUT:流量入口过滤,定义流量由外部发往内部的规则。2流量出口过滤,定义流量由内部发往外部的规则。FORWARD:3转发关卡过滤,定义对流量进行路由转发时的规则。PREROUTING:4路由前过滤,定义流量进来还未查询路由表之前的规则,所有的流量进来都要先由这个规则链进行处理。9.3.2防火墙策略与规则POSTROUTING:5路由后过滤,定义查询完路由表数据将要出去的规则,所有发送出去的流量都要由这个规则链进行处理。openEuler默认使用firewalld工具管理防火墙。无论是iptables还是firewalld,它们都只是管理内核netfilter模块的一个工具,只是管理方式不同而已。由于本书以openEuler为环境,所以主要讲解firewalld防火墙管理工具9.3.2防火墙策略与规则firewalld支持动态更新技术,并且提出了区域(Zone)的概念,所谓区域是指firewalld预先准备了几套防火墙策略集合,用户可以根据不同的生产环境来选择不同的策略,从而实现防火墙策略之间的快速切换。9.3.2防火墙策略与规则firewalld常见区域及相应策略如表。9.3.2防火墙策略与规则区域策略trusted(信任区域)信任所有主机,允许所有网络流量home(家庭区域)基本信任所有主机,允许外部发起的ssh、mdns、samba-client和dhcpv6-client请求流量,以及内部主动发起的相关流量internal(内部区域)等同于homework(工作区域)基本信任所有主机,允许外部发起的ssh、mdns、dhcpv6-client请求流量,以及内部主动发起的相关流量9.3.2防火墙策略与规则区域策略public(公共区域)默认区域,允许外部发起的ssh流量,以及内部主动发起的相关流量external(外部区域)不信任其他主机,允许外部发起的ssh流量,以及内部主动发起的相关流量,并默认转发到该区域的IPv4传出流量进行地址转换,启用路由器功能dmz(隔离区域)允许外部发起的ssh请求流量,以及内部主动发起的相关流量,可有限地访问内部资源block(限制区域)拒绝所有的外部请求,允许内部主动发起的相关流量drop(丢弃区域)丢弃所有的外部请求,不做任何回应,只允许内部主动发起的相关流量openEuler默认开启firewalld服务,读者可以使用systemctl命令查看firewalld服务状态,具体命令及输出结果如下所示。9.3.2防火墙策略与规则点击查看掌握firewall-cmd命令,能够使用firewalld命令完成特定场景的防火墙配置。学习目标9.3.3firewall-cmd命令firewalld提供了firewall-cmd命令来设置防火墙规则,下面分别对firewall-cmd命令的基本格式、配置防火墙的规则和用法示例进行详细讲解。9.3.3firewall-cmd命令firewall-cmd命令的基本格式如下所示。1.firewall-cmd命令的基本格式firewall-cmd选项参数

基本格式9.3.3firewall-cmd命令firewalled-cmd命令常用选项如表。1.firewall-cmd命令的基本格式参数含义--get-default-zone查询默认的区域名称--set-default-zone=区域名称设置默认的区域,使其永久生效--get-zones显示可用的区域--get--services显示预先定义的服务--get-active-zones显示当前正在使用的区域与网卡名称--add-source=将源自此IP地址或子网的流量导向指定的区域9.3.3firewall-cmd命令1.firewall-cmd命令的基本格式参数含义--remove-source不再将源自此IP地址或子网的流量都导向某个指定区域--add-service=服务名设置默认区域允许该服务的流量--add-port=端口号/协议设置默认区域允许该端口的流量--remove-service=服务名设置默认区域不再允许该服务的流量--add-interface=网卡名称将源自该网卡的所有流量都导向某个指定区域--change-interface=网卡名称将某个网卡与区域进行关联9.3.3firewall-cmd命令1.firewall-cmd命令的基本格式参数含义--list-all显示当前区域的配置参数、资源、端口以及服务等信息--list-all-zones显示所有区域的配置参数、资源、端口以及服务等信息--reload让永久生效的配置规则立即生效,并覆盖当前的配置规则--panic-on开启应急状况模式--panic-off关闭应急状况模式9.3.3firewall-cmd命令firewalld配置防火墙规则有两个模式,分别如下所示。2.firewalld配置防火墙的规则1运行模式(Runtime):永久模式(Permanent):运行时模式下配置的规则立即生效,它是firewalld的默认模式。2永久模式下配置的规则需要重启系统才能生效,通过--permanent选项指定。如果要使永久模式下配置的规则立即生效,需要手动执行firewall-cmd--reload命令。9.3.3firewall-cmd命令下面通过一组示例演示firewall-cmd命令的用法。3.firewall-cmd命令的用法示例9.3.3firewall-cmd命令查看firewalld服务当前所使用的区域。3.firewall-cmd命令的用法示例STEP01[root@localhost~]#firewall-cmd--get-default-zonepublic

由输出结果可知,当前firewalld服务所使用的区域为public,即允许所有的流量。9.3.3firewall-cmd命令查看firewalld当前区域的配置参数、资源、服务等信息。3.firewall-cmd命令的用法示例STEP02点击查看9.3.3firewall-cmd命令查看public区域是否允许HTTPS流量和DNS流量通过。3.firewall-cmd命令的用法示例STEP03[root@itheima~]#firewall-cmd--zone=public--query-service=httpsno[root@itheima~]#firewall-cmd--zone=public--query-service=dnsno

由输出结果可知,public区域不允许HTTPS和DNS的流量通过。9.3.3firewall-cmd命令将HTTPS流量设置为永久允许,并立即生效。3.firewall-cmd命令的用法示例STEP04[root@itheima~]#firewall-cmd--permanent--zone=public--add-service=httpssuccess[root@itheima~]#firewall-cmd--reloadsuccess[root@itheima~]#firewall-cmd--zone=public--query-service=httpsyes

9.3.3firewall-cmd命令将1024端口的流量设置为允许,即开放1024端口,仅限当前有效。3.firewall-cmd命令的用法示例STEP05[root@itheima~]#firewall-cmd--zone=public--list-port [root@itheima~]#firewall-cmd--zone=public--add-port=1024/tcpsuccess[root@itheima~]#firewall-cmd--zone=public--list-port1024/tcp

查看开发的端口开放1024端口9.3.3firewall-cmd命令firewalld服务还提供了富规则(Rich-Rule)配置,富规则即更细致、更详细的规则,它可以针对系统服务、端口号、源地址和目标地址等参数进行更有针对性的规则设置。例如,配置一条富规则,拒绝/24网段的所有用户访问本机的SSH服务(22端口),设置命令如下所示。3.firewall-cmd命令的用法示例STEP05[root@localhost~]#firewall-cmd--zone=public--add-rich-rule='rulefamily="ipv4"sourceaddress="/24"servicename="ssh"reject'success

9.3.3firewall-cmd命令在IP地址为35的主机上,通过SSH服务连接本机时,请求会被拒绝。3.firewall-cmd命令的用法示例STEP05[root@agent~]#ssh49ssh:connecttohost49port22:Connectionrefused

在35主机执行此命令9.3.3firewall-cmd命令了解防火墙策略与规则,能够说出防火墙防御原理。学习目标9.3.2防火墙策略与规则除了防火墙,openEuler还内置了一个安全系统——SELinux,用于保障系统安全。由于SELinux运行机制和服务规则太过复杂,很多Linux操作系统用户在遇到问题时都直接禁用SELinux服务,但是禁用SELinux服务对系统来说是极度危险的。为了更安全地使用Linux操作系统,掌握一些SELinux的相关知识是非常必要的,本节将针对SELinux安全系统进行简单介绍。9.4SELinux安全系统了解SELinux安全系统,能够说出SELinux概念。学习目标9.4.1SELinux概述SELinux(SecurityEnhancedLinux)是由美国国家安全局(NationalSecurityAgency,NSA)在Linux开源社区的支持下开发的一个强制访问控制(MandatoryAccessControl,MAC)安全系统,它旨在通过增强传统Linux操作系统的安全性,提供更细粒度的访问控制机制。自Linux内核2.6版本开始,SELinux便作为一项内置特性被集成到Linux内核中。9.4.1SELinux概述与传统的基于用户和组的自主访问控制(DiscretionaryAccessControl,DAC)相比,SELinux为每个进程和服务设定了严格的权限限制,确保它们只能访问、执行其功能所必需的资源。例如,一个视频播放软件理论上只应拥有播放视频文件的权限,如果该软件试图读取用户的微信账号密码或监控浏览器历史记录,这显然超出了其应有的权限范围。SELinux通过精确控制这些权限来防止此类越权行为的发生。9.4.1SELinux概述在SELinux中,SELinux不只是针对进程设置权限,它还会对资源进行类型设定,指定资源只能被哪些进程访问。只有进程的权限与所要访问的资源的类型契合时,进程才能够访问到资源。在SELinux中,每个进程都只能访问到自己应该获取的资源,这样即使有恶意程序攻击,恶意程序也无法利用系统内的进程越权操作,极大地降低了恶意程序的破坏能力,最大限度地保证系统安全。9.4.1SELinux概述了解SELinux安全系统,能够说出SELinux工作模式。学习目标9.4.2SELinux工作模式SELinux有多种不同的工作模式,这些工作模式可以通过命令进行查看和设置。下面从SELinux工作模式、SELinux工作模式的查看和设置两方面进行讲解。SELinux工作模式的查看和设置SELinux工作模式9.4.2SELinux工作模式SELinux服务提供了3种工作模式,分别如下所示。1.SELinux工作模式9.4.2SELinux工作模式1enforcing:permissive:2宽容模式,该模式在遇到进程越权访问时,只发出警告而不强制拦截。disabled:3关闭模式,该模式在遇到进程越权访问时,既不警告也不拦截。强制模式,该模式强制启用SELinux的安全策略,拦截进程的不合法请求。enforcing是SELinux的默认工作模式。针对SELinux工作模式的查看和设置,Linux操作系统提供了两个命令,分别是getenforce和setenforce,下面分别对这两个命令进行介绍。9.4.2SELinux工作模式2.SELinux工作模式的查看和设置setenforce命令getenforce命令getenforce命令用于查看SELinux的工作模式。getenforce命令没有选项和参数,用法很简单。getenforce命令的执行结果就是3种工作模式,需要注意的是,执行结果显示的工作模式首字母是大写。9.4.2SELinux工作模式1.getenforce命令案例9-19:查看SELinux的工作模式。9.4.2SELinux工作模式1.getenforce命令[root@itheima~]#getenforceEnforcing

setenforce命令用于设置SELinux的工作模式,其基本格式如下所示。setenforce参数基本格式9.4.2SELinux工作模式2.setenforce命令setenforce命令的参数有4个,分别如下所示。9.4.2SELinux工作模式2.setenforce命令1Enforcing:Permissive:设置SELinux工作模式为强制模式。2设置SELinux工作模式为宽容模式。1:3设置SELinux工作模式为强制模式。0:4设置SELinux工作模式为宽容模式。案例9-19:设置SELinux工作模式为permissive。9.4.2SELinux工作模式[root@localhost~]#setenforce0 permissive[root@localhost~]#getenforcePermissive2.setenforce命令设置SELinux工作模式为permissive在案例9-20中,使用setenforce命令设置SELinux工作模式为permissive,设置完成后,使用getenforce命令查看SELinux工作模式,结果为Permissive,表明SELinux工作模式设置成功。使用setenforce命令无法关闭SELinux服务,即无法使用setenforce命令设置SELinux工作模式为disabled,并且,setenforce命令设置的工作模式只临时有效,系统重启后,设置就会失效。如果想使设置的SELinux工作模式永久生效,需要修改SELinux的配置文件/etc/selinux/config。使用cat命令查看/etc/selinux/config文件,内容如下所示。点击查看9.4.2SELinux工作模式2.setenforce命令在/etc/selinux/config文件中,通过设置SELINUX的值就可以更改SELinux的工作模式。通过/etc/selinux/config文件,也可以将SELinux工作模式设置为disabled。需要注意的是,如果SELinux服务处于关闭状态,那么它无法通过setenforce命令开启。9.4.2SELinux工作模式2.setenforce命令例如,通过设置/etc/selinux/config文件,关闭SELinux服务。重启系统后,使用setenforce命令设置SELinux工作模式为enforcing或permissive时,系统会提示无法设置,具体命令及输出结果如下所示。9.4.2SELinux工作模式2.setenforce命令[root@localhost~]#getenforceDisabled [root@localhost~]#setenforce1 setenforce:SELinuxisdisabled 查看SELinux工作模式处于关闭状态设置SELinux工作模式为enforcing设置失败了解SELinux安全系统,能够说出SELinux安全上下文。学习目标9.4.3SELinux安全上下文安全上下文是SELinux的核心,进程和资源都有自己的安全上下文。进程能够正确地访问资源,就取决于进程安全上下文与资源安全上下文的匹配。9.4.3SELinux安全上下文下面分别从SELinux安全上下文、SELinux安全上下文的查看两个方面对SELinux安全上下文进行讲解。SELinux安全上下文ASELinux安全上下文的查看B9.4.3SELinux安全上下文安全上下文由4个字段组成,每个字段之间使用“:”分隔,其格式如下所示。1.SELinux安全上下文9.4.3SELinux安全上下文身份:角色:类型:级别基本格式下面分别对这4个字段进行介绍。(1)身份:用于标识数据被哪个身份的用户所拥有。常见的身份有以下3种。1.SELinux安全上下文9.4.3SELinux安全上下文1root:system_u:root用户。2系统用户。user_u:3普通用户。(2)角色:用于标识安全上下文的归属,如进程、文件或目录的安全上下文。常见的角色有以下2种。1.SELinux安全上下文9.4.3SELinux安全上下文1object_r:system_r:资源(文件或目录)的安全上下文。2进程的安全上下文。(3)类型:安全上下文中最重要的字段,进程安全上下文与资源安全上下文相匹配就是类型字段的匹配。类型字段在资源安全上下文中称为类型,但在进程安全上下文中称为域(Domain)。进程的SELinux域和资源安全上下文中的类型相匹配,进程才能访问资源。1.SELinux安全上下文9.4.3SELinux安全上下文(4)级别:由SELinux定义的安全等级,用于限制访问。目前已经定义的安全等级为s0~s15,数字越大表示安全等级越高。学习了SELinux安全上下文的结构组成,下面介绍SELinux安全上下文的查看。2.SELinux安全上下文的查看9.4.3SELinux安全上下文2.SELinux安全上下文的查看9.4.3SELinux安全上下文STEP01查看文件安全上下文。在JDK安装目录的bin目录下新建文本文档,重命名为HelloWorld.java。[root@itheima~]#ls-Z/etc/shadowsystem_u:object_r:shadow_t:s0/etc/shadow2.SELinux安全上下文的查看9.4.3SELinux安全上下文STEP02查看目录安全上下文。查看目录安全上下文,需要使用ts命令的-Zd选项,例如,查看httpd服务数据保存目录/var/www/html的安全上下文,具体命令与输出结果如下所示。[root@itheima~]#ls-Zd/var/www/htmlsystem_u:object_r:httpd_sys_content_t:s0/var/www/html2.SELinux安全上下文的查看9.4.3SELinux安全上下文STEP03查看进程安全上下文。进程安全上下文使用ps命令查看,例如,查看httpd服务进程的安全上下文,具体命令及输出结果如下所示。点击查看了解SELinux安全系统,能够说出SELinux默认安全上下文的修改。学习目标9.4.4SELinux默认安全上下文的修改在Linux操作系统中,系统文件和目录都有默认的安全上下文,Linux操作系统提供了semanage命令和restorecon命令来管理文件、目录的默认安全上下文,下面分别对这两个命令进行介绍。9.4.4SELinux默认安全上下文的修改semanage命令Arestorecon命令B1.semanagesemanage命令用于查询、修改、增加、删除文件或目录的默认SELinux安全上下文,其基本格式如下所示。9.4.4SELinux默认安全上下文的修改semanage命令选项参数(文件或目录)基本格式semanage常用的命令和选项如表。9.4.4SELinux默认安全上下文的修改命令和选项含义fcontext管理文件或目录的默认安全上下文-a添加默认安全上下文配置-d删除默认安全上下文-m修改默认安全上下文-t设置默认安全上下文-l查询默认SELinux安全上下文1.semanage案例9-21:分别查看/etc/shadow文件、/etc/cron.d目录和/etc/passwd文件的默认安全上下文。9.4.4SELinux默认安全上下文的修改1.semanage点击查看案例9-22:创建/www目录,并设置其默认安全上下文类型为htttpd_sys_content_t。9.4.4SELinux默认安全上下文的修改1.semanage点击查看创建/www目录,并设置其默认安全上下文,需要调用的命令较多,下面分步骤进行讲解。(1)在当前目录下创建/www目录,并查看/www目录的安全上下文,具体命令及输出结果如下所示如表。案例9-22:创建/www目录,并设置其默认安全上下文类型为htttpd_sys_content_t。9.4.4SELinux默认安全上下文的修改1.semanage使用semanage命令为/www目录添加类型为httpd_sys_content_t的默认安全上下文,具体命令及输出结果如下所示。[root@localhost~]#semanagefcontext-a-thttpd_sys_content_t/www[root@localhost~]#semanagefcontext-l|grep/www…/var/www/wiki[0-9]?\.phpregularfilesystem_u:object_r:mediawiki_content_t:s0/wwwallfilessystem_u:object_r:httpd_sys_content_t:s02.restoreconretorecon命令用于恢复文件或目录的默认安全上下文。restorecon命令基本格式如下所示。9.4.4SELinux默认安全上下文的修改restorecon选项参数(文件或目录)基本格式restorecon命令常用选项如表。9.4.4SELinux默认安全上下文的修改选项含义-R递归操作,使当前目录和目录下所有子目录和文件同时恢复默认安全上下文-v把恢复过程显示到屏幕上2.restorecon案例9-22:创建/www目录,并设置其默认安全上下文类型为htttpd_sys_content_t。9.4.4SELinux默认安全上下文的修改在案例9-22中,使用semanage命令为/www目录设置了默认安全上下文,但如果使用ls命令查看/www目录,其安全上下文类型仍然是default_t,命令执行结果如下所示。[root@localhost~]#ls-Zd/wwwunconfined_u:object_r:default_t:s0/www2.restorecon这是因为semanage命令修改文件或目录的默认安全上下文时无法立即生效,重启系统也不能使之生效。如果要使semanage命令设置的默认安全上下文生效,需要使用restorecon命令。案例9-22:创建/www目录,并设置其默认安全上下文类型为htttpd_sys_content_t。9.4.4SELinux默认安全上下文的修改使用restorecon命令使/www目录默认安全上下文生效的具体命令及输出结果如下所示。[root@localhost~]#restorecon-Rv/wwwRelabeled/wwwfromunconfined_u:object_r:default_t:s0tounconfined_u:object_r:httpd_sys_conte

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论