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

下载本文档

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

文档简介

项目9管理系统安全《Linux网络操作系统项目化教程》学习目标/Target了解Linux操作系统的安全机制,能够说出Linux常见的安全机制了解Linux操作系统的不安全因素,能够说出Linux系统常见的不安全因素掌握网络的检查方法,能够使用ss命令监控系统网络运行情况掌握进程的监控方法,能够使用ps命令、top命令监控系统进程运行状态学习目标/Target掌握用户查看命令的使用,能够使用who命令、w命令查看用户相关信息掌握系统日志的查看方法,能够使用journalctl命令查看系统各种日志信息掌握系统文件的查看方法,能够使用lsof命令查看系统打开了哪些文件了解防火墙,能够说出防火墙概念、作用及特点学习目标/Target了解防火墙策略与规则,能够说出防火墙防御原理了解SELinux安全系统,能够说出SELinux概念、工作模式、安全上下文、默认安全上下文的修改与安全策略掌握firewall-cmd命令,能够使用firewalld命令完成特定场景的防火墙配置项目导入

公司要升级网络安全环境,上级领导让安安带着邦小苑完成公司网络的安全升级,包括网络监控、进程监控、日志监控、防火墙等。安安让邦小苑负责以下4项防火墙的配置任务。任务9-1

开放相关协议的流量。任务9-2

拒绝特定用户访问本机服务。任务9-3

关闭端口。任务9-4

设置防火墙启动方式。目录/Contents010203Linux操作系统安全概述系统运行情况检查和监督防火墙04SELinux安全系统目录/Contents050607任务9-1开放相关协议的流量任务9-2拒绝特定用户访问本机服务任务9-3关闭端口08任务9-4设置防火墙启动方式Linux操作系统安全概述9.1

先定一个小目标!了解Linux系统安全机制,能够说出Linux常见的安全机制9.1.1Linux操作系统的安全机制9.1.1Linux操作系统的安全机制Linux操作系统基本的安全机制如下:口令安全最小权限防火墙日志文件9.1.1Linux操作系统的安全机制1.口令安全口令就是为用户设置的帐号密码,它是Linux系统最基本的安全机制。设置密码有效期密码有效期可以在/etc/login.defs文件中设置。清除不设置密码帐号通过/etc/passwd文件查看并清除不设置密码的帐号。清除长期未登录帐号定期清除长期不登录的帐号。口令安全措施9.1.1Linux操作系统的安全机制2.最小权限为用户分配权限时,以最小权限为准,防止用户进行违规操作,即便用户帐号被攻击盗用,最小权限机制也无法让用户造成较大危害。3.防火墙防火墙技术是计算机最基本的防御措施,它通过定义一组规则来过滤不合法的数据包,此外防火墙还可以跟踪、监控已经放行的数据包,对数据包的流向进行记录,一旦发现问题就会报警,把它们对网络和主机的危害降到最低。9.1.1Linux操作系统的安全机制4.日志文件Linux系统日志文件的默认位置是/var/log,有些第三方软件的日志文件也会保存在自己独有的目录。[root@localhost~]#cd/var/log[root@localhostlog]#lsanacondagdmsecure-20200918auditglusterfssecure-20201103boot.loghawkey.logspeech-dispatcher┄boot.log-20201106lastlogsssdboot.log-20201109libvirtswtpmbtmpmaillogtuned┄cronmaillog-20200918vmware-network.3.log┄messagesvmware-network.5.log┄dnf.logsecurevmware-vmusr-root.logdnf.rpm.logsecure-20200901wtmpfirewalldsecure-20200911Xorg.9.log

先定一个小目标!了解Linux不安全因素,能够说出Linux系统常见的不安全因素9.1.2Linux操作系统的不安全因素物理因素是指在物理介质上保证Linux系统的安全,它主要受Linux系统设备所处的环境影响,包括温度、湿度、静电、灰尘、强电磁场、电磁脉冲等,自然灾害中的火灾、水灾、地震等,均有可能破坏系统设备,影响系统的正常工作。9.1.2Linux操作系统的不安全因素1.物理因素人为因素是指由于人员的疏忽或黑客的主动攻击造成的系统安全事件,这些攻击可能是有意的,也可能是无意的。有意的系统破坏行为是指人为主动的恶意攻击、违纪、违法和犯罪等。无意的系统破坏行为是指由于操作疏忽而造成的失误,对系统造成不良影响。2.人为因素系统自身因素是指网络中的计算机系统或网络设备由于自身的原因引发的系统安全风险。计算机硬件系统的故障。各类计算机软件故障或安全缺陷,包括系统软件(如操作系统)、应用软件的故障或缺陷。网络和通信协议自身的缺陷。系统自身因素9.1.2Linux操作系统的不安全因素3.系统自身印刷系统运行情况检查和监督9.2

先定一个小目标!掌握网络的检查,能够使用ss命令监控系统网络运行情况9.2.1检查网络9.2.1检查网络Linux系统提供了ss命令用于检查网络状态。ss是SocketStatistics的缩写,可以获取所有socket统计信息,包括socket类型、socket状态、socket的IP地址及端口号等。ss选项参数格式9.2.1检查网络ss命令常用选项选项说明-a显示所有连接的socket-s显示系统中所有socket摘要-l显示所有监听状态的socket-p显示使用socket的进程-t显示处理连接状态的TCPsocket-u显示处理连接状态的UDPsocket-o显示计时器信息-i显示TCPsocket内部信息-n不解析服务名称-r解析服务名称-4使用IPv4地址的socket-6使用IPv6地址的socket9.2.1检查网络1.显示socket信息ss命令可以通过不同的选项显示不同类型的socket信息。案例9-1显示socket摘要信息。[itheima@localhost~]$ss–s#显示socket摘要信息Total:1127TCP:16(estab1,closed5,orphaned0,timewait0)Transport TotalIPIPv6RAW 101UDP 1174TCP 1165INET 231310FRAG 0009.2.1检查网络案例9-2显示处于监听状态的socket,以及使用这些socket的进程。[itheima@localhost~]$ss–plNetidStateRecv-QSend-QLocalAddress:PortPeerAddress:PortnlUNCONN00rtnl:goa-daemon/2641*…

tcpLISTEN0128*:http*:*tcpLISTEN0128[::]:ssh[::]:*tcpLISTEN05[::1]:ipp[::]:*9.2.1检查网络2.显示不同类型的socketss命令可以通过不同的选项显示不同类型的socket信息。案例9-3显示TCPsocket、UDPsocket信息。[itheima@localhost~]$ss–ta #显示所有的TCPsocket信息StateRecv-QSend-QLocalAddress:PortPeerAddress:PortLISTEN0128:x11-ssh-offset:*┄[itheima@localhost~]$ss–ua #显示所有的UDPsocket信息StateRecv-QSend-QLocalAddress:PortPeerAddress:PortUNCONN00:48056:*┄9.2.1检查网络3.显示某种状态的socket一个socket有多种不同的状态,ss命令可以通过查询处于不同状态的socket。socket常见的状态状态说明LISTEN监听状态ESTABLISHED连接打开状态,即刚刚建立连接,可以传输数据的状态CONNECTED连接状态,通常除了LISTEN和CLOSED,其他状态都称为CONNECTED状态FIN-WAIT-1/FIN-WAIT-2释放连接状态CLOSED关闭状态9.2.1检查网络显示所有状态为ESTABLISHED的HTTP连接。案例9-4[itheima@localhost~]$ss-ostateestablished'(dport=:httpordport=:http)'

NetidRecv-QSend-QLocalAddress:PortPeerAddress:Port9.2.1检查网络案例9-5分别显示使用IPv4地址和IPv6地址,并且处理CLOSED状态的socket。[itheima@localhost~]$ss-4stateclosed#使用IPv4地址,CLOSED状态NetidRecv-QSend-QLocalAddress:PortPeerAddress:Portudp00:48056:*┄┄[itheima@localhost~]$ss-6stateclosed#使用IPv6地址,CLOSED状态NetidRecv-QSend-QLocalAddress:PortPeerAddress:Porticmp600*:ipv6-icmp*:*udp00[::]:sunrpc[::]:*┄┄9.2.1检查网络4.显示指定IP地址和端口的socketss命令提供了src命令和dst命令来匹配指定地址的socket,src命令用于匹配本地地址,dst命令用于匹配远程地址。案例9-6显示来自6地址的socket。[itheima@localhost~]$ssdst6NetidStateRecv-QSend-QLocalAddress:PortPeerAddress:Port9.2.1检查网络在IP地址后面可以使用:连接端口号指定来自该地址某个端口的socket。[itheima@localhost~]$ssdst6:1024

#指定端口号[itheima@localhost~]$ssdst6:http

#http连接默认端口号809.2.1检查网络案例9-7显示来自本机地址的socket。[itheima@localhost~]$sssrc32NetidStateRecv-QSend-QLocalAddress:PortPeerAddress:PortudpESTAB0032%ens33:bootpc54:bootpstcpESTAB03632:ssh:52037tcpESTAB0032:ssh:589159.2.1检查网络ss命令还可以将本地端口(sport)或远程端口(dport)与另一个端口进行比较,查询来自某些端口的socket。5.端口比较ssdport/sportOPPORT格式9.2.1检查网络OP表示的运算规则规则说明\<=或le小于等于\>=或ge大于等于==或=或eq等于!=或ne不等于\<或lt小于\>或gt大于9.2.1检查网络[itheima@localhost~]$ssdport\>=60000 #匹配大于等于60000的远程端口[itheima@localhost~]$ssdport=32195 #匹配远程端口32195[itheima@localhost~]$sssport=http #匹配本地80端口[itheima@localhost~]$sssport!=1024 #匹配不是1024的本地端口[itheima@localhost~]$ssdport\<1024 #匹配小于1024的远程端口示例使用端口比较运算符查询Socket命令。

先定一个小目标!掌握进程的监控,能够使用ps命令、top命令监控系统进程运行状态9.2.2监控进程9.2.2监控进程进程是计算机系统中的运行单元,计算机系统主要通过进程完成任务,如读写文件、操作数据库等。如果系统中有非法进程,可能会给系统带来重大危害。此外,有些网络攻击会破坏计算机系统的合法进程,使系统无法正常工作,从而达到攻击计算机系统的目的,因此,监控和保护进程安全,是保证系统安全的重要措施。9.2.2监控进程Linux操作系统提供了很多命令用于监控进程,如ps、top、pstree等,通过这些命令,系统管理员可以了解系统中进程运行情况,如进程运行状态、进程是否结束、哪些进程占用了过多资源等。如果发现非法进程或异常进程,可以使用kill命令或killall命令终止。

先定一个小目标!掌握用户查看命令的使用,能够使用who命令、w命令查看用户相关信息9.2.3查看用户9.2.3查看用户1.who命令who命令用于显示当前登录系统的用户信息,显示内容包括登录用户名、登录终端、登录日期和时间。who选项格式9.2.3查看用户who命令常用选项选项说明-a显示用户登录的所有信息-b显示最近一次系统启动的日期和时间-d显示当前登录用户中僵死进程-l显示系统登录进程-m仅显示当前终端用户登录信息-q统计当前登录用户数量-r显示初始化进程的运行级别-u显示带有进程标识的登录用户列表-H为每一列显示信息添加标题9.2.3查看用户显示用户登录信息。[itheima@localhost~]$who #显示系统当前登录用户itheimatty22020-11-1110:25(tty2)itheimapts/02020-11-1110:25()[itheima@localhost~]$who–a #显示用户登录的所有信息

系统引导2020-11-1110:23

运行级别52020-11-1110:24itheima+tty22020-11-1110:2504:352378(tty2)itheima+pts/02020-11-1110:25.2978()[itheima@localhost~]$who–b #显示最近一次系统启动的日期和时间

系统引导2020-11-1110:23 案例9-89.2.3查看用户2.w命令w命令是who命令的增强版,它可以显示登录用户更多更详细的信息。w选项参数格式w命令常用选项选项说明-h不显示列标题-s使用短格式显示信息,不显示登录时间、JCPU(终端机阶段作业)和PCPU(程序消耗)时间-f切换用户从哪里登录-u显示当前进程和cpu时间,忽略用户名9.2.3查看用户案例9-9查看系统当前登录用户信息。[itheima@localhost~]$w

15:54:12up5:30,2users,loadaverage:0.07,0.02,0.01USERTTYFROMLOGIN@IDLEJCPUPCPUWHATitheimatty2tty210:255:30m1:090.09s/usr/libexec/gsd-disitheimapts/010:250.00s1.04s0.02sw

先定一个小目标!掌握系统日志的查看,能够使用journalctl命令查看系统各种日志信息9.2.4查看日志9.2.4查看日志从CentOSLinux

7开始,CentOS操作系统开始统一管理日志,使用systemd-journald服务收集日志信息进行统一管理。为了方便查看日志文件,systemd-journald服务提供了相应的日志管理命令journalctl,该命令功能强大,可以查看所有的日志信息。journalctl选项参数格式9.2.4查看日志journalctl命令常用选项选项说明-a显示全部日志信息-k查看内核日志-b查看系统本次启动的日志-u查看指定服务的日志-n指定查看的条数-f追踪日志,只显示最近的日志条目,并不断打印新的被附加到日志中的条目-o指定输出格式,journalctl命令可以输出多种格式的信息。-p指定日志优先级--disk-usage查看当前日志占用的磁盘空间大小9.2.4查看日志-o选项的参数-ocat:只显示信息字段本身export:适合传输或备份的二进制格式json:标准JSON格式,第行一个条目json-pretty:优化的JSON格式,适合人类阅读习惯json-sse:JSON格式,经过打包以兼容server-sent事件short:默认syslog类输出格式short-mnotonic:默认格式,提供普通时间戳short-iso:默认格式,强调显示ISO8601挂名时间戳short-precise:默认格式,提供微秒级精度verbose:显示该条目的全部可用journal字段,包括通常被内部隐藏的字段9.2.4查看日志journanctl命令查看日志的用法示例。[root@localhost~]#journalctl–k #查看内核日志[root@localhost~]#journalctl–b #查看系统本次启动的日志[root@localhost~]#journalctl–uhttpd #查看httpd服务日志#查看2条内核日志信息,并以json-pretty格式输出[root@localhost~]#journalctl–k–n2–ojson-pretty[root@localhost~]#journalctl–f #追踪日志[root@localhost~]#journalctl---disk-usage#查看当前日志所占磁盘空间大小示例9.2.4查看日志journalctl命令可以使用--since和--until选项查看指定时间的日志,这两个选项含义如下:--since:指定日志信息的开始时间。--until:指定日志信息的截止时间。journalctl命令支持的时间格式为HH-MM-SS(时-分-秒),此外,还能够识别英文单词表示的时间,如yesterday、today、torromow、now、ago、hour、min、seconds等。1.查看指定时间的日志9.2.4查看日志案例9-10查看昨天的日志。[root@localhost~]#journalctl--sinceyesterday--LogsbeginatThu2020-11-1209:21:09CST,endatThu2020-11-1217:01:01CST.--11月1209:21:09itcastkernel:Linuxversion4.18.0-193.el8.x86_64(mockbuild@kbuil>11月1209:21:09itcastkernel:Commandline:BOOT_IMAGE=(hd0,msdos1)/vmlinuz-4.18.0>…lines1-259.2.4查看日志案例9-11查看2020年11月11号到目前为止的日志。[root@localhost~]#journalctl--since"2020-11-11"--untilnow--LogsbeginatThu2020-11-1209:21:09CST,endatThu2020-11-1216:51:41CST.--11月1209:21:09itcastkernel:Linuxversion4.18.0-193.el8.x86_64(mockbuild@kbuil>11月1209:21:09itcastkernel:Commandline:…11月1209:21:09itcastkernel:Hypervisordetected:VMwarelines1-259.2.4查看日志案例9-12查看过去15分钟的日志。[root@localhost~]#journalctl--since"15minago"--LogsbeginatThu2020-11-1209:21:09CST,endatThu2020-11-1217:06:41CST.--11月1217:06:41localhostNetworkManager[1149]:<info>[1605172001.2900]dhcp4(en>11月1217:06:41localhostNetworkManager[1149]:<info>[1605172001.2904]dhcp4(en>…lines1-259.2.4查看日志指定进程、用户、用户组的选项分别如下所示。_PID:指定进程ID。_UID:指定用户ID。_GID:指定用户组ID。2.查看指定进程、用户或用户组的日志journalctl命令可以查看指定进程、指定用户或指定用户组的日志。journalctl选项=参数格式9.2.4查看日志案例9-13查看昨天PID为4070的进程日志。[root@localhost~]#journalctl_PID=4070--sinceyesterday--LogsbeginatThu2020-11-1209:21:09CST,endatThu2020-11-1218:06:41CST.--11月1210:37:17localhostsu[4070]:(toroot)itheimaonpts/011月1210:37:17localhostsu[4070]:pam_systemd(su-l:session):Cannotcreatesessio>11月1210:37:17localhostsu[4070]:pam_unix(su-l:session):sessionopenedforuser>lines1-4/4(END)9.2.4查看日志案例9-14查看用户ID为1000的用户日志、用户组ID为1002的用户组日志。[root@localhost~]#journalctl_UID=1000[root@localhost~]#journalctl_GID=10029.2.4查看日志3.

查看指定优先级的日志Linux系统根据日志记录的信息错误严重程度,将日志划分为了不同的优先级。0——emerg(紧急)1——alert(警惕)2——crit(严重)3——err(错误)4——warning(警告)5——notice(注意)6——info(通知)7——debug(更正)9.2.4查看日志案例9-15查看系统本次启动后,优先级为err的日志。[root@localhost~]#journalctl-b-perr--LogsbeginatThu2020-11-1209:21:09CST,endatThu2020-11-1218:22:49CST.--11月1209:21:10itcastkernel:sd2:0:0:0:[sda]Assumingdrivecache:writethrough11月1209:21:10itcastkernel:sd2:0:1:0:[sdb]Assumingdrivecache:writethrough11月1209:21:10itcastkernel:sd2:0:2:0:[sdc]Assumingdrivecache:writethrough11月1209:21:10itcastkernel:sd2:0:3:0:[sdd]Assumingdrivecache:writethrough11月1209:21:10itcastkernel:sd2:0:4:0:[sde]Assumingdrivecache:writethrough11月1209:21:22localhost.localdomainkernel:piix4_smbus0000:00:07.3:SMBusHost>lines1-7/7(END)

先定一个小目标!掌握系统文件的查看,能够使用lsof命令查看系统打开了哪些文件9.2.5查看系统打开的文件9.2.5查看系统打开的文件在Linux操作系统中,一切皆文件,通过文件不仅可以访问常规数据,还可以访问网络连接和硬件,系统运行情况都可以从文件获知。因此,在Linux中查看系统当前打开的文件,可以帮助我们监控系统运行情况,也可以帮助我们诊断系统出现的问题。Linux系统提供了一个命令lsof,用于查看系统打开的文件,以及查看网络连接、进程、端口号、用户等信息。lsof选项参数格式9.2.5查看系统打开的文件lsof命令常用选项选项说明-a指示其他选项之间的“与”关系-t只列出进程PID-n不解析主机名-c字符串列出以指定字符串开头的进程打开的文件-gGID列出指定GID的进程详情-d文件描述符列出使用该文件描述符的进程+d目录列出指定目录下被打开的文件+D目录递归列出指定目录下被打开的文件-n目录列出使用NFS的文件-i条件列出符合条件(4、6、协议、:端口号、@ip)进程打开的文件-pPID列出指定进程号所打开的文件-u用户名列出指定用户的进程打开的文件9.2.5查看系统打开的文件lsof命令使用及输出结果进程名称进程名称线程ID任务名称进程所有者文件描述符文件类型磁盘设备文件大小和文件偏移量索引节点文件的确切名称示例9.2.5查看系统打开的文件文件描述符种类文件描述符说明0标准输出1标准输入2标准错误cwd应用程序当前工作目录,即该应用程序的启动目录txt该类型的文件是程序代码,如应用程序二进制文件本身或共享库lnn库引用(AIX)errFD信息错误jld监管目录ltx共享库文本(代码和数据)mxx十六进制内存映射类型号m86DOS合并映射文件mem内存映射文件pd父目录rtd根目录tr内核跟踪文件(OpenBSD)v86VP/ix映射文件9.2.5查看系统打开的文件lsof常用的文件类型文件类型说明REG普通文件DIR表示目录CHR表示字符类型BLK块设备类型UNIXUNIX域套接字FIFO先进先出队列IPv4IPv4套接字9.2.5查看系统打开的文件查看/bin/bash文件都在被哪些进程使用。[root@localhost~]#lsof/bin/bashlsof:WARNING:can'tstat()fuse.gvfsd-fusefilesystem/run/user/1000/gvfsOutputinformationmaybeincomplete.COMMANDPIDUSERFDTYPEDEVICESIZE/OFFNODENAMEksmtuned1073roottxtREG253,0121924850387463/usr/bin/bashbash3034itheimatxtREG253,0121924850387463/usr/bin/bashbash3946roottxtREG253,0121924850387463/usr/bin/bash案例9-169.2.5查看系统打开的文件查看哪些进程在使用80端口。[root@localhost~]#lsof-i:80COMMANDPIDUSERFDTYPEDEVICESIZE/OFFNODENAMEhttpd1378root4uIPv6387400t0TCP*:http(LISTEN)httpd1623apache4uIPv6387400t0TCP*:http(LISTEN)httpd1624apache4uIPv6387400t0TCP*:http(LISTEN)httpd1625apache4uIPv6387400t0TCP*:http(LISTEN)案例9-179.2.5查看系统打开的文件查看TCP连接信息和UDP连接信息。[root@localhost~]#lsof-itcpCOMMANDPIDUSERFDTYPEDEVICESIZE/OFFNODENAMEsystemd1root36uIPv4267610t0TCP*:sunrpc(LISTEN)systemd1root38uIPv6267630t0TCP*:sunrpc(LISTEN)…[root@localhost~]#lsof-iudpCOMMANDPIDUSERFDTYPEDEVICESIZE/OFFNODENAMEsystemd1root37uIPv4267620t0UDP*:sunrpcsystemd1root39uIPv6267640t0UDP*:sunrpc…案例9-189.2.5查看系统打开的文件查看/etc目录下被打开的文件。[root@localhost~]#lsof+d/etclsof:WARNING:can'tstat()fuse.gvfsd-fusefilesystem/run/user/1000/gvfsOutputinformationmaybeincomplete.COMMANDPIDUSERFDTYPEDEVICESIZE/OFFNODENAMEavahi-dae981avahicwdDIR253,07151948099/etc/avahiavahi-dae981avahirtdDIR253,07151948099/etc/avahi案例9-19防火墙9.3

先定一个小目标!了解防火墙,能够说出防火墙概念、作用及特点9.3.1防火墙概述9.3.1防火墙概述防火墙也称为防护墙,是指隔离在本地网络与外界网络之间的一种高级访问控制设备、置于不同网络安全域之间的一系列部件组合,也是不同网络安全域间通信流的唯一通道。9.3.1防火墙概述防火墙的物理载体可以是位于内部网或Web站点与Internet之间的一个路由器或一台计算机(通常称为堡垒主机),或者是它们的组合。9.3.1防火墙概述防火墙作用1过滤、筛选和屏蔽有害的信息和服务,保护内网中的网络服务。2防止攻击者接近防御设备。3实施安全策略,对网络通信进行访问控制。4对内外网之间的通信进行监控审计。5限制用户对特殊站点的访问。9.3.1防火墙概述防火墙特征1所有出站和入站的网络流量都必须经过防火墙。2只允许被授权的网络流量才能通过,不被授权的网络流量将被丢弃或拒绝。3防火墙本身不能被攻破。4可以与其他安全技术(如加密技术)结合使用,以增加自身功能,提供更强大的保护。5界面友好,方便用户设置防火墙规则。9.3.1防火墙概述1可以限制有害的网络服务,但有一些有用的网络服务会存在安全漏洞,它们也会被防火墙限制。2防火墙不能完全防止内部威胁,比如用户操作失误而导致网络受到攻击。3防火墙无法防御通过防火墙以外的其他途径的攻击。4防火墙无法完全防御已感染病毒的软件或文件。5防火墙无法防御木马、缓冲区溢出等类型的攻击。6防火墙是一种被动式的防护手段,它只对已知网络威胁起作用,对新形式的攻击,还需要升级更新。防火墙不足

先定一个小目标!了解防火墙策略与规则,能够说出防火墙防御原理9.3.2策略与规则当数据包经过防火墙时,后者会将客户请求逐一与所设置的规则进行匹配,当匹配成功之后,防火墙会执行规则中定义的行为,如放行、阻止、丢弃等。9.3.2策略与规则防火墙的规则存储在内核中的netfilter模块,多个规则可以组成一个规则链,根据数据包处理位置的不同,可以将规则链分为以下5种。9.3.2策略与规则数据包入口过滤,定义数据包由外部发往内部的规则。INPUT数据包出口过滤,定义数据包由内部发往外部的规则。OUTPUT转发关卡过滤,数据包不进入用户空间,进行路由转发时的规则。FORWARD路由前过滤,数据包进来,还未查询路由表之前的规则,所有的数据包进来都要先由这个链进行处理。PREROUTING路由后过滤,查询完路由表,数据将要出去的规则,所有发送出去的数据包都要由这个链进行处理。POSTROUTING配置防火墙就是添加、删除、修改这些规则。例如,设置一条规则,拒绝所有的ICMP数据包,设置好该规则之后,该规则就会保存到内核的netfilter模块,之后所有的ICMP数据包都会被拒绝。防火墙规则的配置由防火墙管理工具实现。早期的CentOS

Linux

5/6操作系统默认使用iptables工具管理防火墙,从CentOS7开始,CentOS操作系统默认使用firewalld工具管理防火墙。9.3.2策略与规则firewalld支持动态更新技术,并增加了区域(zone)的概念。所谓区域是指firewalld预先准备了几套防火墙策略集合,用户可以根据不同的生产环境来选择不同的策略,从而实现防火墙策略之间的快速切换。9.3.2策略与规则firewalld常见区域及相应策略规则9.3.2策略与规则区域策略trusted允许所有数据包home拒绝流入的流量,除非与流出的流量相关。若流量与ssh、mdns、ipp-client、amba-client、dhcpv6-client服务相关,则允许流量通过internal等同于home区域work拒绝流入的流量,除非与流出的流量相关,若流量与ssh、ipp-client、dhcpv6-client相关,则允许流量通过public拒绝流入的流量,除非与流出的流量相关,若流量与ssh、dhcpv6-client服务相关,则允许流量通过external拒绝流入的流量,除非与流出的流量相关,若流量与ssh服务相关,则允许流量通过dmz拒绝流入的流量,除非与流出的流量相关,若流量与ssh服务相关,则允许流量通过block拒绝流入的流量,除非与流出的流量相关(阻断)drop拒绝流入的流量,除非与流出的流量相关(丢弃)CentOSStream9操作系统默认开启了firewalld服务,用户可以使用systemctl命令查看firewalld服务状态,具体命令及输出结果如下:9.3.2策略与规则[root@localhost~]#systemctlstatusfirewalld●firewalld.service-firewalld-dynamicfirewalldaemonLoaded:loaded(/usr/lib/systemd/system/firewalld.service;enabled;vendorpreset>

Active:active(running)sinceFri2020-11-1309:14:09CST;5h32minagoDocs:man:firewalld(1)MainPID:1089(firewalld)Tasks:2(limit:11155)Memory:25.0M…lines1-13/13(END)

先定一个小目标!掌握firewall-cmd命令,能够熟练使用firewall-cmd命令设置主机的防御规则9.3.3firewall-cmd命令9.3.3firewall-cmd命令firewalld提供了firewall-cmd命令来设置防火墙规则。firewall-cmd选项参数格式9.3.3firewall-cmd命令firewall-cmd命令常用选项参数含义--get-default-zone查询默认的区域名称--set-default-zone=区域名称设置默认的区域,使其永久生效--get-zones显示可用的区域--get--services显示预先定义的服务--get-active-zones显示当前正在使用的区域与网卡名称--add-source=将源自此IP或子网的流量导向指定的区域--remove-source不再将源自此IP或子网的流量都导向某个指定区域--add-service=服务名设置默认区域允许该服务的流量--add-port=端口号/协议设置默认区域允许该端口的流量9.3.3firewall-cmd命令firewall-cmd命令常用选项参数含义--remove-service=服务名设置默认区域不再允许该端口的流量--add-interface=网卡名称将源自该的所有流量都导向某个指定区域--change-interface=网卡名称将某个网卡与区域进行关联--list-all显示当前区域的配置参数、资源、端口以及服务等信息--list-all-zones显示所有区域的配置参数、资源、端口以及服务等信息--reload让永久生效的配置规则立即生效,并覆盖当前的配置规则--panic-on开启应急状况模式--panic-off关闭应急状况模式9.3.3firewall-cmd命令firewalld配置防火墙规则时有两个模式。运行时模式(Runtime)运行时模式下配置的规则立即生效,它是firewalld的默认模式。永久模式(Permanent)永久模式下配置的规则需要重启系统才能生效。永久模式--permanent选项指定。如果要使永久模式下配置的规则立即生效,需要手动执行firewall-cmd--reload命令。9.3.3firewall-cmd命令下面通过一组示例演示firewall-cmd命令的用法。(1)查看firewalld服务当前所使用的区域。[root@localhost~]#firewall-cmd--get-default-zonepublic9.3.3firewall-cmd命令(2)查看firewalld当前区域的配置参数、资源、服务等信息。[root@localhost~]#firewall-cmd--list-allpublic(active)target:defaulticmp-block-inversion:nointerfaces:ens33sources:services:cockpitdhcpv6-clientsshports:177/tcpprotocols:masquerade:noforward-ports:source-ports:icmp-blocks:richrules:9.3.3firewall-cmd命令(3)查看public区域是否允许SSH协议数据包和FTP协议数据包通过。[root@localhost~]#firewall-cmd--zone=public--query-service=sshyes[root@localhostitheima]#firewall-cmd--zone=public--query-service=ftpno9.3.3firewall-cmd命令(4)将FTP协议数据包设置为永久允许,并立即生效。[root@localhost~]#firewall-cmd--permanent--zone=public--add-service=ftp #设置规则success[root@localhost~]#firewall-cmd–reload #立即生效success[root@localhost~]#firewall-cmd--zone=public--query-service=ftpyes9.3.3firewall-cmd命令(5)将1024端口的数据包设置为允许,即开放1024端口,仅限当前有效。[root@localhost~]#firewall-cmd--zone=public--list-port177/tcp[root@localhost~]#firewall-cmd--zone=public--add-port=1024/tcpsuccess[root@localhost~]#firewall-cmd--zone=public--list-port177/tcp1024/tcp9.3.3firewall-cmd命令(6)配置一条富规则,拒绝/24网段的所有用户访问本机的ssh服务(22端口)。[root@localhost~]#firewall-cmd--zone=public--add-rich-rule='rulefamily="ipv4"sourceaddress="/24"servicename="ssh"reject'success在IP地址为35的主机上,通过ssh服务连接本机时,请求会被拒绝。[root@agent~]#ssh49#在35主机执行此命令ssh:connecttohost49port22:ConnectionrefusedSELinux安全系统9.4

先定一个小目标!了解SELinux安全系统,能够说出SELinux概念9.4.1SELinux概述9.4.1SELinux概述SELinux(Security-EnhancedLinux)是一个强制访问控制(MAC,MandatoryAccessControl)的安全系统,旨在提高Linux系统的安全性。Linux内核从2.6版本开始,就内置了SELinux子系统。SELinux可以让各个服务进程都受到约束,使进程只获取与本进程相关的资源。SELinux会对资源进行类型设定,指定资源只能被哪些进程访问。

先定一个小目标!了解SELinux安全系统,能够说出SELinux工作模式有哪几种9.4.2SELinux工作模式9.4.2SELinux工作模式SELinux服务提供了3种工作模式。enforcingpermissivedisabled强制模式,该模式强制启用SELinux的安全策略,将拦截进程的不合法请求,它是SELinux的默认工作模式。宽容模式,该模式在遇到进程越权访问时,只发出警告而不强制拦截。关闭模式,该模式在遇到进程越权访问时,既不警告也不拦截。9.4.2SELinux工作模式getenforce命令用于查看SELinux的工作模式,getenforce命令没有选项和参数,其执行结果就是三种工作模式。1.getenforce命令查看SELinux的工作模式。[itheima@localhost~]$getenforceEnforcing案例9-209.4.2SELinux工作模式setenforce命令的参数有4个:Enforcing:设置强制模式。Permissive:设置宽容模式。1:设置强制模式。0:设置宽容模式。2.setenforce命令setenforce命令用于设置SELinux的工作模式。setenforce参数格式9.4.2SELinux工作模式设置SELinux工作模式为permissive。[root@localhost~]#setenforce0 #设置SELinux工作模式为permissive[root@localhost~]#getenforcePermissive案例9-219.4.2SELinux工作模式setenforce命令设置的SELinux工作模式只是临时有效,并且该命令无法关闭SELinux服务。要使设置永久生效或关闭SELinux服务,可以通过/etc/selinux/config文件设置。[root@localhost~]#cat/etc/selinux/config#ThisfilecontrolsthestateofSELinuxonthesystem.┄┄#disabled-NoSELinuxpolicyisloaded.SELINUX=enforcing#SELINUXTYPE=cantakeoneofthesethreevalues:┄┄#mls-MultiLevelSecurityprotection.SELINUXTYPE=targeted9.4.2SELinux工作模式如果SELinux服务处理关闭状态,无法通过setenforce命令开启。例如,通过设置/etc/selinux/config文件,关闭SELinux服务。重启系统后,使用setenforce命令设置SELinux工作模式为enforcing或permissive时,系统会提示无法设置。[root@localhost~]#getenforce #查看SELinux工作模式Disabled #处于关闭状态[root@localhost~]#setenforce1 #设置SELinux工作模式为enforcingsetenforce:SELinuxisdisabled #设置失败

先定一个小目标!了解SELinux安全系统,能够说出SELinux安全上下文主要有哪几个字段组成9.4.3SELinux安全上下文9.4.3SELinux安全上下文安全上下文有4个字段组成,每个字段之间使用“:”分隔,其格式如下所示。身份:角色:类型:级别格式9.4.3SELinux安全上下文1.身份身份字段用于标识数据被哪个身份的用户所拥有。root:root用户身份。system_u:系统用户身份。user_u:普通用户身份。2.角色角色用于标识安全上下文的归属,如进程、文件或目录的安全上下文。object_r:资源安全上下文。system_r:进程安全上下文。9.4.3SELinux安全上下文3.类型类型字段是安全上下文中最重要的字段,进程安全上下文与资源安全上下文相匹配就是类型字段的匹配。资源中叫类型;进程中叫域。4.级别级别是由SELinux定义的安全等级,用于限制访问。目前已经定义的安全等级为s0~s15,数字越大表示安全等级越高。9.4.3SELinux安全上下文查看文件安全上下文,使用ls命令的-Z选项即可。例如:查看当前目录下/etc/shadow文件的安全上下文,具体命令及输出结果如下所示。[itheima@localhost~]$ls-Z/etc/shadowsystem_u:object_r:shadow_t:s0/etc/shadow1.查看文件安全上下文9.4.3SELinux安全上下文查看目录安全上下文,需要使用-Zd选项。例如:查看httpd服务数据保存目录/var/www/html的安全上下文。2.查看目录安全上下文[itheima@localhost~]$ls-Zd/var/www/htmlsystem_u:object_r:httpd_sys_content_t:s0/var/www/html9.4.3SELinux安全上下文进程的安全上下文使用ps命令查看。例如:查看httpd服务进程的安全上下文。3.查看进程安全上下文[itheima@localhost~]$psauxZ|grephttpdsystem_u:system_r:httpd_t:s0root

13830.00.32745046904?Ss09:190:03/usr/sbin/httpd-DFOREGROUNDsystem_u:system_r:httpd_t:s0apache15840.00.22872404820?S09:190:00/usr/sbin/httpd-DFOREGROUND┄┄

先定一个小目标!了解SELinux安全系统,能够说出SELinux默认安全上下文的修改方式9.4.4SELinux默认安全上下文的修改9.4.4SELinux默认安全上下文的修改semanage命令用于查询、修改、增加、删除文件或目录的默认SELinux安全上下文。1.semanagesemanage命令选项参数(文件或目录)格式命令/选项含义fcontext管理文件或目录的默认安全上下文-a添加默认安全上下文配置-d删除默认安全上下文-m修改默认安全上下文-t设置默认安全上下文-l查询默认SELinux安全上下文semanage命令常用选项9.4.4SELinux默认安全上下文的修改分别查看/etc/shadow文件、/etc/cron.d目录和/etc/passwd文件的默认安全上下文。[root@localhost~]#semanagefcontext-l|grep/etc/shadow/etc/shadow.*regularfilesystem_u:object_r:shadow_t:s0[root@localhost~]#semanagefcontext-l|grep/etc/cron.d/etc/cron.daily(/.*)?allfilessystem_u:object_r:bin_t:s0[root@localhost~]#semanagefcontext-l|grep/etc/passwd/etc/passwd[-\+]?regularfilesystem_u:object_r:passwd_file_t:s0/etc/passwd\.OLDregularfilesystem_u:object_r:passwd_file_t:s0/etc/passwd\.adjunct.*regularfilesystem_u:object_r:passwd_file_t:s0/etc/passwd\.lockregularfilesystem_u:object_r:passwd_file_t:s0案例9-229.4.4SELinux默认安全上下文的修改(1)在当前目录下创建/www目录,并查看/www目录的安全上下文。[root@localhost~]#mkdir/www #创建/www目录[root@localhost~]#ls-Zd/www #查看/www目录安全上下文unconfined_u:object_r:default_t:s0/www#使用semanage命令查看/www目录安全上下文[root@localhost~]#semanagefcontext-l|grep/www/usr/share/awstats/wwwroot(/.*)?allfilessystem_u:object_r:awstats_content_t:s0…案例9-23创建/www目录,并设置其默认安全上下文类型为htttpd_sys_content_t。9.4.4SELinux默认安全上下文的修改(2)使用semanage命令为/www目录添加类型为httpd_sys_content_t的默认安全上下文。案例9-23创建/www目录,并设置其默认安全上下文类型为htttpd_sys_content_t。[root@localhost~]#semanagefcontext-a-thttpd_sys_content_t/www[root@localhost~]#semanagefcontext-l|grep/www…system_u:object_r:mediawiki_content_t:s0/wwwallfilessystem_u:object_r:httpd_sys_content_t:s09.4.4SELinux默认安全上下文的修改retorecon命令用于恢复文件或目录的默认安全上下文,即可以使设置的文件或目录的默认安全上下文生效。2.restorecon命令restorecon选项参数(文件或目录)格式命令/选项含义-R递归操作,使当前目录和目录下所有子目录和文件同时恢复默认安全上下文-v把恢复过程显示到屏幕上retorecon命令常用选项9.4.4SELinux默认安全上下文的修改retorecon命令用法示例。semanage命令修改文件或目录的默认安全上下文时无法立即生效,重启系统也不能使之生效。如果要使semanage命令设置的默认安全上下文生效,需要使用restorecon命令。[root@localhost~]#restorecon-Rv/wwwRelabeled/wwwfromunconfined_u:ob

温馨提示

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

评论

0/150

提交评论