Linux网络安全加固实战|防火墙原理+Netfilter+Firewalld最全教程

Linux网络安全加固实战|防火墙原理+Netfilter+Firewalld最全教程
Linux网络安全加固实战防火墙原理NetfilterFirewalld最全教程摘要防火墙是Linux服务器网络安全的第一道防线也是运维、网络安全面试核心考点。本文从零拆解防火墙分类、Netfilter内核子系统、静态/动态防火墙区别精讲CentOS7默认Firewalld区域机制、核心规则、端口/服务/转发/富规则、应急防护全套原理实操命令落地案例零基础可直接上手加固服务器。关键词Linux安全加固、Firewalld、Netfilter、防火墙原理、iptables、富规则、端口转发、内网SNAT一、防火墙核心概述1.1 什么是防火墙防火墙FireWall部署在主机或网络边缘对进出数据包进行规则匹配、检测、放行、拒绝、丢弃的安全组件。核心设计思想默认拒绝所有流量仅开放信任规则最小化攻击面对外网业务主机可部署在DMZ非军事区隔离内外网提升安全性。1.2 防火墙分类全维度总结1、按保护范围划分主机防火墙仅保护当前单台主机精准管控本机进出流量。网络防火墙保护整段局域网管控全网进出口流量。2、按实现方式划分硬件防火墙专用硬件设备华为、华三、天融信等性能高、防护全面多用于企业出口。软件防火墙基于通用服务器系统运行如 Linux 的iptables、firewalld轻量化、灵活、免费适合服务器单机防护。3、按网络协议层级划分网络层防火墙四层包过滤工作在OSI四层基于ACL访问控制列表检测数据包源IP、目的IP、端口、协议实现包过滤。✅ 优点透明传输、速度快、资源占用低、易维护❌ 缺点无法解析应用层内容不能防御病毒、恶意请求、网页攻击应用层防火墙七层WAF/代理工作在OSI七层可解析HTTP/HTTPS应用层数据是Web业务核心防护手段。核心能力异常协议检测拦截不合规范的HTTP请求输入验证防网页篡改、信息泄露、木马植入漏洞快速屏蔽零等待补丁修复基于规则/异常双模式防护实时更新规则库状态管理识别暴力破解、异常登录、恶意扫描抗绕过、隐藏表单保护、信息泄露防护✅ 优点精准防护Web应用层攻击❌ 缺点解析开销大处理速度慢二、Linux内核Netfilter子系统底层核心Netfilter是Linux内核原生网络过滤子系统工作在内核态是所有Linux防火墙的底层核心。所有进出系统的数据包在抵达应用程序前都会被Netfilter拦截、检查、修改、丢弃或转发用户层工具仅负责配置规则。2.1 四大用户层规则工具[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-multiiptablesIPv4数据包过滤、NAT、转发最常用ip6tablesIPv6协议数据包过滤功能等同iptablesarptablesARP协议防护防ARP欺骗、ARP攻击ebtables数据链路层过滤桥模式专用管控VLAN等底层数据数据包从外网进到服务器ebtables二层网卡 → arptablesARP 地址解析 → iptables/ip6tablesIP 数据包越靠前的关卡越早拦截数据包。2.2 Nftables 新一代子系统Nftables 是 Netfilter 增强升级版兼容原有架构是 Firewalld 默认后端。核心优势数据包处理速度更快规则更新效率更高统一单工具管理所有协议解决多工具接口冲突问题三、静态防火墙 vs 动态防火墙3.1 静态防火墙iptables修改任意一条规则需要重载全部规则加载过程会中断现有网络连接适合固定规则、极少变更的场景。3.2 动态防火墙firewalld仅更新变更的规则无需全局重载不中断现有业务连接适配运维频繁调整、线上业务动态变更场景。3.3 版本更迭说明CentOS7 之前默认 iptables静态CentOS7默认 firewalld动态后端nftables⚠️ 注意不建议同时开启两套防火墙规则冲突极易导致网络异常。四、Firewalld 区域Zone机制核心Firewalld 为简化运维将网络流量按场景划分为多个区域模板每个区域对应一套独立过滤规则。4.1 九大区域详解trusted信任区放行所有传入流量风险最高仅内网可信环境使用public公共区默认区域仅放行SSH、DHCPv6其余拒绝公网服务器标准配置external外网区放行SSH默认开启IPv4地址伪装适合网关服务器home/internal家庭/内网区信任局域网放行SSH、Samba、DHCP等内网服务work工作区仅放行基础运维服务dmz隔离区非军事区仅放行SSH对外业务部署专用最小权限防护block限制区拒绝所有入站流量返回拒绝响应drop丢弃区静默丢弃所有入站流量无任何响应安全性最高4.2 数据包匹配优先级优先匹配源地址绑定的区域未匹配则匹配网卡接口绑定的区域最后匹配系统默认区域public默认配置lo回环网卡绑定trusted外网网卡默认public。4.3 区域规则优先级富规则 端口转发/伪装 放行规则 拒绝规则无匹配规则默认拒绝trusted区域除外五、Firewalld 配置方式与文件结构5.1 三种配置方式命令行firewall-cmd生产首选图形化firewall-config调试直观配置文件手动编辑xml不推荐易出错5.2 配置文件目录/usr/lib/firewalld/系统默认自带模板zone、service、icmp预设规则/etc/firewalld/用户自定义配置优先级高于系统模板六、firewall-cmd 核心实操命令大全6.1 两个核心状态runtime运行时默认即时生效重启丢失permanent永久写入配置需--reload生效 最佳实践先永久、再临时兼顾重启不失效当前立即生效6.2 基础通用语法firewall-cmd[通用选项][区域指定选项][操作指令][参数]三大固定组成部分通用全局选项永久生效、重载、查看版本、帮助等全局控制区域指定选项指定本次操作作用在哪个 zone不指定默认使用默认区域 public操作指令增 / 删 / 查端口、服务、源地址、网卡、ICMP、富规则等全局通用选项全局控制可搭配任意指令选项功能说明--permanent写入永久配置仅保存不立即生效需--reload加载--reload重载防火墙永久配置生效不断开已有 TCP 连接--complete-reload完全重启防火墙强制断开所有连接生产环境慎用--get-default-zone查看系统默认区域--set-default-zoneZONE修改系统默认区域--list-all-zones列出全部 9 个区域完整配置-h / --help查看帮助--version查看 firewalld 版本区域指定参数仅作用于单次命令不指定则默认使用系统默认 zone参数作用--zonexxx指定操作目标区域如--zoneinternal分类指令合集增 add / 删 remove / 查 query/list服务管控调用 /usr/lib/firewalld/services 模板基础格式–add-service服务名–remove-service服务名–query-service服务名–list-services端口管控TCP/UDP 自定义端口指令作用--add-portPORT/PROTO放行端口--remove-portPORT/PROTO关闭端口--query-portPORT/PROTO查询端口是否放行--list-ports列出当前区域放行端口网卡接口绑定区域指令作用--add-interface网卡名网卡绑定当前指定区域--remove-interface网卡名解绑网卡--query-interface网卡名查询网卡所属区域--list-interfaces列出当前区域绑定网卡源 IP / 网段绑定区域最高优先级匹配指令作用--add-sourceIP/CIDR网段 / IP 绑定区域--remove-sourceIP/CIDR解绑 IP 网段--query-sourceIP/CIDR查询 IP 归属区域--list-sources列出绑定的所有源地址ICMP 数据包拦截控制 ping 等报文指令作用--add-icmp-block类型拦截指定 ICMP 报文--remove-icmp-block类型取消拦截--list-icmp-blocks查看拦截的 ICMP 类型端口转发 / 本地 NAT指令作用--add-forward-portport端口:proto协议:toport目标端口本机端口转发--add-forward-portport端口:proto协议:toaddrIP:toport端口跨主机端口映射--remove-forward-portxxx删除转发规则--list-forward-ports查看所有转发规则富规则 Rich-Rule精细化高级规则指令作用--add-rich-rule规则语句添加高级规则--remove-rich-rule规则语句删除对应规则--query-rich-rule规则语句校验规则是否存在--list-rich-rules列出全部富规则# 通用搭配模版firewall-cmd--zonexxx --add-xxxxxx# 永久生效模版firewall-cmd--permanent--zonexxx --add-xxxxxx firewall-cmd--reload6.3 Zone 区域管理# 查看所有区域firewall-cmd --get-zones# 查看已激活区域绑定网卡/源firewall-cmd --get-active-zones# 查看默认区域firewall-cmd --get-default-zone# 修改默认区域firewall-cmd --set-default-zonepublic# 查看指定区域所有规则firewall-cmd --list-all--zonepublic# 查看所有区域规则firewall-cmd --list-all-zones6.4 source 管理# 来源于特定source的数据包交给特定zone处理firewall-cmd --add-source10.1.1.0/24--zonehome# 查看source清单firewall-cmd --list-sources--zonehome# 查看source属于哪个zonefirewall-cmd --get-zone-of-source10.1.1.0/24# 查看source是否添加firewall-cmd --query-source10.1.1.0/24--zonehome# 变更source到其他zonefirewall-cmd --change-source10.1.1.0/24--zonepublic# 删除zone中sourcefirewall-cmd --remove-source10.1.1.0/24--zonepublic6.5 Service 服务放行# 安装nginx测试服务yuminstall-ynginx systemctl start nginx# 永久放行http服务firewall-cmd--permanent--add-servicehttp# 即时生效firewall-cmd --add-servicehttp# 查看放行服务firewall-cmd --list-services# 移除服务放行firewall-cmd--permanent--remove-servicehttp6.6 Port 端口管理# 放行单个端口firewall-cmd--permanent--add-port5900/tcp firewall-cmd --add-port5900/tcp# 放行端口段firewall-cmd--permanent--add-port3000-4000/tcp# 查看端口firewall-cmd --list-ports# 删除端口firewall-cmd--permanent--remove-port5900/tcp6.7 Masquerade 地址伪装SNAT内网上网场景内网机器通过服务器网关共享公网上网# 查询伪装状态firewall-cmd --query-masquerade# 开启伪装firewall-cmd--permanent--add-masquerade firewall-cmd --add-masquerade# 关闭伪装firewall-cmd--permanent--remove-masquerade6.8 Forward-port 端口转发DNAT前提当前区域开启masquerade# 本机8000转发到本机80firewall-cmd--permanent--add-forward-portport8000:prototcp:toport80# 本机1022转发到内网10.1.1.11:22firewall-cmd--permanent--add-forward-portport1022:prototcp:toport22:toaddr10.1.1.11# 查看转发规则firewall-cmd --list-forward-ports# 删除转发规则firewall-cmd--permanent--remove-forward-portport1022:prototcp:toport22:toaddr10.1.1.116.9 ICMP Ping 防护# 禁止所有pingfirewall-cmd--permanent--add-icmp-block echo-request# 恢复pingfirewall-cmd--permanent--remove-icmp-block echo-request# 查看禁止ICMP类型firewall-cmd --list-icmp-blocks6.10 富规则 Rich Rule精细化防护富规则优先级最高支持IP限制、限速、日志、审计适合精细化安全加固。# 禁止所有主机pingfirewall-cmd--permanent--add-rich-rulerule protocol valueicmp drop# 仅允许指定IP pingfirewall-cmd--permanent--add-rich-rulerule familyipv4 source address10.1.8.10 icmp-type nameecho-request accept# 网段访问http限速每秒3次日志审计firewall-cmd--permanent--add-rich-rulerule familyipv4 source address10.1.8.0/24 destination not address172.16.0.0/24 service namehttp log prefixhttp-error levelerror limit value2/s audit limit value1/s accept limit value3/s# 查看富规则firewall-cmd --list-rich-rules# 删除富规则firewall-cmd--permanent--remove-rich-rulerule protocol valueicmp drop6.11 应急防护 Panic 模式服务器遭遇攻击、恶意扫描时一键断网防护# 开启panic丢弃所有流量firewall-cmd --panic-on# 查询状态firewall-cmd --query-panic# 关闭恢复网络firewall-cmd --panic-off6.12 规则保存与重载# 运行时配置永久保存firewall-cmd --runtime-to-permanent# 重载规则保留现有连接firewall-cmd--reload# 完全重载断开所有连接firewall-cmd --complete-reload七、综合实战加固案例案例1禁止单个IP ping服务器# 清空原有ICMP拦截firewall-cmd--permanent--remove-icmp-block-inversion firewall-cmd--permanent--remove-icmp-blockecho-request# 添加富规则拒绝指定IP pingfirewall-cmd--permanent--add-rich-rulerule familyipv4 source address10.1.8.10 icmp-type nameecho-request reject# 生效firewall-cmd --complete-reload案例2仅允许指定网段ping禁止所有其他IP# 全局禁止pingfirewall-cmd--permanent--add-icmp-block-inversion# 放行信任网段firewall-cmd--permanent--add-rich-rulerule familyipv4 source address10.1.8.0/24 icmp-type nameecho-request acceptfirewall-cmd --complete-reload八、总结运维必备Linux防火墙底层核心是Netfilterfirewalld/iptables均为用户层配置工具firewalld是动态防火墙支持热更新不中断业务替代老旧静态iptablesZone区域机制大幅简化运维公网业务优先使用public/dmz最小权限区域常规放行用服务/端口规则精细限速、IP黑白名单用富规则内网共享上网开启masquerade端口转发实现外网访问内网服务服务器日常加固原则默认拒绝、按需放行、最小暴露、应急panic防护。码字不易点赞收藏➕关注持续更新Linux运维、网络安全、服务器加固干货