新闻详情

新闻详情

首页 / 资讯中心 / 详情

云原生运维学习笔记:防火墙管理与SELinux安全加固

发布时间:2026/9/28 4:43:55来源:尧图网络
云原生运维学习笔记:防火墙管理与SELinux安全加固
云原生运维学习笔记防火墙管理与SELinux安全加固今天的内容是防火墙管理和SELinux算是Linux安全体系的两大支柱。昨天我们刚啃完交换空间和系统启动原理脑袋里还转着rd.break、grub2-install这些命令今天又要面对一堆新的概念——zone、service、rich rule、SELinux上下文……说实话看到课表的时候觉得压力挺大的因为防火墙规则这东西配错了可能连自己都连不上服务器。但跟着老师一步步操作下来发现其实只要理解了firewalld的区域模型和SELinux的类型强制剩下的就是熟练度的问题了。这篇博客就当作我的课堂笔记把重点、踩过的坑和自己的理解都记下来希望能帮到同样在学的朋友。环境还是老样子CentOS 7root用户所有命令都实际跑过。昨日回顾交换空间与系统启动昨天我们学了两块内容交换空间管理和系统启动原理。交换空间部分理解了Swap的作用——内存不够时把暂时不用的数据存到硬盘上腾出内存给别的程序用。创建Swap的流程是parted创建分区 →mkswap格式化 →swapon激活。持久化需要修改/etc/fstab。系统启动原理部分终于把开机过程搞清楚了固件POST → GRUB2 → kernelinitramfs → systemd → target。还掌握了两种重置root密码的方法rd.break和init/bin/bash以及GRUB2故障的修复流程。这些底层知识平时用不上但关键时刻能救命。有了这些基础今天的防火墙和SELinux就顺理成章了。防火墙控制网络访问SELinux控制进程访问两者配合才能构建完整的安全体系。Linux防火墙管理防火墙是什么防火墙FireWall工作在网络或主机边缘对进出网络或主机的数据包基于一定的规则检查并在匹配某规则时由规则定义的行为进行处理。基本上所有实现都是默认关闭所有通过型访问只开放允许访问的策略。将希望外网访问的主机放在DMZ隔离区网络中。防火墙按保护范围划分主机防火墙服务范围为当前一台主机。网络防火墙服务范围为防火墙一侧的局域网。按实现方式划分硬件防火墙在专用硬件级别实现例如华为、华三、天融信等产品。软件防火墙运行于通用硬件平台之上的防火墙软件例如iptables、firewalld。按网络协议划分网络层防火墙工作在OSI模型下四层又称为包过滤防火墙。对数据包进行选择依据是系统内设置的访问控制列表ACL通过检查数据包的源地址、目的地址、端口号和协议状态等因素来确定是否允许通过。优点是对用户透明、处理速度快、易于维护缺点是无法检查应用层数据如病毒等。应用层防火墙/代理服务器工作在OSI模型七层或者承担proxy代理网关。提供异常检测协议、增强的输入验证、及时补丁、基于规则和基于异常的保护、状态管理等。优点是提供应用层保护缺点是处理速度慢。Netfilter子系统Netfilter子系统是Linux内核中一个强大的网络过滤子系统对进入系统的每个数据包在到达用户空间组件或应用之前进行检查通过编程方式来修改、丢弃或路由数据包。Netfilter工作在内核态用户使用以下命令配置防火墙规则iptables用于过滤IPv4协议的数据包。ip6tables用于过滤IPv6协议的数据包。arptables用于过滤arp协议的数据包。ebtables用于过滤数据链路层数据包。[rootcentos7 ~]# ls -1 /sbin/*tables-rwxr-xr-x1root root5987211月62016/sbin/arptables -rwxr-xr-x.1root root70164月112018/sbin/ebtables lrwxrwxrwx.1root root138月115:45 /sbin/ip6tables -xtables-multi lrwxrwxrwx.1root root138月115:45 /sbin/iptables -xtables-multiNftables子系统Nftables是netfilter的增强版保留了netfilter的架构。优点包括更快的数据包处理、更快的规则集更新、使用单个nft用户空间实用程序管理所有协议。静态防火墙和动态防火墙静态防火墙修改规则时需要重新加载所有防火墙规则会导致网络连接丢失。例如iptables。动态防火墙只需要将变更部分保存并更新到运行中的iptables不需要重新加载整个规则列表。例如firewalld。Firewalld防火墙Firewalld是Red Hat公司开发的防火墙软件默认后端为nftables。在CentOS 7中firewalld取代iptables成为了默认防火墙软件。Firewalld和iptables的关系firewalld提供了一个daemon和service还有命令行和图形界面配置工具它仅仅是替代了iptables service部分底层还是使用iptables作为防火墙规则管理入口。真正干活的是内核的netfilter。Firewalld区域firewalld将所有网络流量分为多个区域zone每个zone就是一套过滤规则集。firewalld提供了如下zonetrusted允许所有的传入流量。public允许与ssh或dhcpv6-client预定义服务匹配的传入流量其余均拒绝。是新添加网络接口的默认区域。external允许与ssh预定义服务匹配的传入流量其余均拒绝。默认将通过此区域转发的IPv4传出流量进行地址伪装。home允许与ssh、mdns、samba-client或dhcpv6-client预定义服务匹配的传入流量其余均拒绝。internal默认与home区域相同。work允许与ssh、dhcpv6-client预定义服务匹配的传入流量其余均拒绝。dmz允许与ssh预定义服务匹配的传入流量其余均拒绝。block拒绝所有传入流量。drop丢弃所有传入流量并且不产生包含ICMP的错误响应。数据包与zone匹配规则该源地址被分配给特定区域则应用该区域的规则。如果数据包未匹配源地址则分配给与传入网络接口关联的区域并应用该区域的规则。如果以上都未匹配firewalld将数据包分配给默认区域。注意事项firewalld默认指定public区域为默认区域并将lo回环接口映射至trusted区域。如果流量不与允许的端口或协议或服务匹配则通常会被拒绝。Firewalld规则区域内规则匹配优先级如下首先匹配为该区域设置的任何端口转发和伪装原则。其次匹配该区域设置的任何允许规则。最后匹配该区域设置的任何拒绝规则。还可以同时为以上3个规则设置记录和审计规则可以同时生效。富规则中的规则优先级高于区域中其他规则。如果区域中所有规则都不匹配那么通常会拒绝该包trusted例外。Firewalld配置配置方法直接编辑/etc/firewalld/中的配置文件。firewall-cmd命令行工具。firewall-config图形工具。不建议直接修改配置文件推荐用firewall-cmd。firewall-cmd命令行工具两个基本概念防火墙的配置有两个状态runtime运行态立刻生效permanent永久态写入配置文件需要--reload才生效。配置规则必须在一个区域内如果不使用--zone选项则使用默认区域public。建议配置防火墙一次性写两条规则第一条使用--permanent永久生效第二条不使用--permanent立刻生效。zone管理# 查看zone清单[rootcentos7 ~]# firewall-cmd --get-zonesblock dmz drop external home internal public trusted work# 查看激活的zone清单[rootcentos7 ~]# firewall-cmd --get-active-zonespublic interfaces: ens32# 查看默认zone[rootcentos7 ~]# firewall-cmd --get-default-zonepublic# 设置默认zone[rootcentos7 ~]# firewall-cmd --set-default-zonetrusted# 查看默认zone中的规则[rootcentos7 ~]# firewall-cmd --list-allpublic(active)target: default icmp-block-inversion: no interfaces: ens32 sources: services: cockpit dhcpv6-clientsshports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:service管理# 查看系统中预定义了哪些服务[rootcentos7 ~]# firewall-cmd --get-services# 添加放行服务[rootcentos7 ~]# firewall-cmd --add-servicehttp# 查看放行服务列表[rootcentos7 ~]# firewall-cmd --list-servicescockpit dhcpv6-client httpssh# 查看服务是否放行[rootcentos7 ~]# firewall-cmd --query-servicehttpyes# 删除服务[rootcentos7 ~]# firewall-cmd --remove-servicehttpport管理# 添加放行端口[rootcentos7 ~]# firewall-cmd --add-port5900/tcp# 查看端口放行列表[rootcentos7 ~]# firewall-cmd --list-ports5900/tcp# 删除端口[rootcentos7 ~]# firewall-cmd --remove-port5900/tcpmasquerade管理# 查看masquerade是否启动[rootcentos7 ~]# firewall-cmd --query-masqueradeno# 启动masquerade[rootcentos7 ~]# firewall-cmd --add-masquerade# 禁用masquerade[rootcentos7 ~]# firewall-cmd --remove-masquerademasquerade用于SNAT让内网主机通过本机访问外网。forward-port管理使用port forward前确保对应zone启用masquerade功能。# 访问本机端口8000转发到本机80[rootcentos7 ~]# firewall-cmd --add-forward-portport8000:prototcp:toport80# 访问本机端口1022转发到10.1.1.11:22[rootcentos7 ~]# firewall-cmd --add-forward-portport1022:prototcp:toport22:toaddr10.1.1.11# 查询端口转发清单[rootcentos7 ~]# firewall-cmd --list-forward-portsport8000:prototcp:toport80:toaddrport1022:prototcp:toport22:toaddr10.1.1.11icmp管理# 添加禁止通过的icmp类型例如通过添加echo-request实现禁止ping[rootcentos7 ~]# firewall-cmd --add-icmp-block echo-request# 查看icmp-block禁止清单[rootcentos7 ~]# firewall-cmd --list-icmp-blocksecho-request# 改回默认值[rootcentos7 ~]# firewall-cmd --remove-icmp-block echo-request由于firewalld会保留之前的连接状态如果此时仍能ping通需要重启firewalld服务或使用--complete-reload彻底重新加载防火墙规则。rich rule管理富规则可灵活自定义各种规则例如允许单个IP地址或者网段连接到某个服务、配置记录和审计、限制速率。富规则语法rule [source] [destination] service|port|protocol|icmp-block|icmp-type|masquerade|forward-port|source-port [log] [audit] [accept|reject|drop|mark]示例1禁止所有主机ping本机。[rootcentos7 ~]# firewall-cmd --add-rich-rulerule protocol valueicmp drop示例2针对IPv4来源主机10.1.8.10允许ping本机。[rootcentos7 ~]# firewall-cmd --add-rich-rulerule familyipv4 source address10.1.8.10 icmp-type nameecho-request accept示例3针对IPv4来源10.1.8.0/24网段中主机访问非172.16.0.0/24网段中主机的http服务1秒中只允许访问3次做好日志记录和审计。[rootcentos7 ~]# firewall-cmd --add-rich-rule rule familyipv4 source address10.1.8.0/24 destination not address172.16.0.0/24 service namehttp log prefix http-error levelerror limit value2/s audit limit value1/s accept limit value3/sdirect rule管理直接规则优先级高于firewalld规则用于补充firewalld规则。语法类似于iptables。示例将192.168.0.0/24列入黑名单单个IP每分钟最高连接并发是1超过并发的连接都丢弃。[rootcentos7 ~]# firewall-cmd --direct --permanent --add-chain ipv4 raw blacklist[rootcentos7 ~]# firewall-cmd --direct --permanent --add-rule ipv4 raw PREROUTING 0 -s 192.168.0.0/24 -j blacklist[rootcentos7 ~]# firewall-cmd --direct --permanent --add-rule ipv4 raw blacklist 0 -m limit --limit 1/min -j LOG --log-prefix blacklisted [rootcentos7 ~]# firewall-cmd --direct --permanent --add-rule ipv4 raw blacklist 1 -j DROP[rootcentos7 ~]# firewall-cmd --reloadpanic模式使用选项--panic-on启用panic模式所有进出流量将会被丢弃。一般服务器被黑客攻击使用该选项断开所有网络。其他配置# 将运行时的配置写入到配置文件[rootcentos7 ~]# firewall-cmd --runtime-to-permanent# 设置规则生效时间单位秒一般用于调试规则[rootcentos7 ~]# firewall-cmd --add-servicehttp --timeout10综合案例案例1禁止10.1.8.10主机ping本机。# 确保icmp-block-inversion是默认值no[rootcentos7 ~]# firewall-cmd --list-all|grep inversionicmp-block-inversion: no# 禁止10.1.8.10主机ping本机[rootcentos7 ~]# firewall-cmd --permanent --add-rich-rulerule familyipv4 source address10.1.8.10 icmp-type nameecho-request reject# 彻底重新加载防火墙规则[rootcentos7 ~]# firewall-cmd --complete-reload案例2只允许10.1.8.10主机ping本机。# 禁止所有来源ping本机[rootcentos7 ~]# firewall-cmd --permanent --add-icmp-block-inversion# 允许10.1.8.10主机ping本机[rootcentos7 ~]# firewall-cmd --permanent --add-rich-rulerule familyipv4 source address10.1.8.10 icmp-type nameecho-request accept# 彻底重新加载防火墙规则[rootcentos7 ~]# firewall-cmd --complete-reloadfirewall-config图形工具通过firewall-config命令打开防火墙图形管理工具。界面可以直观地配置防火墙注意防火墙的配置状态和选择的区域。需要安装的软件包firewall-config、xorg-x11-xauth、libglvnd-glx。选项菜单可执行如下操作重载防火墙改变默认区域应急模式将 Runtime 设定为永久配置查看菜单用于显示额外的配置信息。服务配置勾选对应服务即可例如http。端口配置单击添加。输入相应值例如tcp/5900。根据需要进行编辑和删除。协议配置单击添加。输入相应值例如icmp。根据需要进行编辑和删除。源端口配置单击添加。输入相应值例如tcp/32760。根据需要进行编辑和删除。伪装配置通过勾选或取消勾选来启用或禁用该区域伪装功能。端口转发配置单击添加。输入相应值例如访问本地1022端口转发到10.1.8.80:22。根据需要进行编辑和删除。ICMP过滤配置勾选对应icmp类型即可例如echo-request。输入相应值例如。根据需要进行编辑和删除。富规则配置单击添加。输入相应值例如根据需要进行编辑和删除。网卡配置单击添加。输入相应值例如ens33。根据需要进行编辑和删除。来源配置单击添加。输入相应值例如192.168.1.0/24。根据需要进行编辑和删除图形工具对于不熟悉命令行的用户很友好但生产环境还是推荐用firewall-cmd方便写脚本。##SELinux加固Linux安全SELinux是什么文件权限控制了哪些用户或用户组可以访问哪些特定文件但未限定用户访问文件的方式。例如对于文件的写入权限而言结构化数据文件是否应当设计为只能使用特定的程序写入但其他编辑器仍可以打开和修改此文件这可能会导致损坏。文件权限仅仅是控制谁可以读取、写入或运行文件无法控制如何使用文件。SELinuxSecurity Enhanced Linux是一个额外的系统安全层主要目标是防止已遭泄露的系统服务访问用户数据。例如恶意人员成功入侵了Web服务器进程获得进程的权限也就是apache用户和apache组的权限。该用户和组对文档根目录/var/www/html具有读取权限还可以访问/tmp和/var/tmp以及全局可写的其他任何文件和目录。SELinux强制执行一组访问规则明确定义进程和资源之间允许的操作。每个进程、文件、目录和端口都具有专门的安全标签称为SELinux上下文。上下文是一个名称SELinux策略使用它来确定某个进程能否访问文件、目录或端口。除非显式规则授予访问权限否则在默认情况下策略不允许任何交互。SELinux标签有多个内容用户、角色、类型和敏感度。RHEL中默认策略是targeted基于类型部分。类型部分通常以_t结尾。示例Web服务器守护进程类型是httpd_exec_tWeb服务器的网页类型是httpd_sys_content_tWeb服务器的端口类型是http_port_t/tmp标签是tmp_t基本原理SELinux默认策略允许apache进程访问在/var/www/html文件夹下的文件和文件夹以及其他一些具有httpd_sys_content_t上下文的文件夹禁止访问具有其他不匹配标签的目录。在SELinux的保护下apache进程不允许访问/tmp和/var/tmp目录。因为/tmp、/var/tmp目录的标签是tmp_t与默认策略不匹配。命令选项许多处理文件的命令都有一个-Z选项用于显示和设置SELinux上下文。[rootcentos7 ~]# ps -C sshd -ZLABEL PID TTY TIME CMD system_u:system_r:sshd_t:s0-s0:c0.c1023951? 00:00:00 sshd system_u:system_r:sshd_t:s0-s0:c0.c10231261? 00:00:00 sshd unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c10231276? 00:00:00 sshd[rootcentos7 ~]# ls -Z /homeunconfined_u:object_r:user_home_dir_t:s0 laoma# 其他命令中-Z选项# cp -Z set SELinux security context of destination file to default type# mkdir -Z set SELinux security context of each created directory to the default typeSELinux模式enforcing模式SELinux强制执行访问控制规则。在强制模式下如果规则没有明确允许访问则拒绝访问并写入日志。此模式是默认模式。Permissive模式SELinux加载策略并处于活动状态但不强制执行访问控制规则而是记录访问违规。此模式有助于对应用和规则进行测试和故障排除。disable模式完全关闭SELinux。不拒绝任何SELinux违规不予记录。查看当前模式[rootcentos7 ~]# getenforce更改当前模式# 强制模式临时切换为允许模式[rootcentos7 ~]# setenforce 0# 或者[rootcentos7 ~]# setenforce Permissive# 允许模式临时切换为强制模式[rootcentos7 ~]# setenforce 1# 或者[rootcentos7 ~]# setenforce Enforcing模式切换注意事项强制模式和允许模式之间变更不需要重启系统。从强制模式或者允许模式变更到禁用模式或者从禁用模式变更到强制模式或者允许模式都需要重启系统。更改SELinux默认模式[rootcentos7 ~]# vim /etc/selinux/configSELINUXenforcingSELINUXTYPEtargeted在启动时通过内核参数设置SELinux模式enforcing1设置强制模式。enforcing0设置许可模式。selinux0彻底禁用SELinux。selinux1启用SELinux。实验SELinux与root密码破解在SELinux模式为enforcing的情况下破解root密码。破解完成后不执行touch /.autorelabel命令。重启测试使用正确的密码登录结果登录失败。原因是用户验证程序无法访问/etc/shadow因为破解密码过程中/etc/shadow文件标签被破坏了。处理方法系统启动时内核添加参数selinux1 enforcing0。这个实验让我深刻理解了SELinux的作用——即使你改了密码如果文件标签不对程序照样访问不了。这也是为什么重置密码后要touch /.autorelabel让系统重新标记所有文件。课后总结今天的内容量很大但都是安全管理的核心技能。防火墙部分理解了firewalld的区域模型——数据包先匹配源地址再匹配接口最后用默认区域。firewall-cmd的用法也练了一遍service、port、masquerade、forward-port、icmp-block、rich rule、direct rule。富规则是最灵活的可以精确控制来源、目标、服务、日志、限速等。SELinux部分理解了类型强制的基本原理——每个进程和文件都有标签只有匹配的才能访问。三种模式enforcing、permissive、disable的区别和切换方法也搞清楚了。那个破解密码的实验特别有教育意义让我明白了SELinux不是摆设。踩过的坑firewalld的runtime和permanent两个状态容易搞混、--complete-reload和--reload的区别、SELinux模式切换后需要/.autorelabel、禁用和启用SELinux需要重启……这些都是实际操作才会遇到的问题。希望这篇笔记能帮到同样在学云原生运维的朋友。防火墙和SELinux是Linux安全的两道防线理解了它们的工作原理以后遇到安全配置问题就能从容应对了。大家一起加油
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

避坑指南:从零搭建xxx网站策划书,告别零流量 2026/9/28 5:43:17

避坑指南:从零搭建xxx网站策划书,告别零流量

避坑指南:从零搭建xxx网站策划书,告别零流量 网站做好了没人访问,这大概是甲方最头疼的事。很多老板以为网站上线就是终点,其实那才是起点。如果前期 xxx网站策划书 没写清楚,后期开发就像盲人摸象,做出来根本不符合搜索习惯,更别提转化了。…

阅读更多 →
避坑指南:网易企业邮箱网页版登录入口接入最佳实践 2026/9/28 5:43:10

避坑指南:网易企业邮箱网页版登录入口接入最佳实践

避坑指南:网易企业邮箱网页版登录入口接入最佳实践 找建站公司怕被坑高价?别急,先看看你的网易企业邮箱网页版登录入口到底配不配得上你付的钱。很多老板觉得邮箱就是个收信工具,随便找个模板套上去就行,结果上线才发现:SSL证书没配好导致浏览器报警…

阅读更多 →
MIMO有限反馈预编码与DFT码本仿真:从SVD到MMSE 2026/9/28 5:43:10

MIMO有限反馈预编码与DFT码本仿真:从SVD到MMSE

简介:面向无线通信MIMO系统研究的预编码技术资料包,聚焦有限反馈场景下SVD预编码、MMSE接收机、DFT码本及码本设计四类核心问题,适用于无法获取完备信道状态信息时的下行预编码仿真与课程设计。压缩包共9个文件,以5个mat数据文件和…

阅读更多 →
Hive与HBase整合实战:从环境部署到查询优化与踩坑指南 2026/9/28 5:43:10

Hive与HBase整合实战:从环境部署到查询优化与踩坑指南

1. 为什么要让Hive和HBase搭伙做大数据这一行,HBase和Hive这两样东西几乎绕不开。很多人一开始接触时容易懵:明明Hive能查HDFS上的数据,HBase也能存数据,为什么还要把它们整合在一起?我刚开始带项目时也有同样的困惑&a…

阅读更多 →
批量重置文件夹时间:一键修复备份迁移后的文件时间戳 2026/9/28 5:43:10

批量重置文件夹时间:一键修复备份迁移后的文件时间戳

昨天收拾一个攒了三年的设计素材库,几千个文件,打开一看修改时间一排排全是“今天上午”“昨天下午”,我第一反应是同步工具发疯了,仔细检查后发现就是前阵子换硬盘做整盘迁移,把每个文件的创建时间和修改时间都刷到了…

阅读更多 →
Python连接Impala报错cur=conn.cursor():TaoToken统一Key通道下的config.toml骨架与排错清单 2026/9/28 5:43:03

Python连接Impala报错cur=conn.cursor():TaoToken统一Key通道下的config.toml骨架与排错清单

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉